diff --git a/libs/.editorconfig b/.editorconfig similarity index 77% rename from libs/.editorconfig rename to .editorconfig index ec87dc82ce..4371601fe1 100644 --- a/libs/.editorconfig +++ b/.editorconfig @@ -1,4 +1,4 @@ -# EditorConfig is awesome: http://EditorConfig.org +# EditorConfig is awesome: https://EditorConfig.org # top-most EditorConfig file root = true @@ -14,3 +14,6 @@ trim_trailing_whitespace = true charset = utf-8 indent_style = space indent_size = 2 + +[*.{ts}] +quote_type = single diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000..1a4673e357 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,19 @@ +**/build +**/dist + +**/node_modules + +**/webpack.*.js +**/jest.config.js +**/gulpfile.js + +apps/browser/src/content/autofill.js +apps/browser/src/scripts/duo.js + +apps/desktop/desktop_native +apps/desktop/src/scripts/duo.js + +apps/web/config.js +apps/web/scripts/*.js +apps/web/src/theme.js +apps/web/tailwind.config.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..9c211247cb --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,55 @@ +{ + "root": true, + "env": { + "browser": true, + "webextensions": true + }, + "plugins": ["@typescript-eslint"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:import/recommended", + "plugin:import/typescript", + "prettier" + ], + "rules": { + "@typescript-eslint/no-explicit-any": "off", // TODO: This should be re-enabled + "@typescript-eslint/no-unused-vars": ["warn", { "args": "none" }], + "@typescript-eslint/explicit-member-accessibility": [ + "error", + { + "accessibility": "no-public" + } + ], + "@typescript-eslint/no-this-alias": [ + "error", + { + "allowedNames": ["self"] + } + ], + "no-console": "warn", + "import/no-unresolved": "off", // TODO: Look into turning off once each package is an actual package. + "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/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000000..9dd7b5c2e6 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,24 @@ +# Browser: Apply Prettier https://github.com/bitwarden/browser/pull/2238 +8fe821b9a3f9728bcb02d607ca75add468d380c1 +# Browser: Monorepository https://github.com/bitwarden/browser/pull/2531 +7fe51f83daa38df15a105f4a917abd01d94eddd1 + +# Desktop: Apply Prettier https://github.com/bitwarden/desktop/pull/1202 +521feae535d83166e620c3c28dfc3e7b0314a00e +# Browser: Monorepository https://github.com/bitwarden/clients/commit/7712ca6fa505c4b80b168258a7fc6a02c13160fd +28bc4113b9bbae4dba2b5af14d460764fce79acf + +# CLI: Apply Prettier https://github.com/bitwarden/cli/pull/426 +910b4a24e649f21acbf4da5b2d422b121d514bd5 +# CLI: Monorepository https://github.com/bitwarden/clients/commit/980429f4bdcb178d8d92d8202cbdacfaa45c917e +980429f4bdcb178d8d92d8202cbdacfaa45c917e + +# Web: Apply Prettier https://github.com/bitwarden/web/pull/1347 +56477eb39cfd8a73c9920577d24d75fed36e2cf5 +# Web: Monorepository https://github.com/bitwarden/clients/commit/02fe7159034b04d763a61fcf0200869e3209fa33 +02fe7159034b04d763a61fcf0200869e3209fa33 + +# Jslib: Apply Prettier https://github.com/bitwarden/jslib/pull/581 +193434461dbd9c48fe5dcbad95693470aec422ac +# Jslib: Monorepository https://github.com/bitwarden/clients/pull/2824/commits/d7492e3cf320410e74ebd0e0675ab994e64bd01a +d7492e3cf320410e74ebd0e0675ab994e64bd01a diff --git a/libs/.gitattributes b/.gitattributes similarity index 100% rename from libs/.gitattributes rename to .gitattributes diff --git a/.github/ISSUE_TEMPLATE/browser.yml b/.github/ISSUE_TEMPLATE/browser.yml new file mode 100644 index 0000000000..b28dce144b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/browser.yml @@ -0,0 +1,93 @@ +name: Browser Bug Report +description: File a bug report +labels: [bug, browser] +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 + - Android + - iOS + 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: browsers + attributes: + label: Web Browser + description: What browser(s) are you seeing the problem on? + multiple: true + options: + - Chrome + - Safari + - Microsoft Edge + - Firefox + - Opera + - Brave + - Vivaldi + validations: + required: true + - type: input + id: browser-version + attributes: + label: Browser Version + description: What version of the browser(s) are you seeing the problem on? + - type: input + id: version + attributes: + label: Build Version + description: What version of our software are you running? (go to "Settings" → "About" in the extension) + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/cli.yml b/.github/ISSUE_TEMPLATE/cli.yml new file mode 100644 index 0000000000..3a54a40477 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/cli.yml @@ -0,0 +1,82 @@ +name: CLI Bug Report +description: File a bug report +labels: [bug, cli] +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: shell + attributes: + label: Shell + description: What shell(s) are you seeing the problem on? + multiple: true + options: + - Bash + - Zsh + - PowerShell + validations: + required: true + - type: input + id: version + attributes: + label: Build Version + description: What version of our software are you running? (run `bw --version`) + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..7f3bf2560e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,20 @@ +blank_issues_enabled: false +contact_links: + - name: Report failure of prompt to save credentials in browser + url: https://docs.google.com/forms/d/e/1FAIpQLSeG-Dtpn2xnr9N7oF04NyY6ETUM-JF8pagFfAv8mW7bgcMVxA/viewform + about: We are aware of many sites' login forms where the Bitwarden browser extension either on a single platform/browser or multiple will not prompt the user to save a new password or update an existing password. This is something the Bitwarden team is actively working on but need your help as a community and active Bitwarden users! + - name: Report autofill failure in browser + url: https://docs.google.com/forms/d/e/1FAIpQLSfkxh1w6vK8fLYwAbAAEVhvhMAJwfFNDtYtPUVk1y5WTHvJmQ/viewform + about: We are aware of many sites' login forms, payment gateways, identity forms, etc. where the Bitwarden browser extension either on a single platform/browser or multiple will not autofill information. This is something the Bitwarden team is actively working on but need your help as a community and active Bitwarden users! + - 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/.github/ISSUE_TEMPLATE/desktop.yml b/.github/ISSUE_TEMPLATE/desktop.yml new file mode 100644 index 0000000000..94b72a0020 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/desktop.yml @@ -0,0 +1,85 @@ +name: Desktop Bug Report +description: File a bug report +labels: [bug, desktop] +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/.github/ISSUE_TEMPLATE/web.yml b/.github/ISSUE_TEMPLATE/web.yml new file mode 100644 index 0000000000..ef995e662c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/web.yml @@ -0,0 +1,93 @@ +name: Web Bug Report +description: File a bug report +labels: [bug, web] +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 + - Android + - iOS + 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: browsers + attributes: + label: Web Browser + description: What browser(s) are you seeing the problem on? + multiple: true + options: + - Chrome + - Safari + - Microsoft Edge + - Firefox + - Opera + - Brave + - Vivaldi + validations: + required: true + - type: input + id: browser-version + attributes: + label: Browser Version + description: What version of the browser(s) are you seeing the problem on? + - type: input + id: version + attributes: + label: Build Version + description: What version of our software are you running? (Bottom of the page) + validations: + required: true diff --git a/libs/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 92% rename from libs/.github/PULL_REQUEST_TEMPLATE.md rename to .github/PULL_REQUEST_TEMPLATE.md index 60cfed058f..ecb361a934 100644 --- a/libs/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -17,6 +17,10 @@ - **file.ext:** Description of what was changed and why +## Screenshots + + + ## Before you submit - [ ] I have checked for **linting** errors (`npm run lint`) (required) diff --git a/.github/secrets/appstore-app-cert.p12.gpg b/.github/secrets/appstore-app-cert.p12.gpg new file mode 100644 index 0000000000..ef81792f3d Binary files /dev/null and b/.github/secrets/appstore-app-cert.p12.gpg differ diff --git a/.github/secrets/appstore-installer-cert.p12.gpg b/.github/secrets/appstore-installer-cert.p12.gpg new file mode 100644 index 0000000000..09652a3a1b Binary files /dev/null and b/.github/secrets/appstore-installer-cert.p12.gpg differ diff --git a/.github/secrets/bitwarden-desktop-key.p12.gpg b/.github/secrets/bitwarden-desktop-key.p12.gpg new file mode 100644 index 0000000000..84c7f00e2d Binary files /dev/null and b/.github/secrets/bitwarden-desktop-key.p12.gpg differ diff --git a/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg b/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg new file mode 100644 index 0000000000..32e2f79f2c Binary files /dev/null and b/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg differ diff --git a/.github/secrets/devid-app-cert.p12.gpg b/.github/secrets/devid-app-cert.p12.gpg new file mode 100644 index 0000000000..8e2e2146e2 Binary files /dev/null and b/.github/secrets/devid-app-cert.p12.gpg differ diff --git a/.github/secrets/devid-installer-cert.p12.gpg b/.github/secrets/devid-installer-cert.p12.gpg new file mode 100644 index 0000000000..f379fc214f Binary files /dev/null and b/.github/secrets/devid-installer-cert.p12.gpg differ diff --git a/.github/secrets/macdev-cert.p12.gpg b/.github/secrets/macdev-cert.p12.gpg new file mode 100644 index 0000000000..4b8e0ef474 Binary files /dev/null and b/.github/secrets/macdev-cert.p12.gpg differ diff --git a/.github/workflows/build-browser.yml b/.github/workflows/build-browser.yml new file mode 100644 index 0000000000..9a8b9bff43 --- /dev/null +++ b/.github/workflows/build-browser.yml @@ -0,0 +1,433 @@ +--- +name: Build Browser + +on: + pull_request: + branches-ignore: + - 'l10n_master' + - 'gh-pages' + paths: + - 'apps/browser/**' + - '.github/workflows/build-browser.yml' + push: + branches: + - 'master' + - 'rc' + - 'hotfix-rc/**' + paths: + - 'apps/browser/**' + - '.github/workflows/build-browser.yml' + workflow_dispatch: + inputs: {} + +defaults: + run: + shell: bash + +jobs: + cloc: + name: CLOC + runs-on: ubuntu-20.04 + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0 + + - name: Set up cloc + run: | + sudo apt update + sudo apt -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: + repo_url: ${{ steps.gen_vars.outputs.repo_url }} + adj_build_number: ${{ steps.gen_vars.outputs.adj_build_number }} + steps: + - name: Get Package Version + id: gen_vars + run: | + repo_url=https://github.com/$GITHUB_REPOSITORY.git + adj_build_num=${GITHUB_SHA:0:7} + + echo "::set-output name=repo_url::$repo_url" + echo "::set-output name=adj_build_number::$adj_build_num" + + + locales-test: + name: Locales Test + runs-on: ubuntu-20.04 + needs: + - setup + defaults: + run: + working-directory: apps/browser + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0 + + - name: Testing locales - extName length + run: | + found_error=false + + echo "Locales Test" + echo "============" + echo "extName string must be 40 characters or less" + echo + for locale in $(ls src/_locales/); do + string_length=$(jq '.extName.message | length' src/_locales/$locale/messages.json) + if [[ $string_length -gt 40 ]]; then + echo "$locale: $string_length" + found_error=true + fi + done + + if $found_error; then + echo + echo "Please fix 'extName' for the locales listed above." + exit 1 + else + echo "Test passed!" + fi + + + build: + name: Build + runs-on: windows-2019 + needs: + - setup + - locales-test + env: + _BUILD_NUMBER: ${{ needs.setup.outputs.adj_build_number }} + defaults: + run: + working-directory: apps/browser + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0 + + - 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: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Print environment + run: | + node --version + npm --version + + - name: NPM setup + run: npm ci + working-directory: ./ + + - name: Build & Test + run: | + npm run dist + npm run test + + - name: Gulp + run: gulp ci + + - name: Build sources for reviewers + shell: cmd + run: | + mkdir dist\Source + call git clone %GITHUB_SERVER_URL%/%GITHUB_REPOSITORY% dist\Source + cd dist\Source + call git checkout %GITHUB_SHA% + call git submodule update --init --recursive + cd ../ + del /S/Q "Source\.git\objects\pack\*" + call 7z a browser-source.zip "Source\*" + + - name: Upload Opera artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: dist-opera-${{ env._BUILD_NUMBER }}.zip + path: apps/browser/dist/dist-opera.zip + if-no-files-found: error + + - name: Upload Chrome artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: dist-chrome-${{ env._BUILD_NUMBER }}.zip + path: apps/browser/dist/dist-chrome.zip + if-no-files-found: error + + - name: Upload Firefox artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: dist-firefox-${{ env._BUILD_NUMBER }}.zip + path: apps/browser/dist/dist-firefox.zip + if-no-files-found: error + + - name: Upload Edge artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: dist-edge-${{ env._BUILD_NUMBER }}.zip + path: apps/browser/dist/dist-edge.zip + if-no-files-found: error + + - name: Upload browser source + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: browser-source-${{ env._BUILD_NUMBER }}.zip + path: apps/browser/dist/browser-source.zip + if-no-files-found: error + + - name: Upload coverage artifact + if: false + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: coverage-${{ env._BUILD_NUMBER }}.zip + path: apps/browser/coverage/coverage-${{ env._BUILD_NUMBER }}.zip + if-no-files-found: error + + build-safari: + name: Build Safari + runs-on: macos-11 + needs: + - setup + - locales-test + env: + _BUILD_NUMBER: ${{ needs.setup.outputs.adj_build_number }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0 + + - 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: Print environment + run: | + node --version + npm --version + + - name: Decrypt secrets + 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 + 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: NPM setup + run: npm ci + working-directory: ./ + + - name: Build Safari extension + run: npm run dist:safari + working-directory: apps/browser + + - name: Zip Safari build artifact + run: | + cd apps/browser/dist + zip dist-safari.zip ./Safari/**/build/Release/safari.appex -r + pwd + ls -la + + - name: Upload Safari artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: dist-safari-${{ env._BUILD_NUMBER }}.zip + path: apps/browser/dist/dist-safari.zip + if-no-files-found: error + + crowdin-push: + name: Crowdin Push + if: github.ref == 'refs/heads/master' + runs-on: ubuntu-20.04 + needs: + - build + - build-safari + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0 + + - 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@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} + CROWDIN_PROJECT_ID: "268134" + with: + config: apps/browser/crowdin.yml + crowdin_branch_name: master + upload_sources: true + upload_translations: false + + trigger-desktop-build: + name: Trigger desktop build + if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') || contains(github.ref, 'hotfix-rc') }} + runs-on: ubuntu-20.04 + needs: + - build + - build-safari + steps: + + - 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: "github-pat-bitwarden-devops-bot-repo-scope" + + - name: Extract branch name + id: extract_branch + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + + - name: Call GitHub API to trigger desktop build workflow + env: + TOKEN: ${{ steps.retrieve-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} + BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} + run: | + + JSON_STRING=$(printf '{"ref":"%s"}' "$BRANCH_NAME") + + curl \ + -X POST \ + -i -u bitwarden-devops-bot:$TOKEN \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/bitwarden/clients/actions/workflows/build-desktop.yml/dispatches \ + -d $JSON_STRING + + check-failures: + name: Check for failures + if: always() + runs-on: ubuntu-20.04 + needs: + - cloc + - setup + - locales-test + - build + - build-safari + - crowdin-push + - trigger-desktop-build + 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 }} + LOCALES_TEST_STATUS: ${{ needs.locales-test.result }} + BUILD_STATUS: ${{ needs.build.result }} + SAFARI_BUILD_STATUS: ${{ needs.build-safari.result }} + CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} + TRIGGER_DESKTOP_BUILD_STATUS: ${{ needs.trigger-desktop-build.result }} + run: | + if [ "$CLOC_STATUS" = "failure" ]; then + exit 1 + elif [ "$SETUP_STATUS" = "failure" ]; then + exit 1 + elif [ "$LOCALES_TEST_STATUS" = "failure" ]; then + exit 1 + elif [ "$BUILD_STATUS" = "failure" ]; then + exit 1 + elif [ "$SAFARI_BUILD_STATUS" = "failure" ]; then + exit 1 + elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then + exit 1 + elif [ "$TRIGGER_DESKTOP_BUILD_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 # v1.5.0 + if: failure() + env: + SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }} + with: + status: ${{ job.status }} diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml new file mode 100644 index 0000000000..99c2a45434 --- /dev/null +++ b/.github/workflows/build-cli.yml @@ -0,0 +1,370 @@ +--- +name: Build CLI + +on: + pull_request: + branches-ignore: + - 'l10n_master' + - 'gh-pages' + paths: + - 'apps/cli/**' + - '.github/workflows/build-cli.yml' + push: + branches: + - 'master' + - 'rc' + - 'hotfix-rc/**' + paths: + - 'apps/cli/**' + - '.github/workflows/build-cli.yml' + workflow_dispatch: + inputs: {} + +defaults: + run: + working-directory: apps/cli + +jobs: + cloc: + name: CLOC + runs-on: ubuntu-20.04 + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Set up cloc + run: | + sudo apt update + sudo apt -y install cloc + + - name: Print lines of code + run: cloc --include-lang TypeScript,JavaScript --vcs git + + + setup: + name: Setup + runs-on: ubuntu-20.04 + outputs: + package_version: ${{ steps.retrieve-version.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Get Package Version + id: retrieve-version + run: | + PKG_VERSION=$(jq -r .version package.json) + echo "::set-output name=package_version::$PKG_VERSION" + + + cli: + name: Build CLI + runs-on: windows-2019 + needs: + - setup + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _WIN_PKG_FETCH_VERSION: 16.15.0 + _WIN_PKG_VERSION: 3.4 + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Setup Windows builder + run: | + choco install checksum --no-progress + choco install reshack --no-progress + choco install nasm --no-progress + + - name: Set up Node + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3.2.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '16' + + - name: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Get pkg-fetch + shell: pwsh + run: | + cd $HOME + $fetchedUrl = "https://github.com/vercel/pkg-fetch/releases/download/v$env:_WIN_PKG_VERSION/node-v$env:_WIN_PKG_FETCH_VERSION-win-x64" + New-Item -ItemType directory -Path .\.pkg-cache + New-Item -ItemType directory -Path .\.pkg-cache\v$env:_WIN_PKG_VERSION + Invoke-RestMethod -Uri $fetchedUrl ` + -OutFile ".\.pkg-cache\v$env:_WIN_PKG_VERSION\fetched-v$env:_WIN_PKG_FETCH_VERSION-win-x64" + + - name: Setup Version Info + shell: pwsh + run: | + $major,$minor,$patch = $env:_PACKAGE_VERSION.split('.') + $versionInfo = @" + 1 VERSIONINFO + FILEVERSION $major,$minor,$patch,0 + PRODUCTVERSION $major,$minor,$patch,0 + FILEOS 0x40004 + FILETYPE 0x1 + { + BLOCK "StringFileInfo" + { + BLOCK "040904b0" + { + VALUE "CompanyName", "Bitwarden Inc." + VALUE "ProductName", "Bitwarden" + VALUE "FileDescription", "Bitwarden CLI" + VALUE "FileVersion", "$env:_PACKAGE_VERSION" + VALUE "ProductVersion", "$env:_PACKAGE_VERSION" + VALUE "OriginalFilename", "bw.exe" + VALUE "InternalName", "bw" + VALUE "LegalCopyright", "Copyright Bitwarden Inc." + } + } + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x0409 0x04B0 + } + } + "@ + $versionInfo | Out-File ./version-info.rc + # https://github.com/vercel/pkg-fetch/issues/188 + + - name: Resource Hacker + shell: cmd + run: | + set PATH=%PATH%;C:\Program Files (x86)\Resource Hacker + set WIN_PKG=C:\Users\runneradmin\.pkg-cache\v%_WIN_PKG_VERSION%\fetched-v%_WIN_PKG_FETCH_VERSION%-win-x64 + set WIN_PKG_BUILT=C:\Users\runneradmin\.pkg-cache\v%_WIN_PKG_VERSION%\built-v%_WIN_PKG_FETCH_VERSION%-win-x64 + copy %WIN_PKG% %WIN_PKG_BUILT% + ResourceHacker -open %WIN_PKG_BUILT% -save %WIN_PKG_BUILT% -action delete -mask ICONGROUP,1, + ResourceHacker -open version-info.rc -save version-info.res -action compile + ResourceHacker -open %WIN_PKG_BUILT% -save %WIN_PKG_BUILT% -action addoverwrite -resource version-info.res + + - name: Install + run: npm ci + working-directory: ./ + + - name: Run tests + run: npm run test + + - name: Build & Package + run: npm run dist --quiet + + - name: Package Chocolatey + shell: pwsh + run: | + Copy-Item -Path stores/chocolatey -Destination dist/chocolatey -Recurse + Copy-Item dist/windows/bw.exe -Destination dist/chocolatey/tools + Copy-Item ${{ github.workspace }}/LICENSE.txt -Destination dist/chocolatey/tools + choco pack dist/chocolatey/bitwarden-cli.nuspec --version ${{ env._PACKAGE_VERSION }} --out dist/chocolatey + + - name: Zip + shell: cmd + run: | + 7z a ./dist/bw-windows-%_PACKAGE_VERSION%.zip ./dist/windows/bw.exe + 7z a ./dist/bw-macos-%_PACKAGE_VERSION%.zip ./dist/macos/bw + 7z a ./dist/bw-linux-%_PACKAGE_VERSION%.zip ./dist/linux/bw + + - name: Version Test + run: | + dir ./dist/ + Expand-Archive -Path "./dist/bw-windows-${env:_PACKAGE_VERSION}.zip" -DestinationPath "./test/windows" + $testVersion = Invoke-Expression '& ./test/windows/bw.exe -v' + echo "version: $env:_PACKAGE_VERSION" + echo "testVersion: $testVersion" + if($testVersion -ne $env:_PACKAGE_VERSION) { + Throw "Version test failed." + } + + - name: Create checksums + run: | + checksum -f="./dist/bw-windows-${env:_PACKAGE_VERSION}.zip" ` + -t sha256 | Out-File -Encoding ASCII ./dist/bw-windows-sha256-${env:_PACKAGE_VERSION}.txt + checksum -f="./dist/bw-macos-${env:_PACKAGE_VERSION}.zip" ` + -t sha256 | Out-File -Encoding ASCII ./dist/bw-macos-sha256-${env:_PACKAGE_VERSION}.txt + checksum -f="./dist/bw-linux-${env:_PACKAGE_VERSION}.zip" ` + -t sha256 | Out-File -Encoding ASCII ./dist/bw-linux-sha256-${env:_PACKAGE_VERSION}.txt + + - name: Upload windows zip asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw-windows-${{ env._PACKAGE_VERSION }}.zip + path: apps/cli/dist/bw-windows-${{ env._PACKAGE_VERSION }}.zip + if-no-files-found: error + + - name: Upload windows checksum asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw-windows-sha256-${{ env._PACKAGE_VERSION }}.txt + path: apps/cli/dist/bw-windows-sha256-${{ env._PACKAGE_VERSION }}.txt + if-no-files-found: error + + - name: Upload macos zip asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw-macos-${{ env._PACKAGE_VERSION }}.zip + path: apps/cli/dist/bw-macos-${{ env._PACKAGE_VERSION }}.zip + if-no-files-found: error + + - name: Upload macos checksum asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw-macos-sha256-${{ env._PACKAGE_VERSION }}.txt + path: apps/cli/dist/bw-macos-sha256-${{ env._PACKAGE_VERSION }}.txt + if-no-files-found: error + + - name: Upload linux zip asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw-linux-${{ env._PACKAGE_VERSION }}.zip + path: apps/cli/dist/bw-linux-${{ env._PACKAGE_VERSION }}.zip + if-no-files-found: error + + - name: Upload linux checksum asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw-linux-sha256-${{ env._PACKAGE_VERSION }}.txt + path: apps/cli/dist/bw-linux-sha256-${{ env._PACKAGE_VERSION }}.txt + if-no-files-found: error + + - name: Upload Chocolatey asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bitwarden-cli.${{ env._PACKAGE_VERSION }}.nupkg + path: apps/cli/dist/chocolatey/bitwarden-cli.${{ env._PACKAGE_VERSION }}.nupkg + if-no-files-found: error + + - name: Upload NPM Build Directory asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bitwarden-cli-${{ env._PACKAGE_VERSION }}-npm-build.zip + path: apps/cli/build + if-no-files-found: error + + snap: + name: Build Snap + runs-on: ubuntu-20.04 + needs: [setup, cli] + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Print environment + run: | + whoami + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + echo "BW Package Version: $_PACKAGE_VERSION" + + - name: Get bw linux cli + uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 + with: + name: bw-linux-${{ env._PACKAGE_VERSION }}.zip + path: apps/cli/dist/snap + + - name: Setup Snap Package + run: | + cp -r stores/snap/* -t dist/snap + sed -i s/__version__/${{ env._PACKAGE_VERSION }}/g dist/snap/snapcraft.yaml + cd dist/snap + ls -alth + + - name: Build snap + uses: snapcore/action-build@ea14cdeb353272f75977040488ca191880509a8c # v1.1.0 + with: + path: apps/cli/dist/snap + + - name: Create checksum + run: | + cd dist/snap + ls -alth + sha256sum bw_${{ env._PACKAGE_VERSION }}_amd64.snap \ + | awk '{split($0, a); print a[1]}' > bw-snap-sha256-${{ env._PACKAGE_VERSION }}.txt + + - name: Install Snap + run: sudo snap install dist/snap/bw*.snap --dangerous + + - name: Test Snap + shell: pwsh + run: | + $testVersion = Invoke-Expression '& bw -v' + if($testVersion -ne $env:_PACKAGE_VERSION) { + Throw "Version test failed." + } + env: + BITWARDENCLI_APPDATA_DIR: "/home/runner/snap/bw/x1/.config/Bitwarden CLI" + + - name: Cleanup Test & Update Snap for Publish + shell: pwsh + run: sudo snap remove bw + + - name: Upload snap asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw_${{ env._PACKAGE_VERSION }}_amd64.snap + path: apps/cli/dist/snap/bw_${{ env._PACKAGE_VERSION }}_amd64.snap + if-no-files-found: error + + - name: Upload snap checksum asset + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: bw-snap-sha256-${{ env._PACKAGE_VERSION }}.txt + path: apps/cli/dist/snap/bw-snap-sha256-${{ env._PACKAGE_VERSION }}.txt + if-no-files-found: error + + + check-failures: + name: Check for failures + if: always() + runs-on: ubuntu-20.04 + needs: + - cloc + - setup + - cli + - snap + steps: + - name: Check if any job failed + working-directory: ${{ github.workspace }} + if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') }} + env: + CLOC_STATUS: ${{ needs.cloc.result }} + SETUP_STATUS: ${{ needs.setup.result }} + CLI_STATUS: ${{ needs.cli.result }} + SNAP_STATUS: ${{ needs.snap.result }} + run: | + if [ "$CLOC_STATUS" = "failure" ]; then + exit 1 + elif [ "$SETUP_STATUS" = "failure" ]; then + exit 1 + elif [ "$CLI_STATUS" = "failure" ]; then + exit 1 + elif [ "$SNAP_STATUS" = "failure" ]; then + exit 1 + fi + + - name: Login to Azure - Prod Subscription + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 # v1.1 + 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/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml new file mode 100644 index 0000000000..023778b9ca --- /dev/null +++ b/.github/workflows/build-desktop.yml @@ -0,0 +1,1193 @@ +--- +name: Build Desktop + +on: + pull_request: + branches-ignore: + - 'l10n_master' + - 'gh-pages' + paths: + - 'apps/desktop/**' + - '.github/workflows/build-desktop.yml' + push: + branches: + - 'master' + - 'rc' + - 'hotfix-rc/**' + paths: + - 'apps/desktop/**' + - '.github/workflows/build-desktop.yml' + workflow_dispatch: + inputs: {} + +defaults: + run: + shell: bash + +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 + + electron-verify: + name: Verify Electron Version + runs-on: ubuntu-20.04 + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Verify + run: | + PACKAGE_VERSION=$(jq -r .devDependencies.electron package.json) + ELECTRON_BUILDER_VERSION=$(jq -r .electronVersion ./apps/desktop/electron-builder.json) + + if [[ "$PACKAGE_VERSION" == "$ELECTRON_BUILDER_VERSION" ]]; then + echo "Versions matches" + else + echo "Version missmatch, package.json: $PACKAGE_VERSION, electron-builder.json: $ELECTRON_BUILDER_VERSION" + exit 1 + fi + + 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 }} + rc_branch_exists: ${{ steps.branch-check.outputs.rc_branch_exists }} + hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }} + defaults: + run: + working-directory: apps/desktop + 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 3000 + $GITHUB_RUN_NUMBER) + echo "Setting build number to $BUILD_NUMBER" + echo "::set-output name=build_number::$BUILD_NUMBER" + + - 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 + + + linux: + name: Linux Build + runs-on: ubuntu-20.04 + needs: setup + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + defaults: + run: + working-directory: apps/desktop + 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 + working-directory: ./ + + - 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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/dist/latest-linux.yml + if-no-files-found: error + + + windows: + name: Windows Build + runs-on: windows-2019 + needs: setup + defaults: + run: + shell: pwsh + working-directory: apps/desktop + 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 + + - 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 + run: choco install checksum --no-progress + + - name: Print environment + run: | + node --version + npm --version + choco --version + + - 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 + working-directory: ./ + + - 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 + 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 + 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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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 }} + defaults: + run: + working-directory: apps/desktop + 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: Cache Build + id: build-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: apps/desktop/build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Cache Safari + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: apps/browser/dist/Safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + 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 + 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 + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/apps/desktop/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" + $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + + - name: Install Node dependencies + run: npm ci + working-directory: ./ + + - name: Build application (dev) + run: npm run build + + + macos-package-github: + name: MacOS Package GitHub Release Assets + runs-on: macos-11 + needs: + - setup + - macos-build + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + defaults: + run: + working-directory: apps/desktop + 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: apps/desktop/build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Setup Safari Cache + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: apps/browser/dist/Safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + 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 + 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 + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/apps/desktop/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" + $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + + - name: Install Node dependencies + run: npm ci + working-directory: ./ + + - name: Build + if: steps.build-cache.outputs.cache-hit != 'true' + run: npm run build + + - name: Extract branch name + if: contains(github.ref, 'hotfix-rc') + id: extract_branch + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + + - name: Download artifact from hotfix-rc + if: contains(github.ref, 'hotfix-rc') + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: ${{ steps.extract_branch.outputs.branch }} + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Download artifact from rc + if: github.ref == 'refs/heads/rc' + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: rc + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Download artifact from master + if: ${{ github.ref != 'refs/heads/rc' && !contains(github.ref, 'hotfix-rc') }} + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: master + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Unzip Safari artifact + run: | + SAFARI_DIR=$(find $GITHUB_WORKSPACE/browser-build-artifacts -name 'dist-safari-*.zip') + echo $SAFARI_DIR + unzip $SAFARI_DIR/dist-safari.zip -d $GITHUB_WORKSPACE/browser-build-artifacts + + - name: Load Safari extension for .dmg + run: | + mkdir PlugIns + cp -r $GITHUB_WORKSPACE/browser-build-artifacts/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: apps/desktop/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: apps/desktop/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: apps/desktop/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: apps/desktop/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 + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + defaults: + run: + working-directory: apps/desktop + 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: apps/desktop/build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Setup Safari Cache + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: apps/browser/dist/Safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + 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 + 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 + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/apps/desktop/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" + $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + + - name: Install Node dependencies + run: npm ci + working-directory: ./ + + - name: Build + if: steps.build-cache.outputs.cache-hit != 'true' + run: npm run build + + - name: Extract branch name + if: contains(github.ref, 'hotfix-rc') + id: extract_branch + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + + - name: Download artifact from hotfix-rc + if: contains(github.ref, 'hotfix-rc') + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: ${{ steps.extract_branch.outputs.branch }} + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Download artifact from rc + if: github.ref == 'refs/heads/rc' + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: rc + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Download artifact from master + if: ${{ github.ref != 'refs/heads/rc' && !contains(github.ref, 'hotfix-rc') }} + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: master + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Unzip Safari artifact + run: | + SAFARI_DIR=$(find $GITHUB_WORKSPACE/browser-build-artifacts -name 'dist-safari-*.zip') + echo $SAFARI_DIR + unzip $SAFARI_DIR/dist-safari.zip -d $GITHUB_WORKSPACE/browser-build-artifacts + + - name: Load Safari extension for App Store + run: | + mkdir PlugIns + cp -r $GITHUB_WORKSPACE/browser-build-artifacts/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: apps/desktop/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 + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + defaults: + run: + working-directory: apps/desktop + 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: apps/desktop/build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Setup Safari Cache + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: apps/browser/dist/Safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + 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 + 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 + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/apps/desktop/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" + $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + + - name: Install Node dependencies + run: npm ci + working-directory: ./ + + - name: Build + if: steps.build-cache.outputs.cache-hit != 'true' + run: npm run build + + - name: Download artifact from rc + if: github.ref == 'refs/heads/rc' + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: rc + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Download artifact from master + if: github.ref != 'refs/heads/rc' + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: master + path: ${{ github.workspace }}/browser-build-artifacts + + - name: Unzip Safari artifact + run: | + SAFARI_DIR=$(find $GITHUB_WORKSPACE/browser-build-artifacts -name 'dist-safari-*.zip') + echo $SAFARI_DIR + unzip $SAFARI_DIR/dist-safari.zip -d $GITHUB_WORKSPACE/browser-build-artifacts + + - name: Load Safari extension for App Store + run: | + mkdir PlugIns + cp -r $GITHUB_WORKSPACE/browser-build-artifacts/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: apps/desktop/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 + 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@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} + CROWDIN_PROJECT_ID: "299360" + with: + config: apps/desktop/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 + - electron-verify + - setup + - 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 }} + ELECTRON_VERIFY_STATUS: ${{ needs.electron-verify.result }} + SETUP_STATUS: ${{ needs.setup.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 + if [ "$ELECTRON_VERIFY_STATUS" = "failure" ]; then + exit 1 + elif [ "$SETUP_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/.github/workflows/build-web.yml b/.github/workflows/build-web.yml new file mode 100644 index 0000000000..2602905b05 --- /dev/null +++ b/.github/workflows/build-web.yml @@ -0,0 +1,464 @@ +--- +name: Build Web + +on: + pull_request: + branches-ignore: + - 'l10n_master' + - 'gh-pages' + paths: + - 'apps/web/**' + - '.github/workflows/build-web.yml' + push: + branches: + - 'master' + - 'rc' + - 'hotfix-rc/**' + paths: + - 'apps/web/**' + - '.github/workflows/build-web.yml' + workflow_dispatch: + inputs: {} + +jobs: + cloc: + name: CLOC + runs-on: ubuntu-20.04 + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Set up cloc + run: | + sudo apt update + sudo apt -y install cloc + + - name: Print lines of code + working-directory: apps/web + run: cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git + + + setup: + name: Setup + runs-on: ubuntu-20.04 + outputs: + version: ${{ steps.version.outputs.value }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Get GitHub sha as version + id: version + run: echo "::set-output name=value::${GITHUB_SHA:0:7}" + + + build-oss-selfhost: + name: Build OSS zip + runs-on: ubuntu-20.04 + needs: + - setup + env: + _VERSION: ${{ needs.setup.outputs.version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Set up Node + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3.1.1 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: "16" + + - name: Print environment + run: | + whoami + node --version + npm --version + gulp --version + docker --version + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Install dependencies + run: npm ci + + - name: Build OSS selfhost + working-directory: apps/web + run: | + npm run dist:oss:selfhost + zip -r web-$_VERSION-selfhosted-open-source.zip build + + - name: Upload build artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: web-${{ env._VERSION }}-selfhosted-open-source.zip + path: apps/web/web-${{ env._VERSION }}-selfhosted-open-source.zip + if-no-files-found: error + + + build-cloud: + name: Build Cloud zip + runs-on: ubuntu-20.04 + needs: + - setup + env: + _VERSION: ${{ needs.setup.outputs.version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Set up Node + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3.1.1 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: "16" + + - name: Print environment + run: | + whoami + node --version + npm --version + gulp --version + docker --version + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Install dependencies + run: npm ci + + - name: Build Cloud + working-directory: apps/web + run: | + npm run dist:bit:cloud + zip -r web-$_VERSION-cloud-COMMERCIAL.zip build + + - name: Upload build artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: web-${{ env._VERSION }}-cloud-COMMERCIAL.zip + path: apps/web/web-${{ env._VERSION }}-cloud-COMMERCIAL.zip + if-no-files-found: error + + + build-commercial-selfhost: + name: Build SelfHost Docker image + runs-on: ubuntu-20.04 + needs: + - setup + env: + _VERSION: ${{ needs.setup.outputs.version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Set up Node + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3.1.1 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: "16" + + - name: Print environment + run: | + whoami + node --version + npm --version + gulp --version + docker --version + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Setup DCT + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc' + id: setup-dct + uses: bitwarden/gh-actions/setup-docker-trust@a8c384a05a974c05c48374c818b004be221d43ff + with: + azure-creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + azure-keyvault-name: "bitwarden-prod-kv" + + - name: Install dependencies + run: npm ci + + - name: Build + working-directory: apps/web + run: | + echo -e "# Building Web\n" + echo "Building app" + echo "npm version $(npm --version)" + + npm run dist:bit:selfhost + zip -r web-$_VERSION-selfhosted-COMMERCIAL.zip build + + - name: Upload build artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 + with: + name: web-${{ env._VERSION }}-selfhosted-COMMERCIAL.zip + path: apps/web/web-${{ env._VERSION }}-selfhosted-COMMERCIAL.zip + if-no-files-found: error + + - name: Build Docker image + working-directory: apps/web + run: | + echo -e "\nBuilding Docker image" + docker --version + docker build -t bitwarden/web . + + - name: Tag rc branch + if: github.ref == 'refs/heads/rc' + run: docker tag bitwarden/web bitwarden/web:rc + + - name: Tag dev + if: github.ref == 'refs/heads/master' + run: docker tag bitwarden/web bitwarden/web:dev + + - name: Tag hotfix branch + if: github.ref == 'refs/heads/hotfix-rc' + run: docker tag bitwarden/web bitwarden/web:hotfix-rc + + - name: List Docker images + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc' + run: docker images + + - name: Push rc image + if: github.ref == 'refs/heads/rc' + run: docker push bitwarden/web:rc + env: + DOCKER_CONTENT_TRUST: 1 + DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }} + + - name: Push dev image + if: github.ref == 'refs/heads/master' + run: docker push bitwarden/web:dev + env: + DOCKER_CONTENT_TRUST: 1 + DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }} + + - name: Push hotfix image + if: github.ref == 'refs/heads/hotfix-rc' + run: docker push bitwarden/web:hotfix-rc + env: + DOCKER_CONTENT_TRUST: 1 + DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }} + + - name: Log out of Docker + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc' + run: | + docker logout + echo "DOCKER_CONTENT_TRUST=0" >> $GITHUB_ENV + + - name: Login to Azure - QA Subscription + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 # v1.1 + with: + creds: ${{ secrets.AZURE_QA_KV_CREDENTIALS }} + + - name: Login to Azure ACR + run: az acr login -n bitwardenqa + + - name: Tag and Push RC to Azure ACR QA registry + env: + REGISTRY: bitwardenqa.azurecr.io + run: | + IMAGE_TAG=$(echo "${GITHUB_REF:11}" | sed "s#/#-#g") # slash safe branch name + if [[ "$IMAGE_TAG" == "master" ]]; then + IMAGE_TAG=dev + fi + docker tag bitwarden/web \ + $REGISTRY/web-sh:$IMAGE_TAG + docker push $REGISTRY/web-sh:$IMAGE_TAG + + - name: Log out of Docker + run: docker logout + + + build-qa: + name: Build Docker images for QA environment + runs-on: ubuntu-20.04 + needs: + - setup + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Set up Node + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3.1.1 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: "16" + + - name: Print environment + run: | + whoami + node --version + npm --version + gulp --version + docker --version + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Login to Azure + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 # v1.1 + with: + creds: ${{ secrets.AZURE_QA_KV_CREDENTIALS }} + + - name: Log into container registry + run: az acr login -n bitwardenqa + + - name: Install dependencies + run: npm ci + + - name: Build + working-directory: apps/web + run: | + echo -e "# Building Web\n" + echo "Building app" + echo "npm version $(npm --version)" + VERSION=$( jq -r ".version" package.json) + jq --arg version "$VERSION - ${GITHUB_SHA:0:7}" '.version = $version' package.json > package.json.tmp + mv package.json.tmp package.json + + npm run build:bit:qa + + echo "{\"commit_hash\": \"$GITHUB_SHA\", \"ref\": \"$GITHUB_REF\"}" | jq . > build/info.json + + echo -e "\nBuilding Docker image" + docker --version + docker build -t bitwardenqa.azurecr.io/web . + + - name: Get image tag + id: image-tag + run: | + IMAGE_TAG=$(echo "${GITHUB_REF:11}" | sed "s#/#-#g") + TAG_EXTENSION=${{ github.event.inputs.custom_tag_extension }} + + if [[ $TAG_EXTENSION ]]; then + IMAGE_TAG=$IMAGE_TAG-$TAG_EXTENSION + fi + echo "::set-output name=value::$IMAGE_TAG" + + - name: Tag image + env: + IMAGE_TAG: ${{ steps.image-tag.outputs.value }} + run: docker tag bitwardenqa.azurecr.io/web "bitwardenqa.azurecr.io/web:$IMAGE_TAG" + + - name: Tag dev + if: github.ref == 'refs/heads/master' + run: docker tag bitwardenqa.azurecr.io/web bitwardenqa.azurecr.io/web:dev + + - name: List Docker images + run: docker images + + - name: Push image + env: + IMAGE_TAG: ${{ steps.image-tag.outputs.value }} + run: docker push "bitwardenqa.azurecr.io/web:$IMAGE_TAG" + + - name: Push dev images + if: github.ref == 'refs/heads/master' + run: docker push bitwardenqa.azurecr.io/web:dev + + - name: Log out of Docker + run: docker logout + + crowdin-push: + name: Crowdin Push + if: github.ref == 'refs/heads/master' + needs: + - build-oss-selfhost + - build-cloud + - build-commercial-selfhost + - build-qa + runs-on: ubuntu-20.04 + env: + _CROWDIN_PROJECT_ID: "308189" + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 # v2.3.4 + + - name: Login to Azure + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 # v1.1 + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@b5c723b9ac7870c022b8c35befe620b7009b336f # v1.0.0 + with: + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token" + + - name: Upload Sources + uses: crowdin/github-action@a3160b9e5a9e00739392c23da5e580c6cabe526d # v1.4.8 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} + with: + config: apps/web/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 + - build-oss-selfhost + - build-cloud + - build-commercial-selfhost + - build-qa + - 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 }} + BUILD_OSS_SELFHOST_STATUS: ${{ needs.build-oss-selfhost.result }} + BUILD_CLOUD_STATUS: ${{ needs.build-cloud.result }} + BUILD_COMMERCIAL_SELFHOST_STATUS: ${{ needs.build-commercial-selfhost.result }} + BUILD_QA_STATUS: ${{ needs.build-qa.result }} + CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} + run: | + if [ "$CLOC_STATUS" = "failure" ]; then + exit 1 + elif [ "$SETUP_STATUS" = "failure" ]; then + exit 1 + elif [ "$BUILD_OSS_SELFHOST_STATUS" = "failure" ]; then + exit 1 + elif [ "$BUILD_CLOUD_STATUS" = "failure" ]; then + exit 1 + elif [ "$BUILD_COMMERCIAL_SELFHOST_STATUS" = "failure" ]; then + exit 1 + elif [ "$BUILD_QA_STATUS" = "failure" ]; then + exit 1 + elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then + exit 1 + fi + + - name: Login to Azure - Prod Subscription + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 # v1.1 + if: failure() + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@b5c723b9ac7870c022b8c35befe620b7009b336f # v1.0.0 + if: failure() + with: + keyvault: "bitwarden-prod-kv" + secrets: "devops-alerts-slack-webhook-url" + + - name: Notify Slack on failure + uses: act10ns/slack@da3191ebe2e67f49b46880b4633f5591a96d1d33 # v1.5.1 + if: failure() + env: + SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }} + with: + status: ${{ job.status }} diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml new file mode 100644 index 0000000000..df1cb46c71 --- /dev/null +++ b/.github/workflows/crowdin-pull.yml @@ -0,0 +1,57 @@ +--- +name: Crowdin Sync + +on: + workflow_dispatch: + inputs: {} + schedule: + - cron: '0 0 * * 5' + +jobs: + crowdin-sync: + name: Autosync + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + include: + - app_name: browser + crowdin_project_id: "268134" + - app_name: desktop + 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: bitwarden/gh-actions/crowdin@05052c5c575ceb09ceea397fe241879e199ed44b + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} + CROWDIN_PROJECT_ID: ${{ matrix.crowdin_project_id }} + 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-${{ matrix.app_name }} + create_pull_request: true + pull_request_title: "Autosync Crowdin Translations for ${{ matrix.app_name }}" + pull_request_body: "Autosync the updated translations" + working_directory: apps/${{ matrix.app_name }} diff --git a/libs/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml similarity index 93% rename from libs/.github/workflows/enforce-labels.yml rename to .github/workflows/enforce-labels.yml index 0a63c70e4a..bf8517cc25 100644 --- a/libs/.github/workflows/enforce-labels.yml +++ b/.github/workflows/enforce-labels.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Enforce Label - uses: yogevbd/enforce-label-action@8d1e1709b1011e6d90400a0e6cf7c0b77aa5efeb + uses: yogevbd/enforce-label-action@8d1e1709b1011e6d90400a0e6cf7c0b77aa5efeb # v2.1.0 with: BANNED_LABELS: "hold" BANNED_LABELS_DESCRIPTION: "PRs on hold cannot be merged" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000000..9c1ff9b064 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,36 @@ +--- +name: Lint + +on: + push: + branches-ignore: + - 'l10n_master' + - 'gh-pages' + paths-ignore: + - '.github/workflows/**' + workflow_dispatch: + inputs: {} + +defaults: + run: + shell: bash + +jobs: + lint: + name: Lint + runs-on: ubuntu-20.04 + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0 + + - 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: Run linter + run: | + npm ci + npm run lint diff --git a/.github/workflows/release-browser.yml b/.github/workflows/release-browser.yml new file mode 100644 index 0000000000..e85b9dbf74 --- /dev/null +++ b/.github/workflows/release-browser.yml @@ -0,0 +1,136 @@ +--- +name: Release Browser + +on: + workflow_dispatch: + inputs: + release_type: + description: 'Release Options' + required: true + default: 'Initial Release' + type: choice + options: + - Initial Release + - Redeploy + - Dry Run + +defaults: + run: + shell: bash + +jobs: + setup: + name: Setup + runs-on: ubuntu-20.04 + outputs: + release-version: ${{ steps.version.outputs.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@ec3a7ce113134d7a93b817d10a8272cb61118579 + + - name: Check Release Version + id: version + uses: bitwarden/gh-actions/release-version-check@ea9fab01d76940267b4147cc1c4542431246b9f6 + with: + release-type: ${{ github.event.inputs.release_type }} + project-type: ts + file: apps/browser/src/manifest.json + monorepo: true + monorepo-project: browser + + - name: Get branch name + id: branch + run: | + BRANCH_NAME=$(basename ${{ github.ref }}) + echo "::set-output name=branch-name::$BRANCH_NAME" + + + locales-test: + name: Locales Test + runs-on: ubuntu-20.04 + needs: setup + steps: + - name: Checkout repo + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + + - name: Testing locales - extName length + run: | + found_error=false + + echo "Locales Test" + echo "============" + echo "extName string must be 40 characters or less" + echo + for locale in $(ls src/_locales/); do + string_length=$(jq '.extName.message | length' src/_locales/$locale/messages.json) + if [[ $string_length -gt 40 ]]; then + echo "$locale: $string_length" + found_error=true + fi + done + + if $found_error; then + echo + echo "Please fix 'extName' for the locales listed above." + exit 1 + else + echo "Test passed!" + fi + working-directory: apps/browser + + + release: + name: Create GitHub Release + runs-on: ubuntu-20.04 + needs: + - setup + - locales-test + steps: + - name: Download latest RC build artifacts + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-browser.yml + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: 'browser-source-*.zip, + dist-chrome-*.zip, + dist-opera-*.zip, + dist-firefox-*.zip, + dist-edge-*.zip' + + - name: Rename build artifacts + env: + PACKAGE_VERSION: ${{ needs.setup.outputs.release-version }} + run: | + mv browser-source.zip browser-source-$PACKAGE_VERSION.zip + mv dist-chrome.zip dist-chrome-$PACKAGE_VERSION.zip + mv dist-opera.zip dist-opera-$PACKAGE_VERSION.zip + mv dist-firefox.zip dist-firefox-$PACKAGE_VERSION.zip + mv dist-edge.zip dist-edge-$PACKAGE_VERSION.zip + + - name: Create release + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + uses: ncipollo/release-action@40bb172bd05f266cf9ba4ff965cb61e9ee5f6d01 + with: + artifacts: 'browser-source-${{ needs.setup.outputs.release-version }}.zip, + dist-chrome-${{ needs.setup.outputs.release-version }}.zip, + dist-opera-${{ needs.setup.outputs.release-version }}.zip, + dist-firefox-${{ needs.setup.outputs.release-version }}.zip, + dist-edge-${{ needs.setup.outputs.release-version }}.zip' + commit: ${{ github.sha }} + tag: "browser-v${{ needs.setup.outputs.release-version }}" + name: "Browser v${{ needs.setup.outputs.release-version }}" + body: "" + token: ${{ secrets.GITHUB_TOKEN }} + draft: true diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml new file mode 100644 index 0000000000..6ab350c8ce --- /dev/null +++ b/.github/workflows/release-cli.yml @@ -0,0 +1,196 @@ +--- +name: Release CLI + +on: + workflow_dispatch: + inputs: + release_type: + description: 'Release Options' + required: true + default: 'Initial Release' + type: choice + options: + - Initial Release + - Redeploy + - Dry Run + +defaults: + run: + working-directory: apps/cli + +jobs: + setup: + name: Setup + runs-on: ubuntu-20.04 + outputs: + release-version: ${{ steps.version.outputs.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@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Check Release Version + id: version + uses: bitwarden/gh-actions/release-version-check@ea9fab01d76940267b4147cc1c4542431246b9f6 + with: + release-type: ${{ github.event.inputs.release_type }} + project-type: ts + file: apps/cli/package.json + monorepo: true + monorepo-project: cli + + - name: Get branch name + id: branch + run: | + BRANCH_NAME=$(basename ${{ github.ref }}) + echo "::set-output name=branch-name::$BRANCH_NAME" + + - name: Download all artifacts + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-cli.yml + path: apps/cli + workflow_conclusion: success + branch: ${{ steps.branch.outputs.branch-name }} + + - name: Create release + uses: ncipollo/release-action@58ae73b360456532aafd58ee170c045abbeaee37 # v1.10.0 + env: + PKG_VERSION: ${{ steps.version.outputs.version }} + with: + artifacts: "apps/cli/bw-windows-${{ env.PKG_VERSION }}.zip, + apps/cli/bw-windows-sha256-${{ env.PKG_VERSION }}.txt, + apps/cli/bw-macos-${{ env.PKG_VERSION }}.zip, + apps/cli/bw-macos-sha256-${{ env.PKG_VERSION }}.txt, + apps/cli/bw-linux-${{ env.PKG_VERSION }}.zip, + apps/cli/bw-linux-sha256-${{ env.PKG_VERSION }}.txt, + apps/cli/bitwarden-cli.${{ env.PKG_VERSION }}.nupkg, + apps/cli/bw_${{ env.PKG_VERSION }}_amd64.snap, + apps/cli/bw-snap-sha256-${{ env.PKG_VERSION }}.txt" + commit: ${{ github.sha }} + tag: cli-v${{ env.PKG_VERSION }} + name: CLI v${{ 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.release-version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Login to Azure + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 # v1.1 + 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: "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: Download artifacts + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-cli.yml + path: apps/cli + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: bw_${{ env._PKG_VERSION }}_amd64.snap + + - name: Publish Snap & logout + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + run: | + snapcraft push bw_${{ 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.release-version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - 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 artifacts + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-cli.yml + path: apps/cli + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: bitwarden-cli.${{ env._PKG_VERSION }}.nupkg + + - name: Push to Chocolatey + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + shell: pwsh + run: | + cd dist + choco push + + + npm: + name: Publish NPM + runs-on: ubuntu-20.04 + needs: setup + env: + _PKG_VERSION: ${{ needs.setup.outputs.release-version }} + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Download artifacts + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-cli.yml + path: apps/cli + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: bitwarden-cli-${{ env._PKG_VERSION }}-npm-build.zip + + - name: Setup NPM + run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Install Husky + run: npm install -g husky + + - name: Publish NPM + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + run: npm publish --access public diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml new file mode 100644 index 0000000000..54933fe162 --- /dev/null +++ b/.github/workflows/release-desktop.yml @@ -0,0 +1,209 @@ +--- +name: Release Desktop + +on: + workflow_dispatch: + inputs: + release_type: + description: 'Release Options' + required: true + default: 'Initial Release' + type: choice + options: + - Initial Release + - Redeploy + - Dry Run +defaults: + run: + shell: bash + +jobs: + setup: + name: Setup + runs-on: ubuntu-20.04 + outputs: + release-version: ${{ steps.version.outputs.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: Check Release Version + id: version + uses: bitwarden/gh-actions/release-version-check@ea9fab01d76940267b4147cc1c4542431246b9f6 + with: + release-type: ${{ github.event.inputs.release_type }} + project-type: ts + file: apps/desktop/src/package.json + monorepo: true + monorepo-project: desktop + + - 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, aws-electron-bucket-name" + + - name: Download all artifacts + uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + with: + workflow: build-desktop.yml + workflow_conclusion: success + branch: ${{ steps.branch.outputs.branch-name }} + path: apps/desktop/artifacts + + - name: Rename .pkg to .pkg.archive + env: + PKG_VERSION: ${{ steps.version.outputs.version }} + working-directory: apps/desktop/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' + AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.aws-electron-bucket-name }} + working-directory: apps/desktop/artifacts + run: | + aws s3 cp ./ $AWS_S3_BUCKET_NAME/desktop/ \ + --acl "public-read" \ + --recursive \ + --quiet + + - name: Create release + uses: ncipollo/release-action@95215a3cb6e6a1908b3c44e00b4fdb15548b1e09 # v2.8.5 + env: + PKG_VERSION: ${{ steps.version.outputs.version }} + with: + artifacts: "apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-amd64.deb, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-x86_64.rpm, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.freebsd, + apps/desktop/artifacts/bitwarden_${{ env.PKG_VERSION }}_amd64.snap, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-x86_64.AppImage, + apps/desktop/artifacts/Bitwarden-Portable-${{ env.PKG_VERSION }}.exe, + apps/desktop/artifacts/Bitwarden-Installer-${{ env.PKG_VERSION }}.exe, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32-store.appx, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32.appx, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32.nsis.7z, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64-store.appx, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.appx, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.nsis.7z, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64-store.appx, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64.appx, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64.nsis.7z, + apps/desktop/artifacts/bitwarden.${{ env.PKG_VERSION }}.nupkg, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal-mac.zip, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.dmg, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.dmg.blockmap, + apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive" + commit: ${{ github.sha }} + tag: desktop-v${{ env.PKG_VERSION }} + name: Desktop v${{ 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.release-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 + working-directory: apps/desktop + + - name: Download Snap artifact + uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + with: + workflow: build-desktop.yml + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: bitwarden_${{ env._PKG_VERSION }}_amd64.snap + path: apps/desktop/dist + + - name: Deploy to Snap Store + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + run: | + snapcraft upload bitwarden_${{ env._PKG_VERSION }}_amd64.snap --release stable + snapcraft logout + working-directory: apps/desktop/dist + + choco: + name: Deploy Choco + runs-on: windows-2019 + needs: setup + env: + _PKG_VERSION: ${{ needs.setup.outputs.release-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 + working-directory: apps/desktop + + - name: Download choco artifact + uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + with: + workflow: build-desktop.yml + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: bitwarden.${{ env._PKG_VERSION }}.nupkg + path: apps/desktop/dist + + - name: Push to Chocolatey + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + shell: pwsh + run: choco push + working-directory: apps/desktop/dist diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml new file mode 100644 index 0000000000..4b508bfee6 --- /dev/null +++ b/.github/workflows/release-web.yml @@ -0,0 +1,334 @@ +--- +name: Release Web + +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: + release_version: ${{ steps.version.outputs.version }} + tag_version: ${{ steps.version.outputs.tag }} + 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@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Check Release Version + id: version + uses: bitwarden/gh-actions/release-version-check@8f055ef543c7433c967a1b9b04a0f230923233bb + with: + release-type: ${{ github.event.inputs.release_type }} + project-type: ts + file: apps/web/package.json + monorepo: true + monorepo-project: web + + - name: Get branch name + id: branch + run: | + BRANCH_NAME=$(basename ${{ github.ref }}) + echo "::set-output name=branch_name::$BRANCH_NAME" + + + self-host: + name: Release self-host docker + runs-on: ubuntu-20.04 + needs: setup + env: + _BRANCH_NAME: ${{ needs.setup.outputs.branch_name }} + _RELEASE_VERSION: ${{ needs.setup.outputs.release_version }} + _RELEASE_OPTION: ${{ github.event.inputs.release_type }} + steps: + - name: Print environment + run: | + whoami + docker --version + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + echo "Github Release Option: $_RELEASE_OPTION" + + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + ########## DockerHub ########## + - name: Setup DCT + id: setup-dct + uses: bitwarden/gh-actions/setup-docker-trust@a8c384a05a974c05c48374c818b004be221d43ff + with: + azure-creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + azure-keyvault-name: "bitwarden-prod-kv" + + - name: Pull latest selfhost image + run: | + if [[ "${{ github.event.inputs.release_type }}" == "Dry Run" ]]; then + docker pull bitwarden/web:latest + else + docker pull bitwarden/web:$_BRANCH_NAME + fi + + - name: Docker Tag version and latest image + run: | + docker tag bitwarden/web:$_BRANCH_NAME bitwarden/web:$_RELEASE_VERSION + docker tag bitwarden/web:$_BRANCH_NAME bitwarden/web:latest + + - name: Docker Push version and latest image + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + env: + DOCKER_CONTENT_TRUST: 1 + DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }} + run: | + docker push bitwarden/web:$_RELEASE_VERSION + docker push bitwarden/web:latest + + - name: Log out of Docker and disable Docker Notary + run: | + docker logout + echo "DOCKER_CONTENT_TRUST=0" >> $GITHUB_ENV + + ########## ACR ########## + - name: Login to Azure - QA Subscription + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 # v1.1 + with: + creds: ${{ secrets.AZURE_QA_KV_CREDENTIALS }} + + - name: Login to Azure ACR + run: az acr login -n bitwardenqa + + - name: Tag version and latest + env: + REGISTRY: bitwardenqa.azurecr.io + run: | + docker tag bitwarden/web:$_BRANCH_NAME $REGISTRY/web:$_RELEASE_VERSION + docker tag bitwarden/web:$_BRANCH_NAME $REGISTRY/web:latest + + docker tag bitwarden/web:$_BRANCH_NAME $REGISTRY/web-sh:$_RELEASE_VERSION + docker tag bitwarden/web:$_BRANCH_NAME $REGISTRY/web-sh:latest + + - name: Push version and latest image + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + env: + REGISTRY: bitwardenqa.azurecr.io + run: | + docker push $REGISTRY/web:$_RELEASE_VERSION + docker push $REGISTRY/web:latest + + docker push $REGISTRY/web-sh:$_RELEASE_VERSION + docker push $REGISTRY/web-sh:latest + + - name: Log out of Docker + run: docker logout + + + ghpages-deploy: + name: Deploy Web Vault to GitHub Pages + runs-on: ubuntu-20.04 + needs: + - setup + - self-host + env: + _RELEASE_VERSION: ${{ needs.setup.outputs.release_version }} + _TAG_VERSION: ${{ needs.setup.outputs.tag_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 # v2.4.0 + with: + ref: gh-pages + + - name: Create gh-pages-deploy branch + run: | + git switch -c gh-pages-deploy-$_TAG_VERSION + git push -u origin gh-pages-deploy-$_TAG_VERSION + + - name: Checkout Repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 # v2.4.0 + + - name: Setup git config + run: | + git config user.name = "GitHub Action Bot" + git config user.email = "<>" + git config --global url."https://github.com/".insteadOf ssh://git@github.com/ + git config --global url."https://".insteadOf ssh:// + + - name: Download latest cloud asset + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-web.yml + path: apps/web + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch_name }} + artifacts: web-*-cloud-COMMERCIAL.zip + + # This should result in a build directory in the current working directory + - name: Unzip build asset + working-directory: apps/web + run: unzip web-*-cloud-COMMERCIAL.zip + + - name: Deploy GitHub Pages + uses: crazy-max/ghaction-github-pages@eb08c35b9fab86751edfff4e55cd5cde35ff0e52 # v3.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + target_branch: gh-pages-deploy-${{ needs.setup.outputs.tag_version }} + build_dir: apps/web/build + keep_history: true + commit_message: "Staging deploy ${{ needs.setup.outputs.release_version }}" + dry_run: ${{ github.event.inputs.release_type == 'Dry Run' }} + + - name: Create GitHub Pages Deploy PR + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + env: + PR_BRANCH: gh-pages-deploy-${{ env._TAG_VERSION }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh pr create --title "Deploy $_RELEASE_VERSION to GitHub Pages" \ + --body "Deploying $_RELEASE_VERSION" \ + --base gh-pages \ + --head "$PR_BRANCH" + + + cfpages-deploy: + name: Deploy Web Vault to CloudFlare Pages branch + runs-on: ubuntu-20.04 + needs: + - setup + - self-host + env: + _RELEASE_VERSION: ${{ needs.setup.outputs.release_version }} + _TAG_VERSION: ${{ needs.setup.outputs.tag_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Download latest cloud asset + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-web.yml + path: apps/web + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch_name }} + artifacts: web-*-cloud-COMMERCIAL.zip + + # This should result in a build directory in the current working directory + - name: Unzip build asset + working-directory: apps/web + run: unzip web-*-cloud-COMMERCIAL.zip + + - name: Checkout Repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + with: + ref: deploy + path: deployment + + - name: Setup git config + run: | + git config --global user.name = "GitHub Action Bot" + git config --global user.email = "<>" + git config --global url."https://github.com/".insteadOf ssh://git@github.com/ + git config --global url."https://".insteadOf ssh:// + + - name: Deploy CloudFlare Pages + run: | + rm -rf ./* + cp -R apps/web/build/* . + working-directory: deployment + + - name: Create cf-pages-deploy branch + run: | + git switch -c cf-pages-deploy-$_TAG_VERSION + git add . + git commit -m "Staging deploy ${{ needs.setup.outputs.release_version }}" + git push -u origin cf-pages-deploy-$_TAG_VERSION + working-directory: deployment + + - name: Create CloudFlare Pages Deploy PR + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + env: + PR_BRANCH: cf-pages-deploy-${{ env._TAG_VERSION }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh pr create --title "Deploy $_RELEASE_VERSION to CloudFlare Pages" \ + --body "Deploying $_RELEASE_VERSION" \ + --base deploy \ + --head "$PR_BRANCH" + + + release: + name: Create GitHub Release + runs-on: ubuntu-20.04 + needs: + - setup + - self-host + - ghpages-deploy + - cfpages-deploy + steps: + - name: Download latest build artifacts + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build-web.yml + path: apps/web/artifacts + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch_name }} + artifacts: "web-*-selfhosted-COMMERCIAL.zip, + web-*-selfhosted-open-source.zip" + + - name: Rename assets + working-directory: apps/web/artifacts + run: | + mv web-*-selfhosted-COMMERCIAL.zip web-${{ needs.setup.outputs.release_version }}-selfhosted-COMMERCIAL.zip + mv web-*-selfhosted-open-source.zip web-${{ needs.setup.outputs.release_version }}-selfhosted-open-source.zip + + - name: Create release + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + uses: ncipollo/release-action@58ae73b360456532aafd58ee170c045abbeaee37 # v1.10.0 + with: + name: "Version v${{ needs.setup.outputs.release_version }}" + commit: ${{ github.sha }} + tag: "${{ needs.setup.outputs.tag_version }}" + body: "" + artifacts: "apps/web/artifacts/web-${{ needs.setup.outputs.release_version }}-selfhosted-COMMERCIAL.zip, + apps/web/artifacts/web-${{ needs.setup.outputs.release_version }}-selfhosted-open-source.zip" + token: ${{ secrets.GITHUB_TOKEN }} + draft: true + + + dry-run: + name: Dry Run Cleanup + runs-on: ubuntu-20.04 + if: ${{ github.event.inputs.release_type == 'Dry Run' }} + env: + _TAG_VERSION: ${{ needs.setup.outputs.tag_version }} + needs: + - setup + - release + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Remove gh-pages-deploy branch + run: git push origin --delete gh-pages-deploy-$_TAG_VERSION + + - name: Remove cf-pages-deploy branch + run: git push origin --delete cf-pages-deploy-$_TAG_VERSION diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml new file mode 100644 index 0000000000..3d293c8466 --- /dev/null +++ b/.github/workflows/version-bump.yml @@ -0,0 +1,140 @@ +--- +name: Version Bump + +on: + workflow_dispatch: + inputs: + client: + description: "Client Project" + required: true + type: choice + options: + - Browser + - CLI + - Desktop + - Web + version_number: + description: "New Version" + required: true + +defaults: + run: + shell: bash + +jobs: + bump_version: + name: "Bump ${{ github.event.inputs.client }} Version" + runs-on: ubuntu-20.04 + steps: + - name: Checkout Branch + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + + - name: Create Version Branch + id: branch + env: + CLIENT_NAME: ${{ github.event.inputs.client }} + run: | + CLIENT=$(python -c "print('$CLIENT_NAME'.lower())") + echo "::set-output name=client::$CLIENT" + + git switch -c ${CLIENT}_version_bump_${{ github.event.inputs.version_number }} + git push -u origin ${CLIENT}_version_bump_${{ github.event.inputs.version_number }} + + - name: Checkout Version Branch + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + with: + ref: ${{ steps.branch.outputs.client }}_version_bump_${{ github.event.inputs.version_number }} + + ######################## + # VERSION BUMP SECTION # + ######################## + + ### Browser + - name: Bump Browser Version - Manifest + if: ${{ github.event.inputs.client == 'Browser' }} + uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945 + with: + version: ${{ github.event.inputs.version_number }} + file_path: "apps/browser/src/manifest.json" + + - name: Run Prettier after Browser Version Bump + if: ${{ github.event.inputs.client == 'Browser' }} + run: | + npm install -g prettier + prettier --write apps/browser/src/manifest.json + + ### CLI + - name: Bump CLI Version - Package + if: ${{ github.event.inputs.client == 'CLI' }} + uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945 + with: + version: ${{ github.event.inputs.version_number }} + file_path: "apps/cli/package.json" + + - name: Bump CLI Version - Package-lock + if: ${{ github.event.inputs.client == 'CLI' }} + uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945 + with: + version: ${{ github.event.inputs.version_number }} + file_path: "apps/cli/package-lock.json" + + ### Desktop + - name: Bump Desktop Version - Package + if: ${{ github.event.inputs.client == 'Desktop' }} + uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945 + with: + version: ${{ github.event.inputs.version_number }} + file_path: "apps/desktop/src/package.json" + + ### Web + - name: Bump Web Version - package.json + if: ${{ github.event.inputs.client == 'Web' }} + uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945 + with: + version: ${{ github.event.inputs.version_number }} + file_path: "apps/web/package.json" + + - name: Bump Web Version - package-lock.json + if: ${{ github.event.inputs.client == 'Web' }} + uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945 + with: + version: ${{ github.event.inputs.version_number }} + file_path: "apps/web/package-lock.json" + + ######################## + + - name: Commit files + env: + CLIENT: ${{ steps.branch.outputs.client }} + 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 ${CLIENT} version to ${{ github.event.inputs.version_number }}" -a + + - name: Push changes + env: + CLIENT: ${{ steps.branch.outputs.client }} + run: git push -u origin ${CLIENT}_version_bump_${{ github.event.inputs.version_number }} + + - name: Create Bump Version PR + env: + PR_BRANCH: "${{ steps.branch.outputs.client }}_version_bump_${{ github.event.inputs.version_number }}" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + BASE_BRANCH: master + TITLE: "Bump ${{ github.event.inputs.client }} 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 ${{ github.event.inputs.client }} version bump to ${{ github.event.inputs.version_number }}" diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml new file mode 100644 index 0000000000..9fda2eee0a --- /dev/null +++ b/.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/.gitignore b/.gitignore new file mode 100644 index 0000000000..71fec37f66 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +**/coverage/ +.github/workflows/act \ No newline at end of file diff --git a/libs/.husky/.gitignore b/.husky/.gitignore similarity index 100% rename from libs/.husky/.gitignore rename to .husky/.gitignore diff --git a/libs/.husky/pre-commit b/.husky/pre-commit similarity index 100% rename from libs/.husky/pre-commit rename to .husky/pre-commit diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..f0b10f153f --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.13.1 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..8f0e568829 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,27 @@ +# Build directories +**/build +**/dist +**/coverage + +# External libraries / auto synced locales +apps/browser/src/_locales +apps/browser/src/scripts/duo.js +apps/browser/src/content/autofill.js +apps/browser/src/safari + +apps/desktop/src/locales +apps/desktop/dist-safari +apps/desktop/desktop_native +apps/desktop/src/scripts/duo.js + +apps/cli/src/locales +apps/cli/.github + +apps/web/.github +apps/web/src/404/bootstrap.min.css +apps/web/src/locales + +libs/.github + +# Github Workflows +.github/workflows diff --git a/libs/.prettierrc.json b/.prettierrc.json similarity index 100% rename from libs/.prettierrc.json rename to .prettierrc.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..b1938d2383 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# 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 (i10n) section below + +## Contributor Agreement + +Please sign the [Contributor Agreement](https://cla-assistant.io/bitwarden/clients) 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) + +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 applications into another language (or make a translation correction), please register an account at Crowdin and join our projects here: + +- https://crowdin.com/project/bitwarden-web +- https://crowdin.com/project/bitwarden-desktop +- https://crowdin.com/project/bitwarden-browser + +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/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000..55bf3b3f73 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,17 @@ +Source code in this repository is covered by one of two licenses: (i) the +GNU General Public License (GPL) v3.0 (ii) the Bitwarden License v1.0. The +default license throughout the repository is GPL v3.0 unless the header +specifies another license. Bitwarden Licensed code is found only in the +/bitwarden_license directory. + +GPL v3.0: +https://github.com/bitwarden/web/blob/master/LICENSE_GPL.txt + +Bitwarden License v1.0: +https://github.com/bitwarden/web/blob/master/LICENSE_BITWARDEN.txt + +No grant of any rights in the trademarks, service marks, or logos of Bitwarden is +made (except as may be necessary to comply with the notice requirements as +applicable), and use of any Bitwarden trademarks must comply with Bitwarden +Trademark Guidelines +. diff --git a/LICENSE_BITWARDEN.txt b/LICENSE_BITWARDEN.txt new file mode 100644 index 0000000000..fd037c0679 --- /dev/null +++ b/LICENSE_BITWARDEN.txt @@ -0,0 +1,182 @@ +BITWARDEN LICENSE AGREEMENT +Version 1, 4 September 2020 + +PLEASE CAREFULLY READ THIS BITWARDEN LICENSE AGREEMENT ("AGREEMENT"). THIS +AGREEMENT CONSTITUTES A LEGALLY BINDING AGREEMENT BETWEEN YOU AND BITWARDEN, +INC. ("BITWARDEN") AND GOVERNS YOUR USE OF THE COMMERCIAL MODULES (DEFINED +BELOW). BY COPYING OR USING THE COMMERCIAL MODULES, YOU AGREE TO THIS AGREEMENT. +IF YOU DO NOT AGREE WITH THIS AGREEMENT, YOU MAY NOT COPY OR USE THE COMMERCIAL +MODULES. IF YOU ARE COPYING OR USING THE COMMERCIAL MODULES ON BEHALF OF A LEGAL +ENTITY, YOU REPRESENT AND WARRANT THAT YOU HAVE AUTHORITY TO AGREE TO THIS +AGREEMENT ON BEHALF OF SUCH ENTITY. IF YOU DO NOT HAVE SUCH AUTHORITY, DO NOT +COPY OR USE THE COMMERCIAL MODULES IN ANY MANNER. + +This Agreement is entered into by and between Bitwarden and you, or the legal +entity on behalf of whom you are acting (as applicable, "You" or "Your"). + +1. DEFINITIONS + +"Bitwarden Software" means the Bitwarden server software, libraries, and +Commercial Modules. + +"Commercial Modules" means the modules designed to work with and enhance the +Bitwarden Software to which this Agreement is linked, referenced, or appended. + +2. LICENSES, RESTRICTIONS AND THIRD PARTY CODE + +2.1 Commercial Module License. Subject to Your compliance with this Agreement, +Bitwarden hereby grants to You a limited, non-exclusive, non-transferable, +royalty-free license to use the Commercial Modules for the sole purposes of +internal development and internal testing, and only in a non-production +environment. + +2.2 Reservation of Rights. As between Bitwarden and You, Bitwarden owns all +right, title and interest in and to the Bitwarden Software, and except as +expressly set forth in Sections 2.1, no other license to the Bitwarden Software +is granted to You under this Agreement, by implication, estoppel, or otherwise. + +2.3 Restrictions. You agree not to: (i) except as expressly permitted in +Section 2.1, sell, rent, lease, distribute, sublicense, loan or otherwise +transfer the Commercial Modules to any third party; (ii) alter or remove any +trademarks, service mark, and logo included with the Commercial Modules, or +(iii) use the Commercial Modules to create a competing product or service. +Bitwarden is not obligated to provide maintenance and support services for the +Bitwarden Software licensed under this Agreement. + +2.4 Third Party Software. The Commercial Modules may contain or be provided +with third party open source libraries, components, utilities and other open +source software (collectively, "Open Source Software"). Notwithstanding anything +to the contrary herein, use of the Open Source Software will be subject to the +license terms and conditions applicable to such Open Source Software. To the +extent any condition of this Agreement conflicts with any license to the Open +Source Software, the Open Source Software license will govern with respect to +such Open Source Software only. + +2.5 This Agreement does not grant any rights in the trademarks, service marks, or +logos of any Contributor (except as may be necessary to comply with the notice +requirements in Section 2.3), and use of any Bitwarden trademarks must comply with +Bitwarden Trademark Guidelines +. + +3. TERMINATION + +3.1 Termination. This Agreement will automatically terminate upon notice from +Bitwarden, which notice may be by email or posting in the location where the +Commercial Modules are made available. + +3.2 Effect of Termination. Upon any termination of this Agreement, for any +reason, You will promptly cease use of the Commercial Modules and destroy any +copies thereof. For the avoidance of doubt, termination of this Agreement will +not affect Your right to Bitwarden Software, other than the Commercial Modules, +made available pursuant to an Open Source Software license. + +3.3 Survival. Sections 1, 2.2 -2.4, 3.2, 3.3, 4, and 5 will survive any +termination of this Agreement. + +4. DISCLAIMER AND LIMITATION OF LIABILITY + +4.1 Disclaimer of Warranties. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE +LAW, THE BITWARDEN SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED REGARDING OR RELATING TO THE BITWARDEN SOFTWARE, INCLUDING +ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +TITLE, AND NON-INFRINGEMENT. FURTHER, BITWARDEN DOES NOT WARRANT RESULTS OF USE +OR THAT THE BITWARDEN SOFTWARE WILL BE ERROR FREE OR THAT THE USE OF THE +BITWARDEN SOFTWARE WILL BE UNINTERRUPTED. + +4.2 Limitation of Liability. IN NO EVENT WILL BITWARDEN OR ITS LICENSORS BE +LIABLE TO YOU OR ANY THIRD PARTY UNDER THIS AGREEMENT FOR (I) ANY AMOUNTS IN +EXCESS OF US $25 OR (II) FOR ANY SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF +ANY KIND, INCLUDING FOR ANY LOSS OF PROFITS, LOSS OF USE, BUSINESS INTERRUPTION, +LOSS OF DATA, COST OF SUBSTITUTE GOODS OR SERVICES, WHETHER ALLEGED AS A BREACH +OF CONTRACT OR TORTIOUS CONDUCT, INCLUDING NEGLIGENCE, EVEN IF BITWARDEN HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +5. MISCELLANEOUS + +5.1 Assignment. You may not assign or otherwise transfer this Agreement or any +rights or obligations hereunder, in whole or in part, whether by operation of +law or otherwise, to any third party without Bitwarden's prior written consent. +Any purported transfer, assignment or delegation without such prior written +consent will be null and void and of no force or effect. Bitwarden may assign +this Agreement to any successor to its business or assets to which this +Agreement relates, whether by merger, sale of assets, sale of stock, +reorganization or otherwise. Subject to this Section 5.1, this Agreement will be +binding upon and inure to the benefit of the parties hereto, and their +respective successors and permitted assigns. + +5.2 Entire Agreement; Modification; Waiver. This Agreement represents the +entire agreement between the parties, and supersedes all prior agreements and +understandings, written or oral, with respect to the matters covered by this +Agreement, and is not intended to confer upon any third party any rights or +remedies hereunder. You acknowledge that You have not entered in this Agreement +based on any representations other than those contained herein. No modification +of or amendment to this Agreement, nor any waiver of any rights under this +Agreement, will be effective unless in writing and signed by both parties. The +waiver of one breach or default or any delay in exercising any rights will not +constitute a waiver of any subsequent breach or default. + +5.3 Governing Law. This Agreement will in all respects be governed by the laws +of the State of California without reference to its principles of conflicts of +laws. The parties hereby agree that all disputes arising out of this Agreement +will be subject to the exclusive jurisdiction of and venue in the federal and +state courts within Los Angeles County, California. You hereby consent to the +personal and exclusive jurisdiction and venue of these courts. The parties +hereby disclaim and exclude the application hereto of the United Nations +Convention on Contracts for the International Sale of Goods. + +5.4 Severability. If any provision of this Agreement is held invalid or +unenforceable under applicable law by a court of competent jurisdiction, it will +be replaced with the valid provision that most closely reflects the intent of +the parties and the remaining provisions of the Agreement will remain in full +force and effect. + +5.5 Relationship of the Parties. Nothing in this Agreement is to be construed +as creating an agency, partnership, or joint venture relationship between the +parties hereto. Neither party will have any right or authority to assume or +create any obligations or to make any representations or warranties on behalf of +any other party, whether express or implied, or to bind the other party in any +respect whatsoever. + +5.6 Notices. All notices permitted or required under this Agreement will be in +writing and will be deemed to have been given when delivered in person +(including by overnight courier), or three (3) business days after being mailed +by first class, registered or certified mail, postage prepaid, to the address of +the party specified in this Agreement or such other address as either party may +specify in writing. + +5.7 U.S. Government Restricted Rights. If Commercial Modules is being licensed +by the U.S. Government, the Commercial Modules is deemed to be "commercial +computer software" and "commercial computer documentation" developed exclusively +at private expense, and (a) if acquired by or on behalf of a civilian agency, +will be subject solely to the terms of this computer software license as +specified in 48 C.F.R. 12.212 of the Federal Acquisition Regulations and its +successors; and (b) if acquired by or on behalf of units of the Department of +Defense ("DOD") will be subject to the terms of this commercial computer +software license as specified in 48 C.F.R. 227.7202-2, DOD FAR Supplement and +its successors. + +5.8 Injunctive Relief. A breach or threatened breach by You of Section 2 may +cause irreparable harm for which damages at law may not provide adequate relief, +and therefore Bitwarden will be entitled to seek injunctive relief in any +applicable jurisdiction without being required to post a bond. + +5.9 Export Law Assurances. You understand that the Commercial Modules is +subject to export control laws and regulations. You may not download or +otherwise export or re-export the Commercial Modules or any underlying +information or technology except in full compliance with all applicable laws and +regulations, in particular, but without limitation, United States export control +laws. None of the Commercial Modules or any underlying information or technology +may be downloaded or otherwise exported or re- exported: (a) into (or to a +national or resident of) any country to which the United States has embargoed +goods; or (b) to anyone on the U.S. Treasury Department's list of specially +designated nationals or the U.S. Commerce Department's list of prohibited +countries or debarred or denied persons or entities. You hereby agree to the +foregoing and represents and warrants that You are not located in, under control +of, or a national or resident of any such country or on any such list. + +5.10 Construction. The titles and section headings used in this Agreement are +for ease of reference only and will not be used in the interpretation or +construction of this Agreement. No rule of construction resolving any ambiguity +in favor of the non-drafting party will be applied hereto. The word "including", +when used herein, is illustrative rather than exclusive and means "including, +without limitation." diff --git a/libs/LICENSE.txt b/LICENSE_GPL.txt similarity index 100% rename from libs/LICENSE.txt rename to LICENSE_GPL.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000000..0d238e0bdd --- /dev/null +++ b/README.md @@ -0,0 +1,134 @@ +

+ Bitwarden +

+

+ + Github Workflow browser build on master + + + Github Workflow desktop build on master + + + gitter chat + +

+ +--- + +# Bitwarden Client Applications + +This repository houses all Bitwarden client applications except the [Mobile application](https://github.com/bitwarden/mobile). + +Please check the readmes for each application under `apps` for instructions on how to build the different applications. + +## Related projects: + +- [bitwarden/server](https://github.com/bitwarden/server): The core infrastructure backend (API, database, Docker, etc). +- [bitwarden/mobile](https://github.com/bitwarden/mobile): The mobile app vault (iOS and Android). +- [bitwarden/directory-connector](https://github.com/bitwarden/directory-connector): A tool for syncing a directory (AD, LDAP, Azure, G Suite, Okta) to an organization. + +# 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. + +## Git blame + +We recommend that you configure git to ignore specific revision using: + +```bash +git config blame.ignoreRevsFile .git-blame-ignore-revs +``` + +## Migrate PRs from old repositories + +We recently migrated from individual client repositories. And some PRs were unfortunately left behind in the old repositories. Luckily it's fairly straightforward to sync them up again. Please follow all the instructions below in order to avoid most merge conflicts. + +### Desktop + +``` +# Merge master +git merge master + +# Merge branch mono-repo-prep +git merge 28bc4113b9bbae4dba2b5af14d460764fce79acf + +# Verify files are placed in apps/desktop + +# Add remote +git remote add clients git@github.com:bitwarden/clients.git + +# Merge against clients master +git fetch clients +git merge clients/master + +# Push to clients or your own fork +``` + +### CLI + +``` +# Merge master +git merge master + +# Merge branch mono-repo-prep +git merge 980429f4bdcb178d8d92d8202cbdacfaa45c917e + +# Verify files are placed in apps/cli + +# Add remote +git remote add clients git@github.com:bitwarden/clients.git + +# Merge against clients master +git fetch clients +git merge clients/master + +# Push to clients or your own fork +``` + +### Web + +``` +# Merge master +git merge master + +# Merge branch mono-repo-prep +git merge 02fe7159034b04d763a61fcf0200869e3209fa33 + +# Verify files are placed in apps/web + +# Add remote +git remote add clients git@github.com:bitwarden/clients.git + +# Merge against clients master +git fetch clients +git merge clients/master + +# Push to clients or your own fork +``` + +### Jslib + +``` +# Merge master +git merge master + +# Merge branch mono-repo +git merge d7492e3cf320410e74ebd0e0675ab994e64bd01a + +# Verify files are placed in libs + +# Add remote +git remote add clients git@github.com:bitwarden/clients.git + +# Merge against clients master +git fetch clients +git merge clients/master + +# Push to clients or your own fork +``` diff --git a/libs/SECURITY.md b/SECURITY.md similarity index 100% rename from libs/SECURITY.md rename to SECURITY.md diff --git a/apps/browser/.gitignore b/apps/browser/.gitignore new file mode 100644 index 0000000000..9909d8417b --- /dev/null +++ b/apps/browser/.gitignore @@ -0,0 +1,20 @@ +.vs +.vscode +.idea +.DS_Store +node_modules +npm-debug.log +vwd.webinfo +css/ +dist/ +dist-safari/ +webfonts/ +*.crx +*.pem +*.zip +build/ +build.safariextension/ +xcuserdata/ +*.hmap +!src/safari/safari/app/popup/index.html +src/safari/safari/app/ diff --git a/apps/browser/README.md b/apps/browser/README.md new file mode 100644 index 0000000000..90a46e8dfb --- /dev/null +++ b/apps/browser/README.md @@ -0,0 +1,52 @@ +[![Github Workflow build browser on master](https://github.com/bitwarden/clients/actions/workflows/build-browser.yml/badge.svg?branch=master)](https://github.com/bitwarden/clients/actions/workflows/build-browser.yml?query=branch:master) +[![Crowdin](https://d322cqt584bo4o.cloudfront.net/bitwarden-browser/localized.svg)](https://crowdin.com/project/bitwarden-browser) +[![Join the chat at https://gitter.im/bitwarden/Lobby](https://badges.gitter.im/bitwarden/Lobby.svg)](https://gitter.im/bitwarden/Lobby) + +# Bitwarden Browser Extension + + + + + + + + + + +The Bitwarden browser extension is written using the Web Extension API and Angular. + +![My Vault](https://raw.githubusercontent.com/bitwarden/brand/master/screenshots/browser-chrome.png) + +# Build/Run + +**Requirements** + +- [Node.js](https://nodejs.org) v16.13.1 or greater +- NPM v8 +- [Gulp](https://gulpjs.com/) (`npm install --global gulp-cli`) +- Chrome (preferred), Opera, or Firefox browser + +**Run the app** + +``` +npm install +npm run build:watch +``` + +You can now load the extension into your browser through the browser's extension tools page: + +- Chrome/Opera: + 1. Type `chrome://extensions` in your address bar to bring up the extensions page. + 2. Enable developer mode (toggle switch) + 3. Click the "Load unpacked extension" button, navigate to the `build` folder of your local extension instance, and click "Ok". +- Firefox + 1. Type `about:debugging` in your address bar to bring up the add-ons page. + 2. Click the `Load Temporary Add-on` button, navigate to the `build/manifest.json` file, and "Open". + +**Desktop communication** + +Native Messaging (communication between the desktop application and browser extension) works by having the browser start a lightweight proxy baked into our desktop application. + +Out of the box, the desktop application can only communicate with the production browser extension. When you enable browser integration in the desktop application, the application generates manifests which contain the production IDs of the browser extensions. To enable communication between the desktop application and development versions of browser extensions, add the development IDs to the `allowed_extensions` section of the corresponding manifests. + +Manifests are located in the `browser` subdirectory of the Bitwarden configuration directory. For instance, on Windows the manifests are located at `C:\Users\\AppData\Roaming\Bitwarden\browsers` and on macOS these are in `Application Support` for various browsers ([for example](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#manifest_location)). Note that disabling the desktop integration will delete the manifests, and the files will need to be updated again. diff --git a/apps/browser/crowdin.yml b/apps/browser/crowdin.yml new file mode 100644 index 0000000000..6d51304a18 --- /dev/null +++ b/apps/browser/crowdin.yml @@ -0,0 +1,28 @@ +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 + - source: /store/locales/en/copy.resx + dest: /store/locales/en/%original_file_name% + translation: /store/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/browser/gulpfile.js b/apps/browser/gulpfile.js new file mode 100644 index 0000000000..87fb086ca6 --- /dev/null +++ b/apps/browser/gulpfile.js @@ -0,0 +1,245 @@ +const child = require("child_process"); +const fs = require("fs"); + +const del = require("del"); +const gulp = require("gulp"); +const filter = require("gulp-filter"); +const gulpif = require("gulp-if"); +const jeditor = require("gulp-json-editor"); +const replace = require("gulp-replace"); +const zip = require("gulp-zip"); + +const manifest = require("./src/manifest.json"); + +const paths = { + build: "./build/", + dist: "./dist/", + coverage: "./coverage/", + node_modules: "./node_modules/", + popupDir: "./src/popup/", + cssDir: "./src/popup/css/", + safari: "./src/safari/", +}; + +const filters = { + fonts: [ + "!build/popup/fonts/*", + "build/popup/fonts/Open_Sans*.woff", + "build/popup/fonts/bwi-font.woff2", + "build/popup/fonts/bwi-font.woff", + "build/popup/fonts/bwi-font.ttf", + ], + safari: ["!build/safari/**/*"], +}; + +function buildString() { + var build = ""; + if (process.env.BUILD_NUMBER && process.env.BUILD_NUMBER !== "") { + build = `-${process.env.BUILD_NUMBER}`; + } + return build; +} + +function distFileName(browserName, ext) { + return `dist-${browserName}${buildString()}.${ext}`; +} + +function dist(browserName, manifest) { + return gulp + .src(paths.build + "**/*") + .pipe(filter(["**"].concat(filters.fonts).concat(filters.safari))) + .pipe(gulpif("popup/index.html", replace("__BROWSER__", "browser_" + browserName))) + .pipe(gulpif("manifest.json", jeditor(manifest))) + .pipe(zip(distFileName(browserName, "zip"))) + .pipe(gulp.dest(paths.dist)); +} + +function distFirefox() { + return dist("firefox", (manifest) => { + delete manifest.content_security_policy; + removeShortcuts(manifest); + return manifest; + }); +} + +function distOpera() { + return dist("opera", (manifest) => { + delete manifest.applications; + delete manifest.content_security_policy; + removeShortcuts(manifest); + return manifest; + }); +} + +function distChrome() { + return dist("chrome", (manifest) => { + delete manifest.applications; + delete manifest.content_security_policy; + delete manifest.sidebar_action; + delete manifest.commands._execute_sidebar_action; + return manifest; + }); +} + +function distEdge() { + return dist("edge", (manifest) => { + delete manifest.applications; + delete manifest.content_security_policy; + delete manifest.sidebar_action; + delete manifest.commands._execute_sidebar_action; + return manifest; + }); +} + +function removeShortcuts(manifest) { + if (manifest.content_scripts && manifest.content_scripts.length > 1) { + const shortcutsScript = manifest.content_scripts[1]; + if (shortcutsScript.js.indexOf("content/shortcuts.js") > -1) { + manifest.content_scripts.splice(1, 1); + } + } +} + +function distSafariMas(cb) { + return distSafariApp(cb, "mas"); +} + +function distSafariMasDev(cb) { + return distSafariApp(cb, "masdev"); +} + +function distSafariDmg(cb) { + return distSafariApp(cb, "dmg"); +} + +function distSafariApp(cb, subBuildPath) { + const buildPath = paths.dist + "Safari/" + subBuildPath + "/"; + const builtAppexPath = buildPath + "build/Release/safari.appex"; + const builtAppexFrameworkPath = buildPath + "build/Release/safari.appex/Contents/Frameworks/"; + const entitlementsPath = paths.safari + "safari/safari.entitlements"; + var args = [ + "--verbose", + "--force", + "-o", + "runtime", + "--sign", + "Developer ID Application: 8bit Solutions LLC", + "--entitlements", + entitlementsPath, + ]; + if (subBuildPath !== "dmg") { + args = [ + "--verbose", + "--force", + "--sign", + subBuildPath === "mas" + ? "3rd Party Mac Developer Application: 8bit Solutions LLC" + : "6B287DD81FF922D86FD836128B0F62F358B38726", + "--entitlements", + entitlementsPath, + ]; + } + + return del([buildPath + "**/*"]) + .then(() => safariCopyAssets(paths.safari + "**/*", buildPath)) + .then(() => safariCopyBuild(paths.build + "**/*", buildPath + "safari/app")) + .then(() => { + const proc = child.spawn("xcodebuild", [ + "-project", + buildPath + "desktop.xcodeproj", + "-alltargets", + "-configuration", + "Release", + ]); + stdOutProc(proc); + return new Promise((resolve) => proc.on("close", resolve)); + }) + .then(() => { + const libs = fs + .readdirSync(builtAppexFrameworkPath) + .filter((p) => p.endsWith(".dylib")) + .map((p) => builtAppexFrameworkPath + p); + const libPromises = []; + libs.forEach((i) => { + const proc = child.spawn("codesign", args.concat([i])); + stdOutProc(proc); + libPromises.push(new Promise((resolve) => proc.on("close", resolve))); + }); + return Promise.all(libPromises); + }) + .then(() => { + const proc = child.spawn("codesign", args.concat([builtAppexPath])); + stdOutProc(proc); + return new Promise((resolve) => proc.on("close", resolve)); + }) + .then( + () => { + return cb; + }, + () => { + return cb; + } + ); +} + +function safariCopyAssets(source, dest) { + return new Promise((resolve, reject) => { + gulp + .src(source) + .on("error", reject) + .pipe(gulpif("safari/Info.plist", replace("0.0.1", manifest.version))) + .pipe( + gulpif("safari/Info.plist", replace("0.0.2", process.env.BUILD_NUMBER || manifest.version)) + ) + .pipe(gulpif("desktop.xcodeproj/project.pbxproj", replace("../../../build", "../safari/app"))) + .pipe(gulp.dest(dest)) + .on("end", resolve); + }); +} + +function safariCopyBuild(source, dest) { + return new Promise((resolve, reject) => { + gulp + .src(source) + .on("error", reject) + .pipe(filter(["**"].concat(filters.fonts))) + .pipe(gulpif("popup/index.html", replace("__BROWSER__", "browser_safari"))) + .pipe( + gulpif( + "manifest.json", + jeditor((manifest) => { + delete manifest.optional_permissions; + manifest.permissions.push("nativeMessaging"); + return manifest; + }) + ) + ) + .pipe(gulp.dest(dest)) + .on("end", resolve); + }); +} + +function stdOutProc(proc) { + proc.stdout.on("data", (data) => console.log(data.toString())); + proc.stderr.on("data", (data) => console.error(data.toString())); +} + +function ciCoverage(cb) { + return gulp + .src(paths.coverage + "**/*") + .pipe(filter(["**", "!coverage/coverage*.zip"])) + .pipe(zip(`coverage${buildString()}.zip`)) + .pipe(gulp.dest(paths.coverage)); +} + +exports["dist:firefox"] = distFirefox; +exports["dist:chrome"] = distChrome; +exports["dist:opera"] = distOpera; +exports["dist:edge"] = distEdge; +exports["dist:safari"] = gulp.parallel(distSafariMas, distSafariMasDev, distSafariDmg); +exports["dist:safari:mas"] = distSafariMas; +exports["dist:safari:masdev"] = distSafariMasDev; +exports["dist:safari:dmg"] = distSafariDmg; +exports.dist = gulp.parallel(distFirefox, distChrome, distOpera, distEdge); +exports["ci:coverage"] = ciCoverage; +exports.ci = ciCoverage; diff --git a/apps/browser/jest.config.js b/apps/browser/jest.config.js new file mode 100644 index 0000000000..025db301eb --- /dev/null +++ b/apps/browser/jest.config.js @@ -0,0 +1,13 @@ +const { pathsToModuleNameMapper } = require("ts-jest"); + +const { compilerOptions } = require("./tsconfig"); + +module.exports = { + collectCoverage: true, + coverageReporters: ["html", "lcov"], + coverageDirectory: "coverage", + preset: "jest-preset-angular", + moduleNameMapper: pathsToModuleNameMapper(compilerOptions?.paths || {}, { + prefix: "/", + }), +}; diff --git a/apps/browser/package.json b/apps/browser/package.json new file mode 100644 index 0000000000..9019d30bad --- /dev/null +++ b/apps/browser/package.json @@ -0,0 +1,20 @@ +{ + "name": "@bitwarden/browser", + "version": "0.0.0", + "scripts": { + "build": "webpack", + "build:watch": "webpack --watch", + "build:prod": "cross-env NODE_ENV=production webpack", + "build:prod:watch": "cross-env NODE_ENV=production webpack --watch", + "dist": "npm run build:prod && gulp dist", + "dist:firefox": "npm run build:prod && gulp dist:firefox", + "dist:opera": "npm run build:prod && gulp dist:opera", + "dist:safari": "npm run build:prod && gulp dist:safari", + "dist:safari:mas": "npm run build:prod && gulp dist:safari:mas", + "dist:safari:masdev": "npm run build:prod && gulp dist:safari:masdev", + "dist:safari:dmg": "npm run build:prod && gulp dist:safari:dmg", + "test": "jest", + "test:watch": "jest --watch", + "test:watch:all": "jest --watchAll" + } +} diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json new file mode 100644 index 0000000000..745c3e5e95 --- /dev/null +++ b/apps/browser/src/_locales/az/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Ödənişsiz Parol Meneceri", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bütün cihazlarınız üçün təhlükəsiz və ödənişsiz bir parol meneceri.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Müəssisə üçün tək daxil olma" + }, + "cancel": { + "message": "İmtina" + }, + "close": { + "message": "Bağla" + }, + "submit": { + "message": "Göndər" + }, + "emailAddress": { + "message": "E-poçt ünvanı" + }, + "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)" + }, + "tab": { + "message": "Vərəq" + }, + "myVault": { + "message": "Anbarım" + }, + "tools": { + "message": "Alətlər" + }, + "settings": { + "message": "Tənzimləmələr" + }, + "currentTab": { + "message": "Hazırkı vərəq" + }, + "copyPassword": { + "message": "Parolu kopyala" + }, + "copyNote": { + "message": "Qeydi kopyala" + }, + "copyUri": { + "message": "URI-ni kopyala" + }, + "copyUsername": { + "message": "İstifadəçi adını kopyala" + }, + "copyNumber": { + "message": "Nömrəni kopyala" + }, + "copySecurityCode": { + "message": "Təhlükəsizlik kodunu kopyala" + }, + "autoFill": { + "message": "Avto-doldurma" + }, + "generatePasswordCopied": { + "message": "Parol yarat (kopyalandı)" + }, + "copyElementIdentifier": { + "message": "Özəl sahə adını kopyala" + }, + "noMatchingLogins": { + "message": "Uyğun gələn hesab yoxdur." + }, + "unlockVaultMenu": { + "message": "Anbarın kilidini açın" + }, + "loginToVaultMenu": { + "message": "Anbarınıza giriş edin" + }, + "autoFillInfo": { + "message": "Hazırkı səyyah vərəqi üçün avto-doldurulacaq giriş məlumatları yoxdur." + }, + "addLogin": { + "message": "Hesab əlavə et" + }, + "addItem": { + "message": "Element əlavə et" + }, + "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" + }, + "continue": { + "message": "Davam" + }, + "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." + }, + "account": { + "message": "Hesab" + }, + "changeMasterPassword": { + "message": "Ana parolu dəyişdir" + }, + "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." + }, + "twoStepLogin": { + "message": "İki mərhələli giriş" + }, + "logOut": { + "message": "Çıxış" + }, + "about": { + "message": "Haqqında" + }, + "version": { + "message": "Versiya" + }, + "save": { + "message": "Saxla" + }, + "move": { + "message": "Daşı" + }, + "addFolder": { + "message": "Qovluq əlavə et" + }, + "name": { + "message": "Ad" + }, + "editFolder": { + "message": "Qovluğa düzəliş et" + }, + "deleteFolder": { + "message": "Qovluğu sil" + }, + "folders": { + "message": "Qovluqlar" + }, + "noFolders": { + "message": "Siyahılanacaq heç bir qovluq yoxdur." + }, + "helpFeedback": { + "message": "Kömək və əks əlaqə" + }, + "sync": { + "message": "Eyniləşdirmə" + }, + "syncVaultNow": { + "message": "Anbarı indi eyniləşdir" + }, + "lastSync": { + "message": "Son eyniləşdirmə:" + }, + "passGen": { + "message": "Parol yaradıcı" + }, + "generator": { + "message": "Yaradıcı", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Hesablarınız üçün avtomatik olaraq güclü, unikal parollar yaradın." + }, + "bitWebVault": { + "message": "Bitwarden veb anbarı" + }, + "importItems": { + "message": "Elementləri idxal et" + }, + "select": { + "message": "Seçin" + }, + "generatePassword": { + "message": "Parol yarat" + }, + "regeneratePassword": { + "message": "Parolu yenidən yarat" + }, + "options": { + "message": "Seçimlər" + }, + "length": { + "message": "Uzunluq" + }, + "uppercase": { + "message": "Böyük hərf (A-Z)" + }, + "lowercase": { + "message": "Kiçik hərf (a-z)" + }, + "numbers": { + "message": "Rəqəmlər (0-9)" + }, + "specialCharacters": { + "message": "Xüsusi simvollar (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Minimum rəqəm" + }, + "minSpecial": { + "message": "Minimum simvol" + }, + "avoidAmbChar": { + "message": "Anlaşılmaz simvollardan çəkinin" + }, + "searchVault": { + "message": "Anbarda axtar" + }, + "edit": { + "message": "Düzəliş et" + }, + "view": { + "message": "Bax" + }, + "noItemsInList": { + "message": "Siyahılanacaq heç bir element yoxdur." + }, + "itemInformation": { + "message": "Element məlumatları" + }, + "username": { + "message": "İstifadəçi adı" + }, + "password": { + "message": "Parol" + }, + "passphrase": { + "message": "Uzun ifadə" + }, + "favorite": { + "message": "Sevimli" + }, + "notes": { + "message": "Qeydlər" + }, + "note": { + "message": "Qeyd" + }, + "editItem": { + "message": "Elementə düzəliş et" + }, + "folder": { + "message": "Qovluq" + }, + "deleteItem": { + "message": "Elementi sil" + }, + "viewItem": { + "message": "Elementə bax" + }, + "launch": { + "message": "Başlat" + }, + "website": { + "message": "Veb sayt" + }, + "toggleVisibility": { + "message": "Görünməni aç/bağla" + }, + "manage": { + "message": "İdarə et" + }, + "other": { + "message": "Digər" + }, + "rateExtension": { + "message": "Genişləndirməni qiymətləndir" + }, + "rateExtensionDesc": { + "message": "Gözəl bir rəy ilə bizə dəstək ola bilərsiniz!" + }, + "browserNotSupportClipboard": { + "message": "Veb səyyahınız lövhəyə kopyalamağı dəstəkləmir. Əvəzində əllə kopyalayın." + }, + "verifyIdentity": { + "message": "Kimliyi təsdiqləyin" + }, + "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" + }, + "vaultTimeout": { + "message": "Anbara müraciət bitəcək" + }, + "lockNow": { + "message": "İndi kilidlə" + }, + "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" + }, + "onLocked": { + "message": "Sistem kilidlənəndə" + }, + "onRestart": { + "message": "Səyyah yenidən başladılanda" + }, + "never": { + "message": "Heç vaxt" + }, + "security": { + "message": "Təhlükəsizlik" + }, + "errorOccurred": { + "message": "Bir xəta baş verdi" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Təsdiq kodu lazımdır." + }, + "invalidVerificationCode": { + "message": "Etibarsız təsdiqləmə kodu" + }, + "valueCopied": { + "message": "$VALUE$ kopyalandı", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Bu səhifədə seçilən element avto-doldurulmur. Əvəzində məlumatları kopyalayıb yapışdırın." + }, + "loggedOut": { + "message": "Çıxış edildi" + }, + "loginExpired": { + "message": "Seansın müddəti bitdi." + }, + "logOutConfirmation": { + "message": "Çıxış etmək istədiyinizə əminsiniz?" + }, + "yes": { + "message": "Bəli" + }, + "no": { + "message": "Xeyr" + }, + "unexpectedError": { + "message": "Gözlənilməz bir səhv baş verdi" + }, + "nameRequired": { + "message": "Ad lazımdır." + }, + "addedFolder": { + "message": "Qovluq əlavə edildi" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Qovluğa düzəliş edildi" + }, + "deleteFolderConfirmation": { + "message": "Bu qovluğu silmək istədiyinizə əminsiniz?" + }, + "deletedFolder": { + "message": "Qovluq silindi" + }, + "gettingStartedTutorial": { + "message": "Başlanğıc təlimatı" + }, + "gettingStartedTutorialVideo": { + "message": "Səyyah genişləndirməsindən necə daha yaxşı faydalanmağı öyrənmək üçün başlanğıc təlimatına baxa bilərsiniz." + }, + "syncingComplete": { + "message": "Eyniləşdirmə tamamlandı" + }, + "syncingFailed": { + "message": "Uğursuz eyniləşdirmə" + }, + "passwordCopied": { + "message": "Parol kopyalandı" + }, + "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" + }, + "addedItem": { + "message": "Element əlavə edildi" + }, + "editedItem": { + "message": "Elementə düzəliş edildi" + }, + "deleteItemConfirmation": { + "message": "Həqiqətən tullantı qutusuna göndərmək istəyirsiniz?" + }, + "deletedItem": { + "message": "Element tullantı qutusuna göndərildi" + }, + "overwritePassword": { + "message": "Parolun üzərinə yaz" + }, + "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?" + }, + "searchFolder": { + "message": "Qovluq axtar" + }, + "searchCollection": { + "message": "Kolleksiya axtar" + }, + "searchType": { + "message": "Axtarış növü" + }, + "noneFolder": { + "message": "Qovluq yoxdur", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "\"Hesab əlavə et\" bildirişini sıradan çıxart" + }, + "addLoginNotificationDesc": { + "message": "\"Hesab əlavə et bildirişi\", ilk dəfə giriş edəndə yeni giriş məlumatlarını anbarda saxlamaq istəyib-istəmədiyinizi avtomatik olaraq soruşur." + }, + "dontShowCardsCurrentTab": { + "message": "Vərəq səhifəsində kartları göstərmə" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Anbarınızdakı kart elementləri, avto-doldurma müraciətini asanlaşdırmaq üçün \"Hazırkı vərəq\" səhifəsində siyahılanır." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Vərəq səhifəsində kimlikləri göstərmə" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Anbarınızdakı kimlik elementləri, avto-doldurma müraciətini asanlaşdırmaq üçün \"Hazırkı vərəq\" səhifəsində siyahılanır." + }, + "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." + }, + "notificationAddDesc": { + "message": "Bitwarden sizin üçün bu parolu xatırlasın?" + }, + "notificationAddSave": { + "message": "Bəli, indi saxla" + }, + "disableChangedPasswordNotification": { + "message": "\"Parol dəyişdirildi\" bildirişini sıradan çıxart" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Parol dəyişdirildi bildirişi\", bir veb saytında parolu dəyişdirdiyinizi aşkarlayanda, anbarınızda qeyd etdiyiniz parolu yeniləməyinizi avtomatik olaraq soruşur." + }, + "notificationChangeDesc": { + "message": "Bu parolu \"Bitwarden\"də yeniləmək istəyirsiniz?" + }, + "notificationChangeSave": { + "message": "Bəli, indi yenilə" + }, + "disableContextMenuItem": { + "message": "Kontekst menyu seçimlərini sıradan çıxart" + }, + "disableContextMenuItemDesc": { + "message": "Kontekst menyu seçimləri, hazırkı vərəqinizdə veb sayt üçün parol yaratma və giriş etmə əməliyyatlarına cəld müraciəti təmin edir." + }, + "defaultUriMatchDetection": { + "message": "İlkin URI uyğunluq aşkarlaması", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Avto-doldurma kimi əməliyyatları icra edərkən giriş etmə prosesi üçün URI uyğunluq aşkarlamasının ilkin yolunu seçin." + }, + "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" + }, + "solarizedDark": { + "message": "Günəşli tünd", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Anbar verilənlərinizi ixrac etmək üçün ana parolunuzu daxil edin." + }, + "shared": { + "message": "Paylaşılan" + }, + "learnOrg": { + "message": "Təşkilatlar barədə daha ətraflı" + }, + "learnOrgConfirmation": { + "message": "Bitwarden, bir təşkilat hesabı istifadə edərək anbar elementlərinizi başqaları ilə paylaşmağınıza icazə verər. Daha ətraflı məlumat üçün bitwarden.com saytını ziyarət etmək istəyirsiniz?" + }, + "moveToOrganization": { + "message": "Təşkilata daşı" + }, + "share": { + "message": "Paylaş" + }, + "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." + }, + "learnMore": { + "message": "Daha ətraflı" + }, + "authenticatorKeyTotp": { + "message": "Kimlik təsdiqləyici açarı (TOTP)" + }, + "verificationCodeTotp": { + "message": "Təsdiqləmə kodu (TOTP)" + }, + "copyVerificationCode": { + "message": "Təsdiqləmə kodunu kopyala" + }, + "attachments": { + "message": "Qoşmalar" + }, + "deleteAttachment": { + "message": "Qoşmanı sil" + }, + "deleteAttachmentConfirmation": { + "message": "Bu qoşmanı silmək istədiyinizə əminsiniz?" + }, + "deletedAttachment": { + "message": "Qoşma silindi" + }, + "newAttachment": { + "message": "Yeni qoşma əlavə et" + }, + "noAttachments": { + "message": "Qoşma yoxdur." + }, + "attachmentSaved": { + "message": "Qoşma saxlanıldı." + }, + "file": { + "message": "Fayl" + }, + "selectFile": { + "message": "Fayl seçin." + }, + "maxFileSize": { + "message": "Maksimal fayl həcmi 500 MB-dır" + }, + "featureUnavailable": { + "message": "Özəllik əlçatmazdır" + }, + "updateKey": { + "message": "Şifrələmə açarınızı yeniləyənə qədər bu özəlliyi istifadə edə bilməzsiniz." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "Fayl qoşmaları üçün 1 GB şifrələnmiş saxlama sahəsi" + }, + "ppremiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F və Duo kimi iki mərhələli giriş seçimləri" + }, + "ppremiumSignUpReports": { + "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ı." + }, + "ppremiumSignUpTotp": { + "message": "Anbarınızdakı hesablar üçün TOTP təsdiqləmə kodu (2FA) yaradıcısı." + }, + "ppremiumSignUpSupport": { + "message": "Prioritet müştəri dəstəyi." + }, + "ppremiumSignUpFuture": { + "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ı" + }, + "disableAutoTotpCopy": { + "message": "Avtomatik TOTP kopyalamasını sıradan çıxart" + }, + "disableAutoTotpCopyDesc": { + "message": "Hesabınıza əlavə edilən kimlik təsdiqləyici açarı varsa, giriş məlumatları avto-doldurulanda TOTP təsdiqləmə kodu da avtomatik olaraq lövhəyə kopyalanacaq." + }, + "disableAutoBiometricsPrompt": { + "message": "Açılışda biometrik üçün soruşma" + }, + "premiumRequired": { + "message": "Premium üzvlük lazımdır" + }, + "premiumRequiredDesc": { + "message": "Bu özəlliyi istifadə etmək üçün premium üzvlük lazımdır." + }, + "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." + }, + "webAuthnNewTab": { + "message": "WebAuthn 2FA təsdiqləməsini başladın. Yeni bir vərəq açmaq üçün aşağıdakı düyməyə klikləyin və yeni vərəqdəki təlimatları izləyin." + }, + "webAuthnNewTabOpen": { + "message": "Yeni vərəq aç" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn təsdiqləmə" + }, + "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 səyyah tərəfindən dəstəklənmir." + }, + "noTwoStepProviders2": { + "message": "Zəhmət olmasa (Chrome kimi) dəstəklənən bir veb səyyah istifadə edin və/və ya veb səyyahlara (kimlik təsdiqləyici tətbiq kimi) daha yaxşı dəstəklənən təchizatçılar əlavə edin." + }, + "twoStepOptions": { + "message": "İki mərhələli giriş seçimləri" + }, + "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." + }, + "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ı." + }, + "enableAutoFillOnPageLoad": { + "message": "Səhifə yüklənəndə avto-doldurmanı fəallaşdır" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Giriş formu aşkarlananda, səhifə yüklənən zaman formu avto-doldurma icra edilsin." + }, + "experimentalFeature": { + "message": "Bu, hazırda təcrübi bir özəllikdir. İstifadə zamanı riski sizə aiddir." + }, + "defaultAutoFillOnPageLoad": { + "message": "Giriş məlumatları üçün ilkin avto-doldurma tənzimləməsi" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "\"Səhifə yüklənəndə avto-doldur\"u fəal etdikdən sonra, fərdi giriş elementləri üçün özəlliyi fəallaşdıra və ya sıradan çıxarda bilərsiniz. Bu ayrı-ayrı konfiqurasiya edilməmiş giriş elementləri üçün ilkin tənzimləmədir." + }, + "itemAutoFillOnPageLoad": { + "message": "Səhifə yüklənəndə avto-doldur (Seçimlərdə fəallaşdırılıbsa)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "İlkin tənzimləməni istifadə et" + }, + "autoFillOnPageLoadYes": { + "message": "Səhifə yüklənəndə avto-doldur" + }, + "autoFillOnPageLoadNo": { + "message": "Səhifə yüklənəndə avto-doldurma" + }, + "commandOpenPopup": { + "message": "Anbar açılan pəncərədə aç" + }, + "commandOpenSidebar": { + "message": "Anbar yan sətirdə aç" + }, + "commandAutofillDesc": { + "message": "Hazırkı veb sayt üçün son istifadə edilən giriş məlumatlarını avto-doldur" + }, + "commandGeneratePasswordDesc": { + "message": "Təsadüfi yeni bir parol yarat və lövhəyə kopyala" + }, + "commandLockVaultDesc": { + "message": "Anbarı kilidlə" + }, + "privateModeWarning": { + "message": "Gizli rejim dəstəyi təcrübidir və bəzi özəlliklər limitlidir." + }, + "customFields": { + "message": "Özəl sahələr" + }, + "copyValue": { + "message": "Dəyəri kopyala" + }, + "value": { + "message": "Dəyər" + }, + "newCustomField": { + "message": "Yeni özəl sahə" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Əlaqəli dəyər", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Təsdiqləmə kodunu alacağınız e-poçtu yoxlamaq üçün bu pəncərə xaricində bir yerə klikləsəniz bu pəncərə bağlanacaq. Bu pəncərənin bağlanmaması üçün yeni bir pəncərədə açmaq istəyirsiniz?" + }, + "popupU2fCloseMessage": { + "message": "Bu səyyah bu açılan pəncərədə U2F tələblərini emal edə bilmir. U2F istifadə edərək giriş etmək üçün bu açılan pəncərəni yeni bir pəncərədə açmaq istəyirsiniz?" + }, + "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." + }, + "disableBadgeCounter": { + "message": "Nişan sayğacını sıradan çıxart" + }, + "disableBadgeCounterDesc": { + "message": "Nişan sayğacı, anbarınızdakı hazırkı səhifə üçün neçə dəfə giriş etdiyinizi göstərir." + }, + "cardholderName": { + "message": "Kart sahibinin adı" + }, + "number": { + "message": "Nömrə" + }, + "brand": { + "message": "Brend" + }, + "expirationMonth": { + "message": "Son istifadə ayı" + }, + "expirationYear": { + "message": "Son istifadə ili" + }, + "expiration": { + "message": "Bitmə vaxtı" + }, + "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" + }, + "securityCode": { + "message": "Təhlükəsizlik kodu" + }, + "ex": { + "message": "məs." + }, + "title": { + "message": "Başlıq" + }, + "mr": { + "message": "Cənab" + }, + "mrs": { + "message": "Xanım" + }, + "ms": { + "message": "Hörmətli" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Ad" + }, + "middleName": { + "message": "Orta ad" + }, + "lastName": { + "message": "Soyad" + }, + "fullName": { + "message": "Tam ad" + }, + "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" + }, + "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ə" + }, + "type": { + "message": "Növ" + }, + "typeLogin": { + "message": "Giriş" + }, + "typeLogins": { + "message": "Girişlər" + }, + "typeSecureNote": { + "message": "Təhlükəsizlik qeydi" + }, + "typeCard": { + "message": "Kart" + }, + "typeIdentity": { + "message": "Kimlik" + }, + "passwordHistory": { + "message": "Parol tarixçəsi" + }, + "back": { + "message": "Geri" + }, + "collections": { + "message": "Kolleksiyalar" + }, + "favorites": { + "message": "Sevimlilər" + }, + "popOutNewWindow": { + "message": "Yeni bir pəncərədə aç" + }, + "refresh": { + "message": "Təzələ" + }, + "cards": { + "message": "Kartlar" + }, + "identities": { + "message": "Kimliklər" + }, + "logins": { + "message": "Girişlər" + }, + "secureNotes": { + "message": "Təhlükəsizlik qeydləri" + }, + "clear": { + "message": "Təmizlə", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Hazırkı URI-ləri aç/bağla", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Hazırkı URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Təşkilat", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Növlər" + }, + "allItems": { + "message": "Bütün elementlər" + }, + "noPasswordsInList": { + "message": "Siyahılanacaq heç bir parol yoxdur." + }, + "remove": { + "message": "Çıxart" + }, + "default": { + "message": "İlkin" + }, + "dateUpdated": { + "message": "Yeniləndi", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parol yeniləndi", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "\"Heç vaxt\" seçimini istifadə etmək istədiyinizə əminsiniz? Kilid seçimini \"Heç vaxt\" olaraq tənzimləsəniz, anbarınızın şifrələmə açarı cihazınızda saxlanılacaq. Bu seçimi istifadə etsəniz, cihazınızı daha yaxşı mühafizə etməlisiniz." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Biometriklərlə kilidi açın" + }, + "awaitDesktop": { + "message": "Masaüstündən təsdiq gözlənilir" + }, + "awaitDesktopDesc": { + "message": "Səyyah üçün biometrikləri fəallaşdırmaq üçün zəhmət olmasa Bitwarden masaüstü tətbiqində biometrik istifadəsini təsdiqləyin." + }, + "lockWithMasterPassOnRestart": { + "message": "Səyyah yenidən başladılanda ana parol ilə kilidlə" + }, + "selectOneCollection": { + "message": "Ən azı bir kolleksiya seçməlisiniz." + }, + "cloneItem": { + "message": "Elementi klonla" + }, + "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ı" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Avto-doldur və saxla" + }, + "autoFillSuccessAndSavedUri": { + "message": "Element avto-dolduruldu və URI saxlanıldı" + }, + "autoFillSuccess": { + "message": "Element avto-dolduruldu" + }, + "setMasterPassword": { + "message": "Ana parolu tənzimlə" + }, + "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." + }, + "termsOfService": { + "message": "Xidmət Şərtləri" + }, + "privacyPolicy": { + "message": "Gizlilik Siyasəti" + }, + "hintEqualsPassword": { + "message": "Parol məsləhəti, parolunuzla eyni ola bilməz." + }, + "ok": { + "message": "Oldu" + }, + "desktopSyncVerificationTitle": { + "message": "Masaüstü eyniləşdirmə təsdiqləməsi" + }, + "desktopIntegrationVerificationText": { + "message": "Zəhmət olmasa masaüstü tətbiqin bu barmaq izini gördüyünü təsdiqləyin:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Səyyah inteqrasiyası fəal deyil" + }, + "desktopIntegrationDisabledDesc": { + "message": "Səyyah inteqrasiyası Bitwarden masaüstü tətbiqində fəal deyil. Zəhmət olmasa masaüstü tətbiqinin tənzimləmələrində fəallaşdırın." + }, + "startDesktopTitle": { + "message": "Bitwarden masaüstü tətbiqini başlat" + }, + "startDesktopDesc": { + "message": "Bu funksiyanın istifadə edilə bilməsi üçün Bitwarden masaüstü tətbiqi başladılmalıdır." + }, + "errorEnableBiometricTitle": { + "message": "Biometriklər fəallaşdırıla bilmədi" + }, + "errorEnableBiometricDesc": { + "message": "Əməliyyat, masaüstü tətbiqi tərəfindən ləğv edildi" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Masaüstü tətbiqi, təhlükəsiz rabitə kanalını qüvvədən saldı. Bu əməliyyatı yenidən icra edin" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Masaüstü rabitə əlaqəsi kəsildi" + }, + "nativeMessagingWrongUserDesc": { + "message": "Masaüstü tətbiqdə fərqli bir hesabla giriş edilib. Hər iki tətbiqin eyni hesabla giriş etdiyinə əmin olun." + }, + "nativeMessagingWrongUserTitle": { + "message": "Hesablar uyğunlaşmır" + }, + "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." + }, + "biometricsNotSupportedTitle": { + "message": "Biometriklər dəstəklənmir" + }, + "biometricsNotSupportedDesc": { + "message": "Səyyah biometrikləri bu cihazda dəstəklənmir" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "İcazə verilmədi" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bitwarden masaüstü tətbiqi ilə əlaqə qurma icazəsi olmadan, səyyah genişləndirməsində biometrikləri təmin edə bilmərik. Zəhmət olmasa yenidən sınayın." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "İcazə tələb xətası" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Bu əməliyyatı yan sətirdən edə bilməzsiniz. Zəhmət olmasa açılan pəncərədə yenidən cəhd edin." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Bir təşkilat siyasəti, sahiblik seçimlərinizə təsir edir." + }, + "excludedDomains": { + "message": "İstisna edilən domenlər" + }, + "excludedDomainsDesc": { + "message": "Bitwarden bu domenlər üçün giriş təfsilatlarını saxlamağı soruşmayacaq. Dəyişikliklərin təsirli olması üçün səhifəni təzələməlisiniz." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ etibarlı bir domen deyil", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "addSend": { + "message": "\"Send\" əlavə et", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Mətn" + }, + "sendTypeFile": { + "message": "Fayl" + }, + "allSends": { + "message": "Bütün \"Send\"lər", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maksimal müraciət sayına çatıldı", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Müddəti bitib" + }, + "pendingDeletion": { + "message": "Silinməsi gözlənilir" + }, + "passwordProtected": { + "message": "Parolla qorunan" + }, + "copySendLink": { + "message": "\"Send\" bağlantısını kopyala", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Parolu çıxart" + }, + "delete": { + "message": "Sil" + }, + "removedPassword": { + "message": "Parol çıxarıldı" + }, + "deletedSend": { + "message": "Send silindi", + "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." + }, + "disabled": { + "message": "Sıradan çıxarıldı" + }, + "removePasswordConfirmation": { + "message": "Parolu çıxartmaq istədiyinizə əminsiniz?" + }, + "deleteSend": { + "message": "\"Send\"i sil", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Bu \"Send\"i açıqlayan bir ad.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Göndərmək istədiyiniz fayl." + }, + "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." + }, + "oneDay": { + "message": "1 gün" + }, + "days": { + "message": "$DAYS$ gün", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Özəl" + }, + "maximumAccessCount": { + "message": "Maksimal müraciət sayı" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Saxladıqdan sonra \"Send\"in 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." + }, + "sendTextDesc": { + "message": "Göndərmək istədiyiniz mətn" + }, + "sendHideText": { + "message": "Bu \"Send\"in mətnini ilkin olaraq gizlət", + "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ı" + }, + "createSend": { + "message": "Yeni \"Send\" yarat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Yeni parol" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Fayl seçmək üçün (mümkünsə) genişləndirməni yan sətirdə açın və ya bu bannerə klikləyərək yeni bir pəncərədə açın." + }, + "sendFirefoxFileWarning": { + "message": "Firefox istifadə edərək fayl seçmək üçün genişləndirməni yan sətirdə açın və ya bu bannerə klikləyərək yeni bir pəncərədə açın." + }, + "sendSafariFileWarning": { + "message": "Safari istifadə edərək fayl seçmək üçün bu bannerə klikləyərək yeni bir pəncərədə açın." + }, + "sendFileCalloutHeader": { + "message": "Başlamazdan əvvəl" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Təqvim stilində tarix seçici istifadə etmək üçün", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "bura klikləyin", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "yeni bir pəncərə açın.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Göstərilən son istifadə tarixi etibarsızdır." + }, + "deletionDateIsInvalid": { + "message": "Göstərilən silinmə tarixi etibarsızdır." + }, + "expirationDateAndTimeRequired": { + "message": "Son istifadə tarixi və vaxtı lazımdır." + }, + "deletionDateAndTimeRequired": { + "message": "Silinmə tarixi və vaxtı lazımdır." + }, + "dateParsingError": { + "message": "Silinmə və son istifadə tarixlərini saxlayarkən xəta baş verdi." + }, + "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." + }, + "passwordPrompt": { + "message": "Ana parolu təkrar soruş" + }, + "passwordConfirmation": { + "message": "Ana parol 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." + }, + "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. E-poçtunuzu veb anbarında təsdiqləyə bilərsiniz." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Qovluq seçin..." + }, + "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." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Anbar vaxt bitişi, təşkilatınız tərəfindən tənzimlənən məhdudiyyətləri aşır." + }, + "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." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Etibarlı form elementi müəyyənləşdirilə bilmir. Bunun əvəzinə HTML-i nəzərdən keçirməyi sınayın." + }, + "copyCustomFieldNameNotUnique": { + "message": "Unikal identifikator tapılmadı." + }, + "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" + }, + "removeMasterPassword": { + "message": "Ana parolu sil" + }, + "removedMasterPassword": { + "message": "Ana parol silindi." + }, + "leaveOrganizationConfirmation": { + "message": "Bu təşkilatı tərk etmək istədiyinizə əminsiniz?" + }, + "leftOrganization": { + "message": "Təşkilatı tərk etdiniz." + }, + "toggleCharacterCount": { + "message": "Simvol sayını dəyişdir" + }, + "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" + } + } + }, + "error": { + "message": "Xəta" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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ı" + }, + "whatWouldYouLikeToGenerate": { + "message": "Nə yaratmaq istəyirsiniz?" + }, + "passwordType": { + "message": "Parol növü" + }, + "service": { + "message": "Xidmət" + } +} diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json new file mode 100644 index 0000000000..783a137ddd --- /dev/null +++ b/apps/browser/src/_locales/be/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden – бясплатны менеджар пароляў", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Бяспечны і бясплатны менеджар пароляў для ўсіх вашых прылад.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Увайдзіце або стварыце новы ўліковы запіс для доступу да бяспечнага сховішча." + }, + "createAccount": { + "message": "Стварыць уліковы запіс" + }, + "login": { + "message": "Увайсці" + }, + "enterpriseSingleSignOn": { + "message": "Адзіны ўваход у карпаратыўную сістэму (SSO)." + }, + "cancel": { + "message": "Скасаваць" + }, + "close": { + "message": "Закрыць" + }, + "submit": { + "message": "Адправіць" + }, + "emailAddress": { + "message": "Адрас эл. пошты" + }, + "masterPass": { + "message": "Асноўны пароль" + }, + "masterPassDesc": { + "message": "Асноўны пароль — ключ да вашага бяспечнага сховішча. Ён вельмі важны, таму не забывайце яго. Аднавіць асноўны пароль немагчыма." + }, + "masterPassHintDesc": { + "message": "Падказка да асноўнага пароля можа дапамагчы вам яго ўспомніць." + }, + "reTypeMasterPass": { + "message": "Увядзіце асноўны пароль паўторна" + }, + "masterPassHint": { + "message": "Падказка да асноўнага пароля (неабавязкова)" + }, + "tab": { + "message": "Укладка" + }, + "myVault": { + "message": "Маё сховішча" + }, + "tools": { + "message": "Інструменты" + }, + "settings": { + "message": "Налады" + }, + "currentTab": { + "message": "Бягучая ўкладка" + }, + "copyPassword": { + "message": "Капіяваць пароль" + }, + "copyNote": { + "message": "Капіяваць нататку" + }, + "copyUri": { + "message": "Капіяваць URI" + }, + "copyUsername": { + "message": "Капіяваць імя карыстальніка" + }, + "copyNumber": { + "message": "Капіяваць нумар" + }, + "copySecurityCode": { + "message": "Капіяваць код бяспекі" + }, + "autoFill": { + "message": "Аўтазапаўненне" + }, + "generatePasswordCopied": { + "message": "Стварыць пароль (з капіяваннем)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "Няма падыходных уліковых даных." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "Няма ўліковых даных, даступных для аўтазапаўнення ў бягучую ўкладку браўзера." + }, + "addLogin": { + "message": "Дадаць ўліковыя даныя" + }, + "addItem": { + "message": "Дадаць элемент" + }, + "passwordHint": { + "message": "Падказка да пароля" + }, + "enterEmailToGetHint": { + "message": "Увядзіце адрас электроннай пошты ўліковага запісу для атрымання падказкі для асноўнага пароля." + }, + "getMasterPasswordHint": { + "message": "Атрымаць падказку для асноўнага пароля" + }, + "continue": { + "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." + }, + "account": { + "message": "Уліковы запіс" + }, + "changeMasterPassword": { + "message": "Змяніць асноўны пароль" + }, + "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." + }, + "twoStepLogin": { + "message": "Двухэтапны ўваход" + }, + "logOut": { + "message": "Выйсці" + }, + "about": { + "message": "Пра Bitwarden" + }, + "version": { + "message": "Версія" + }, + "save": { + "message": "Захаваць" + }, + "move": { + "message": "Перамясціць" + }, + "addFolder": { + "message": "Дадаць папку" + }, + "name": { + "message": "Назва" + }, + "editFolder": { + "message": "Рэдагаваць папку" + }, + "deleteFolder": { + "message": "Выдаліць папку" + }, + "folders": { + "message": "Папкі" + }, + "noFolders": { + "message": "Няма элементаў для паказу." + }, + "helpFeedback": { + "message": "Даведка і зваротная сувязь" + }, + "sync": { + "message": "Сінхранізаваць" + }, + "syncVaultNow": { + "message": "Сінхранізаваць сховішча зараз" + }, + "lastSync": { + "message": "Апошняя сінхранізацыя:" + }, + "passGen": { + "message": "Генератар пароляў" + }, + "generator": { + "message": "Згенерыраваць", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Аўтаматычна ствараць моцныя, унікальныя паролі для вашых уліковых даных." + }, + "bitWebVault": { + "message": "Вэб-сховішча Bitwarden" + }, + "importItems": { + "message": "Імпарт элементаў" + }, + "select": { + "message": "Выбраць" + }, + "generatePassword": { + "message": "Стварыць пароль" + }, + "regeneratePassword": { + "message": "Стварыць новы пароль" + }, + "options": { + "message": "Параметры" + }, + "length": { + "message": "Даўжыня" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "Колькасць слоў" + }, + "wordSeparator": { + "message": "Раздзяляльнік слоў" + }, + "capitalize": { + "message": "З вялікай літары", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Уключыць лічбу" + }, + "minNumbers": { + "message": "Мін. колькасць лічбаў" + }, + "minSpecial": { + "message": "Мін. колькасць сімвалаў" + }, + "avoidAmbChar": { + "message": "Пазбягаць неадназначных сімвалаў" + }, + "searchVault": { + "message": "Пошук у сховішчы" + }, + "edit": { + "message": "Рэдагаваць" + }, + "view": { + "message": "Выгляд" + }, + "noItemsInList": { + "message": "Няма элементаў для паказу." + }, + "itemInformation": { + "message": "Звесткі аб элеменце" + }, + "username": { + "message": "Імя карыстальніка" + }, + "password": { + "message": "Пароль" + }, + "passphrase": { + "message": "Парольная фраза" + }, + "favorite": { + "message": "Абраны" + }, + "notes": { + "message": "Нататкі" + }, + "note": { + "message": "Нататкі" + }, + "editItem": { + "message": "Рэдагаванне элемента" + }, + "folder": { + "message": "Папка" + }, + "deleteItem": { + "message": "Выдаліць элемент" + }, + "viewItem": { + "message": "Прагляд элемента" + }, + "launch": { + "message": "Запусціць" + }, + "website": { + "message": "Вэб-сайт" + }, + "toggleVisibility": { + "message": "Пераключыць бачнасць" + }, + "manage": { + "message": "Кіраваць" + }, + "other": { + "message": "Iншае" + }, + "rateExtension": { + "message": "Ацаніць пашырэнне" + }, + "rateExtensionDesc": { + "message": "Падумайце аб тым, каб дапамагчы нам, напісаўшы добрым водгукам!" + }, + "browserNotSupportClipboard": { + "message": "Ваш вэб-браўзер не падтрымлівае капіяванне даных у буфер абмену. Скапіюйце іх уручную." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "yourVaultIsLocked": { + "message": "Ваша сховішча заблакіравана. Каб працягнуць, увядзіце асноўны пароль." + }, + "unlock": { + "message": "Разблакіраваць" + }, + "loggedInAsOn": { + "message": "Выкананы ўваход на $HOSTNAME$ як $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Памылковы асноўны пароль" + }, + "vaultTimeout": { + "message": "Тайм-аўт сховішча" + }, + "lockNow": { + "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 гадзіны" + }, + "onLocked": { + "message": "Разам з камп'ютарам" + }, + "onRestart": { + "message": "Пры перазапуску браўзера" + }, + "never": { + "message": "Ніколі" + }, + "security": { + "message": "Бяспека" + }, + "errorOccurred": { + "message": "Адбылася памылка" + }, + "emailRequired": { + "message": "Патрабуецца адрас электроннай пошты." + }, + "invalidEmail": { + "message": "Памылковы адрас электроннай пошты." + }, + "masterPassRequired": { + "message": "Патрабуецца асноўны пароль." + }, + "masterPassLength": { + "message": "Асноўны пароль павінен быць даўжынёй не менш за 8 сімвалаў." + }, + "masterPassDoesntMatch": { + "message": "Асноўныя паролі не супадаюць." + }, + "newAccountCreated": { + "message": "Ваш уліковы запіс створаны! Вы можаце ўвайсці." + }, + "masterPassSent": { + "message": "Мы адправілі вам на электронную пошту падказку для асноўнага пароля." + }, + "verificationCodeRequired": { + "message": "Патрабуецца код праверкі." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ скапіяваны(-а)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Не ўдаецца аўтаматычна запоўніць выбраны элемент на гэтай старонцы. Скапіюйце і ўстаўце інфармацыю ўручную." + }, + "loggedOut": { + "message": "Вы выйшлі са сховішча" + }, + "loginExpired": { + "message": "Скончыўся тэрмін дзеяння вашага сеансу." + }, + "logOutConfirmation": { + "message": "Вы ўпэўнены, што хочаце выйсці?" + }, + "yes": { + "message": "Так" + }, + "no": { + "message": "Не" + }, + "unexpectedError": { + "message": "Адбылася нечаканая памылка." + }, + "nameRequired": { + "message": "Патрэбна назва." + }, + "addedFolder": { + "message": "Папка дададзена" + }, + "changeMasterPass": { + "message": "Змяніць асноўны пароль" + }, + "changeMasterPasswordConfirmation": { + "message": "Вы можаце змяніць свой асноўны пароль на bitwarden.com. Перайсці на сайт зараз?" + }, + "twoStepLoginConfirmation": { + "message": "Двухэтапны ўваход робіць ваш уліковы запіс больш бяспечным, патрабуючы пацвярджэння ўваходу на іншай прыладзе, напрыклад, ключом бяспекі, праграмай для праверкі бяспекі, SMS, тэлефонным выклікам або электроннай поштай. Двухэтапны ўваход уключаецца на bitwarden.com. Перайсці на сайт зараз?" + }, + "editedFolder": { + "message": "Папка адрэдагавана" + }, + "deleteFolderConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэту папку?" + }, + "deletedFolder": { + "message": "Папка выдалена" + }, + "gettingStartedTutorial": { + "message": "Дапаможнік па пачатку працы" + }, + "gettingStartedTutorialVideo": { + "message": "Праглядзіце невялікі навучальны матэрыял, каб даведацца. як атрымаць максімальную аддачу ад пашырэння браўзера." + }, + "syncingComplete": { + "message": "Сінхранізацыя завершана" + }, + "syncingFailed": { + "message": "Памылка сінхранізацыі" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "Элемент дададзены" + }, + "editedItem": { + "message": "Элемент адрэдагаваны" + }, + "deleteItemConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэты элемент?" + }, + "deletedItem": { + "message": "Выдалены элемент" + }, + "overwritePassword": { + "message": "Перазапісаць пароль" + }, + "overwritePasswordConfirmation": { + "message": "Вы ўпэўнены, што хочаце перазапісаць бягучы пароль?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "Пошук у папцы" + }, + "searchCollection": { + "message": "Пошук у калекцыі" + }, + "searchType": { + "message": "Пошук па тыпу" + }, + "noneFolder": { + "message": "Без папкі", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Адключыць апавяшчэнне аб даданні ўліковых даных" + }, + "addLoginNotificationDesc": { + "message": "Апавяшчэнне аб даданні ўліковых даных аўтаматычна прапануе вам захаваць новыя ўліковыя даныя ў сховішчы." + }, + "dontShowCardsCurrentTab": { + "message": "Не паказваць карткі на панэлі ўкладак" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Карткі з вашага сховішча пералічаны на 'Бягучай укладцы' для спрашчэння доступу да аўтазапаўнення." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Не показывать Пасведчанні на панэлі картак" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Ці павінен Bitwarden запомніць гэты пароль?" + }, + "notificationAddSave": { + "message": "Так, захаваць зараз" + }, + "disableChangedPasswordNotification": { + "message": "Адключыць апавяшчэнне аб змяненні пароля" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Апавяшчэнне аб змяненні пароля аўтаматычна прапануе вам абнавіць пароль уваходу ў сховішча, калі выявіць, што вы змянілі яго на вэб-сайце." + }, + "notificationChangeDesc": { + "message": "Вы хочаце абнавіць гэты пароль у Bitwarden?" + }, + "notificationChangeSave": { + "message": "Так, абнавіць зараз" + }, + "disableContextMenuItem": { + "message": "Адключыць параметры кантэкстнага меню" + }, + "disableContextMenuItemDesc": { + "message": "Параметры кантэкстнага меню забяспечваюць хуткі доступ да генератара пароляў і ўліковых даных для сайта на бягучай укладцы." + }, + "defaultUriMatchDetection": { + "message": "Выяўленне супадзення URI па змаўчанні", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Выберыце спосаб па змаўчанні, які выкарыстоўваецца пры вызначэнні адпаведнасці URI для ўліковых даных пры выкананні такіх дзеянняў, як аўтаматычнае запаўненне." + }, + "theme": { + "message": "Тэма" + }, + "themeDesc": { + "message": "Змена колеравай тэмы праграмы." + }, + "dark": { + "message": "Цёмная", + "description": "Dark color" + }, + "light": { + "message": "Светлая", + "description": "Light color" + }, + "solarizedDark": { + "message": "Цёмная Solarized", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Увядзіце ваш асноўны пароль для экспарту даных са сховішча." + }, + "shared": { + "message": "Абагуленыя" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Абагуліць" + }, + "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." + }, + "learnMore": { + "message": "Даведацца больш" + }, + "authenticatorKeyTotp": { + "message": "Ключ праверкі сапраўднасці (TOTP)" + }, + "verificationCodeTotp": { + "message": "Код праверкі (TOTP)" + }, + "copyVerificationCode": { + "message": "Капіяваць код праверкі" + }, + "attachments": { + "message": "Далучэнні" + }, + "deleteAttachment": { + "message": "Выдаліць далучэнне" + }, + "deleteAttachmentConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэта далучэнне?" + }, + "deletedAttachment": { + "message": "Далучэнне выдалена" + }, + "newAttachment": { + "message": "Дадаць новае далучэнне" + }, + "noAttachments": { + "message": "Няма далучэнняў." + }, + "attachmentSaved": { + "message": "Далучэнне захавана." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Выберыце файл." + }, + "maxFileSize": { + "message": "Максімальны памер файла 500 МБ." + }, + "featureUnavailable": { + "message": "Функцыя недаступна" + }, + "updateKey": { + "message": "Вы не можаце выкарыстоўваць гэту функцыю, пакуль не абнавіце свой ключ шыфравання." + }, + "premiumMembership": { + "message": "Прэміяльны статус" + }, + "premiumManage": { + "message": "Кіраванне статусам" + }, + "premiumManageAlert": { + "message": "Вы можаце кіраваць сваім статусам на bitwarden.com. Перайсці на сайт зараз?" + }, + "premiumRefresh": { + "message": "Абнавіць статус" + }, + "premiumNotCurrentMember": { + "message": "На дадзены момант у вас не прэміяльны статус." + }, + "premiumSignUpAndGet": { + "message": "Падпішыцеся на прэміяльны статус і атрымайце:" + }, + "ppremiumSignUpStorage": { + "message": "1 ГБ зашыфраванага сховішча для далучаных файлаў." + }, + "ppremiumSignUpTwoStep": { + "message": "Дадатковыя варыянты двухэтапнага ўваходу, такія як YubiKey, FIDO U2F і Duo." + }, + "ppremiumSignUpReports": { + "message": "Гігіена пароляў, здароўе ўліковага запісу і справаздачы аб уцечках даных для забеспячэння бяспекі вашага сховішча." + }, + "ppremiumSignUpTotp": { + "message": "TOTP-генератар кодаў (2ФА) для ўліковых даных вашага сховішча." + }, + "ppremiumSignUpSupport": { + "message": "Прыярытэтная падтрымка." + }, + "ppremiumSignUpFuture": { + "message": "Усе будучыя функцыі прэміяльнага статусу. Іх будзе больш!" + }, + "premiumPurchase": { + "message": "Купіць прэміяльны статус" + }, + "premiumPurchaseAlert": { + "message": "Вы можаце купіць прэміяльны статус на bitwarden.com. Перайсці на сайт зараз?" + }, + "premiumCurrentMember": { + "message": "У вас прэміяльны статус!" + }, + "premiumCurrentMemberThanks": { + "message": "Дзякуем вам за падтрымку Bitwarden." + }, + "premiumPrice": { + "message": "Усяго толькі за $PRICE$ на год!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Абнаўленне завершана" + }, + "disableAutoTotpCopy": { + "message": "Адключыць аўтаматычнае капіяванне TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Калі да вашых уліковых даных прымацаваны ключ праверкі сапраўднасці, то код пацвярджэння TOTP будзе скапіяваны пры аўтазапаўненні ўліковых даных." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Патрабуецца прэміяльны статус" + }, + "premiumRequiredDesc": { + "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 вашага камп'ютара. Калі на ім ёсць кнопка, націсніце на яе." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "loginUnavailable": { + "message": "Уваход недаступны" + }, + "noTwoStepProviders": { + "message": "У гэтага ўліковага запісу ўключаны двухэтапны ўваход, аднак ні адзін з наладжаных варыянтаў не падтрымліваецца гэтым вэб-браўзерам." + }, + "noTwoStepProviders2": { + "message": "Выкарыстоўвайце актуальны вэб-браўзер (напрыклад, Chrome) і/або дадайце дадатковыя варыянты праверкі сапраўднасці, якія падтрымліваюцца ў вэб-браўзерах (напрыклад, праграма для праверкі сапраўднасці)." + }, + "twoStepOptions": { + "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, 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": "Коды пацвярджэння будуць адпраўлены вам па электроннай пошце." + }, + "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-адрас сервера асяроддзя захаваны." + }, + "enableAutoFillOnPageLoad": { + "message": "Уключыць аўтазапаўненне пры загрузцы старонкі" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Пры выяўленні формы ўваходу выконваецца аўтазапаўненне падчас загрузкі вэб-старонкі." + }, + "experimentalFeature": { + "message": "Гэта эксперыментальная функцыя. Выкарыстоўвайце на свой страх і рызыку." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Адкрыць сховішча ва ўсплывальным акне" + }, + "commandOpenSidebar": { + "message": "Адкрыць сховішча ў бакавой панэлі" + }, + "commandAutofillDesc": { + "message": "Аўтазапаўненне апошніх скарыстаных уліковых даных для бягучага вэб-сайта." + }, + "commandGeneratePasswordDesc": { + "message": "Стварыць і капіяваць новы выпадковы парольу буфер абмену." + }, + "commandLockVaultDesc": { + "message": "Заблакіраваць сховішча" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Карыстальніцкія палі" + }, + "copyValue": { + "message": "Капіяваць значэнне" + }, + "value": { + "message": "Значэнне" + }, + "newCustomField": { + "message": "Новае карыстальніцкае поле" + }, + "dragToSort": { + "message": "Перацягніце для сартавання" + }, + "cfTypeText": { + "message": "Тэкст" + }, + "cfTypeHidden": { + "message": "Схавана" + }, + "cfTypeBoolean": { + "message": "Лагічнае" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Націск за межамі гэтага акна для прагляду кода праверкі з электроннай пошты прывядзе да яго закрыцця. Адкрыць bitwarden у новым акне?" + }, + "popupU2fCloseMessage": { + "message": "Гэты браўзар не можа апрацоўваць запыты U2F у гэтым усплывальным акне. Вы хочаце адкрыць гэта ўсплывальнае акно ў новым акне, каб мець магчымасць увайсці ў сістэму, выкарыстоўваючы U2F?" + }, + "disableFavicon": { + "message": "Адключыць значкі вэб-сайтаў" + }, + "disableFaviconDesc": { + "message": "Значкі вэб-сайтаў паказваюцца з кожным элементам у вашым сховішчы." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Імя ўладальніка карткі" + }, + "number": { + "message": "Нумар" + }, + "brand": { + "message": "Тып карткі" + }, + "expirationMonth": { + "message": "Месяц заканчэння" + }, + "expirationYear": { + "message": "Год заканчэння" + }, + "expiration": { + "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": "Снежань" + }, + "securityCode": { + "message": "Код бяспекі" + }, + "ex": { + "message": "напр." + }, + "title": { + "message": "Зварот" + }, + "mr": { + "message": "С-р" + }, + "mrs": { + "message": "С-ня" + }, + "ms": { + "message": "Пані" + }, + "dr": { + "message": "Док." + }, + "firstName": { + "message": "Імя" + }, + "middleName": { + "message": "Імя па бацьку" + }, + "lastName": { + "message": "Прозвішча" + }, + "fullName": { + "message": "Full Name" + }, + "identityName": { + "message": "Імя" + }, + "company": { + "message": "Кампанія" + }, + "ssn": { + "message": "Нумар сацыяльнага страхавання" + }, + "passportNumber": { + "message": "Нумар пашпарта" + }, + "licenseNumber": { + "message": "Нумар ліцэнзіі" + }, + "email": { + "message": "Электронная пошта" + }, + "phone": { + "message": "Тэлефон" + }, + "address": { + "message": "Адрас" + }, + "address1": { + "message": "Радок адрасу 1" + }, + "address2": { + "message": "Радок адрасу 2" + }, + "address3": { + "message": "Радок адрасу 3" + }, + "cityTown": { + "message": "Горад / Пасёлак" + }, + "stateProvince": { + "message": "Рэгіён / Вобласць" + }, + "zipPostalCode": { + "message": "Паштовы індэкс" + }, + "country": { + "message": "Краіна" + }, + "type": { + "message": "Тып" + }, + "typeLogin": { + "message": "Уліковыя даныя" + }, + "typeLogins": { + "message": "Уліковыя даныя" + }, + "typeSecureNote": { + "message": "Бяспечныя нататкі" + }, + "typeCard": { + "message": "Картка" + }, + "typeIdentity": { + "message": "Пасведчанне" + }, + "passwordHistory": { + "message": "Гісторыя пароляў" + }, + "back": { + "message": "Назад" + }, + "collections": { + "message": "Калекцыі" + }, + "favorites": { + "message": "Абраныя" + }, + "popOutNewWindow": { + "message": "Перайсці ў новае акно" + }, + "refresh": { + "message": "Абнавiць" + }, + "cards": { + "message": "Карткі" + }, + "identities": { + "message": "Пасведчанні" + }, + "logins": { + "message": "Уліковыя даныя" + }, + "secureNotes": { + "message": "Бяспечныя нататкі" + }, + "clear": { + "message": "Ачысціць", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Пераключыць параметры" + }, + "toggleCurrentUris": { + "message": "Уключыць бягучыя URI укладак", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Бягучы URI укладкі", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Арганізацыя", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Тыпы" + }, + "allItems": { + "message": "Усе элементы" + }, + "noPasswordsInList": { + "message": "Няма пароляў для паказу." + }, + "remove": { + "message": "Выдаліць" + }, + "default": { + "message": "Па змаўчанні" + }, + "dateUpdated": { + "message": "Абноўлена", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль абноўлены", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "Задайце PIN-код для разблакіроўкі Bitwarden. Налады PIN-кода будуць скінуты, калі вы калі-небудзь цалкам выйдзеце з праграмы." + }, + "pinRequired": { + "message": "Патрабуецца PIN-код." + }, + "invalidPin": { + "message": "Памылковы PIN-код." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Блакіраваць асноўным паролем пры перазапуску браўзера" + }, + "selectOneCollection": { + "message": "Вы павінны выбраць прынамсі адну калекцыю." + }, + "cloneItem": { + "message": "Кланіраваць элемент" + }, + "clone": { + "message": "Кланіраваць" + }, + "passwordGeneratorPolicyInEffect": { + "message": "На налады генератара ўплываюць адна або некалькі палітык арганізацый." + }, + "vaultTimeoutAction": { + "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": "Элемент адноўлены" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Выхад з сістэмы выдаліць доступ да сховішча і спатрабуе праверку сапраўднасці анлайн па заканчэнні перыяду чакання. Вы сапраўды жадаеце ўключыць гэтую наладу?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Пацвярджэнне дзеяння для тайм-аута" + }, + "autoFillAndSave": { + "message": "Запоўніць і захаваць" + }, + "autoFillSuccessAndSavedUri": { + "message": "Аўтазапоўнены элемент і захаваны URI" + }, + "autoFillSuccess": { + "message": "Аўтазапоўнены элемент" + }, + "setMasterPassword": { + "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": "Умовы выкарыстання і Палітыка прыватнасці не былі пацверджаны." + }, + "termsOfService": { + "message": "Умовы выкарыстання" + }, + "privacyPolicy": { + "message": "Палітыка прыватнасці" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "ОК" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json new file mode 100644 index 0000000000..bb2d195ee6 --- /dev/null +++ b/apps/browser/src/_locales/bg/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Битуорден (Bitwarden)" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Безопасно и безплатно управление за всичките ви устройства.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Впишете се или създайте нов абонамент, за да достъпите защитен трезор." + }, + "createAccount": { + "message": "Създаване на абонамент" + }, + "login": { + "message": "Вписване" + }, + "enterpriseSingleSignOn": { + "message": "Еднократна идентификация (SSO)" + }, + "cancel": { + "message": "Отказ" + }, + "close": { + "message": "Затваряне" + }, + "submit": { + "message": "Подаване" + }, + "emailAddress": { + "message": "Е-поща" + }, + "masterPass": { + "message": "Главна парола" + }, + "masterPassDesc": { + "message": "Главната парола се използва за достъп до трезора ви. Запомнете я добре, защото възстановяването ѝ е абсолютно невъзможно." + }, + "masterPassHintDesc": { + "message": "Ако сте забравили главната парола, то подсказването може да ви помогне да си я припомните." + }, + "reTypeMasterPass": { + "message": "Въведете пак главната парола" + }, + "masterPassHint": { + "message": "Подсказване за главната парола (по избор)" + }, + "tab": { + "message": "Раздел" + }, + "myVault": { + "message": "Моят трезор" + }, + "tools": { + "message": "Средства" + }, + "settings": { + "message": "Настройки" + }, + "currentTab": { + "message": "Текущ раздел" + }, + "copyPassword": { + "message": "Копиране на паролата" + }, + "copyNote": { + "message": "Копиране на бележката" + }, + "copyUri": { + "message": "Копиране на адреса" + }, + "copyUsername": { + "message": "Копиране на потребителското име" + }, + "copyNumber": { + "message": "Копиране на номера" + }, + "copySecurityCode": { + "message": "Копиране на кода да сигурност" + }, + "autoFill": { + "message": "Автоматично дописване" + }, + "generatePasswordCopied": { + "message": "Генериране на парола (копирана)" + }, + "copyElementIdentifier": { + "message": "Копиране на името на допълнителното поле" + }, + "noMatchingLogins": { + "message": "Няма съвпадащи записи." + }, + "unlockVaultMenu": { + "message": "Отключете трезора си" + }, + "loginToVaultMenu": { + "message": "Влезте в трезора си" + }, + "autoFillInfo": { + "message": "В текущия раздел няма записи, които да бъдат попълнени." + }, + "addLogin": { + "message": "Добавяне на запис" + }, + "addItem": { + "message": "Добавяне на елемент" + }, + "passwordHint": { + "message": "Подсказка за паролата" + }, + "enterEmailToGetHint": { + "message": "Въведете адреса на имейла си, за да получите подсказка за главната си парола." + }, + "getMasterPasswordHint": { + "message": "Подсказка за главната парола" + }, + "continue": { + "message": "Продължаване" + }, + "sendVerificationCode": { + "message": "Изпращане на код за потвърждаване до Вашата ел. поща" + }, + "sendCode": { + "message": "Изпращане на кода" + }, + "codeSent": { + "message": "Кодът е изпратен" + }, + "verificationCode": { + "message": "Код за потвърждаване" + }, + "confirmIdentity": { + "message": "Потвърдете самоличността си, за да продължите." + }, + "account": { + "message": "Регистрация" + }, + "changeMasterPassword": { + "message": "Промяна на главната парола" + }, + "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." + }, + "twoStepLogin": { + "message": "Двустепенно удостоверяване" + }, + "logOut": { + "message": "Отписване" + }, + "about": { + "message": "Относно" + }, + "version": { + "message": "Версия" + }, + "save": { + "message": "Запазване" + }, + "move": { + "message": "Преместване" + }, + "addFolder": { + "message": "Добавяне на папка" + }, + "name": { + "message": "Име" + }, + "editFolder": { + "message": "Редактиране на папка" + }, + "deleteFolder": { + "message": "Изтриване на папка" + }, + "folders": { + "message": "Папки" + }, + "noFolders": { + "message": "Няма папки за показване." + }, + "helpFeedback": { + "message": "Помощ и обратна връзка" + }, + "sync": { + "message": "Синхронизиране" + }, + "syncVaultNow": { + "message": "Синхронизиране сега" + }, + "lastSync": { + "message": "Последно синхронизиране:" + }, + "passGen": { + "message": "Генератор на пароли" + }, + "generator": { + "message": "Генератор", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Автоматично създаване на силни и неповторими пароли." + }, + "bitWebVault": { + "message": "Уебтрезорът на Bitwarden" + }, + "importItems": { + "message": "Внасяне на елементи" + }, + "select": { + "message": "Избор" + }, + "generatePassword": { + "message": "Генериране на парола" + }, + "regeneratePassword": { + "message": "Регенериране на паролата" + }, + "options": { + "message": "Опции" + }, + "length": { + "message": "Дължина" + }, + "uppercase": { + "message": "Главни букви (A-Z)" + }, + "lowercase": { + "message": "Малки букви (a-z)" + }, + "numbers": { + "message": "Числа (0-9)" + }, + "specialCharacters": { + "message": "Специални знаци (!@#$%^&*)" + }, + "numWords": { + "message": "Брой думи" + }, + "wordSeparator": { + "message": "Разделител за думи" + }, + "capitalize": { + "message": "Главни букви", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "И цифри" + }, + "minNumbers": { + "message": "Минимален брой цифри" + }, + "minSpecial": { + "message": "Минимален брой специални знаци" + }, + "avoidAmbChar": { + "message": "Без нееднозначни знаци" + }, + "searchVault": { + "message": "Търсене в трезора" + }, + "edit": { + "message": "Редактиране" + }, + "view": { + "message": "Преглед" + }, + "noItemsInList": { + "message": "Няма елементи за показване." + }, + "itemInformation": { + "message": "Сведения за елемента" + }, + "username": { + "message": "Потребителско име" + }, + "password": { + "message": "Парола" + }, + "passphrase": { + "message": "Парола за преминаване" + }, + "favorite": { + "message": "Любими" + }, + "notes": { + "message": "Бележки" + }, + "note": { + "message": "Бележка" + }, + "editItem": { + "message": "Редактиране на елемента" + }, + "folder": { + "message": "Папка" + }, + "deleteItem": { + "message": "Изтриване на елемента" + }, + "viewItem": { + "message": "Преглед на елемента" + }, + "launch": { + "message": "Пускане" + }, + "website": { + "message": "Сайт" + }, + "toggleVisibility": { + "message": "Превключване на видимостта" + }, + "manage": { + "message": "Управление" + }, + "other": { + "message": "Други" + }, + "rateExtension": { + "message": "Оценяване на разширението" + }, + "rateExtensionDesc": { + "message": "Молим да ни помогнете, като оставите положителен отзив!" + }, + "browserNotSupportClipboard": { + "message": "Браузърът не поддържа копиране в буфера, затова копирайте на ръка." + }, + "verifyIdentity": { + "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": "Грешна главна парола" + }, + "vaultTimeout": { + "message": "Време за достъп" + }, + "lockNow": { + "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 часа" + }, + "onLocked": { + "message": "При заключване на системата" + }, + "onRestart": { + "message": "При повторно пускане на четеца" + }, + "never": { + "message": "Никога" + }, + "security": { + "message": "Сигурност" + }, + "errorOccurred": { + "message": "Възникна грешка" + }, + "emailRequired": { + "message": "Електронната поща е задължителна." + }, + "invalidEmail": { + "message": "Недействителна електронна поща." + }, + "masterPassRequired": { + "message": "Главната парола е задължителна." + }, + "masterPassLength": { + "message": "Главната парола трябва да съдържа поне 8 знака." + }, + "masterPassDoesntMatch": { + "message": "Главната парола и потвърждението ѝ не съвпадат." + }, + "newAccountCreated": { + "message": "Абонаментът ви бе създаден. Вече можете да се впишете." + }, + "masterPassSent": { + "message": "Изпратихме ви писмо с подсказка за главната ви парола." + }, + "verificationCodeRequired": { + "message": "Кодът за потвърждение е задължителен." + }, + "invalidVerificationCode": { + "message": "Грешен код за потвърждаване" + }, + "valueCopied": { + "message": "$VALUE$ — копирано", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Неуспешно автоматично попълване. Вместо това копирайте и поставете данните." + }, + "loggedOut": { + "message": "Бяхте отписани" + }, + "loginExpired": { + "message": "Сесията ви изтече." + }, + "logOutConfirmation": { + "message": "Сигурни ли сте, че искате да се отпишете?" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Не" + }, + "unexpectedError": { + "message": "Възникна неочаквана грешка." + }, + "nameRequired": { + "message": "Изисква се име." + }, + "addedFolder": { + "message": "Добавена папка" + }, + "changeMasterPass": { + "message": "Промяна на главната парола" + }, + "changeMasterPasswordConfirmation": { + "message": "Главната парола на трезор може да се промени чрез сайта bitwarden.com. Искате ли да го посетите?" + }, + "twoStepLoginConfirmation": { + "message": "Двустепенното вписване защитава регистрацията ви, като ви кара да потвърдите влизането си чрез устройство-ключ, приложение за удостоверение, мобилно съобщение, телефонно обаждане или електронна поща. Двустепенното вписване може да се включи чрез сайта bitwarden.com. Искате ли да го посетите?" + }, + "editedFolder": { + "message": "Редактирана папка" + }, + "deleteFolderConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете тази папка?" + }, + "deletedFolder": { + "message": "Изтрита папка" + }, + "gettingStartedTutorial": { + "message": "Въведение" + }, + "gettingStartedTutorialVideo": { + "message": "Изгледайте въведението, за да извлечете максимална полза от разширението Bitwarden." + }, + "syncingComplete": { + "message": "Синхронизацията завърши" + }, + "syncingFailed": { + "message": "Неуспешно синхронизиране" + }, + "passwordCopied": { + "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": "Нов адрес" + }, + "addedItem": { + "message": "Елементът е добавен" + }, + "editedItem": { + "message": "Елементът е редактиран" + }, + "deleteItemConfirmation": { + "message": "Наистина ли искате да изтриете елемента?" + }, + "deletedItem": { + "message": "Елементът е изтрит" + }, + "overwritePassword": { + "message": "Презаписване на паролата" + }, + "overwritePasswordConfirmation": { + "message": "Наистина ли искате да презапишете текущата парола?" + }, + "overwriteUsername": { + "message": "Замяна на потребителското име" + }, + "overwriteUsernameConfirmation": { + "message": "Наостина ли искате да замените текущото потребителско име?" + }, + "searchFolder": { + "message": "Търсене в папката" + }, + "searchCollection": { + "message": "Търсене в колекцията" + }, + "searchType": { + "message": "Търсене по вид" + }, + "noneFolder": { + "message": "Няма папка", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Без известия за запазване на регистрации" + }, + "addLoginNotificationDesc": { + "message": "Известията за запазване на регистрации автоматично ви подканят да запазите новите регистрации в трезора при първото ви вписване в тях." + }, + "dontShowCardsCurrentTab": { + "message": "Без карти в основния прозорец" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Скриване на записите за платежните карти, които обичайно се извеждат в основния прозорец за лесно въвеждане." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Без самоличности в основния прозорец" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Искате ли тази парола да бъде запазена?" + }, + "notificationAddSave": { + "message": "Да, нека се запише сега" + }, + "disableChangedPasswordNotification": { + "message": "Без известия за обновяване на регистрации" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Известията за обновяване на регистрации автоматично ви подканят да запазите променените регистрации в трезора при засичането на промяната." + }, + "notificationChangeDesc": { + "message": "Да се обнови ли паролата в Bitwarden?" + }, + "notificationChangeSave": { + "message": "Да, нека се обнови сега" + }, + "disableContextMenuItem": { + "message": "Без добавки към контекстното меню" + }, + "disableContextMenuItemDesc": { + "message": "Добавките към контекстното меню позволяват бърз достъп до данните за сайтовете в текущия раздел, както и създаването на нова парола." + }, + "defaultUriMatchDetection": { + "message": "Стандартно засичане на адреси", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Какъв да е начинът, по който да се засича съответствие на адреса за автоматичното попълване на данните." + }, + "theme": { + "message": "Облик" + }, + "themeDesc": { + "message": "Промяна на цветовия облик на програмата." + }, + "dark": { + "message": "Тъмен", + "description": "Dark color" + }, + "light": { + "message": "Светъл", + "description": "Light color" + }, + "solarizedDark": { + "message": "Преекспонирано тъмен", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Ключовете за шифриране са уникални за всеки потребител, затова не може да внесете шифрирани данни от един потребител в регистрацията на друг." + }, + "exportMasterPassword": { + "message": "Въведете главната парола, за да изнесете данните." + }, + "shared": { + "message": "Споделено" + }, + "learnOrg": { + "message": "Разберете повече за организациите" + }, + "learnOrgConfirmation": { + "message": "Битуорден позволява да споделяте части от трезора си чрез използването на организация. Искате ли да научите повече от сайта bitwarden.com?" + }, + "moveToOrganization": { + "message": "Преместване в организация" + }, + "share": { + "message": "Споделяне" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ се премести в $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Изберете организацията, в която искате да преместите записа. Преместването прехвърля собствеността му към новата организация. След това няма вече директно да го притежавате." + }, + "learnMore": { + "message": "Научете повече" + }, + "authenticatorKeyTotp": { + "message": "Удостоверителен ключ (TOTP)" + }, + "verificationCodeTotp": { + "message": "Код за потвърждаване (TOTP)" + }, + "copyVerificationCode": { + "message": "Копиране на кода за потвърждаване" + }, + "attachments": { + "message": "Прикачвания" + }, + "deleteAttachment": { + "message": "Изтриване на прикачения файл" + }, + "deleteAttachmentConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете прикачения файл?" + }, + "deletedAttachment": { + "message": "Прикаченият файл е изтрит" + }, + "newAttachment": { + "message": "Прикачване на файл" + }, + "noAttachments": { + "message": "Няма прикачени файлове." + }, + "attachmentSaved": { + "message": "Прикаченият файл е запазен." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Изберете файл." + }, + "maxFileSize": { + "message": "Големината на файла е най-много 500 MB." + }, + "featureUnavailable": { + "message": "Функцията е недостъпна" + }, + "updateKey": { + "message": "Трябва да обновите шифриращия си ключ, за да използвате тази възможност." + }, + "premiumMembership": { + "message": "Платен абонамент" + }, + "premiumManage": { + "message": "Управление на абонамента" + }, + "premiumManageAlert": { + "message": "Можете да управлявате абонамента си през сайта bitwarden.com. Искате ли да го посетите сега?" + }, + "premiumRefresh": { + "message": "Опресняване на абонамента" + }, + "premiumNotCurrentMember": { + "message": "В момента ползвате безплатен абонамент." + }, + "premiumSignUpAndGet": { + "message": "Платеният абонамент дава следните предимства:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB пространство за файлове, които се шифрират." + }, + "ppremiumSignUpTwoStep": { + "message": "Двустепенно удостоверяване чрез YubiKey, FIDO U2F и Duo." + }, + "ppremiumSignUpReports": { + "message": "Проверки в списъците с публикувани пароли, проверка на регистрациите и доклади за пробивите в сигурността, което спомага трезорът ви да е допълнително защитен." + }, + "ppremiumSignUpTotp": { + "message": "Генериране на временни, еднократни кодове за двустепенно удостоверяване за регистрациите в трезора." + }, + "ppremiumSignUpSupport": { + "message": "Приоритетна поддръжка." + }, + "ppremiumSignUpFuture": { + "message": "Всички бъдещи функции на платения абонамент! Предстои въвеждането на още!" + }, + "premiumPurchase": { + "message": "Покупка на платен абонамент" + }, + "premiumPurchaseAlert": { + "message": "Може да платите абонамента си през сайта bitwarden.com. Искате ли да го посетите сега?" + }, + "premiumCurrentMember": { + "message": "Честито, ползвате платен абонамент!" + }, + "premiumCurrentMemberThanks": { + "message": "Благодарим ви за подкрепата на Bitwarden." + }, + "premiumPrice": { + "message": "И това само за $PRICE$ на година!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Абонаментът е опреснен" + }, + "disableAutoTotpCopy": { + "message": "Без автоматично копиране на временни, еднократни пароли" + }, + "disableAutoTotpCopyDesc": { + "message": "Ако регистрацията използва и удостоверителен ключ, временният, еднократен код се копира в буфера при всяко автоматично попълване на формуляра." + }, + "disableAutoBiometricsPrompt": { + "message": "Да не се изискват биометрични данни при стартиране" + }, + "premiumRequired": { + "message": "Изисква се платен абонамент" + }, + "premiumRequiredDesc": { + "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 порт на компютъра. Ако на устройството има бутон, натиснете го." + }, + "webAuthnNewTab": { + "message": "Продължаване на двустепенното удостоверяване чрез WebAuthn в новия раздел." + }, + "webAuthnNewTabOpen": { + "message": "Отваряне на нов раздел" + }, + "webAuthnAuthenticate": { + "message": "Идентификация WebAuthn" + }, + "loginUnavailable": { + "message": "Записът липсва" + }, + "noTwoStepProviders": { + "message": "Регистрацията е защитена с двустепенно удостоверяване, но никой от настроените доставчици на удостоверяване не се поддържа от този браузър." + }, + "noTwoStepProviders2": { + "message": "Пробвайте с поддържан уеб браузър (като Chrome или Firefox) и други доставчици на удостоверяване, които се поддържат от браузърите (като специални програми за удостоверяване)." + }, + "twoStepOptions": { + "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, 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": "Кодовете за потвърждение ще ви бъдат пратени по е-поща." + }, + "selfHostedEnvironment": { + "message": "Собствена среда" + }, + "selfHostedEnvironmentFooter": { + "message": "Укажете базовия адрес за собствената ви инсталирана среда на Bitwarden." + }, + "customEnvironment": { + "message": "Специална среда" + }, + "customEnvironmentFooter": { + "message": "За специални случаи. Може да укажете основните адреси на всяка ползвана услуга поотделно." + }, + "baseUrl": { + "message": "Адрес на сървъра" + }, + "apiUrl": { + "message": "Адрес на ППИ-сървъра" + }, + "webVaultUrl": { + "message": "Адрес на сървъра с трезора в уеб" + }, + "identityUrl": { + "message": "Адрес на сървъра със самоличности" + }, + "notificationsUrl": { + "message": "Адрес на сървъра за уведомления" + }, + "iconsUrl": { + "message": "Адрес на сървъра с иконки" + }, + "environmentSaved": { + "message": "Средата с адресите е запазена." + }, + "enableAutoFillOnPageLoad": { + "message": "Включване на автоматичното попълване" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "При засичане на формуляр за вписване при зареждането на уеб страницата автоматично да се попълват данните на съответстващата регистрация." + }, + "experimentalFeature": { + "message": "Това все още е в експериментална фаза, ползвате го на собствена глава." + }, + "defaultAutoFillOnPageLoad": { + "message": "Стандартна настройка за автоматичното попълване" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Ако включите автоматичното попълване при зареждане на страница, след това можете да включвате или изключвате тази функционалност за всеки отделен запис. Това ще бъде стандартният начин на работа за записите, за които не е настроено допълнително." + }, + "itemAutoFillOnPageLoad": { + "message": "Автоматично попълване при зареждане на страницата (ако е включено в настройките)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Използване на стандартната настройка" + }, + "autoFillOnPageLoadYes": { + "message": "Автоматично попълване при зареждане на страницата" + }, + "autoFillOnPageLoadNo": { + "message": "Без автоматично попълване при зареждане на страницата" + }, + "commandOpenPopup": { + "message": "Отваряне на трезора в изскачащ прозорец" + }, + "commandOpenSidebar": { + "message": "Отваряне на трезора в страничната лента" + }, + "commandAutofillDesc": { + "message": "Автоматично попълване на последно използвания запис в текущия сайт." + }, + "commandGeneratePasswordDesc": { + "message": "Създаване и копиране на нова случайна парола в буфера." + }, + "commandLockVaultDesc": { + "message": "Заключване на трезора" + }, + "privateModeWarning": { + "message": "Поддръжката на частния режим е експериментална и някои функционалности са ограничени." + }, + "customFields": { + "message": "Допълнителни полета" + }, + "copyValue": { + "message": "Копиране на стойността" + }, + "value": { + "message": "Стойност" + }, + "newCustomField": { + "message": "Ново допълнително поле" + }, + "dragToSort": { + "message": "Подредба чрез влачене" + }, + "cfTypeText": { + "message": "Текст" + }, + "cfTypeHidden": { + "message": "Скрито" + }, + "cfTypeBoolean": { + "message": "Булево" + }, + "cfTypeLinked": { + "message": "Свързано", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Свързана стойност", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Ако натиснете бутон на мишката извън изскочилия прозорец за кода за потвърждение, същият този прозорец ще се затвори. Искате ли проверката да се извърши в нормален прозорец, който не се затваря толкова лесно?" + }, + "popupU2fCloseMessage": { + "message": "Този браузър не поддържа заявки чрез U2F в такъв изскачащ прозорец. Искате ли да се отвори нов прозорец, за да може да се впишете чрез U2F?" + }, + "disableFavicon": { + "message": "Без иконки на сайтовете" + }, + "disableFaviconDesc": { + "message": "Иконките на сайтовете са разпознаваемо изображение за всеки запис в трезора." + }, + "disableBadgeCounter": { + "message": "Изключване на значката с брояч" + }, + "disableBadgeCounterDesc": { + "message": "Значката с брояч показва колко варианта за вписване имате в трезора си за текущата страница." + }, + "cardholderName": { + "message": "Име на притежателя на картата" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Вид" + }, + "expirationMonth": { + "message": "Месец на изтичане" + }, + "expirationYear": { + "message": "Година на изтичане" + }, + "expiration": { + "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": "декември" + }, + "securityCode": { + "message": "Код за сигурност" + }, + "ex": { + "message": "напр." + }, + "title": { + "message": "Заглавие" + }, + "mr": { + "message": "Г-н" + }, + "mrs": { + "message": "Г-жа" + }, + "ms": { + "message": "Г-ца" + }, + "dr": { + "message": "Д-р" + }, + "firstName": { + "message": "Собствено име" + }, + "middleName": { + "message": "Презиме" + }, + "lastName": { + "message": "Фамилно име" + }, + "fullName": { + "message": "Пълно име" + }, + "identityName": { + "message": "Име на самоличността" + }, + "company": { + "message": "Фирма" + }, + "ssn": { + "message": "№ на осигуровката" + }, + "passportNumber": { + "message": "№ на паспорта" + }, + "licenseNumber": { + "message": "№ на лиценза" + }, + "email": { + "message": "Електронна поща" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адрес" + }, + "address1": { + "message": "Адрес 1" + }, + "address2": { + "message": "Адрес 2" + }, + "address3": { + "message": "Адрес 3" + }, + "cityTown": { + "message": "Населено място" + }, + "stateProvince": { + "message": "Област / щат / провинция" + }, + "zipPostalCode": { + "message": "Пощенски код" + }, + "country": { + "message": "Държава" + }, + "type": { + "message": "Вид" + }, + "typeLogin": { + "message": "Запис" + }, + "typeLogins": { + "message": "Записи" + }, + "typeSecureNote": { + "message": "Защитена бележка" + }, + "typeCard": { + "message": "Карта" + }, + "typeIdentity": { + "message": "Самоличност" + }, + "passwordHistory": { + "message": "Хронология на паролата" + }, + "back": { + "message": "Назад" + }, + "collections": { + "message": "Колекции" + }, + "favorites": { + "message": "Любими" + }, + "popOutNewWindow": { + "message": "Отваряне в нов прозорец" + }, + "refresh": { + "message": "Опресняване" + }, + "cards": { + "message": "Карти" + }, + "identities": { + "message": "Самоличности" + }, + "logins": { + "message": "Записи" + }, + "secureNotes": { + "message": "Защитени бележки" + }, + "clear": { + "message": "Изчистване", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Настройки на превключване" + }, + "toggleCurrentUris": { + "message": "Превключване на текущите адреси", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Текущ адрес", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Организация", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Видове" + }, + "allItems": { + "message": "Всички елементи" + }, + "noPasswordsInList": { + "message": "Няма пароли за показване." + }, + "remove": { + "message": "Премахване" + }, + "default": { + "message": "Стандартно" + }, + "dateUpdated": { + "message": "Обновено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Обновена парола", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "Неправилен ПИН." + }, + "unlockWithBiometrics": { + "message": "Отключване с биометрични данни" + }, + "awaitDesktop": { + "message": "Чака се потвърждение от самостоятелното приложение" + }, + "awaitDesktopDesc": { + "message": "За да включите потвърждаване с биометрични данни в браузъра, потвърдете ползването им в самостоятелното приложение." + }, + "lockWithMasterPassOnRestart": { + "message": "Заключване с главната парола при повторно пускане на браузъра" + }, + "selectOneCollection": { + "message": "Изберете поне една колекция." + }, + "cloneItem": { + "message": "Дублирате на елемент" + }, + "clone": { + "message": "Клониране" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Поне една политика на организация влияе на настройките на генерирането на паролите." + }, + "vaultTimeoutAction": { + "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": "Записът е възстановен" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Излизането от трезора изцяло спира достъпа до него след изтичане на времето. Ще ви се наложи отново да се идентифицирате, за да го достъпите. Сигурни ли сте, че искате това действие?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Потвърждаване на действието" + }, + "autoFillAndSave": { + "message": "Дописване и обновяване" + }, + "autoFillSuccessAndSavedUri": { + "message": "Автоматично дописан запис и адрес" + }, + "autoFillSuccess": { + "message": "Автоматично дописан запис" + }, + "setMasterPassword": { + "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": "Условията за използване и политиката за поверителност не бяха приети." + }, + "termsOfService": { + "message": "Общи условия" + }, + "privacyPolicy": { + "message": "Политика за поверителност" + }, + "hintEqualsPassword": { + "message": "Подсказването за паролата не може да съвпада с нея." + }, + "ok": { + "message": "Добре" + }, + "desktopSyncVerificationTitle": { + "message": "Потвърждаване на синхронизацията на самостоятелното приложение" + }, + "desktopIntegrationVerificationText": { + "message": "Уверете се, че самостоятелното приложение показва следния идентификатор:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Интеграцията с браузър е изключена" + }, + "desktopIntegrationDisabledDesc": { + "message": "Интеграцията с браузъри не е включена в самостоятелното приложение на Битуорден. Включете я в неговите настройки." + }, + "startDesktopTitle": { + "message": "Стартиране на самостоятелното приложение на Битуорден" + }, + "startDesktopDesc": { + "message": "Трябва да стартирате самостоятелното приложение на Битуорден, преди да ползвате тази функционалност." + }, + "errorEnableBiometricTitle": { + "message": "Потвърждаването с биометрични данни не може да се включи" + }, + "errorEnableBiometricDesc": { + "message": "Действието е отменено от самостоятелното приложение" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Самостоятелното приложение прекъсна надеждния канал за връзка. Пробвайте отново" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Връзката със самостоятелното приложение е нарушена" + }, + "nativeMessagingWrongUserDesc": { + "message": "В момента самостоятелното приложение е с регистрация на различен потребител. За да работят заедно, двете приложения трябва да ползват една и съща регистрация." + }, + "nativeMessagingWrongUserTitle": { + "message": "Регистрациите са различни" + }, + "biometricsNotEnabledTitle": { + "message": "Потвърждаването с биометрични данни не е включено" + }, + "biometricsNotEnabledDesc": { + "message": "Потвърждаването с биометрични данни в браузъра изисква включването включването им в настройките за самостоятелното приложение." + }, + "biometricsNotSupportedTitle": { + "message": "Потвърждаването с биометрични данни не се поддържа" + }, + "biometricsNotSupportedDesc": { + "message": "Устройството не поддържа потвърждаване с биометрични данни." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Правото не е дадено" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Разширението за браузъра не може да осигури потвърждаване с биометрични данни, когато липсва право за връзка със самостоятелното приложение. Пробвайте отново." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Необходимо е разрешение" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Това действие не може да бъде извършено в страничната лента, опитайте отново в изскачащ прозорец." + }, + "personalOwnershipSubmitError": { + "message": "Заради някоя политика за голяма организация не може да запазвате елементи в собствения си трезор. Променете собствеността да е на организация и изберете от наличните колекции." + }, + "personalOwnershipPolicyInEffect": { + "message": "Политика от някоя организация влияе на вариантите за собственост." + }, + "excludedDomains": { + "message": "Изключени домейни" + }, + "excludedDomainsDesc": { + "message": "Битуорден няма да пита дали да запазва данните за вход в тези сайтове. За да влезе правилото в сила, презаредете страницата." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ не е валиден домейн", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Търсене в изпратените", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Добавяне на изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Текст" + }, + "sendTypeFile": { + "message": "Файл" + }, + "allSends": { + "message": "Всички изпращания", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Достигнат е максималният брой достъпвания", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Изтекъл" + }, + "pendingDeletion": { + "message": "Предстои изтриване" + }, + "passwordProtected": { + "message": "Защита с парола" + }, + "copySendLink": { + "message": "Копиране на връзката към изпратеното", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Премахване на парола" + }, + "delete": { + "message": "Изтриване" + }, + "removedPassword": { + "message": "Паролата е премахната" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "Изключено" + }, + "removePasswordConfirmation": { + "message": "Сигурни ли сте, че искате да премахнете паролата?" + }, + "deleteSend": { + "message": "Изтриване на изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "Вид на изпратеното", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Описателно име за това изпращане.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 ден" + }, + "days": { + "message": "$DAYS$ ден/дни", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "По избор" + }, + "maximumAccessCount": { + "message": "Максимален брой достъпвания." + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "Пълно спиране на това изпращане — никой няма да има достъп.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Копиране на връзката към това изпращане при запазването му.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст за изпращане." + }, + "sendHideText": { + "message": "Стандартно текстът на това изпращане да се крие.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Текущ брой на достъпванията" + }, + "createSend": { + "message": "Създаване на изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "За да изберете файл, отворете разширението в страничната лента (ако е възможно) или в нов прозорец, като натиснете това съобщение." + }, + "sendFirefoxFileWarning": { + "message": "За да изберете файл във Firefox, отворете разширението в страничната лента или в нов прозорец, като натиснете това съобщение." + }, + "sendSafariFileWarning": { + "message": "За да изберете файл в Safari, отворете разширението в нов прозорец, като натиснете това съобщение." + }, + "sendFileCalloutHeader": { + "message": "Преди да почнете" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "За избор на дата от каландар", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "натиснете тук", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "за изскачащ прозорец.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Неправилна дата на валидност." + }, + "deletionDateIsInvalid": { + "message": "Неправилна дата на изтриване." + }, + "expirationDateAndTimeRequired": { + "message": "Необходими са дата и време на валидност." + }, + "deletionDateAndTimeRequired": { + "message": "Необходима е дата на изтриване." + }, + "dateParsingError": { + "message": "Грешка при запазване на датата на валидност и изтриване." + }, + "hideEmail": { + "message": "Скриване на е-пощата ми от получателите." + }, + "sendOptionsPolicyInEffect": { + "message": "Поне една политика на организация влияе на настройките за изпращане." + }, + "passwordPrompt": { + "message": "Повторно запитване за главната парола" + }, + "passwordConfirmation": { + "message": "Потвърждение на главната парола" + }, + "passwordConfirmationDesc": { + "message": "Това действие е защитено. За да продължите, въведете отново главната си парола, за да потвърдите самоличността си." + }, + "emailVerificationRequired": { + "message": "Изисква се потвърждение на е-пощата" + }, + "emailVerificationRequiredDesc": { + "message": "Трябва да потвърдите е-пощата си, за да използвате тази функционалност. Можете да го направите в уеб-трезора." + }, + "updatedMasterPassword": { + "message": "Главната парола е променена" + }, + "updateMasterPassword": { + "message": "Промяна на главната парола" + }, + "updateMasterPasswordWarning": { + "message": "Вашата главна парола наскоро е била сменена от администратор в организацията Ви. За да получите достъп до трезора, трябва първо да я промените. Това означава, че ще бъдете отписан(а) от текущата си сесия и ще трябва да се впишете отново. Активните сесии на други устройства може да продължат да бъдат активни още един час." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматично включване" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Тази организация включва автоматично новите си потребители в смяната на пароли. Това означава, че администраторите на организацията ще могат да променят главната Ви парола." + }, + "selectFolder": { + "message": "Избиране на папка..." + }, + "ssoCompleteRegistration": { + "message": "За да завършите настройките за еднократна идентификация, трябва да зададете главна парола за трезора." + }, + "hours": { + "message": "Часа" + }, + "minutes": { + "message": "Минути" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Настройките на организацията Ви влияят върху времето за достъп до трезора Ви. Максималното разрешено време за достъп е $HOURS$ час(а) и $MINUTES$ минути", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Времето за достъп до трезора Ви превишава ограничението, определено от организацията Ви." + }, + "vaultExportDisabled": { + "message": "Изнасянето на трезора е изключено" + }, + "personalVaultExportPolicyInEffect": { + "message": "Една или повече от настройките на организацията Ви не позволяват да изнасяте личния си трезор." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Не може да бъде открит подходящ елемент от формуляр. Опитайте да инспектирате кода на HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Няма намерен уникален идентификатор." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ използва еднократно удостоверяване със собствен сървър за ключове. Членовете на тази организация вече нямат нужда от главна парола за вписване.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Напускане на организацията" + }, + "removeMasterPassword": { + "message": "Премахване на главната парола" + }, + "removedMasterPassword": { + "message": "Главната парола е премахната." + }, + "leaveOrganizationConfirmation": { + "message": "Наистина ли искате да напуснете тази организация?" + }, + "leftOrganization": { + "message": "Напуснахте организацията." + }, + "toggleCharacterCount": { + "message": "Превключване на броя знаци" + }, + "sessionTimeout": { + "message": "Сесията Ви изтече. Моля, върнете се назад и се опитайте да влезете отново." + }, + "exportingPersonalVaultTitle": { + "message": "Изнасяне на личния трезор" + }, + "exportingPersonalVaultDescription": { + "message": "Ще бъдат изнесени само записите от личния трезор свързан с $EMAIL$. Записите в трезора на организацията няма да бъдат включени.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "Грешка" + }, + "regenerateUsername": { + "message": "Повторно генериране на потр. име" + }, + "generateUsername": { + "message": "Генериране на потр. име" + }, + "usernameType": { + "message": "Тип потребителско име" + }, + "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": "Използвайте възможностите за под-адресиране на е-поща на своя доставчик." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Произволно" + }, + "randomWord": { + "message": "Произволна дума" + }, + "websiteName": { + "message": "Име на уеб сайт" + }, + "whatWouldYouLikeToGenerate": { + "message": "Какво бихте искали да генерирате?" + }, + "passwordType": { + "message": "Тип парола" + }, + "service": { + "message": "Услуга" + } +} diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json new file mode 100644 index 0000000000..249d1b68b4 --- /dev/null +++ b/apps/browser/src/_locales/bn/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "আপনার সমস্ত ডিভাইসের জন্য একটি সুরক্ষিত এবং বিনামূল্যের পাসওয়ার্ড ব্যবস্থাপক।", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "আপনার সুরক্ষিত ভল্টে প্রবেশ করতে লগ ইন করুন অথবা একটি নতুন অ্যাকাউন্ট তৈরি করুন।" + }, + "createAccount": { + "message": "অ্যাকাউন্ট তৈরি করুন" + }, + "login": { + "message": "প্রবেশ করুন" + }, + "enterpriseSingleSignOn": { + "message": "এন্টারপ্রাইজ একক সাইন-অন" + }, + "cancel": { + "message": "বাতিল" + }, + "close": { + "message": "বন্ধ করুন" + }, + "submit": { + "message": "জমা দিন" + }, + "emailAddress": { + "message": "ইমেইল ঠিকানা" + }, + "masterPass": { + "message": "মূল পাসওয়ার্ড" + }, + "masterPassDesc": { + "message": "মূল পাসওয়ার্ড হল সেই পাসওয়ার্ডটি যা আপনি নিজের ভল্ট ব্যাবহার করতে ব্যবহার করেন। এটি খুব গুরুত্বপূর্ণ যে আপনি নিজের মূল পাসওয়ার্ডটি ভুলে যাবেন না। আপনি যদি ভুলে গিয়ে থাকেন তবে পাসওয়ার্ডটি পুনরুদ্ধার করার কোনও উপায় নেই।" + }, + "masterPassHintDesc": { + "message": "যদি আপনি আপনার পাসওয়ার্ড ভুলে যান তাহলে একটি মূল পাসওয়ার্ডের ইঙ্গিতটি আপনাকে মনে করাতে সাহায্য করতে পারে।" + }, + "reTypeMasterPass": { + "message": "পুনরায় মূল পাসওয়ার্ডটি লিখুন" + }, + "masterPassHint": { + "message": "মূল পাসওয়ার্ড ইঙ্গিত (ঐচ্ছিক)" + }, + "tab": { + "message": "ট্যাব" + }, + "myVault": { + "message": "আমার ভল্ট" + }, + "tools": { + "message": "সরঞ্জামসমূহ" + }, + "settings": { + "message": "সেটিংস" + }, + "currentTab": { + "message": "বর্তমান ট্যাব" + }, + "copyPassword": { + "message": "পাসওয়ার্ড অনুলিপিত করুন" + }, + "copyNote": { + "message": "নোট অনুলিপিত করুন" + }, + "copyUri": { + "message": "URI অনুলিপিত করুন" + }, + "copyUsername": { + "message": "ব্যবহারকারীর নাম অনুলিপিত করুন" + }, + "copyNumber": { + "message": "নম্বর অনুলিপিত করুন" + }, + "copySecurityCode": { + "message": "সুরক্ষা কোড অনুলিপিত করুন" + }, + "autoFill": { + "message": "স্বতঃপূরণ" + }, + "generatePasswordCopied": { + "message": "পাসওয়ার্ড তৈরি করুন (অনুলিপিকৃত)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "কোনও মিলত লগইন নেই।" + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "বর্তমান ব্রাউজার ট্যাবের জন্য স্বয়ংক্রিয় পূরণের কোনও লগইন উপলব্ধ নেই।" + }, + "addLogin": { + "message": "একটি লগইন জুড়ুন " + }, + "addItem": { + "message": "বস্তু জুড়ুন" + }, + "passwordHint": { + "message": "পাসওয়ার্ড ইঙ্গিত" + }, + "enterEmailToGetHint": { + "message": "আপনার মূল পাসওয়ার্ডের ইঙ্গিতটি পেতে আপনার অ্যাকাউন্টের ইমেল ঠিকানা প্রবেশ করুন।" + }, + "getMasterPasswordHint": { + "message": "মূল পাসওয়ার্ডের ইঙ্গিত পান" + }, + "continue": { + "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." + }, + "account": { + "message": "অ্যাকাউন্ট" + }, + "changeMasterPassword": { + "message": "মূল পাসওয়ার্ড পরিবর্তন" + }, + "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." + }, + "twoStepLogin": { + "message": "দ্বি-পদক্ষেপের লগইন" + }, + "logOut": { + "message": "লগ আউট" + }, + "about": { + "message": "সম্বন্ধে" + }, + "version": { + "message": "সংস্করণ" + }, + "save": { + "message": "সংরক্ষণ" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "ফোল্ডার জুড়ুন" + }, + "name": { + "message": "নাম" + }, + "editFolder": { + "message": "ফোল্ডার সম্পাদনা" + }, + "deleteFolder": { + "message": "ফোল্ডার মুছুন" + }, + "folders": { + "message": "ফোল্ডারসমূহ" + }, + "noFolders": { + "message": "তালিকার জন্য কোনও ফোল্ডার নেই।" + }, + "helpFeedback": { + "message": "সহায়তা এবং প্রতিক্রিয়া" + }, + "sync": { + "message": "সিঙ্ক" + }, + "syncVaultNow": { + "message": "এখনই ভল্ট সিঙ্ক করুন" + }, + "lastSync": { + "message": "শেষ সিঙ্ক:" + }, + "passGen": { + "message": "পাসওয়ার্ড উৎপাদক" + }, + "generator": { + "message": "উৎপাদক", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "আপনার লগইনগুলির জন্য স্বয়ংক্রিয়ভাবে শক্তিশালী, অদ্বিতীয় পাসওয়ার্ড তৈরি করুন।" + }, + "bitWebVault": { + "message": "Bitwarden ওয়েব ভল্ট" + }, + "importItems": { + "message": "বস্তু আমদানি" + }, + "select": { + "message": "নির্বাচন করুন" + }, + "generatePassword": { + "message": "পাসওয়ার্ড তৈরি করুন" + }, + "regeneratePassword": { + "message": "পাসওয়ার্ড পুনঃতৈরি করুন" + }, + "options": { + "message": "বিকল্পসমূহ" + }, + "length": { + "message": "দৈর্ঘ্য" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "শব্দের সংখ্যা" + }, + "wordSeparator": { + "message": "শব্দ বিভাজক" + }, + "capitalize": { + "message": "বড় হাতের করুন", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "নম্বর অন্তর্ভুক্ত করুন" + }, + "minNumbers": { + "message": "সর্বনিম্ন সংখ্যা" + }, + "minSpecial": { + "message": "ন্যূনতম বিশেষ" + }, + "avoidAmbChar": { + "message": "অস্পষ্ট বর্ণগুলি এড়িয়ে চলুন" + }, + "searchVault": { + "message": "ভল্ট খুঁজুন" + }, + "edit": { + "message": "সম্পাদনা" + }, + "view": { + "message": "দেখুন" + }, + "noItemsInList": { + "message": "তালিকার জন্য কোনও বস্তু নেই।" + }, + "itemInformation": { + "message": "বস্তু তথ্য" + }, + "username": { + "message": "ব্যবহারকারীর নাম" + }, + "password": { + "message": "পাসওয়ার্ড" + }, + "passphrase": { + "message": "পাসফ্রেজ" + }, + "favorite": { + "message": "প্রিয়" + }, + "notes": { + "message": "নোট" + }, + "note": { + "message": "নোট" + }, + "editItem": { + "message": "বস্তু সম্পাদনা" + }, + "folder": { + "message": "ফোল্ডার" + }, + "deleteItem": { + "message": "বস্তু মুছুন" + }, + "viewItem": { + "message": "বস্তু দেখুন" + }, + "launch": { + "message": "শুরু" + }, + "website": { + "message": "ওয়েবসাইট" + }, + "toggleVisibility": { + "message": "দৃশ্যমানতা টগল করুন" + }, + "manage": { + "message": "পরিচালনা" + }, + "other": { + "message": "অন্যান্য" + }, + "rateExtension": { + "message": "এক্সটেনশনটি মূল্যায়ন করুন" + }, + "rateExtensionDesc": { + "message": "দয়া করে একটি ভাল পর্যালোচনার মাধ্যমে সাহায্য করতে আমাদের বিবেচনা করুন!" + }, + "browserNotSupportClipboard": { + "message": "আপনার ওয়েব ব্রাউজার সহজে ক্লিপবোর্ড অনুলিপি সমর্থন করে না। পরিবর্তে এটি নিজেই অনুলিপি করুন।" + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "yourVaultIsLocked": { + "message": "আপনার ভল্ট লক করা আছে। চালিয়ে যেতে আপনার মূল পাসওয়ার্ডটি যাচাই করান।" + }, + "unlock": { + "message": "আনলক" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ এ $EMAIL$ হিসাবে লগ ইনকৃত", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "অবৈধ মূল পাসওয়ার্ড" + }, + "vaultTimeout": { + "message": "ভল্টের সময়সীমা" + }, + "lockNow": { + "message": "এখনই লক করুন" + }, + "immediately": { + "message": "সঙ্গে সঙ্গে" + }, + "tenSeconds": { + "message": "১০ সেকেন্ড" + }, + "twentySeconds": { + "message": "২০ সেকেন্ড" + }, + "thirtySeconds": { + "message": "৩০ সেকেন্ড" + }, + "oneMinute": { + "message": "১ মিনিট" + }, + "twoMinutes": { + "message": "২ মিনিট" + }, + "fiveMinutes": { + "message": "৫ মিনিট" + }, + "fifteenMinutes": { + "message": "১৫ মিনিট" + }, + "thirtyMinutes": { + "message": "৩০ মিনিট" + }, + "oneHour": { + "message": "১ ঘণ্টা" + }, + "fourHours": { + "message": "৪ ঘন্টা" + }, + "onLocked": { + "message": "সিস্টেম লকে" + }, + "onRestart": { + "message": "ব্রাউজার পুনঃসূচনাই" + }, + "never": { + "message": "কখনই না" + }, + "security": { + "message": "নিরাপত্তা" + }, + "errorOccurred": { + "message": "একটি ত্রুটি উৎপন্ন হয়েছে" + }, + "emailRequired": { + "message": "ইমেইল ঠিকানা প্রয়োজন।" + }, + "invalidEmail": { + "message": "অকার্যকর ইমেইল ঠিকানা।" + }, + "masterPassRequired": { + "message": "মূল পাসওয়ার্ড প্রয়োজন।" + }, + "masterPassLength": { + "message": "মূল পাসওয়ার্ড কমপক্ষে ৮ অক্ষর দীর্ঘ হওয়া উচিত।" + }, + "masterPassDoesntMatch": { + "message": "মূল পাসওয়ার্ড নিশ্চিতকরণ মেলেনি।" + }, + "newAccountCreated": { + "message": "আপনার নতুন অ্যাকাউন্ট তৈরি করা হয়েছে! আপনি এখন প্রবেশ করতে পারেন।" + }, + "masterPassSent": { + "message": "আমরা আপনাকে আপনার মূল পাসওয়ার্ডের ইঙ্গিত সহ একটি ইমেল প্রেরণ করেছি।" + }, + "verificationCodeRequired": { + "message": "যাচাইকরণ কোড প্রয়োজন।" + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ অনুলিপিত", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "এই পৃষ্ঠায় নির্বাচিত বস্তুটি স্বতঃপূর্ণে অক্ষম। পরিবর্তে তথ্যটি অনুলিপিত করুন এবং আটকান।" + }, + "loggedOut": { + "message": "প্রস্থানকৃত" + }, + "loginExpired": { + "message": "আপনার লগইন মাত্রকালটির মেয়াদ শেষ হয়ে গেছে।" + }, + "logOutConfirmation": { + "message": "আপনি লগ আউট করতে চান?" + }, + "yes": { + "message": "হ্যাঁ" + }, + "no": { + "message": "না" + }, + "unexpectedError": { + "message": "একটি অপ্রত্যাশিত ত্রুটি ঘটেছে।" + }, + "nameRequired": { + "message": "নাম প্রয়োজন।" + }, + "addedFolder": { + "message": "ফোল্ডার জোড়া হয়েছে" + }, + "changeMasterPass": { + "message": "মূল পাসওয়ার্ড পরিবর্তন" + }, + "changeMasterPasswordConfirmation": { + "message": "আপনি bitwarden.com ওয়েব ভল্ট থেকে মূল পাসওয়ার্ডটি পরিবর্তন করতে পারেন। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "twoStepLoginConfirmation": { + "message": "দ্বি-পদক্ষেপ লগইন অন্য ডিভাইসে আপনার লগইনটি যাচাই করার জন্য সিকিউরিটি কী, প্রমাণীকরণকারী অ্যাপ্লিকেশন, এসএমএস, ফোন কল বা ই-মেইল ব্যাবহারের মাধ্যমে আপনার অ্যাকাউন্টকে আরও সুরক্ষিত করে। bitwarden.com ওয়েব ভল্টে দ্বি-পদক্ষেপের লগইন সক্ষম করা যাবে। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "editedFolder": { + "message": "ফোল্ডার সম্পাদিত" + }, + "deleteFolderConfirmation": { + "message": "আপনি কি নিশ্চিত যে এই ফোল্ডারটি মুছতে চান?" + }, + "deletedFolder": { + "message": "ফোল্ডার মোছা হয়েছে" + }, + "gettingStartedTutorial": { + "message": "শুরু করার গৃহশিক্ষা" + }, + "gettingStartedTutorialVideo": { + "message": "ব্রাউজার এক্সটেনশান থেকে কীভাবে সর্বাধিক লাভবান হতে পারবেন তা জানতে আমাদের শুরু করার গৃহশিক্ষাটি দেখুন" + }, + "syncingComplete": { + "message": "সিঙ্কিং সম্পন্ন" + }, + "syncingFailed": { + "message": "সিঙ্কিঙ্গে ব্যর্থ" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "বস্তু যোগ করা হয়েছে" + }, + "editedItem": { + "message": "সম্পাদিত বস্তু" + }, + "deleteItemConfirmation": { + "message": "আপনি কি সত্যিই আবর্জনাতে পাঠাতে চান?" + }, + "deletedItem": { + "message": "বস্তুতটি আবর্জনাতে পাঠানো হয়েছে" + }, + "overwritePassword": { + "message": "ওভাররাইট পাসওয়ার্ড" + }, + "overwritePasswordConfirmation": { + "message": "আপনি কি নিশ্চিত যে আপনি বর্তমান পাসওয়ার্ডটি ওভাররাইট করতে চান?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "ফোল্ডার অনুসন্ধান" + }, + "searchCollection": { + "message": "সংগ্রহ অনুসন্ধান" + }, + "searchType": { + "message": "অনুসন্ধানের ধরন" + }, + "noneFolder": { + "message": "কোন ফোল্ডার নেই", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "লগইন যোগ করুন বিজ্ঞপ্তি অক্ষম করুন" + }, + "addLoginNotificationDesc": { + "message": "\"লগইন যোগ করুন বিজ্ঞপ্তি\" স্বয়ংক্রিয়ভাবে আপনই যখনই প্রথমবারের জন্য লগ ইন করেন তখন আপনার ভল্টে নতুন লগইনগুলি সংরক্ষণ করতে অনুরোধ জানায়।" + }, + "dontShowCardsCurrentTab": { + "message": "ট্যাব পৃষ্ঠায় কার্ডগুলি দেখাবেন না" + }, + "dontShowCardsCurrentTabDesc": { + "message": "আপনার ভল্ট থেকে কার্ড বস্তুগুলি সহজেই স্বতঃপূরণের জন্য 'বর্তমান ট্যাব' পৃষ্ঠাতে তালিকাভুক্ত করা হয়েছে।" + }, + "dontShowIdentitiesCurrentTab": { + "message": "ট্যাব পৃষ্ঠায় পরিচয় দেখাবেন না" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Bitwarden আপনার জন্য এই পাসওয়ার্ডটি মনে রাখবে?" + }, + "notificationAddSave": { + "message": "হ্যাঁ, এখনই সংরক্ষণ করুন" + }, + "disableChangedPasswordNotification": { + "message": "পাসওয়ার্ড পরিবর্তন বিজ্ঞপ্তি অক্ষম করুন" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"পাসওয়ার্ড পরিবর্তন বিজ্ঞপ্তি\" স্বয়ংক্রিয়ভাবে আপনাকে আপনার ভল্টে একটি লগইনের পাসওয়ার্ড হালনাগাদ করার অনুরোধ জানায় যখনই কোনও ওয়েবসাইটে আপনি এটি পরিবর্তন করেছেন তা সনাক্ত করে।" + }, + "notificationChangeDesc": { + "message": "আপনি কি এই পাসওয়ার্ডটি Bitwarden এ হালনাগাদ করতে চান?" + }, + "notificationChangeSave": { + "message": "হ্যাঁ, এখনই হালনাগাদ করুন" + }, + "disableContextMenuItem": { + "message": "প্রসঙ্গ মেনু বিকল্পগুলি অক্ষম করুন" + }, + "disableContextMenuItemDesc": { + "message": "প্রসঙ্গ মেনু বিকল্পগুলি আপনার বর্তমান ট্যাবের ওয়েবসাইটটির জন্য পাসওয়ার্ড তৈরি এবং লগিনগুলি দ্রুত সরবরাহ করে।" + }, + "defaultUriMatchDetection": { + "message": "পূর্ব-নির্ধারিত URI মিল সনাক্তকরণ", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "স্বতঃপূরণের মতো ক্রিয়া সম্পাদন করার সময় লগইনগুলির জন্য URI মিল সনাক্তকরণ যে পূর্ব-নির্ধারিত পদ্ধতিতে পরিচালনা করা হবে তা চয়ন করুন।" + }, + "theme": { + "message": "থিম" + }, + "themeDesc": { + "message": "অ্যাপ্লিকেশনটির রং থিম পরিবর্তন।" + }, + "dark": { + "message": "অন্ধকার", + "description": "Dark color" + }, + "light": { + "message": "উজ্জ্বল", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "আপনার ভল্ট তথ্য রফতানি করতে আপনার মূল পাসওয়ার্ডটি দিন।" + }, + "shared": { + "message": "ভাগকৃত" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "ভাগ করুন" + }, + "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." + }, + "learnMore": { + "message": "আরও জানুন" + }, + "authenticatorKeyTotp": { + "message": "প্রমাণীকরণকারী কী (TOTP)" + }, + "verificationCodeTotp": { + "message": "যাচাইকরণ কোড (TOTP)" + }, + "copyVerificationCode": { + "message": "যাচাইকরণ কোড অনুলিপিত করুন" + }, + "attachments": { + "message": "সংযুক্তি" + }, + "deleteAttachment": { + "message": "সংযুক্তি মুছুন" + }, + "deleteAttachmentConfirmation": { + "message": "আপনি কি এই সংযুক্তিটি মোছার বিষয়ে নিশ্চিত?" + }, + "deletedAttachment": { + "message": "সংযুক্তি মোছা হয়েছে" + }, + "newAttachment": { + "message": "নতুন সংযুক্তি যুক্ত করুন" + }, + "noAttachments": { + "message": "সংযুক্তি নেই।" + }, + "attachmentSaved": { + "message": "সংযুক্তিটি সংরক্ষণ করা হয়েছে।" + }, + "file": { + "message": "ফাইল" + }, + "selectFile": { + "message": "একটি ফাইল নির্বাচন করুন।" + }, + "maxFileSize": { + "message": "সর্বোচ্চ ফাইলের আকার ১০০ এমবি।" + }, + "featureUnavailable": { + "message": "বৈশিষ্ট্য অনুপলব্ধ" + }, + "updateKey": { + "message": "আপনি আপনার এনক্রিপশন কী হালনাগাদ না করা পর্যন্ত এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না।" + }, + "premiumMembership": { + "message": "প্রিমিয়াম সদস্য" + }, + "premiumManage": { + "message": "সদস্যতা পরিচালনা" + }, + "premiumManageAlert": { + "message": "আপনি bitwarden.com ওয়েব ভল্টে আপনার সদস্যপদ পরিচালনা করতে পারেন। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "premiumRefresh": { + "message": "সদস্যতা সতেজ করুন" + }, + "premiumNotCurrentMember": { + "message": "আপনি বর্তমানে প্রিমিয়াম সদস্য নন।" + }, + "premiumSignUpAndGet": { + "message": "প্রিমিয়াম সদস্যতার জন্য সাইন আপ করুন এবং পান:" + }, + "ppremiumSignUpStorage": { + "message": "ফাইল সংযুক্তির জন্য ১ জিবি এনক্রিপ্টেড স্থান।" + }, + "ppremiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F, ও Duo এর মতো অতিরিক্ত দ্বি-পদক্ষেপ লগইন বিকল্পগুলি।" + }, + "ppremiumSignUpReports": { + "message": "আপনার ভল্টটি সুরক্ষিত রাখতে পাসওয়ার্ড স্বাস্থ্যকরন, অ্যাকাউন্ট স্বাস্থ্য এবং ডেটা লঙ্ঘনের প্রতিবেদন।" + }, + "ppremiumSignUpTotp": { + "message": "আপনার ভল্টে লগইনগুলির জন্য TOTP যাচাইকরণ কোড (2FA) উৎপাদক।" + }, + "ppremiumSignUpSupport": { + "message": "অগ্রাধিকার গ্রাহক সমর্থন।" + }, + "ppremiumSignUpFuture": { + "message": "ভবিষ্যতের সমস্ত প্রিমিয়াম বৈশিষ্ট্য। আরও শীঘ্রই আসছে!" + }, + "premiumPurchase": { + "message": "প্রিমিয়াম কিনুন" + }, + "premiumPurchaseAlert": { + "message": "আপনি bitwarden.com ওয়েব ভল্টে প্রিমিয়াম সদস্যতা কিনতে পারেন। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "premiumCurrentMember": { + "message": "আপনি প্রিমিয়াম সদস্য!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden কে সমর্থন করার জন্য আপনাকে ধন্যবাদ।" + }, + "premiumPrice": { + "message": "সমস্ত মাত্র $PRICE$ / বছরের জন্য!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "পুনঃসতেজ সম্পূর্ণ" + }, + "disableAutoTotpCopy": { + "message": "স্বয়ংক্রিয় TOTP অনুলিপি অক্ষম করুন" + }, + "disableAutoTotpCopyDesc": { + "message": "যদি আপনার লগইনের সাথে একটি প্রমাণীকরণ কী থাকে, আপনি যখনই লগইনটি স্বতঃপূরণ করেন তবে TOTP যাচাইকরণ কোডটি স্বয়ংক্রিয়ভাবে আপনার ক্লিপবোর্ডে অনুলিপিত করা হয়।" + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "প্রিমিয়াম আবশ্যক" + }, + "premiumRequiredDesc": { + "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": "আপনার কম্পিউটারের ইউএসবি পোর্টে আপনার সুরক্ষা কী ঢোকান। এটিতে যদি একটি বোতাম থাকে তবে তা স্পর্শ করুন।" + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "loginUnavailable": { + "message": "লগইন অনুপলব্ধ" + }, + "noTwoStepProviders": { + "message": "এই অ্যাকাউন্টে দ্বি-পদক্ষেপ লগইন সক্ষম রয়েছে, তবে কনফিগারকৃত দ্বি-পদক্ষেপ সরবরাহকারীদের কোনওটিই এই ওয়েব ব্রাউজার দ্বারা সমর্থিত নয়।" + }, + "noTwoStepProviders2": { + "message": "দয়া করে একটি সমর্থিত ওয়েব ব্রাউজার ব্যবহার করুন (যেমন ক্রোম) এবং/অথবা অতিরিক্ত সরবরাহকারী যুক্ত করুন যা ওয়েব ব্রাউজারগুলিতে আরও ভাল সমর্থিত (যেমন একটি প্রমাণীকরণকারী অ্যাপ)।" + }, + "twoStepOptions": { + "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": "যাচাই কোডগুলি আপনাকে ই-মেইল করা হবে।" + }, + "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 গুলি সংরক্ষণ করা হয়েছে।" + }, + "enableAutoFillOnPageLoad": { + "message": "পৃষ্ঠা লোডে স্বতঃপূরণ সক্ষম করুন" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "যদি কোনও লগইন ফর্ম সনাক্ত হয়, ওয়েব পৃষ্ঠাটি লোড হওয়ার পরে স্বয়ংক্রিয়ভাবে স্বতঃপূরণ করুন।" + }, + "experimentalFeature": { + "message": "এটি বর্তমানে একটি পরীক্ষামূলক বৈশিষ্ট্য। আপনার নিজ ঝুঁকিতে ব্যবহার করুন।" + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "ভল্ট পপআপ খুলুন" + }, + "commandOpenSidebar": { + "message": "সাইডবারে ভল্ট খুলুন" + }, + "commandAutofillDesc": { + "message": "বর্তমান ওয়েবসাইটটির জন্য সর্বশেষ ব্যবহৃত লগইনটি স্বতঃপূরণ করুন" + }, + "commandGeneratePasswordDesc": { + "message": "ক্লিপবোর্ডে একটি নতুন এলোমেলো পাসওয়ার্ড তৈরি এবং অনুলিপিত করুন" + }, + "commandLockVaultDesc": { + "message": "ভল্ট লক করুন" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "পছন্দসই ক্ষেত্র" + }, + "copyValue": { + "message": "মান অনুলিপিত করুন" + }, + "value": { + "message": "মান" + }, + "newCustomField": { + "message": "নতুন পছন্দসই ক্ষেত্র" + }, + "dragToSort": { + "message": "বাছাই করতে টানুন" + }, + "cfTypeText": { + "message": "পাঠ্য" + }, + "cfTypeHidden": { + "message": "লুকায়িত" + }, + "cfTypeBoolean": { + "message": "বুলিয়ান" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "আপনার যাচাইকরণ কোডটির জন্য আপনার ইমেলটি পরীক্ষা করতে পপআপ উইন্ডোটির বাইরে ক্লিক করলে এই পপআপটি বন্ধ হয়ে যাবে। আপনি কি এই পপআপটি একটি নতুন উইন্ডোতে খুলতে চান যাতে এটি বন্ধ না হয়?" + }, + "popupU2fCloseMessage": { + "message": "ব্রাউজারটি এই পপআপ উইন্ডোতে U2F অনুরোধগুলি প্রক্রিয়া করতে পারে না। আপনি কি এই পপআপটি একটি নতুন উইন্ডোতে খুলতে চান যাতে আপনি U2F ব্যবহার করে লগ ইন করতে পারেন?" + }, + "disableFavicon": { + "message": "ওয়েবসাইট আইকন অক্ষম করুন" + }, + "disableFaviconDesc": { + "message": "ওয়েবসাইট আইকনগুলি আপনার ভল্টের প্রতিটি লগইন বস্তুর পাশে একটি পরিচয়যোগ্য চিত্র সরবরাহ করে।" + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "কার্ডধারীর নাম" + }, + "number": { + "message": "নম্বর" + }, + "brand": { + "message": "ব্র্যান্ড" + }, + "expirationMonth": { + "message": "মেয়াদোত্তীর্ণ মাস" + }, + "expirationYear": { + "message": "মেয়াদোত্তীর্ণ বছর" + }, + "expiration": { + "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": "ডিসেম্বর" + }, + "securityCode": { + "message": "নিরাপত্তা কোড" + }, + "ex": { + "message": "উদাহরণ" + }, + "title": { + "message": "শিরোনাম" + }, + "mr": { + "message": "জনাব" + }, + "mrs": { + "message": "জনাবা" + }, + "ms": { + "message": "জনাবা" + }, + "dr": { + "message": "ডাঃ" + }, + "firstName": { + "message": "নামের প্রথমাংশ" + }, + "middleName": { + "message": "নামের মধ্যাংশ" + }, + "lastName": { + "message": "নামের শেষাংশ" + }, + "fullName": { + "message": "Full Name" + }, + "identityName": { + "message": "পরিচয়ের নাম" + }, + "company": { + "message": "প্রতিষ্ঠান" + }, + "ssn": { + "message": "সামাজিক সুরক্ষা নম্বর" + }, + "passportNumber": { + "message": "পাসপোর্ট নম্বর" + }, + "licenseNumber": { + "message": "লাইসেন্স নম্বর" + }, + "email": { + "message": "ই-মেইল" + }, + "phone": { + "message": "ফোন" + }, + "address": { + "message": "ঠিকানা" + }, + "address1": { + "message": "ঠিকানা ১" + }, + "address2": { + "message": "ঠিকানা ২" + }, + "address3": { + "message": "ঠিকানা ৩" + }, + "cityTown": { + "message": "শহর" + }, + "stateProvince": { + "message": "রাজ্য / প্রদেশ" + }, + "zipPostalCode": { + "message": "জিপ / ডাক কোড" + }, + "country": { + "message": "দেশ" + }, + "type": { + "message": "ধরন" + }, + "typeLogin": { + "message": "লগইন" + }, + "typeLogins": { + "message": "লগিনগুলি" + }, + "typeSecureNote": { + "message": "সুরক্ষিত নোট" + }, + "typeCard": { + "message": "কার্ড" + }, + "typeIdentity": { + "message": "পরিচয়" + }, + "passwordHistory": { + "message": "পাসওয়ার্ড ইতিহাস" + }, + "back": { + "message": "পেছন" + }, + "collections": { + "message": "সংগ্রহ" + }, + "favorites": { + "message": "প্রিয়গুলো" + }, + "popOutNewWindow": { + "message": "একটি নতুন উইন্ডোতে পপ আউট" + }, + "refresh": { + "message": "পুনঃসতেজ" + }, + "cards": { + "message": "কার্ডগুলো" + }, + "identities": { + "message": "পরিচয়" + }, + "logins": { + "message": "লগিনগুলি" + }, + "secureNotes": { + "message": "সুরক্ষিত নোট" + }, + "clear": { + "message": "পরিষ্কার", + "description": "To clear something out. example: To clear browser history." + }, + "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": "বিকল্পগুলি টগল করুন" + }, + "toggleCurrentUris": { + "message": "বর্তমান URIs টগল করুন", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "বর্তমান URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "সংগঠন", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "প্রকার" + }, + "allItems": { + "message": "সকল বস্তু" + }, + "noPasswordsInList": { + "message": "তালিকার জন্য কোনও পাসওয়ার্ড নেই।" + }, + "remove": { + "message": "সরান" + }, + "default": { + "message": "পূর্ব-নির্ধারিত" + }, + "dateUpdated": { + "message": "হালনাগাদকৃত", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "পাসওয়ার্ড হালনাগাদকৃত", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "অবৈধ পিন কোড।" + }, + "unlockWithBiometrics": { + "message": "বায়োমেট্রিক্স দিয়ে আনলক করুন" + }, + "awaitDesktop": { + "message": "ডেস্কটপ থেকে নিশ্চিতকরণের অপেক্ষায়" + }, + "awaitDesktopDesc": { + "message": "ব্রাউজারের জন্য বায়োমেট্রিক্স সক্ষম করতে দয়া করে Bitwarden ডেস্কটপ অ্যাপ্লিকেশনটিতে বায়োমেট্রিক্স ব্যবহার সক্ষম করুন।" + }, + "lockWithMasterPassOnRestart": { + "message": "ব্রাউজার পুনরারম্ভতে মূল পাসওয়ার্ড দিয়ে লক করুন" + }, + "selectOneCollection": { + "message": "কমপক্ষে একটি সংগ্রহ নির্বাচন করুন।" + }, + "cloneItem": { + "message": "বস্তুটি নকল করুন" + }, + "clone": { + "message": "নকল" + }, + "passwordGeneratorPolicyInEffect": { + "message": "এক বা একাধিক সংস্থার নীতিগুলি আপনার উৎপাদকের সেটিংসকে প্রভাবিত করছে।" + }, + "vaultTimeoutAction": { + "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": "বস্তু পুনরুদ্ধারকৃত" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "লগ আউট করা আপনার ভল্টের সমস্ত অ্যাক্সেস সরিয়ে ফেলবে এবং সময়সীমার পরে অনলাইন প্রমাণীকরণের প্রয়োজন। আপনি কি নিশ্চিত যে এই সেটিংটি ব্যবহার করবেন?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "সময়সীমা কর্ম নিশ্চিতকরণ" + }, + "autoFillAndSave": { + "message": "স্বতঃপূরণ ও সংরক্ষণ" + }, + "autoFillSuccessAndSavedUri": { + "message": "স্বতঃপূরণকৃত বস্তু ও সংরক্ষিত URI" + }, + "autoFillSuccess": { + "message": "স্বতঃপূরণকৃত বস্তু" + }, + "setMasterPassword": { + "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": "পরিষেবার শর্তাদি এবং গোপনীয়তা নীতি স্বীকার করা হয়নি।" + }, + "termsOfService": { + "message": "সেবা পাবার শর্ত" + }, + "privacyPolicy": { + "message": "গোপনীয়তা নীতি" + }, + "hintEqualsPassword": { + "message": "আপনার পাসওয়ার্ডের ইঙ্গিতটি আপনার পাসওয়ার্ড হতে পারবে না।" + }, + "ok": { + "message": "ঠিক আছে" + }, + "desktopSyncVerificationTitle": { + "message": "ডেস্কটপ সিঙ্ক যাচাইকরণ" + }, + "desktopIntegrationVerificationText": { + "message": "ডেস্কটপ অ্যাপ্লিকেশন এই আঙুলের ছাপ প্রদর্শন করে কিনা তা যাচাই করুন:" + }, + "desktopIntegrationDisabledTitle": { + "message": "ব্রাউজার একীকরণ সক্ষম নেই" + }, + "desktopIntegrationDisabledDesc": { + "message": "Bitwarden ডেস্কটপ অ্যাপ্লিকেশনটিতে ব্রাউজার ইন্টিগ্রেশন সক্ষম নেই। ডেস্কটপ অ্যাপ্লিকেশন মধ্যে সেটিংস এ দয়া করে এটি সক্ষম করুন।" + }, + "startDesktopTitle": { + "message": "Bitwarden ডেস্কটপ অ্যাপ্লিকেশন শুরু করুন" + }, + "startDesktopDesc": { + "message": "এই ক্রিয়াকলাপ ব্যবহার করার পূর্বে Bitwarden ডেস্কটপ অ্যাপ্লিকেশনটি শুরু করা দরকার।" + }, + "errorEnableBiometricTitle": { + "message": "বায়োমেট্রিক্স সক্ষম করতে অক্ষম" + }, + "errorEnableBiometricDesc": { + "message": "ডেস্কটপ অ্যাপ্লিকেশন দ্বারা কর্মটি বাতিলকৃত" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "ডেস্কটপ অ্যাপ্লিকেশনটি সুরক্ষিত যোগাযোগ চ্যানেলকে অবৈধ করেছে। দয়া করে এই ক্রিয়াটি আবার চেষ্টা করুন" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "ডেস্কটপ যোগাযোগ ব্যাহত" + }, + "nativeMessagingWrongUserDesc": { + "message": "ডেস্কটপ অ্যাপ্লিকেশনটি একটি ভিন্ন অ্যাকাউন্টে লগইনকৃত। উভয় অ্যাপ্লিকেশন একই অ্যাকাউন্টে লগ ইন করা রয়েছে কিনা তা নিশ্চিত করুন।" + }, + "nativeMessagingWrongUserTitle": { + "message": "অ্যাকাউন্ট মেলেনি" + }, + "biometricsNotEnabledTitle": { + "message": "বায়োমেট্রিকস সক্ষম নেই" + }, + "biometricsNotEnabledDesc": { + "message": "ব্রাউজার বায়োমেট্রিক্সের জন্য প্রথমে সেটিংসে ডেস্কটপ বায়োমেট্রিক সক্ষম করা প্রয়োজন।" + }, + "biometricsNotSupportedTitle": { + "message": "বায়োমেট্রিক্স অসমর্থিত" + }, + "biometricsNotSupportedDesc": { + "message": "ব্রাউজার বায়োমেট্রিক্স এই ডিভাইসে সমর্থিত নয়।" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "অনুমতি দেওয়া হয়নি" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bitwarden ডেস্কটপ অ্যাপ্লিকেশনটির সাথে যোগাযোগের অনুমতি ছাড়াই আমরা ব্রাউজার এক্সটেনশনে বায়োমেট্রিক সরবরাহ করতে পারি না। অনুগ্রহপূর্বক আবার চেষ্টা করুন।" + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "personalOwnershipSubmitError": { + "message": "একটি এন্টারপ্রাইজ নীতির কারণে, আপনি আপনার ব্যক্তিগত ভল্টে বস্তুসমূহ সংরক্ষণ করা থেকে সীমাবদ্ধ। একটি প্রতিষ্ঠানের মালিকানা বিকল্পটি পরিবর্তন করুন এবং উপলভ্য সংগ্রহগুলি থেকে চয়ন করুন।" + }, + "personalOwnershipPolicyInEffect": { + "message": "একটি প্রতিষ্ঠানের নীতি আপনার মালিকানা বিকল্পগুলিকে প্রভাবিত করছে।" + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "ফাইল" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "অবসায়িত" + }, + "pendingDeletion": { + "message": "মুছে ফেলার জন্য অপেক্ষমান" + }, + "passwordProtected": { + "message": "পাসওয়ার্ড সুরক্ষিত" + }, + "copySendLink": { + "message": "Send লিঙ্ক কপি করুন", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "পাসওয়ার্ড অপসারণ করুন" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "পাসওয়ার্ড অপসারিত হয়েছে" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "আপনি কি নিশ্চিত যে আপনি এই পাসওয়ার্ডটি অপসারণ করতে চান?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "ইমেইল সত্যায়ন প্রয়োজন" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "updatedMasterPassword": { + "message": "প্রধান পাসওয়ার্ড আপডেট করা হয়েছে" + }, + "updateMasterPassword": { + "message": "প্রধান পাসওয়ার্ড আপডেট করুন" + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "প্রধান পাসওয়ার্ডটি অপসারণ করুন" + }, + "removedMasterPassword": { + "message": "প্রধান পাসওয়ার্ড অপসারিত হয়েছে।" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json new file mode 100644 index 0000000000..c0fc9f75c3 --- /dev/null +++ b/apps/browser/src/_locales/bs/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "login": { + "message": "Log In" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email Address" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "Copy Security Code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "Log Out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Add Folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit Folder" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "Options" + }, + "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" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favorite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "lockNow": { + "message": "Lock Now" + }, + "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" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Browser Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "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?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Save" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Update" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json new file mode 100644 index 0000000000..31b9a37f00 --- /dev/null +++ b/apps/browser/src/_locales/ca/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Administrador de contrasenyes segur i gratuït per a tots els vostres dispositius.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Inicieu sessió o creeu un compte nou per accedir a la caixa forta." + }, + "createAccount": { + "message": "Crea un compte" + }, + "login": { + "message": "Inicia sessió" + }, + "enterpriseSingleSignOn": { + "message": "Inici de sessió únic d'empresa" + }, + "cancel": { + "message": "Cancel·la" + }, + "close": { + "message": "Tanca" + }, + "submit": { + "message": "Envia" + }, + "emailAddress": { + "message": "Adreça electrònica" + }, + "masterPass": { + "message": "Contrasenya mestra" + }, + "masterPassDesc": { + "message": "La contrasenya mestra és la 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 de perdre-la." + }, + "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": "Suggeriment de la contrasenya mestra (opcional)" + }, + "tab": { + "message": "Pestanya" + }, + "myVault": { + "message": "La meua caixa forta" + }, + "tools": { + "message": "Eines" + }, + "settings": { + "message": "Configuració" + }, + "currentTab": { + "message": "Pestanya actual" + }, + "copyPassword": { + "message": "Copia contrasenya" + }, + "copyNote": { + "message": "Copia nota" + }, + "copyUri": { + "message": "Copia URI" + }, + "copyUsername": { + "message": "Copia el nom d'usuari" + }, + "copyNumber": { + "message": "Copia el número" + }, + "copySecurityCode": { + "message": "Copia el codi de seguretat" + }, + "autoFill": { + "message": "Emplenament automàtic" + }, + "generatePasswordCopied": { + "message": "Genera contrasenya (copiada)" + }, + "copyElementIdentifier": { + "message": "Copia nom del camp personalitzat" + }, + "noMatchingLogins": { + "message": "No hi ha inicis de sessió coincidents." + }, + "unlockVaultMenu": { + "message": "1. Desbloquegeu la caixa forta." + }, + "loginToVaultMenu": { + "message": "Inicia sessió a la caixa forta" + }, + "autoFillInfo": { + "message": "No hi ha cap inici de sessió disponible per omplir automàticament la pestanya del navegador actual." + }, + "addLogin": { + "message": "Afegeix un inici de sessió" + }, + "addItem": { + "message": "Afegeix element" + }, + "passwordHint": { + "message": "Pista de 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 la contrasenya mestra" + }, + "continue": { + "message": "Continua" + }, + "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 identitat per continuar." + }, + "account": { + "message": "Compte" + }, + "changeMasterPassword": { + "message": "Canvia la contrasenya mestra" + }, + "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." + }, + "twoStepLogin": { + "message": "Inici de sessió en dues passes" + }, + "logOut": { + "message": "Tanca la sessió" + }, + "about": { + "message": "Quant a" + }, + "version": { + "message": "Versió" + }, + "save": { + "message": "Guarda" + }, + "move": { + "message": "Desplaça" + }, + "addFolder": { + "message": "Afegeix carpeta" + }, + "name": { + "message": "Nom" + }, + "editFolder": { + "message": "Edita la carpeta" + }, + "deleteFolder": { + "message": "Suprimeix carpeta" + }, + "folders": { + "message": "Carpetes" + }, + "noFolders": { + "message": "No hi ha cap carpeta a llistar." + }, + "helpFeedback": { + "message": "Ajuda i comentaris" + }, + "sync": { + "message": "Sincronització" + }, + "syncVaultNow": { + "message": "Sincronitza la caixa forta ara" + }, + "lastSync": { + "message": "Última sincronització:" + }, + "passGen": { + "message": "Generador de contrasenyes" + }, + "generator": { + "message": "Generador", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Genera automàticament contrasenyes fortes i úniques per als vostres inicis de sessió." + }, + "bitWebVault": { + "message": "Caixa forta web de Bitwarden" + }, + "importItems": { + "message": "Importa elements" + }, + "select": { + "message": "Selecciona" + }, + "generatePassword": { + "message": "Genera contrasenya" + }, + "regeneratePassword": { + "message": "Regenera contrasenya" + }, + "options": { + "message": "Opcions" + }, + "length": { + "message": "Longitud" + }, + "uppercase": { + "message": "Majúscula (A-Z)" + }, + "lowercase": { + "message": "Minúscula (a-z)" + }, + "numbers": { + "message": "Números (0-9)" + }, + "specialCharacters": { + "message": "Caràcters especials (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Mínim de caràcters númerics" + }, + "minSpecial": { + "message": "Mínim de caràcters especials" + }, + "avoidAmbChar": { + "message": "Eviteu caràcters ambigus" + }, + "searchVault": { + "message": "Cerca en la caixa forta" + }, + "edit": { + "message": "Edita" + }, + "view": { + "message": "Visualitza" + }, + "noItemsInList": { + "message": "No hi ha cap element a llistar." + }, + "itemInformation": { + "message": "Informació de l'element" + }, + "username": { + "message": "Nom d'usuari" + }, + "password": { + "message": "Contrasenya" + }, + "passphrase": { + "message": "Frase de pas" + }, + "favorite": { + "message": "Preferit" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Nota" + }, + "editItem": { + "message": "Edita l'element" + }, + "folder": { + "message": "Carpeta" + }, + "deleteItem": { + "message": "Suprimeix element" + }, + "viewItem": { + "message": "Mostra element" + }, + "launch": { + "message": "Inicia" + }, + "website": { + "message": "Lloc web" + }, + "toggleVisibility": { + "message": "Commuta la visibilitat" + }, + "manage": { + "message": "Administra" + }, + "other": { + "message": "Altres" + }, + "rateExtension": { + "message": "Valora aquesta extensió" + }, + "rateExtensionDesc": { + "message": "Considereu ajudar-nos amb una bona valoració!" + }, + "browserNotSupportClipboard": { + "message": "El vostre navegador web no admet la còpia fàcil del porta-retalls. Copieu-ho manualment." + }, + "verifyIdentity": { + "message": "Verifica identitat" + }, + "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" + }, + "vaultTimeout": { + "message": "Temps d'espera de la caixa forta" + }, + "lockNow": { + "message": "Bloqueja ara" + }, + "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" + }, + "onLocked": { + "message": "En bloquejar el sistema" + }, + "onRestart": { + "message": "En reiniciar el navegador" + }, + "never": { + "message": "Mai" + }, + "security": { + "message": "Seguretat" + }, + "errorOccurred": { + "message": "S'ha produït un error" + }, + "emailRequired": { + "message": "L'adreça de correu electrònic és obligatoria." + }, + "invalidEmail": { + "message": "L'adreça de correu electrònic no és vàlida." + }, + "masterPassRequired": { + "message": "La contrasenya mestra és obligatòria." + }, + "masterPassLength": { + "message": "La contrasenya mestra 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." + }, + "verificationCodeRequired": { + "message": "El codi de verificació és obligatori." + }, + "invalidVerificationCode": { + "message": "Codi de verificació no vàlid" + }, + "valueCopied": { + "message": "S'ha copiat $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "No es pot omplir automàticament l'element seleccionat en aquesta pàgina. Com a alternativa, copieu i enganxeu la informació." + }, + "loggedOut": { + "message": "Sessió tancada" + }, + "loginExpired": { + "message": "La vostra sessió ha caducat." + }, + "logOutConfirmation": { + "message": "Segur que voleu tancar la sessió?" + }, + "yes": { + "message": "Sí" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "S'ha produït un error inesperat." + }, + "nameRequired": { + "message": "El nom és obligatori." + }, + "addedFolder": { + "message": "Carpeta afegida" + }, + "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?" + }, + "twoStepLoginConfirmation": { + "message": "L'inici de sessió en dues passes fa que el vostre compte siga més segur, ja que obliga a verificar 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?" + }, + "editedFolder": { + "message": "Carpeta editada" + }, + "deleteFolderConfirmation": { + "message": "Esteu segur que voleu suprimir aquesta carpeta?" + }, + "deletedFolder": { + "message": "Carpeta suprimida" + }, + "gettingStartedTutorial": { + "message": "Tutorial d'introducció" + }, + "gettingStartedTutorialVideo": { + "message": "Mireu el nostre tutorial sobre com aprendre a aprofitar al màxim l'extensió del navegador." + }, + "syncingComplete": { + "message": "S'ha completat la sincronització" + }, + "syncingFailed": { + "message": "Ha fallat la sincronització" + }, + "passwordCopied": { + "message": "S'ha copiat la contrasenya" + }, + "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" + }, + "addedItem": { + "message": "Element afegit" + }, + "editedItem": { + "message": "Element editat" + }, + "deleteItemConfirmation": { + "message": "Esteu segur que voleu suprimir aquest element?" + }, + "deletedItem": { + "message": "Element suprimit" + }, + "overwritePassword": { + "message": "Sobreescriu la contrasenya" + }, + "overwritePasswordConfirmation": { + "message": "Esteu segur que voleu sobreescriure la contrasenya actual?" + }, + "overwriteUsername": { + "message": "Sobrescriu el nom d'usuari" + }, + "overwriteUsernameConfirmation": { + "message": "Segur que voleu sobreescriure el nom d'usuari actual?" + }, + "searchFolder": { + "message": "Cerca la carpeta" + }, + "searchCollection": { + "message": "Cerca la col·lecció" + }, + "searchType": { + "message": "Cerca el tipus" + }, + "noneFolder": { + "message": "Cap carpeta", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Deshabilita la notificació per afegir inicis de sessió" + }, + "addLoginNotificationDesc": { + "message": "La \"Notificació per afegir inicis de sessió\" demana automàticament que guardeu els nous inicis de sessió a la vostra caixa forta quan inicieu la sessió per primera vegada." + }, + "dontShowCardsCurrentTab": { + "message": "No mostres les targetes a la pàgina de la pestanya" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Els elements de targeta de la vostra caixa forta es detallen a la pàgina \"Fitxa actual\" per obtenir un fàcil accés amb l'emplenat automàtic." + }, + "dontShowIdentitiesCurrentTab": { + "message": "No mostres les identitats a la pàgina de la pestanya" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Els elements d'identitat de la vostra caixa forta es detallen a la pàgina \"Fitxa actual\" per obtenir un fàcil accés amb l'emplenat automàtic." + }, + "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." + }, + "notificationAddDesc": { + "message": "Bitwarden ha de recordar aquesta contrasenya per a vosaltres?" + }, + "notificationAddSave": { + "message": "Guarda" + }, + "disableChangedPasswordNotification": { + "message": "Deshabilita la notificació de contrasenya modificada" + }, + "disableChangedPasswordNotificationDesc": { + "message": "La \"Notificació de contrasenya modificada\" us demanarà automàticament que actualitzeu la contrasenya d'inici de sessió a la vostra caixa forta cada vegada que detecte que s'ha canviat en un lloc web." + }, + "notificationChangeDesc": { + "message": "Voleu actualitzar aquesta contrasenya a Bitwarden?" + }, + "notificationChangeSave": { + "message": "Actualitza" + }, + "disableContextMenuItem": { + "message": "Inhabilita opcions del menú contextual" + }, + "disableContextMenuItemDesc": { + "message": "Les opcions del menú contextual proporcionen accés ràpid a la generació de contrasenyes i inici de sessió al lloc web en la vostra pestanya actual." + }, + "defaultUriMatchDetection": { + "message": "Detecció de coincidències URI per defecte", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Trieu la manera predeterminada en que es gestiona la detecció de coincidència d'URI per als inicis de sessió en realitzar accions com l'emplenament automàtic." + }, + "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" + }, + "solarizedDark": { + "message": "Solaritzat fosc", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Introduïu la contrasenya mestra per exportar les dades de la caixa forta." + }, + "shared": { + "message": "Compartit" + }, + "learnOrg": { + "message": "Més informació sobre les organitzacions" + }, + "learnOrgConfirmation": { + "message": "Bitwarden us permet compartir els elements de la vostra caixa forta amb altres usuaris mitjançant una organització. Voleu visitar el lloc web de bitwarden.com per obtenir més informació?" + }, + "moveToOrganization": { + "message": "Desplaça a l'organització" + }, + "share": { + "message": "Comparteix" + }, + "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." + }, + "learnMore": { + "message": "Més informació" + }, + "authenticatorKeyTotp": { + "message": "Clau d'autenticació (TOTP)" + }, + "verificationCodeTotp": { + "message": "Codi de verificació (TOTP)" + }, + "copyVerificationCode": { + "message": "Copia el codi de verificació" + }, + "attachments": { + "message": "Adjunts" + }, + "deleteAttachment": { + "message": "Suprimeix l'adjunt" + }, + "deleteAttachmentConfirmation": { + "message": "Esteu segur que voleu suprimir aquest adjunt?" + }, + "deletedAttachment": { + "message": "Adjunt suprimit" + }, + "newAttachment": { + "message": "Afegeix un adjunt nou" + }, + "noAttachments": { + "message": "No hi ha cap 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." + }, + "featureUnavailable": { + "message": "Característica no disponible" + }, + "updateKey": { + "message": "No podeu utilitzar aquesta característica fins que actualitzeu la vostra clau de xifratge." + }, + "premiumMembership": { + "message": "Subscripció Premium" + }, + "premiumManage": { + "message": "Administra la subscripció" + }, + "premiumManageAlert": { + "message": "Podeu administrar 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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB d'emmagatzematge xifrat per als fitxers adjunts." + }, + "ppremiumSignUpTwoStep": { + "message": "Opcions addicionals d'inici de sessió en dues passes com ara YubiKey, FIDO U2F i Duo." + }, + "ppremiumSignUpReports": { + "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." + }, + "ppremiumSignUpTotp": { + "message": "Generador de codi de verificació TOTP (2FA) per a inici de sessió a la vostra caixa forta." + }, + "ppremiumSignUpSupport": { + "message": "Prioritat d'atenció al client." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Deshabilita la còpia TOTP automàtica" + }, + "disableAutoTotpCopyDesc": { + "message": "Si el vostre inici de sessió té una clau d'autenticació associada, el codi de verificació TOTP es copiarà al vostre porta-retalls quan s'òmpliga automàticament l'inici de sessió." + }, + "disableAutoBiometricsPrompt": { + "message": "No sol·liciteu biomètrica en iniciar." + }, + "premiumRequired": { + "message": "Premium requerit" + }, + "premiumRequiredDesc": { + "message": "Cal una subscripció premium per utilitzar aquesta característica." + }, + "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." + }, + "webAuthnNewTab": { + "message": "\nPer iniciar la verificació de WebAuthn 2FA. Feu clic al botó següent per obrir una pestanya nova i seguiu les instruccions d'aquesta." + }, + "webAuthnNewTabOpen": { + "message": "Obri una pestanya nova" + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "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": "Utilitzeu un navegador web compatible (com ara Chrome) o afegiu proveïdors addicionals que siguen compatibles amb tots els navegadors web (com una aplicació d'autenticació)." + }, + "twoStepOptions": { + "message": "Opcions d'inici de sessió en dues passes" + }, + "recoveryCodeDesc": { + "message": "Heu perdut l'accés a tots els vostres proveïdors de dos factors? Utilitzeu el vostre codi de recuperació per desactivar 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." + }, + "selfHostedEnvironment": { + "message": "Entorn d'allotjament propi" + }, + "selfHostedEnvironmentFooter": { + "message": "Especifiqueu l'URL base de la vostra instal·lació de 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." + }, + "enableAutoFillOnPageLoad": { + "message": "Habilita l'emplenament automàtic en carregar la pàgina" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Si es detecta un formulari d'inici de sessió, es realitza automàticament un emplenament automàtic quan es carrega la pàgina web." + }, + "experimentalFeature": { + "message": "Actualment és una característica experimental. Utilitzeu sota el vostre propi risc." + }, + "defaultAutoFillOnPageLoad": { + "message": "Configuració per defecte d'emplenament automàtic per als elements d'inici de sessió" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Després d'habilitar l'emplenament automàtic a la càrrega de la pàgina, podeu habilitar o inhabilitar la característica per a elements d'inici de sessió individuals. Aquesta és la configuració per defecte per als elements d'inici de sessió que no estan configurats per separat." + }, + "itemAutoFillOnPageLoad": { + "message": "Emplenament automàtic a la càrrega de la pàgina (si està habilitat a Opcions)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Utilitza la configuració per defecte" + }, + "autoFillOnPageLoadYes": { + "message": "Emplenament automàtic a la càrrega de la pàgina" + }, + "autoFillOnPageLoadNo": { + "message": "No s'emplena automàticament a la càrrega de la pàgina" + }, + "commandOpenPopup": { + "message": "Obri l'emergent de la caixa forta" + }, + "commandOpenSidebar": { + "message": "Obri la caixa forta a la barra lateral" + }, + "commandAutofillDesc": { + "message": "Ompliu automàticament amb l'últim accés utilitzat per al lloc web actual." + }, + "commandGeneratePasswordDesc": { + "message": "Genera i copia una nova contrasenya aleatòria al porta-retalls." + }, + "commandLockVaultDesc": { + "message": "Tanca la caixa forta" + }, + "privateModeWarning": { + "message": "El suport del mode privat és experimental i algunes funcions són limitades." + }, + "customFields": { + "message": "Camps personalitzats" + }, + "copyValue": { + "message": "Copia el valor" + }, + "value": { + "message": "Valor" + }, + "newCustomField": { + "message": "Camp nou personalitzat" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Valor enllaçat", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Si feu clic a l'exterior de la finestra emergent per comprovar el vostre correu electrònic amb el codi de verificació, es tancarà aquesta finestra. Voleu obrir aquesta finestra emergent en una finestra nova perquè no es tanque?" + }, + "popupU2fCloseMessage": { + "message": "Aquest navegador no pot processar sol·licituds U2F en aquesta finestra emergent. Voleu obrir l'emergent en una finestra nova per poder iniciar la sessió mitjançant U2F?" + }, + "disableFavicon": { + "message": "Deshabilitar 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." + }, + "disableBadgeCounter": { + "message": "Deshabilita el comptador d'insígnies" + }, + "disableBadgeCounterDesc": { + "message": "El comptador d’insígnies indica quants inicis de sessió teniu de la pàgina actual en la vostra caixa forta." + }, + "cardholderName": { + "message": "Nom del titular de la targeta" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expirationMonth": { + "message": "Mes de venciment" + }, + "expirationYear": { + "message": "Any de venciment" + }, + "expiration": { + "message": "Caducitat" + }, + "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" + }, + "securityCode": { + "message": "Codi de seguretat" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Títol" + }, + "mr": { + "message": "Sr." + }, + "mrs": { + "message": "Sra." + }, + "ms": { + "message": "Srta." + }, + "dr": { + "message": "Dr." + }, + "firstName": { + "message": "Nom" + }, + "middleName": { + "message": "Segon nom" + }, + "lastName": { + "message": "Cognoms" + }, + "fullName": { + "message": "Nom complet" + }, + "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" + }, + "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" + }, + "type": { + "message": "Tipus" + }, + "typeLogin": { + "message": "Inici de sessió" + }, + "typeLogins": { + "message": "Inicis de sessió" + }, + "typeSecureNote": { + "message": "Nota segura" + }, + "typeCard": { + "message": "Targeta" + }, + "typeIdentity": { + "message": "Identitat" + }, + "passwordHistory": { + "message": "Historial de les contrasenyes" + }, + "back": { + "message": "Arrere" + }, + "collections": { + "message": "Col·leccions" + }, + "favorites": { + "message": "Preferits" + }, + "popOutNewWindow": { + "message": "Obri en una finestra nova" + }, + "refresh": { + "message": "Actualitza" + }, + "cards": { + "message": "Targetes" + }, + "identities": { + "message": "Identitats" + }, + "logins": { + "message": "Inicis de sessió" + }, + "secureNotes": { + "message": "Notes segures" + }, + "clear": { + "message": "Esborra", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Nom del domini", + "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" + }, + "toggleCurrentUris": { + "message": "Commuta URI actuals", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI actual", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organització", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tipus" + }, + "allItems": { + "message": "Tots els elements" + }, + "noPasswordsInList": { + "message": "No hi ha cap contrasenya a llistar." + }, + "remove": { + "message": "Suprimeix" + }, + "default": { + "message": "Per defecte" + }, + "dateUpdated": { + "message": "Actualitzat", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Contrasenya actualitzada", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Esteu segur que voleu utilitzar l'opció \"Mai\"? En configurar les opcions de bloqueig a \"Mai\" s'emmagatzema la clau de xifratge de la vostra caixa forta al vostre dispositiu. Si utilitzeu aquesta opció, heu d'assegurar-vos que conserveu el dispositiu degudament protegit." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Desbloqueja amb biomètrica" + }, + "awaitDesktop": { + "message": "S’espera confirmació des de l’escriptori" + }, + "awaitDesktopDesc": { + "message": "Confirmeu que utilitzeu la biomètrica a l'aplicació Bitwarden Desktop per habilitar la biomètrica per al navegador." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloqueja amb la contrasenya mestra en reiniciar el navegador" + }, + "selectOneCollection": { + "message": "Heu d'escollir com a mínim una col·lecció." + }, + "cloneItem": { + "message": "Clona l'element" + }, + "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" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Ompli automàticament i guarda" + }, + "autoFillSuccessAndSavedUri": { + "message": "Element emplenat automàticament i URI guardat" + }, + "autoFillSuccess": { + "message": "Element emplenat automàticament " + }, + "setMasterPassword": { + "message": "Estableix la contrasenya mestra" + }, + "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." + }, + "termsOfService": { + "message": "Condicions del servei" + }, + "privacyPolicy": { + "message": "Declaració de privadesa" + }, + "hintEqualsPassword": { + "message": "El vostre suggeriment de contrasenya no pot ser el mateix que la vostra contrasenya." + }, + "ok": { + "message": "D’acord" + }, + "desktopSyncVerificationTitle": { + "message": "Verificació de sincronització d'escriptori" + }, + "desktopIntegrationVerificationText": { + "message": "Verifiqueu que l'aplicació d'escriptori mostre aquesta empremta digital:" + }, + "desktopIntegrationDisabledTitle": { + "message": "La integració en el navegador no està habilitada" + }, + "desktopIntegrationDisabledDesc": { + "message": "La integració del navegador no està habilitada a l'aplicació Bitwarden Desktop. Activeu-la a la configuració de l'aplicació d'escriptori." + }, + "startDesktopTitle": { + "message": "Inicia l'aplicació Bitwarden Desktop" + }, + "startDesktopDesc": { + "message": "Per poder utilitzar aquesta funció, cal iniciar l'aplicació Bitwarden Desktop." + }, + "errorEnableBiometricTitle": { + "message": "No es pot habilitar la biomètrica" + }, + "errorEnableBiometricDesc": { + "message": "L'aplicació d'escriptori ha cancel·lat l'acció" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "L'aplicació d'escriptori ha invalidat el canal de comunicació segur. Torneu a provar aquesta operació" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "S'ha interromput la comunicació d'escriptori" + }, + "nativeMessagingWrongUserDesc": { + "message": "L'aplicació d'escriptori està iniciada en un compte diferent. Assegureu-vos que totes dues aplicacions estiguen connectades al mateix compte." + }, + "nativeMessagingWrongUserTitle": { + "message": "El compte no coincideix" + }, + "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ó." + }, + "biometricsNotSupportedTitle": { + "message": "La biomètrica no és compatible" + }, + "biometricsNotSupportedDesc": { + "message": "La biometria del navegador no és compatible amb aquest dispositiu." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "No s'ha proporcionat el permís" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Sense permís per comunicar-nos amb l’aplicació d’escriptori Bitwarden, no podem proporcionar dades biomètriques a l’extensió del navegador. Torneu-ho a provar." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Error de sol·licitud de permís" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Aquesta acció no es pot fer a la barra lateral, torneu-ho a provar a la finestra emergent o l'emergent." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Una política d’organització afecta les vostres opcions de propietat." + }, + "excludedDomains": { + "message": "Dominis exclosos" + }, + "excludedDomainsDesc": { + "message": "Bitwarden no demanarà que es guarden les dades d’inici de sessió d’aquests dominis. Heu d'actualitzar la pàgina perquè els canvis tinguen efecte." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ no és un domini vàlid", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Cerca Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Afig Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "Fitxer" + }, + "allSends": { + "message": "Tots els Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "S'ha assolit el recompte màxim d'accesos", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Caducat" + }, + "pendingDeletion": { + "message": "Pendent de supressió" + }, + "passwordProtected": { + "message": "Protegit amb contrasenya" + }, + "copySendLink": { + "message": "Copia l'enllaç Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Suprimeix la contrasenya" + }, + "delete": { + "message": "Suprimeix" + }, + "removedPassword": { + "message": "Contrasenya suprimida" + }, + "deletedSend": { + "message": "Send suprimit", + "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." + }, + "disabled": { + "message": "Deshabilitat" + }, + "removePasswordConfirmation": { + "message": "Esteu segur que voleu suprimir la contrasenya?" + }, + "deleteSend": { + "message": "Suprimeix el Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edita Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Un nom apropiat per descriure aquest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "El fitxer que voleu enviar." + }, + "deletionDate": { + "message": "Data de supressió" + }, + "deletionDateDesc": { + "message": "L'enviament 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 enviament 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." + }, + "oneDay": { + "message": "1 dia" + }, + "days": { + "message": "$DAYS$ dies", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Personalitzat" + }, + "maximumAccessCount": { + "message": "Recompte màxim d'accessos" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "message": "Desactiveu 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." + }, + "sendShareDesc": { + "message": "Copieu l'enllaç d'aquest Send al porta-retalls després de guardar-lo.", + "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." + }, + "sendHideText": { + "message": "Amaga el text d'aquest Send per defecte.", + "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" + }, + "createSend": { + "message": "Crea un nou Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Contrasenya nova" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Per triar un fitxer, obriu l'extensió a la barra lateral (si és possible) o eixiu a una finestra nova fent clic a aquest bàner." + }, + "sendFirefoxFileWarning": { + "message": "Per triar un fitxer mitjançant Firefox, obriu l'extensió a la barra lateral o bé apareixerà a una finestra nova fent clic a aquest bàner." + }, + "sendSafariFileWarning": { + "message": "Per triar un fitxer mitjançant Safari, eixiu a una finestra nova fent clic en aquest bàner." + }, + "sendFileCalloutHeader": { + "message": "Abans de començar" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Per utilitzar un selector de dates d'estil calendari", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "feu clic ací", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "per eixir de la finestra.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "La data de caducitat proporcionada no és vàlida." + }, + "deletionDateIsInvalid": { + "message": "La data de supressió proporcionada no és vàlida." + }, + "expirationDateAndTimeRequired": { + "message": "Requereix una data i hora de caducitat." + }, + "deletionDateAndTimeRequired": { + "message": "Requereix una data i hora de supressió." + }, + "dateParsingError": { + "message": "S'ha produït un error en guardar les dates de supressió i caducitat." + }, + "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." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Es requereix verificació del correu electrònic" + }, + "emailVerificationRequiredDesc": { + "message": "Heu de verificar el correu electrònic per utilitzar aquesta característica. Podeu verificar el vostre correu electrònic a la caixa forta web." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Seleccioneu la carpeta..." + }, + "ssoCompleteRegistration": { + "message": "Per completar la sessió amb SSO, configureu una contrasenya mestra per accedir i protegir la vostra caixa forta." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "El temps d'espera de la caixa forta supera les restriccions establertes per la vostra organització." + }, + "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." + }, + "copyCustomFieldNameInvalidElement": { + "message": "No es pot identificar un element de formulari vàlid. Proveu d'inspeccionar l'HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "No s'ha trobat cap identificador únic." + }, + "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 organització" + }, + "removeMasterPassword": { + "message": "Suprimiu la contrasenya mestra" + }, + "removedMasterPassword": { + "message": "S'ha suprimit la contrasenya mestra" + }, + "leaveOrganizationConfirmation": { + "message": "Segur que voleu abandonar aquesta organització?" + }, + "leftOrganization": { + "message": "Heu deixat l'organització." + }, + "toggleCharacterCount": { + "message": "Commuta el recompte de caràcters" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "regenerateUsername": { + "message": "Regenera el nom d'usuari" + }, + "generateUsername": { + "message": "Genera un nom d'usuari" + }, + "usernameType": { + "message": "Tipus de nom d'usuari" + }, + "plusAddressedEmail": { + "message": "Adreça amb sufix", + "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": "Aleatori" + }, + "randomWord": { + "message": "Paraula aleatòria" + }, + "websiteName": { + "message": "Nom del lloc web" + }, + "whatWouldYouLikeToGenerate": { + "message": "Què voleu generar?" + }, + "passwordType": { + "message": "Tipus de contrasenya" + }, + "service": { + "message": "Servei" + } +} diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json new file mode 100644 index 0000000000..e1de780a93 --- /dev/null +++ b/apps/browser/src/_locales/cs/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden – Bezplatný správce hesel", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bezpečný a bezplatný správce hesel pro všechna vaše zařízení.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Pro přístup do vašeho bezpečného trezoru se přihlašte nebo si vytvořte nový účet." + }, + "createAccount": { + "message": "Vytvořit účet" + }, + "login": { + "message": "Přihlásit se" + }, + "enterpriseSingleSignOn": { + "message": "Jednotné podnikové přihlášení" + }, + "cancel": { + "message": "Zrušit" + }, + "close": { + "message": "Zavřít" + }, + "submit": { + "message": "Potvrdit" + }, + "emailAddress": { + "message": "E-mailová adresa" + }, + "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é)" + }, + "tab": { + "message": "Karta" + }, + "myVault": { + "message": "Můj trezor" + }, + "tools": { + "message": "Nástroje" + }, + "settings": { + "message": "Nastavení" + }, + "currentTab": { + "message": "Aktuální karta" + }, + "copyPassword": { + "message": "Kopírovat heslo" + }, + "copyNote": { + "message": "Kopírovat poznámku" + }, + "copyUri": { + "message": "Kopírovat URI" + }, + "copyUsername": { + "message": "Kopírovat uživatelské jméno" + }, + "copyNumber": { + "message": "Kopírovat číslo" + }, + "copySecurityCode": { + "message": "Kopírovat bezpečnostní kód" + }, + "autoFill": { + "message": "Automatické vyplnění" + }, + "generatePasswordCopied": { + "message": "Vygenerovat heslo a zkopírovat do schránky" + }, + "copyElementIdentifier": { + "message": "Kopírovat název vlastního pole" + }, + "noMatchingLogins": { + "message": "Žádné odpovídající přihlašovací údaje." + }, + "unlockVaultMenu": { + "message": "Odemknout váš trezor" + }, + "loginToVaultMenu": { + "message": "Přihlaste se do svého trezoru" + }, + "autoFillInfo": { + "message": "Pro aktuální stránku neexistují žádné přihlašovací údaje." + }, + "addLogin": { + "message": "Přidat přihlašovací údaje" + }, + "addItem": { + "message": "Přidat položku" + }, + "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" + }, + "continue": { + "message": "Pokračovat" + }, + "sendVerificationCode": { + "message": "Poslat ověřovací kód na váš e-mail" + }, + "sendCode": { + "message": "Poslat kód" + }, + "codeSent": { + "message": "Kód odeslán" + }, + "verificationCode": { + "message": "Ověřovací kód" + }, + "confirmIdentity": { + "message": "Pro pokračování potvrďte svou identitu." + }, + "account": { + "message": "Účet" + }, + "changeMasterPassword": { + "message": "Změnit hlavní heslo" + }, + "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." + }, + "twoStepLogin": { + "message": "Dvoufázové přihlášení" + }, + "logOut": { + "message": "Odhlásit se" + }, + "about": { + "message": "O rozšíření" + }, + "version": { + "message": "Verze" + }, + "save": { + "message": "Uložit" + }, + "move": { + "message": "Přesunout" + }, + "addFolder": { + "message": "Přidat složku" + }, + "name": { + "message": "Název" + }, + "editFolder": { + "message": "Upravit složku" + }, + "deleteFolder": { + "message": "Smazat složku" + }, + "folders": { + "message": "Složky" + }, + "noFolders": { + "message": "Nejsou k dispozici žádné složky." + }, + "helpFeedback": { + "message": "Nápověda a zpětná vazba" + }, + "sync": { + "message": "Synchronizace" + }, + "syncVaultNow": { + "message": "Synchronizovat nyní" + }, + "lastSync": { + "message": "Poslední synchronizace:" + }, + "passGen": { + "message": "Generátor hesla" + }, + "generator": { + "message": "Generátor", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Vygenerujte si silné a unikátní heslo pro přihlašovací údaje." + }, + "bitWebVault": { + "message": "Webová aplikace" + }, + "importItems": { + "message": "Importovat položky" + }, + "select": { + "message": "Vybrat" + }, + "generatePassword": { + "message": "Vygenerovat heslo" + }, + "regeneratePassword": { + "message": "Vygenerovat další heslo" + }, + "options": { + "message": "Možnosti" + }, + "length": { + "message": "Délka" + }, + "uppercase": { + "message": "Velká písmena (A-Z)" + }, + "lowercase": { + "message": "Malá písmena (a-z)" + }, + "numbers": { + "message": "Čísla (0-9)" + }, + "specialCharacters": { + "message": "Speciální znaky (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Minimální počet čísel" + }, + "minSpecial": { + "message": "Minimální počet speciálních znaků" + }, + "avoidAmbChar": { + "message": "Nepoužít zaměnitelné znaky" + }, + "searchVault": { + "message": "Vyhledat v trezoru" + }, + "edit": { + "message": "Upravit" + }, + "view": { + "message": "Zobrazit" + }, + "noItemsInList": { + "message": "Žádné položky k zobrazení." + }, + "itemInformation": { + "message": "Informace o položce" + }, + "username": { + "message": "Uživatelské jméno" + }, + "password": { + "message": "Heslo" + }, + "passphrase": { + "message": "Heslová fráze" + }, + "favorite": { + "message": "Oblíbené" + }, + "notes": { + "message": "Poznámky" + }, + "note": { + "message": "Poznámka" + }, + "editItem": { + "message": "Upravit položku" + }, + "folder": { + "message": "Složka" + }, + "deleteItem": { + "message": "Smazat položku" + }, + "viewItem": { + "message": "Zobrazit položku" + }, + "launch": { + "message": "Spustit" + }, + "website": { + "message": "Webová stránka" + }, + "toggleVisibility": { + "message": "Přepnout viditelnost" + }, + "manage": { + "message": "Správa" + }, + "other": { + "message": "Ostatní" + }, + "rateExtension": { + "message": "Ohodnotit rozšíření" + }, + "rateExtensionDesc": { + "message": "Pomozte nám napsáním dobré recenze!" + }, + "browserNotSupportClipboard": { + "message": "Váš webový prohlížeč nepodporuje automatické kopírování do schránky. Musíte ho zkopírovat ručně." + }, + "verifyIdentity": { + "message": "Ověřit identitu" + }, + "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" + }, + "vaultTimeout": { + "message": "Časový limit trezoru" + }, + "lockNow": { + "message": "Zamknout nyní" + }, + "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" + }, + "onLocked": { + "message": "Při uzamknutí systému" + }, + "onRestart": { + "message": "Při restartu prohlížeče" + }, + "never": { + "message": "Nikdy" + }, + "security": { + "message": "Zabezpečení" + }, + "errorOccurred": { + "message": "Došlo k chybě" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Ověřovací kód je povinný." + }, + "invalidVerificationCode": { + "message": "Neplatný ověřovací kód" + }, + "valueCopied": { + "message": "Zkopírováno: $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Vybrané přihlašovací údaje nelze na této stránce automaticky vyplnit. Zkopírujte a vložte své přihlašovací údaje ručně." + }, + "loggedOut": { + "message": "Odhlášení" + }, + "loginExpired": { + "message": "Platnost přihlášení vypršela." + }, + "logOutConfirmation": { + "message": "Opravdu se chcete odhlásit?" + }, + "yes": { + "message": "Ano" + }, + "no": { + "message": "Ne" + }, + "unexpectedError": { + "message": "Došlo k neznámé chybě." + }, + "nameRequired": { + "message": "Název je povinný." + }, + "addedFolder": { + "message": "Složka byla přidána" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Složka byla upravena" + }, + "deleteFolderConfirmation": { + "message": "Opravdu chcete tuto složku smazat?" + }, + "deletedFolder": { + "message": "Složka byla smazána" + }, + "gettingStartedTutorial": { + "message": "Průvodce pro začátečníky" + }, + "gettingStartedTutorialVideo": { + "message": "Podívejte se na našeho průvodce pro začátečníky a zjistěte, jak používat naše rozšíření prohlížeče." + }, + "syncingComplete": { + "message": "Synchronizace je dokončena" + }, + "syncingFailed": { + "message": "Synchronizace selhala" + }, + "passwordCopied": { + "message": "Heslo bylo zkopírováno" + }, + "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" + }, + "addedItem": { + "message": "Položka byla přidána" + }, + "editedItem": { + "message": "Položka byla upravena" + }, + "deleteItemConfirmation": { + "message": "Opravdu chcete položku přesunout do koše?" + }, + "deletedItem": { + "message": "Položka byla přesunuta do koše" + }, + "overwritePassword": { + "message": "Přepsat heslo" + }, + "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?" + }, + "searchFolder": { + "message": "Vyhledat ve složce" + }, + "searchCollection": { + "message": "Vyledat v kolekci" + }, + "searchType": { + "message": "Typ hledání" + }, + "noneFolder": { + "message": "Žádná složka", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Vypnout oznámení Přidat přihlašovací údaje" + }, + "addLoginNotificationDesc": { + "message": "Oznámení „Přidat přihlašovací údaje“ automaticky vyzve k uložení přihlašovacích údajů do trezoru, pokud se s nimi přihlašujete poprvé." + }, + "dontShowCardsCurrentTab": { + "message": "Nezobrazovat karty na stránce Karta" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Položky karet jsou zobrazovány na stránce „Karta“ pro usnadnění automatického vyplňování." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Nezobrazovat identity na stránce Karta" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Položky identit jsou zobrazovány na stránce „Karta“ pro usnadnění automatického vyplňování." + }, + "clearClipboard": { + "message": "Vyčistit 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." + }, + "notificationAddDesc": { + "message": "Má si pro vás Bitwarden toto heslo pamatovat?" + }, + "notificationAddSave": { + "message": "Ano, uložit nyní" + }, + "disableChangedPasswordNotification": { + "message": "Vypnout oznámení o změněném heslu" + }, + "disableChangedPasswordNotificationDesc": { + "message": "„Oznámení o změněném heslu“ vás automaticky požádá o potvrzení uložení aktualizovaného hesla v případě, že aplikace rozpozná vámi provedenou změnu hesla na webu." + }, + "notificationChangeDesc": { + "message": "Chcete aktualizovat toto heslo v Bitwarden?" + }, + "notificationChangeSave": { + "message": "Ano, aktualizovat" + }, + "disableContextMenuItem": { + "message": "Vypnout kontextové menu" + }, + "disableContextMenuItemDesc": { + "message": "Kontextové menu poskytuje rychlý přístup k automatickému vyplnění, zkopírování nebo vygenerování přihlašovacích údajů pro aktuální stránku." + }, + "defaultUriMatchDetection": { + "message": "Výchozí zjišťování shody URI", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Vyberte výchozí způsob, jakým se detekuje shoda URI přihlašovacích údajů. Používá se například pro automatické vyplňování." + }, + "theme": { + "message": "Motiv" + }, + "themeDesc": { + "message": "Změna barevného motivu aplikace." + }, + "dark": { + "message": "Tmavý", + "description": "Dark color" + }, + "light": { + "message": "Světlý", + "description": "Light color" + }, + "solarizedDark": { + "message": "Tmavý –⁠ Solarized", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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 účtu jsou pro každý uživatelský účet Bitwarden jedinečné, takže nelze importovat šifrovaný export do jiného účtu." + }, + "exportMasterPassword": { + "message": "Zadejte své hlavní heslo pro export dat." + }, + "shared": { + "message": "Sdílené" + }, + "learnOrg": { + "message": "Zjistěte více o organizacích" + }, + "learnOrgConfirmation": { + "message": "Bitwarden umožňuje sdílet vaše položky v trezoru s ostatními prostřednictvím organizace. Chcete přejít na bitwarden.com a dozvědět se více?" + }, + "moveToOrganization": { + "message": "Přesunout do organizace" + }, + "share": { + "message": "Sdílet" + }, + "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." + }, + "learnMore": { + "message": "Dozvědět se více" + }, + "authenticatorKeyTotp": { + "message": "Autentizační klíč (TOTP)" + }, + "verificationCodeTotp": { + "message": "Ověřovací kód (TOTP)" + }, + "copyVerificationCode": { + "message": "Zkopírovat ověřovací kód" + }, + "attachments": { + "message": "Přílohy" + }, + "deleteAttachment": { + "message": "Smazat přílohu" + }, + "deleteAttachmentConfirmation": { + "message": "Opravdu chcete tuto přílohu smazat?" + }, + "deletedAttachment": { + "message": "Příloha byla smazána" + }, + "newAttachment": { + "message": "Přidat přílohu" + }, + "noAttachments": { + "message": "Žádné přílohy." + }, + "attachmentSaved": { + "message": "Příloha byla uložena" + }, + "file": { + "message": "Soubor" + }, + "selectFile": { + "message": "Vybrat soubor." + }, + "maxFileSize": { + "message": "Maximální velikost souboru je 500 MB." + }, + "featureUnavailable": { + "message": "Funkce není dostupná" + }, + "updateKey": { + "message": "Tuto funkci nemůžete použít dokud neaktualizujete svůj šifrovací klíč." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB šifrovaného úložiště pro přílohy." + }, + "ppremiumSignUpTwoStep": { + "message": "Další možnosti dvoufázového přihlášení, jako je například YubiKey, FIDO U2F a Duo." + }, + "ppremiumSignUpReports": { + "message": "Reporty o hygieně vašich hesel, zdraví účtu a narušeních bezpečnosti." + }, + "ppremiumSignUpTotp": { + "message": "Generátor TOTP kódu dvoufázového přihlašování (2FA) pro přihlašovací údaje ve vašem trezoru." + }, + "ppremiumSignUpSupport": { + "message": "Prioritní zákaznickou podporu." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Vypnout automatické kopírování kódu TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Pokud mají vaše přihlašovací údaje přidán autentizační klíč pro TOTP, vygenerovaný ověřovací kód (TOTP) se automaticky zkopíruje do schránky při každém automatickém vyplnění přihlašovacích údajů." + }, + "disableAutoBiometricsPrompt": { + "message": "Neptat se na biometriku při spuštění." + }, + "premiumRequired": { + "message": "Vyžaduje prémiové členství" + }, + "premiumRequiredDesc": { + "message": "Pro použití této funkce je potřebné prémiové členství." + }, + "enterVerificationCodeApp": { + "message": "Zadejte 6mí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." + }, + "webAuthnNewTab": { + "message": "Pokračujte v ověřování WebAuthn 2FA na nové kartě." + }, + "webAuthnNewTabOpen": { + "message": "Otevřít novou kartu" + }, + "webAuthnAuthenticate": { + "message": "Ověřit WebAuthn" + }, + "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 prohlížeči podporován." + }, + "noTwoStepProviders2": { + "message": "Použijte prosím podporovaný webový prohlížeč (například Chrome) a přidejte další poskytovatele, kteří lépe podporují více různých webových prohlížečích (jako například ověřovací aplikace)." + }, + "twoStepOptions": { + "message": "Možnosti dvoufázového přihlášení" + }, + "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." + }, + "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" + }, + "enableAutoFillOnPageLoad": { + "message": "Automaticky vyplnit údaje při načtení stránky" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Pokud je zjištěn přihlašovací formulář, automaticky se při načítání webové stránky vyplní přihlašovací údaje." + }, + "experimentalFeature": { + "message": "Toto je momentálně experimentální funkce. Použijte na vlastní riziko." + }, + "defaultAutoFillOnPageLoad": { + "message": "Výchozí nastavení automatického vyplňování pro položky přihlášení" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Po povolení automatického vyplňování při načtení stránky můžete tuto funkci povolit nebo zakázat pro jednotlivé položky přihlášení. Toto je výchozí nastavení pro položky přihlášení, které nejsou samostatně konfigurovány." + }, + "itemAutoFillOnPageLoad": { + "message": "Automatické vyplnění při načtení stránky (pokud je povoleno v nastavení)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Použít výchozí nastavení" + }, + "autoFillOnPageLoadYes": { + "message": "Automatické vyplnění při načtení stránky" + }, + "autoFillOnPageLoadNo": { + "message": "Nevyplňovat automaticky při načtení stránky" + }, + "commandOpenPopup": { + "message": "Otevřít vyskakovací okno trezoru" + }, + "commandOpenSidebar": { + "message": "Otevřít trezor v postranním panelu" + }, + "commandAutofillDesc": { + "message": "Automaticky vyplnit poslední použité přihlašovací údaje pro tuto stránku." + }, + "commandGeneratePasswordDesc": { + "message": "Vygenerovat a zkopírovat nové náhodné heslo do schránky." + }, + "commandLockVaultDesc": { + "message": "Zamknout trezor" + }, + "privateModeWarning": { + "message": "Podpora soukromého režimu je experimentální a některé funkce jsou omezené." + }, + "customFields": { + "message": "Vlastní pole" + }, + "copyValue": { + "message": "Zkopírovat hodnotu" + }, + "value": { + "message": "Hodnota" + }, + "newCustomField": { + "message": "Nové vlastní pole" + }, + "dragToSort": { + "message": "Přetáhnutím seřadíte" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Skryté" + }, + "cfTypeBoolean": { + "message": "Ano/Ne" + }, + "cfTypeLinked": { + "message": "Propojené", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Propojená hodnota", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Klepnutím mimo vyskakovací okno při zjišťování ověřovacího kódu zaslaného na e-mail bude vyskakovací okno zavřeno. Chcete otevřít toto vyskakovací okno v novém okně, aby se nezavřelo?" + }, + "popupU2fCloseMessage": { + "message": "Tento prohlížeč nemůže zpracovat U2F požadavky ve vyskakovacím okně. Chcete otevřít toto vyskakovací okno v novém okně, abyste se mohli přihlásit pomocí U2F?" + }, + "disableFavicon": { + "message": "Vypnout 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." + }, + "disableBadgeCounter": { + "message": "Nezobrazovat počet přihlašovacích údajů" + }, + "disableBadgeCounterDesc": { + "message": "Počítadlo zobrazuje, kolik přihlašovacích údajů máte pro aktuální stránku ve svém trezoru." + }, + "cardholderName": { + "message": "Jméno držitele karty" + }, + "number": { + "message": "Číslo" + }, + "brand": { + "message": "Značka" + }, + "expirationMonth": { + "message": "Měsíc expirace" + }, + "expirationYear": { + "message": "Rok expirace" + }, + "expiration": { + "message": "Expirace" + }, + "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" + }, + "securityCode": { + "message": "Bezpečnostní kód" + }, + "ex": { + "message": "např." + }, + "title": { + "message": "Oslovení" + }, + "mr": { + "message": "Pan" + }, + "mrs": { + "message": "Paní" + }, + "ms": { + "message": "Slečna" + }, + "dr": { + "message": "MUDr" + }, + "firstName": { + "message": "Jméno" + }, + "middleName": { + "message": "Druhé jméno" + }, + "lastName": { + "message": "Příjmení" + }, + "fullName": { + "message": "Celé jméno" + }, + "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" + }, + "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" + }, + "type": { + "message": "Typ" + }, + "typeLogin": { + "message": "Přihlašovací údaje" + }, + "typeLogins": { + "message": "Přihlašovací údaje" + }, + "typeSecureNote": { + "message": "Poznámka" + }, + "typeCard": { + "message": "Karta" + }, + "typeIdentity": { + "message": "Identita" + }, + "passwordHistory": { + "message": "Historie hesel" + }, + "back": { + "message": "Zpět" + }, + "collections": { + "message": "Kolekce" + }, + "favorites": { + "message": "Oblíbené" + }, + "popOutNewWindow": { + "message": "Otevřít v novém okně" + }, + "refresh": { + "message": "Obnovit" + }, + "cards": { + "message": "Karty" + }, + "identities": { + "message": "Identity" + }, + "logins": { + "message": "Přihlašovací údaje" + }, + "secureNotes": { + "message": "Poznámky" + }, + "clear": { + "message": "Vymazat", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Přepnout zobrazení aktuálních URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Aktuální URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organizace", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Typy" + }, + "allItems": { + "message": "Všechny položky" + }, + "noPasswordsInList": { + "message": "Nejsou k dispozici žádná hesla." + }, + "remove": { + "message": "Smazat" + }, + "default": { + "message": "Výchozí" + }, + "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" + }, + "neverLockWarning": { + "message": "Opravdu chcete použít možnost „Nikdy“? Nastavením možností uzamčení na „Nikdy“ bude šifrovací klíč k trezoru uložen přímo ve vašem zařízení. Pokud tuto možnost použijete, měli byste vaše zařízení řádně zabezpečit a chránit." + }, + "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": "Zvolené hlavní heslo 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." + }, + "unlockWithBiometrics": { + "message": "Odemknout pomocí biometrie" + }, + "awaitDesktop": { + "message": "Čeká se na potvrzení z aplikace v počítači" + }, + "awaitDesktopDesc": { + "message": "Prosím potvrďte použití biometrie v desktopové Bitwarden aplikaci, pro povolení biometrie v prohlížeči." + }, + "lockWithMasterPassOnRestart": { + "message": "Zamknout trezor při restartu prohlížeče pomocí hlavního hesla" + }, + "selectOneCollection": { + "message": "Musíte vybrat alespoň jednu kolekci." + }, + "cloneItem": { + "message": "Duplikovat položku" + }, + "clone": { + "message": "Duplikovat" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedna nebo více zásad organizace ovlivňují nastavení generátoru." + }, + "vaultTimeoutAction": { + "message": "Akce při vypršení časového limitu" + }, + "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": "Položka byla trvale smazána" + }, + "restoreItem": { + "message": "Obnovit položku" + }, + "restoreItemConfirmation": { + "message": "Opravdu chcete tuto položku obnovit?" + }, + "restoredItem": { + "message": "Položka byla obnovena" + }, + "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" + }, + "autoFillAndSave": { + "message": "Automaticky vyplnit a uložit" + }, + "autoFillSuccessAndSavedUri": { + "message": "Položka byla automaticky vyplněna a uloženo URI" + }, + "autoFillSuccess": { + "message": "Položka byla automaticky vyplněna" + }, + "setMasterPassword": { + "message": "Nastavit hlavní 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 organizace." + }, + "acceptPolicies": { + "message": "Zaškrtnutím tohoto políčka souhlasím s následujícím:" + }, + "acceptPoliciesError": { + "message": "Podmínky použití a zásady ochrany osobních údajů nebyly odsouhlaseny." + }, + "termsOfService": { + "message": "Podmínky použití" + }, + "privacyPolicy": { + "message": "Zásady ochrany osobních údajů" + }, + "hintEqualsPassword": { + "message": "Nápověda k vašemu heslu nemůže být stejná jako vaše heslo." + }, + "ok": { + "message": "OK" + }, + "desktopSyncVerificationTitle": { + "message": "Ověření synchronizace s desktopovou aplikací" + }, + "desktopIntegrationVerificationText": { + "message": "Ověřte, zda desktopová aplikace zobrazuje tento otisk: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Integrace prohlížeče není povolena" + }, + "desktopIntegrationDisabledDesc": { + "message": "Integrace prohlížeče není povolena v aplikaci Bitwarden. Povolte ji prosím v nastavení v aplikaci pro počítač." + }, + "startDesktopTitle": { + "message": "Spustit aplikaci Bitwarden" + }, + "startDesktopDesc": { + "message": "Počítačová aplikace Bitwarden musí být spuštěna před použitím této funkce." + }, + "errorEnableBiometricTitle": { + "message": "Nelze povolit biometrii" + }, + "errorEnableBiometricDesc": { + "message": "Akce byla zrušena aplikací pro počítač" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Aplikace pro počítač zrušila platnost zabezpečeného komunikačního kanálu. Zkuste to prosím znovu" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Komunikace s počítačovou aplikací přerušena" + }, + "nativeMessagingWrongUserDesc": { + "message": "Počítačová aplikace je přihlášena k jinému účtu. Ujistěte se, že jsou obě aplikace přihlášeny ke stejnému účtu." + }, + "nativeMessagingWrongUserTitle": { + "message": "Neshoda účtu" + }, + "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." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrie není podporována" + }, + "biometricsNotSupportedDesc": { + "message": "Biometrie v prohlížeči není na tomto zařízení podporována." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Oprávnění nebylo uděleno" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bez oprávnění ke komunikaci s počítačovou aplikací Bitwarden nelze v rozšíření prohlížeče používat biometrické údaje. Zkuste to prosím znovu." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Žádost o oprávnění selhala" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Tuto akci nelze provést v postranním panelu, prosím zkuste akci znovu v novém okně." + }, + "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í." + }, + "personalOwnershipPolicyInEffect": { + "message": "Zásady organizace ovlivňují možnosti vlastnictví." + }, + "excludedDomains": { + "message": "Vyloučené domény" + }, + "excludedDomainsDesc": { + "message": "Bitwarden nebude žádat o uložení přihlašovacích údajů pro tyto domény. Aby se změny projevily, musíte stránku obnovit." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ není platná doména", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Hledat Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Přidat Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "Soubor" + }, + "allSends": { + "message": "Všechny Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Dosažen maximální počet přístupů", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Vypršela platnost" + }, + "pendingDeletion": { + "message": "Čeká na smazání" + }, + "passwordProtected": { + "message": "Chráněno heslem" + }, + "copySendLink": { + "message": "Zkopírovat odkaz Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Odstranit heslo" + }, + "delete": { + "message": "Smazat" + }, + "removedPassword": { + "message": "Odstraněné heslo" + }, + "deletedSend": { + "message": "Smazaný 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." + }, + "disabled": { + "message": "Zakázáno" + }, + "removePasswordConfirmation": { + "message": "Jste si jisti, že chcete odstranit heslo?" + }, + "deleteSend": { + "message": "Smazat Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Upravit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Přátelský název pro popis tohoto Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Soubor, který chcete odeslat." + }, + "deletionDate": { + "message": "Datum odstraně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 vypršení platnosti" + }, + "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." + }, + "oneDay": { + "message": "1 den" + }, + "days": { + "message": "$DAYS$ dní", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Vlastní" + }, + "maximumAccessCount": { + "message": "Maximální počet přístupů" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "message": "Vypnout tento Send, díky čemuž k němu nebude moci nikdo přistoupit.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Zkopírovat odkaz pro sdílení tohoto Send po uložení.", + "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." + }, + "sendHideText": { + "message": "Skrýt ve výchozím stavu text tohoto Send.", + "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ů" + }, + "createSend": { + "message": "Vytvořit nový Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nové heslo" + }, + "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 firemním pravidlům 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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Chcete-li vybrat soubor, otevřete rozšíření v postranním panelu (pokud je to možné) nebo jej otevřete v novém okně kliknutím na tento banner." + }, + "sendFirefoxFileWarning": { + "message": "Chcete-li vybrat soubor pomocí prohlížeče Firefox, otevřete rozšíření v postranním panelu (pokud je to možné) nebo jej otevřete v novém okně kliknutím na tento banner." + }, + "sendSafariFileWarning": { + "message": "Chcete-li vybrat soubor pomocí prohlížeče Safari, otevřete nové okno kliknutím na tento banner." + }, + "sendFileCalloutHeader": { + "message": "Než začnete" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Chcete-li použít k výběru data styl kalendáře", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klikněte zde", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "pro zobrazení okna.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Uvedené datum vypršení platnosti není platné." + }, + "deletionDateIsInvalid": { + "message": "Uvedené datum odstranění není platné." + }, + "expirationDateAndTimeRequired": { + "message": "Je vyžadován datum a čas vypršení platnosti." + }, + "deletionDateAndTimeRequired": { + "message": "Je vyžadován datum a čas odstranění." + }, + "dateParsingError": { + "message": "Došlo k chybě při ukládání data odstranění a vypršení platnosti." + }, + "hideEmail": { + "message": "Skrýt mou e-mailovou adresu před příjemci." + }, + "sendOptionsPolicyInEffect": { + "message": "Jedna nebo více zásad organizace ovlivňuje nastavení Send." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Je vyžadováno ověření emailu" + }, + "emailVerificationRequiredDesc": { + "message": "Abyste mohli tuto funkci používat, musíte ověřit svůj e-mail. Svůj e-mail můžete ověřit ve webovém trezoru." + }, + "updatedMasterPassword": { + "message": "Hlavní heslo aktualizováno" + }, + "updateMasterPassword": { + "message": "Změnit hlavní heslo" + }, + "updateMasterPasswordWarning": { + "message": "Administrátor v organizaci nedávno změnil vaše hlavní heslo. Pro přístup k trezoru jej nyní musíte změnit. Pokračování vás odhlásí z vaší aktuální relace a bude nutné se znovu přihlásit. Aktivní relace na jiných zařízeních mohou zůstat aktivní až po dobu jedné hodiny." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatická registrace" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Tato organizace má podnikové zásady, které vás automaticky zaregistrují k obnovení hesla. Registrace umožní správcům organizace změnit vaše hlavní heslo." + }, + "selectFolder": { + "message": "Vyberte složku" + }, + "ssoCompleteRegistration": { + "message": "Chcete-li dokončit přihlášení pomocí SSO, nastavte prosím hlavní přístupové heslo k vašemu trezoru." + }, + "hours": { + "message": "Hodin" + }, + "minutes": { + "message": "Minuty" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Pravidla vaší organizace ovlivňují časový limit trezoru. Maximální povolený časový limit trezoru je $HOURS$ hodin a $MINUTES$ minut", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Časový limit vašeho trezoru překračuje omezení stanovená vaší organizací." + }, + "vaultExportDisabled": { + "message": "Export trezoru zakázán" + }, + "personalVaultExportPolicyInEffect": { + "message": "Jedna nebo více zásad organizace vám brání v exportu vašeho osobního trezoru." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Nelze identifikovat platný prvek formuláře. Zkuste místo toho zkontrolovat HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nenalezen žádný jedinečný identifikátor." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ používá SSO s vlastním klíčovým serverem. Hlavní heslo pro členy této organizace již není vyžadováno.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Opustit organizaci" + }, + "removeMasterPassword": { + "message": "Odstranit hlavní heslo" + }, + "removedMasterPassword": { + "message": "Hlavní heslo bylo odstraněno." + }, + "leaveOrganizationConfirmation": { + "message": "Opravdu chcete tuto organizaci opustit?" + }, + "leftOrganization": { + "message": "Opustili jste organizaci." + }, + "toggleCharacterCount": { + "message": "Zobrazit počet znaků" + }, + "sessionTimeout": { + "message": "Vypršel časový limit relace. Vraťte se prosím zpět a zkuste se znovu přihlásit." + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json new file mode 100644 index 0000000000..162b07f5a5 --- /dev/null +++ b/apps/browser/src/_locales/da/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Gratis adgangskodemanager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "En sikker og gratis adgangskodemanager til alle dine enheder.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Virksomheds Single Sign On" + }, + "cancel": { + "message": "Annullér" + }, + "close": { + "message": "Luk" + }, + "submit": { + "message": "Bekræft" + }, + "emailAddress": { + "message": "E-mailadresse" + }, + "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": "Bekræft hovedadgangskode" + }, + "masterPassHint": { + "message": "Hovedadgangskodetip (valgfrit)" + }, + "tab": { + "message": "Fane" + }, + "myVault": { + "message": "Min boks" + }, + "tools": { + "message": "Værktøjer" + }, + "settings": { + "message": "Indstillinger" + }, + "currentTab": { + "message": "Aktuel fane" + }, + "copyPassword": { + "message": "Kopiér adgangskode" + }, + "copyNote": { + "message": "Kopiér notat" + }, + "copyUri": { + "message": "Kopiér URI" + }, + "copyUsername": { + "message": "Kopiér brugernavn" + }, + "copyNumber": { + "message": "Kopiér nummer" + }, + "copySecurityCode": { + "message": "Kopiér sikkerhedskode" + }, + "autoFill": { + "message": "Auto-udfyld" + }, + "generatePasswordCopied": { + "message": "Generér adgangskode (kopieret)" + }, + "copyElementIdentifier": { + "message": "Kopiér brugerdefineret feltnavn" + }, + "noMatchingLogins": { + "message": "Ingen matchende logins." + }, + "unlockVaultMenu": { + "message": "Lås din boks op" + }, + "loginToVaultMenu": { + "message": "Log ind på din boks" + }, + "autoFillInfo": { + "message": "Der findes ingen login til at auto-udfylde i den nuværende browserfane." + }, + "addLogin": { + "message": "Tilføj et login" + }, + "addItem": { + "message": "Tilføj element" + }, + "passwordHint": { + "message": "Adgangskodetip" + }, + "enterEmailToGetHint": { + "message": "Indtast din kontos e-mailadresse for at modtage dit hovedadgangskodetip." + }, + "getMasterPasswordHint": { + "message": "Få hovedadgangskodetip" + }, + "continue": { + "message": "Forsæt" + }, + "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." + }, + "account": { + "message": "Konto" + }, + "changeMasterPassword": { + "message": "Skift hovedadgangskode" + }, + "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." + }, + "twoStepLogin": { + "message": "To-trins login" + }, + "logOut": { + "message": "Log ud" + }, + "about": { + "message": "Om" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Gem" + }, + "move": { + "message": "Flyt" + }, + "addFolder": { + "message": "Tilføj mappe" + }, + "name": { + "message": "Navn" + }, + "editFolder": { + "message": "Redigér mappe" + }, + "deleteFolder": { + "message": "Slet mappe" + }, + "folders": { + "message": "Mapper" + }, + "noFolders": { + "message": "Der er ingen mapper at vise." + }, + "helpFeedback": { + "message": "Hjælp & feedback" + }, + "sync": { + "message": "Synkronisér" + }, + "syncVaultNow": { + "message": "Synkronisér boks nu" + }, + "lastSync": { + "message": "Seneste synkronisering:" + }, + "passGen": { + "message": "Adgangskodegenerator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Opret automatisk stærke, unikke adgangskoder til dine logins." + }, + "bitWebVault": { + "message": "Bitwarden web-boks" + }, + "importItems": { + "message": "Importér elementer" + }, + "select": { + "message": "Vælg" + }, + "generatePassword": { + "message": "Generér adgangskode" + }, + "regeneratePassword": { + "message": "Regenerér adgangskode" + }, + "options": { + "message": "Indstillinger" + }, + "length": { + "message": "Længde" + }, + "uppercase": { + "message": "Store bogstaver (A-Z)" + }, + "lowercase": { + "message": "Små bogstaver (a-z)" + }, + "numbers": { + "message": "Tal (0-9)" + }, + "specialCharacters": { + "message": "Specielle tegn (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Mindste antal cifre" + }, + "minSpecial": { + "message": "Mindste antal specialtegn" + }, + "avoidAmbChar": { + "message": "Undgå tvetydige tegn" + }, + "searchVault": { + "message": "Søg i boks" + }, + "edit": { + "message": "Redigér" + }, + "view": { + "message": "Vis" + }, + "noItemsInList": { + "message": "Der er ingen elementer at vise." + }, + "itemInformation": { + "message": "Elementinformation" + }, + "username": { + "message": "Brugernavn" + }, + "password": { + "message": "Adgangskode" + }, + "passphrase": { + "message": "Adgangssætning" + }, + "favorite": { + "message": "Favorit" + }, + "notes": { + "message": "Notater" + }, + "note": { + "message": "Notat" + }, + "editItem": { + "message": "Redigér element" + }, + "folder": { + "message": "Mappe" + }, + "deleteItem": { + "message": "Slet element" + }, + "viewItem": { + "message": "Vis element" + }, + "launch": { + "message": "Start" + }, + "website": { + "message": "Hjemmeside" + }, + "toggleVisibility": { + "message": "Slå synlighed til/fra" + }, + "manage": { + "message": "Håndtér" + }, + "other": { + "message": "Andre" + }, + "rateExtension": { + "message": "Bedøm udvidelsen" + }, + "rateExtensionDesc": { + "message": "Overvej om du vil hjælpe os med en god anmeldelse!" + }, + "browserNotSupportClipboard": { + "message": "Din webbrowser understøtter ikke udklipsholder kopiering. Kopiér det manuelt i stedet." + }, + "verifyIdentity": { + "message": "Bekræft identitet" + }, + "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" + }, + "vaultTimeout": { + "message": "Boks timeout" + }, + "lockNow": { + "message": "Lås nu" + }, + "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" + }, + "onLocked": { + "message": "Når systemet låses" + }, + "onRestart": { + "message": "Ved genstart af browseren" + }, + "never": { + "message": "Aldrig" + }, + "security": { + "message": "Sikkerhed" + }, + "errorOccurred": { + "message": "Der er opstået en fejl" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Bekræftelseskode er påkrævet." + }, + "invalidVerificationCode": { + "message": "Ugyldig bekræftelseskode" + }, + "valueCopied": { + "message": "$VALUE$ kopieret", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Ikke i stand til at auto-udfylde det valgte element på denne side. Kopiér og indsæt dataene i stedet for." + }, + "loggedOut": { + "message": "Logget ud" + }, + "loginExpired": { + "message": "Din login-session er udløbet." + }, + "logOutConfirmation": { + "message": "Er du sikker på, du vil logge ud?" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nej" + }, + "unexpectedError": { + "message": "Der opstod en uventet fejl." + }, + "nameRequired": { + "message": "Navn er påkrævet." + }, + "addedFolder": { + "message": "Tilføjede mappe" + }, + "changeMasterPass": { + "message": "Skift hovedadgangskode" + }, + "changeMasterPasswordConfirmation": { + "message": "Du kan ændre din hovedadgangskode i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" + }, + "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?" + }, + "editedFolder": { + "message": "Redigerede mappe" + }, + "deleteFolderConfirmation": { + "message": "Er du sikker på du vil slette denne mappe?" + }, + "deletedFolder": { + "message": "Slettede mappe" + }, + "gettingStartedTutorial": { + "message": "Sådan kommer du i gang" + }, + "gettingStartedTutorialVideo": { + "message": "Se vores introduktion for at lære hvordan du får mest ud af browser-udvidelsen." + }, + "syncingComplete": { + "message": "Synkronisering fuldført" + }, + "syncingFailed": { + "message": "Synkronisering mislykkedes" + }, + "passwordCopied": { + "message": "Adgangskode kopieret" + }, + "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" + }, + "addedItem": { + "message": "Tilføjede element" + }, + "editedItem": { + "message": "Redigerede element" + }, + "deleteItemConfirmation": { + "message": "Er du sikker på, at du sende til papirkurven?" + }, + "deletedItem": { + "message": "Element sendt til papirkurven" + }, + "overwritePassword": { + "message": "Overskriv adgangskode" + }, + "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?" + }, + "searchFolder": { + "message": "Søg mappe" + }, + "searchCollection": { + "message": "Søg samling" + }, + "searchType": { + "message": "Søgetype" + }, + "noneFolder": { + "message": "Ingen mappe", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Deaktivér Tilføj login notifikation" + }, + "addLoginNotificationDesc": { + "message": "\"Tilføj login notifikation\" spørger dig automatisk om du vil gemme nye logins til din boks, når du logger ind med dem for første gang." + }, + "dontShowCardsCurrentTab": { + "message": "Vis ikke kort på fanebladet" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Kort fra din boks er vist på siden 'Aktuel fane' for nem adgang til automatisk udfyldning." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Vis ikke identiteter på fanebladet" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identiteter fra din boks er vist på siden 'Aktuel fane' for nem adgang til automatisk udfyldning." + }, + "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." + }, + "notificationAddDesc": { + "message": "Skal Bitwarden huske denne adgangskode for dig?" + }, + "notificationAddSave": { + "message": "Gem" + }, + "disableChangedPasswordNotification": { + "message": "Deaktivér besked om ændret adgangskode" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Besked om ændret adgangskode\" beder dig automatisk om at opdatere en adgangskode i din boks, når det opdager, at du har ændret den på en hjemmeside." + }, + "notificationChangeDesc": { + "message": "Vil du opdatere denne adgangskode i Bitwarden?" + }, + "notificationChangeSave": { + "message": "Opdatér" + }, + "disableContextMenuItem": { + "message": "Deaktivér Kontekst-menu valgmuligheder" + }, + "disableContextMenuItemDesc": { + "message": "Kontekst-menu valgmuligheder giver hurtig adgang til adgangskode generering og login til hjemmesiden i din aktuelle fane." + }, + "defaultUriMatchDetection": { + "message": "Standard URI matchmetode", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Vælg den standard måde, som URI matchmetode håndteres til logins, når du udfører handlinger som f.eks. Auto-udfyld." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Skift applikationens farvetema." + }, + "dark": { + "message": "Mørk", + "description": "Dark color" + }, + "light": { + "message": "Lys", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solariseret mørk", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Indtast din hovedadgangskode for at eksportere dine data fra boksen." + }, + "shared": { + "message": "Delt" + }, + "learnOrg": { + "message": "Få mere at vide om organisationer" + }, + "learnOrgConfirmation": { + "message": "Bitwarden giver dig mulighed for at dele elementer i din boks med andre ved hjælp af en organisation. Vil du besøge bitwarden.com-webstedet for at få mere at vide?" + }, + "moveToOrganization": { + "message": "Flyt til organisation" + }, + "share": { + "message": "Del" + }, + "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." + }, + "learnMore": { + "message": "Lær mere" + }, + "authenticatorKeyTotp": { + "message": "Autentificeringsnøgle (TOTP)" + }, + "verificationCodeTotp": { + "message": "Bekræftelseskode (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiér bekræftelseskoden" + }, + "attachments": { + "message": "Vedhæftninger" + }, + "deleteAttachment": { + "message": "Slet vedhæftning" + }, + "deleteAttachmentConfirmation": { + "message": "Er du sikker på du vil slette denne vedhæftning?" + }, + "deletedAttachment": { + "message": "Slettet vedhæftning" + }, + "newAttachment": { + "message": "Tilføj ny vedhæftning" + }, + "noAttachments": { + "message": "Ingen vedhæftninger." + }, + "attachmentSaved": { + "message": "Vedhæftningen er blevet gemt." + }, + "file": { + "message": "Fil" + }, + "selectFile": { + "message": "Vælg en fil." + }, + "maxFileSize": { + "message": "Maksimum filstørrelse er 500 MB." + }, + "featureUnavailable": { + "message": "Funktion ikke tilgængelig" + }, + "updateKey": { + "message": "Du kan ikke bruge denne funktion, før du opdaterer din krypteringsnøgle." + }, + "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å:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB krypteret lager til vedhæftede filer." + }, + "ppremiumSignUpTwoStep": { + "message": "Yderligere to-trins login muligheder såsom YubiKey, FIDO U2F og Duo." + }, + "ppremiumSignUpReports": { + "message": "Adgangskodehygiejne, kontosundhed og rapporter om datalæk til at holde din boks sikker." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verifikationskode (2FA) generator til logins i din boks." + }, + "ppremiumSignUpSupport": { + "message": "Prioriteret kundeservice." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Deaktivér Automatisk TOTP kopi" + }, + "disableAutoTotpCopyDesc": { + "message": "Hvis dit login har en autentificeringsnøgle tilknyttet, kopieres TOTP verifikationskoden automatisk til din udklipsholder når du auto-udfylder login." + }, + "disableAutoBiometricsPrompt": { + "message": "Bed ikke om biometri ved start" + }, + "premiumRequired": { + "message": "Premium påkrævet" + }, + "premiumRequiredDesc": { + "message": "Premium-medlemskab kræves for at anvende denne funktion." + }, + "enterVerificationCodeApp": { + "message": "Indtast den 6-cifrede verifikationskode fra din autentificerings-app." + }, + "enterVerificationCodeEmail": { + "message": "Indtast den 6-cifrede verifikationskode, der blev sendt til $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Bekræftelsesmail 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 login metode" + }, + "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." + }, + "webAuthnNewTab": { + "message": "For at starte WebAuthn 2FA-verifikationen. Klik på knappen nedenfor for at åbne en ny fane og følg instruktionerne i den nye fane." + }, + "webAuthnNewTabOpen": { + "message": "Åbn ny fane" + }, + "webAuthnAuthenticate": { + "message": "Godkend WebAuthn" + }, + "loginUnavailable": { + "message": "Login ikke tilgængelig" + }, + "noTwoStepProviders": { + "message": "Denne konto har to-trins login aktiveret, men ingen af de konfigurerede to-trins udbydere understøttes af denne webbrowser." + }, + "noTwoStepProviders2": { + "message": "Du skal bruge en understøttet webbrowser (såsom Chrome) og/eller tilføje ekstra udbydere, der understøttes bedre på tværs af webbrowsere (f.eks. en autentificering app)." + }, + "twoStepOptions": { + "message": "To-trins login muligheder" + }, + "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": "Autentificerings-app" + }, + "authenticatorAppDesc": { + "message": "Brug en autentificerings app (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 sikkerhed 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." + }, + "selfHostedEnvironment": { + "message": "Selv-hosted 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 service uafhængigt." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API server URL" + }, + "webVaultUrl": { + "message": "Web-boks server URL" + }, + "identityUrl": { + "message": "Identitets-server URL" + }, + "notificationsUrl": { + "message": "Meddelelsesserver URL" + }, + "iconsUrl": { + "message": "Ikonserver URL" + }, + "environmentSaved": { + "message": "Miljøets URLs er blevet gemt." + }, + "enableAutoFillOnPageLoad": { + "message": "Aktivér Auto-udfyld ved sideindlæsning" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Hvis en login-formular er opdaget, så udfør automatisk en auto-udfyld når hjemmesiden indlæses." + }, + "experimentalFeature": { + "message": "Dette er i øjeblikket en eksperimentel funktion. Brug på egen risiko." + }, + "defaultAutoFillOnPageLoad": { + "message": "Standardindstilling for autofyld for loginelementer" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Når du har aktiveret auto-udfyldning ved sideindlæsning, kan du aktivere eller deaktivere funktionen for individuelle loginelementer. Dette er standardindstillingen for loginelementer, der ikke er konfigureret separat." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-udfyld ved sideindlæsning (hvis aktiveret i Indstillinger)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Anvend standardindstilling" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-udfyld ved sideindlæsning" + }, + "autoFillOnPageLoadNo": { + "message": "Auto-udfyld ikke ved sideindlæsning" + }, + "commandOpenPopup": { + "message": "Åbn boks popup" + }, + "commandOpenSidebar": { + "message": "Åbn boks i sidebjælken" + }, + "commandAutofillDesc": { + "message": "Auto-udfyld det sidste anvendte login for den aktuelle hjemmeside" + }, + "commandGeneratePasswordDesc": { + "message": "Generér en ny tilfældig adgangskode og kopiér den til udklipsholderen" + }, + "commandLockVaultDesc": { + "message": "Lås boksen" + }, + "privateModeWarning": { + "message": "Understøttelse af privat tilstand er eksperimentel, og nogle funktioner er begrænsede." + }, + "customFields": { + "message": "Brugerdefinerede felter" + }, + "copyValue": { + "message": "Kopiér værdi" + }, + "value": { + "message": "Værdi" + }, + "newCustomField": { + "message": "Nyt brugerdefineret felt" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Forbundet værdi", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Ved at klikke uden for pop-up-vinduet for at tjekke din e-mail for din bekræftelseskode vil få denne popup til at lukke. Vil du åbne denne popup i et nyt vindue, så det ikke lukker?" + }, + "popupU2fCloseMessage": { + "message": "Denne browser kan ikke behandle U2F-anmodninger i dette popup-vindue. Vil du åbne denne popup i et nyt vindue, så du kan logge ind ved hjælp af U2F?" + }, + "disableFavicon": { + "message": "Slå webikoner fra" + }, + "disableFaviconDesc": { + "message": "Webikoner vises som et genkendeligt billede ved siden af hvert loginelement i din boks." + }, + "disableBadgeCounter": { + "message": "Deaktivér Badge-tæller" + }, + "disableBadgeCounterDesc": { + "message": "Badge-tæller angiver, hvor mange logins du har for den aktuelle side i din boks." + }, + "cardholderName": { + "message": "Kortindehaverens navn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Type" + }, + "expirationMonth": { + "message": "Udløbsmåned" + }, + "expirationYear": { + "message": "Udløbsår" + }, + "expiration": { + "message": "Udløb" + }, + "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" + }, + "securityCode": { + "message": "Sikkerhedskode" + }, + "ex": { + "message": "eks." + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Hr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Frk" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Fornavn" + }, + "middleName": { + "message": "Mellemnavn" + }, + "lastName": { + "message": "Efternavn" + }, + "fullName": { + "message": "Fulde navn" + }, + "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" + }, + "address1": { + "message": "Adresse 1" + }, + "address2": { + "message": "Adresse 2" + }, + "address3": { + "message": "Adresse 3" + }, + "cityTown": { + "message": "By" + }, + "stateProvince": { + "message": "Region" + }, + "zipPostalCode": { + "message": "Postnummer" + }, + "country": { + "message": "Land" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Sikret notat" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "passwordHistory": { + "message": "Adgangskodehistorik" + }, + "back": { + "message": "Tilbage" + }, + "collections": { + "message": "Samlinger" + }, + "favorites": { + "message": "Favoritter" + }, + "popOutNewWindow": { + "message": "Åbn i et nyt vindue" + }, + "refresh": { + "message": "Opdater" + }, + "cards": { + "message": "Kort" + }, + "identities": { + "message": "Identiteter" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Sikre notater" + }, + "clear": { + "message": "Ryd", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Skift aktuelle URI'er", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Aktuel URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Typer" + }, + "allItems": { + "message": "Alle elementer" + }, + "noPasswordsInList": { + "message": "Der er ingen kodeord at vise." + }, + "remove": { + "message": "Fjern" + }, + "default": { + "message": "Standard" + }, + "dateUpdated": { + "message": "Opdateret", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Adgangskode opdateret", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Er du sikker på, at du vil bruge indstillingen \"Aldrig\"? Hvis du sætter dine låseindstillinger til \"Aldrig\" gemmes din boks krypteringsnøgle på din enhed. Hvis du bruger denne indstilling, skal du sikre dig, at du holder din enhed ordentligt beskyttet." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Lås op med biometri" + }, + "awaitDesktop": { + "message": "Afventer bekræftelse fra skrivebordet" + }, + "awaitDesktopDesc": { + "message": "Bekræft venligst brug af biometri i Bitwarden skrivebordsapplikationen for at aktivere biometri for browseren." + }, + "lockWithMasterPassOnRestart": { + "message": "Lås med hovedadgangskode ved genstart af browseren" + }, + "selectOneCollection": { + "message": "Du skal vælge minimum én samling." + }, + "cloneItem": { + "message": "Klon element" + }, + "clone": { + "message": "Klon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Én eller flere organisationspolitikker påvirker dine generatorindstillinger." + }, + "vaultTimeoutAction": { + "message": "Boks timeout-handling" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Autoudfyld og gem" + }, + "autoFillSuccessAndSavedUri": { + "message": "Autoudfyldte element og URI gemt" + }, + "autoFillSuccess": { + "message": "Autoudfyldte element" + }, + "setMasterPassword": { + "message": "Indstil 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." + }, + "termsOfService": { + "message": "Servicevilkår" + }, + "privacyPolicy": { + "message": "Fortrolighedspolitik" + }, + "hintEqualsPassword": { + "message": "Dit adgangskodetip kan ikke være det samme som din adgangskode." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Verifikation af skrivebordssynkronisering" + }, + "desktopIntegrationVerificationText": { + "message": "Bekræft venligst at skrivebordsprogrammet viser dette fingeraftryk: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browserintegration er ikke aktiveret" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browserintegration er ikke aktiveret i Bitwarden skrivebordsapplikationen. Aktivér det i indstillingerne i skrivebordsprogrammet." + }, + "startDesktopTitle": { + "message": "Start Bitwarden skrivebordsapplikationen" + }, + "startDesktopDesc": { + "message": "Bitwarden skrivebordsapplikationen skal startes, før oplåsning med biometri kan bruges." + }, + "errorEnableBiometricTitle": { + "message": "Kan ikke aktivere biometri" + }, + "errorEnableBiometricDesc": { + "message": "Handlingen blev annulleret af skrivebordsprogrammet" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Skrivebordsapplikation ugyldiggjorde den sikre kommunikationskanal. Prøv denne handling igen" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Skrivebordskommunikation afbrudt" + }, + "nativeMessagingWrongUserDesc": { + "message": "Skrivebordsapplikationen er logget ind på en anden konto. Sørg for, at begge applikationer er logget ind på den samme konto." + }, + "nativeMessagingWrongUserTitle": { + "message": "Konto mismatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometri ikke aktiveret" + }, + "biometricsNotEnabledDesc": { + "message": "Browserbiometri kræver, at desktop-biometri er aktiveret i indstillingerne først." + }, + "biometricsNotSupportedTitle": { + "message": "Biometri ikke understøttet" + }, + "biometricsNotSupportedDesc": { + "message": "Browserbiometri understøttes ikke på denne enhed." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Tilladelse ikke givet" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Uden tilladelse til at kommunikere med Bitwarden skrivebordsapplikationen kan vi ikke levere biometri i browserudvidelsen. Prøv igen." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Fejl ved anmodning om tilladelse" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Denne handling kan ikke udføres i sidebjælken, prøv handlingen igen i popup tilstand eller i et nyt vindue." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "En organisationspolitik påvirker dine ejerskabsmuligheder." + }, + "excludedDomains": { + "message": "Ekskluderede domæner" + }, + "excludedDomainsDesc": { + "message": "Bitwarden vil ikke bede om at gemme login-detaljer for disse domæner. Du skal opdatere siden for at ændringerne kan træde i kraft." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ er ikke et gyldigt domæne", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "addSend": { + "message": "Tilføj Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Tekst" + }, + "sendTypeFile": { + "message": "Fil" + }, + "allSends": { + "message": "Alle Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maksimalt adgangsantal nået", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Udløbet" + }, + "pendingDeletion": { + "message": "Afventer sletning" + }, + "passwordProtected": { + "message": "Kodeordsbeskyttet" + }, + "copySendLink": { + "message": "Kopiér Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Fjern adgangskode" + }, + "delete": { + "message": "Slet" + }, + "removedPassword": { + "message": "Adgangskode fjernet" + }, + "deletedSend": { + "message": "Send slettet", + "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." + }, + "disabled": { + "message": "Deaktiveret" + }, + "removePasswordConfirmation": { + "message": "Er du sikker på, at du vil fjerne adgangskoden?" + }, + "deleteSend": { + "message": "Slet Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Redigér Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "message": "Hvilken type Send er denne?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Et venligt navn til at beskrive denne Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Den fil, du vil sende." + }, + "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." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dage", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Tilpasset" + }, + "maximumAccessCount": { + "message": "Maksimalt antal tilgange" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kopiér denne Sends link til udklipsholderen når du gemmer.", + "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." + }, + "sendHideText": { + "message": "Skjul denne Sends tekst som standard.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Aktuelt antal tilgange" + }, + "createSend": { + "message": "Opret ny Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Ny adgangskode" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "For at vælge en fil, åben udvidelsen i sidepanelet (om muligt) eller pop ud til et nyt vindue ved at klikke på dette banner." + }, + "sendFirefoxFileWarning": { + "message": "For at vælge en fil i Firefox skal du flytte udvidelsen til sidepanelet eller åbne i et nyt vindue ved at klikke på dette banner." + }, + "sendSafariFileWarning": { + "message": "For at vælge en fil i Safari skal du åbne i et nyt vindue ved at klikke på dette banner." + }, + "sendFileCalloutHeader": { + "message": "Før du starter" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "For at bruge en datovælger i kalenderstil skal du", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klikke her", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "for at åbne dit vindue.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Den angivne udløbsdato er ikke gyldig." + }, + "deletionDateIsInvalid": { + "message": "Den angivne sletningsdato er ikke gyldig." + }, + "expirationDateAndTimeRequired": { + "message": "Der kræves en udløbsdato og -tid." + }, + "deletionDateAndTimeRequired": { + "message": "En sletningsdato og -tid er påkrævet." + }, + "dateParsingError": { + "message": "Der opstod en fejl under forsøget på at gemme dine sletnings- og udløbsdatoer." + }, + "hideEmail": { + "message": "Skjul min e-mailadresse for modtagere." + }, + "sendOptionsPolicyInEffect": { + "message": "Én eller flere organisationspolitikker påvirker dine Send-valgmuligheder." + }, + "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." + }, + "emailVerificationRequired": { + "message": "E-mailbekræftelse kræves" + }, + "emailVerificationRequiredDesc": { + "message": "Du skal bekræfte din e-mail for at bruge denne funktion. Du kan bekræfte din e-mail i web-boksen." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Vælg mappe..." + }, + "ssoCompleteRegistration": { + "message": "For at fuldføre indlogning med SSO skal du opsætte en hovedadgangskode for at få adgang til samt beskytte din boks." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Din boks-timeout overskrider de begrænsninger, der er fastsat af din organisation." + }, + "vaultExportDisabled": { + "message": "Bokseksport deaktiveret" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flere organisationspolitikker forhindrer dig i at eksportere din personlige boks." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Kan ikke identificere et gyldigt formularelement. Prøv i stedet at inspicere HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Ingen entydig identifikator fundet." + }, + "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" + }, + "removeMasterPassword": { + "message": "Fjern hovedadgangskode" + }, + "removedMasterPassword": { + "message": "Hovedadgangskode fjernet." + }, + "leaveOrganizationConfirmation": { + "message": "Er du sikker på, at du vil forlade denne organisation?" + }, + "leftOrganization": { + "message": "Du har forladt organisationen." + }, + "toggleCharacterCount": { + "message": "Slå tegnantal til/fra" + }, + "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" + } + } + }, + "error": { + "message": "Fejl" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json new file mode 100644 index 0000000000..37413975f8 --- /dev/null +++ b/apps/browser/src/_locales/de/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Kostenloser Passwortmanager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden ist ein sicherer und kostenloser Passwortmanager für all Ihre Geräte.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Du musst dich anmelden oder einen neuen Account erstellen, um auf den Tresor zugreifen zu können." + }, + "createAccount": { + "message": "Konto erstellen" + }, + "login": { + "message": "Anmelden" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Abbrechen" + }, + "close": { + "message": "Schließen" + }, + "submit": { + "message": "Absenden" + }, + "emailAddress": { + "message": "E-Mail Adresse" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "Mein Tresor" + }, + "tools": { + "message": "Werkzeuge" + }, + "settings": { + "message": "Einstellungen" + }, + "currentTab": { + "message": "Aktueller Tab" + }, + "copyPassword": { + "message": "Passwort kopieren" + }, + "copyNote": { + "message": "Notiz kopieren" + }, + "copyUri": { + "message": "URI kopieren" + }, + "copyUsername": { + "message": "Nutzernamen Kopieren" + }, + "copyNumber": { + "message": "Nummer kopieren" + }, + "copySecurityCode": { + "message": "Sicherheitscode kopieren" + }, + "autoFill": { + "message": "Auto-Ausfüllen" + }, + "generatePasswordCopied": { + "message": "Passwort generieren (kopiert)" + }, + "copyElementIdentifier": { + "message": "Benutzerdefinierten Feldnamen kopieren" + }, + "noMatchingLogins": { + "message": "Keine passenden Zugangsdaten." + }, + "unlockVaultMenu": { + "message": "Entsperre deinen Tresor" + }, + "loginToVaultMenu": { + "message": "In deinem Tresor anmelden" + }, + "autoFillInfo": { + "message": "Für den aktuellen Browser-Tab gibt es keine passenden Zugangsdaten, welche automatisch ausgefüllt werden können." + }, + "addLogin": { + "message": "Zugangsdaten hinzufügen" + }, + "addItem": { + "message": "Neuer Eintrag" + }, + "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 Masterpasswort erhalten" + }, + "continue": { + "message": "Weiter" + }, + "sendVerificationCode": { + "message": "Einen Bestätigungscode an deine E-Mail senden" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code gesendet" + }, + "verificationCode": { + "message": "Verifizierungscode" + }, + "confirmIdentity": { + "message": "Bestätige deine Identität, um fortzufahren." + }, + "account": { + "message": "Konto" + }, + "changeMasterPassword": { + "message": "Master-Passwort ändern" + }, + "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." + }, + "twoStepLogin": { + "message": "Zwei-Faktor Authentifizierung" + }, + "logOut": { + "message": "Abmelden" + }, + "about": { + "message": "Über uns" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Speichern" + }, + "move": { + "message": "Verschieben" + }, + "addFolder": { + "message": "Ordner hinzufügen" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Ordner bearbeiten" + }, + "deleteFolder": { + "message": "Ordner löschen" + }, + "folders": { + "message": "Ordner" + }, + "noFolders": { + "message": "Es gibt keine Ordner zum Anzeigen." + }, + "helpFeedback": { + "message": "Hilfe & Feedback" + }, + "sync": { + "message": "Synchronisierung" + }, + "syncVaultNow": { + "message": "Tresor jetzt synchronisieren" + }, + "lastSync": { + "message": "Letzte Synchronisation:" + }, + "passGen": { + "message": "Passwort-Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Generiert automatisch ein starkes und einzigartiges Passwort." + }, + "bitWebVault": { + "message": "Bitwarden Web-Tresor" + }, + "importItems": { + "message": "Einträge importieren" + }, + "select": { + "message": "Auswählen" + }, + "generatePassword": { + "message": "Passwort generieren" + }, + "regeneratePassword": { + "message": "Password neu generieren" + }, + "options": { + "message": "Optionen" + }, + "length": { + "message": "Länge" + }, + "uppercase": { + "message": "Großbuchstaben (A-Z)" + }, + "lowercase": { + "message": "Kleinbuchstaben (a-z)" + }, + "numbers": { + "message": "Zahlen (0-9)" + }, + "specialCharacters": { + "message": "Sonderzeichen (!@#$%^&*)" + }, + "numWords": { + "message": "Anzahl der Wörter" + }, + "wordSeparator": { + "message": "Trennzeichen" + }, + "capitalize": { + "message": "Großschreiben", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Ziffer hinzufügen" + }, + "minNumbers": { + "message": "Mindestanzahl Zahlen" + }, + "minSpecial": { + "message": "Mindestanzahl Sonderzeichen" + }, + "avoidAmbChar": { + "message": "Mehrdeutige Zeichen vermeiden" + }, + "searchVault": { + "message": "Tresor durchsuchen" + }, + "edit": { + "message": "Bearbeiten" + }, + "view": { + "message": "Anzeigen" + }, + "noItemsInList": { + "message": "Keine Einträge zum Anzeigen vorhanden." + }, + "itemInformation": { + "message": "Eintrags-Information" + }, + "username": { + "message": "Nutzername" + }, + "password": { + "message": "Passwort" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favoriten" + }, + "notes": { + "message": "Notizen" + }, + "note": { + "message": "Notiz" + }, + "editItem": { + "message": "Eintrag bearbeiten" + }, + "folder": { + "message": "Ordner" + }, + "deleteItem": { + "message": "Eintrag löschen" + }, + "viewItem": { + "message": "Eintrag anzeigen" + }, + "launch": { + "message": "Öffnen" + }, + "website": { + "message": "Webseite" + }, + "toggleVisibility": { + "message": "Sichtbarkeit umschalten" + }, + "manage": { + "message": "Verwalten" + }, + "other": { + "message": "Sonstige" + }, + "rateExtension": { + "message": "Bewerte die Erweiterung" + }, + "rateExtensionDesc": { + "message": "Wir würden uns freuen, wenn du uns mit einer positiven Bewertung helfen könntest!" + }, + "browserNotSupportClipboard": { + "message": "Den Browser unterstützt das einfache Kopieren nicht. Bitte kopiere es manuell." + }, + "verifyIdentity": { + "message": "Identität verifizieren" + }, + "yourVaultIsLocked": { + "message": "Dein Tresor ist gesperrt. Überprüfe dein 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" + }, + "vaultTimeout": { + "message": "Tresor-Timeout" + }, + "lockNow": { + "message": "Jetzt sperren" + }, + "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 Stunde" + }, + "onLocked": { + "message": "Wenn System gesperrt" + }, + "onRestart": { + "message": "Bei Browser-Neustart" + }, + "never": { + "message": "Nie" + }, + "security": { + "message": "Sicherheit" + }, + "errorOccurred": { + "message": "Ein Fehler ist aufgetaucht" + }, + "emailRequired": { + "message": "Die E-Mail Adresse wird benötigt." + }, + "invalidEmail": { + "message": "Ungültige E-Mail Adresse." + }, + "masterPassRequired": { + "message": "Das Master-Passwort wird benötigt." + }, + "masterPassLength": { + "message": "Das Master-Passwort muss mindestens 8 Zeichen lang sein." + }, + "masterPassDoesntMatch": { + "message": "Die Master-Passwort-Wiederholung stimmt nicht ü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 geschickt." + }, + "verificationCodeRequired": { + "message": "Verifizierungscode wird benötigt." + }, + "invalidVerificationCode": { + "message": "Ungültiger Verifizierungscode" + }, + "valueCopied": { + "message": "$VALUE$ kopiert", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Die Felder dieser Seite konnten nicht automatisch ausgefüllt werden. Bitte Nutzernamen und/oder Passwort manuell kopieren." + }, + "loggedOut": { + "message": "Ausgeloggt" + }, + "loginExpired": { + "message": "Ihre Login-Sitzung ist abgelaufen." + }, + "logOutConfirmation": { + "message": "Bist du sicher, dass du dich abmelden willst?" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nein" + }, + "unexpectedError": { + "message": "Ein unerwarteter Fehler ist aufgetreten." + }, + "nameRequired": { + "message": "Der Name wird benötigt." + }, + "addedFolder": { + "message": "Ordner hinzugefügt" + }, + "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?" + }, + "twoStepLoginConfirmation": { + "message": "Mit der 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. Die Zwei-Faktor Authentifizierung kann im Bitwarden.com Web-Tresor aktiviert werden. Möchtest du die Seite jetzt öffnen?" + }, + "editedFolder": { + "message": "Ordner bearbeitet" + }, + "deleteFolderConfirmation": { + "message": "Soll dieser Ordner wirklich gelöscht werden?" + }, + "deletedFolder": { + "message": "Ordner gelöscht" + }, + "gettingStartedTutorial": { + "message": "Erste Schritte Anleitung" + }, + "gettingStartedTutorialVideo": { + "message": "Sieh dir unser Tutorial an, um hilfreiche Tipps zum Umgang mit der Browser-Erweiterung zu erfahren." + }, + "syncingComplete": { + "message": "Synchronisierung abgeschlossen" + }, + "syncingFailed": { + "message": "Synchronisierung fehlgeschlagen" + }, + "passwordCopied": { + "message": "Passwort kopiert" + }, + "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" + }, + "addedItem": { + "message": "Neuer Eintrag" + }, + "editedItem": { + "message": "Eintrag bearbeitet" + }, + "deleteItemConfirmation": { + "message": "Soll dieser Eintrag wirklich in den Papierkorb verschoben werden?" + }, + "deletedItem": { + "message": "Eintrag in Papierkorb verschoben" + }, + "overwritePassword": { + "message": "Passwort ersetzen" + }, + "overwritePasswordConfirmation": { + "message": "Sind Sie sicher, dass Sie das aktuelle Passwort ersetzen möchten?" + }, + "overwriteUsername": { + "message": "Benutzername überschreiben" + }, + "overwriteUsernameConfirmation": { + "message": "Bist du sicher, dass du den aktuellen Benutzernamen überschreiben möchtest?" + }, + "searchFolder": { + "message": "Ordner durchsuchen" + }, + "searchCollection": { + "message": "Sammlung durchsuchen" + }, + "searchType": { + "message": "Suchmodus" + }, + "noneFolder": { + "message": "Kein Ordner", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "\"Login hinzufügen\" Benachrichtigung deaktivieren" + }, + "addLoginNotificationDesc": { + "message": "Die \"Login hinzufügen\" Benachrichtigung fragt dich automatisch ob du neue Zugangsdaten im Tresor speichern möchtest wenn du dich zum ersten mal mit ihnen anmeldest." + }, + "dontShowCardsCurrentTab": { + "message": "Zeige keine Karten auf der Tab Seite" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Karten Daten aus deinem Tresors werden unter 'Tab' aufgeführt um automatisches ausfüllen zu vereinfachen." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Zeige keine Identitäten auf der Tab Seite" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identitäts Daten aus deinem Tresors werden unter 'Tab' aufgeführt um automatisches ausfüllen zu vereinfachen." + }, + "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." + }, + "notificationAddDesc": { + "message": "Soll Bitwarden sich dieses Passwort merken?" + }, + "notificationAddSave": { + "message": "Ja, jetzt speichern" + }, + "disableChangedPasswordNotification": { + "message": "Passwort geändert Benachrichtigung deaktivieren" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Die \"Passwort geändert Benachrichtigung\" fragt automatisch nach, ein Passwort in deinem Tressor zu aktualisieren, sobald erkannt wurde das du es auf einer Webseite geändert hast." + }, + "notificationChangeDesc": { + "message": "Möchtest du dieses Passwort in Bitwarden aktualisieren?" + }, + "notificationChangeSave": { + "message": "Ja, jetzt aktualisieren" + }, + "disableContextMenuItem": { + "message": "Kontextmenü-Optionen deaktivieren" + }, + "disableContextMenuItemDesc": { + "message": "Kontextmenü-Optionen bieten schnellen Zugriff auf die Passwortgenerierung und Zugangsdaten für die Webseite in Ihrem aktuellen Tab." + }, + "defaultUriMatchDetection": { + "message": "Standard-URI-Match-Erkennung", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Wähle die Standardmethode, mit der die URI-Match-Erkennung für Anmeldungen bei Aktionen wie dem automatischen Ausfüllen behandelt wird." + }, + "theme": { + "message": "Design" + }, + "themeDesc": { + "message": "Ändere das Farbschema der Anwendung." + }, + "dark": { + "message": "Dunkel", + "description": "Dark color" + }, + "light": { + "message": "Hell", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "exportVault": { + "message": "Tresor exportieren" + }, + "fileFormat": { + "message": "Dateiformat" + }, + "warning": { + "message": "ACHTUNG", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Tresor-Export bestätigen" + }, + "exportWarningDesc": { + "message": "Dieser Export enthält deine unverschlüsselten Daten im Csv-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." + }, + "exportMasterPassword": { + "message": "Gib das Masterpasswort ein, um deine Tresordaten zu exportieren." + }, + "shared": { + "message": "Geteilt" + }, + "learnOrg": { + "message": "Erfahre mehr über Organisationen" + }, + "learnOrgConfirmation": { + "message": "Bitwarden erlaubt es dir, deine Tresor-Einträge mit anderen zu teilen, wenn du eine Organisation verwendest. Möchtest du bitwarden.com besuchen, um mehr zu erfahren?" + }, + "moveToOrganization": { + "message": "In Organisation verschieben" + }, + "share": { + "message": "Teilen" + }, + "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." + }, + "learnMore": { + "message": "Erfahre mehr" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Schlüssel (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verifizierungscode (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiere Verifizierungscode" + }, + "attachments": { + "message": "Anhänge" + }, + "deleteAttachment": { + "message": "Anhang löschen" + }, + "deleteAttachmentConfirmation": { + "message": "Möchtest du diesen Anhang wirklich löschen?" + }, + "deletedAttachment": { + "message": "Gelöschter Anhang" + }, + "newAttachment": { + "message": "Anhang hinzufügen" + }, + "noAttachments": { + "message": "Keine Anhänge." + }, + "attachmentSaved": { + "message": "Der Anhang wurde gespeichert." + }, + "file": { + "message": "Datei" + }, + "selectFile": { + "message": "Wähle eine Datei." + }, + "maxFileSize": { + "message": "Die maximale Dateigröße beträgt 500 MB." + }, + "featureUnavailable": { + "message": "Funktion nicht verfügbar" + }, + "updateKey": { + "message": "Du kannst diese Funktion nicht nutzen, solange du deinen Verschlüsselungsschlüssel nicht aktualisiert hast." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB verschlüsselter Speicherplatz für Dateianhänge." + }, + "ppremiumSignUpTwoStep": { + "message": "Zusätzliche Zweifaktor-Anmeldung über YubiKey, FIDO U2F, und Duo." + }, + "ppremiumSignUpReports": { + "message": "Berichte über Kennworthygiene, Kontostatus und Datenschutzverletzungen, um deinen Tresor sicher zu halten." + }, + "ppremiumSignUpTotp": { + "message": "TOTP Prüfcode (2FA) Generator für Anmeldungen in Ihrem Tresor." + }, + "ppremiumSignUpSupport": { + "message": "Vorrangiger Kunden-Support." + }, + "ppremiumSignUpFuture": { + "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 jetzt 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" + }, + "disableAutoTotpCopy": { + "message": "Automatisches TOTP Kopieren deaktivieren" + }, + "disableAutoTotpCopyDesc": { + "message": "Ist ein Authentifizierungsschlüssel mit deinen Zugangsdaten verknüpft, wird der TOTP Bestätigungscode automatisch in die Zwischenablage kopiert, wenn du die Zugangsdaten einfügen lässt." + }, + "disableAutoBiometricsPrompt": { + "message": "Beim Start nicht nach biometrischen Daten fragen" + }, + "premiumRequired": { + "message": "Premium-Mitgliedschaft wird benötigt" + }, + "premiumRequiredDesc": { + "message": "Eine Premium-Mitgliedschaft ist für diese Funktion notwendig." + }, + "enterVerificationCodeApp": { + "message": "Gib den 6-stelligen Verifizierungscode aus deiner Authenticator 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": "Angemeldet bleiben" + }, + "sendVerificationCodeEmailAgain": { + "message": "E-Mail mit Bestätigungscode erneut versenden" + }, + "useAnotherTwoStepMethod": { + "message": "Verwende eine andere zweistufige Login-Methode" + }, + "insertYubiKey": { + "message": "Stecke deinen YubiKey in den USB-Port Ihres Computers, dann berühre den Button." + }, + "insertU2f": { + "message": "Stecke deinen Sicherheitsschlüssel in den USB-Port deines Computers. Falls ein Knopf vorhanden ist, berühre diesen." + }, + "webAuthnNewTab": { + "message": "Um die WebAuthn 2FA Verifizierung zu starten, klicke auf die Schaltfläche unten, um einen neuen Tab zu öffnen und folge den Anweisungen, die im neuen Tab angezeigt werden." + }, + "webAuthnNewTabOpen": { + "message": "Neuen Tab öffnen" + }, + "webAuthnAuthenticate": { + "message": "Authentifiziere WebAuthn" + }, + "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 Browser unterstützt." + }, + "noTwoStepProviders2": { + "message": "Bitte benutze einen unterstützten Browser (z.B. Chrome) und / oder füge zusätzliche Anbieter hinzu, die von mehr Browsern unterstützt werden (wie eine Authentifizierungs-App)." + }, + "twoStepOptions": { + "message": "Optionen für Zwei-Faktor Authentifizierung" + }, + "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. Funtioniert mit YubiKey 4, Nano 4, 4C und NEO Geräten." + }, + "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 Security Key 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 Ihnen per E-Mail zugesandt." + }, + "selfHostedEnvironment": { + "message": "Selbstgehostete Umgebung" + }, + "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": "URL des Identitätsservers" + }, + "notificationsUrl": { + "message": "URL des Benachrichtigungsserver" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "Die URLs der Umgebung wurden gespeichert." + }, + "enableAutoFillOnPageLoad": { + "message": "Auto-Ausfüllen beim Seitenladen aktivieren" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Wenn eine Zugangsmaske erkannt wird, füge automatisch die Zugangsdaten ein während die Webseite lädt." + }, + "experimentalFeature": { + "message": "Dies ist derzeit ein experimentelles Feature. Verwendung auf eigene Gefahr." + }, + "defaultAutoFillOnPageLoad": { + "message": "Standard Auto-Ausfüllen Einstellung für Login-Einträge" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Nachdem du das automatische Ausfüllen beim Laden der Seite aktiviert hast, kannst du die Funktion für einzelne Login-Einträge aktivieren oder deaktivieren. Dies ist die Standardeinstellung für Login-Einträge, die nicht separat konfiguriert wurden." + }, + "itemAutoFillOnPageLoad": { + "message": "Automatisches Ausfüllen beim Laden der Seite (wenn in Optionen aktiviert)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Nutze Standardeinstellung" + }, + "autoFillOnPageLoadYes": { + "message": "Automatisches Ausfüllen beim Laden der Seite" + }, + "autoFillOnPageLoadNo": { + "message": "Kein automatisches Ausfüllen beim Laden der Seite" + }, + "commandOpenPopup": { + "message": "Tresor-Popup öffnen" + }, + "commandOpenSidebar": { + "message": "Tresor in der Seitenleiste öffnen" + }, + "commandAutofillDesc": { + "message": "Die zuletzt verwendeten Zugangsdaten für die aktuelle Website automatisch ausfüllen lassen" + }, + "commandGeneratePasswordDesc": { + "message": "Ein neues zufälliges Passwort generieren und in die Zwischenablage kopieren" + }, + "commandLockVaultDesc": { + "message": "Den Tresor sperren" + }, + "privateModeWarning": { + "message": "Die Unterstützung des privaten Modus ist experimentell und einige Funktionen sind eingeschränkt." + }, + "customFields": { + "message": "Benutzerdefinierte Felder" + }, + "copyValue": { + "message": "Wert kopieren" + }, + "value": { + "message": "Inhalt" + }, + "newCustomField": { + "message": "Neues benutzerdefiniertes Feld" + }, + "dragToSort": { + "message": "Zum Sortieren ziehen" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Versteckt" + }, + "cfTypeBoolean": { + "message": "Ja/Nein" + }, + "cfTypeLinked": { + "message": "Verknüpft", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Verknüpfter Inhalt", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Dieses Pop-up Fenster wird geschlossen, wenn du außerhalb des Fensters klickst um in deinen E-Mails nach dem Verifizierungscode zu suchen. Möchtest du, dass dieses Pop-up in einem separaten Fenster geöffnet wird, damit es nicht geschlossen wird?" + }, + "popupU2fCloseMessage": { + "message": "Dieser Browser kann U2F-Anfragen in diesem Popup-Fenster nicht verarbeiten. Möchtest du dieses Popup in einem neuen Fenster öffnen, damit du dich mit U2F anmelden kannst?" + }, + "disableFavicon": { + "message": "Icons der Website deaktivieren" + }, + "disableFaviconDesc": { + "message": "Website-Symbole zeigen ein erkennbares Bild neben jedem Login in deinem Tresor." + }, + "disableBadgeCounter": { + "message": "Badge-Zähler deaktivieren" + }, + "disableBadgeCounterDesc": { + "message": "Der Badge-Zähler zeigt an, wie viele Zugangsdaten du für die aktuelle Seite in deinem Tresor hast." + }, + "cardholderName": { + "message": "Name des Karteninhabers" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Marke" + }, + "expirationMonth": { + "message": "Ablaufmonat" + }, + "expirationYear": { + "message": "Ablaufjahr" + }, + "expiration": { + "message": "Gültig bis" + }, + "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" + }, + "securityCode": { + "message": "Sicherheitscode" + }, + "ex": { + "message": "Bsp." + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Frau" + }, + "ms": { + "message": "Frau" + }, + "dr": { + "message": "Dr." + }, + "firstName": { + "message": "Vorname" + }, + "middleName": { + "message": "Zweiter Vorname" + }, + "lastName": { + "message": "Nachname" + }, + "fullName": { + "message": "Vollständiger Name" + }, + "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" + }, + "address1": { + "message": "Adresse 1" + }, + "address2": { + "message": "Adresse 2" + }, + "address3": { + "message": "Adresse 3" + }, + "cityTown": { + "message": "Stadt oder Ort" + }, + "stateProvince": { + "message": "Bundesland" + }, + "zipPostalCode": { + "message": "Postleitzahl" + }, + "country": { + "message": "Land" + }, + "type": { + "message": "Typ" + }, + "typeLogin": { + "message": "Zugangsdaten" + }, + "typeLogins": { + "message": "Zugangsdaten" + }, + "typeSecureNote": { + "message": "Sichere Notiz" + }, + "typeCard": { + "message": "Karte" + }, + "typeIdentity": { + "message": "Identität" + }, + "passwordHistory": { + "message": "Kennwort-Historie" + }, + "back": { + "message": "Zurück" + }, + "collections": { + "message": "Sammlungen" + }, + "favorites": { + "message": "Favoriten" + }, + "popOutNewWindow": { + "message": "In einem neuen Fenster öffnen" + }, + "refresh": { + "message": "Aktualisieren" + }, + "cards": { + "message": "Karten" + }, + "identities": { + "message": "Identitäten" + }, + "logins": { + "message": "Zugangsdaten" + }, + "secureNotes": { + "message": "Sichere Notiz" + }, + "clear": { + "message": "Löschen", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Überprüfe ob dein Kennwort kompromittiert ist." + }, + "passwordExposed": { + "message": "Dieses Passwort wurde $VALUE$ mal 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" + }, + "toggleCurrentUris": { + "message": "Aktuelle URIs ändern", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Aktuelle URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Typen" + }, + "allItems": { + "message": "Alle Einträge" + }, + "noPasswordsInList": { + "message": "Keine Einträge zum Anzeigen vorhanden." + }, + "remove": { + "message": "Entfernen" + }, + "default": { + "message": "Standard" + }, + "dateUpdated": { + "message": "Aktualisiert", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Passwort aktualisiert", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Bist du sicher, dass dein Tresor nicht automatisch gesperrt werden soll? Dadurch wird der Verschlüsselungsschlüssel auf dem Gerät gespeichert. Wenn du diese Option verwendest, solltest du darauf achten, dass dein Gerät ausreichend geschützt ist." + }, + "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 Haupt-Passwort, das du gewählt hast ist schwach. Du solltest ein starkes Haupt-Passwort auswählen, um dein Bitwarden-Konto richtig zu schützen. Bist du sicher, dass du dieses Haupt-Passwort verwenden sollen?" + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Mit Biometrie entsperren" + }, + "awaitDesktop": { + "message": "Warte auf Bestätigung vom Desktop" + }, + "awaitDesktopDesc": { + "message": "Bitte bestätige die Verwendung von Biometrie in der Bitwarden Desktop-Anwendung, um Biometrie für den Browser zu aktivieren." + }, + "lockWithMasterPassOnRestart": { + "message": "Bei Neustart des Browsers mit Master-Passwort sperren" + }, + "selectOneCollection": { + "message": "Sie müssen mindestens eine Sammlung auswählen." + }, + "cloneItem": { + "message": "Eintrag duplizieren" + }, + "clone": { + "message": "Duplizieren" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien beeinflussen deine Generator-Einstellungen." + }, + "vaultTimeoutAction": { + "message": "Aktion bei Tresor-Timeout" + }, + "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" + }, + "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öchten?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bestätigung der Timeout-Aktion" + }, + "autoFillAndSave": { + "message": "Automatisch ausfüllen und speichern" + }, + "autoFillSuccessAndSavedUri": { + "message": "Automatisch ausgefüllter Eintrag und gespeicherte URI" + }, + "autoFillSuccess": { + "message": "Automatisch ausgefüllter Eintrag" + }, + "setMasterPassword": { + "message": "Masterpasswort festlegen" + }, + "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": "Ihr neues Master-Passwort entspricht nicht den Anforderungen der Richtlinie." + }, + "acceptPolicies": { + "message": "Durch Anwählen dieses Kästchens erklären Sie sich mit folgendem einverstanden:" + }, + "acceptPoliciesError": { + "message": "Die Nutzungsbedingungen und Datenschutzerklärung wurden nicht akzeptiert." + }, + "termsOfService": { + "message": "Nutzungsbedingungen" + }, + "privacyPolicy": { + "message": "Datenschutzbestimmungen" + }, + "hintEqualsPassword": { + "message": "Dein Passwort-Hinweis darf nicht identisch mit deinem Passwort sein." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop-Sync-Überprüfung" + }, + "desktopIntegrationVerificationText": { + "message": "Bitte bestätigen Sie, dass die Desktop-Anwendung diesen Prüfschlüssel anzeigt: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser-Einbindung ist nicht aktiviert" + }, + "desktopIntegrationDisabledDesc": { + "message": "Die Browser-Einbindung ist in der Bitwarden Desktop-Anwendung nicht aktiviert. Bitte aktiviere diese in den Einstellungen innerhalb der Desktop-Anwendung." + }, + "startDesktopTitle": { + "message": "Bitwarden Desktop-Anwendung starten" + }, + "startDesktopDesc": { + "message": "Die Bitwarden Desktop-Anwendung muss gestartet werden, bevor diese Funktion verwendet werden kann." + }, + "errorEnableBiometricTitle": { + "message": "Biometrie kann nicht aktiviert werden" + }, + "errorEnableBiometricDesc": { + "message": "Die Aktion wurde von der Desktop-Anwendung abgebrochen" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Die Desktop-Anwendung hat den sicheren Kommunikationskanal für ungültig erklärt. Bitte starte den Vorgang erneut" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop-Kommunikation unterbrochen" + }, + "nativeMessagingWrongUserDesc": { + "message": "Die Desktop-Anwendung ist in ein anderes Konto eingeloggt. Bitte stelle sicher, dass beide Anwendungen mit demselben Konto angemeldet sind." + }, + "nativeMessagingWrongUserTitle": { + "message": "Konten stimmen nicht überein" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrie ist nicht aktiviert" + }, + "biometricsNotEnabledDesc": { + "message": "Biometrie im Browser setzt voraus, dass Biometrie zuerst in den Einstellungen der Desktop-Anwendung aktiviert ist." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrie wird nicht unterstützt" + }, + "biometricsNotSupportedDesc": { + "message": "Biometrie im Browser wird auf diesem Gerät nicht unterstützt." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Berechtigung nicht erteilt" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Ohne die Berechtigung zur Kommunikation mit der Bitwarden Desktop-Anwendung können wir keine Biometrie in der Browser-Erweiterung anbieten. Bitte versuche es erneut." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Fehler bei der Berechtigungsanfrage" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Diese Aktion kann in der Sidebar nicht durchgeführt werden, bitte versuche die Aktion im Popup oder Popout erneut auszuführen." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Eine Organisationsrichtlinie beeinflusst deine Eigentümer-Optionen." + }, + "excludedDomains": { + "message": "Ausgeschlossene Domänen" + }, + "excludedDomainsDesc": { + "message": "Bitwarden wird keine Login-Daten für diese Domäne speichern. Du musst die Seite aktualisieren, damit die Änderungen wirksam werden." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ ist keine gültige Domäne", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Sends suchen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Send hinzufügen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "Datei" + }, + "allSends": { + "message": "Alle Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maximale Zugriffsanzahl erreicht", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Abgelaufen" + }, + "pendingDeletion": { + "message": "Ausstehende Löschung" + }, + "passwordProtected": { + "message": "Passwortgeschützt" + }, + "copySendLink": { + "message": "Send-Link kopieren", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Passwort entfernen" + }, + "delete": { + "message": "Löschen" + }, + "removedPassword": { + "message": "Passwort entfernt" + }, + "deletedSend": { + "message": "Send gelöscht", + "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." + }, + "disabled": { + "message": "Deaktiviert" + }, + "removePasswordConfirmation": { + "message": "Bist du sicher, dass du dieses Passwort entfernen möchtest?" + }, + "deleteSend": { + "message": "Send löschen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Send bearbeiten", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Ein eigener Name, um dieses Send zu beschreiben.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Die Datei, die du senden möchtest." + }, + "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": "Falls 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." + }, + "oneDay": { + "message": "1 Tag" + }, + "days": { + "message": "$DAYS$ Tage", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Benutzerdefiniert" + }, + "maximumAccessCount": { + "message": "Maximale Zugriffsanzahl" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kopiere den Send-Link beim Speichern in die Zwischenablage.", + "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." + }, + "sendHideText": { + "message": "Send-Text standardmäßig ausblenden.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Aktuelle Zugriffsanzahl" + }, + "createSend": { + "message": "Neues Send erstellen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Neues Passwort" + }, + "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." + }, + "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": "Bearbeitetes Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinuxChromiumFileWarning": { + "message": "Um eine Datei auszuwählen, öffne die Erweiterung in der Sidebar (falls möglich) oder öffne sie in einem neuem Fenster, indem du auf dieses Banner klickst." + }, + "sendFirefoxFileWarning": { + "message": "Um eine Datei mit Firefox auszuwählen, öffne die Erweiterung in der Sidebar oder öffne ein neues Fenster, indem du auf dieses Banner klickst." + }, + "sendSafariFileWarning": { + "message": "Um eine Datei mit Safari auszuwählen, öffne ein neues Fenster, indem du auf dieses Banner klickst." + }, + "sendFileCalloutHeader": { + "message": "Bevor du beginnst" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Um einen Kalender-Datumsauswahl zu verwenden", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "hier klicken", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "zum Öffnen in einem neuen Fenster.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Das angegebene Verfallsdatum ist nicht gültig." + }, + "deletionDateIsInvalid": { + "message": "Das angegebene Löschdatum ist nicht gültig." + }, + "expirationDateAndTimeRequired": { + "message": "Ein Verfallsdatum und eine Zeit sind erforderlich." + }, + "deletionDateAndTimeRequired": { + "message": "Ein Löschdatum und eine Zeit sind erforderlich." + }, + "dateParsingError": { + "message": "Es gab einen Fehler beim Speichern deiner Lösch- und Verfallsdaten." + }, + "hideEmail": { + "message": "Meine E-Mail-Adresse vor den Empfängern ausblenden." + }, + "sendOptionsPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien beeinflussen deine Send Einstellungen." + }, + "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." + }, + "emailVerificationRequired": { + "message": "E-Mail-Verifizierung erforderlich" + }, + "emailVerificationRequiredDesc": { + "message": "Du musst deine E-Mail Adresse verifizieren, um diese Funktion nutzen zu können. Du kannst deine E-Mail im Web-Tresor verifizieren." + }, + "updatedMasterPassword": { + "message": "Master-Passwort aktualisiert" + }, + "updateMasterPassword": { + "message": "Master-Passwort aktualisieren" + }, + "updateMasterPasswordWarning": { + "message": "Dein Master-Passwort wurde kürzlich von einem Administrator Ihrer Organisation geändert. Um auf den Tresor zuzugreifen, musst du es jetzt aktualisieren. Wenn du fortfährst, wirst du aus der aktuellen Sitzung abgemeldet, eine erneute Anmeldung wird erforderlich. Aktive Sitzungen auf anderen Geräten können bis zu einer Stunde weiterhin aktiv bleiben." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatische Registrierung" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Diese Organisation hat eine Unternehmensrichtlinie, die dich automatisch zum Zurücksetzen deines Passworts registriert. Die Registrierung wird es Administratoren der Organisation erlauben, dein Master-Passwort zu ändern." + }, + "selectFolder": { + "message": "Ordner auswählen..." + }, + "ssoCompleteRegistration": { + "message": "Um die Anmeldung über SSO abzuschließen, lege bitte ein Master-Passwort fest, um auf deinen Tresor zuzugreifen und ihn zu schützen." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Dein Tresor-Timeout überschreitet die von deinem Unternehmen festgelegten Beschränkungen." + }, + "vaultExportDisabled": { + "message": "Tresor-Export deaktiviert" + }, + "personalVaultExportPolicyInEffect": { + "message": "Eine oder mehrere Unternehmensrichtlinien hindern dich daran, deinen persönlichen Tresor zu exportieren." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Es konnte kein gültiges Formularelement identifiziert werden. Versuche stattdessen das HTML zu untersuchen." + }, + "copyCustomFieldNameNotUnique": { + "message": "Keine eindeutige Kennung gefunden." + }, + "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" + }, + "removeMasterPassword": { + "message": "Master-Passwort entfernen" + }, + "removedMasterPassword": { + "message": "Master-Passwort entfernt." + }, + "leaveOrganizationConfirmation": { + "message": "Bist du sicher, dass du diese Organisation verlassen möchtest?" + }, + "leftOrganization": { + "message": "Du hast die Organisation verlassen." + }, + "toggleCharacterCount": { + "message": "Zeichenzählung ein-/ausschalten" + }, + "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" + } + } + }, + "error": { + "message": "Fehler" + }, + "regenerateUsername": { + "message": "Benutzername neu generieren" + }, + "generateUsername": { + "message": "Benutzernamen generieren" + }, + "usernameType": { + "message": "Benutzernamentyp" + }, + "plusAddressedEmail": { + "message": "Mit Plus adressierte E-Mail", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Was möchtest du generieren?" + }, + "passwordType": { + "message": "Passworttyp" + }, + "service": { + "message": "Dienst" + } +} diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json new file mode 100644 index 0000000000..6f025e3c67 --- /dev/null +++ b/apps/browser/src/_locales/el/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Δωρεάν Διαχειριστής Κωδικών", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Ένας ασφαλής και δωρεάν διαχειριστής κωδικών, για όλες σας τις συσκευές.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Συνδεθείτε ή δημιουργήστε ένα νέο λογαριασμό για να αποκτήσετε πρόσβαση στο ασφαλές vault σας." + }, + "createAccount": { + "message": "Δημιουργία Λογαριασμού" + }, + "login": { + "message": "Σύνδεση" + }, + "enterpriseSingleSignOn": { + "message": "Ενιαία είσοδος για επιχειρήσεις" + }, + "cancel": { + "message": "Ακύρωση" + }, + "close": { + "message": "Κλείσιμο" + }, + "submit": { + "message": "Υποβολή" + }, + "emailAddress": { + "message": "Διεύθυνση Email" + }, + "masterPass": { + "message": "Κύριος κωδικός" + }, + "masterPassDesc": { + "message": "Ο κύριος κωδικός είναι ο κωδικός που χρησιμοποιείτε για την πρόσβαση στο vault σας. Είναι πολύ σημαντικό να μην ξεχάσετε τον κύριο κωδικό. Δεν υπάρχει τρόπος να ανακτήσετε τον κωδικό σε περίπτωση που τον ξεχάσετε." + }, + "masterPassHintDesc": { + "message": "Η υπόδειξη του κύριου κωδικού μπορεί να σας βοηθήσει να θυμηθείτε τον κωδικό σας, σε περίπτωση που τον ξεχάσετε." + }, + "reTypeMasterPass": { + "message": "Εισάγετε Ξανά τον Κύριο Κωδικό σας" + }, + "masterPassHint": { + "message": "Υπόδειξη Κύριου Κωδικού (προαιρετικό)" + }, + "tab": { + "message": "Καρτέλα" + }, + "myVault": { + "message": "Το Vault μου" + }, + "tools": { + "message": "Εργαλεία" + }, + "settings": { + "message": "Ρυθμίσεις" + }, + "currentTab": { + "message": "Τρέχουσα Καρτέλα" + }, + "copyPassword": { + "message": "Αντιγραφή Κωδικού" + }, + "copyNote": { + "message": "Αντιγραφή Σημείωσης" + }, + "copyUri": { + "message": "Αντιγραφή URI" + }, + "copyUsername": { + "message": "Αντιγραφή Ονόματος Χρήστη" + }, + "copyNumber": { + "message": "Αντιγραφή Αριθμού" + }, + "copySecurityCode": { + "message": "Αντιγραφή Κωδικού Ασφαλείας" + }, + "autoFill": { + "message": "Αυτόματη συμπλήρωση" + }, + "generatePasswordCopied": { + "message": "Δημιουργία Κωδικού (αντιγράφηκε)" + }, + "copyElementIdentifier": { + "message": "Αντιγραφή ονόματος προσαρμοσμένου πεδίου" + }, + "noMatchingLogins": { + "message": "Δεν υπάρχουν αντιστοιχίσεις σύνδεσης." + }, + "unlockVaultMenu": { + "message": "Ξεκλειδώστε το vault σας" + }, + "loginToVaultMenu": { + "message": "Συνδεθείτε στο vault σας" + }, + "autoFillInfo": { + "message": "Δεν υπάρχουν διαθέσιμες συνδέσεις για την αυτόματη συμπλήρωση, στην τρέχουσα καρτέλα του προγράμματος περιήγησης." + }, + "addLogin": { + "message": "Προσθήκη Στοιχείων Σύνδεσης" + }, + "addItem": { + "message": "Προσθήκη Αντικειμένου" + }, + "passwordHint": { + "message": "Υπόδειξη Κωδικού" + }, + "enterEmailToGetHint": { + "message": "Εισαγάγετε τη διεύθυνση email του λογαριασμού σας, για να λάβετε την υπόδειξη του κύριου κωδικού." + }, + "getMasterPasswordHint": { + "message": "Λήψη υπόδειξης κύριου κωδικού" + }, + "continue": { + "message": "Συνέχεια" + }, + "sendVerificationCode": { + "message": "Στείλτε έναν κωδικό επαλήθευσης στο email σας" + }, + "sendCode": { + "message": "Αποστολή Κωδικού" + }, + "codeSent": { + "message": "Ο Κωδικός Στάλθηκε" + }, + "verificationCode": { + "message": "Κωδικός Επαλήθευσης" + }, + "confirmIdentity": { + "message": "Επιβεβαιώστε την ταυτότητα σας για να συνεχίσετε." + }, + "account": { + "message": "Λογαριασμός" + }, + "changeMasterPassword": { + "message": "Αλλαγή Κύριου Κωδικού" + }, + "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." + }, + "twoStepLogin": { + "message": "Σύνδεση σε δύο βήματα" + }, + "logOut": { + "message": "Αποσύνδεση" + }, + "about": { + "message": "Σχετικά" + }, + "version": { + "message": "Έκδοση" + }, + "save": { + "message": "Αποθήκευση" + }, + "move": { + "message": "Μετακίνηση" + }, + "addFolder": { + "message": "Προσθήκη Φακέλου" + }, + "name": { + "message": "Όνομα" + }, + "editFolder": { + "message": "Επεξεργασία Φακέλου" + }, + "deleteFolder": { + "message": "Διαγραφή Φακέλου" + }, + "folders": { + "message": "Φάκελοι" + }, + "noFolders": { + "message": "Δεν υπάρχουν φάκελοι προς εμφάνιση." + }, + "helpFeedback": { + "message": "Βοήθεια & Σχόλια" + }, + "sync": { + "message": "Συγχρονισμός" + }, + "syncVaultNow": { + "message": "Συγχρονισμός λίστας" + }, + "lastSync": { + "message": "Τελευταίος συγχρονισμός:" + }, + "passGen": { + "message": "Γεννήτρια Κωδικού" + }, + "generator": { + "message": "Γεννήτρια", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Δημιουργήστε αυτόματα ισχυρούς και μοναδικούς κωδικούς πρόσβασης για τις συνδέσεις σας." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Εισαγωγή στοιχείων" + }, + "select": { + "message": "Επιλογή" + }, + "generatePassword": { + "message": "Δημιουργία Κωδικού" + }, + "regeneratePassword": { + "message": "Επαναδημιουργία Κωδικού" + }, + "options": { + "message": "Επιλογές" + }, + "length": { + "message": "Μήκος" + }, + "uppercase": { + "message": "Κεφαλαία (A-Z)" + }, + "lowercase": { + "message": "Πεζά (α-ω)" + }, + "numbers": { + "message": "Αριθμοί (0-9)" + }, + "specialCharacters": { + "message": "Ειδικοί Χαρακτήρες (!@#$%^&*)" + }, + "numWords": { + "message": "Αριθμός Λέξεων" + }, + "wordSeparator": { + "message": "Διαχωριστής Λέξεων" + }, + "capitalize": { + "message": "Κεφαλαία", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Συμπερίληψη Αριθμών" + }, + "minNumbers": { + "message": "Ελάχιστα Αριθμητικά Ψηφία" + }, + "minSpecial": { + "message": "Ελάχιστο Ειδικών Χαρακτήρων" + }, + "avoidAmbChar": { + "message": "Αποφυγή Αμφιλεγόμενων Χαρακτήρων" + }, + "searchVault": { + "message": "Αναζήτηση στο vault" + }, + "edit": { + "message": "Επεξεργασία" + }, + "view": { + "message": "Προβολή" + }, + "noItemsInList": { + "message": "Δεν υπάρχουν στοιχεία στη λίστα." + }, + "itemInformation": { + "message": "Πληροφορίες Αντικειμένου" + }, + "username": { + "message": "Όνομα Χρήστη" + }, + "password": { + "message": "Κωδικός" + }, + "passphrase": { + "message": "Συνθηματικό" + }, + "favorite": { + "message": "Αγαπημένο" + }, + "notes": { + "message": "Σημειώσεις" + }, + "note": { + "message": "Σημείωση" + }, + "editItem": { + "message": "Επεξεργασία Αντικειμένου" + }, + "folder": { + "message": "Φάκελος" + }, + "deleteItem": { + "message": "Διαγραφή Στοιχείου" + }, + "viewItem": { + "message": "Προβολή Αντικειμένου" + }, + "launch": { + "message": "Εκκίνηση" + }, + "website": { + "message": "Ιστοσελίδα" + }, + "toggleVisibility": { + "message": "Εναλλαγή Ορατότητας" + }, + "manage": { + "message": "Διαχείριση" + }, + "other": { + "message": "Άλλες" + }, + "rateExtension": { + "message": "Βαθμολογήστε την επέκταση" + }, + "rateExtensionDesc": { + "message": "Παρακαλούμε σκεφτείτε να μας βοηθήσετε με μια καλή κριτική!" + }, + "browserNotSupportClipboard": { + "message": "Το πρόγραμμα περιήγησης ιστού δεν υποστηρίζει εύκολη αντιγραφή πρόχειρου. Αντιγράψτε το με το χέρι αντ'αυτού." + }, + "verifyIdentity": { + "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": "Μη έγκυρος κύριος κωδικός πρόσβασης" + }, + "vaultTimeout": { + "message": "Χρόνος Λήξης Vault" + }, + "lockNow": { + "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 ώρες" + }, + "onLocked": { + "message": "Κατά το Κλείδωμα Συστήματος" + }, + "onRestart": { + "message": "Κατά την Επανεκκίνηση του Browser" + }, + "never": { + "message": "Ποτέ" + }, + "security": { + "message": "Ασφάλεια" + }, + "errorOccurred": { + "message": "Παρουσιάστηκε σφάλμα" + }, + "emailRequired": { + "message": "Απαιτείται διεύθυνση e-mail." + }, + "invalidEmail": { + "message": "Μη έγκυρη διεύθυνση e-mail." + }, + "masterPassRequired": { + "message": "Απαιτείται κύριος κωδικός πρόσβασης." + }, + "masterPassLength": { + "message": "Ο κύριος κωδικός πρέπει να έχει μήκος τουλάχιστον 8 χαρακτήρες." + }, + "masterPassDoesntMatch": { + "message": "Η επιβεβαίωση κύριου κωδικού δεν ταιριάζει." + }, + "newAccountCreated": { + "message": "Ο λογαριασμός σας έχει δημιουργηθεί! Τώρα μπορείτε να συνδεθείτε." + }, + "masterPassSent": { + "message": "Σας στείλαμε ένα email με την υπόδειξη του κύριου κωδικού." + }, + "verificationCodeRequired": { + "message": "Απαιτείται ο κωδικός επαλήθευσης." + }, + "invalidVerificationCode": { + "message": "Μη έγκυρος κωδικός επαλήθευσης" + }, + "valueCopied": { + "message": "$VALUE$ αντιγράφηκε", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Δεν είναι δυνατή η αυτόματη συμπλήρωση του επιλεγμένου στοιχείου σε αυτήν τη σελίδα. Αντιγράψτε και επικολλήστε τις πληροφορίες." + }, + "loggedOut": { + "message": "Αποσυνδεθήκατε" + }, + "loginExpired": { + "message": "Η περίοδος σύνδεσης σας έχει λήξει." + }, + "logOutConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;" + }, + "yes": { + "message": "Ναι" + }, + "no": { + "message": "Όχι" + }, + "unexpectedError": { + "message": "Παρουσιάστηκε ένα μη αναμενόμενο σφάλμα." + }, + "nameRequired": { + "message": "Απαιτείται όνομα." + }, + "addedFolder": { + "message": "Προστέθηκε φάκελος" + }, + "changeMasterPass": { + "message": "Αλλαγή Κύριου Κωδικού" + }, + "changeMasterPasswordConfirmation": { + "message": "Μπορείτε να αλλάξετε τον κύριο κωδικό στο bitwarden.com. Θέλετε να επισκεφθείτε την ιστοσελίδα τώρα;" + }, + "twoStepLoginConfirmation": { + "message": "Η σύνδεση σε δύο βήματα καθιστά πιο ασφαλή τον λογαριασμό σας, απαιτώντας να επαληθεύσετε τα στοιχεία σας με μια άλλη συσκευή, όπως κλειδί ασφαλείας, εφαρμογή επαλήθευσης, μήνυμα SMS, τηλεφωνική κλήση ή email. Μπορείτε να ενεργοποιήσετε τη σύνδεση σε δύο βήματα στο bitwarden.com. Θέλετε να επισκεφθείτε την ιστοσελίδα τώρα;" + }, + "editedFolder": { + "message": "Επεξεργασμένος φάκελος" + }, + "deleteFolderConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν το φάκελο;" + }, + "deletedFolder": { + "message": "Διεγραμμένος φάκελος" + }, + "gettingStartedTutorial": { + "message": "Οδηγός Εκμάθησης" + }, + "gettingStartedTutorialVideo": { + "message": "Παρακολουθήστε τον οδηγό εκμάθησης μας, για να μάθετε πώς μπορείτε να αξιοποιήσετε στο έπακρο την επέκταση του προγράμματος περιήγησης." + }, + "syncingComplete": { + "message": "Ο συγχρονισμός ολοκληρώθηκε" + }, + "syncingFailed": { + "message": "Ο συγχρονισμός απέτυχε" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "Προστέθηκε στοιχείο" + }, + "editedItem": { + "message": "Επεξεργασμένο στοιχείο" + }, + "deleteItemConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το στοιχείο;" + }, + "deletedItem": { + "message": "Διαγραμμένο στοιχείο" + }, + "overwritePassword": { + "message": "Αντικατάσταση Κωδικού Πρόσβασης" + }, + "overwritePasswordConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αντικαταστήσετε τον τρέχον κωδικό πρόσβασης;" + }, + "overwriteUsername": { + "message": "Αντικατάσταση Username" + }, + "overwriteUsernameConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αντικαταστήσετε το τρέχον username;" + }, + "searchFolder": { + "message": "Αναζήτηση σε φάκελο" + }, + "searchCollection": { + "message": "Αναζήτηση στη συλλογή" + }, + "searchType": { + "message": "Τύπος αναζήτησης" + }, + "noneFolder": { + "message": "Χωρίς Φάκελο", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Απενεργοποιήστε την Προσθήκη Ειδοποίησης Σύνδεσης" + }, + "addLoginNotificationDesc": { + "message": "Η \"Προσθήκη Ειδοποίησης Σύνδεσης\" σας προτρέπει αυτόματα να αποθηκεύσετε νέες συνδέσεις στο vault σας κάθε φορά που θα συνδεθείτε για πρώτη φορά." + }, + "dontShowCardsCurrentTab": { + "message": "Να μην Εμφανίζονται Κάρτες στη Σελίδα Καρτέλας" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Τα στοιχεία καρτών από το vault σας παρατίθενται στη σελίδα \"Τρέχουσα καρτέλα\" για εύκολη πρόσβαση με αυτόματη συμπλήρωση." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Να μην εμφανίζονται ταυτότητες στην καρτέλα" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Στοιχεία ταυτότητας από το vault σας, παρατίθενται στη σελίδα \"Τρέχουσα καρτέλα\" για εύκολη πρόσβαση με αυτόματη συμπλήρωση." + }, + "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." + }, + "notificationAddDesc": { + "message": "Πρέπει το Bitwarden να θυμάται αυτόν τον κωδικό πρόσβασης για εσάς;" + }, + "notificationAddSave": { + "message": "Ναι, Αποθήκευση Τώρα" + }, + "disableChangedPasswordNotification": { + "message": "Απενεργοποίηση ειδοποίησης αλλαγής κωδικού πρόσβασης" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Η \"Ειδοποίηση Αλλαγής Κωδικού\" σας ζητά αυτόματα να ενημερώσετε τον κωδικό πρόσβασης του εισερχόμενου στο vault σας κάθε φορά που εντοπίζει ότι το έχετε αλλάξει σε έναν ιστότοπο." + }, + "notificationChangeDesc": { + "message": "Θέλετε να ενημερώσετε αυτό τον κωδικό στο Bitwarden ;" + }, + "notificationChangeSave": { + "message": "Ναι, Ενημέρωση Τώρα" + }, + "disableContextMenuItem": { + "message": "Απενεργοποιήστε τις Επιλογές του Μενού Περιβάλλοντος" + }, + "disableContextMenuItemDesc": { + "message": "Οι επιλογές του μενού περιβάλλοντος παρέχουν γρήγορη πρόσβαση στην δημιουργία και σύνδεση κωδικών πρόσβασης για τον ιστότοπο στην τρέχουσα καρτέλα." + }, + "defaultUriMatchDetection": { + "message": "Προεπιλεγμένη ανίχνευση αντιστοιχίας URI", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Επιλέξτε τον προκαθορισμένο τρόπο με τον οποίο αντιμετωπίζεται η ανίχνευση αντιστοίχισης URI για τις συνδέσεις κατά την εκτέλεση ενεργειών όπως η αυτόματη συμπλήρωση." + }, + "theme": { + "message": "Θέμα" + }, + "themeDesc": { + "message": "Αλλαγή χρώματος θέματος εφαρμογής." + }, + "dark": { + "message": "Σκοτεινό", + "description": "Dark color" + }, + "light": { + "message": "Φωτεινό", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Σκούρο", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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, οπότε δεν μπορείτε να εισάγετε μια κρυπτογραφημένη εξαγωγή σε διαφορετικό λογαριασμό." + }, + "exportMasterPassword": { + "message": "Πληκτρολογήστε τον κύριο κωδικό για εξαγωγή δεδομένων vault." + }, + "shared": { + "message": "Κοινοποιήθηκε" + }, + "learnOrg": { + "message": "Μάθετε για τους Οργανισμούς" + }, + "learnOrgConfirmation": { + "message": "Το Bitwarden επιτρέπει να μοιράζεστε τα στοιχεία του vault σας με άλλους χρησιμοποιώντας ένα λογαριασμό οργανισμού. Θέλετε να επισκεφθείτε την ιστοσελίδα bitwarden.com για να μάθετε περισσότερα;" + }, + "moveToOrganization": { + "message": "Μετακίνηση στον Οργανισμό" + }, + "share": { + "message": "Κοινοποίηση" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ μετακινήθηκε στο $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Επιλέξτε έναν οργανισμό στον οποίο θέλετε να μετακινήσετε αυτό το στοιχείο. Η μετακίνηση σε έναν οργανισμό μεταβιβάζει την ιδιοκτησία του στοιχείου σε αυτό τον οργανισμό. Δεν θα είστε πλέον ο άμεσος ιδιοκτήτης αυτού του στοιχείου μόλις το μετακινήσετε." + }, + "learnMore": { + "message": "Μάθετε περισσότερα" + }, + "authenticatorKeyTotp": { + "message": "Κλειδί επαλήθευσης (TOTP)" + }, + "verificationCodeTotp": { + "message": "Κωδικός Επαλήθευσης (TOTP)" + }, + "copyVerificationCode": { + "message": "Αντιγραφή Κωδικού Επαλήθευσης" + }, + "attachments": { + "message": "Συνημμένα" + }, + "deleteAttachment": { + "message": "Διαγραφή συννημένου" + }, + "deleteAttachmentConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το συννημένο;" + }, + "deletedAttachment": { + "message": "Το συνημμένο διαγράφηκε" + }, + "newAttachment": { + "message": "Προσθήκη Νέου Συνημμένου" + }, + "noAttachments": { + "message": "Χωρίς συνημμένα." + }, + "attachmentSaved": { + "message": "Το συννημένο έχει αποθηκευτεί." + }, + "file": { + "message": "Αρχείο" + }, + "selectFile": { + "message": "Επιλέξτε ένα αρχείο." + }, + "maxFileSize": { + "message": "Το μέγιστο μέγεθος αρχείου είναι 500 MB." + }, + "featureUnavailable": { + "message": "Μη Διαθέσιμο Χαρακτηριστικό" + }, + "updateKey": { + "message": "Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη λειτουργία μέχρι να ενημερώσετε το κλειδί κρυπτογράφησης." + }, + "premiumMembership": { + "message": "Συνδρομή Premium" + }, + "premiumManage": { + "message": "Διαχείριση Συνδρομής" + }, + "premiumManageAlert": { + "message": "Μπορείτε να διαχειριστείτε την ιδιότητά σας ως μέλος στο bitwarden.com web vault. Θέλετε να επισκεφθείτε την ιστοσελίδα τώρα;" + }, + "premiumRefresh": { + "message": "Ανανέωση Συνδρομής" + }, + "premiumNotCurrentMember": { + "message": "Δεν είστε premium μέλος." + }, + "premiumSignUpAndGet": { + "message": "Εγγραφείτε για μια premium συνδρομή και λάβετε:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB κρυπτογραφημένο αποθηκευτικό χώρο για συνημμένα αρχεία." + }, + "ppremiumSignUpTwoStep": { + "message": "Πρόσθετες επιλογές σύνδεσης δύο βημάτων, όπως το YubiKey, το FIDO U2F και το Duo." + }, + "ppremiumSignUpReports": { + "message": "Ασφάλεια κωδικών, υγεία λογαριασμού και αναφορές παραβίασης δεδομένων για να διατηρήσετε ασφαλές το vault σας." + }, + "ppremiumSignUpTotp": { + "message": "Δημιουργία TOTP κωδικού επαλήθευσης (2FA), για συνδέσεις στο vault σας." + }, + "ppremiumSignUpSupport": { + "message": "Προτεραιότητα υποστήριξης πελατών." + }, + "ppremiumSignUpFuture": { + "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": "Επιτυχής ανανέωση" + }, + "disableAutoTotpCopy": { + "message": "Απενεργοποίηση Aυτόματης Aντιγραφής TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Εάν η σύνδεση έχει συνημμένο κάποιο κλειδί επαλήθευσης, ο κωδικός επαλήθευσης TOTP αντιγράφεται αυτόματα στο πρόχειρο κάθε φορά που συμπληρώνετε αυτόματα τα στοιχεία σύνδεσης." + }, + "disableAutoBiometricsPrompt": { + "message": "Μην ζητάτε βιομετρικά στοιχεία κατά την εκκίνηση" + }, + "premiumRequired": { + "message": "Απαιτείται Έκδοση Premium" + }, + "premiumRequiredDesc": { + "message": "Για να χρησιμοποιήσετε αυτή τη λειτουργία, απαιτείται η έκδοση premium." + }, + "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": "Αποστολή email κωδικού επαλήθευσης ξανά" + }, + "useAnotherTwoStepMethod": { + "message": "Χρήση άλλης μεθόδου σύνδεσης δύο παραγόντων" + }, + "insertYubiKey": { + "message": "Τοποθετήστε το YubiKey στη θύρα USB του υπολογιστή σας και έπειτα κάντε κλικ στο κουμπί του." + }, + "insertU2f": { + "message": "Εισάγετε το κλειδί ασφαλείας στη θύρα USB του υπολογιστή σας. Αν έχει κουμπί, πατήστε το." + }, + "webAuthnNewTab": { + "message": "Συνεχίστε την επαλήθευση WebAuthn 2FA στη νέα καρτέλα." + }, + "webAuthnNewTabOpen": { + "message": "Άνοιγμα νέας καρτέλας" + }, + "webAuthnAuthenticate": { + "message": "Ταυτοποίηση WebAuthn" + }, + "loginUnavailable": { + "message": "Σύνδεση μη Διαθέσιμη" + }, + "noTwoStepProviders": { + "message": "Αυτός ο λογαριασμός έχει ενεργοποιημένη τη σύνδεση σε δύο βήματα, ωστόσο, κανένας από τους διαμορφωμένους παροχείς δύο βημάτων δεν υποστηρίζεται από αυτό το πρόγραμμα περιήγησης." + }, + "noTwoStepProviders2": { + "message": "Παρακαλούμε χρησιμοποιήστε ένα υποστηριζόμενο πρόγραμμα περιήγησης (όπως το Chrome) και/ή προσθέστε επιπλέον ή/και προσθέστε άλλους παρόχους που υποστηρίζονται καλύτερα σε προγράμματα περιήγησης (όπως μια εφαρμογή επαλήθευσης)." + }, + "twoStepOptions": { + "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, μηνύματα 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": "Οι κωδικοί επαλήθευσης θα σας αποσταλούν μέσω ηλεκτρονικού ταχυδρομείου." + }, + "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 περιβάλλοντος έχουν αποθηκευτεί." + }, + "enableAutoFillOnPageLoad": { + "message": "Ενεργοποίηση αυτόματης συμπλήρωσης κατά την φόρτωση της σελίδας" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Εάν εντοπιστεί μια φόρμα σύνδεσης, πραγματοποιείται αυτόματα μια αυτόματη συμπλήρωση όταν φορτώνεται η ιστοσελίδα." + }, + "experimentalFeature": { + "message": "Αυτή είναι μια πειραματική λειτουργία. Χρησιμοποιήστε το με δική σας ευθύνη." + }, + "defaultAutoFillOnPageLoad": { + "message": "Προεπιλεγμένη ρύθμιση αυτόματης συμπλήρωσης για στοιχεία σύνδεσης" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Αφού ενεργοποιήσετε την αυτόματη συμπλήρωση κατά τη Φόρτωση Σελίδας, μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε τη λειτουργία για μεμονωμένα στοιχεία σύνδεσης. Αυτή είναι η προεπιλεγμένη ρύθμιση για στοιχεία σύνδεσης που δεν έχουν ρυθμιστεί ξεχωριστά." + }, + "itemAutoFillOnPageLoad": { + "message": "Αυτόματη συμπλήρωση της Φόρτισης Σελίδας (αν είναι ενεργοποιημένη στις Επιλογές)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Χρήση προεπιλεγμένης ρύθμισης" + }, + "autoFillOnPageLoadYes": { + "message": "Αυτόματη συμπλήρωση κατά την φόρτωση της σελίδας" + }, + "autoFillOnPageLoadNo": { + "message": "Μη αυτόματη συμπλήρωση κατά τη φόρτωση της σελίδας" + }, + "commandOpenPopup": { + "message": "Άνοιγμα αναδυόμενου vault" + }, + "commandOpenSidebar": { + "message": "Άνοιγμα αναδυόμενου vault στην πλευρική μπάρα" + }, + "commandAutofillDesc": { + "message": "Αυτόματη συμπλήρωση της τελευταίας χρησιμοποιούμενης σύνδεσης για αυτόν τον ιστότοπο" + }, + "commandGeneratePasswordDesc": { + "message": "Δημιουργήστε και αντιγράψτε έναν νέο τυχαίο κωδικό πρόσβασης στο πρόχειρο" + }, + "commandLockVaultDesc": { + "message": "Κλειδώστε το vault" + }, + "privateModeWarning": { + "message": "Η υποστήριξη ιδιωτικής λειτουργίας είναι πειραματική και ορισμένες δυνατότητες είναι περιορισμένες." + }, + "customFields": { + "message": "Προσαρμοσμένα Πεδία" + }, + "copyValue": { + "message": "Αντιγραφή Τιμής" + }, + "value": { + "message": "Τιμή" + }, + "newCustomField": { + "message": "Νέο Προσαρμοσμένο Πεδίο" + }, + "dragToSort": { + "message": "Σύρετε για ταξινόμηση" + }, + "cfTypeText": { + "message": "Κείμενο" + }, + "cfTypeHidden": { + "message": "Κρυφό" + }, + "cfTypeBoolean": { + "message": "Δυαδικό" + }, + "cfTypeLinked": { + "message": "Συνδεδεμένο", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Συνδεδεμένη τιμή", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Εάν κάνετε κλικ έξω από το αναδυόμενο παράθυρο για να ελέγξετε το email για κωδικό επαλήθευσης, το αναδυόμενο παράθυρο θα κλείσει. Θέλετε να ανοίξετε αυτό το αναδυόμενο σε νέο παράθυρο ώστε να μην κλείνει;" + }, + "popupU2fCloseMessage": { + "message": "Αυτό το πρόγραμμα περιήγησης δεν μπορεί να επεξεργαστεί αιτήματα του U2F σε αυτό το αναδυόμενο παράθυρο. Θέλετε να ανοίξετε το αναδυόμενο σε νέο παράθυρο, ώστε να μπορείτε να συνδεθείτε χρησιμοποιώντας U2F;" + }, + "disableFavicon": { + "message": "Απενεργοποίηση Εικονιδίων Ιστοσελίδας" + }, + "disableFaviconDesc": { + "message": "Τα εικονίδια ιστοσελίδων παρέχουν μια αναγνωρίσιμη εικόνα δίπλα σε κάθε στοιχείο σύνδεσης της λίστας σας." + }, + "disableBadgeCounter": { + "message": "Απενεργοποίηση Μετρητή Σημάτων" + }, + "disableBadgeCounterDesc": { + "message": "Ο μετρητής εμβλημάτων δείχνει πόσες συνδέσεις έχετε για την τρέχουσα σελίδα στο vault σας." + }, + "cardholderName": { + "message": "Όνομα κατόχου της κάρτας" + }, + "number": { + "message": "Αριθμός" + }, + "brand": { + "message": "Επωνυμία" + }, + "expirationMonth": { + "message": "Μήνας Λήξης" + }, + "expirationYear": { + "message": "Έτος λήξης" + }, + "expiration": { + "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": "Δεκέμβριος" + }, + "securityCode": { + "message": "Κωδικός Ασφαλείας" + }, + "ex": { + "message": "πχ." + }, + "title": { + "message": "Τίτλος" + }, + "mr": { + "message": "Κος" + }, + "mrs": { + "message": "Κα" + }, + "ms": { + "message": "Κα" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Όνομα" + }, + "middleName": { + "message": "Μεσαίο όνομα" + }, + "lastName": { + "message": "Επίθετο" + }, + "fullName": { + "message": "Ονοματεπώνυμο" + }, + "identityName": { + "message": "Όνομα Ταυτότητας" + }, + "company": { + "message": "Εταιρεία" + }, + "ssn": { + "message": "ΑΜΚΑ" + }, + "passportNumber": { + "message": "Αριθμός Διαβατηρίου" + }, + "licenseNumber": { + "message": "Αριθμός Άδειας" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Τηλέφωνο" + }, + "address": { + "message": "Διεύθυνση" + }, + "address1": { + "message": "Διεύθυνση 1" + }, + "address2": { + "message": "Διεύθυνση 2" + }, + "address3": { + "message": "Διεύθυνση 3" + }, + "cityTown": { + "message": "Πόλη / Κωμόπολη" + }, + "stateProvince": { + "message": "Περιοχή / Νομός" + }, + "zipPostalCode": { + "message": "Ταχυδρομικός Κώδικας" + }, + "country": { + "message": "Χώρα" + }, + "type": { + "message": "Τύπος" + }, + "typeLogin": { + "message": "Σύνδεση" + }, + "typeLogins": { + "message": "Συνδέσεις" + }, + "typeSecureNote": { + "message": "Ασφαλής Σημείωση" + }, + "typeCard": { + "message": "Κάρτα" + }, + "typeIdentity": { + "message": "Ταυτότητα" + }, + "passwordHistory": { + "message": "Ιστορικό Κωδικού" + }, + "back": { + "message": "Πίσω" + }, + "collections": { + "message": "Συλλογές" + }, + "favorites": { + "message": "Αγαπημένα" + }, + "popOutNewWindow": { + "message": "Αναδύεται σε ένα νέο παράθυρο" + }, + "refresh": { + "message": "Ανανέωση" + }, + "cards": { + "message": "Κάρτες" + }, + "identities": { + "message": "Ταυτότητες" + }, + "logins": { + "message": "Συνδέσεις" + }, + "secureNotes": { + "message": "Ασφαλείς Σημειώσεις" + }, + "clear": { + "message": "Εκκαθάριση", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Επιλογές Εναλλαγής" + }, + "toggleCurrentUris": { + "message": "Εναλλαγή τρεχόντων URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Τρεχόν URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Οργανισμός", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Τύποι" + }, + "allItems": { + "message": "Όλα τα στοιχεία" + }, + "noPasswordsInList": { + "message": "Δεν υπάρχουν κωδικοί στη λίστα." + }, + "remove": { + "message": "Αφαίρεση" + }, + "default": { + "message": "Προεπιλογή" + }, + "dateUpdated": { + "message": "Ενημερώθηκε", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Ο Κωδικός Ενημερώθηκε", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Είστε βέβαιοι ότι θέλετε να χρησιμοποιήσετε την επιλογή \"Ποτέ\"; Ο ορισμός των επιλογών κλειδώματος σε \"Ποτέ\" αποθηκεύει το κλειδί κρυπτογράφησης του vault στη συσκευή σας. Εάν χρησιμοποιήσετε αυτήν την επιλογή, θα πρέπει να διασφαλίσετε ότι θα διατηρείτε τη συσκευή σας σωστά προστατευμένη." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Ξεκλείδωμα με βιομετρικά στοιχεία" + }, + "awaitDesktop": { + "message": "Αναμονή επιβεβαίωσης από την επιφάνεια εργασίας" + }, + "awaitDesktopDesc": { + "message": "Παρακαλώ επιβεβαιώστε τη χρήση βιομετρικών στοιχείων στην εφαρμογή Bitwarden Desktop για να ενεργοποιήσετε τα βιομετρικά στοιχεία για το πρόγραμμα περιήγησης." + }, + "lockWithMasterPassOnRestart": { + "message": "Κλείδωμα με κύριο κωδικό πρόσβασης στην επανεκκίνηση του προγράμματος περιήγησης" + }, + "selectOneCollection": { + "message": "Πρέπει να επιλέξετε τουλάχιστον μία συλλογή." + }, + "cloneItem": { + "message": "Κλώνος Αντικειμένου" + }, + "clone": { + "message": "Κλώνος" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Μία ή περισσότερες πολιτικές του οργανισμού επηρεάζουν τις ρυθμίσεις της γεννήτριας." + }, + "vaultTimeoutAction": { + "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": "Στοιχείο που έχει Ανακτηθεί" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Η αποσύνδεση θα καταργήσει όλη την πρόσβαση στο vault σας και απαιτεί online έλεγχο ταυτότητας μετά το χρονικό όριο λήξης. Είστε βέβαιοι ότι θέλετε να χρησιμοποιήσετε αυτήν τη ρύθμιση;" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Επιβεβαίωση Ενέργειας Χρονικού Ορίου" + }, + "autoFillAndSave": { + "message": "Αυτόματη συμπλήρωση και αποθήκευση" + }, + "autoFillSuccessAndSavedUri": { + "message": "Αυτόματη συμπλήρωση στοιχείου και αποθηκευμένο URI" + }, + "autoFillSuccess": { + "message": "Αυτόματη συμπλήρωση αντικειμένου" + }, + "setMasterPassword": { + "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": "Οι Όροι Παροχής Υπηρεσιών και η Πολιτική Απορρήτου δεν έχουν αναγνωριστεί." + }, + "termsOfService": { + "message": "Όροι Χρήσης" + }, + "privacyPolicy": { + "message": "Πολιτική Απορρήτου" + }, + "hintEqualsPassword": { + "message": "Η υπόδειξη κωδικού πρόσβασης, δεν μπορεί να είναι η ίδια με τον κωδικό πρόσβασης σας." + }, + "ok": { + "message": "Οκ" + }, + "desktopSyncVerificationTitle": { + "message": "Επιβεβαίωση συγχρονισμού επιφάνειας εργασίας" + }, + "desktopIntegrationVerificationText": { + "message": "Παρακαλώ επιβεβαιώστε ότι η εφαρμογή επιφάνειας εργασίας εμφανίζει αυτό το αποτύπωμα: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Η ενσωμάτωση του περιηγητή δεν είναι ενεργοποιημένη" + }, + "desktopIntegrationDisabledDesc": { + "message": "Η ενσωμάτωση του προγράμματος περιήγησης δεν είναι ενεργοποιημένη στην εφαρμογή Bitwarden Desktop. Παρακαλώ ενεργοποιήστε την στις ρυθμίσεις της εφαρμογής desktop." + }, + "startDesktopTitle": { + "message": "Ξεκινήστε την εφαρμογή Bitwarden Επιφάνεια εργασίας" + }, + "startDesktopDesc": { + "message": "Η εφαρμογή Bitwarden Desktop πρέπει να ξεκινήσει για να μπορεί να χρησιμοποιηθεί αυτή η λειτουργία." + }, + "errorEnableBiometricTitle": { + "message": "Αδυναμία ενεργοποίησης βιομετρικών στοιχείων" + }, + "errorEnableBiometricDesc": { + "message": "Η ενέργεια ακυρώθηκε από την εφαρμογή επιφάνειας εργασίας" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Η εφαρμογή επιφάνειας εργασίας ακυρώνει το ασφαλές κανάλι επικοινωνίας. Παρακαλώ δοκιμάστε ξανά αυτή τη λειτουργία" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Η επικοινωνία επιφάνειας εργασίας διακόπηκε" + }, + "nativeMessagingWrongUserDesc": { + "message": "Η εφαρμογή επιφάνειας εργασίας είναι συνδεδεμένη σε διαφορετικό λογαριασμό. Παρακαλώ βεβαιωθείτε ότι και οι δύο εφαρμογές είναι συνδεδεμένες στον ίδιο λογαριασμό." + }, + "nativeMessagingWrongUserTitle": { + "message": "Απόρριψη λογαριασμού" + }, + "biometricsNotEnabledTitle": { + "message": "Η βιομετρική δεν είναι ενεργοποιημένη" + }, + "biometricsNotEnabledDesc": { + "message": "Τα βιομετρικά στοιχεία του προγράμματος περιήγησης απαιτούν την ενεργοποίηση της βιομετρικής επιφάνειας εργασίας στις ρυθμίσεις πρώτα." + }, + "biometricsNotSupportedTitle": { + "message": "Δεν υποστηρίζεται η βιομετρική" + }, + "biometricsNotSupportedDesc": { + "message": "Τα βιομετρικά στοιχεία του προγράμματος περιήγησης δεν υποστηρίζονται σε αυτήν τη συσκευή." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Δεν Έχει Χορηγηθεί Άδεια" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Χωρίς άδεια επικοινωνίας με την εφαρμογή Bitwarden Desktop δεν μπορούμε να παρέχουμε βιομετρικά στοιχεία στην επέκταση του προγράμματος περιήγησης. Παρακαλώ δοκιμάστε ξανά." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Σφάλμα αιτήματος άδειας" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Αυτή η ενέργεια δεν μπορεί να γίνει στην πλαϊνή μπάρα, δοκιμάστε ξανά την ενέργεια στο αναδυόμενο παράθυρο ή αναδυόμενο παράθυρο." + }, + "personalOwnershipSubmitError": { + "message": "Λόγω μιας Πολιτικής Επιχειρήσεων, δεν επιτρέπεται η αποθήκευση στοιχείων στο προσωπικό σας vault. Αλλάξτε την επιλογή Ιδιοκτησίας σε έναν οργανισμό και επιλέξτε από τις διαθέσιμες Συλλογές." + }, + "personalOwnershipPolicyInEffect": { + "message": "Μια πολιτική του οργανισμού, επηρεάζει τις επιλογές ιδιοκτησίας σας." + }, + "excludedDomains": { + "message": "Εξαιρούμενοι Τομείς" + }, + "excludedDomainsDesc": { + "message": "Το Bitwarden δεν θα ζητήσει να αποθηκεύσετε τα στοιχεία σύνδεσης για αυτούς τους τομείς. Πρέπει να ανανεώσετε τη σελίδα για να τεθούν σε ισχύ οι αλλαγές." + }, + "excludedDomainsInvalidDomain": { + "message": "Το $DOMAIN$ δεν είναι έγκυρος τομέας", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Αναζήτηση Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Προσθήκη Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Κείμενο" + }, + "sendTypeFile": { + "message": "Αρχείο" + }, + "allSends": { + "message": "Όλα τα Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Φτάσατε στον μέγιστο αριθμό πρόσβασης", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Έληξε" + }, + "pendingDeletion": { + "message": "Εκκρεμεί διαγραφή" + }, + "passwordProtected": { + "message": "Προστατευμένο με κωδικό" + }, + "copySendLink": { + "message": "Αντιγραφή συνδέσμου Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Αφαίρεση Κωδικού" + }, + "delete": { + "message": "Διαγραφή" + }, + "removedPassword": { + "message": "Καταργήθηκε ο Κωδικός Πρόσβασης" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "Απενεργοποιημένο" + }, + "removePasswordConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να καταργήσετε τον κωδικό πρόσβασης;" + }, + "deleteSend": { + "message": "Διαγραφή Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "Τι είδους Send είναι αυτό;", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Ένα φιλικό όνομα για την περιγραφή αυτού του Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 ημέρα" + }, + "days": { + "message": "$DAYS$ ημέρες", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Προσαρμοσμένο" + }, + "maximumAccessCount": { + "message": "Μέγιστος Αριθμός Πρόσβασης" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "Απενεργοποιήστε αυτό το Send έτσι ώστε κανείς να μην μπορεί να έχει πρόσβαση σε αυτό.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Αντιγραφή του συνδέσμου για αυτό το Send στο πρόχειρο κατά την αποθήκευση.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Το κείμενο που θέλετε να στείλετε." + }, + "sendHideText": { + "message": "Απόκρυψη του κειμένου αυτού του Send από προεπιλογή.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Τρέχων Αριθμός Πρόσβασης" + }, + "createSend": { + "message": "Δημιουργία Νέου Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Νέος Κωδικός Πρόσβασης" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Για να επιλέξετε ένα αρχείο, ανοίξτε την επέκταση στην πλαϊνή μπάρα (αν είναι δυνατόν) ή βγείτε σε ένα νέο παράθυρο κάνοντας κλικ σε αυτή τη διαφήμιση." + }, + "sendFirefoxFileWarning": { + "message": "Για να επιλέξετε ένα αρχείο χρησιμοποιώντας τον Firefox, ανοίξτε την επέκταση στην πλαϊνή μπάρα ή βγείτε σε ένα νέο παράθυρο κάνοντας κλικ σε αυτή τη διαφήμιση." + }, + "sendSafariFileWarning": { + "message": "Για να επιλέξετε ένα αρχείο χρησιμοποιώντας το Safari, βγαίνετε σε ένα νέο παράθυρο κάνοντας κλικ σε αυτή τη διαφήμιση." + }, + "sendFileCalloutHeader": { + "message": "Πριν ξεκινήσετε" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Για να χρησιμοποιήσετε έναν επιλογέα ημερομηνίας στυλ ημερολογίου", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "κάντε κλικ εδώ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "για να βγεις από το παράθυρο.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Η ημερομηνία λήξης που δόθηκε δεν είναι έγκυρη." + }, + "deletionDateIsInvalid": { + "message": "Η ημερομηνία διαγραφής που δόθηκε δεν είναι έγκυρη." + }, + "expirationDateAndTimeRequired": { + "message": "Απαιτείται ημερομηνία και ώρα λήξης." + }, + "deletionDateAndTimeRequired": { + "message": "Απαιτείται ημερομηνία και ώρα διαγραφής." + }, + "dateParsingError": { + "message": "Παρουσιάστηκε σφάλμα κατά την αποθήκευση των ημερομηνιών διαγραφής και λήξης." + }, + "hideEmail": { + "message": "Απόκρυψη της διεύθυνσης email μου από τους παραλήπτες." + }, + "sendOptionsPolicyInEffect": { + "message": "Μία ή περισσότερες οργανωτικές πολιτικές επηρεάζουν τις επιλογές send σας." + }, + "passwordPrompt": { + "message": "Προτροπή νέου κωδικού πρόσβασης" + }, + "passwordConfirmation": { + "message": "Επιβεβαίωση κύριου κωδικού πρόσβασης" + }, + "passwordConfirmationDesc": { + "message": "Αυτή η ενέργεια προστατεύεται. Για να συνεχίσετε, πληκτρολογήστε ξανά τον κύριο κωδικό πρόσβασης για να επαληθεύσετε την ταυτότητά σας." + }, + "emailVerificationRequired": { + "message": "Απαιτείται Επαλήθευση Email" + }, + "emailVerificationRequiredDesc": { + "message": "Πρέπει να επαληθεύσετε το email σας για να χρησιμοποιήσετε αυτή τη δυνατότητα. Μπορείτε να επαληθεύσετε το email σας στο web vault." + }, + "updatedMasterPassword": { + "message": "Ενημερώθηκε ο κύριος κωδικός πρόσβασης" + }, + "updateMasterPassword": { + "message": "Ενημερώστε τον κύριο κωδικό πρόσβασης" + }, + "updateMasterPasswordWarning": { + "message": "Ο Κύριος Κωδικός Πρόσβασής σας άλλαξε πρόσφατα από διαχειριστή στον οργανισμό σας. Για να αποκτήσετε πρόσβαση στο vault, πρέπει να τον ενημερώσετε τώρα. Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία σας, απαιτώντας από εσάς να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να συνεχίσουν να είναι ενεργές για μία ώρα." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Αυτόματη Εγγραφή" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Αυτός ο οργανισμός έχει μια επιχειρηματική πολιτική που θα σας εγγράψει αυτόματα στην επαναφορά κωδικού. Η εγγραφή θα επιτρέψει στους διαχειριστές του οργανισμού να αλλάξουν τον κύριο κωδικό πρόσβασης σας." + }, + "selectFolder": { + "message": "Επιλέξτε φάκελο..." + }, + "ssoCompleteRegistration": { + "message": "Για να ολοκληρώσετε τη σύνδεση με SSO, ορίστε έναν κύριο κωδικό πρόσβασης για πρόσβαση και προστασία του vault σας." + }, + "hours": { + "message": "Ώρες" + }, + "minutes": { + "message": "Λεπτά" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Οι πολιτικές του οργανισμού σας επηρεάζουν το χρονικό όριο vault σας. Το μέγιστο επιτρεπόμενο Χρονικό όριο Vault είναι $HOURS$ ώρα(ες) και $MINUTES$ λεπτό(ά)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Το χρονικό όριο του vault σας υπερβαίνει τους περιορισμούς που έχει ορίσει ο οργανισμός σας." + }, + "vaultExportDisabled": { + "message": "Εξαγωγή vault Απενεργοποιημένη" + }, + "personalVaultExportPolicyInEffect": { + "message": "Μία ή περισσότερες οργανωτικές πολιτικές σας αποτρέπει από την εξαγωγή του προσωπικού vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Δεν είναι δυνατή η αναγνώριση ενός έγκυρου στοιχείου φόρμας. Δοκιμάστε να επιθεωρήσετε τον κώδικα HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Δε βρέθηκε μοναδικό αναγνωριστικό." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ χρησιμοποιεί SSO με έναν αυτοεξυπηρετητή κλειδιών. Ένας κύριος κωδικός πρόσβασης δεν απαιτείται πλέον για να συνδεθείτε για τα μέλη αυτού του οργανισμού.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Αποχώρηση από τον οργανισμό" + }, + "removeMasterPassword": { + "message": "Αφαίρεση Κύριου Κωδικού Πρόσβασης" + }, + "removedMasterPassword": { + "message": "Ο κύριος κωδικός αφαιρέθηκε." + }, + "leaveOrganizationConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να φύγετε από αυτόν τον οργανισμό;" + }, + "leftOrganization": { + "message": "Έχετε φύγει από τον οργανισμό." + }, + "toggleCharacterCount": { + "message": "Εναλλαγή αριθμού χαρακτήρων" + }, + "sessionTimeout": { + "message": "Έχει λήξει το χρονικό όριο. Παρακαλώ επιστρέψτε και προσπαθήστε να συνδεθείτε ξανά." + }, + "exportingPersonalVaultTitle": { + "message": "Εξαγωγή Προσωπικού Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Θα εξαχθούν μόνο τα προσωπικά αντικείμενα Vault που σχετίζονται με το $EMAIL$ . Τα αντικείμενα Vault οργανισμού δεν θα συμπεριληφθούν.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "Σφάλμα" + }, + "regenerateUsername": { + "message": "Επαναδημιουργία Ονόματος Χρήστη" + }, + "generateUsername": { + "message": "Δημιουργία Όνομα Χρήστη" + }, + "usernameType": { + "message": "Τύπος Ονόματος Χρήστη" + }, + "plusAddressedEmail": { + "message": "Συν Διεύθυνση Email", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Χρησιμοποιήστε τις δυνατότητες δευτερεύουσας διεύθυνσης του παρόχου email σας." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Χρησιμοποιήστε τα διαμορφωμένα εισερχόμενα catch-all του domain σας." + }, + "random": { + "message": "Τυχαίο" + }, + "randomWord": { + "message": "Τυχαία Λέξη" + }, + "websiteName": { + "message": "Όνομα Ιστοσελίδας" + }, + "whatWouldYouLikeToGenerate": { + "message": "Τι θα θέλατε να δημιουργήσετε?" + }, + "passwordType": { + "message": "Τύπος Κωδικού" + }, + "service": { + "message": "Υπηρεσία" + } +} diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json new file mode 100644 index 0000000000..f65da3812c --- /dev/null +++ b/apps/browser/src/_locales/en/messages.json @@ -0,0 +1,1968 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "login": { + "message": "Log In" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email Address" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "vault": { + "message": "Vault" + }, + "myVault": { + "message": "My Vault" + }, + "allVaults": { + "message": "All Vaults" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "Copy Security Code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "Log Out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Add Folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit Folder" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "Options" + }, + "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" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favorite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "lockNow": { + "message": "Lock Now" + }, + "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" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Browser Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "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?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Save" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Update" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "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" + }, + "ssoKeyConnectorError": { + "message": "Key Connector error: make sure Key Connector is available and working correctly." + } +} diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json new file mode 100644 index 0000000000..b573e401c6 --- /dev/null +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -0,0 +1,1817 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create account" + }, + "login": { + "message": "Log in" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise single sign-on" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email address" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My vault" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current tab" + }, + "copyPassword": { + "message": "Copy password" + }, + "copyNote": { + "message": "Copy note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy username" + }, + "copyNumber": { + "message": "Copy number" + }, + "copySecurityCode": { + "message": "Copy security code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "vaultLocked": { + "message": "Vault is locked." + }, + "vaultLoggedOut": { + "message": "Vault is logged out." + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a login" + }, + "addItem": { + "message": "Add item" + }, + "passwordHint": { + "message": "Password hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "verificationCode": { + "message": "Verification code" + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change master password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step login" + }, + "logOut": { + "message": "Log out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Add folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit folder" + }, + "deleteFolder": { + "message": "Delete folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync vault now" + }, + "lastSync": { + "message": "Last sync:" + }, + "passGen": { + "message": "Password generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden web vault" + }, + "importItems": { + "message": "Import items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate password" + }, + "regeneratePassword": { + "message": "Regenerate password" + }, + "options": { + "message": "Options" + }, + "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" + }, + "minNumbers": { + "message": "Minimum numbers" + }, + "minSpecial": { + "message": "Minimum special" + }, + "avoidAmbChar": { + "message": "Avoid ambiguous characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favourite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete item" + }, + "viewItem": { + "message": "View item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyMasterPassword": { + "message": "Verify master password" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault timeout" + }, + "lockNow": { + "message": "Lock now" + }, + "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" + }, + "onLocked": { + "message": "On system lock" + }, + "onRestart": { + "message": "On browser restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting started tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the bin?" + }, + "deletedItem": { + "message": "Sent item to bin" + }, + "overwritePassword": { + "message": "Overwrite password" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable add login notification" + }, + "addLoginNotificationDesc": { + "message": "The \"add login notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't show cards on tab page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'current tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't show identities on tab page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'current tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Yes, save now" + }, + "notificationNeverSave": { + "message": "Never for this website" + }, + "disableChangedPasswordNotification": { + "message": "Disable changed password notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"changed password notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Yes, update now" + }, + "disableContextMenuItem": { + "message": "Disable context menu options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI match detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's colour theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organisations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organisation. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organisation" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy verification code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add new attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable automatic TOTP copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step login options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website." + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard." + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeMessage": { + "message": "Unfortunately this window is not available in private mode for this browser." + }, + "customFields": { + "message": "Custom fields" + }, + "copyValue": { + "message": "Copy value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New custom field" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this pop-up window. Do you want to open this pop-up in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable website icons" + }, + "disableFaviconDesc": { + "message": "Website icons provide a recognisable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration month" + }, + "expirationYear": { + "message": "Expiration year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security code" + }, + "ex": { + "message": "e.g." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First name" + }, + "middleName": { + "message": "Middle name" + }, + "lastName": { + "message": "Last name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password history" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favourites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "noOrganizationsList": { + "message": "You do not belong to any organisations. Organisations 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." + }, + "verifyPin": { + "message": "Verify PIN" + }, + "yourVaultIsLockedPinCode": { + "message": "Your vault is locked. Verify your PIN code to continue." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organisation policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault timeout action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled item and saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of service" + }, + "privacyPolicy": { + "message": "Privacy policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "OK" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was cancelled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account mismatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organisation policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organisation policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + } +} diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json new file mode 100644 index 0000000000..c0ec0fcf4c --- /dev/null +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create account" + }, + "login": { + "message": "Log in" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise single sign-on" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email address" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My vault" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current tab" + }, + "copyPassword": { + "message": "Copy password" + }, + "copyNote": { + "message": "Copy note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy username" + }, + "copyNumber": { + "message": "Copy number" + }, + "copySecurityCode": { + "message": "Copy security code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a login" + }, + "addItem": { + "message": "Add item" + }, + "passwordHint": { + "message": "Password hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change master password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step login" + }, + "logOut": { + "message": "Log out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Add folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit folder" + }, + "deleteFolder": { + "message": "Delete folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync vault now" + }, + "lastSync": { + "message": "Last sync:" + }, + "passGen": { + "message": "Password generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden web vault" + }, + "importItems": { + "message": "Import items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate password" + }, + "regeneratePassword": { + "message": "Regenerate password" + }, + "options": { + "message": "Options" + }, + "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": "Capitalise", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include number" + }, + "minNumbers": { + "message": "Minimum numbers" + }, + "minSpecial": { + "message": "Minimum special" + }, + "avoidAmbChar": { + "message": "Avoid ambiguous characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favourite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete item" + }, + "viewItem": { + "message": "View item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault timeout" + }, + "lockNow": { + "message": "Lock now" + }, + "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" + }, + "onLocked": { + "message": "On system lock" + }, + "onRestart": { + "message": "On browser restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting started tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the bin?" + }, + "deletedItem": { + "message": "Sent item to bin" + }, + "overwritePassword": { + "message": "Overwrite password" + }, + "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?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable add login notification" + }, + "addLoginNotificationDesc": { + "message": "The \"add login notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't show cards on tab page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'current tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't show identities on tab page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'current tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Save" + }, + "disableChangedPasswordNotification": { + "message": "Disable changed password notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"changed password notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Update" + }, + "disableContextMenuItem": { + "message": "Disable context menu options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI match detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's colour theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organisations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organisation. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organisation" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy verification code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add new attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable automatic TOTP copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step login options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website." + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard." + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom fields" + }, + "copyValue": { + "message": "Copy value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New custom field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this pop-up window. Do you want to open this pop-up in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable website icons" + }, + "disableFaviconDesc": { + "message": "Website icons provide a recognisable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration month" + }, + "expirationYear": { + "message": "Expiration year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security code" + }, + "ex": { + "message": "e.g." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First name" + }, + "middleName": { + "message": "Middle name" + }, + "lastName": { + "message": "Last name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password history" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favourites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "noOrganizationsList": { + "message": "You do not belong to any organisations. Organisations 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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organisation policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault timeout action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled item and saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of service" + }, + "privacyPolicy": { + "message": "Privacy policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "OK" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was cancelled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account mismatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organisation policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organisation policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrolment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organisation has an enterprise policy that will automatically enrol you in password reset. Enrolment will allow organisation administrators to change your master password." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organisation." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organisation policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organisation?" + }, + "leftOrganization": { + "message": "You have left the organisation." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json new file mode 100644 index 0000000000..c4d3c87054 --- /dev/null +++ b/apps/browser/src/_locales/es/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden es un gestor de contraseñas seguro y gratuito para todos tus dispositivos.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Identifícate o crea una nueva cuenta para acceder a tu caja fuerte." + }, + "createAccount": { + "message": "Crear cuenta" + }, + "login": { + "message": "Identificarse" + }, + "enterpriseSingleSignOn": { + "message": "Inicio de sesión único empresarial" + }, + "cancel": { + "message": "Cancelar" + }, + "close": { + "message": "Cerrar" + }, + "submit": { + "message": "Enviar" + }, + "emailAddress": { + "message": "Correo electrónico" + }, + "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)" + }, + "tab": { + "message": "Pestaña" + }, + "myVault": { + "message": "Mi caja fuerte" + }, + "tools": { + "message": "Herramientas" + }, + "settings": { + "message": "Ajustes" + }, + "currentTab": { + "message": "Pestaña actual" + }, + "copyPassword": { + "message": "Copiar contraseña" + }, + "copyNote": { + "message": "Copiar nota" + }, + "copyUri": { + "message": "Copiar URI" + }, + "copyUsername": { + "message": "Copiar usuario" + }, + "copyNumber": { + "message": "Copiar número" + }, + "copySecurityCode": { + "message": "Copiar código de seguridad" + }, + "autoFill": { + "message": "Autorellenar" + }, + "generatePasswordCopied": { + "message": "Generar contraseña (copiada)" + }, + "copyElementIdentifier": { + "message": "Copiar Nombre del campo personalizado" + }, + "noMatchingLogins": { + "message": "Sin entradas coincidentes." + }, + "unlockVaultMenu": { + "message": "Desbloquea tu bóveda" + }, + "loginToVaultMenu": { + "message": "Inicia sesión en tu bóveda" + }, + "autoFillInfo": { + "message": "No hay entradas disponibles para autorellenar en la pestaña actual del navegador." + }, + "addLogin": { + "message": "Añadir entrada" + }, + "addItem": { + "message": "Añadir elemento" + }, + "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" + }, + "continue": { + "message": "Continuar" + }, + "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": "Confirme su identidad para continuar." + }, + "account": { + "message": "Cuenta" + }, + "changeMasterPassword": { + "message": "Cambiar contraseña maestra" + }, + "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." + }, + "twoStepLogin": { + "message": "Autenticación en dos pasos" + }, + "logOut": { + "message": "Cerrar sesión" + }, + "about": { + "message": "Acerca de" + }, + "version": { + "message": "Versión" + }, + "save": { + "message": "Guardar" + }, + "move": { + "message": "Mover" + }, + "addFolder": { + "message": "Añadir carpeta" + }, + "name": { + "message": "Nombre" + }, + "editFolder": { + "message": "Editar carpeta" + }, + "deleteFolder": { + "message": "Eliminar carpeta" + }, + "folders": { + "message": "Carpetas" + }, + "noFolders": { + "message": "No hay carpetas que listar." + }, + "helpFeedback": { + "message": "Ayuda y comentarios" + }, + "sync": { + "message": "Sincronizar" + }, + "syncVaultNow": { + "message": "Sincronizar caja fuerte ahora" + }, + "lastSync": { + "message": "Última sincronización:" + }, + "passGen": { + "message": "Generador de contraseñas" + }, + "generator": { + "message": "Generador", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Genera automáticamente contraseñas fuertes y únicas para tus accesos." + }, + "bitWebVault": { + "message": "Caja fuerte web de Bitwarden" + }, + "importItems": { + "message": "Importar elementos" + }, + "select": { + "message": "Seleccionar" + }, + "generatePassword": { + "message": "Generar contraseña" + }, + "regeneratePassword": { + "message": "Regenerar contraseña" + }, + "options": { + "message": "Opciones" + }, + "length": { + "message": "Longitud" + }, + "uppercase": { + "message": "Mayúsculas (A-Z)" + }, + "lowercase": { + "message": "Minúsculas (a-z)" + }, + "numbers": { + "message": "Números (0-9)" + }, + "specialCharacters": { + "message": "Carácteres especiales (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Mínimo de números" + }, + "minSpecial": { + "message": "Mínimo de caracteres especiales" + }, + "avoidAmbChar": { + "message": "Evitar caracteres ambiguos" + }, + "searchVault": { + "message": "Buscar en caja fuerte" + }, + "edit": { + "message": "Editar" + }, + "view": { + "message": "Ver" + }, + "noItemsInList": { + "message": "No hay elementos que listar." + }, + "itemInformation": { + "message": "Información del elemento" + }, + "username": { + "message": "Usuario" + }, + "password": { + "message": "Contraseña" + }, + "passphrase": { + "message": "Frase de contraseña" + }, + "favorite": { + "message": "Favorito" + }, + "notes": { + "message": "Notas" + }, + "note": { + "message": "Nota" + }, + "editItem": { + "message": "Editar elemento" + }, + "folder": { + "message": "Carpeta" + }, + "deleteItem": { + "message": "Eliminar elemento" + }, + "viewItem": { + "message": "Ver elemento" + }, + "launch": { + "message": "Iniciar" + }, + "website": { + "message": "Web" + }, + "toggleVisibility": { + "message": "Alternar visibilidad" + }, + "manage": { + "message": "Gestionar" + }, + "other": { + "message": "Otros" + }, + "rateExtension": { + "message": "Valora la extensión" + }, + "rateExtensionDesc": { + "message": "¡Por favor, considera ayudarnos con una buena reseña!" + }, + "browserNotSupportClipboard": { + "message": "Tu navegador web no soporta copiar al portapapeles facilmente. Cópialo manualmente." + }, + "verifyIdentity": { + "message": "Verificar identidad" + }, + "yourVaultIsLocked": { + "message": "Su caja fuerte está bloqueada. Verifique su 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" + }, + "vaultTimeout": { + "message": "Tiempo de espera de la caja fuerte" + }, + "lockNow": { + "message": "Bloquear" + }, + "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" + }, + "onLocked": { + "message": "Al bloquear el sistema" + }, + "onRestart": { + "message": "Al reiniciar el navegador" + }, + "never": { + "message": "Nunca" + }, + "security": { + "message": "Seguridad" + }, + "errorOccurred": { + "message": "Ha ocurrido un error" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Código de verificación requerido." + }, + "invalidVerificationCode": { + "message": "Código de verificación no válido" + }, + "valueCopied": { + "message": "Valor de $VALUE$ copiado", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "No se ha podido autorellenar la entrada seleccionada en esta página. Copia/pega tu usuario y/o contraseña." + }, + "loggedOut": { + "message": "Sesión terminada" + }, + "loginExpired": { + "message": "Tu sesión ha expirado." + }, + "logOutConfirmation": { + "message": "¿Estás seguro de querer cerrar la sesión?" + }, + "yes": { + "message": "Sí" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "Ha ocurrido un error inesperado." + }, + "nameRequired": { + "message": "Nombre requerido." + }, + "addedFolder": { + "message": "Carpeta añadida" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Carpeta editada" + }, + "deleteFolderConfirmation": { + "message": "¿Estás seguro de querer eliminar esta carpeta?" + }, + "deletedFolder": { + "message": "Carpeta eliminada" + }, + "gettingStartedTutorial": { + "message": "Tutorial de primeros pasos" + }, + "gettingStartedTutorialVideo": { + "message": "Revisa nuestro tutorial de primeros pasos para aprender a sacar lo máximo de la extensión del navegador." + }, + "syncingComplete": { + "message": "Sincronización completada" + }, + "syncingFailed": { + "message": "Sincronización fallida" + }, + "passwordCopied": { + "message": "Contraseña copiada" + }, + "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" + }, + "addedItem": { + "message": "Elemento añadido" + }, + "editedItem": { + "message": "Elemento editado" + }, + "deleteItemConfirmation": { + "message": "¿Seguro que quieres enviarlo a la papelera?" + }, + "deletedItem": { + "message": "Elemento enviado a la papelera" + }, + "overwritePassword": { + "message": "Sobreescribir contraseña" + }, + "overwritePasswordConfirmation": { + "message": "¿Estás seguro de que quieres sobreescribir la contraseña actual?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "Buscar carpeta" + }, + "searchCollection": { + "message": "Buscar colección" + }, + "searchType": { + "message": "Buscar tipo" + }, + "noneFolder": { + "message": "Sin carpeta", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Deshabilitar notificación para añadir entradas" + }, + "addLoginNotificationDesc": { + "message": "La opción \"Notificación para añadir entradas\" pregunta automáticamente si quieres guardar nuevas entradas en tu caja fuerte cuando te identificas en un sitio web por primera vez." + }, + "dontShowCardsCurrentTab": { + "message": "No mostrar tarjetas en la pestaña" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Elementos de la tarjeta de su caja fuerte están listados en la página 'Ficha Actual' para el acceso fácil del autorellenado." + }, + "dontShowIdentitiesCurrentTab": { + "message": "No mostrar las identidades en la página de ficha" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Elementos de identidad de su caja fuerte están listados en la página 'Ficha Actual' para el acceso fácil del autorellenado." + }, + "clearClipboard": { + "message": "Vaciar 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." + }, + "notificationAddDesc": { + "message": "¿Debería Bitwarden recordar esta contraseña por ti?" + }, + "notificationAddSave": { + "message": "Sí, guardar ahora" + }, + "disableChangedPasswordNotification": { + "message": "Deshabilitar la notificación de cambio de contraseña" + }, + "disableChangedPasswordNotificationDesc": { + "message": "La notificación \"Contraseña cambiada\" automáticamente te pedirá que actualices la contraseña de inicio de sesión en tu caja fuerte cuando detecte que se ha cambiado en la web." + }, + "notificationChangeDesc": { + "message": "¿Desea actualizar esta contraseña en Bitwarden?" + }, + "notificationChangeSave": { + "message": "Actualizado" + }, + "disableContextMenuItem": { + "message": "Deshabilitar opciones del menú contextual" + }, + "disableContextMenuItemDesc": { + "message": "Las opciones del menú contextual permiten un acceso rápido al generador de contraseñas y a las entradas para el sitio abierto en tu pestaña actual." + }, + "defaultUriMatchDetection": { + "message": "Detección por defecto de coincidencia de URI", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Elija el método de detección por defecto de coincidencia de URI que se utilizará para acciones de inicio de sesión como autorrellenado." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Cambiar el tema de la aplicación." + }, + "dark": { + "message": "Oscuro", + "description": "Dark color" + }, + "light": { + "message": "Claro", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Confirma la exportación de la caja fuerte" + }, + "exportWarningDesc": { + "message": "Esta exportación contiene los datos de tu 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 cambias la clave de encriptación de tu cuenta, deberás exportar de nuevo, ya que no podrás descifrar este archivo exportado." + }, + "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 un archivo exportado y encriptado a una cuenta diferente." + }, + "exportMasterPassword": { + "message": "Introduce tu contraseña maestra para exportar la información de tu caja fuerte." + }, + "shared": { + "message": "Compartido" + }, + "learnOrg": { + "message": "Aprende sobre Organizaciones" + }, + "learnOrgConfirmation": { + "message": "Bitwarden te permite compartir objetos de tu caja fuerte con otros usando una organización. ¿Quieres visitar el sitio web de bitwarden.com para saber más?" + }, + "moveToOrganization": { + "message": "Mover a la Organización" + }, + "share": { + "message": "Compartir" + }, + "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." + }, + "learnMore": { + "message": "Más información" + }, + "authenticatorKeyTotp": { + "message": "Clave de autenticación (TOTP)" + }, + "verificationCodeTotp": { + "message": "Código de verificación (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiar código de verificación" + }, + "attachments": { + "message": "Adjuntos" + }, + "deleteAttachment": { + "message": "Eliminar adjunto" + }, + "deleteAttachmentConfirmation": { + "message": "¿Estás seguro de querer eliminar este adjunto?" + }, + "deletedAttachment": { + "message": "Adjunto eliminado" + }, + "newAttachment": { + "message": "Añadir nuevo adjunto" + }, + "noAttachments": { + "message": "Sin adjuntos." + }, + "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." + }, + "featureUnavailable": { + "message": "Característica no disponible" + }, + "updateKey": { + "message": "No puedes usar esta característica hasta que actualices tu clave de cifrado." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1GB de espacio cifrado en disco para adjuntos." + }, + "ppremiumSignUpTwoStep": { + "message": "Métodos de autenticación en dos pasos adicionales como YubiKey, FIDO U2F y Duo." + }, + "ppremiumSignUpReports": { + "message": "Higiene de contraseña, salud de la cuenta e informes de violaciones de datos para mantener su caja fuerte segura." + }, + "ppremiumSignUpTotp": { + "message": "Generación de códigos TOTP (2FA) para registros de tu caja fuerte." + }, + "ppremiumSignUpSupport": { + "message": "Soporte prioritario." + }, + "ppremiumSignUpFuture": { + "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 solo %price% /año!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Actualización completada" + }, + "disableAutoTotpCopy": { + "message": "Deshabilitar copiado automático de códigos TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Si tu entrada tiene una clave de autenticación adjunta, el código de verificación TOTP es copiado automáticamente al portapapeles cuando autorellenas una entrada." + }, + "disableAutoBiometricsPrompt": { + "message": "No solicitar biométricos al iniciar" + }, + "premiumRequired": { + "message": "Premium requerido" + }, + "premiumRequiredDesc": { + "message": "Una membresía Premium es requerida para utilizar esta característica." + }, + "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 te ha sido enviado por correo electrónico", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Correo electrónico 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." + }, + "webAuthnNewTab": { + "message": "Para iniciar la verificación de WebAuthn 2FA. Haga clic en el botón de abajo para abrir una nueva pestaña y siga las instrucciones proporcionadas en la nueva pestaña." + }, + "webAuthnNewTabOpen": { + "message": "Abrir nueva pestaña" + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "loginUnavailable": { + "message": "Entrada no disponible" + }, + "noTwoStepProviders": { + "message": "Esta cuenta tiene autenticación en dos pasos habilitado, pero ninguno de lo métodos configurados es soportado por este navegador web." + }, + "noTwoStepProviders2": { + "message": "Por favor, utiliza un navegador soportado (como Chrome) y/o añade métodos de autenticación adicionales que tengan mejor soporte en diferentes navegadores web (como una aplicación de autenticación)." + }, + "twoStepOptions": { + "message": "Opciones de la autenticación en dos pasos" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Habilitar autorrellenar al cargar la página" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Si se detecta un formulario, realizar automáticamente un autorellenado cuando la web cargue." + }, + "experimentalFeature": { + "message": "Esta es una característica experimental. Úsala bajo tu propio riesgo." + }, + "defaultAutoFillOnPageLoad": { + "message": "Configuración de autorrelleno por defecto para elementos de inicio de sesión" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Después de activar el autorelleno en Carga de página, puede activar o desactivar la función para entradas individuales. Esta es la configuración predeterminada para elementos de inicio de sesión que no están configurados por separado." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-relleno en carga de página (si está habilitado en opciones)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Usar configuración predeterminada" + }, + "autoFillOnPageLoadYes": { + "message": "Autocompletar al cargar la página" + }, + "autoFillOnPageLoadNo": { + "message": "No rellenar automáticamente al cargar la página" + }, + "commandOpenPopup": { + "message": "Abrir ventana emergente de la caja fuerte" + }, + "commandOpenSidebar": { + "message": "Abrir caja fuerte en la barra lateral" + }, + "commandAutofillDesc": { + "message": "Autorrellenar la última entrada utilizada para la página actual." + }, + "commandGeneratePasswordDesc": { + "message": "Generar y copiar una nueva contraseña aleatoria al portapapeles." + }, + "commandLockVaultDesc": { + "message": "Bloquear la caja fuerte" + }, + "privateModeWarning": { + "message": "El soporte en modo privado es experimental y algunas características son limitadas." + }, + "customFields": { + "message": "Campos personalizados" + }, + "copyValue": { + "message": "Copiar valor" + }, + "value": { + "message": "Valor" + }, + "newCustomField": { + "message": "Nuevo campo personalizado" + }, + "dragToSort": { + "message": "Arrastrar para ordenar" + }, + "cfTypeText": { + "message": "Texto" + }, + "cfTypeHidden": { + "message": "Oculto" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "cfTypeLinked": { + "message": "Vinculado", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Valor vinculado", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Pulsar fuera de la ventana emergente para comprobar tu correo de verificación, hará que esta se cierre. ¿Quieres abrir esta ventana emergente en una nueva ventana para evitar su cierre?" + }, + "popupU2fCloseMessage": { + "message": "Este navegador no puede procesar las peticiones U2F en esta ventana emergente. ¿Desea abrir esta ventana emergente en una nueva ventana para que pueda iniciar sesión usando U2F?" + }, + "disableFavicon": { + "message": "Deshabilitar iconos del sitio web" + }, + "disableFaviconDesc": { + "message": "Los iconos del sitio web añaden una imagen reconocible al lado de cada entrada de tu caja fuerte." + }, + "disableBadgeCounter": { + "message": "Desactivar contador de insignias" + }, + "disableBadgeCounterDesc": { + "message": "El contador de insinuaciones indica cuántos registros tienes para la página actual en tu bóveda." + }, + "cardholderName": { + "message": "Nombre en la tarjeta" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expirationMonth": { + "message": "Mes de expiración" + }, + "expirationYear": { + "message": "Año de expiración" + }, + "expiration": { + "message": "Expiración" + }, + "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" + }, + "securityCode": { + "message": "Código de seguridad" + }, + "ex": { + "message": "ej." + }, + "title": { + "message": "Título" + }, + "mr": { + "message": "Sr" + }, + "mrs": { + "message": "Sra" + }, + "ms": { + "message": "Srta" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Nombre" + }, + "middleName": { + "message": "2º nombre" + }, + "lastName": { + "message": "Apellido" + }, + "fullName": { + "message": "Nombre completo" + }, + "identityName": { + "message": "Nombre de la identidad" + }, + "company": { + "message": "Empresa" + }, + "ssn": { + "message": "Nº de la seguridad social" + }, + "passportNumber": { + "message": "Nº de pasaporte" + }, + "licenseNumber": { + "message": "Nº de licencia" + }, + "email": { + "message": "Correo electrónico" + }, + "phone": { + "message": "Teléfono" + }, + "address": { + "message": "Dirección" + }, + "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" + }, + "type": { + "message": "Tipo" + }, + "typeLogin": { + "message": "Entrada" + }, + "typeLogins": { + "message": "Entradas" + }, + "typeSecureNote": { + "message": "Nota segura" + }, + "typeCard": { + "message": "Tarjeta" + }, + "typeIdentity": { + "message": "Identidad" + }, + "passwordHistory": { + "message": "Historial de contraseñas" + }, + "back": { + "message": "Atrás" + }, + "collections": { + "message": "Colecciones" + }, + "favorites": { + "message": "Favoritos" + }, + "popOutNewWindow": { + "message": "Abrir en una nueva ventana" + }, + "refresh": { + "message": "Actualizar" + }, + "cards": { + "message": "Tarjetas" + }, + "identities": { + "message": "Identidades" + }, + "logins": { + "message": "Entradas" + }, + "secureNotes": { + "message": "Notas seguras" + }, + "clear": { + "message": "Limpiar", + "description": "To clear something out. example: To clear browser history." + }, + "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": "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": "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" + }, + "toggleCurrentUris": { + "message": "Alternar URIs actuales", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI actual", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organización", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tipos" + }, + "allItems": { + "message": "Todos los elementos" + }, + "noPasswordsInList": { + "message": "No hay contraseñas que listar." + }, + "remove": { + "message": "Eliminar" + }, + "default": { + "message": "Por defecto" + }, + "dateUpdated": { + "message": "Actualizado", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Contraseña actualizada", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "¿Está seguro de que quieres usar la opción \"Nunca\"? Al ajustar las opciones de bloqueo a \"Nunca\", la clave de cifrado de su caja fuerte se guardará en tu dispositivo. Si usas esta opción, asegúrate de mantener tu dispositivo debidamente protegido." + }, + "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 cierras tu sesión completamente de la aplicación." + }, + "pinRequired": { + "message": "Código PIN requerido." + }, + "invalidPin": { + "message": "Código PIN inválido." + }, + "unlockWithBiometrics": { + "message": "Desbloquear con biométricos" + }, + "awaitDesktop": { + "message": "Esperando la confirmación por parte del escritorio" + }, + "awaitDesktopDesc": { + "message": "Por favor confirma el uso de biométricos en la aplicación de escritorio de Bitwarden para habilitar el uso de biométricos en el navegador." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloquear con contraseña maestra al reiniciar el navegador" + }, + "selectOneCollection": { + "message": "Debes seleccionar al menos una colección." + }, + "cloneItem": { + "message": "Clonar objeto" + }, + "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": "Acción de tiempo de espera de la caja fuerte" + }, + "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" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Cerrar sesión eliminará todo el acceso a tu caja fuerte y requerirá autenticación en línea después del tiempo de espera. ¿Estás seguro de que quieres usar esta configuración?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmación de la acción del tiempo de espera" + }, + "autoFillAndSave": { + "message": "Autorellenar y guardar" + }, + "autoFillSuccessAndSavedUri": { + "message": "Objeto autorellenado y URI guardada" + }, + "autoFillSuccess": { + "message": "Objeto autorellenado" + }, + "setMasterPassword": { + "message": "Establecer 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 mínima de complejidad de $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Longitud mínima de $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contiene uno o más caracteres en mayúsculas" + }, + "policyInEffectLowercase": { + "message": "Contiene uno o más caracteres en minúsculas" + }, + "policyInEffectNumbers": { + "message": "Contiene uno o más números" + }, + "policyInEffectSpecial": { + "message": "Contiene 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, acepta lo siguiente:" + }, + "acceptPoliciesError": { + "message": "Todavía no has aceptado los términos del servicio y la política de privacidad." + }, + "termsOfService": { + "message": "Términos y condiciones del servicio" + }, + "privacyPolicy": { + "message": "Política de privacidad" + }, + "hintEqualsPassword": { + "message": "Tu contraseña no puede ser idéntica a la pista de contraseña." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Verificación de sincronización del escritorio" + }, + "desktopIntegrationVerificationText": { + "message": "Favor de verificar que la aplicación de escritorio muestre ésta huella:" + }, + "desktopIntegrationDisabledTitle": { + "message": "La integración con el navegador se encuentra deshabilitada" + }, + "desktopIntegrationDisabledDesc": { + "message": "La integración con el navegador se encuentra deshabilitada en la aplicación de escritorio de Bitwarden. Favor de habilitarla en los ajustes dentro de la aplicación de escritorio." + }, + "startDesktopTitle": { + "message": "Inicia la aplicación de escritorio de Bitwarden" + }, + "startDesktopDesc": { + "message": "La aplicación de escritorio de Bitwarden necesita iniciarse para poder utilizar ésta función." + }, + "errorEnableBiometricTitle": { + "message": "No fue posible habilitar biométricos" + }, + "errorEnableBiometricDesc": { + "message": "La acción fue cancelada por la aplicación de escritorio" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "La aplicación de escritorio invalidó el canal seguro de comunicación. Favor de intentar la operación nuevamente" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Se ha interrumpido la comunicación con el escritorio" + }, + "nativeMessagingWrongUserDesc": { + "message": "La aplicación de escritorio está conectada a una cuenta distinta. Favor de asegurar que ambas aplicaciones estén conectadas a la misma cuenta. " + }, + "nativeMessagingWrongUserTitle": { + "message": "Las cuentas son distintas" + }, + "biometricsNotEnabledTitle": { + "message": "Biometría deshabilitada" + }, + "biometricsNotEnabledDesc": { + "message": "La biometría del navegador requiere activar primero la biometría de escritorio en los ajustes." + }, + "biometricsNotSupportedTitle": { + "message": "No se admite la biometría" + }, + "biometricsNotSupportedDesc": { + "message": "La biometría del navegador no es compatible con este dispositivo." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permiso no proporcionado" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Sin el permiso para comunicarse con la aplicación de escritorio de Bitwarden, no podemos proporcionar datos biométricos en la extensión del navegador. Por favor, inténtalo de nuevo." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Error de solicitud de permiso" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Esta acción no se puede realizar en la barra lateral, por favor, vuelve a intentar la acción en la ventana emergente o popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Una política de organización está afectando a sus opciones de propiedad." + }, + "excludedDomains": { + "message": "Dominios excluidos" + }, + "excludedDomainsDesc": { + "message": "Bitwarden no pedirá que se guarden los datos de acceso para estos dominios. Debe actualizar la página para que los cambios surtan efecto." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ no es un dominio válido", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Buscar Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Añadir Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Texto" + }, + "sendTypeFile": { + "message": "Archivo" + }, + "allSends": { + "message": "Todos los Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Número máximo de accesos alcanzado", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Caducado" + }, + "pendingDeletion": { + "message": "Borrado pendiente" + }, + "passwordProtected": { + "message": "Protegido por contraseña" + }, + "copySendLink": { + "message": "Copiar enlace Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Eliminar contraseña" + }, + "delete": { + "message": "Eliminar" + }, + "removedPassword": { + "message": "Contraseña eliminada" + }, + "deletedSend": { + "message": "Send eliminado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Enlace Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Desactivado" + }, + "removePasswordConfirmation": { + "message": "¿Está seguro que desea eliminar la contraseña?" + }, + "deleteSend": { + "message": "Eliminar Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "¿Está seguro de que desea eliminar este 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." + }, + "sendTypeHeader": { + "message": "¿Qué tipo de Send es este?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Un nombre amigable para describir este Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "El archivo que desea enviar." + }, + "deletionDate": { + "message": "Fecha de eliminación" + }, + "deletionDateDesc": { + "message": "El Send se eliminará permanentemente 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 caducará 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." + }, + "oneDay": { + "message": "1 día" + }, + "days": { + "message": "$DAYS$ días", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Personalizado" + }, + "maximumAccessCount": { + "message": "Número máximo de accesos" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "message": "Desactiva 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." + }, + "sendShareDesc": { + "message": "Copiar el enlace del Send en el portapapeles al guardar.", + "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." + }, + "sendHideText": { + "message": "Ocultar el texto de este Envío por defecto.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Número de acceso actual" + }, + "createSend": { + "message": "Crear Envío nuevo", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nueva contraseña" + }, + "sendDisabled": { + "message": "Envío 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 empresarial, sólo puede eliminar el existente Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Envío creado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Envío editado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinuxChromiumFileWarning": { + "message": "Para elegir un archivo, abra la extensión en la barra lateral (si es posible) o salga a una nueva ventana haciendo clic en este anouncio." + }, + "sendFirefoxFileWarning": { + "message": "Para elegir un archivo usando Firefox, abra la extensión en la barra lateral o salga a una nueva ventana haciendo clic en este anouncio." + }, + "sendSafariFileWarning": { + "message": "Para elegir un archivo usando Safari, salga a una nueva ventana haciendo clic en este anouncio." + }, + "sendFileCalloutHeader": { + "message": "Antes de empezar" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Para usar un selector de fechas de estilo calendario", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "haz click aquí", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "para abrir la ventana.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "La fecha de caducidad proporcionada no es válida." + }, + "deletionDateIsInvalid": { + "message": "La fecha de eliminación proporcionada no es válida." + }, + "expirationDateAndTimeRequired": { + "message": "Se requiere una fecha y hora de caducidad." + }, + "deletionDateAndTimeRequired": { + "message": "Se requiere una fecha y hora de eliminación." + }, + "dateParsingError": { + "message": "Hubo un error al guardar las fechas de eliminación y caducidad." + }, + "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." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Verificación de correo electrónico requerida" + }, + "emailVerificationRequiredDesc": { + "message": "Debes verificar tu correo electrónico para usar esta función. Puedes verificar tu correo electrónico en la bóveda web." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Seleccione carpeta..." + }, + "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." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "El tiempo de espera de tu caja fuerte excede las restricciones establecidas por tu organización." + }, + "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." + }, + "copyCustomFieldNameInvalidElement": { + "message": "No se puede identificar un elemento de formulario válido. Intenta inspeccionar el HTML en su lugar." + }, + "copyCustomFieldNameNotUnique": { + "message": "Identificador único no encontrado." + }, + "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" + }, + "removeMasterPassword": { + "message": "Eliminar contraseña maestra" + }, + "removedMasterPassword": { + "message": "Contraseña maestra eliminada." + }, + "leaveOrganizationConfirmation": { + "message": "¿Confirma que quiere abandonar esta organización?" + }, + "leftOrganization": { + "message": "Ha abandonado la organización." + }, + "toggleCharacterCount": { + "message": "Alternar conteo de caracteres" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json new file mode 100644 index 0000000000..e7069e0b51 --- /dev/null +++ b/apps/browser/src/_locales/et/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Tasuta paroolihaldur", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Turvaline ja tasuta paroolihaldur kõikidele sinu seadmetele.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Logi oma olemasolevasse kontosse sisse või loo uus konto." + }, + "createAccount": { + "message": "Loo konto" + }, + "login": { + "message": "Logi sisse" + }, + "enterpriseSingleSignOn": { + "message": "Ettevõtte Single Sign-On" + }, + "cancel": { + "message": "Tühista" + }, + "close": { + "message": "Sulge" + }, + "submit": { + "message": "Kinnita" + }, + "emailAddress": { + "message": "E-posti aadress" + }, + "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)" + }, + "tab": { + "message": "Kaart" + }, + "myVault": { + "message": "Minu hoidla" + }, + "tools": { + "message": "Tööriistad" + }, + "settings": { + "message": "Seaded" + }, + "currentTab": { + "message": "Praegune vahekaart" + }, + "copyPassword": { + "message": "Kopeeri parool" + }, + "copyNote": { + "message": "Kopeeri märkus" + }, + "copyUri": { + "message": "Kopeeri URI" + }, + "copyUsername": { + "message": "Kopeeri kasutajanimi" + }, + "copyNumber": { + "message": "Kopeeri number" + }, + "copySecurityCode": { + "message": "Kopeeri turvakood" + }, + "autoFill": { + "message": "Automaatne täitmine" + }, + "generatePasswordCopied": { + "message": "Genereeri parool (kopeeritakse)" + }, + "copyElementIdentifier": { + "message": "Kopeeri kohandatud välja nimi" + }, + "noMatchingLogins": { + "message": "Sobivaid kontoandmeid ei leitud." + }, + "unlockVaultMenu": { + "message": "Lukusta hoidla lahti" + }, + "loginToVaultMenu": { + "message": "Logi hoidlasse sisse" + }, + "autoFillInfo": { + "message": "Selle vahekaardi automaatseks täitmiseks puuduvad kirjed." + }, + "addLogin": { + "message": "Lisa konto andmed" + }, + "addItem": { + "message": "Lisa kirje" + }, + "passwordHint": { + "message": "Parooli vihje" + }, + "enterEmailToGetHint": { + "message": "Ülemparooli vihje saamiseks sisesta oma konto e-posti aadress." + }, + "getMasterPasswordHint": { + "message": "Tuleta ülemparool vihjega meelde" + }, + "continue": { + "message": "Jätka" + }, + "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." + }, + "account": { + "message": "Konto" + }, + "changeMasterPassword": { + "message": "Muuda ülemparooli" + }, + "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." + }, + "twoStepLogin": { + "message": "Kaheastmeline kinnitamine" + }, + "logOut": { + "message": "Logi välja" + }, + "about": { + "message": "Rakenduse info" + }, + "version": { + "message": "Versioon" + }, + "save": { + "message": "Salvesta" + }, + "move": { + "message": "Teisalda" + }, + "addFolder": { + "message": "Kausta lisamine" + }, + "name": { + "message": "Nimi" + }, + "editFolder": { + "message": "Muuda kausta" + }, + "deleteFolder": { + "message": "Kustuta Kaust" + }, + "folders": { + "message": "Kaustad" + }, + "noFolders": { + "message": "Puuduvad kaustad, mida kuvada." + }, + "helpFeedback": { + "message": "Abi ja tagasiside" + }, + "sync": { + "message": "Sünkroniseeri" + }, + "syncVaultNow": { + "message": "Sünkroniseeri hoidla" + }, + "lastSync": { + "message": "Viimane sünkronisatsioon:" + }, + "passGen": { + "message": "Parooli genereerimine" + }, + "generator": { + "message": "Genereerija", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Loo oma kontodele tugevaid ja unikaalseid paroole." + }, + "bitWebVault": { + "message": "Bitwardeni Veebihoidla" + }, + "importItems": { + "message": "Impordi andmed" + }, + "select": { + "message": "Vali" + }, + "generatePassword": { + "message": "Loo parool" + }, + "regeneratePassword": { + "message": "Genereeri parool uuesti" + }, + "options": { + "message": "Valikud" + }, + "length": { + "message": "Pikkus" + }, + "uppercase": { + "message": "Suurtäht (A-Z) " + }, + "lowercase": { + "message": "Väiketäht (a-z) " + }, + "numbers": { + "message": "Numbrid (0-9)" + }, + "specialCharacters": { + "message": "Erimärgid (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Vähim arv numbreid" + }, + "minSpecial": { + "message": "Vähim arv spetsiaalmärke" + }, + "avoidAmbChar": { + "message": "Väldi ebamääraseid kirjamärke" + }, + "searchVault": { + "message": "Otsi hoidlast" + }, + "edit": { + "message": "Muuda" + }, + "view": { + "message": "Vaata" + }, + "noItemsInList": { + "message": "Puuduvad kirjed, mida kuvada." + }, + "itemInformation": { + "message": "Kirje andmed" + }, + "username": { + "message": "Kasutajanimi" + }, + "password": { + "message": "Parool" + }, + "passphrase": { + "message": "Paroolifraas" + }, + "favorite": { + "message": "Lemmik" + }, + "notes": { + "message": "Märkmed" + }, + "note": { + "message": "Märkus" + }, + "editItem": { + "message": "Kirje muutmine" + }, + "folder": { + "message": "Kaust" + }, + "deleteItem": { + "message": "Kustuta kirje" + }, + "viewItem": { + "message": "Kirje vaatamine" + }, + "launch": { + "message": "Käivita" + }, + "website": { + "message": "Veebileht" + }, + "toggleVisibility": { + "message": "Näita" + }, + "manage": { + "message": "Halda" + }, + "other": { + "message": "Muu" + }, + "rateExtension": { + "message": "Hinda seda laiendust" + }, + "rateExtensionDesc": { + "message": "Soovi korral võid meid positiivse hinnanguga toetada!" + }, + "browserNotSupportClipboard": { + "message": "Kasutatav brauser ei toeta lihtsat lõikelaua kopeerimist. Kopeeri see käsitsi." + }, + "verifyIdentity": { + "message": "Identiteedi kinnitamine" + }, + "yourVaultIsLocked": { + "message": "Hoidla on lukus. Jätkamiseks sisesta ülemparool." + }, + "unlock": { + "message": "Lukusta lahti" + }, + "loggedInAsOn": { + "message": "Sisse logitud kontosse $EMAIL$ aadressil $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Vale ülemparool" + }, + "vaultTimeout": { + "message": "Hoidla ajalõpp" + }, + "lockNow": { + "message": "Lukusta paroolihoidla" + }, + "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" + }, + "onLocked": { + "message": "Arvutist väljalogimisel" + }, + "onRestart": { + "message": "Brauseri taaskäivitamisel" + }, + "never": { + "message": "Mitte kunagi" + }, + "security": { + "message": "Turvalisus" + }, + "errorOccurred": { + "message": "Ilmnes viga" + }, + "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": "Konto on loodud! Võid nüüd sisse logida." + }, + "masterPassSent": { + "message": "Ülemparooli vihje saadeti sinu e-postile." + }, + "verificationCodeRequired": { + "message": "Nõutav on kinnituskood." + }, + "invalidVerificationCode": { + "message": "Vale kinnituskood" + }, + "valueCopied": { + "message": "$VALUE$ on kopeeritud", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Automaatne täitmine ebaõnnestus. Palun kopeeri informatsioon käsitsi." + }, + "loggedOut": { + "message": "Välja logitud" + }, + "loginExpired": { + "message": "Sessioon on aegunud." + }, + "logOutConfirmation": { + "message": "Oled kindel, et soovid välja logida?" + }, + "yes": { + "message": "Jah" + }, + "no": { + "message": "Ei" + }, + "unexpectedError": { + "message": "Tekkis ootamatu viga." + }, + "nameRequired": { + "message": "Nimi on kohustuslik." + }, + "addedFolder": { + "message": "Kaust on lisatud" + }, + "changeMasterPass": { + "message": "Muuda ülemparooli" + }, + "changeMasterPasswordConfirmation": { + "message": "Saad oma ülemparooli muuta bitwarden.com veebihoidlas. Soovid seda kohe teha?" + }, + "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?" + }, + "editedFolder": { + "message": "Kaust on muudetud" + }, + "deleteFolderConfirmation": { + "message": "Oled kindel, et soovid seda kausta kustutada?" + }, + "deletedFolder": { + "message": "Kaust on kustutatud" + }, + "gettingStartedTutorial": { + "message": "Alustamise juhend" + }, + "gettingStartedTutorialVideo": { + "message": "Vaata meie alustamise juhendit, et brauseri lisa kohta rohkem teavet saada." + }, + "syncingComplete": { + "message": "Sünkroniseerimine on lõpetatud" + }, + "syncingFailed": { + "message": "Sünkroniseerimine nurjus" + }, + "passwordCopied": { + "message": "Parool on kopeeritud" + }, + "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" + }, + "addedItem": { + "message": "Kirje on lisatud" + }, + "editedItem": { + "message": "Kirje on muudetud" + }, + "deleteItemConfirmation": { + "message": "Soovid tõesti selle kirje kustutada?" + }, + "deletedItem": { + "message": "Kirje on kustutatud" + }, + "overwritePassword": { + "message": "Kirjuta parool üle" + }, + "overwritePasswordConfirmation": { + "message": "Oled kindel, et soovid olemasolevat parooli üle kirjutada?" + }, + "overwriteUsername": { + "message": "Kasutajanime ülekirjutamine" + }, + "overwriteUsernameConfirmation": { + "message": "Oled kindel, et soovid praegust kasutajanime üle kirjutada? " + }, + "searchFolder": { + "message": "Otsi kausta" + }, + "searchCollection": { + "message": "Otsi kogumikku" + }, + "searchType": { + "message": "Otsingu tüüp" + }, + "noneFolder": { + "message": "Kaust puudub", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Keela \"Lisa konto andmed\" teavitus" + }, + "addLoginNotificationDesc": { + "message": "\"Lisa konto andmed\" teavitus ilmub pärast esimest sisselogimist ning võimaldab kontoandmeid automaatselt Bitwardenisse lisada." + }, + "dontShowCardsCurrentTab": { + "message": "Ära kuva \"Kaart\" vaates krediitkaardi andmeid" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Krediit- ja teiste kaartide andmed kuvatakse vaikeseadena \"Kaart\" vaates, et neid oleks lihtsam sisestada." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Ära kuva \"Kaart\" vaates identiteete" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identiteediandmeid kuvatakse vaikeseadena \"Kaart\" vaates, et neid oleks lihtsam sisestada." + }, + "clearClipboard": { + "message": "Lõikelaua sisu kustutamine", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Kustutab automaatselt lõikelauale kopeeritud sisu.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Kas bitwarden peaks seda parooli meeles pidama?" + }, + "notificationAddSave": { + "message": "Jah, salvesta see" + }, + "disableChangedPasswordNotification": { + "message": "Keela Muudetud parooli teavitus" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Kui mistahes veebilehel on toimunud parooli vahetamine, annab \"Muudetud parooli teavitus\" märku, et värskendaksid seda ka Bitwardeni paroolihoidlas." + }, + "notificationChangeDesc": { + "message": "Soovid seda parooli ka Bitwardenis uuendada?" + }, + "notificationChangeSave": { + "message": "Jah, uuenda" + }, + "disableContextMenuItem": { + "message": "Keela parema kliki menüü valikud" + }, + "disableContextMenuItemDesc": { + "message": "Parema kliki menüü abil saad kiiresti parooli genereerida ja konkreetse veebilehe kasutajakonto andmeid sisestada." + }, + "defaultUriMatchDetection": { + "message": "Vaike URI sobivuse tuvastamine", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Vali vaikeviis, kuidas kirje ja URI sobivus tuvastatakse. Seda kasutatakse näiteks siis, kui lehele üritatakse automaatselt andmeid sisestada." + }, + "theme": { + "message": "Teema" + }, + "themeDesc": { + "message": "Muuda rakenduse värvikujundust." + }, + "dark": { + "message": "Tume", + "description": "Dark color" + }, + "light": { + "message": "Hele", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized tume", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Hoidlas olevate andmete eksportimiseks on vajalik ülemparooli sisestamine." + }, + "shared": { + "message": "Jagatud" + }, + "learnOrg": { + "message": "Info organisatsioonide kohta" + }, + "learnOrgConfirmation": { + "message": "Bitwarden võimaldab sul hoidla sisu teiste kasutajatega jagada, kasutades selleks organisatsiooni kontot. Soovid külastada lehekülge bitwarden.com ja selle kohta rohkem lugeda?" + }, + "moveToOrganization": { + "message": "Teisalda organisatsiooni" + }, + "share": { + "message": "Jaga" + }, + "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." + }, + "learnMore": { + "message": "Loe edasi" + }, + "authenticatorKeyTotp": { + "message": "Autentimise võti (TOTP)" + }, + "verificationCodeTotp": { + "message": "Kinnituskood (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopeeri kinnituskood" + }, + "attachments": { + "message": "Manused" + }, + "deleteAttachment": { + "message": "Kustuta manus" + }, + "deleteAttachmentConfirmation": { + "message": "Oled kindel, et soovid manuse kustutada?" + }, + "deletedAttachment": { + "message": "Manus on kustutatud" + }, + "newAttachment": { + "message": "Lisa uus manus" + }, + "noAttachments": { + "message": "Manused puuduvad." + }, + "attachmentSaved": { + "message": "Manus on salvestatud." + }, + "file": { + "message": "Fail" + }, + "selectFile": { + "message": "Vali fail." + }, + "maxFileSize": { + "message": "Maksimaalne faili suurus on 500 MB." + }, + "featureUnavailable": { + "message": "Funktsioon pole saadaval" + }, + "updateKey": { + "message": "Seda funktsiooni ei saa enne krüpteerimise võtme uuendamist kasutada." + }, + "premiumMembership": { + "message": "Premium versioon" + }, + "premiumManage": { + "message": "Halda Premium versiooni" + }, + "premiumManageAlert": { + "message": "Saad Premium versiooni hallata bitwarden.com veebihoidlas. Soovid seda kohe teha?" + }, + "premiumRefresh": { + "message": "Uuenda tellimust" + }, + "premiumNotCurrentMember": { + "message": "Sa ei ole hetkel premium versiooni kasutaja." + }, + "premiumSignUpAndGet": { + "message": "Premium versiooni lisab järgmised eelised:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB ulatuses krüpteeritud salvestusruum." + }, + "ppremiumSignUpTwoStep": { + "message": "Lisavõimalused kaheastmeliseks kinnitamiseks, näiteks YubiKey, FIDO U2F ja Duo." + }, + "ppremiumSignUpReports": { + "message": "Parooli hügieen, konto seisukord ja andmelekete raportid aitavad hoidlat turvalisena hoida." + }, + "ppremiumSignUpTotp": { + "message": "TOTP kinnituskoodide (2FA) genereerija hoidlas olevatele kasutajakontodele." + }, + "ppremiumSignUpSupport": { + "message": "Kiirema kasutajatoe." + }, + "ppremiumSignUpFuture": { + "message": "Tulevased premium funktsioonid - tasuta!" + }, + "premiumPurchase": { + "message": "Osta Premium" + }, + "premiumPurchaseAlert": { + "message": "Bitwardeni premium versiooni saab osta bitwarden.com veebihoidlas. Avan veebihoidla?" + }, + "premiumCurrentMember": { + "message": "Oled premium kasutaja!" + }, + "premiumCurrentMemberThanks": { + "message": "Täname, et toetad Bitwardenit." + }, + "premiumPrice": { + "message": "Kõik see ainult %price% aastas!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Uuendamine lõpetatud" + }, + "disableAutoTotpCopy": { + "message": "Keela automaatne TOTP kopeerimine" + }, + "disableAutoTotpCopyDesc": { + "message": "Kui sinu sisselogimise andmetele on juurde lisatud autentimise võti, kopeeritakse TOTP kood automaatse täitmise kasutamisel lõikelauale." + }, + "disableAutoBiometricsPrompt": { + "message": "Ära küsi käivitudes biomeetrilist kinnitamist" + }, + "premiumRequired": { + "message": "Vajalik on Premium versioon" + }, + "premiumRequiredDesc": { + "message": "Selle funktsiooni kasutamiseks on vajalik tasulist kontot omada." + }, + "enterVerificationCodeApp": { + "message": "Sisesta autentimise rakendusest 6 kohaline number." + }, + "enterVerificationCodeEmail": { + "message": "Sisesta 6 kohaline number, mis saadeti e-posti aadressile", + "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." + }, + "webAuthnNewTab": { + "message": "Jätka WebAuthn 2FA kinnitamisega uuel vahelehel." + }, + "webAuthnNewTabOpen": { + "message": "Ava uus vahekaart" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn kinnitamine" + }, + "loginUnavailable": { + "message": "Sisselogimine ei ole saadaval" + }, + "noTwoStepProviders": { + "message": "Sellel kontol on aktiveeritud kaheastmeline kinnitus. Siiski ei toeta konkreetne brauser ühtegi aktiveeritud kaheastmelise kinnitamise teenust." + }, + "noTwoStepProviders2": { + "message": "Palun kasuta ühilduvat brauserit (näiteks Chrome) ja/või lisa uus kaheastmelise teenuse pakkuja, mis töötab rohkemates brauserites (näiteks mõni autentimise rakendus)." + }, + "twoStepOptions": { + "message": "Kaheastmelise sisselogimise valikud" + }, + "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." + }, + "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": "Veebihoidla serveri URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Teavitus serveri URL" + }, + "iconsUrl": { + "message": "Ikoonide serveri URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "enableAutoFillOnPageLoad": { + "message": "Luba kontoandmete täitmine" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Sisselogimise vormi tuvastamisel sisestatakse sinna kontoandmed automaatselt." + }, + "experimentalFeature": { + "message": "See funktsioon on katsetusjärgus. Kasuta omal vastutusel." + }, + "defaultAutoFillOnPageLoad": { + "message": "Vaikevalik kontoandmete täitmiseks" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "\"Luba kontoandmete täitmine\" sisselülitamisel saad selle siiski individuaalselt iga kirje seadetes välja lülitada. See seadistus rakendub kõikidele kirjetele, mida pole eraldi konfigureeritud." + }, + "itemAutoFillOnPageLoad": { + "message": "Luba kontoandmete täitmine (kui see on aktiveeritud)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Kasuta vaikeseadistust" + }, + "autoFillOnPageLoadYes": { + "message": "Täida kontoandmed lehe laadimisel" + }, + "autoFillOnPageLoadNo": { + "message": "Ära täida kontoandmeid lehe laadimisel" + }, + "commandOpenPopup": { + "message": "Ava hoidla uues aknas" + }, + "commandOpenSidebar": { + "message": "Ava hoidla küljeribal" + }, + "commandAutofillDesc": { + "message": "Sisesta lehele viimati kasutatud kontoandmed." + }, + "commandGeneratePasswordDesc": { + "message": "Loo ja kopeeri uus juhuslikult koostatud parool lõikelauale." + }, + "commandLockVaultDesc": { + "message": "Lukusta hoidla" + }, + "privateModeWarning": { + "message": "Privaatrežiimi toetus on katsejärgus, mistõttu mõned funktsioonid on piiratud." + }, + "customFields": { + "message": "Kohandatud väljad" + }, + "copyValue": { + "message": "Kopeeri kirje" + }, + "value": { + "message": "Väärtus" + }, + "newCustomField": { + "message": "Uus kohandatud väli" + }, + "dragToSort": { + "message": "Lohista sorteerimiseks" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Peidetud" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Ühenduses", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Ühendatud väärtus", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "See aken sulgub, kui klikid oma e-posti aknale, et sealt kinnituskoodi vaadata. Soovid selle hüpikakna uues aknas avada, et seda ei juhtuks?" + }, + "popupU2fCloseMessage": { + "message": "Kasutatav brauser ei suuda selles aknas U2F päringuid töödelda. Kas avan uue akna, et saaksid U2F abil sisse logida?" + }, + "disableFavicon": { + "message": "Keela veebilehel ikoonid" + }, + "disableFaviconDesc": { + "message": "Ikoonid aitavad hoidlas olevaid veebilehti paremini ära tunda." + }, + "disableBadgeCounter": { + "message": "Keela kirjete loendur" + }, + "disableBadgeCounterDesc": { + "message": "Kirjete loendur kuvab Bitwardeni ikoonil konkreetse leheküljega seotud kirjete arvu." + }, + "cardholderName": { + "message": "Kaardiomaniku nimi" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Väljastaja" + }, + "expirationMonth": { + "message": "Aegumise kuu" + }, + "expirationYear": { + "message": "Aegumise aasta" + }, + "expiration": { + "message": "Aegumine" + }, + "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" + }, + "securityCode": { + "message": "Turvakood" + }, + "ex": { + "message": "nt." + }, + "title": { + "message": "Pealkiri" + }, + "mr": { + "message": "Hr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Pr" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Eesnimi" + }, + "middleName": { + "message": "Teine eesnimi" + }, + "lastName": { + "message": "Perekonnanimi" + }, + "fullName": { + "message": "Täisnimi" + }, + "identityName": { + "message": "Identiteedi nimi" + }, + "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" + }, + "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" + }, + "type": { + "message": "Tüüp" + }, + "typeLogin": { + "message": "Kasutajakonto andmed" + }, + "typeLogins": { + "message": "Kontod" + }, + "typeSecureNote": { + "message": "Turvaline märkus" + }, + "typeCard": { + "message": "Pangakaart" + }, + "typeIdentity": { + "message": "Identiteet" + }, + "passwordHistory": { + "message": "Paroolide ajalugu" + }, + "back": { + "message": "Tagasi" + }, + "collections": { + "message": "Kogumikud" + }, + "favorites": { + "message": "Lemmikud" + }, + "popOutNewWindow": { + "message": "Ava uues aknas" + }, + "refresh": { + "message": "Uuenda" + }, + "cards": { + "message": "Pangakaardid" + }, + "identities": { + "message": "Identiteedid" + }, + "logins": { + "message": "Kontod" + }, + "secureNotes": { + "message": "Turvalised märkmed" + }, + "clear": { + "message": "Tühjenda", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Kuva praegused URI'd", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Praegune URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisatsioon", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tüübid" + }, + "allItems": { + "message": "Kõik kirjed" + }, + "noPasswordsInList": { + "message": "Puuduvad paroolid, mida kuvada." + }, + "remove": { + "message": "Eemalda" + }, + "default": { + "message": "Vaikimisi" + }, + "dateUpdated": { + "message": "Uuendatud", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parool on uuendatud", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Oled kindel, et soovid kasutada valikut \"Mitte kunagi\"? Sellega talletatakse sinu hoidla krüpteerimise võtit seadme mälus. Peaksid olema väga hoolas ja kindel, et seade on ohutu ja selles ei ole pahavara." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Ava biomeetriaga" + }, + "awaitDesktop": { + "message": "Kinnituse ootamine töölaua rakenduselt" + }, + "awaitDesktopDesc": { + "message": "Kinnitamiseks kasuta biomeetrilist lahtilukustamist Bitwardeni töölaua rakenduses." + }, + "lockWithMasterPassOnRestart": { + "message": "Nõua ülemparooli, kui brauser taaskäivitatakse" + }, + "selectOneCollection": { + "message": "Pead valima vähemalt ühe kogumiku." + }, + "cloneItem": { + "message": "Klooni kirje" + }, + "clone": { + "message": "Kloon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Organisatsiooni seaded mõjutavad parooli genereerija sätteid." + }, + "vaultTimeoutAction": { + "message": "Hoidla ajalõpu tegevus" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Täida ja salvesta" + }, + "autoFillSuccessAndSavedUri": { + "message": "Kirje täideti ja URI salvestati" + }, + "autoFillSuccess": { + "message": "Kirje täideti" + }, + "setMasterPassword": { + "message": "Määra ü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." + }, + "termsOfService": { + "message": "Kasutustingimused" + }, + "privacyPolicy": { + "message": "Privaatsuspoliitika" + }, + "hintEqualsPassword": { + "message": "Parooli vihje ei saa olla sama mis parool ise." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Töölaua sünkroonimise kinnitamine" + }, + "desktopIntegrationVerificationText": { + "message": "Veendu, et töölaua rakendus kuvab järgnevat sõrmejälge: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Brauseri integratsioon ei ole sisse lülitatud" + }, + "desktopIntegrationDisabledDesc": { + "message": "Brauseri integratsioon ei ole Bitwardeni töölaua rakenduses sisse lülitatud. Palun lülita see töölaua rakenduse seadetes sisse." + }, + "startDesktopTitle": { + "message": "Käivita Bitwardeni töölaua rakendus" + }, + "startDesktopDesc": { + "message": "Enne selle funktsiooni sisselülitamist peab käivitama Bitwardeni töölaua rakenduse." + }, + "errorEnableBiometricTitle": { + "message": "Biomeetria sisselülitamine nurjus" + }, + "errorEnableBiometricDesc": { + "message": "Töölaua rakendus tühistas tegevuse" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Töölaua rakendusel ei õnnestunud turvalist ühenduskanalit luua. Palun proovi uuesti" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Suhtlus töölaua rakendusega katkes" + }, + "nativeMessagingWrongUserDesc": { + "message": "Töölaua rakenduses on sisse logitud teise kasutajaga. Veendu, et oled mõlemas rakenduses sisse loginud ühe ja sama kontoga." + }, + "nativeMessagingWrongUserTitle": { + "message": "Kontod ei ühti" + }, + "biometricsNotEnabledTitle": { + "message": "Biomeetria ei ole sisse lülitatud" + }, + "biometricsNotEnabledDesc": { + "message": "Biomeetria kasutamiseks brauseris peab esmalt Bitwardeni töölaua rakenduse seadetes biomeetria lubama." + }, + "biometricsNotSupportedTitle": { + "message": "Biomeetriat ei toetata" + }, + "biometricsNotSupportedDesc": { + "message": "Brauseri biomeetria ei ole selles seadmes toetatud" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Luba puudub" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Puudub luba, et suhelda Bitwardeni töölaua rakendusega. Selle tõttu ei saa brauseri lisas biomeetriat kasutada. Palun proovi uuesti." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Loa taotlemisel ilmnes viga" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Seda tegevust ei saa küljeribal sooritada. Proovi seda sooritada hüpikakna vaates." + }, + "personalOwnershipSubmitError": { + "message": "Ettevõtte poliitika tõttu ei saa sa andmeid oma personaalsesse Hoidlasse salvestada. Vali Omanikuks organisatsioon ja vali mõni saadavaolevatest Kogumikest." + }, + "personalOwnershipPolicyInEffect": { + "message": "Organisatsiooni poliitika on seadnud omaniku valikutele piirangu." + }, + "excludedDomains": { + "message": "Väljajäetud domeenid" + }, + "excludedDomainsDesc": { + "message": "Nendel domeenidel Bitwarden paroolide salvestamise valikut ei paku. Muudatuste jõustamiseks pead lehekülge värskendama." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ ei ole õige domeen.", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Otsi Sende", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Lisa Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Tekst" + }, + "sendTypeFile": { + "message": "Fail" + }, + "allSends": { + "message": "Kõik Sendid", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maksimaalne ligipääsude arv on saavutatud", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Aegunud" + }, + "pendingDeletion": { + "message": "Kustutamise ootel" + }, + "passwordProtected": { + "message": "Parooliga kaitstud" + }, + "copySendLink": { + "message": "Kopeeri Sendi link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Eemalda parool" + }, + "delete": { + "message": "Kustuta" + }, + "removedPassword": { + "message": "Eemaldas parooli" + }, + "deletedSend": { + "message": "Kustutas Sendi", + "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." + }, + "disabled": { + "message": "Keelatud" + }, + "removePasswordConfirmation": { + "message": "Soovid kindlasti selle parooli eemaldada?" + }, + "deleteSend": { + "message": "Kustuta Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Muuda Sendi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Sisesta Sendi nimi (kohustuslik).", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Fail, mida soovid saata." + }, + "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." + }, + "oneDay": { + "message": "1 päev" + }, + "days": { + "message": "$DAYS$ päeva", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Kohandatud" + }, + "maximumAccessCount": { + "message": "Maksimaalne ligipääsude arv" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kopeeri Sendi salvestamisel link lõikelauale.", + "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." + }, + "sendHideText": { + "message": "Vaikeolekus peida selle Sendi tekst.", + "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" + }, + "createSend": { + "message": "Loo uus Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Uus Parool" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Faili valimiseks ava rakendus külgribal (kui see on võimalik) või kasuta hüpikakent, klikkides sellel bänneril." + }, + "sendFirefoxFileWarning": { + "message": "Faili valimiseks läbi Firefoxi ava Bitwardeni rakendus Firefoxi külgribal või kasuta hüpikakent (klikkides sellel bänneril)." + }, + "sendSafariFileWarning": { + "message": "Faili valimiseks läbi Safari kasuta Bitwardeni hüpikakent (klikkides sellel bänneril)." + }, + "sendFileCalloutHeader": { + "message": "Enne alustamist" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Kalendri stiilis kuupäeva valimiseks", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "kliki siia,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "et avada Bitwarden uues aknas.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Valitud aegumiskuupäev ei ole õige." + }, + "deletionDateIsInvalid": { + "message": "Valitud kustutamise kuupäev ei ole õige." + }, + "expirationDateAndTimeRequired": { + "message": "Nõutav on aegumiskuupäev ja kellaaeg." + }, + "deletionDateAndTimeRequired": { + "message": "Nõutav on kustutamise kuupäev ja kellaaeg." + }, + "dateParsingError": { + "message": "Kustutamis- ja aegumiskuupäevade salvestamisel ilmnes tõrge." + }, + "hideEmail": { + "message": "Ära näita saajatele minu e-posti aadressi." + }, + "sendOptionsPolicyInEffect": { + "message": "Organisatsiooni seaded mõjutavad sinu Sendi sätteid." + }, + "passwordPrompt": { + "message": "Nõutav on ülemparool" + }, + "passwordConfirmation": { + "message": "Ülemparooli kinnitamine" + }, + "passwordConfirmationDesc": { + "message": "See tegevus on kaitstud. Jätkamiseks sisesta oma ülemparool." + }, + "emailVerificationRequired": { + "message": "Vajalik on e-posti kinnitamine" + }, + "emailVerificationRequiredDesc": { + "message": "Selle funktsiooni kasutamiseks pead kinnitama oma e-posti aadressi. Saad seda teha veebihoidlas." + }, + "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." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automaatne liitumine" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Selle organisatsiooni poliitika kohaselt liidetakse sind automaatselt ülemparooli lähtestamise funktsiooniga. Liitumisel saavad organisatsiooni administraatorid sinu ülemparooli muuta." + }, + "selectFolder": { + "message": "Vali kaust..." + }, + "ssoCompleteRegistration": { + "message": "SSO-ga sisselogimise kinnitamiseks tuleb määrata ülemparool. See kaitseb sinu hoidlat ning võimaldab sellele ligi pääseda." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Valitud hoidla ajalõpp ei ole organisatsiooni poolt määratud reeglitega kooskõlas. " + }, + "vaultExportDisabled": { + "message": "Hoidla eksportimine on väljalülitatud" + }, + "personalVaultExportPolicyInEffect": { + "message": "Üks või enam organisatsiooni poliitikat ei võimalda sul oma personaalset hoidlat eksportida." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Korrektset välja nime ei õnnestunud tuvastada. Proovi HTML koodi inspekteerimist." + }, + "copyCustomFieldNameNotUnique": { + "message": "Unikaalset identifikaatorit ei leitud." + }, + "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" + }, + "removeMasterPassword": { + "message": "Eemalda ülemparool" + }, + "removedMasterPassword": { + "message": "Ülemparool on eemaldatud." + }, + "leaveOrganizationConfirmation": { + "message": "Kas oled kindel, et soovid sellest organisatsioonist lahkuda?" + }, + "leftOrganization": { + "message": "Oled organisatsioonist lahkunud." + }, + "toggleCharacterCount": { + "message": "Loenda kirjatähtede hulka" + }, + "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" + } + } + }, + "error": { + "message": "Viga" + }, + "regenerateUsername": { + "message": "Genereeri kasutajanimi uuesti" + }, + "generateUsername": { + "message": "Genereeri kasutajanimi" + }, + "usernameType": { + "message": "Kasutajanime tüüp" + }, + "plusAddressedEmail": { + "message": "Lisaks e-post", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Mida sa soovid genereerida?" + }, + "passwordType": { + "message": "Parooli tüüp" + }, + "service": { + "message": "Teenus" + } +} diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json new file mode 100644 index 0000000000..25c2459902 --- /dev/null +++ b/apps/browser/src/_locales/fa/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - مدیریت کلمه عبور رایگان", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "یک مدیریت کننده کلمه عبور رایگان برای تمامی دستگاههایتان.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "وارد شوید یا یک حساب کاربری بسازید تا به گاوصندوق امنتان دسترسی یابید." + }, + "createAccount": { + "message": "ایجاد حساب کاربری" + }, + "login": { + "message": "ورود" + }, + "enterpriseSingleSignOn": { + "message": "ورود به سیستم پروژه" + }, + "cancel": { + "message": "انصراف" + }, + "close": { + "message": "بستن" + }, + "submit": { + "message": "ثبت" + }, + "emailAddress": { + "message": "آدرس ایمیل" + }, + "masterPass": { + "message": "کلمه عبور اصلی" + }, + "masterPassDesc": { + "message": "کلمه عبور اصلی کلمه عبوری است که شما برای دسترسی به گاوصندوق خود استفاده میکنید. بیاد داشتن کلمه عبور اصلی بسیار اهمیت دارد. اگر فراموشش کنید هیچ راهی برای بازگردانی آن وجود ندارد." + }, + "masterPassHintDesc": { + "message": "راهنمای کلمه عبور اصلی می تواند در صورت فراموشی آن را بیاد بیارید." + }, + "reTypeMasterPass": { + "message": "تایپ دوباره کلمه عبور اصلی" + }, + "masterPassHint": { + "message": "راهنمای کلمه عبور اصلی (اختیاری)" + }, + "tab": { + "message": "زبانه" + }, + "myVault": { + "message": "گاوصندوق من" + }, + "tools": { + "message": "ابزار" + }, + "settings": { + "message": "تنظیمات" + }, + "currentTab": { + "message": "زبانه فعلی" + }, + "copyPassword": { + "message": "کپی رمز عبور" + }, + "copyNote": { + "message": "کپی یادداشت" + }, + "copyUri": { + "message": "کپی آدرس اینترنتی" + }, + "copyUsername": { + "message": "کپی نام کاربری" + }, + "copyNumber": { + "message": "کپی شماره" + }, + "copySecurityCode": { + "message": "کپی کد امنیتی" + }, + "autoFill": { + "message": "پر کردن خودکار" + }, + "generatePasswordCopied": { + "message": "ساخت کلمه عبور (کپی شد)" + }, + "copyElementIdentifier": { + "message": "رونوشت نام فیلد سفارشی" + }, + "noMatchingLogins": { + "message": "ورودیها منتطبق نیست." + }, + "unlockVaultMenu": { + "message": "بازکردن گاو‌صندوقتان" + }, + "loginToVaultMenu": { + "message": "وارد شدن به گاو‌صندوقتان" + }, + "autoFillInfo": { + "message": "پرکردن خودکار برای برگه فعلی مرورگر در دسترس نیست." + }, + "addLogin": { + "message": "افزودن ورود جدید" + }, + "addItem": { + "message": "افزودن مورد" + }, + "passwordHint": { + "message": "راهنمای کلمه عبور" + }, + "enterEmailToGetHint": { + "message": "برای دریافت راهنمایی کلمه عبور اصلی خود آدرس ایملیتان را وارد کنید." + }, + "getMasterPasswordHint": { + "message": "دریافت راهنمای کلمه عبور اصلی" + }, + "continue": { + "message": "ادامه" + }, + "sendVerificationCode": { + "message": "ارسال یک کد تأیید به ایمیل شما" + }, + "sendCode": { + "message": "ارسال کد" + }, + "codeSent": { + "message": "کد ارسال شد" + }, + "verificationCode": { + "message": "کد تایید" + }, + "confirmIdentity": { + "message": "برای ادامه هویت خود را تأیید کنید." + }, + "account": { + "message": "حساب" + }, + "changeMasterPassword": { + "message": "تغییر کلمه عبور اصلی" + }, + "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." + }, + "twoStepLogin": { + "message": "ورود دو مرحله ای" + }, + "logOut": { + "message": "خروج" + }, + "about": { + "message": "درباره ما" + }, + "version": { + "message": "نسخه" + }, + "save": { + "message": "ذخیره" + }, + "move": { + "message": "انتقال" + }, + "addFolder": { + "message": "افزودن پوشه" + }, + "name": { + "message": "نام" + }, + "editFolder": { + "message": "ويرايش پوشه" + }, + "deleteFolder": { + "message": "حذف پوشه" + }, + "folders": { + "message": "پوشه ها" + }, + "noFolders": { + "message": "هیچ موردی برای نمایش وجود ندارد." + }, + "helpFeedback": { + "message": "کمک و بازخورد" + }, + "sync": { + "message": "همگام سازی" + }, + "syncVaultNow": { + "message": "همگام سازی گاوصندوق" + }, + "lastSync": { + "message": "آخرین همگام سازی:" + }, + "passGen": { + "message": "تولید کلمه عبور" + }, + "generator": { + "message": "تولید کننده", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "به طور خودکار کلمه های عبور قوی و منحصر به فرد برای ورود به سیستم خود ایجاد کنید." + }, + "bitWebVault": { + "message": "گاوصندوق وب Bitwarden" + }, + "importItems": { + "message": "واردن کردن موارد" + }, + "select": { + "message": "انتخاب" + }, + "generatePassword": { + "message": "تولید کلمه عبور" + }, + "regeneratePassword": { + "message": "تولید مجدد کلمه عبور" + }, + "options": { + "message": "گزینه ها" + }, + "length": { + "message": "طول" + }, + "uppercase": { + "message": "حروف بزرگ (A-Z)" + }, + "lowercase": { + "message": "حروف کوچک (a-z)" + }, + "numbers": { + "message": "اعداد (‪0-9‬)" + }, + "specialCharacters": { + "message": "نویسه‌های ویژه (!@#$%^&*)" + }, + "numWords": { + "message": "تعداد کلمات" + }, + "wordSeparator": { + "message": "کلمه جداکننده" + }, + "capitalize": { + "message": "بزرگ کردن", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "شامل عدد" + }, + "minNumbers": { + "message": "حداقل اعداد" + }, + "minSpecial": { + "message": "حداقل حرف خاص" + }, + "avoidAmbChar": { + "message": "از کاراکترهای مبهم اجتناب شود" + }, + "searchVault": { + "message": "جستجوی گاوصندوق" + }, + "edit": { + "message": "ویرایش" + }, + "view": { + "message": "مشاهده" + }, + "noItemsInList": { + "message": "هیچ موردی برای نمایش وجود ندارد." + }, + "itemInformation": { + "message": "اطلاعات مورد" + }, + "username": { + "message": "نام کاربری" + }, + "password": { + "message": "کلمه عبور" + }, + "passphrase": { + "message": "کلمه عبور" + }, + "favorite": { + "message": "مورد علاقه" + }, + "notes": { + "message": "یادداشت ها" + }, + "note": { + "message": "یادداشت" + }, + "editItem": { + "message": "ویرایش مورد" + }, + "folder": { + "message": "پوشه" + }, + "deleteItem": { + "message": "حذف مورد" + }, + "viewItem": { + "message": "مشاهده مورد" + }, + "launch": { + "message": "راه اندازی" + }, + "website": { + "message": "وب سایت" + }, + "toggleVisibility": { + "message": "تغییر قابلیت نمایش" + }, + "manage": { + "message": "مدیریت" + }, + "other": { + "message": "ساير" + }, + "rateExtension": { + "message": "به این افزونه امتیاز دهید" + }, + "rateExtensionDesc": { + "message": "لطفاً با یک بررسی خوب به ما کمک کنید!" + }, + "browserNotSupportClipboard": { + "message": "مرورگر شما از کپی کلیپ بورد آسان پشتیبانی نمی کند. به جای آن به صورت دستی کپی کنید." + }, + "verifyIdentity": { + "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": "کلمه عبور اصلی نامعتبر است" + }, + "vaultTimeout": { + "message": "متوقف شدن گاو‌صندوق" + }, + "lockNow": { + "message": "الان قفل شود" + }, + "immediately": { + "message": "بلافاصله" + }, + "tenSeconds": { + "message": "۱۰ ثانیه" + }, + "twentySeconds": { + "message": "۲۰ ثانیه" + }, + "thirtySeconds": { + "message": "۳۰ ثانیه" + }, + "oneMinute": { + "message": "۱ دقیقه" + }, + "twoMinutes": { + "message": "۲ دقیقه" + }, + "fiveMinutes": { + "message": "۵ دقیقه" + }, + "fifteenMinutes": { + "message": "۱۵ دقیقه" + }, + "thirtyMinutes": { + "message": "۳۰ دقیقه" + }, + "oneHour": { + "message": "۱ ساعت" + }, + "fourHours": { + "message": "4 ساعت" + }, + "onLocked": { + "message": "هنگام قفل سیستم" + }, + "onRestart": { + "message": "هنگام راه اندازی مجدد" + }, + "never": { + "message": "هرگز" + }, + "security": { + "message": "امنیت" + }, + "errorOccurred": { + "message": "خطایی رخ داده است" + }, + "emailRequired": { + "message": "آدرس ایمیل ضروری است." + }, + "invalidEmail": { + "message": "آدرس ایمیل نامعتبر است." + }, + "masterPassRequired": { + "message": "کلمه عبور اصلی ضروری است." + }, + "masterPassLength": { + "message": "طول کلمه عبور اصلی باید حداقل ۸ کاراکتر باشد." + }, + "masterPassDoesntMatch": { + "message": "کلمه عبور اصلی با تکرار کلمه عبور اصلی مطابقت ندارد." + }, + "newAccountCreated": { + "message": "حساب شما ساختته شد! حالا میتوانید وارد شوید." + }, + "masterPassSent": { + "message": "ما یک ایمیل همراه با راهنمای کلمه عبور اصلی برایتان ارسال کردیم." + }, + "verificationCodeRequired": { + "message": "کد تایید مورد نیاز است." + }, + "invalidVerificationCode": { + "message": "کد تایید نامعتبر" + }, + "valueCopied": { + "message": " کپی شده", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "ناتوان در پرکردن خودکار آیتم انتخاب شده در این صفحه. اطلاعات را کپی و جایگذاری کنید." + }, + "loggedOut": { + "message": "خارج شده" + }, + "loginExpired": { + "message": "جلسه ورود شما منقضی شده است." + }, + "logOutConfirmation": { + "message": "آیا مطمئنید که می‌خواهید خارج شوید؟" + }, + "yes": { + "message": "بله" + }, + "no": { + "message": "خیر" + }, + "unexpectedError": { + "message": "یک خطای غیر منتظره رخ داده است." + }, + "nameRequired": { + "message": "نام ضروری است." + }, + "addedFolder": { + "message": "پوشه اضافه شده" + }, + "changeMasterPass": { + "message": "تغییر کلمه عبور اصلی" + }, + "changeMasterPasswordConfirmation": { + "message": "شما می‌توانید کلمه عبور اصلی خود را در bitwarden.com تغییر دهید. آیا می‌خواهید از سایت بازدید کنید؟" + }, + "twoStepLoginConfirmation": { + "message": "ورودی دو مرحله ای باعث می شود که حساب کاربری شما با استفاده از یک دستگاه دیگر مانند کلید امنیتی، برنامه تأیید هویت، پیامک، تماس تلفنی و یا ایمیل، اعتبار خود را با ایمنی بیشتر ثابت کند. ورودی دو مرحله ای می تواند در bitwarden.com فعال شود. آیا می خواهید از سایت بازدید کنید؟" + }, + "editedFolder": { + "message": "پوشه ویرایش شده" + }, + "deleteFolderConfirmation": { + "message": "آیا از حذف این پوشه اطمینان دارید؟" + }, + "deletedFolder": { + "message": "پوشه حذف شده" + }, + "gettingStartedTutorial": { + "message": "آغاز نمودن آموزش" + }, + "gettingStartedTutorialVideo": { + "message": "برای یادگیری بیشتر نحوه استفاده از افزونه مرورگر آموزش شروع به کار را تماشا کنید." + }, + "syncingComplete": { + "message": "همگام سازی کامل شد" + }, + "syncingFailed": { + "message": "همگام سازی شکست خورد" + }, + "passwordCopied": { + "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": "آدرس اینترنتی جدید" + }, + "addedItem": { + "message": "مورد افزوده شده" + }, + "editedItem": { + "message": "مورد ویرایش شده" + }, + "deleteItemConfirmation": { + "message": "آیا مطمئن هستید می خواهید این مورد را حذف کنید؟" + }, + "deletedItem": { + "message": "مورد حذف شده" + }, + "overwritePassword": { + "message": "بازنویسی کلمه عبور" + }, + "overwritePasswordConfirmation": { + "message": "آیا از بازنویسی بر روی پسورد فعلی مطمئن هستید؟" + }, + "overwriteUsername": { + "message": "بازنویسی نام کاربری" + }, + "overwriteUsernameConfirmation": { + "message": "آیا از بازنویسی نام کاربری فعلی مطمئن هستید؟" + }, + "searchFolder": { + "message": "جستجوی پوشه" + }, + "searchCollection": { + "message": "جستجوی مجموعه" + }, + "searchType": { + "message": "نوع جستجو" + }, + "noneFolder": { + "message": "بدون پوشه", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "غیرفعال کردن اعلانیه اضافه کردن ورودی" + }, + "addLoginNotificationDesc": { + "message": "\"افزودن اعلانیه ورود\" به صورت خودکار از شما می خواهد هر بار که برای اولین بار وارد سیستم میشوید ورودی های جدید را در گاوصندوق خود ذخیره کنید." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "آیا Bitwarden باید این کلمه عبور را برایتان بخاطر بسپارد؟" + }, + "notificationAddSave": { + "message": "بله، ذخیره کن" + }, + "disableChangedPasswordNotification": { + "message": "غیر فعال کردن اعلان تغییر کلمه عبور" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"اعلانیه کلمه عبور تغییر کرده\" بصورت خودکار شما را از بروزرسانی کلمه عبور در گاوصندوق مطلع میکند هر زمان که شما آن را در یک وبسایت تغییر داده باشید." + }, + "notificationChangeDesc": { + "message": "آیا مایل به بروزرسانی این پسورد در Bitwarden هستید؟" + }, + "notificationChangeSave": { + "message": "بله، بروزرسانی کن" + }, + "disableContextMenuItem": { + "message": "غیر فعال کردن گزینه های منوی متن" + }, + "disableContextMenuItemDesc": { + "message": "گزینه های منوی متن دسترسی سریع به ساخت کلمه عبور و ورود به سیستم برای وبسایت در برگه فعلی را برای شما فراهم میکند." + }, + "defaultUriMatchDetection": { + "message": "بازرسی تطابق URL پیشفرض", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "روش پیش فرض اعمال بازرسی تطابق ‌‌URL را هنگامی که عملی را مثل پر کردن خودکار انتخاب کنید." + }, + "theme": { + "message": "پوسته" + }, + "themeDesc": { + "message": "تغییر رنگ پوسته برنامه." + }, + "dark": { + "message": "تاریک", + "description": "Dark color" + }, + "light": { + "message": "روشن", + "description": "Light color" + }, + "solarizedDark": { + "message": "تاریک خورشیدی", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "exportVault": { + "message": "صادر کردن گاوصندوق" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "اخطار", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "صادرات گاوصندوق را تأیید کنید" + }, + "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": "این صادرات با استفاده از کلید رمزگذاری حساب شما ، اطلاعات شما را رمزگذاری می کند. اگر حتی کلید رمزگذاری حساب خود را بچرخانید ، باید دوباره صادر کنید چون قادر به رمزگشایی این پرونده صادراتی نخواهید بود." + }, + "encExportAccountWarningDesc": { + "message": "کلیدهای رمزگذاری حساب برای هر حساب کاربری Bitwarden منحصر به فرد است ، بنابراین نمی توانید صادرات رمزگذاری شده را به حساب دیگری وارد کنید." + }, + "exportMasterPassword": { + "message": "کلمه عبور اصلی خود را برای صادرات داده ها از گاوصندوقتان وارد کنید." + }, + "shared": { + "message": "اشتراک گذاری شد" + }, + "learnOrg": { + "message": "درباره سازمانها اطلاعات کسب کنید" + }, + "learnOrgConfirmation": { + "message": "Bitwarden به شما اجازه می دهد با استفاده از یک سازمان، موارد گاوصندوق خود را با دیگران به اشتراک بگذارید. آیا مایل به بازدید از وب سایت bitwarden.com برای کسب اطلاعات بیشتر هستید؟" + }, + "moveToOrganization": { + "message": "انتقال به سازمان" + }, + "share": { + "message": "اشتراک گذاری" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ منتقل شد به $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "سازمانی را انتخاب کنید که می خواهید این مورد را به آن منتقل کنید. انتقال به یک سازمان، مالکیت مورد را به آن سازمان منتقل می کند. پس از انتقال این مورد، دیگر مالک مستقیم آن نخواهید بود." + }, + "learnMore": { + "message": "بیشتر بدانید" + }, + "authenticatorKeyTotp": { + "message": "کلید تأیید کننده (TOTP)" + }, + "verificationCodeTotp": { + "message": "کد تأیید (TOTP)" + }, + "copyVerificationCode": { + "message": "کپی کد تأیید" + }, + "attachments": { + "message": "پیوست ها" + }, + "deleteAttachment": { + "message": "حذف پیوست" + }, + "deleteAttachmentConfirmation": { + "message": "آیا از پاک کردن این پیوست مطمئن هستید؟" + }, + "deletedAttachment": { + "message": "حذف پیوست" + }, + "newAttachment": { + "message": "افزودن پیوست جدید" + }, + "noAttachments": { + "message": "بدون پیوست." + }, + "attachmentSaved": { + "message": "پیوست ذخیره شد." + }, + "file": { + "message": "فایل" + }, + "selectFile": { + "message": "انتخاب یک فایل." + }, + "maxFileSize": { + "message": "بیشترین حجم فایل 500 مگابایت است." + }, + "featureUnavailable": { + "message": "ویژگی موجود نیست" + }, + "updateKey": { + "message": "تا زمانی که کد رمزنگاری را بروز نکنید نمیتوانید از این قابلیت استفاده کنید." + }, + "premiumMembership": { + "message": "عضویت پرمیوم" + }, + "premiumManage": { + "message": "مدیریت عضویت" + }, + "premiumManageAlert": { + "message": "شما میتوانید عضویت خود را در نسخه وب گاوصندوق در bitwarden.com مدیریت کنید. آیا مایل به دیدن وبسایت هستید؟" + }, + "premiumRefresh": { + "message": "نوسازی عضویت" + }, + "premiumNotCurrentMember": { + "message": "شما در حال حاظر کاربر پرمیوم نیستید." + }, + "premiumSignUpAndGet": { + "message": "ثبت نام برای عضویت پرمیوم و گرفتن:" + }, + "ppremiumSignUpStorage": { + "message": "۱ گیگابایت فضای ذخیره سازی رمزنگاری شده." + }, + "ppremiumSignUpTwoStep": { + "message": "گزینه های ورود اضافی دو مرحله ای مانند YubiKey, FIDO U2F و Duo." + }, + "ppremiumSignUpReports": { + "message": "بهداشت کلمه عبور، سلامت اکانت و گزارش های نقض اطلاعات تا صندوق شما امن نگه داشته شود." + }, + "ppremiumSignUpTotp": { + "message": "تولید کننده کد تایید (2FA) از نوع TOTP برای ورود به گاوصندوقتان." + }, + "ppremiumSignUpSupport": { + "message": "اولویت پشتیبانی از مشتری." + }, + "ppremiumSignUpFuture": { + "message": "تمام ویژگی های پرمیوم آینده. به زودی بیشتر!" + }, + "premiumPurchase": { + "message": "خرید پرمیوم" + }, + "premiumPurchaseAlert": { + "message": "شما میوانید عضویت پرمیوم را از وب گاوصندوق bitwarden.com خریداری کنید. مایلید اکنون از وبسایت بازید کنید؟" + }, + "premiumCurrentMember": { + "message": "شما یک عضو پرمیوم هستید!" + }, + "premiumCurrentMemberThanks": { + "message": "برای حمایتتان از Bitwarden سپاسگزاریم." + }, + "premiumPrice": { + "message": "تمامش فقط $PRICE$ در سال!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "نوسازی کامل شد" + }, + "disableAutoTotpCopy": { + "message": "غیرفعال کردن کپی خودکار TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "اگر ورود شما دارای یک کلید تأیید کننده است که به آن متصل شده است، هر زمان که بصورت خودکار وارد سایت شوید کد تأیید TOTP به صورت خودکار به کلیپ بورد شما کپی می شود." + }, + "disableAutoBiometricsPrompt": { + "message": "در هنگام راه اندازی، درخواست biometrics نکنید." + }, + "premiumRequired": { + "message": "در نسخه پرمیوم کار میکند" + }, + "premiumRequiredDesc": { + "message": "برای استفاده از این ویژگی عضویت پرمیوم لازم است." + }, + "enterVerificationCodeApp": { + "message": "کد ۶ رقمی تایید را از برنامه تایید کننده وارد کنید." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to", + "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 رایانه کنید، اگر دکمه ای دارد آن را بفشارید." + }, + "webAuthnNewTab": { + "message": "تأیید WebAuthn 2FA را در برگه جدید ادامه دهید." + }, + "webAuthnNewTabOpen": { + "message": "باز کردن زبانه جدید" + }, + "webAuthnAuthenticate": { + "message": "تأیید اعتبار در WebAuthn" + }, + "loginUnavailable": { + "message": "ورود به سیستم موجود نیست" + }, + "noTwoStepProviders": { + "message": "این حساب با سیستم دو مرحله ورود فعال است، با این حال، هیچ یک از ارائه دهندگان دو مرحله ای پیکربندی شده توسط این مرورگر وب پشتیبانی نمی شوند." + }, + "noTwoStepProviders2": { + "message": "لطفا از یک مرورگر وب پشتیبانی شده (مانند کروم) استفاده کنید و / یا ارائه دهندگان اضافی را که در مرورگر وب بهتر پشتیانی میکنند را اضافه کنید (مانند یک برنامه تأیید کننده هویت)." + }, + "twoStepOptions": { + "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، NEO کار میکند." + }, + "duoDesc": { + "message": "تایید کنید همراه با Duo Security از اپ موبایل Dou استفاده کنید، پیامک،تماس تلفنی، یا کلید امنیتی 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\n" + }, + "webAuthnDesc": { + "message": "برای دسترسی به حساب خود از هر کلید امنیتی فعال شده WebAuthn استفاده کنید." + }, + "emailTitle": { + "message": "ایمیل" + }, + "emailDesc": { + "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": "آدرس های اینترنتی محیط ذخیره شد." + }, + "enableAutoFillOnPageLoad": { + "message": "فعال کردن پرکردن خودکار هنگام بارگذاری صفحه" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "اگر یک فرم ورودی شناسایی شود، وقتی صفحه وب بارگذاری می شود، به صورت اتوماتیک انجام می شود." + }, + "experimentalFeature": { + "message": "در حال حاضر این یک ویژگی آزمایشی است. با مسئولیت خود استفاده کنید." + }, + "defaultAutoFillOnPageLoad": { + "message": "تنظیم خودکار پیش فرض برای موارد ورود به سیستم" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "پس از فعال کردن پرکردن خودکار بارگذاری صفحه، می توانید این ویژگی را برای موارد ورود به سیستم جداگانه فعال یا غیرفعال کنید. این تنظیمات پیش فرض برای موارد ورود به سیستم است که به طور جداگانه پیکربندی نشده اند." + }, + "itemAutoFillOnPageLoad": { + "message": "پر کردن خودکار بارگذاری صفحه (درصورت فعال بودن در گزینه ها)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "استفاده از تنظيمات پيشفرض" + }, + "autoFillOnPageLoadYes": { + "message": "بارگذاری صفحه را به طور خودکار پر کن" + }, + "autoFillOnPageLoadNo": { + "message": "بارگذاری صفحه را به طور خودکار پر نکن" + }, + "commandOpenPopup": { + "message": "بازکردن پنجره گاوصندوق" + }, + "commandOpenSidebar": { + "message": "بازکردن گاوصندوق در نوار کناری" + }, + "commandAutofillDesc": { + "message": "آخرین ورودی مورد استفاده برای وب سایت فعلی را به صورت خودکار پر کنید." + }, + "commandGeneratePasswordDesc": { + "message": "یک کلمه عبور تصادفی جدید ایجاد کنید و آن را در کلیپ بورد کپی کنید." + }, + "commandLockVaultDesc": { + "message": "قفل گاوصندوق" + }, + "privateModeWarning": { + "message": "پشتیبانی حالت خصوصی آزمایشی است و برخی از ویژگی‌ها محدود هستند." + }, + "customFields": { + "message": "فیلدهای سفارشی" + }, + "copyValue": { + "message": "کپی مقدار" + }, + "value": { + "message": "مقدار" + }, + "newCustomField": { + "message": "فیلد سفارشی جدید" + }, + "dragToSort": { + "message": "برای مرتب سازی بکشید" + }, + "cfTypeText": { + "message": "متن" + }, + "cfTypeHidden": { + "message": "مخفی" + }, + "cfTypeBoolean": { + "message": "بولین" + }, + "cfTypeLinked": { + "message": "لینک شده", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "ارزش لینک شده", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "در خارج از پنجره پاپ آپ کلیک کنید که ایملیتان بررسی شود برای کد تأییدیه که باعث میشود این پنجره بسته شود. آیا می خواهید این پاپ آپ را در یک پنجره جدید باز کنید تا آن را نبندید؟" + }, + "popupU2fCloseMessage": { + "message": "این مرورگر نمیتواند درخواستهای U2F را در این پنجره پاپ آپ پردازش کند. آیا می خواهید این پنجره را در یک پنجره جدید باز کنید تا بتوانید با استفاده از U2F وارد شوید؟" + }, + "disableFavicon": { + "message": "غیرفعال سازی آیکون های وبسایت" + }, + "disableFaviconDesc": { + "message": "آیکون های وبسایت یک تصویر قابل تشخیص در کنار هر داده ورودی ارائه میدهد." + }, + "disableBadgeCounter": { + "message": "شمارنده نشان را غیرفعال کن" + }, + "disableBadgeCounterDesc": { + "message": "شمارنده نشان، نشان می دهد که چه تعداد ورود به سیستم برای صفحه فعلی در گاو‌صندوق خود دارید." + }, + "cardholderName": { + "message": "نام صاحب کارت" + }, + "number": { + "message": "شماره" + }, + "brand": { + "message": "نام تجاری" + }, + "expirationMonth": { + "message": "ماه انقضاء" + }, + "expirationYear": { + "message": "سال انقضاء" + }, + "expiration": { + "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": "دسامبر" + }, + "securityCode": { + "message": "کد امنیتی" + }, + "ex": { + "message": "سابق." + }, + "title": { + "message": "عنوان" + }, + "mr": { + "message": "آقا" + }, + "mrs": { + "message": "خانم" + }, + "ms": { + "message": "خانم" + }, + "dr": { + "message": "دکتر" + }, + "firstName": { + "message": "نام" + }, + "middleName": { + "message": "نام میانی" + }, + "lastName": { + "message": "نام خانوادگی" + }, + "fullName": { + "message": "نام کامل" + }, + "identityName": { + "message": "نام شناسایی" + }, + "company": { + "message": "شرکت" + }, + "ssn": { + "message": "شماره امنیتی اجتماعی" + }, + "passportNumber": { + "message": "شماره پاسپورت" + }, + "licenseNumber": { + "message": "شماره مجوز" + }, + "email": { + "message": "ایمیل" + }, + "phone": { + "message": "تلفن" + }, + "address": { + "message": "آدرس" + }, + "address1": { + "message": "نشانی ۱" + }, + "address2": { + "message": "نشانی ۲" + }, + "address3": { + "message": "نشانی ۳" + }, + "cityTown": { + "message": "شهر / شهرک" + }, + "stateProvince": { + "message": "ایالت / استان" + }, + "zipPostalCode": { + "message": "کد پستی" + }, + "country": { + "message": "کشور" + }, + "type": { + "message": "نوع" + }, + "typeLogin": { + "message": "ورود" + }, + "typeLogins": { + "message": "ورود" + }, + "typeSecureNote": { + "message": "یادداشت امن" + }, + "typeCard": { + "message": "کارت" + }, + "typeIdentity": { + "message": "مشخصات" + }, + "passwordHistory": { + "message": "تاریخچه کلمه عبور" + }, + "back": { + "message": "بازگشت" + }, + "collections": { + "message": "مجموعه ها" + }, + "favorites": { + "message": "مورد علاقه" + }, + "popOutNewWindow": { + "message": "به یک پنجره جدید پاپ بزنید" + }, + "refresh": { + "message": "تازه کردن" + }, + "cards": { + "message": "کارتها" + }, + "identities": { + "message": "مشخصات" + }, + "logins": { + "message": "ورود" + }, + "secureNotes": { + "message": "یادداشت های امن" + }, + "clear": { + "message": "پاک کردن", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "بررسی اینکه که آیا کلمه عبور افشا شده است." + }, + "passwordExposed": { + "message": "This password has been exposed in data breaches. You should change it.", + "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": "گزینه های تبدیل" + }, + "toggleCurrentUris": { + "message": "تغییر وضعیت نشانی های اینترنتی فعلی", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "نشانی اینترنتی فعلی", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "سازماندهی", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "انواع" + }, + "allItems": { + "message": "تمام موارد" + }, + "noPasswordsInList": { + "message": "هیچ کلمه عبوری در لیست وجود ندارد." + }, + "remove": { + "message": "حذف" + }, + "default": { + "message": "پیش فرض" + }, + "dateUpdated": { + "message": "بروزرسانی شد", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "کلمه عبور بروزرسانی شد", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "آیا جدا میخواهید از گزینه \"هرگز\" استفاده کنید؟ تنظیم کردن کردن گزینه قفل به \"هرگز\" کلیدهای رمزنگاری گاوصندوقتان را بر روی دستگاه شما ذخیره خواهد کرد. اگر از این گزینه استفاده میکنید باید اطمینان داشته باشید که دستگاه شما کاملا محافظت شده است." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "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": "پین کد خود را برای باز کردن بیت واردن خود استفاده کنید. اگر به صورت کامل از حساب خود خارج شوید تنظیمات پین شما ریست می شود." + }, + "pinRequired": { + "message": "کد پین الزامیست." + }, + "invalidPin": { + "message": "کد پین معتبر نیست. " + }, + "unlockWithBiometrics": { + "message": "با استفاده از بیومتریک باز کنید" + }, + "awaitDesktop": { + "message": "در انتظار تأیید از دسکتاپ" + }, + "awaitDesktopDesc": { + "message": "لطفاً استفاده از بیومتریک را در برنامه دسکتاپ Bitwarden تأیید کنید تا بیومتریک را برای مرورگر فعال کنید." + }, + "lockWithMasterPassOnRestart": { + "message": "در زمان شروع مجدد مرورگر، با رمز اصلی قفل کن" + }, + "selectOneCollection": { + "message": "شما باید حداقل یک مجموعه را انتخاب کنید." + }, + "cloneItem": { + "message": "مورد شبیه" + }, + "clone": { + "message": "شبیه سازی" + }, + "passwordGeneratorPolicyInEffect": { + "message": "یک یا چند خط مشی سازمان بر تنظیمات تولیدکننده شما تأثیر می گذارد." + }, + "vaultTimeoutAction": { + "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": "مورد بازیابی شد" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "خروج از سیستم تمام دسترسی ها به گاو‌صندوق شما را از بین می برد و نیاز به احراز هویت آنلاین پس از مدت زمان توقف دارد. آیا مطمئن هستید که می خواهید از این تنظیمات استفاده کنید؟" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "تایید عمل توقف" + }, + "autoFillAndSave": { + "message": "پرکردن خودکار و ذخیره" + }, + "autoFillSuccessAndSavedUri": { + "message": "مورد خودکار پر شد و آدرس اینترنتی ذخیره شد" + }, + "autoFillSuccess": { + "message": "مورد خودکار پر شد" + }, + "setMasterPassword": { + "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": "شرایط خدمات و سیاست حفظ حریم خصوصی تأیید نشده است." + }, + "termsOfService": { + "message": "شرایط استفاده از خدمات" + }, + "privacyPolicy": { + "message": "سیاست حفظ حریم خصوصی" + }, + "hintEqualsPassword": { + "message": "نکته کلمه عبور شما نمی تواند همان کلمه عبور شما باشد." + }, + "ok": { + "message": "تایید" + }, + "desktopSyncVerificationTitle": { + "message": "تأیید همگام سازی دسکتاپ" + }, + "desktopIntegrationVerificationText": { + "message": "لطفاً تأیید کنید که برنامه دسکتاپ این اثر انگشت را نشان می دهد:" + }, + "desktopIntegrationDisabledTitle": { + "message": "ادغام مرورگر فعال نیست" + }, + "desktopIntegrationDisabledDesc": { + "message": "ادغام مرورگر در برنامه دسکتاپ Bitwarden فعال نیست. لطفاً آن را در تنظیمات موجود در برنامه دسکتاپ فعال کنید." + }, + "startDesktopTitle": { + "message": "برنامه دسکتاپ Bitwarden را شروع کنید" + }, + "startDesktopDesc": { + "message": "قبل از استفاده از این عملکرد، برنامه دسکتاپ Bitwarden باید شروع شود." + }, + "errorEnableBiometricTitle": { + "message": "بیومتریک فعال نیست" + }, + "errorEnableBiometricDesc": { + "message": "فعالیت توسط برنامه دسکتاپ لغو شد" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "برنامه دسکتاپ کانال ارتباط امن را نامعتبر کرد. لطفاً این عملیات را دوباره امتحان کنید" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "ارتباط دسکتاپ قطع شد" + }, + "nativeMessagingWrongUserDesc": { + "message": "برنامه دسکتاپ به یک حساب دیگر وارد شده است. لطفاً اطمینان حاصل کنید که هر دو برنامه به یک حساب وارد شده اند." + }, + "nativeMessagingWrongUserTitle": { + "message": "عدم تطابق حساب" + }, + "biometricsNotEnabledTitle": { + "message": "بیومتریک فعال نیست" + }, + "biometricsNotEnabledDesc": { + "message": "بیومتریک مرورگر ابتدا نیاز به فعالسازی بیومتریک دسکتاپ در تنظیمات دارد." + }, + "biometricsNotSupportedTitle": { + "message": "بیومتریک پشتیبانی نمی شود" + }, + "biometricsNotSupportedDesc": { + "message": "بیومتریک مرورگر در این دستگاه پشتیبانی نمی شود." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "مجوز ارائه نشده است" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "بدون اجازه ارتباط با برنامه دسکتاپ Bitwarden ، نمی توانیم بیومتریک را در افزونه مرورگر ارائه دهیم. لطفا دوباره تلاش کنید." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "خطای درخواست مجوز" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "این عمل را نمی توان در نوار کناری انجام داد، لطفاً اقدام را در پنجره بازشو یا پنجره بازخوانی کنید." + }, + "personalOwnershipSubmitError": { + "message": "به دلیل خط مشی Enterprise ، برای ذخیره موارد در گاوصندوق شخصی خود محدود شده اید. گزینه مالکیت را به یک سازمان تغییر دهید و مجموعه های موجود را انتخاب کنید." + }, + "personalOwnershipPolicyInEffect": { + "message": "خط مشی سازمانی بر تنظیمات مالکیت شما تأثیر می گذارد." + }, + "excludedDomains": { + "message": "دامنه های مستثنی" + }, + "excludedDomainsDesc": { + "message": "Bitwarden برای ذخیره جزئیات ورود به سیستم این دامنه ها سوال نمی‌کند. برای اینکه تغییرات اعمال شود باید صفحه را تازه کنید." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ دامنه معتبری نیست", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "ارسال", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "ارسال ها را جستجو کن", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "افزودن ارسال", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "متن" + }, + "sendTypeFile": { + "message": "فایل" + }, + "allSends": { + "message": "همه ارسال ها", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "به حداکثر تعداد دسترسی رسیده است", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "منقضی شده" + }, + "pendingDeletion": { + "message": "در انتظار حذف" + }, + "passwordProtected": { + "message": "محافظت ‌شده با کلمه عبور" + }, + "copySendLink": { + "message": "پیوند ارسال را کپی کن", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "حذف کلمه عبور" + }, + "delete": { + "message": "حذف" + }, + "removedPassword": { + "message": "کلمه عبور حذف شد" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "غیرفعال شد" + }, + "removePasswordConfirmation": { + "message": "مطمئنید می‌خواهید این کلمه عبور حذف شود؟" + }, + "deleteSend": { + "message": "ارسال پاک شد", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "این چه نوع ارسالی است؟", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "یک نام دوستانه برای توصیف این ارسال.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "۱ روز" + }, + "days": { + "message": "$DAYS$ روز", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "سفارشی" + }, + "maximumAccessCount": { + "message": "تعداد دسترسی حداکثر" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "این ارسال را غیرفعال کنید تا کسی نتواند به آن دسترسی پیدا کند.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "پس از ذخیره، این پیوند ارسال را به کلیپ بورد کپی کن.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "متنی که می خواهید ارسال کنید." + }, + "sendHideText": { + "message": "متن این ارسال را به طور پیش فرض پنهان کن.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "تعداد دسترسی فعلی" + }, + "createSend": { + "message": "ساختن ارسال جدید", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "برای انتخاب پرونده، پسوند را در نوار کناری باز کنید (در صورت امکان) یا با کلیک بر روی این آگهی به پنجره جدیدی باز شوید." + }, + "sendFirefoxFileWarning": { + "message": "برای انتخاب یک فایل با استفاده از Firefox، افزونه را در نوار کناری باز کنید یا با کلیک بر روی این بنر به پنجره جدید باز شوید." + }, + "sendSafariFileWarning": { + "message": "برای انتخاب فایلی با استفاده از Safari، با کلیک روی این بنر به پنجره جدیدی باز شوید." + }, + "sendFileCalloutHeader": { + "message": "قبل از اینکه شروع کنی" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "برای استفاده از انتخابگر تاریخ به سبک تقویم", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "اینجا کلیک کنید", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "برای خروج از پنجره خود.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "تاریخ انقضا ارائه شده معتبر نیست." + }, + "deletionDateIsInvalid": { + "message": "تاریخ حذف ارائه شده معتبر نیست." + }, + "expirationDateAndTimeRequired": { + "message": "تاریخ انقضا و زمان لازم است." + }, + "deletionDateAndTimeRequired": { + "message": "تاریخ و زمان حذف لازم است." + }, + "dateParsingError": { + "message": "هنگام ذخیره حذف و تاریخ انقضا شما خطایی روی داد." + }, + "hideEmail": { + "message": "آدرس ایمیلم را از گیرندگان مخفی کن." + }, + "sendOptionsPolicyInEffect": { + "message": "یک یا چند سیاست سازمان بر گزینه های ارسال شما تأثیر می گذارد." + }, + "passwordPrompt": { + "message": "کلمه عبور اصلی دوباره تولید می شود" + }, + "passwordConfirmation": { + "message": "تأیید کلمه عبور اصلی" + }, + "passwordConfirmationDesc": { + "message": "این عمل محافظت می شود. برای ادامه، لطفاً کلمه ورود اصلی خود را دوباره وارد کنید تا هویتان را تأیید کنید." + }, + "emailVerificationRequired": { + "message": "تایید ایمیل لازم است" + }, + "emailVerificationRequiredDesc": { + "message": "برای استفاده از این ویژگی باید ایمیل خود را تأیید کنید. می توانید ایمیل خود را در گاوصندوق وب تأیید کنید." + }, + "updatedMasterPassword": { + "message": "کلمه عبور اصلی بروز شد" + }, + "updateMasterPassword": { + "message": "بروزرسانی کلمه عبور اصلی" + }, + "updateMasterPasswordWarning": { + "message": "کلمه عبور اصلی شما اخیراً توسط سرپرست سازمانتان تغییر کرده است. برای دسترسی به گاوصندوق، باید همین حالا کلمه عبور اصلی خود را به روز کنید. در صورت ادامه، شما از نشست فعلی خود خارج می شوید و باید دوباره وارد سیستم شوید. نشست فعال در دستگاه های دیگر ممکن است تا یک ساعت همچنان فعال باقی بمانند." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "ثبت نام خودکار" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "این سازمان دارای خط مشی سازمانی ای است که به طور خودکار شما را در بازنشانی کلمه عبور ثبت نام می کند. این ثبت نام به مدیران سازمان اجازه می دهد تا کلمه عبور اصلی شما را تغییر دهند." + }, + "selectFolder": { + "message": "پوشه را انتخاب کنید..." + }, + "ssoCompleteRegistration": { + "message": "برای تکمیل ورود به سیستم با SSO ، لطفاً یک کلمه عبور اصلی برای دسترسی و محافظت از گاوصندوق خود تنظیم کنید." + }, + "hours": { + "message": "ساعت" + }, + "minutes": { + "message": "دقیقه" + }, + "vaultTimeoutPolicyInEffect": { + "message": "خط مشی های سازمانتان بر مهلت زمانی گاوصندوق شما تأثیر می گذارد. حداکثر زمان مجاز گاوصندوق $HOURS$ ساعت و $MINUTES$ دقیقه است", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "مهلت زمانی شما بیش از محدودیت های تعیین شده توسط سازمانتان است." + }, + "vaultExportDisabled": { + "message": "صادرات گاوصندوق غیرفعال شده است" + }, + "personalVaultExportPolicyInEffect": { + "message": "یک یا چند خط مشی سازمان از صادرات گاوصندوق شخصی شما جلوگیری می کند." + }, + "copyCustomFieldNameInvalidElement": { + "message": "شناسایی عنصر فرم معتبر امکان پذیر نیست. به جای آن سعی کنید HTML را بررسی کنید." + }, + "copyCustomFieldNameNotUnique": { + "message": "شناسه منحصر به فردی یافت نشد." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ در حال استفاده از SSO با یک سرور کلید خود میزبان است. برای ورود اعضای این سازمان دیگر نیازی به کلمه عبور اصلی نیست.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "ترک سازمان" + }, + "removeMasterPassword": { + "message": "پاک کردن کلمه عبور اصلی" + }, + "removedMasterPassword": { + "message": "کلمه عبور اصلی پاک شد." + }, + "leaveOrganizationConfirmation": { + "message": "آيا مطمئن هستيد که می خواهيد سازمان های انتخاب شده را ترک کنيد؟" + }, + "leftOrganization": { + "message": "شما از سازمان ها خارج شده اید." + }, + "toggleCharacterCount": { + "message": "تغییر تعداد کاراکترها" + }, + "sessionTimeout": { + "message": "زمان نشست شما به پایان رسید. لطفاً برگردید و دوباره وارد سیستم شوید." + }, + "exportingPersonalVaultTitle": { + "message": "صادرات گاو‌صندوق شخصی" + }, + "exportingPersonalVaultDescription": { + "message": "فقط موارد گاو‌صندوق شخصی مرتبط با $EMAIL$ صادر خواهد شد. موارد گاو‌صندوق سازمان شامل نخواهد شد.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "خطا" + }, + "regenerateUsername": { + "message": "ایجاد مجدد نام کاربری" + }, + "generateUsername": { + "message": "ایجاد نام کاربری" + }, + "usernameType": { + "message": "نوع نام کاربری" + }, + "plusAddressedEmail": { + "message": "به علاوه ایمیل آدرس داده شده", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "از قابلیت های آدرس دهی فرعی ارائه دهنده ایمیل خود استفاده کنید." + }, + "catchallEmail": { + "message": "رایانامه همه‌گیر" + }, + "catchallEmailDesc": { + "message": "از صندوق ورودی پیکربندی شده دامنه خود استفاده کنید." + }, + "random": { + "message": "تصادفی" + }, + "randomWord": { + "message": "کلمه تصادفی" + }, + "websiteName": { + "message": "نام وب سایت" + }, + "whatWouldYouLikeToGenerate": { + "message": "چه چیزی دوست دارید تولید کنید؟" + }, + "passwordType": { + "message": "نوع گذرواژه" + }, + "service": { + "message": "خدمت" + } +} diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json new file mode 100644 index 0000000000..bf604cab16 --- /dev/null +++ b/apps/browser/src/_locales/fi/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden – Ilmainen salasananhallinta", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Turvallinen ja ilmainen salasanojen hallinta kaikille laitteillesi.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Kirjaudu sisään tai luo uusi tili päästäksesi salattuun holviisi." + }, + "createAccount": { + "message": "Luo tili" + }, + "login": { + "message": "Kirjaudu" + }, + "enterpriseSingleSignOn": { + "message": "Yrityksen kertakirjautuminen (SSO)" + }, + "cancel": { + "message": "Peruuta" + }, + "close": { + "message": "Sulje" + }, + "submit": { + "message": "Jatka" + }, + "emailAddress": { + "message": "Sähköpostiosoite" + }, + "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)" + }, + "tab": { + "message": "Välilehti" + }, + "myVault": { + "message": "Oma holvi" + }, + "tools": { + "message": "Työkalut" + }, + "settings": { + "message": "Asetukset" + }, + "currentTab": { + "message": "Nykyinen välilehti" + }, + "copyPassword": { + "message": "Kopioi salasana" + }, + "copyNote": { + "message": "Kopioi merkinnät" + }, + "copyUri": { + "message": "Kopioi URI" + }, + "copyUsername": { + "message": "Kopioi käyttäjätunnus" + }, + "copyNumber": { + "message": "Kopioi numero" + }, + "copySecurityCode": { + "message": "Kopioi turvakoodi" + }, + "autoFill": { + "message": "Automaattinen täyttö" + }, + "generatePasswordCopied": { + "message": "Luo salasana (leikepöydälle)" + }, + "copyElementIdentifier": { + "message": "Kopioi lisäkentän nimi" + }, + "noMatchingLogins": { + "message": "Ei tunnistettuja kirjautumistietoja." + }, + "unlockVaultMenu": { + "message": "Avaa holvisi" + }, + "loginToVaultMenu": { + "message": "Kirjaudu holviisi" + }, + "autoFillInfo": { + "message": "Selaimen avoimelle välilehdelle ei ole automaattisesti täytettäviä kirjautumistietoja." + }, + "addLogin": { + "message": "Lisää kirjautumistieto" + }, + "addItem": { + "message": "Lisää kohde" + }, + "passwordHint": { + "message": "Salasanavihje" + }, + "enterEmailToGetHint": { + "message": "Syötä tilisi sähköpostiosoite saadaksesi pääsalasanan vihjeen." + }, + "getMasterPasswordHint": { + "message": "Pyydä pääsalasanan vihjettä" + }, + "continue": { + "message": "Jatka" + }, + "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." + }, + "account": { + "message": "Käyttäjätili" + }, + "changeMasterPassword": { + "message": "Vaihda pääsalasana" + }, + "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." + }, + "twoStepLogin": { + "message": "Kaksivaiheinen kirjautuminen" + }, + "logOut": { + "message": "Kirjaudu ulos" + }, + "about": { + "message": "Tietoja" + }, + "version": { + "message": "Versio" + }, + "save": { + "message": "Tallenna" + }, + "move": { + "message": "Siirrä" + }, + "addFolder": { + "message": "Lisää kansio" + }, + "name": { + "message": "Nimi" + }, + "editFolder": { + "message": "Muokkaa kansiota" + }, + "deleteFolder": { + "message": "Poista kansio" + }, + "folders": { + "message": "Kansiot" + }, + "noFolders": { + "message": "Ei näytettäviä kansioita." + }, + "helpFeedback": { + "message": "Tuki ja palaute" + }, + "sync": { + "message": "Synkronointi" + }, + "syncVaultNow": { + "message": "Synkronoi holvi nyt" + }, + "lastSync": { + "message": "Viimeisin synkronointi:" + }, + "passGen": { + "message": "Salasanageneraattori" + }, + "generator": { + "message": "Generaattori", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Luo kirjautumistiedoillesi automaattisesti vahvoja, ainutlaatuisia salasanoja." + }, + "bitWebVault": { + "message": "Bitwardenin verkkoholvi" + }, + "importItems": { + "message": "Tuo kohteita" + }, + "select": { + "message": "Valitse" + }, + "generatePassword": { + "message": "Luo salasana" + }, + "regeneratePassword": { + "message": "Luo uusi salasana" + }, + "options": { + "message": "Lisäasetukset" + }, + "length": { + "message": "Pituus" + }, + "uppercase": { + "message": "Isot kirjaimet (A-Ö)" + }, + "lowercase": { + "message": "Pienet kirjaimet (a-ö)" + }, + "numbers": { + "message": "Numerot (0-9)" + }, + "specialCharacters": { + "message": "Erikoismerkit (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Numeroita vähintään" + }, + "minSpecial": { + "message": "Erikoismerkkejä vähintään" + }, + "avoidAmbChar": { + "message": "Vältä epäselviä merkkejä" + }, + "searchVault": { + "message": "Hae holvista" + }, + "edit": { + "message": "Muokkaa" + }, + "view": { + "message": "Näytä" + }, + "noItemsInList": { + "message": "Ei näytettäviä kohteita." + }, + "itemInformation": { + "message": "Kohteen tiedot" + }, + "username": { + "message": "Käyttäjätunnus" + }, + "password": { + "message": "Salasana" + }, + "passphrase": { + "message": "Salauslauseke" + }, + "favorite": { + "message": "Suosikki" + }, + "notes": { + "message": "Merkinnät" + }, + "note": { + "message": "Merkintä" + }, + "editItem": { + "message": "Muokkaa kohdetta" + }, + "folder": { + "message": "Kansio" + }, + "deleteItem": { + "message": "Poista kohde" + }, + "viewItem": { + "message": "Näytä kohde" + }, + "launch": { + "message": "Avaa" + }, + "website": { + "message": "Verkkosivusto" + }, + "toggleVisibility": { + "message": "Näytä tai piilota" + }, + "manage": { + "message": "Hallinnoi" + }, + "other": { + "message": "Muut" + }, + "rateExtension": { + "message": "Arvioi laajennus" + }, + "rateExtensionDesc": { + "message": "Harkitse tukemistamme hyvällä arvostelulla!" + }, + "browserNotSupportClipboard": { + "message": "Selaimesi ei tue helppoa leikepöydälle kopiointia. Kopioi kohde manuaalisesti." + }, + "verifyIdentity": { + "message": "Vahvista henkilöllisyys" + }, + "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" + }, + "vaultTimeout": { + "message": "Holvin aikakatkaisu" + }, + "lockNow": { + "message": "Lukitse nyt" + }, + "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" + }, + "onLocked": { + "message": "Kun järjestelmän lukitaan" + }, + "onRestart": { + "message": "Kun selain käynnistetään uudelleen" + }, + "never": { + "message": "Ei koskaan" + }, + "security": { + "message": "Suojaus" + }, + "errorOccurred": { + "message": "Tapahtui virhe" + }, + "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 sähköpostitse." + }, + "verificationCodeRequired": { + "message": "Todennuskoodi vaaditaan." + }, + "invalidVerificationCode": { + "message": "Virheellinen todennuskoodi" + }, + "valueCopied": { + "message": "$VALUE$ kopioitu", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Valitun kohteen automaattinen täyttö ei onnistu tällä sivulla. Kopioi ja liitä tiedot sen sijaan itse." + }, + "loggedOut": { + "message": "Kirjauduttu ulos" + }, + "loginExpired": { + "message": "Kirjautumisistuntosi on erääntynyt." + }, + "logOutConfirmation": { + "message": "Haluatko varmasti kirjautua ulos?" + }, + "yes": { + "message": "Kyllä" + }, + "no": { + "message": "En" + }, + "unexpectedError": { + "message": "Tapahtui odottamaton virhe." + }, + "nameRequired": { + "message": "Nimi vaaditaan." + }, + "addedFolder": { + "message": "Kansio lisätty" + }, + "changeMasterPass": { + "message": "Vaihda pääsalasana" + }, + "changeMasterPasswordConfirmation": { + "message": "Voit vaihtaa pääsalasanasi bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" + }, + "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?" + }, + "editedFolder": { + "message": "Kansiota muokattu" + }, + "deleteFolderConfirmation": { + "message": "Haluatko varmasti poistaa kansion?" + }, + "deletedFolder": { + "message": "Kansio poistettu" + }, + "gettingStartedTutorial": { + "message": "Aloitusopas" + }, + "gettingStartedTutorialVideo": { + "message": "Ota selainlaajennuksesta kaikki irti katsomalla video-oppaamme." + }, + "syncingComplete": { + "message": "Synkronointi on valmis" + }, + "syncingFailed": { + "message": "Synkronointi epäonnistui" + }, + "passwordCopied": { + "message": "Salasana kopioitu" + }, + "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" + }, + "addedItem": { + "message": "Kohde lisätty" + }, + "editedItem": { + "message": "Kohdetta muokattu" + }, + "deleteItemConfirmation": { + "message": "Haluatko varmasti siirtää roskakoriin?" + }, + "deletedItem": { + "message": "Kohde siirrettiin roskakoriin" + }, + "overwritePassword": { + "message": "Korvaa salasana" + }, + "overwritePasswordConfirmation": { + "message": "Haluatko varmasti korvata nykyisen salasanan?" + }, + "overwriteUsername": { + "message": "Korvaa käyttäjätunnus" + }, + "overwriteUsernameConfirmation": { + "message": "Haluatko varmasti korvata nykyisen käyttäjätunnuksen?" + }, + "searchFolder": { + "message": "Hae kansiosta" + }, + "searchCollection": { + "message": "Hae kokoelmasta" + }, + "searchType": { + "message": "Hae tyypeistä" + }, + "noneFolder": { + "message": "Ei kansiota", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Älä näytä \"Lisää kirjautumistieto\" -kehotetta" + }, + "addLoginNotificationDesc": { + "message": "\"Lisää kirjautumistieto\" -kehote kysyy, haluatko tallentaa kirjautumistiedot holviisi kun kirjaudut niillä ensimmäistä kertaa." + }, + "dontShowCardsCurrentTab": { + "message": "Älä näytä välilehdille korttiehdotuksia" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Holvissasi olevat kortit tunnistetaan ja näytetään selaimen avoimelle välilehdelle, jotta niiden valinta täyttöä varten on helppoa." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Älä näytä välilehdille henkilöllisyysehdotuksia" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Holvissasi olevat henkilöllisyydet tunnistetaan ja näytetään selaimen avoimelle välilehdelle, jotta niiden valinta täyttöä varten on helppoa." + }, + "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." + }, + "notificationAddDesc": { + "message": "Haluatko, että Bitwarden muistaa salasanan puolestasi?" + }, + "notificationAddSave": { + "message": "Tallenna" + }, + "disableChangedPasswordNotification": { + "message": "Älä näytä \"Salasana vaihdettu\" -kehotetta" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Salasana vaihdettu\" -ilmoitus ehdottaa holviisi tallennetun kirjautumistiedon salasanan automaattista päivitystä kun se havaitsee, että olet vaihtanut sen verkkosivustolla." + }, + "notificationChangeDesc": { + "message": "Haluatko päivittää salasanan Bitwardeniin?" + }, + "notificationChangeSave": { + "message": "Päivitä" + }, + "disableContextMenuItem": { + "message": "Älä näytä kontekstivalikon valintoja" + }, + "disableContextMenuItemDesc": { + "message": "Hiiren kakkospainikkeen pikavalikon kautta pääset nopeasti käsiksi salasanojen luontiin ja nykyisellä välilehdellä avoinna olevan sivuston kirjautumisteitoihin." + }, + "defaultUriMatchDetection": { + "message": "URI:n tunnistuksen oletustapa", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Valitse oletustapa, jolla URI tunnistetaan esimerkiksi automaattisen täytön yhteydessä." + }, + "theme": { + "message": "Teema" + }, + "themeDesc": { + "message": "Vaihda sovelluksen väriteemaa." + }, + "dark": { + "message": "Tumma", + "description": "Dark color" + }, + "light": { + "message": "Vaalea", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized, tumma", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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äjätilisi salausavaimella. Jos joskus uudistat tilisi salausavaimen, on tiedot vietävä uudelleen, koska et voi enää purkaa nyt luodun vientitiedoston salausta." + }, + "encExportAccountWarningDesc": { + "message": "Tilin salausavaimet ovat ainutlaatuisia jokaiselle Bitwarden-käyttäjätilille, joten et voi tuoda salattua vientitiedostoa toiselle tilille." + }, + "exportMasterPassword": { + "message": "Syötä pääsalasana viedäksesi holvisi tiedot." + }, + "shared": { + "message": "Jaettu" + }, + "learnOrg": { + "message": "Lisätietoja organisaatioista" + }, + "learnOrgConfirmation": { + "message": "Bitwardenin avulla voit jakaa holvisi sisältöä muiden kanssa organisaatiotiliä käyttäen. Haluatko lukea bitwarden.com-sivustolta lisää?" + }, + "moveToOrganization": { + "message": "Siirrä organisaatiolle" + }, + "share": { + "message": "Jaa" + }, + "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." + }, + "learnMore": { + "message": "Lue lisää" + }, + "authenticatorKeyTotp": { + "message": "Todennusmenetelmän avain (TOTP)" + }, + "verificationCodeTotp": { + "message": "Todennuskoodi (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopioi todennuskoodi" + }, + "attachments": { + "message": "Liitteet" + }, + "deleteAttachment": { + "message": "Poista tiedostoliite" + }, + "deleteAttachmentConfirmation": { + "message": "Haluatko varmasti poistaa liitteen?" + }, + "deletedAttachment": { + "message": "Poistettu tiedostoliite" + }, + "newAttachment": { + "message": "Lisää uusi tiedostoliite" + }, + "noAttachments": { + "message": "Ei liitteitä." + }, + "attachmentSaved": { + "message": "Tiedostoliite tallennettiin." + }, + "file": { + "message": "Tiedosto" + }, + "selectFile": { + "message": "Valitse tiedosto." + }, + "maxFileSize": { + "message": "Tiedoston enimmäiskoko on 500 Mt." + }, + "featureUnavailable": { + "message": "Toiminto ei ole käytettävissä" + }, + "updateKey": { + "message": "Et voi käyttää tätä toimintoa ennen kuin päivität salausavaimesi." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 Gt salattua tallennustilaa tiedostoliitteille." + }, + "ppremiumSignUpTwoStep": { + "message": "Muita kaksivaiheisen kirjautumisen todennusmenetelmiä kuten YubiKey, FIDO U2F ja Duo Security." + }, + "ppremiumSignUpReports": { + "message": "Salasanahygienian, tilin terveyden ja tietovuotojen raportointitoiminnot pitävät holvisi turvassa." + }, + "ppremiumSignUpTotp": { + "message": "Kaksivaiheisen kirjautumisen (2FA) TOTP-todennuskoodien generaattori holvisi kirjautumistiedoille." + }, + "ppremiumSignUpSupport": { + "message": "Ensisijainen asiakastuki." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Älä kopioi TOTP-koodeja automaattisesti" + }, + "disableAutoTotpCopyDesc": { + "message": "Jos kirjautumistietoosi on liitetty kaksivaiheisen todennusmenetelmän avain, kopioidaan kaksivaiheisen kirjautumisen TOTP-todennuskoodi automaattisesti leikepöydälle kun suoritat kohteen automaattisen täytön." + }, + "disableAutoBiometricsPrompt": { + "message": "Älä pyydä biometristä avausta käynnistettäessä." + }, + "premiumRequired": { + "message": "Premium vaaditaan" + }, + "premiumRequiredDesc": { + "message": "Käyttääksesi tätä toimintoa tarvitset Premium-jäsenyyden." + }, + "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ä toista kaksivaiheisen kirjautumisen todentajaa" + }, + "insertYubiKey": { + "message": "Kytke YubiKey-todennuslaitteesi tietokoneen USB-porttiin ja paina sen painiketta." + }, + "insertU2f": { + "message": "Kytke todennuslaitteesi tietokoneen USB-porttiin. Jos laitteessa on painike, paina sitä." + }, + "webAuthnNewTab": { + "message": "Aloittaaksesi kaksivaiheisen WebAuthn-todennuksen, seuraa alla olevasta painikkeesta uuteen välilehteen avautuvia ohjeita." + }, + "webAuthnNewTabOpen": { + "message": "Avaa uusi välilehti" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn-todennus" + }, + "loginUnavailable": { + "message": "Kirjautuminen ei ole käytettävissä" + }, + "noTwoStepProviders": { + "message": "Tilillä on käytössä kaksivaiheinen kirjautuminen, mutta tämä selain ei tue käytettävissä olevia todentajia." + }, + "noTwoStepProviders2": { + "message": "Käytä tuettua selainta (kuten Chrome) ja lisää/tai ota käyttöön laajemmin tuettu todentaja (kuten todennussovellus)." + }, + "twoStepOptions": { + "message": "Kaksivaiheisen kirjautumisen asetukset" + }, + "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, Google tai Microsoft 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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Täytä automaattisesti sivun avautuessa" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Jos sivulla havaitaan kirjautumislomake, täytetään kirjautumistiedot automaattisesti sivun avautuessa." + }, + "experimentalFeature": { + "message": "Tämä on vielä kokeellinen toiminto. Käytä omalla vastuullasi." + }, + "defaultAutoFillOnPageLoad": { + "message": "Automaattisen täytön oletusasetus kirjautumistiedoille" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Kun \"Täytä automaattisesti sivun avautuessa\" on käytössä, voi sen ottaa käyttöön tai poistaa käytöstä yksittäisille kirjautumistiedoille. Tämä on oletusarvo niille kirjautumistiedoille, joille asetusta ei ole erikseen määritetty." + }, + "itemAutoFillOnPageLoad": { + "message": "Automaattinen täyttö sivun avautuessa (jos kytketty asetuksista käyttöön)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Käytä oletusasetusta" + }, + "autoFillOnPageLoadYes": { + "message": "Täytä automaattisesti sivun avautuessa" + }, + "autoFillOnPageLoadNo": { + "message": "Älä täytä automaattisesti sivun avautuessa" + }, + "commandOpenPopup": { + "message": "Avaa holvin ponnahdusikkuna" + }, + "commandOpenSidebar": { + "message": "Avaa holvi sivupalkissa" + }, + "commandAutofillDesc": { + "message": "Täytä automaattisesti viimeisin nykyisellä sivustolla käytetty kirjautumistieto" + }, + "commandGeneratePasswordDesc": { + "message": "Luo uusi satunnainen salasana ja kopioi se leikepöydälle." + }, + "commandLockVaultDesc": { + "message": "Lukitse holvi" + }, + "privateModeWarning": { + "message": "Yksityisen tilan tuki on kokeellinen ja jotkin ominaisuudet toimivat rajoitetusti." + }, + "customFields": { + "message": "Lisäkentät" + }, + "copyValue": { + "message": "Kopioi arvo" + }, + "value": { + "message": "Arvo" + }, + "newCustomField": { + "message": "Uusi lisäkenttä" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linkitetty arvo", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Klikkaus ponnahdusikkunan ulkopuolelle todennuskoodin sähköpostista noutoa varten sulkee ikkunan. Haluatko avata näkymän uuteen ikkunaan, jotta se pysyy avoinna?" + }, + "popupU2fCloseMessage": { + "message": "Tämä selain ei voi käsitellä U2F-pyyntöjä tässä ponnahdusikkunassa. Haluatko avata näkymän uuteen ikkunaan, jotta voit vahvistaa kirjautumisen U2F-todennuslaitteella?" + }, + "disableFavicon": { + "message": "Älä näytä sivustojen kuvakkeita" + }, + "disableFaviconDesc": { + "message": "Kirjautumistietojen vieressä näytettävät sivustojen kuvakkeet helpottavat kohteiden tunnistusta." + }, + "disableBadgeCounter": { + "message": "Älä näytä kuvakkeen laskuria" + }, + "disableBadgeCounterDesc": { + "message": "Työkalupalkin kuvakkeessa näytetään laskuri, joka kertoo avoimeen sivuun kohdistuvien kirjautumistietojen lukumäärän holvissasi." + }, + "cardholderName": { + "message": "Kortinhaltijan nimi" + }, + "number": { + "message": "Numero" + }, + "brand": { + "message": "Merkki" + }, + "expirationMonth": { + "message": "Erääntymiskuukausi" + }, + "expirationYear": { + "message": "Erääntymisvuosi" + }, + "expiration": { + "message": "Erääntymisaika" + }, + "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" + }, + "securityCode": { + "message": "Turvakoodi (CVC/CVV)" + }, + "ex": { + "message": "esim." + }, + "title": { + "message": "Titteli" + }, + "mr": { + "message": "Hra" + }, + "mrs": { + "message": "Rva" + }, + "ms": { + "message": "Nti" + }, + "dr": { + "message": "Tri" + }, + "firstName": { + "message": "Etunimi" + }, + "middleName": { + "message": "Toinen nimi" + }, + "lastName": { + "message": "Sukunimi" + }, + "fullName": { + "message": "Koko nimi" + }, + "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" + }, + "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" + }, + "type": { + "message": "Tyyppi" + }, + "typeLogin": { + "message": "Kirjautumistieto" + }, + "typeLogins": { + "message": "Kirjautumistiedot" + }, + "typeSecureNote": { + "message": "Salattu muistio" + }, + "typeCard": { + "message": "Kortti" + }, + "typeIdentity": { + "message": "Henkilöllisyys" + }, + "passwordHistory": { + "message": "Salasanahistoria" + }, + "back": { + "message": "Takaisin" + }, + "collections": { + "message": "Kokoelmat" + }, + "favorites": { + "message": "Suosikit" + }, + "popOutNewWindow": { + "message": "Avaa uuteen ikkunaan" + }, + "refresh": { + "message": "Päivitä" + }, + "cards": { + "message": "Kortit" + }, + "identities": { + "message": "Henkilöllisyydet" + }, + "logins": { + "message": "Kirjautumistiedot" + }, + "secureNotes": { + "message": "Salatut muistiot" + }, + "clear": { + "message": "Tyhjennä", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Tarkasta, onko salasana vuotanut." + }, + "passwordExposed": { + "message": "Salasana on paljastunut $VALUE$ tietovuodossa. Se tulisi vaihtaa.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Tätä salasanaa ei löytynyt yhdestäkään tunnetusta tietovuodosta. 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" + }, + "toggleCurrentUris": { + "message": "Näytä tai piilota nykyiset URI:t", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Nykyinen URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisaatio", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tyypit" + }, + "allItems": { + "message": "Kaikki kohteet" + }, + "noPasswordsInList": { + "message": "Ei näytettäviä salasanoja." + }, + "remove": { + "message": "Poista" + }, + "default": { + "message": "Oletus" + }, + "dateUpdated": { + "message": "Päivitetty", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Salasana päivitetty", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Oletko varma, että haluat käyttää asetusta \"Ei koskaan\"? Tämä valinta tallentaa holvisi salausavaimen laitteellesi. Jos käytät asetusta, varmista että laitteesi on hyvin suojattu." + }, + "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 laajennuksesta." + }, + "pinRequired": { + "message": "PIN-koodi vaaditaan." + }, + "invalidPin": { + "message": "Virheellinen PIN-koodi." + }, + "unlockWithBiometrics": { + "message": "Avaa biometrialla" + }, + "awaitDesktop": { + "message": "Odottaa vahvistusta työpöydältä" + }, + "awaitDesktopDesc": { + "message": "Vahvista biometrian käyttö Bitwardenin työpöytäsovelluksessa käyttääksesi sitä selaimessa." + }, + "lockWithMasterPassOnRestart": { + "message": "Lukitse pääsalasanalla kun selain käynnistetään uudelleen" + }, + "selectOneCollection": { + "message": "Valitse ainakin yksi kokoelma." + }, + "cloneItem": { + "message": "Kloonaa kohde" + }, + "clone": { + "message": "Kloonaa" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Yksi tai useampi organisaatiokäytäntö vaikuttaa generaattorisi asetuksiin." + }, + "vaultTimeoutAction": { + "message": "Holvin aikakatkaisun toiminto" + }, + "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" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Uloskirjautuminen estää pääsyn holviisi ja vaatii ajan umpeuduttua todennuksen internet-yhteyden välityksellä. Haluatko varmasti käyttää tätä asetusta?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Aikakatkaisun toiminnon vahvistus" + }, + "autoFillAndSave": { + "message": "Täytä automaattisesti ja tallenna" + }, + "autoFillSuccessAndSavedUri": { + "message": "Kohde täytettiin automaattisesti ja URI tallennettiin" + }, + "autoFillSuccess": { + "message": "Kohde täytettiin automaattisesti" + }, + "setMasterPassword": { + "message": "Aseta 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." + }, + "termsOfService": { + "message": "Käyttöehdot" + }, + "privacyPolicy": { + "message": "Tietosuojakäytäntö" + }, + "hintEqualsPassword": { + "message": "Salasanavihjeesi ei voi olla sama kuin salasanasi." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Työpöytäsynkronoinnin vahvistus" + }, + "desktopIntegrationVerificationText": { + "message": "Varmista, että työpöytäsovellus näyttää tämän tunnistelausekkeen:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Selainintegrointi ei ole käytössä" + }, + "desktopIntegrationDisabledDesc": { + "message": "Selainintegrointi ei ole käytössä Bitwardenin työpöytäsovelluksessa. Ota se käyttöön työpöytäsovelluksen asetuksista." + }, + "startDesktopTitle": { + "message": "Käynnistä Bitwardenin työpöytäsovellus" + }, + "startDesktopDesc": { + "message": "Bitwardenin työpöytäsovellus on käynnistettävä ennen kuin biometristä avausta voidaan käyttää." + }, + "errorEnableBiometricTitle": { + "message": "Biometrian käyttöönotto ei onnistu" + }, + "errorEnableBiometricDesc": { + "message": "Työpöytäsovellus perui toiminnon" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Työpöytäsovellus hyläsi suojatun viestintäväylän. Yritä toimintoa uudelleen" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Työpöytäyhteys keskeytyi" + }, + "nativeMessagingWrongUserDesc": { + "message": "Työpöytäsovellus on kirjautuneena eri tilille. Varmista, että molemmat sovellukset ovat kirjautuneet samalle tilille." + }, + "nativeMessagingWrongUserTitle": { + "message": "Tili ei täsmää" + }, + "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." + }, + "biometricsNotSupportedTitle": { + "message": "Biometriaa ei tueta" + }, + "biometricsNotSupportedDesc": { + "message": "Selaimen biometriaa ei tueta tällä laitteella." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Oikeutta ei myönnetty" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Ilman viestintäoikeutta Bitwardenin työpöytäsovelluksen kanssa, ei biometriaa tueta selainlaajennuksessa. Yritä uudelleen." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Käyttöoikeuspyynnön virhe" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Toimintoa ei voi suorittaa sivupalkissa, yritä toimintoa uudelleen ponnahdusvalikossa tai ponnahdusikkunassa." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi." + }, + "excludedDomains": { + "message": "Ohitettavat verkkotunnukset" + }, + "excludedDomainsDesc": { + "message": "Bitwarden ei pyydä kirjautumistietojen tallennusta näille verkkotunnuksille. Päivitä sivu ottaaksesi muutokset käyttöön." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ ei ole kelvollinen verkkotunnus", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Hae Sendeistä", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Lisää Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Teksti" + }, + "sendTypeFile": { + "message": "Tiedosto" + }, + "allSends": { + "message": "Kaikki Sendit", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Käyttökertojen enimmäismäärä saavutettu", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Erääntynyt" + }, + "pendingDeletion": { + "message": "Odottaa poistoa" + }, + "passwordProtected": { + "message": "Salasanasuojattu" + }, + "copySendLink": { + "message": "Kopioi Sendin linkki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Poista salasana" + }, + "delete": { + "message": "Poista" + }, + "removedPassword": { + "message": "Salasana poistettu" + }, + "deletedSend": { + "message": "Poistettu Send", + "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." + }, + "disabled": { + "message": "Ei käytössä" + }, + "removePasswordConfirmation": { + "message": "Haluatko varmasti poistaa salasanan?" + }, + "deleteSend": { + "message": "Poista Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Muokkaa Sendiä", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Kuvaava nimi Sendille.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Tiedosto, jonka haluat lähettää." + }, + "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": "Jos määritetty, 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." + }, + "oneDay": { + "message": "1 päivä" + }, + "days": { + "message": "$DAYS$ päivää", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Mukautettu" + }, + "maximumAccessCount": { + "message": "Käyttöoikeuksien enimmäismäärä" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kopioi Sendin linkki leikepöydälle tallennettaessa.", + "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ää." + }, + "sendHideText": { + "message": "Piilota Sendin teksti oletuksena.", + "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ä" + }, + "createSend": { + "message": "Luo uusi Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Uusi salasana" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Jotta voit valita tiedoston, avaa laajennus sivupalkkiin (jos mahdollista) tai erilliseen ikkunaan klikkaamalla tätä banneria." + }, + "sendFirefoxFileWarning": { + "message": "Jotta voit valita tiedoston käyttäen Firefoxia, avaa laajennus sivupalkkiin tai erilliseen ikkunaan klikkaamalla tätä banneria." + }, + "sendSafariFileWarning": { + "message": "Jotta voit valita tiedoston käyttäen Safaria, avaa laajennus erilliseen ikkunaan klikkaamalla tätä banneria." + }, + "sendFileCalloutHeader": { + "message": "Ennen kuin aloitat" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Käyttääksesi kalenterityylistä päivämäärän valintaa", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klikkaa tästä", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "erillistä valintaa varten.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Määritetty erääntymismisajankohta on virheellinen." + }, + "deletionDateIsInvalid": { + "message": "Määritetty poistoajankohta on virheellinen." + }, + "expirationDateAndTimeRequired": { + "message": "Erääntymispäivä ja -aika vaaditaan." + }, + "deletionDateAndTimeRequired": { + "message": "Poistopäivä ja -aika vaaditaan." + }, + "dateParsingError": { + "message": "Tapahtui virhe tallennettaessa poisto- ja erääntymisajankohtia." + }, + "hideEmail": { + "message": "Piilota sähköpostiosoitteeni vastaanottajilta." + }, + "sendOptionsPolicyInEffect": { + "message": "Yksi tai useampi organisaatiokäytäntö vaikuttaa Send-asetuksiisi." + }, + "passwordPrompt": { + "message": "Pääsalasanan uudelleenkysely" + }, + "passwordConfirmation": { + "message": "Pääsalasanan vahvistus" + }, + "passwordConfirmationDesc": { + "message": "Toiminto on suojattu. Jatkaaksesi, syötä pääsalasanasi uudelleen vahvistaaksesi henkilöllisyytesi." + }, + "emailVerificationRequired": { + "message": "Sähköpostiosoitteen vahvistus vaaditaan" + }, + "emailVerificationRequiredDesc": { + "message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi ominaisuutta. Voit vahvistaa osoitteesi verkkoholvissa." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Valitse kansio..." + }, + "ssoCompleteRegistration": { + "message": "Kirjautuaksesi sisään käyttäen kertakirjautumista (SSO), suojaa holvisi pääsalasanalla." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Holvisi aikakatkaisuviive ylittää organisaatiosi asettamat rajoitukset." + }, + "vaultExportDisabled": { + "message": "Holvin vienti on poistettu käytöstä" + }, + "personalVaultExportPolicyInEffect": { + "message": "Yksi tai useampi organisaation käytäntö estää henkilökohtaisen holvisi viennin." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Oikeaa lomakkeen elementtiä ei tunnistettu. Yritä sen sijaan HTML-koodin tarkastusta." + }, + "copyCustomFieldNameNotUnique": { + "message": "Yksilöllistä tunnistetta ei löytynyt." + }, + "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" + }, + "removeMasterPassword": { + "message": "Poista pääsalasana" + }, + "removedMasterPassword": { + "message": "Pääsalasana on poistettu." + }, + "leaveOrganizationConfirmation": { + "message": "Haluatko varmasti poistua tästä organisaatiosta?" + }, + "leftOrganization": { + "message": "Olet poistunut organisaatiosta." + }, + "toggleCharacterCount": { + "message": "Näytä merkkimäärän laskuri" + }, + "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" + } + } + }, + "error": { + "message": "Virhe" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Mitä haluat luoda?" + }, + "passwordType": { + "message": "Salasanan tyyppi" + }, + "service": { + "message": "Palvelu" + } +} diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json new file mode 100644 index 0000000000..c0fc9f75c3 --- /dev/null +++ b/apps/browser/src/_locales/fil/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "login": { + "message": "Log In" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email Address" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "Copy Security Code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "Log Out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Add Folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit Folder" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "Options" + }, + "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" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favorite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "lockNow": { + "message": "Lock Now" + }, + "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" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Browser Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "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?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Save" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Update" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json new file mode 100644 index 0000000000..7adfd2cbcd --- /dev/null +++ b/apps/browser/src/_locales/fr/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Un gestionnaire de mots de passe sécurisé et gratuit pour tous vos appareils.", + "description": "Extension description" + }, + "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": "Se connecter" + }, + "enterpriseSingleSignOn": { + "message": "Portail de connexion unique d'entreprise" + }, + "cancel": { + "message": "Annuler" + }, + "close": { + "message": "Fermer" + }, + "submit": { + "message": "Soumettre" + }, + "emailAddress": { + "message": "Adresse e-mail" + }, + "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)" + }, + "tab": { + "message": "Onglet" + }, + "myVault": { + "message": "Mon coffre" + }, + "tools": { + "message": "Outils" + }, + "settings": { + "message": "Paramètres" + }, + "currentTab": { + "message": "Onglet actif" + }, + "copyPassword": { + "message": "Copier le mot de passe" + }, + "copyNote": { + "message": "Copier la note" + }, + "copyUri": { + "message": "Copier l'URI" + }, + "copyUsername": { + "message": "Copier le nom d'utilisateur" + }, + "copyNumber": { + "message": "Copier le numéro" + }, + "copySecurityCode": { + "message": "Copier le code de sécurité" + }, + "autoFill": { + "message": "Remplissage automatique" + }, + "generatePasswordCopied": { + "message": "Générer un mot de passe (copié)" + }, + "copyElementIdentifier": { + "message": "Copier le nom du champ personnalisé" + }, + "noMatchingLogins": { + "message": "Aucun site correspondant." + }, + "unlockVaultMenu": { + "message": "Déverrouillez votre coffre" + }, + "loginToVaultMenu": { + "message": "Connectez-vous à votre coffre" + }, + "autoFillInfo": { + "message": "Il n'existe aucun site disponible pour le remplissage automatique pour l'onglet actuel du navigateur." + }, + "addLogin": { + "message": "Ajouter un identifiant" + }, + "addItem": { + "message": "Ajouter un élément" + }, + "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" + }, + "continue": { + "message": "Continuer" + }, + "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." + }, + "account": { + "message": "Compte" + }, + "changeMasterPassword": { + "message": "Changer le mot de passe maître" + }, + "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." + }, + "twoStepLogin": { + "message": "Identification en deux étapes" + }, + "logOut": { + "message": "Se déconnecter" + }, + "about": { + "message": "À propos" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Enregistrer" + }, + "move": { + "message": "Déplacer" + }, + "addFolder": { + "message": "Ajouter un dossier" + }, + "name": { + "message": "Nom" + }, + "editFolder": { + "message": "Modifier le dossier" + }, + "deleteFolder": { + "message": "Supprimer le dossier" + }, + "folders": { + "message": "Dossiers" + }, + "noFolders": { + "message": "Aucun dossier à lister." + }, + "helpFeedback": { + "message": "Aide et commentaires" + }, + "sync": { + "message": "Synchroniser" + }, + "syncVaultNow": { + "message": "Synchroniser le coffre maintenant" + }, + "lastSync": { + "message": "Dernière synchronisation :" + }, + "passGen": { + "message": "Générateur de mot de passe" + }, + "generator": { + "message": "Générateur", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Générer automatiquement des mots de passe forts et uniques pour vos identifiants." + }, + "bitWebVault": { + "message": "Coffre en ligne de Bitwarden" + }, + "importItems": { + "message": "Importer des éléments" + }, + "select": { + "message": "Sélectionner" + }, + "generatePassword": { + "message": "Générer un mot de passe" + }, + "regeneratePassword": { + "message": "Générer un nouveau mot de passe" + }, + "options": { + "message": "Options" + }, + "length": { + "message": "Longueur" + }, + "uppercase": { + "message": "Majuscules (A-Z)" + }, + "lowercase": { + "message": "Minuscules (a-z)" + }, + "numbers": { + "message": "Chiffres (0-9)" + }, + "specialCharacters": { + "message": "Caractères spéciaux (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Nombre minimum de chiffres" + }, + "minSpecial": { + "message": "Nombre minimum de caractères spéciaux" + }, + "avoidAmbChar": { + "message": "Éviter les caractères ambigus" + }, + "searchVault": { + "message": "Rechercher dans le coffre" + }, + "edit": { + "message": "Modifier" + }, + "view": { + "message": "Voir" + }, + "noItemsInList": { + "message": "Aucun identifiant à afficher." + }, + "itemInformation": { + "message": "Informations sur l'élément" + }, + "username": { + "message": "Nom d'utilisateur" + }, + "password": { + "message": "Mot de passe" + }, + "passphrase": { + "message": "Phrase de passe" + }, + "favorite": { + "message": "Favori" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Modifier l'élément" + }, + "folder": { + "message": "Dossier" + }, + "deleteItem": { + "message": "Supprimer l'élément" + }, + "viewItem": { + "message": "Afficher l'élément" + }, + "launch": { + "message": "Ouvrir" + }, + "website": { + "message": "Site web" + }, + "toggleVisibility": { + "message": "Afficher/Masquer" + }, + "manage": { + "message": "Gérer" + }, + "other": { + "message": "Autre" + }, + "rateExtension": { + "message": "Noter l'extension" + }, + "rateExtensionDesc": { + "message": "Merci de nous aider en mettant une bonne note !" + }, + "browserNotSupportClipboard": { + "message": "Votre navigateur web ne supporte pas la copie rapide depuis le presse-papier. Copiez-le manuellement à la place." + }, + "verifyIdentity": { + "message": "Confirmer votre identité" + }, + "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" + }, + "vaultTimeout": { + "message": "Délai d'expiration du coffre" + }, + "lockNow": { + "message": "Verrouiller maintenant" + }, + "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" + }, + "onLocked": { + "message": "Au verrouillage du système" + }, + "onRestart": { + "message": "Au redémarrage du navigateur" + }, + "never": { + "message": "Jamais" + }, + "security": { + "message": "Sécurité" + }, + "errorOccurred": { + "message": "Une erreur est survenue" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Le code de vérification est requis." + }, + "invalidVerificationCode": { + "message": "Code de vérification invalide" + }, + "valueCopied": { + "message": "$VALUE$ copié", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Impossible de remplir automatiquement le site sélectionné sur cette page. Copiez/collez plutôt votre nom d'utilisateur et/ou votre mot de passe." + }, + "loggedOut": { + "message": "Déconnecté" + }, + "loginExpired": { + "message": "Votre session a expiré." + }, + "logOutConfirmation": { + "message": "Êtes-vous sûr de vouloir vous déconnecter ?" + }, + "yes": { + "message": "Oui" + }, + "no": { + "message": "Non" + }, + "unexpectedError": { + "message": "Une erreur inattendue est survenue." + }, + "nameRequired": { + "message": "Le nom est requis." + }, + "addedFolder": { + "message": "Dossier ajouté" + }, + "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 ?" + }, + "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 ?" + }, + "editedFolder": { + "message": "Dossier modifié" + }, + "deleteFolderConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer ce dossier ?" + }, + "deletedFolder": { + "message": "Dossier supprimé" + }, + "gettingStartedTutorial": { + "message": "Tutoriel" + }, + "gettingStartedTutorialVideo": { + "message": "Regardez notre didacticiel pour savoir comment parfaitement utiliser l'extension du navigateur." + }, + "syncingComplete": { + "message": "Synchronisation terminée" + }, + "syncingFailed": { + "message": "Échec de la synchronisation" + }, + "passwordCopied": { + "message": "Mot de passe copié" + }, + "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" + }, + "addedItem": { + "message": "Identifiant ajouté" + }, + "editedItem": { + "message": "Identifiant modifié" + }, + "deleteItemConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer cet identifiant ?" + }, + "deletedItem": { + "message": "L'élément a été envoyé dans la corbeille" + }, + "overwritePassword": { + "message": "Écraser le mot de passe" + }, + "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 nom d'utilisateur actuel ?" + }, + "searchFolder": { + "message": "Rechercher dans le dossier" + }, + "searchCollection": { + "message": "Rechercher dans la collection" + }, + "searchType": { + "message": "Rechercher dans le type" + }, + "noneFolder": { + "message": "Aucun dossier", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Désactiver la notification d'ajout d'identifiant" + }, + "addLoginNotificationDesc": { + "message": "La \"Notification de demande d'ajout d'identifiant\" apparaît automatiquement pour vous proposer d'enregistrer dans votre coffre les identifiants que vous utilisez pour la première fois." + }, + "dontShowCardsCurrentTab": { + "message": "Ne pas afficher les cartes sur la page Onglet courant" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Les cartes stockées dans votre coffre sont listées sur la page \"Onglet courant\" pour un accès facile lors du remplissage automatique." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Ne pas afficher les identités sur la page Onglet courant" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Les identités stockées dans votre coffre sont listées sur la page \"Onglet courant\" pour un accès facile lors du remplissage automatique." + }, + "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." + }, + "notificationAddDesc": { + "message": "Est-ce que Bitwarden doit se souvenir de ce mot de passe pour vous ?" + }, + "notificationAddSave": { + "message": "Enregistrer" + }, + "disableChangedPasswordNotification": { + "message": "Désactiver la notification de changement de mot de passe" + }, + "disableChangedPasswordNotificationDesc": { + "message": "La \"Notification de changement de mot de passe\" vous propose automatiquement de mettre à jour un mot de passe dans votre coffre lorsqu'il est changé sur un site web." + }, + "notificationChangeDesc": { + "message": "Souhaitez-vous mettre à jour ce mot de passe dans Bitwarden ?" + }, + "notificationChangeSave": { + "message": "Mettre à jour" + }, + "disableContextMenuItem": { + "message": "Désactiver les options de menu contextuel" + }, + "disableContextMenuItemDesc": { + "message": "Les options du menu contextuel permettent un accès rapide à la génération de mots de passe et aux identifiants enregistrés pour le site web de l'onglet actuel." + }, + "defaultUriMatchDetection": { + "message": "Détection de correspondance URI par défaut", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choisissez la manière par défaut dont la détection de correspondance URI est gérée pour les connexions lors de l'exécution d'actions telles que le remplissage automatique." + }, + "theme": { + "message": "Thème" + }, + "themeDesc": { + "message": "Modifier le thème de couleur de l'application." + }, + "dark": { + "message": "Sombre", + "description": "Dark color" + }, + "light": { + "message": "Clair", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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 l'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." + }, + "exportMasterPassword": { + "message": "Saisissez votre mot de passe maître pour exporter les données de votre coffre." + }, + "shared": { + "message": "Partagé" + }, + "learnOrg": { + "message": "En savoir plus sur les organisations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden vous permet de partager des éléments de votre coffre avec d'autres personnes en utilisant un compte d'organisation. Souhaitez-vous visiter le site web bitwarden.com pour en savoir plus ?" + }, + "moveToOrganization": { + "message": "Déplacer vers l'organisation" + }, + "share": { + "message": "Partager" + }, + "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é." + }, + "learnMore": { + "message": "En savoir plus" + }, + "authenticatorKeyTotp": { + "message": "Clé d'authentification (TOTP)" + }, + "verificationCodeTotp": { + "message": "Code de vérification (TOTP)" + }, + "copyVerificationCode": { + "message": "Copier le code de vérification" + }, + "attachments": { + "message": "Pièces jointes" + }, + "deleteAttachment": { + "message": "Supprimer la pièce jointe" + }, + "deleteAttachmentConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer cette pièce jointe ?" + }, + "deletedAttachment": { + "message": "Pièce jointe supprimée" + }, + "newAttachment": { + "message": "Ajouter une nouvelle pièce jointe" + }, + "noAttachments": { + "message": "Aucune 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." + }, + "featureUnavailable": { + "message": "Fonctionnalité non disponible" + }, + "updateKey": { + "message": "Vous ne pouvez pas utiliser cette fonctionnalité avant de mettre à jour votre clé de chiffrement." + }, + "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 :" + }, + "ppremiumSignUpStorage": { + "message": "1 Go de stockage de fichiers chiffrés." + }, + "ppremiumSignUpTwoStep": { + "message": "Options d'identification en deux étapes additionnelles comme YubiKey, FIDO U2F et Duo." + }, + "ppremiumSignUpReports": { + "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." + }, + "ppremiumSignUpTotp": { + "message": "Génération d'un code de vérification TOTP (2FA) pour les identifiants de votre coffre." + }, + "ppremiumSignUpSupport": { + "message": "Support client prioritaire." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Désactiver la copie automatique du TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Si une clé d'authentification est rattachée à votre identifiant, alors le code de vérification TOTP est automatiquement copié dans le presse-papiers lorsque vous renseignez l'identifiant." + }, + "disableAutoBiometricsPrompt": { + "message": "Ne pas demander de biométrie au démarrage" + }, + "premiumRequired": { + "message": "Adhésion Premium requise" + }, + "premiumRequiredDesc": { + "message": "Une adhésion premium est requise pour utiliser cette fonctionnalité." + }, + "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 d'identification 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." + }, + "webAuthnNewTab": { + "message": "Pour démarrer la vérification 2FA WebAuthn, cliquez sur le bouton ci-dessous et suivez les instructions dans le nouvel onglet." + }, + "webAuthnNewTabOpen": { + "message": "Ouvrir un nouvel onglet" + }, + "webAuthnAuthenticate": { + "message": "Authentifier WebAuthn" + }, + "loginUnavailable": { + "message": "Connexion impossible" + }, + "noTwoStepProviders": { + "message": "Ce compte dispose d'une identification en deux étapes. Cependant, aucun service d'identification en deux étapes n'est supporté par ce navigateur web." + }, + "noTwoStepProviders2": { + "message": "Merci d'utiliser un navigateur web compatible (comme Chrome) et/ou d'ajouter des services additionnels d'identification en deux étapes qui sont mieux supportés par les navigateurs web (comme par exemple une application d'authentification)." + }, + "twoStepOptions": { + "message": "Options d'identification en deux étapes" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Activer le remplissage automatique au chargement de la page" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Si un formulaire de connexion est détecté, remplir automatiquement les champs au chargement de la page web." + }, + "experimentalFeature": { + "message": "Ceci est actuellement une fonctionnalité expérimentale. À utiliser avec prudence." + }, + "defaultAutoFillOnPageLoad": { + "message": "Paramètre de saisie automatique par défaut pour les identifiants" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Après avoir activé le remplissage automatique au chargement de la page, vous pourrez activer ou désactiver la fonctionnalité pour chaque identifiant. Ceci est le paramètre par défaut pour les identifiants qui ne sont pas configurés individuellement." + }, + "itemAutoFillOnPageLoad": { + "message": "Remplissage automatique au chargement de la page (si activé dans les options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Utiliser le paramètre par défaut" + }, + "autoFillOnPageLoadYes": { + "message": "Remplissage automatique au chargement de la page" + }, + "autoFillOnPageLoadNo": { + "message": "Ne pas remplir automatiquement au chargement de la page" + }, + "commandOpenPopup": { + "message": "Ouvrir la popup du coffre" + }, + "commandOpenSidebar": { + "message": "Ouvrir le coffre dans la barre latérale" + }, + "commandAutofillDesc": { + "message": "Remplir automatiquement le dernier identifiant utilisé pour le site web actuel." + }, + "commandGeneratePasswordDesc": { + "message": "Générer et copier un nouveau mot de passe aléatoire dans le presse-papiers." + }, + "commandLockVaultDesc": { + "message": "Verrouiller le coffre" + }, + "privateModeWarning": { + "message": "La prise en charge de la navigation privée est expérimentale et certaines fonctionnalités sont limitées." + }, + "customFields": { + "message": "Champs personnalisés" + }, + "copyValue": { + "message": "Copier la valeur" + }, + "value": { + "message": "Valeur" + }, + "newCustomField": { + "message": "Nouveau champ personnalisé" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Valeur liée", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Le fait de cliquer à l'extérieur de la fenêtre pop-up pour vérifier votre e-mail avec votre code de vérification fermera cette pop-up. Voulez-vous ouvrir cette pop-up dans une nouvelle fenêtre pour qu'elle ne soit pas fermée ?" + }, + "popupU2fCloseMessage": { + "message": "Ce navigateur ne peut pas traiter les requêtes U2F dans cette popup. Voulez-vous ouvrir cette popup dans une nouvelle fenêtre pour que vous puissiez vous connecter en utilisant U2F ?" + }, + "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." + }, + "disableBadgeCounter": { + "message": "Désactiver le compteur de badge" + }, + "disableBadgeCounterDesc": { + "message": "Le compteur de badge indique le nombre d'identifiants vous avez pour la page actuelle dans votre coffre." + }, + "cardholderName": { + "message": "Nom du titulaire de la carte" + }, + "number": { + "message": "Numéro" + }, + "brand": { + "message": "Réseau de paiement" + }, + "expirationMonth": { + "message": "Mois d'expiration" + }, + "expirationYear": { + "message": "Année d'expiration" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Code de sécurité" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Titre" + }, + "mr": { + "message": "M." + }, + "mrs": { + "message": "Mme" + }, + "ms": { + "message": "Mlle" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Prénom" + }, + "middleName": { + "message": "Deuxième prénom" + }, + "lastName": { + "message": "Nom" + }, + "fullName": { + "message": "Nom et prénom" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Identifiant" + }, + "typeLogins": { + "message": "Identifiants" + }, + "typeSecureNote": { + "message": "Note sécurisée" + }, + "typeCard": { + "message": "Carte de paiement" + }, + "typeIdentity": { + "message": "Identité" + }, + "passwordHistory": { + "message": "Historique des mots de passe" + }, + "back": { + "message": "Retour" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favoris" + }, + "popOutNewWindow": { + "message": "Ouvrir dans une nouvelle fenêtre" + }, + "refresh": { + "message": "Actualiser" + }, + "cards": { + "message": "Cartes de paiement" + }, + "identities": { + "message": "Identités" + }, + "logins": { + "message": "Identifiants" + }, + "secureNotes": { + "message": "Notes sécurisées" + }, + "clear": { + "message": "Effacer", + "description": "To clear something out. example: To clear browser history." + }, + "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 de 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" + }, + "toggleCurrentUris": { + "message": "Afficher/masquer les URIs actuels", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI actuel", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "Tous les éléments" + }, + "noPasswordsInList": { + "message": "Aucun mot de passe à afficher." + }, + "remove": { + "message": "Supprimer" + }, + "default": { + "message": "Par défaut" + }, + "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" + }, + "neverLockWarning": { + "message": "Êtes-vous sûr de vouloir utiliser l'option \"Jamais\" ? Définir le verrouillage sur \"Jamais\" stocke la clé de chiffrement de votre coffre sur votre appareil. Si vous utilisez cette option, vous devez vous assurer de correctement protéger votre appareil." + }, + "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 de passe) 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." + }, + "unlockWithBiometrics": { + "message": "Déverrouiller par biométrie" + }, + "awaitDesktop": { + "message": "En attente de confirmation de l'application de bureau" + }, + "awaitDesktopDesc": { + "message": "Veuillez confirmer l'utilisation de la biométrie dans l'application Bitwarden de bureau pour activer la biométrie dans le navigateur." + }, + "lockWithMasterPassOnRestart": { + "message": "Verrouiller avec le mot de passe maître lors du redémarrage du navigateur." + }, + "selectOneCollection": { + "message": "Vous devez sélectionner au moins une collection." + }, + "cloneItem": { + "message": "Cloner l’élément" + }, + "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" + }, + "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é" + }, + "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" + }, + "autoFillAndSave": { + "message": "Remplir automatiquement et enregistrer" + }, + "autoFillSuccessAndSavedUri": { + "message": "Élément rempli automatiquement et URI sauvegardée" + }, + "autoFillSuccess": { + "message": "Élément rempli automatiquement" + }, + "setMasterPassword": { + "message": "Définir le 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." + }, + "termsOfService": { + "message": "Conditions d'utilisation" + }, + "privacyPolicy": { + "message": "Politique de confidentialité" + }, + "hintEqualsPassword": { + "message": "Votre indice de mot de passe ne peut pas être identique à votre mot de passe." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Vérification de la synchronisation avec l'application de bureau" + }, + "desktopIntegrationVerificationText": { + "message": "Veuillez vérifier que l'application de bureau affiche cette phrase d'empreinte : " + }, + "desktopIntegrationDisabledTitle": { + "message": "L'intégration avec le navigateur n'est pas activée" + }, + "desktopIntegrationDisabledDesc": { + "message": "L'intégration avec le navigateur n'est pas activée dans l'application de bureau Bitwarden. Veuillez l'activer dans les paramètres de l'application de bureau." + }, + "startDesktopTitle": { + "message": "Démarrer l'application de bureau Bitwarden." + }, + "startDesktopDesc": { + "message": "L'application de bureau Bitwarden doit être démarrée avant que le déverrouillage par biométrie puisse être utilisé." + }, + "errorEnableBiometricTitle": { + "message": "Impossible d'activer la biométrie" + }, + "errorEnableBiometricDesc": { + "message": "L'action a été annulée par l'application de bureau" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "L'application de bureau a invalidé le canal de communication sécurisé. Veuillez réessayer cette opération" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Communication interrompue avec l'application de bureau" + }, + "nativeMessagingWrongUserDesc": { + "message": "L'application de bureau est connectée à un autre compte. Veuillez vous assurer que les deux applications sont connectées au même compte." + }, + "nativeMessagingWrongUserTitle": { + "message": "Erreur de correspondance entre les comptes" + }, + "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." + }, + "biometricsNotSupportedTitle": { + "message": "Le déverrouillage biométrique n'est pas pris en charge" + }, + "biometricsNotSupportedDesc": { + "message": "Le déverrouillage biométrique dans le navigateur n’est pas pris en charge sur cet appareil" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission non accordée" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Sans la permission de communiquer avec l'application de bureau Bitwarden, nous ne pouvons pas activer le déverrouillage biométrique dans l'extension navigateur. Veuillez réessayer." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Erreur de demande de permission" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Cette action ne peut pas être effectuée dans la barre latérale, veuillez réessayer l'action dans la popup ou la nouvelle fenêtre." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Une politique d'organisation affecte vos options de propriété." + }, + "excludedDomains": { + "message": "Domaines exclus" + }, + "excludedDomainsDesc": { + "message": "Bitwarden ne proposera pas d'enregistrer les informations de connexion pour ces domaines. Vous devez actualiser la page pour que les modifications prennent effet." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ n'est pas un domaine valide", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "addSend": { + "message": "Ajouter un Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Texte" + }, + "sendTypeFile": { + "message": "Fichier" + }, + "allSends": { + "message": "Tous les Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Nombre maximum d'accès atteint", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expiré" + }, + "pendingDeletion": { + "message": "En attente de suppression" + }, + "passwordProtected": { + "message": "Protégé par un mot de passe" + }, + "copySendLink": { + "message": "Copier le lien du Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Supprimer le mot de passe" + }, + "delete": { + "message": "Supprimer" + }, + "removedPassword": { + "message": "Mot de passe supprimé" + }, + "deletedSend": { + "message": "Send supprimé", + "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." + }, + "disabled": { + "message": "Désactivé" + }, + "removePasswordConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer le mot de passe ?" + }, + "deleteSend": { + "message": "Supprimer le Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Modifier le Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Un nom convivial pour décrire ce Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Le fichier que vous voulez envoyer." + }, + "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." + }, + "oneDay": { + "message": "1 jour" + }, + "days": { + "message": "$DAYS$ jours", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Personnalisé" + }, + "maximumAccessCount": { + "message": "Nombre maximum d'accès" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copier dans le presse-papiers le lien de ce Send lors de l'enregistrement.", + "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." + }, + "sendHideText": { + "message": "Cacher par défaut le texte de ce Send.", + "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" + }, + "createSend": { + "message": "Créer un nouveau Send", + "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" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Pour choisir un fichier, ouvrez l'extension dans la barre latérale (si possible) ou ouvrez une nouvelle fenêtre en cliquant sur cette bannière." + }, + "sendFirefoxFileWarning": { + "message": "Afin de choisir un fichier en utilisant Firefox, ouvrez l'extension dans la barre latérale ou ouvrez une nouvelle fenêtre en cliquant sur cette bannière." + }, + "sendSafariFileWarning": { + "message": "Pour choisir un fichier avec Safari, ouvrez une nouvelle fenêtre en cliquant sur cette bannière." + }, + "sendFileCalloutHeader": { + "message": "Avant de commencer" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Pour utiliser un sélecteur de date en forme de calendrier,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "cliquez ici", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "pour ouvrir une nouvelle fenêtre.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "La date d'expiration indiquée n'est pas valide." + }, + "deletionDateIsInvalid": { + "message": "La date de suppression indiquée n'est pas valide." + }, + "expirationDateAndTimeRequired": { + "message": "Une date et une heure d'expiration sont requises." + }, + "deletionDateAndTimeRequired": { + "message": "Une date et une heure de suppression sont requises." + }, + "dateParsingError": { + "message": "Une erreur s'est produite lors de l'enregistrement de vos dates de suppression et d'expiration." + }, + "hideEmail": { + "message": "Cacher mon adresse e-mail aux destinataires." + }, + "sendOptionsPolicyInEffect": { + "message": "Une ou plusieurs politiques d'organisation affectent vos options Send." + }, + "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é." + }, + "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é. Vous pouvez vérifier votre adresse e-mail dans le coffre web." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Sélectionnez un dossier..." + }, + "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." + }, + "hours": { + "message": "Heures" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Les politiques de votre organisation affectent le délai d'expiration de votre coffre-fort. 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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Le délai d'expiration de votre coffre dépasse les restrictions définies par votre organisation." + }, + "vaultExportDisabled": { + "message": "Export du coffre désactivé" + }, + "personalVaultExportPolicyInEffect": { + "message": "Une ou plusieurs politiques d'organisation vous empêchent d'exporter votre coffre personnel." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Aucun élément de formulaire valide n'a pu être identifié. Essayez plutôt d'inspecter le HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Aucun identifiant unique trouvé." + }, + "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" + }, + "removeMasterPassword": { + "message": "Supprimer le mot de passe maître" + }, + "removedMasterPassword": { + "message": "Mot de passe maître supprimé." + }, + "leaveOrganizationConfirmation": { + "message": "Êtes-vous sûr·e de vouloir quitter cette organisation ?" + }, + "leftOrganization": { + "message": "Vous avez quitté l'organisation." + }, + "toggleCharacterCount": { + "message": "Activer/désactiver le compteur de caractères" + }, + "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" + } + } + }, + "error": { + "message": "Erreur" + }, + "regenerateUsername": { + "message": "Régénérer un nom d'utilisateur" + }, + "generateUsername": { + "message": "Générer un nom d'utilisateur" + }, + "usernameType": { + "message": "Type de nom d'utilisateur" + }, + "plusAddressedEmail": { + "message": "E-mail suffixé", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Utilisez les capacités de sous-adressage de votre fournisseur d'e-mail." + }, + "catchallEmail": { + "message": "Collecteur d'e-mail" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Que souhaitez-vous générer ?" + }, + "passwordType": { + "message": "Type de mot de passe" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json new file mode 100644 index 0000000000..d6c149582a --- /dev/null +++ b/apps/browser/src/_locales/he/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - מנהל סיסמאות חינמי", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "מנהל סיסמאות חינמי ומאובטח עבור כל המכשירים שלך.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "צור חשבון חדש או התחבר כדי לגשת לכספת המאובטחת שלך." + }, + "createAccount": { + "message": "צור חשבון" + }, + "login": { + "message": "התחבר" + }, + "enterpriseSingleSignOn": { + "message": "כניסה אחודה ארגונית" + }, + "cancel": { + "message": "בטל" + }, + "close": { + "message": "סגור" + }, + "submit": { + "message": "שלח" + }, + "emailAddress": { + "message": "כתובת אימייל" + }, + "masterPass": { + "message": "סיסמה ראשית" + }, + "masterPassDesc": { + "message": "הסיסמה הראשית היא הסיסמה שבאמצעותה תיגש לכספת שלך. חשוב מאוד שלא תשכח את הסיסמה הזו. אין שום דרך לשחזר אותה במקרה ושכחת אותה." + }, + "masterPassHintDesc": { + "message": "ניתן להשתמש ברמז לסיסמה הראשית אם שכחת אותה." + }, + "reTypeMasterPass": { + "message": "הקלד שוב סיסמה ראשית" + }, + "masterPassHint": { + "message": "רמז לסיסמה ראשית (אופציונאלי)" + }, + "tab": { + "message": "לשונית" + }, + "myVault": { + "message": "הכספת שלי" + }, + "tools": { + "message": "כלים" + }, + "settings": { + "message": "הגדרות" + }, + "currentTab": { + "message": "לשונית נוכחית" + }, + "copyPassword": { + "message": "העתק סיסמה" + }, + "copyNote": { + "message": "העתק פתק" + }, + "copyUri": { + "message": "העתק שורת כתובת" + }, + "copyUsername": { + "message": "העתק שם משתמש" + }, + "copyNumber": { + "message": "העתק מספר" + }, + "copySecurityCode": { + "message": "העתק קוד אבטחה" + }, + "autoFill": { + "message": "השלמה אוטומטית" + }, + "generatePasswordCopied": { + "message": "צור סיסמה חדשה (והעתק לזיכרון)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "לא נמצאו פרטי כניסה תואמים." + }, + "unlockVaultMenu": { + "message": "שחרור הכספת שלך" + }, + "loginToVaultMenu": { + "message": "כניסה לכספת שלך" + }, + "autoFillInfo": { + "message": "לא נמצאו פרטי כניסה להשלמה אוטומטית בלשונית הנוכחית בדפדפן." + }, + "addLogin": { + "message": "הוסף פרטי כניסה" + }, + "addItem": { + "message": "הוסף פריט" + }, + "passwordHint": { + "message": "רמז לסיסמה" + }, + "enterEmailToGetHint": { + "message": "הכנס את פרטי האימייל שלך לקבלת רמז עבור הסיסמה הראשית." + }, + "getMasterPasswordHint": { + "message": "הצג את הרמז לסיסמה הראשית" + }, + "continue": { + "message": "המשך" + }, + "sendVerificationCode": { + "message": "שליחת קוד אימות לדוא״ל שלך" + }, + "sendCode": { + "message": "שליחת קוד" + }, + "codeSent": { + "message": "קוד נשלח" + }, + "verificationCode": { + "message": "קוד אימות" + }, + "confirmIdentity": { + "message": "יש לאשר את זהותך כדי להמשיך." + }, + "account": { + "message": "חשבון" + }, + "changeMasterPassword": { + "message": "החלף סיסמה ראשית" + }, + "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." + }, + "twoStepLogin": { + "message": "התחברות בשני-שלבים" + }, + "logOut": { + "message": "התנתק" + }, + "about": { + "message": "אודות" + }, + "version": { + "message": "גירסה" + }, + "save": { + "message": "שמור" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "הוסף תיקייה" + }, + "name": { + "message": "שם" + }, + "editFolder": { + "message": "ערוך תיקייה" + }, + "deleteFolder": { + "message": "מחק תיקייה" + }, + "folders": { + "message": "תיקיות" + }, + "noFolders": { + "message": "אין תיקיות להצגה." + }, + "helpFeedback": { + "message": "עזרה ומשוב" + }, + "sync": { + "message": "סנכרן" + }, + "syncVaultNow": { + "message": "סנכרן את הכספת עכשיו" + }, + "lastSync": { + "message": "סנכרון אחרון:" + }, + "passGen": { + "message": "יוצר הסיסמאות" + }, + "generator": { + "message": "מייצר", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "צור אוטומטית סיסמאות חזקות ויחודיות עבור פרטי הכניסה שלך." + }, + "bitWebVault": { + "message": "כספת באתר Bitwarden" + }, + "importItems": { + "message": "יבא פריטים" + }, + "select": { + "message": "בחר" + }, + "generatePassword": { + "message": "צור סיסמה" + }, + "regeneratePassword": { + "message": "צור סיסמה חדשה" + }, + "options": { + "message": "אפשרויות" + }, + "length": { + "message": "אורך" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "מספר מילים" + }, + "wordSeparator": { + "message": "מפריד מילים" + }, + "capitalize": { + "message": "הפוך אותיות ראשונות לאותיות גדולות", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "כלול מספרים" + }, + "minNumbers": { + "message": "מינימום ספרות" + }, + "minSpecial": { + "message": "מינימום תוים מיוחדים" + }, + "avoidAmbChar": { + "message": "המנע מאותיות ותוים דומים" + }, + "searchVault": { + "message": "חיפוש בכספת" + }, + "edit": { + "message": "ערוך" + }, + "view": { + "message": "הצג" + }, + "noItemsInList": { + "message": "אין פריטים להצגה." + }, + "itemInformation": { + "message": "מידע על הפריט" + }, + "username": { + "message": "שם משתמש" + }, + "password": { + "message": "סיסמה" + }, + "passphrase": { + "message": "משפט סיסמה" + }, + "favorite": { + "message": "מועדף" + }, + "notes": { + "message": "הערות" + }, + "note": { + "message": "הערה" + }, + "editItem": { + "message": "ערוך פריט" + }, + "folder": { + "message": "תיקייה" + }, + "deleteItem": { + "message": "מחק פריט" + }, + "viewItem": { + "message": "צפה בפריט" + }, + "launch": { + "message": "הפעל" + }, + "website": { + "message": "אתר" + }, + "toggleVisibility": { + "message": "הצג או הסתר" + }, + "manage": { + "message": "נהל" + }, + "other": { + "message": "אחר" + }, + "rateExtension": { + "message": "דירוג הרחבה" + }, + "rateExtensionDesc": { + "message": "אם נהנית מהתוכנה, בבקשה דרג את התוכנה וכתוב דירוג עם חוות דעת טובה!" + }, + "browserNotSupportClipboard": { + "message": "הדפדפן שלך לא תומך בהעתקה ללוח. אנא העתק בצורה ידנית." + }, + "verifyIdentity": { + "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": "סיסמה ראשית שגויה" + }, + "vaultTimeout": { + "message": "משך זמן מירבי עבור חיבור לכספת" + }, + "lockNow": { + "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 שעות" + }, + "onLocked": { + "message": "בזמן נעילת המערכת" + }, + "onRestart": { + "message": "בהפעלת הדפדפן מחדש" + }, + "never": { + "message": "לעולם לא" + }, + "security": { + "message": "אבטחה" + }, + "errorOccurred": { + "message": "אירעה שגיאה" + }, + "emailRequired": { + "message": "נדרשת כתובת אימייל." + }, + "invalidEmail": { + "message": "כתובת אימייל לא תקינה." + }, + "masterPassRequired": { + "message": "יש להזין את הסיסמה הראשית." + }, + "masterPassLength": { + "message": "הסיסמה הראשית חייבת להיות לפחות באורך 8 תווים." + }, + "masterPassDoesntMatch": { + "message": "שדה אימות סיסמה ראשית לא תואם." + }, + "newAccountCreated": { + "message": "החשבון שלך נוצר בהצלחה! כעת ניתן להכנס למערכת." + }, + "masterPassSent": { + "message": "שלחנו לך אימייל עם רמז לסיסמה הראשית." + }, + "verificationCodeRequired": { + "message": "נדרש קוד אימות." + }, + "invalidVerificationCode": { + "message": "קוד אימות שגוי" + }, + "valueCopied": { + "message": "השדה $VALUE$ הועתק לזיכרון", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "לא הצלחנו לבצע פעולת השלמה האוטומטית בעמוד זה. אנא העתק והדבק את המידע הנחוץ בצורה ידנית." + }, + "loggedOut": { + "message": "בוצעה יציאה" + }, + "loginExpired": { + "message": "תוקף החיבור שלך הסתיים." + }, + "logOutConfirmation": { + "message": "האם אתה בטוח שברצונך להתנתק?" + }, + "yes": { + "message": "כן" + }, + "no": { + "message": "לא" + }, + "unexpectedError": { + "message": "אירעה שגיאה לא צפויה." + }, + "nameRequired": { + "message": "דרוש שם." + }, + "addedFolder": { + "message": "נוספה תיקייה" + }, + "changeMasterPass": { + "message": "החלף סיסמה ראשית" + }, + "changeMasterPasswordConfirmation": { + "message": "באפשרותך לשנות את הסיסמה הראשית שלך דרך הכספת באתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "twoStepLoginConfirmation": { + "message": "התחברות בשני-שלבים הופכת את החשבון שלך למאובטח יותר בכך שאתה נדרש לוודא בכל כניסה בעזרת מכשיר אחר כדוגמת מפתח אבטחה, תוכנת אימות, SMS, שיחת טלפון, או אימייל. ניתן להפעיל את \"התחברות בשני-שלבים\" בכספת שבאתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "editedFolder": { + "message": "תיקייה שנערכה" + }, + "deleteFolderConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק את התיקייה?" + }, + "deletedFolder": { + "message": "תיקייה שנמחקה" + }, + "gettingStartedTutorial": { + "message": "מדריך שימוש ראשוני" + }, + "gettingStartedTutorialVideo": { + "message": "צפה במדריך השימוש הראשוני כדי ללמוד איך לנצל את המקסימום שהתוסף לדפדפן יכול להציע." + }, + "syncingComplete": { + "message": "הסינכרון הושלם" + }, + "syncingFailed": { + "message": "הסינכרון נכשל" + }, + "passwordCopied": { + "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": "כתובת חדשה" + }, + "addedItem": { + "message": "פריט שהתווסף" + }, + "editedItem": { + "message": "פריט שנערך" + }, + "deleteItemConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק פריט זה?" + }, + "deletedItem": { + "message": "פריט נשלח לסל המחזור" + }, + "overwritePassword": { + "message": "דרוס סיסמה" + }, + "overwritePasswordConfirmation": { + "message": "האם אתה בטוח שברצונך לדרוס את הסיסמה הנוכחית?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "חפש תיקייה" + }, + "searchCollection": { + "message": "חפש אוסף" + }, + "searchType": { + "message": "חפש סוג" + }, + "noneFolder": { + "message": "ללא תיקייה", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "בטל את ההודעה \"שמור פרטי כניסה\"" + }, + "addLoginNotificationDesc": { + "message": "ההודעה \"שמור פרטי כניסה\" מופיעה בכל פעם שתכנס לאתר חדש בפעם הראשונה." + }, + "dontShowCardsCurrentTab": { + "message": "אל תציג כרטיסים העמוד הלשונית" + }, + "dontShowCardsCurrentTabDesc": { + "message": "פרטי כרטיס מהכספת שלך מופיעים בעמוד 'הלשונית הנוכחית' לגישה קלה להשלמה האוטומטית." + }, + "dontShowIdentitiesCurrentTab": { + "message": "אל תציג זהויות בעמוד הלשונית" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "האם ברצונך שתוכנת Bitwarden תזכור סיסמה זו עבורך?" + }, + "notificationAddSave": { + "message": "כן, שמור עכשיו" + }, + "disableChangedPasswordNotification": { + "message": "בטל התראת \"סיסמה שונתה\"" + }, + "disableChangedPasswordNotificationDesc": { + "message": "ההתראה \"סיסמה שונתה\" תופיע בכל פעם שהמערכת מזהה שינוי בסיסמה באתר אם פרטי הכניסה הקודמים שמורים שבכספת." + }, + "notificationChangeDesc": { + "message": "האם ברצונך לעדכן את הסיסמה הזו בתוכנת Bitwarden?" + }, + "notificationChangeSave": { + "message": "כן, עדכן עכשיו" + }, + "disableContextMenuItem": { + "message": "בטל את אפשרויות תפריט ההקשר" + }, + "disableContextMenuItemDesc": { + "message": "אפשרויות תפריט ההקשר מספקים גישה מהירה ליצירת סיסמאות חדשות ולפרטי כניסה לאתר עבור הלשונית הנוכחית בדפדפן." + }, + "defaultUriMatchDetection": { + "message": "ברירת מחדל לזיהוי התאמת כתובות", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "בחר את שיטת ברירת המחדל עבור זיהוי התאמת כתובות כשמבצעים פעולות השלמה אוטומטית." + }, + "theme": { + "message": "ערכת נושא" + }, + "themeDesc": { + "message": "שנה את ערכת הצבע של האפליקציה." + }, + "dark": { + "message": "כהה", + "description": "Dark color" + }, + "light": { + "message": "בהיר", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "exportMasterPassword": { + "message": "הזן את הסיסמה הראשית שלך עבור יצוא המידע מהכספת." + }, + "shared": { + "message": "משותף" + }, + "learnOrg": { + "message": "מידע על ארגונים" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "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." + }, + "learnMore": { + "message": "למידע נוסף" + }, + "authenticatorKeyTotp": { + "message": "מפתח אימות (TOTP)" + }, + "verificationCodeTotp": { + "message": "קוד אימות (TOTP)" + }, + "copyVerificationCode": { + "message": "העתק קוד אימות" + }, + "attachments": { + "message": "קבצים מצורפים" + }, + "deleteAttachment": { + "message": "מחק קובץ מצורף" + }, + "deleteAttachmentConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק קובץ מצורף זה?" + }, + "deletedAttachment": { + "message": "קובץ מצורף שנמחק" + }, + "newAttachment": { + "message": "צרף קובץ חדש" + }, + "noAttachments": { + "message": "אין קבצים מצורפים." + }, + "attachmentSaved": { + "message": "הקובץ המצורף נשמר." + }, + "file": { + "message": "קובץ" + }, + "selectFile": { + "message": "בחר קובץ." + }, + "maxFileSize": { + "message": "גודל הקובץ המירבי הוא 500 מגה." + }, + "featureUnavailable": { + "message": "יכולת זו לא זמינה" + }, + "updateKey": { + "message": "לא ניתן להשתמש ביכולת זו עד שתעדכן את מפתח ההצפנה שלך." + }, + "premiumMembership": { + "message": "חשבון פרימיום" + }, + "premiumManage": { + "message": "נהל חשבון" + }, + "premiumManageAlert": { + "message": "באפשרותך לנהל את החשבון שלך דרך הכספת באתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "premiumRefresh": { + "message": "רענן פרטי חשבון" + }, + "premiumNotCurrentMember": { + "message": "חשבונך אינו חשבון פרמיום כרגע." + }, + "premiumSignUpAndGet": { + "message": "צור חשבון פרמיום לשנה, וקבל:" + }, + "ppremiumSignUpStorage": { + "message": "1 ג'יגה של מקום אחסון עבור קבצים מצורפים." + }, + "ppremiumSignUpTwoStep": { + "message": "אפשרויות כניסה דו שלבית מתקדמות כמו YubiKey, FIDO U2F, וגם Duo." + }, + "ppremiumSignUpReports": { + "message": "היגיינת סיסמאות, מצב בריאות החשבון, ודיווחים מעודכנים על פרצות חדשות בכדי לשמור על הכספת שלך בטוחה." + }, + "ppremiumSignUpTotp": { + "message": "מייצר קודי אימות TOTP עבור כניסות דו-שלביות (2FA) בכספת שלך." + }, + "ppremiumSignUpSupport": { + "message": "קדימות בתמיכה הטכנית." + }, + "ppremiumSignUpFuture": { + "message": "כל יכולות הפרימיום העתידיות שנפתח. עוד יכולות מגיעות בקרוב!" + }, + "premiumPurchase": { + "message": "רכוש פרימיום" + }, + "premiumPurchaseAlert": { + "message": "באפשרותך לרכוש מנוי פרימיום בכספת באתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "premiumCurrentMember": { + "message": "אתה מנוי פרימיום!" + }, + "premiumCurrentMemberThanks": { + "message": "תודה על תמיכתך בBitwarden." + }, + "premiumPrice": { + "message": "הכל רק ב$PRICE$ לשנה!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "הרענון הושלם" + }, + "disableAutoTotpCopy": { + "message": "בטל העתקה אוטומטית של קוד TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "אם פרטי הכניסה שלך מקושרים לאפליקציית אימות, קוד האימות TOTP מועתק אוטומטית ללוח שלך ברגע שמתבצעת ההשלמה האוטומטית לטופס הכניסה." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "נדרש חשבון פרימיום" + }, + "premiumRequiredDesc": { + "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 במחשבך. אם יש לו כפתור, לחץ עליו." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "פתיחת לשונית חדשה" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "loginUnavailable": { + "message": "פרטי כניסה לא זמינים" + }, + "noTwoStepProviders": { + "message": "כניסה דו-שלבית פעילה בחשבון זה, אך אף אחד מספקי הכניסה הדו-שלבית לא נתמכים בדפדפן זה." + }, + "noTwoStepProviders2": { + "message": "אנא השתמש בדפדפן נתמך (כמו לדוגמא Chrome) ו\\או הוסף ספק כניסה דו-שלבית הנתמך בדפדפן זה (כמו לדוגמא אפליקצית אימות)." + }, + "twoStepOptions": { + "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": "מפתח אבטחה 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": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "אימייל" + }, + "emailDesc": { + "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": "כתובות הסביבה נשמרו." + }, + "enableAutoFillOnPageLoad": { + "message": "הפעל השלמה אוטומטית בזמן טעינת העמוד" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "אם זוהה טופס כניסה, בצע אוטומטית מילוי-אוטומטי כשהעמוד נטען." + }, + "experimentalFeature": { + "message": "זוהי אופציה נסיונית. השימוש באופציה זו על אחריותך." + }, + "defaultAutoFillOnPageLoad": { + "message": "הגדרת ברירת מחדל למילוי אוטומטי של פרטי התחברות" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "לאחר הפעלת מילוי אוטומטי של פרטים בעת טעינת דפים, אפשר להפעיל או לכבות את האפשרות לפרטי התחברות ספציפיים. זו הגדרת ברירת המחדל לפרטי התחברות שלא הוגדרו בנפרד." + }, + "itemAutoFillOnPageLoad": { + "message": "מילוי אוטומטי בעת טעינת דפים (אם מופעל בהגדרות)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "שימוש בהגדרות ברירת המחדל" + }, + "autoFillOnPageLoadYes": { + "message": "מילוי אוטומטי אחרי טעינת דפים" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "פתיחת כספת בחלונית צפה" + }, + "commandOpenSidebar": { + "message": "פתיחת כספת בסרגל צד" + }, + "commandAutofillDesc": { + "message": "השתמש בהשלמה-האוטומטית האחרונה שבוצעה באתר זה." + }, + "commandGeneratePasswordDesc": { + "message": "צור והעתק סיסמה רנדומלית חדשה." + }, + "commandLockVaultDesc": { + "message": "נעל את הכספת" + }, + "privateModeWarning": { + "message": "המצב הפרטי הוא במסגרת ניסוי וחלק מהיכולות מוגבלות." + }, + "customFields": { + "message": "שדות מותאמים אישית" + }, + "copyValue": { + "message": "העתק ערך" + }, + "value": { + "message": "ערך" + }, + "newCustomField": { + "message": "שדה מותאם אישית חדש" + }, + "dragToSort": { + "message": "גרור כדי למיין" + }, + "cfTypeText": { + "message": "טקסט" + }, + "cfTypeHidden": { + "message": "מוסתר" + }, + "cfTypeBoolean": { + "message": "אמת או שקר" + }, + "cfTypeLinked": { + "message": "מקושר", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "ערך מקושר", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "לחיצה מחוץ לחלונית הצפה שנפתחה בכדי לבדוק את פרטי האימות תגרום לחלונית שנפתחה, להסגר. האם ברצונך להציג את המידע בחלון שאינו נסגר?" + }, + "popupU2fCloseMessage": { + "message": "דפדפן זה לא יכול לעבד בקשות U2F בחלון צף זה. האם ברצונך לפתוח את החלון הצף כחלון חדש רגיל כדי שתוכל להכנס באמצעות U2F?" + }, + "disableFavicon": { + "message": "בטל אייקונים של האתר" + }, + "disableFaviconDesc": { + "message": "יכולת הצג אייקונים-של-האתר מאפשרת הצגה של תמונה או אייקון מוכר ליד פרטי הכניסה שבכספת שלך." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "שם בעל הכרטיס" + }, + "number": { + "message": "מספר" + }, + "brand": { + "message": "מותג" + }, + "expirationMonth": { + "message": "תוקף אשראי - חודש" + }, + "expirationYear": { + "message": "תוקף אשראי - שנה" + }, + "expiration": { + "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": "דצמבר" + }, + "securityCode": { + "message": "קוד אבטחה" + }, + "ex": { + "message": "לדוגמא" + }, + "title": { + "message": "תואר" + }, + "mr": { + "message": "מר" + }, + "mrs": { + "message": "גברת" + }, + "ms": { + "message": "העלמה" + }, + "dr": { + "message": "דוקטור" + }, + "firstName": { + "message": "שם פרטי" + }, + "middleName": { + "message": "שם אמצעי" + }, + "lastName": { + "message": "שם משפחה" + }, + "fullName": { + "message": "שם מלא" + }, + "identityName": { + "message": "שם זהות" + }, + "company": { + "message": "חברה" + }, + "ssn": { + "message": "מספר ביטוח לאומי" + }, + "passportNumber": { + "message": "מספר דרכון" + }, + "licenseNumber": { + "message": "מספר רשיון" + }, + "email": { + "message": "אימייל" + }, + "phone": { + "message": "טלפון" + }, + "address": { + "message": "כתובת" + }, + "address1": { + "message": "כתובת 1" + }, + "address2": { + "message": "כתובת 2" + }, + "address3": { + "message": "כתובת 3" + }, + "cityTown": { + "message": "עיר \\ יישוב" + }, + "stateProvince": { + "message": "מדינה \\ מחוז" + }, + "zipPostalCode": { + "message": "מיקוד" + }, + "country": { + "message": "מדינה" + }, + "type": { + "message": "סוג" + }, + "typeLogin": { + "message": "פרטי התחברות" + }, + "typeLogins": { + "message": "פרטי התחברות" + }, + "typeSecureNote": { + "message": "פתק מאובטח" + }, + "typeCard": { + "message": "כרטיס" + }, + "typeIdentity": { + "message": "זהות" + }, + "passwordHistory": { + "message": "היסטוריית סיסמאות" + }, + "back": { + "message": "הקודם" + }, + "collections": { + "message": "אוספים" + }, + "favorites": { + "message": "מועדפים" + }, + "popOutNewWindow": { + "message": "פתח כחלון חדש" + }, + "refresh": { + "message": "רענן" + }, + "cards": { + "message": "כרטיסים" + }, + "identities": { + "message": "זהויות" + }, + "logins": { + "message": "פרטי התחברות" + }, + "secureNotes": { + "message": "פתקים מאובטחים" + }, + "clear": { + "message": "נקה", + "description": "To clear something out. example: To clear browser history." + }, + "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": "הצגה\\הסתרה של אפשרויות" + }, + "toggleCurrentUris": { + "message": "שנה מצב הצגת כתובות URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "כתובת מלאה נוכחית", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "ארגון", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "סוגים" + }, + "allItems": { + "message": "כל הפריטים" + }, + "noPasswordsInList": { + "message": "אין סיסמאות להצגה ברשימה." + }, + "remove": { + "message": "הסר" + }, + "default": { + "message": "ברירת מחדל" + }, + "dateUpdated": { + "message": "עודכן", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "הסיסמה עודכנה", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "קוד 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 לא תקין." + }, + "unlockWithBiometrics": { + "message": "פתח נעילה עם זיהוי ביומטרי" + }, + "awaitDesktop": { + "message": "ממתין לאישור משולחן העבודה" + }, + "awaitDesktopDesc": { + "message": "אנא אשר בעזרת אמצעים ביומטרים באפליקציית Bitwarden של שולחן העבודה בכדי לאפשר אמצעים ביומטריים בדפדפן." + }, + "lockWithMasterPassOnRestart": { + "message": "נעל בעזרת הסיסמה הראשית בהפעלת הדפדפן מחדש" + }, + "selectOneCollection": { + "message": "עליך לבחור לפחות אוסף אחד." + }, + "cloneItem": { + "message": "שכפול פריט" + }, + "clone": { + "message": "שכפול" + }, + "passwordGeneratorPolicyInEffect": { + "message": "מדיניות ארגונית אחת או יותר משפיעה על הגדרות המחולל שלך." + }, + "vaultTimeoutAction": { + "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": "פריט ששוחזר" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "יציאה מהחשבון תסיר את כל הגישה לכספת ויידרש אימות מקוון לאחר משך הזמן שהוקצב. האם אתה בטוח שברצונך להשתמש בהגדרה זו?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "אישור פעולת אימות לאחר חוסר פעילות" + }, + "autoFillAndSave": { + "message": "בצע השלמה אוטומטית ושמור" + }, + "autoFillSuccessAndSavedUri": { + "message": "בוצעה השלמה אוטומטית והכתובת נשמרה" + }, + "autoFillSuccess": { + "message": "בוצעה השלמה אוטומטית" + }, + "setMasterPassword": { + "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": "תנאי השירות ומדיניות הפרטיות לא אושרו." + }, + "termsOfService": { + "message": "תנאי השירות" + }, + "privacyPolicy": { + "message": "מדיניות הפרטיות" + }, + "hintEqualsPassword": { + "message": "רמז הסיסמה שלך לא יכול להיות זהה לסיסמה שלך." + }, + "ok": { + "message": "אישור" + }, + "desktopSyncVerificationTitle": { + "message": "אימות סנכרון מול שולחן העבודה" + }, + "desktopIntegrationVerificationText": { + "message": "אנא ודא כי אפליקציית שולחן העבודה שלך מציגה את טביעת האצבע הזו: " + }, + "desktopIntegrationDisabledTitle": { + "message": "אינטגרציית הדפדפן לא מופעלת" + }, + "desktopIntegrationDisabledDesc": { + "message": "אינטגרציית הדפדפן לא מופעלת באפליקציית Bitwarden בשולחן העבודה. אנא אפשר זאת בהגדרות האפליקציה." + }, + "startDesktopTitle": { + "message": "הפעל את אפליקציית Bitwarden בשולחן העבודה" + }, + "startDesktopDesc": { + "message": "יש להפעיל את אפליקציית Bitwarden בשולחן העבודה בכדי להשתמש בפונקציה זו." + }, + "errorEnableBiometricTitle": { + "message": "לא ניתן להפעיל זיהוי ביומטרי" + }, + "errorEnableBiometricDesc": { + "message": "הפעולה בוטלה על ידי אפליקציית שולחן העבודה" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "אפליקציית שולחן העבודה דחתה את ערוץ התקשורת המאובטח. אנא נסה שנית." + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "התקשורת מול אפליקציית שולחן העבודה נקטעה" + }, + "nativeMessagingWrongUserDesc": { + "message": "המשתמש המחובר לאפליקציית שולחן העבודה שונה מהמשתמש המחובר לאפליקציה בדפדפן. אנא ודא כי אותו משתמש מחובר לשתי האפליקציות." + }, + "nativeMessagingWrongUserTitle": { + "message": "חוסר התאמה בין חשבונות" + }, + "biometricsNotEnabledTitle": { + "message": "אמצעי זיהוי ביומטרים לא מאופשרים" + }, + "biometricsNotEnabledDesc": { + "message": "בכדי להשתמש באמצעים ביומטרים בדפדפן יש לאפשר תכונה זו באפליקציה בשולחן העבודה." + }, + "biometricsNotSupportedTitle": { + "message": "אמצעי זיהוי ביומטרים לא נתמכים" + }, + "biometricsNotSupportedDesc": { + "message": "מכשיר זה לא תומך בזיהוי ביומטרי בדפדפן." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "הרשאה לא סופקה" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "ללא הרשאות לתקשר עם אפליקציית שולחן העבודה אין באפשרותנו לספק תמיכה באמצעים ביומטריים בדפדפן. אנא נסה שוב." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "personalOwnershipSubmitError": { + "message": "מדיניות הארגון מונעת ממך לשמור פריטים בכספת האישית. שנה את אפשרות הבעלות לארגוניות ובחר מתוך האוספים הזמינים." + }, + "personalOwnershipPolicyInEffect": { + "message": "מדיניות ארגונית משפיעה על אפשרויות הבעלות שלך." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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": "במידה ויוגדר, הגישה ל Send זה תושבת בתאריך ובשעה שהוגדרו.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "oneDay": { + "message": "יום אחד" + }, + "days": { + "message": "$DAYS$ ימים", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "מותאם אישית" + }, + "maximumAccessCount": { + "message": "כמות גישות מרבית" + }, + "maximumAccessCountDesc": { + "message": "במידה ויוגדר, משתמשים לא יוכלו יותר לגשת ל Send זה לאחר שמספר הגישות המרבי יושג.", + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ משתמשים ב־SSO עם שרת מפתחות באירוח עצמי. סיסמה ראשית לא נחוצה יותר לטובת כניסה לחברי הארגון.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "לעזוב את הארגון" + }, + "removeMasterPassword": { + "message": "הסרת סיסמה ראשית" + }, + "removedMasterPassword": { + "message": "הסיסמה הראשית הוסרה." + }, + "leaveOrganizationConfirmation": { + "message": "לעזוב את הארגון?" + }, + "leftOrganization": { + "message": "עזבת את הארגון." + }, + "toggleCharacterCount": { + "message": "החלפת מצב ספירת תווים" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "הכספת האישית מיוצאת" + }, + "exportingPersonalVaultDescription": { + "message": "רק פריטי הכספת האישית שמשויכת אל $EMAIL$ ייוצאו. פריטי הכספת הארגוניים לא יהיו חלק מהייצוא.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "שגיאה" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "סוג שם משתמש" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json new file mode 100644 index 0000000000..8e199cd48d --- /dev/null +++ b/apps/browser/src/_locales/hi/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "bitwarden is a secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "अपनी सुरक्षित तिजोरी में प्रवेश करने के लिए नया खाता बनाएं या लॉग इन करें।" + }, + "createAccount": { + "message": "Create Account" + }, + "login": { + "message": "Log In" + }, + "enterpriseSingleSignOn": { + "message": "उद्यम एकल साइन-ऑन" + }, + "cancel": { + "message": "रद्द करें" + }, + "close": { + "message": "बंद करें" + }, + "submit": { + "message": "जमा करें" + }, + "emailAddress": { + "message": "Email Address" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "मास्टर पासवर्ड वह पासवर्ड है जो तिजोरी में प्रवेश के लिए प्रयोग होता है। आप मास्टर पासवर्ड ना भूले, यह अतिआवश्यक है। भूलने की अवस्था में पासवर्ड को दोबारा पाना संभव नहीं होगा।" + }, + "masterPassHintDesc": { + "message": "मास्टर पासवर्ड संकेत आपको भूल जाने की अवस्था में पासवर्ड को याद करने में सहायता करता है।" + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "tab": { + "message": "टैब" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "उपकरण" + }, + "settings": { + "message": "सेटिंग्स" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "URI को कॉपी करें" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "Copy Security Code" + }, + "autoFill": { + "message": "स्वत:भरण" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "कोई मेल-मिला लॉगिन नहीं |" + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "इस ब्राउज़र टैब के लिए स्वत: भरण लॉगिन उपलब्ध नहीं है।" + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "अपने मास्टर पासवर्ड संकेत प्राप्त करने के लिए अपने खाते का ईमेल पता दर्ज करें।" + }, + "getMasterPasswordHint": { + "message": "मास्टर पासवर्ड संकेत प्राप्त करें" + }, + "continue": { + "message": "जारी रखें" + }, + "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." + }, + "account": { + "message": "खाता" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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": "आपके खाते का फिंगरप्रिंट वाक्यांश", + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "Log Out" + }, + "about": { + "message": "जानकारी" + }, + "version": { + "message": "संस्करण" + }, + "save": { + "message": "सेव करें" + }, + "move": { + "message": "ले जाएं" + }, + "addFolder": { + "message": "Add Folder" + }, + "name": { + "message": "नाम" + }, + "editFolder": { + "message": "Edit Folder" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "folders": { + "message": "फ़ोल्डर्स" + }, + "noFolders": { + "message": "सूचीबद्ध करने के लिए कोई फ़ोल्डर नहीं हैं।" + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "सिंक" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "उत्पन्न करें!", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "स्वचालित रूप से अपने लॉगिन के लिए मजबूत, अद्वितीय पासवर्ड उत्पन्न करते हैं।" + }, + "bitWebVault": { + "message": "bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "चयन करें" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "विकल्प" + }, + "length": { + "message": "लंबाई" + }, + "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": "कैपिटलाइज़ करें", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "नंबर शामिल करें" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "वॉल्ट खोजे" + }, + "edit": { + "message": "संपादन करें" + }, + "view": { + "message": "देखें" + }, + "noItemsInList": { + "message": "सूचीबद्ध करने के लिए कोई आइटम नहीं हैं।" + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "उपयोगकर्ता नाम" + }, + "password": { + "message": "पासवर्ड" + }, + "passphrase": { + "message": "पासफ़्रेज़" + }, + "favorite": { + "message": "Favorite" + }, + "notes": { + "message": "नोट्स" + }, + "note": { + "message": "नोट:" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "फ़ोल्डर" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "खोलें" + }, + "website": { + "message": "वेबसाइट" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "प्रबंधित करना" + }, + "other": { + "message": "अन्य" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "कृपया एक अच्छी समीक्षा के साथ हमारी मदत करने पर विचार करें!" + }, + "browserNotSupportClipboard": { + "message": "आपका वेब ब्राउज़र आसान क्लिपबोर्ड कॉपीिंग का समर्थन नहीं करता है। इसके बजाय इसे मैन्युअल रूप से कॉपी करें।" + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "yourVaultIsLocked": { + "message": "आपकी वॉल्ट लॉक हो गई है। जारी रखने के लिए अपने मास्टर पासवर्ड को सत्यापित करें।" + }, + "unlock": { + "message": "ताला खोलें" + }, + "loggedInAsOn": { + "message": "पर के रूप में लॉग इन किया ।", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "अमान्य मास्टर पासवर्ड" + }, + "vaultTimeout": { + "message": "वॉल्ट मध्यांतर" + }, + "lockNow": { + "message": "Lock Now" + }, + "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 घंटे" + }, + "onLocked": { + "message": "On Locked" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "कभी नहीं" + }, + "security": { + "message": "सुरक्षा" + }, + "errorOccurred": { + "message": "कोई ग़लती हुई।" + }, + "emailRequired": { + "message": "ई-मेल पते की आवश्यकता है।" + }, + "invalidEmail": { + "message": "अमान्य ई-मेल |" + }, + "masterPassRequired": { + "message": "मास्टर पासवर्ड की आवश्यकता है।" + }, + "masterPassLength": { + "message": "मास्टर पासवर्ड कम से कम 8 अक्षर लंबे होने चाहिए।" + }, + "masterPassDoesntMatch": { + "message": "मास्टर पासवर्ड पुष्टि मेल नहीं खाती है।" + }, + "newAccountCreated": { + "message": "आपका नया खाता बनाया गया है! अब आप लॉग इन कर सकते हैं।" + }, + "masterPassSent": { + "message": "हमने आपको अपने मास्टर पासवर्ड संकेत के साथ एक ईमेल भेजा है।" + }, + "verificationCodeRequired": { + "message": "सत्यापन टोकन आवश्यक है" + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": " copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected login on this page. Copy/paste your username and/or password instead." + }, + "loggedOut": { + "message": "लॉग आउट" + }, + "loginExpired": { + "message": "अपने लॉगिन सत्र समाप्त हो गया है।" + }, + "logOutConfirmation": { + "message": "क्या आप वाकई लॉग आउट करना चाहते हैं?" + }, + "yes": { + "message": "हाँ" + }, + "no": { + "message": "नहीं" + }, + "unexpectedError": { + "message": "An unexpected error has occured." + }, + "nameRequired": { + "message": "नाम आवश्यक है" + }, + "addedFolder": { + "message": "जोड़ा गया फ़ोल्डर" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "आप वेब वॉल्ट bitwarden.com पर अपना मास्टर पासवर्ड बदल सकते हैं।क्या आप अब वेबसाइट पर जाना चाहते हैं?" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to enter a security code from an authenticator app whenever you log in. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "editedFolder": { + "message": "Edited Folder" + }, + "deleteFolderConfirmation": { + "message": "क्या आप वाकई इस फ़ोल्डर को हटाना चाहते हैं?" + }, + "deletedFolder": { + "message": "हटाए गए फ़ोल्डर" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "ब्राउज़र एक्सटेंशन का सबसे अधिक जानने के लिए हमारे शुरू ट्यूटोरियल देखें।" + }, + "syncingComplete": { + "message": "सिंकिंग पूर्ण" + }, + "syncingFailed": { + "message": "सिंकिंग असफल।" + }, + "passwordCopied": { + "message": "कूटशब्द की नकल हुइ" + }, + "uri": { + "message": "यूआरआइ" + }, + "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" + }, + "addedItem": { + "message": "जोड़ा गया आइटम" + }, + "editedItem": { + "message": "संपादित आइटम " + }, + "deleteItemConfirmation": { + "message": "क्या आप वास्तव में थ्रैश में भेजना चाहते हैं?" + }, + "deletedItem": { + "message": "थ्रैश में भेजे" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "overwritePasswordConfirmation": { + "message": "क्या आप सुनिश्चित हैं कि आप वर्तमान पासवर्ड को ओवरराइट करना चाहते हैं?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "फोल्डर में खोजें" + }, + "searchCollection": { + "message": "श्रेणी खोजें" + }, + "searchType": { + "message": "तलाश की विधि" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Yes, Save Now" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "क्या आप बिटवर्डन में इस पासवर्ड को अपडेट करना चाहते हैं?" + }, + "notificationChangeSave": { + "message": "Yes, Update Now" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "संदर्भ मेनू विकल्प आपके वर्तमान टैब में वेबसाइट के लिए पासवर्ड जनरेशन और लॉगिन तक त्वरित पहुंच प्रदान करते हैं।" + }, + "defaultUriMatchDetection": { + "message": "डिफॉल्ट URI मैच डिटेक्शन", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "ऑटो-फिल जैसे कार्यों को करते समय लॉगिन के लिए URI मैच डिटेक्शन को संभाले जाने का डिफ़ॉल्ट तरीका चुनें। " + }, + "theme": { + "message": "थीम" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "अंधेरा", + "description": "Dark color" + }, + "light": { + "message": "प्रकाश", + "description": "Light color" + }, + "solarizedDark": { + "message": "सौरीकृत अंधेरा", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "चेतावनी", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "वॉल्ट निर्यात की पुष्टि करें" + }, + "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": "यह आपके खाते की एन्क्रिप्शन कुंजी का उपयोग करके आपके डेटा को एन्क्रिप्ट करता है।यदि आप कभी भी अपने खाते की एन्क्रिप्शन कुंजी को खोते हैं तो आपको फिर से निर्यात करना चाहिए क्योंकि आप इस निर्यात फ़ाइल को डिक्रिप्ट करने में सक्षम नहीं होंगे।" + }, + "encExportAccountWarningDesc": { + "message": "खाता एन्क्रिप्शन कुंजी प्रत्येक बिटवर्डन उपयोगकर्ता खाते के लिए अद्वितीय हैं, इसलिए आप एन्क्रिप्टेड निर्यात को किसी अन्य खाते में आयात नहीं कर सकते हैं।" + }, + "exportMasterPassword": { + "message": "अपने वॉल्ट डेटा को निर्यात करने के लिए अपना मास्टर पासवर्ड दर्ज करें।" + }, + "shared": { + "message": "साझा किया गया" + }, + "learnOrg": { + "message": "संगठनों के बारे में जानें" + }, + "learnOrgConfirmation": { + "message": "बिटवर्डन आपको एक संगठन का उपयोग करके अपनी तिजोरी वस्तुओं को दूसरों के साथ साझा करने की अनुमति देता है।क्या आप अधिक जानने के लिए bitwarden.com वेबसाइट पर जाना चाहेंगे?" + }, + "moveToOrganization": { + "message": "संगठन में ले जाएँ" + }, + "share": { + "message": "शेयर करें" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ $ORGNAME$ गया ", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "एक संगठन चुनें जिसे आप इस आइटम को स्थानांतरित करना चाहते हैं।किसी संगठन में जाने से उस संगठन को आइटम का स्वामित्व हस्तांतरित होता है।एक बार इसे स्थानांतरित करने के बाद आप अब इस आइटम के प्रत्यक्ष स्वामी नहीं होंगे।" + }, + "learnMore": { + "message": "अधिक जानें" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "अटॅचमेंट्स" + }, + "deleteAttachment": { + "message": "अटैचमेंट हटाएं" + }, + "deleteAttachmentConfirmation": { + "message": "क्या आप वाकई इस अटैचमेंट को हटाना चाहते हैं?" + }, + "deletedAttachment": { + "message": "हटाए गए अटैचमेंट" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "कोई अटैचमेंट नहीं।" + }, + "attachmentSaved": { + "message": "अटैचमेंट बच गया है।" + }, + "file": { + "message": "फ़ाइल" + }, + "selectFile": { + "message": "फ़ाइल का चयन करें।" + }, + "maxFileSize": { + "message": "अधिकतम फाइल आकार 500 MB है।" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "जब तक आप अपनी एन्क्रिप्शन कुंजी को अपडेट नहीं करते, तब तक आप इस सुविधा का उपयोग नहीं कर सकते हैं।" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "आप वेब वॉल्ट bitwarden.com पर अपनी सदस्यता का प्रबंधन कर सकते हैं।क्या आप अब वेबसाइट पर जाना चाहते हैं?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "आप वर्तमान में प्रीमियम सदस्य नहीं हैं।" + }, + "premiumSignUpAndGet": { + "message": "प्रीमियम सदस्यता के लिए साइन अप करें और प्राप्त करें:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB of encrypted file storage." + }, + "ppremiumSignUpTwoStep": { + "message": "अतिरिक्त दो-चरण लॉगिन विकल्प जैसे YubiKey, FIDO U2F, और डुओ।" + }, + "ppremiumSignUpReports": { + "message": "अपनी वॉल्ट को सुरक्षित रखने के लिए पासवर्ड स्वच्छता, खाता स्वास्थ्य और डेटा उल्लंघन रिपोर्ट।" + }, + "ppremiumSignUpTotp": { + "message": "अपनी तिजोरी में लॉगिन के लिए TOTP सत्यापन कोड (2FA) जनरेटर।" + }, + "ppremiumSignUpSupport": { + "message": "प्राथमिकता ग्राहक सहायता" + }, + "ppremiumSignUpFuture": { + "message": "भविष्य के सभी प्रीमियम फीचर्स। और जल्द ही आ रहा है!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "आप bitwarden.com वेब वॉल्ट पर प्रीमियम सदस्यता खरीद सकते हैं।क्या आप अब वेबसाइट पर जाना चाहते हैं?" + }, + "premiumCurrentMember": { + "message": "आप एक प्रीमियम सदस्य हैं!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting bitwarden." + }, + "premiumPrice": { + "message": "All for just %price% /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "ताज़ा पूरा" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "यदि आपके लॉगिन में एक प्रमाणक कुंजी जुड़ी हुई है, तो जब भी आप लॉगिन को ऑटो-फिल करते हैं तो TOTP सत्यापन कोड स्वचालित रूप से आपके क्लिपबोर्ड पर कॉपी किया जाता है।" + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "इस सुविधा का उपयोग करने के लिए प्रीमियम सदस्यता की आवश्यकता होती है।" + }, + "enterVerificationCodeApp": { + "message": "अपने ऑथेंटिकेटर ऐप से 6 डिजिट वेरिफिकेशन कोड डालें।" + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to", + "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": "अपने कंप्यूटर के यूएसबी पोर्ट में अपनी सुरक्षा कुंजी डालें। अगर इसमें कोई बटन है तो उसे टच करें।\n" + }, + "webAuthnNewTab": { + "message": "वेबऑथन 2FA सत्यापन शुरू करने के लिए। एक नया टैब खोलने के लिए नीचे दिए गए बटन पर क्लिक करें और नए टैब में दिए गए निर्देशों का पालन करें।" + }, + "webAuthnNewTabOpen": { + "message": "नया टैब खोलें" + }, + "webAuthnAuthenticate": { + "message": "वेबऑथन प्रमाणित करें" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "कृपया एक समर्थित वेब ब्राउज़र (जैसे क्रोम) और/या अतिरिक्त प्रदाताओं का उपयोग करें जो वेब ब्राउज़र (जैसे एक प्रमाणक ऐप) में बेहतर समर्थित हैं।" + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "recoveryCodeDesc": { + "message": "अपने दो कारक प्रदाताओं के सभी के लिए उपयोग खो दिया है? अपने खाते से सभी दो-कारक प्रदाताओं को अक्षम करने के लिए अपने रिकवरी कोड का उपयोग करें।" + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "समय-आधारित सत्यापन कोड उत्पन्न करने के लिए एक प्रमाणक ऐप (जैसे Authy या Google Authenticator) का उपयोग करें।", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "अपने खाते तक पहुंचने के लिए YubiKey का उपयोग करें। YubiKey 4, 4 नैनो, 4C, और NEO उपकरणों के साथ काम करता है।" + }, + "duoDesc": { + "message": "डुओ मोबाइल ऐप, एसएमएस, फोन कॉल या 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 वेबऑथन" + }, + "webAuthnDesc": { + "message": "अपने खाते तक पहुंचने के लिए किसी भी WebAuthn सक्षम सुरक्षा कुंजी का उपयोग करें।" + }, + "emailTitle": { + "message": "ईमेल" + }, + "emailDesc": { + "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": "उन्नत उपयोगकर्ताओं के लिए। आप स्वतंत्र रूप से प्रत्येक सेवा का आधार URL निर्दिष्ट कर सकते हैं।" + }, + "baseUrl": { + "message": "सर्वर 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": "पर्यावरण URL को बचाया गया है।" + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill On Page Load." + }, + "enableAutoFillOnPageLoadDesc": { + "message": "यदि लॉगिन फॉर्म का पता चलता है, तो वेब पेज लोड होने पर स्वचालित रूप से ऑटो-फिल करें।" + }, + "experimentalFeature": { + "message": "यह वर्तमान में एक प्रयोगात्मक विशेषता है। अपने जोखिम पर उपयोग करें।" + }, + "defaultAutoFillOnPageLoad": { + "message": "लॉगिन आइटम के लिए डिफ़ॉल्ट ऑटोफिल सेटिंग" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "पेज लोड पर ऑटो-फिल को सक्षम करने के बाद, आप व्यक्तिगत लॉगिन आइटम के लिए सुविधा को सक्षम या अक्षम कर सकते हैं।यह लॉगिन आइटम के लिए डिफ़ॉल्ट सेटिंग है जो अलग से कॉन्फ़िगर नहीं हैं।" + }, + "itemAutoFillOnPageLoad": { + "message": "पेज लोड पर ऑटो-भरें (यदि विकल्पों में सक्षम हैं)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "डिफ़ॉल्ट सेटिंग का उपयोग करें" + }, + "autoFillOnPageLoadYes": { + "message": "पेज लोड पर ऑटो भरें" + }, + "autoFillOnPageLoadNo": { + "message": "पेज लोड पर ऑटो-फिल न करें" + }, + "commandOpenPopup": { + "message": "ओपन वॉल्ट पॉपअप" + }, + "commandOpenSidebar": { + "message": "साइडबार में वॉल्ट खोले" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website." + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard." + }, + "commandLockVaultDesc": { + "message": "वॉल्ट लॉक करें" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "मूल्य" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "dragToSort": { + "message": "सॉर्ट करने के लिए ड्रैग करें" + }, + "cfTypeText": { + "message": "शब्द" + }, + "cfTypeHidden": { + "message": "छुपा हुआ" + }, + "cfTypeBoolean": { + "message": "बूलियन" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "अपने सत्यापन कोड के लिए अपने ईमेल की जांच करने के लिए पॉपअप विंडो के बाहर क्लिक करने से यह पॉपअप बंद हो जाएगा।क्या आप इस पॉपअप को एक नई विंडो में खोलना चाहते हैं ताकि यह बंद न हो?" + }, + "popupU2fCloseMessage": { + "message": "यह ब्राउज़र इस पॉपअप विंडो में U2F अनुरोधों को संसाधित नहीं कर सकता है।क्या आप इस पॉपअप को एक नई विंडो में खोलना चाहते हैं ताकि आप U2F का उपयोग करके लॉग इन कर सकें?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provides a recognizable icon next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "बैज काउंटर को अक्षम कर दो" + }, + "disableBadgeCounterDesc": { + "message": "बैज काउंटर निर्देश करता है कि आपके वॉल्ट में वर्तमान पृष्ठ के लिए आपके पास कितने लॉगिन हैं।" + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "संख्या" + }, + "brand": { + "message": "ब्रांड" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "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": "दिसंबर" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "शीर्षक" + }, + "mr": { + "message": "श्री" + }, + "mrs": { + "message": "श्रीमती" + }, + "ms": { + "message": "श्रीमती" + }, + "dr": { + "message": "डॉ" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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": "पता" + }, + "address1": { + "message": "पता 1" + }, + "address2": { + "message": "पता 2" + }, + "address3": { + "message": "पता 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "देश" + }, + "type": { + "message": "प्रकार" + }, + "typeLogin": { + "message": "लॉग इन" + }, + "typeLogins": { + "message": "लॉग इन" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "कार्ड" + }, + "typeIdentity": { + "message": "पहचान" + }, + "passwordHistory": { + "message": "पासवर्ड इतिहास" + }, + "back": { + "message": "वापस जाएं" + }, + "collections": { + "message": "संग्रह" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "एक नई विंडो के लिए पॉप आउट करें" + }, + "refresh": { + "message": "रीफ्रेश करें" + }, + "cards": { + "message": "कार्ड्स" + }, + "identities": { + "message": "पहचान" + }, + "logins": { + "message": "लॉग इन" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "खाली करें", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "चेक करें कि पासवर्ड सामने आ गया है या नहीं।" + }, + "passwordExposed": { + "message": "This password has been exposed in data breaches. You should change it.", + "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": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "डिफॉल्ट मैच डिटेक्शन", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "toggleCurrentUris": { + "message": "वर्तमान URI's को टॉगल करें", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "वर्तमान URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "प्रकार" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "सूची के लिए कोई पासवर्ड नहीं हैं।" + }, + "remove": { + "message": "हटाएं" + }, + "default": { + "message": "डिफॉल्ट" + }, + "dateUpdated": { + "message": "अपडेट किया गया", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "क्या आप सुनिश्चित हैं कि आप \"कभी नहीं\" विकल्प का उपयोग करना चाहते हैं?\"कभी नहीं\" के लिए अपने लॉक विकल्प को सेट करना आपके डिवाइस पर आपकी वॉल्ट की एन्क्रिप्शन कुंजी को स्टोर करता है। यदि आप इस विकल्प का उपयोग करते हैं तो आपको यह सुनिश्चित करना चाहिए कि आप अपने डिवाइस को ठीक से सुरक्षित रखें।" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "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": "Weak Master Password" + }, + "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": "अमान्य पिन कोड।" + }, + "unlockWithBiometrics": { + "message": "बायोमेट्रिक्स का उपयोग कर अनलॉक करें" + }, + "awaitDesktop": { + "message": "डेस्कटॉप से पुष्टि का इंतजार" + }, + "awaitDesktopDesc": { + "message": "ब्राउज़र के लिए बॉयोमीट्रिक्स सक्षम करने के लिए Bitwarden डेस्कटॉप आवेदन में बॉयोमीट्रिक्स का उपयोग कर पुष्टि करें।" + }, + "lockWithMasterPassOnRestart": { + "message": "ब्राउज़र पुनः आरंभ करने पर मास्टर पासवर्ड के साथ लॉक करें" + }, + "selectOneCollection": { + "message": "आपको कम से कम एक संग्रह का चयन करना होगा।" + }, + "cloneItem": { + "message": "क्लोन आइटम" + }, + "clone": { + "message": "क्लोन" + }, + "passwordGeneratorPolicyInEffect": { + "message": "एक या एक से अधिक संगठन नीतियां आपकी जनरेटर सेटिंग को प्रभावित कर रही हैं।" + }, + "vaultTimeoutAction": { + "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": "बहाल आइटम" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "लॉग आउट करने से वॉल्टमें प्रवेश संभव नहीं होगा और समय समाप्त होने के बाद ऑनलाइन प्रमाणीकरण की आश्यकता होगी। आप इस सेटिंग्स को प्रयोग करने के लिए विश्वस्त हैं?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "मध्यांतर कार्रवाई की पुष्टि" + }, + "autoFillAndSave": { + "message": "ऑटो फिल और सेव" + }, + "autoFillSuccessAndSavedUri": { + "message": "ऑटो फिल आइटम और सेव URI" + }, + "autoFillSuccess": { + "message": "ऑटो फिल आइटम" + }, + "setMasterPassword": { + "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": "सेवा और गोपनीयता नीति की शर्तों को स्वीकार नहीं किया गया है ।" + }, + "termsOfService": { + "message": "सेवा की शर्तें" + }, + "privacyPolicy": { + "message": "प्राइवेसी पोलिसी" + }, + "hintEqualsPassword": { + "message": "आपका पासवर्ड संकेत आपके पासवर्ड के समान नहीं हो सकता है।" + }, + "ok": { + "message": "ठीक है" + }, + "desktopSyncVerificationTitle": { + "message": "डेस्कटॉप सिंक सत्यापन" + }, + "desktopIntegrationVerificationText": { + "message": "कृपया सत्यापित करें कि डेस्कटॉप एप्लिकेशन इस फिंगरप्रिंट को दिखाता है:" + }, + "desktopIntegrationDisabledTitle": { + "message": "ब्राउज़र एकीकरण सक्षम नहीं है" + }, + "desktopIntegrationDisabledDesc": { + "message": "ब्राउज़र एकीकरण बिटवर्डन डेस्कटॉप एप्लिकेशन में सक्षम नहीं है।कृपया इसे डेस्कटॉप एप्लिकेशन के भीतर सेटिंग्स में सक्षम करें।" + }, + "startDesktopTitle": { + "message": "बिटवर्डन डेस्कटॉप एप्लिकेशन शुरू करें" + }, + "startDesktopDesc": { + "message": "इस फ़ंक्शन का उपयोग करने से पहले बिटवर्डन डेस्कटॉप एप्लिकेशन को शुरू करने की आवश्यकता है।" + }, + "errorEnableBiometricTitle": { + "message": "बॉयोमीट्रिक्स सक्षम करने में असमर्थ" + }, + "errorEnableBiometricDesc": { + "message": "डेस्कटॉप एप्लिकेशन द्वारा कार्रवाई रद्द कर दी गई थी" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "डेस्कटॉप एप्लिकेशन ने सुरक्षित संचार चैनल को अमान्य कर दिया। कृपया इस ऑपरेशन को फिर से प्रयास करें" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "डेस्कटॉप संचार बाधित" + }, + "nativeMessagingWrongUserDesc": { + "message": "डेस्कटॉप एप्लिकेशन को एक अलग खाते में लॉग इन किया जाता है। कृपया सुनिश्चित करें कि दोनों आवेदन एक ही खाते में लॉग इन किए गए हैं।" + }, + "nativeMessagingWrongUserTitle": { + "message": "खाता गलत मैच" + }, + "biometricsNotEnabledTitle": { + "message": "बॉयोमीट्रिक्स सक्षम नहीं है" + }, + "biometricsNotEnabledDesc": { + "message": "ब्राउज़र बॉयोमीट्रिक्स पहले सेटिंग्स में सक्षम होने के लिए डेस्कटॉप बॉयोमीट्रिक की आवश्यकता है ।" + }, + "biometricsNotSupportedTitle": { + "message": "बॉयोमीट्रिक्स सक्षम नहीं है" + }, + "biometricsNotSupportedDesc": { + "message": "ब्राउज़र बॉयोमीट्रिक्स इस डिवाइस पर समर्थित नहीं है।" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "अनुमति नहीं दी गयी है" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "बिटवर्डन डेस्कटॉप एप्लिकेशन के साथ संवाद करने की अनुमति के बिना हम ब्राउज़र एक्सटेंशन में बॉयोमीट्रिक्स प्रदान नहीं कर सकते हैं।कृपया फिर से प्रयास करें।" + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "अनुमति अनुरोध त्रुटि" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "यह क्रिया साइडबार में नहीं की जा सकती है, कृपया पॉपअप या पॉपआउट में कार्रवाई का फिर से प्रयास करें।" + }, + "personalOwnershipSubmitError": { + "message": "एंटरप्राइज पॉलिसी के कारण, आप अपनी व्यक्तिगत वॉल्ट में वस्तुओं को सहेजने से प्रतिबंधित हैं।किसी संगठन के स्वामित्व विकल्प को बदलें और उपलब्ध संग्रहों में से चुनें।" + }, + "personalOwnershipPolicyInEffect": { + "message": "एक संगठन नीति आपके स्वामित्व विकल्पों को प्रभावित कर रही है।" + }, + "excludedDomains": { + "message": "बहिष्कृत डोमेन" + }, + "excludedDomainsDesc": { + "message": "बिटवर्डन इन डोमेन के लिए लॉगिन विवरण सहेजने के लिए नहीं कहेगा।परिवर्तनों को प्रभावी बनाने के लिए आपको पृष्ठ को ताज़ा करना होगा |" + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN $ एक वैध डोमेन नहीं है", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "भेजें", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Sends मे खोजे", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Send जोड़ें", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "शब्द" + }, + "sendTypeFile": { + "message": "फ़ाइल" + }, + "allSends": { + "message": "सभी Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "मैक्स एक्सेस काउंट पहुंच गया है", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": " गतावधिक" + }, + "pendingDeletion": { + "message": "हटाना लंबित" + }, + "passwordProtected": { + "message": "पासवर्ड सुरक्षित है" + }, + "copySendLink": { + "message": "कॉपी Send लिंक", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "पासवर्ड हटाएं" + }, + "delete": { + "message": "हटाएं" + }, + "removedPassword": { + "message": "पासवर्ड हटाएं" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "अक्षम" + }, + "removePasswordConfirmation": { + "message": "क्या आप सयमुच पासवर्ड हटाना चाहते हैं?" + }, + "deleteSend": { + "message": " Send हटाए", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "यह किस प्रकार का सेंड है?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "इस सेंड का वर्णन करने के लिए एक दोस्ताना नाम।", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 दिन" + }, + "days": { + "message": "#DAYS# दिन", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "कस्टम" + }, + "maximumAccessCount": { + "message": "अधिकतम एक्सेस काउंट" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "इस सेंड को अक्षम करें ताकि कोई भी इसे एक्सेस न कर सके।", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "सेव पर क्लिपबोर्ड पर इस सेंड के लिंक को कॉपी करें।", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "वह टेक्स्ट जो आप सेंड करना चाहते हैं।" + }, + "sendHideText": { + "message": "इस सेंड के टेक्स्ट को डिफ़ॉल्ट रूप से छिपाएं।", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "वर्तमान एक्सेस काउंट" + }, + "createSend": { + "message": "नया सेंड बनाएं", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "फ़ाइल चुनने के लिए, साइडबार (यदि संभव हो) में एक्सटेंशन खोलें या इस बैनर पर क्लिक करके एक नई विंडो को पॉप आउट करें।" + }, + "sendFirefoxFileWarning": { + "message": "फ़ायरफ़ॉक्स का उपयोग करके फ़ाइल चुनने के लिए, साइडबार में एक्सटेंशन खोलें या इस बैनर पर क्लिक करके एक नई विंडो को पॉप आउट करें।" + }, + "sendSafariFileWarning": { + "message": "सफारी का उपयोग करके फ़ाइल चुनने के लिए, इस बैनर पर क्लिक करके एक नई विंडो को पॉप आउट करें।" + }, + "sendFileCalloutHeader": { + "message": "शुरू करने से पहले" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "कैलेंडर शैली तिथि बीनने वाले का उपयोग करने के लिए", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "यहां क्लिक करें", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "अपनी विंडो पॉप आउट करने के लिए यहां क्लिक करें।", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "प्रदान की गई समाप्ति तिथि मान्य नहीं है।" + }, + "deletionDateIsInvalid": { + "message": "प्रदान की गई विलोपन तिथि मान्य नहीं है।" + }, + "expirationDateAndTimeRequired": { + "message": "एक समाप्ति तिथि और समय की आवश्यकता है।" + }, + "deletionDateAndTimeRequired": { + "message": "एक विलोपन तिथि और समय की आवश्यकता है।" + }, + "dateParsingError": { + "message": "आपके विलोपन और समाप्ति तिथियों को सहेजने में एक त्रुटि थी।" + }, + "hideEmail": { + "message": "प्राप्तकर्ताओं से मेरा ईमेल पता छिपाएं।" + }, + "sendOptionsPolicyInEffect": { + "message": "एक या एक से अधिक संगठन नीतियां आपके सेंड विकल्पों को प्रभावित कर रही हैं।" + }, + "passwordPrompt": { + "message": "मास्टर पासवर्ड रि-प्रॉम्प्ट" + }, + "passwordConfirmation": { + "message": "मास्टर पासवर्ड पुष्टि" + }, + "passwordConfirmationDesc": { + "message": "यह क्रिया सुरक्षित है। जारी रखने के लिए, कृपया अपनी पहचान सत्यापित करने के लिए अपना मास्टर पासवर्ड फिर से दर्ज करें।" + }, + "emailVerificationRequired": { + "message": "ईमेल सत्यापन आवश्यक है" + }, + "emailVerificationRequiredDesc": { + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json new file mode 100644 index 0000000000..ddc72e26aa --- /dev/null +++ b/apps/browser/src/_locales/hr/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - besplatni upravitelj lozinki", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden je siguran i besplatan upravitelj lozinki za sve tvoje uređaje.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Prijavi se ili stvori novi račun za pristup svojem sigurnom trezoru." + }, + "createAccount": { + "message": "Stvori račun" + }, + "login": { + "message": "Prijava" + }, + "enterpriseSingleSignOn": { + "message": "Jedinstvena prijava na razini tvrtke (SSO)" + }, + "cancel": { + "message": "Odustani" + }, + "close": { + "message": "Zatvori" + }, + "submit": { + "message": "Pošalji" + }, + "emailAddress": { + "message": "Adresa e-pošte" + }, + "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)" + }, + "tab": { + "message": "Kartica" + }, + "myVault": { + "message": "Moj trezor" + }, + "tools": { + "message": "Alati" + }, + "settings": { + "message": "Postavke" + }, + "currentTab": { + "message": "Trenutna kartica" + }, + "copyPassword": { + "message": "Kopiraj lozinku" + }, + "copyNote": { + "message": "Kopiraj bilješku" + }, + "copyUri": { + "message": "Kopiraj URI" + }, + "copyUsername": { + "message": "Kopiraj korisničko ime" + }, + "copyNumber": { + "message": "Kopiraj broj" + }, + "copySecurityCode": { + "message": "Kopiraj kontrolni broj" + }, + "autoFill": { + "message": "Auto-ispuna" + }, + "generatePasswordCopied": { + "message": "Generiraj lozinku (i kopiraj)" + }, + "copyElementIdentifier": { + "message": "Kopiranje prilagođenog naziva polja" + }, + "noMatchingLogins": { + "message": "Nema podudarajućih prijava." + }, + "unlockVaultMenu": { + "message": "Otključaj trezor" + }, + "loginToVaultMenu": { + "message": "Prijavite se u svoj trezor" + }, + "autoFillInfo": { + "message": "Nema dostupnih prijava za auto-ispunu na web stranici u ovoj kartici." + }, + "addLogin": { + "message": "Dodaj prijavu" + }, + "addItem": { + "message": "Dodaj stavku" + }, + "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" + }, + "continue": { + "message": "Nastavi" + }, + "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." + }, + "account": { + "message": "Račun" + }, + "changeMasterPassword": { + "message": "Promjeni glavnu lozinku" + }, + "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." + }, + "twoStepLogin": { + "message": "Prijava u dva koraka" + }, + "logOut": { + "message": "Odjavi se" + }, + "about": { + "message": "O aplikaciji" + }, + "version": { + "message": "Verzija" + }, + "save": { + "message": "Spremi" + }, + "move": { + "message": "Premjesti" + }, + "addFolder": { + "message": "Dodaj mapu" + }, + "name": { + "message": "Naziv" + }, + "editFolder": { + "message": "Uredi mapu" + }, + "deleteFolder": { + "message": "Izbriši mapu" + }, + "folders": { + "message": "Mape" + }, + "noFolders": { + "message": "Nema mapa na popisu." + }, + "helpFeedback": { + "message": "Pomoć i povratne informacije" + }, + "sync": { + "message": "Sinkronizacija" + }, + "syncVaultNow": { + "message": "Odmah sinkroniziraj trezor" + }, + "lastSync": { + "message": "Posljednja sinkronizacija:" + }, + "passGen": { + "message": "Generator lozinki" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatski generiraj jake, jedinstvene lozinke." + }, + "bitWebVault": { + "message": "Bitwarden Web trezor" + }, + "importItems": { + "message": "Uvoz stavki" + }, + "select": { + "message": "Odaberi" + }, + "generatePassword": { + "message": "Generiraj lozinku" + }, + "regeneratePassword": { + "message": "Ponovno generiraj lozinku" + }, + "options": { + "message": "Opcije" + }, + "length": { + "message": "Duljina" + }, + "uppercase": { + "message": "Velika slova (A-Z)" + }, + "lowercase": { + "message": "Mala slova (a-z)" + }, + "numbers": { + "message": "Brojevi (0-9)" + }, + "specialCharacters": { + "message": "Posebni znakovi (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Najmanje brojeva" + }, + "minSpecial": { + "message": "Najmanje specijalnih" + }, + "avoidAmbChar": { + "message": "Izbjegavaj dvosmislene znakove" + }, + "searchVault": { + "message": "Pretraži trezor" + }, + "edit": { + "message": "Uredi" + }, + "view": { + "message": "Prikaz" + }, + "noItemsInList": { + "message": "Nema stavki za prikaz." + }, + "itemInformation": { + "message": "Informacije o stavci" + }, + "username": { + "message": "Korisničko ime" + }, + "password": { + "message": "Lozinka" + }, + "passphrase": { + "message": "Frazna lozinka" + }, + "favorite": { + "message": "Favorit" + }, + "notes": { + "message": "Bilješke" + }, + "note": { + "message": "Bilješka" + }, + "editItem": { + "message": "Uredi stavku" + }, + "folder": { + "message": "Mapa" + }, + "deleteItem": { + "message": "Izbriši stavku" + }, + "viewItem": { + "message": "Prikaz stavke" + }, + "launch": { + "message": "Pokreni" + }, + "website": { + "message": "Web stranica" + }, + "toggleVisibility": { + "message": "Prikaži/Sakrij" + }, + "manage": { + "message": "Upravljanje" + }, + "other": { + "message": "Ostalo" + }, + "rateExtension": { + "message": "Ocijeni proširenje" + }, + "rateExtensionDesc": { + "message": "Razmotri da nam pomogneš dobrom recenzijom!" + }, + "browserNotSupportClipboard": { + "message": "Web preglednik ne podržava jednostavno kopiranje međuspremnika. Umjesto toga ručno kopirajte." + }, + "verifyIdentity": { + "message": "Potvrdi identitet" + }, + "yourVaultIsLocked": { + "message": "Tvoj trezor je zaključan. Potvrdi glavnu lozinku za nastavak." + }, + "unlock": { + "message": "Otključaj" + }, + "loggedInAsOn": { + "message": "Korisnički račun: $EMAIL$ na $HOSTNAME$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Neispravna glavna lozinka" + }, + "vaultTimeout": { + "message": "Istek trezora" + }, + "lockNow": { + "message": "Zaključaj sada" + }, + "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" + }, + "onLocked": { + "message": "Pri zaključavanju sustava" + }, + "onRestart": { + "message": "Pri pokretanju preglednika" + }, + "never": { + "message": "Nikad" + }, + "security": { + "message": "Sigurnost" + }, + "errorOccurred": { + "message": "Došlo je do pogreške" + }, + "emailRequired": { + "message": "Adresa e-pošte je obavezna." + }, + "invalidEmail": { + "message": "Neispravna 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." + }, + "verificationCodeRequired": { + "message": "Potvrdni kôd je obavezan." + }, + "invalidVerificationCode": { + "message": "Nevažeći kôd za provjeru" + }, + "valueCopied": { + "message": " kopirano", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Nije moguće auto-ispuniti odabranu prijavu na ovoj stranici. Umjesto toga kopiraj/zalijepi podatke." + }, + "loggedOut": { + "message": "Odjavljen" + }, + "loginExpired": { + "message": "Sesija je istekla." + }, + "logOutConfirmation": { + "message": "Sigurno se želiš odjaviti?" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "unexpectedError": { + "message": "Došlo je do neočekivane pogreške." + }, + "nameRequired": { + "message": "Ime je obavezno." + }, + "addedFolder": { + "message": "Mapa dodana" + }, + "changeMasterPass": { + "message": "Promjeni glavnu lozinku" + }, + "changeMasterPasswordConfirmation": { + "message": "Svoju glavnu lozinku možeš promijeniti na web trezoru. Želiš li sada posjetiti bitwarden.com?" + }, + "twoStepLoginConfirmation": { + "message": "Prijava u dva koraka čini tvoj račun još sigurnijim tako što će zahtijevati da potvrdiš prijavu putem drugog uređaja kao što je sigurnosni ključ, autentifikatorske aplikacije, SMS-om, pozivom ili e-poštom. Prijavu u dva koraka možeš omogućiti na web trezoru. Želiš li sada posjetiti bitwarden.com?" + }, + "editedFolder": { + "message": "Uređena mapa" + }, + "deleteFolderConfirmation": { + "message": "Sigurno želiš izbrisati ovu mapu?" + }, + "deletedFolder": { + "message": "Mapa izbrisana" + }, + "gettingStartedTutorial": { + "message": "Priručnik za početak rada" + }, + "gettingStartedTutorialVideo": { + "message": "Pogledaj naš početni vodič za savjete kako najbolje iskoristiti proširenje preglednika." + }, + "syncingComplete": { + "message": "Sinkronizacija dovršena" + }, + "syncingFailed": { + "message": "Sinkronizacija nije uspjela" + }, + "passwordCopied": { + "message": "Lozinka kopirana" + }, + "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" + }, + "addedItem": { + "message": "Stavka dodana" + }, + "editedItem": { + "message": "Stavka izmijenjena" + }, + "deleteItemConfirmation": { + "message": "Želiš li zaista poslati u smeće?" + }, + "deletedItem": { + "message": "Stavka poslana u smeće" + }, + "overwritePassword": { + "message": "Prebriši lozinku" + }, + "overwritePasswordConfirmation": { + "message": "Sigurno želiš prebrisati trenutnu lozinku?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "Mapa pretraživanja" + }, + "searchCollection": { + "message": "Pretraživanje zbirke" + }, + "searchType": { + "message": "Tip pretrage" + }, + "noneFolder": { + "message": "Nema mape", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Onemogući upit za dodavanje prijave" + }, + "addLoginNotificationDesc": { + "message": "Upit za dodavanje prijave pojavljuje se kada se otkrije prva prijava na neko web mjesto. Bitwarden će te pitatati želiš li uneseno korisničko ime i lozinku spremiti u svoj trezor." + }, + "dontShowCardsCurrentTab": { + "message": "Ne prikazuj platne kartice" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Ne prikazuje Platne kartice iz tvog trezora prilikom prikaza stavki dostupnih za jednostavnu auto-ispunu." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Ne prikazuj Identitete" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Ne prikazuje Identitete iz tvog trezora prilikom prikaza stavki dostupnih za jednostavnu auto-ispunu." + }, + "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." + }, + "notificationAddDesc": { + "message": "Treba li Bitwarden zapamtiti ovu lozinku?" + }, + "notificationAddSave": { + "message": "Spremi" + }, + "disableChangedPasswordNotification": { + "message": "Onemogući upit za spremanje ažurirane lozinke" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Upit za spremanje ažurirane lozinke pojavljuje se kada se otkrije da je na nekoj web stranici unesena lozinka drugačija od one spremljene u trezoru. Bitwarden će te pitatati želiš li ažurirati lozinku u trezoru." + }, + "notificationChangeDesc": { + "message": "Želiš li ovu lozinku ažurirati u Bitwarden-u?" + }, + "notificationChangeSave": { + "message": "Ažuriraj" + }, + "disableContextMenuItem": { + "message": "Onemogući kontekstualni izbornik u pregledniku" + }, + "disableContextMenuItemDesc": { + "message": "Kontekstualni izbornik omogućuje brzi pristup korisničkim imenima i lozinkama, kao i generiranje i kopiranje generirane lozinke jednim klikom." + }, + "defaultUriMatchDetection": { + "message": "Zadano otkrivanje URI podudaranja", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Odaberi zadani način na koji će se riješavati otkrivanje URI-ja za prijavu pri izvođenju radnji kao što je auto-ispuna." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Promijeni temu boja." + }, + "dark": { + "message": "Tamna", + "description": "Dark color" + }, + "light": { + "message": "Svijetla", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarizirana Tamna", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Unesi glavnu lozinku za izvoz podataka iz trezora." + }, + "shared": { + "message": "Dijeljeno" + }, + "learnOrg": { + "message": "Više o organizacijama" + }, + "learnOrgConfirmation": { + "message": "Bitwarden omogućuje dijeljenje trezora s drugima pomoću organizacijskog računa. Želiš li sada posjetiti bitwarden.com za više informacija?" + }, + "moveToOrganization": { + "message": "Premjesti u organizaciju" + }, + "share": { + "message": "Podijeli" + }, + "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." + }, + "learnMore": { + "message": "Saznaj više" + }, + "authenticatorKeyTotp": { + "message": "Ključ autentifikatora (TOTP)" + }, + "verificationCodeTotp": { + "message": "Kôd za provjeru (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiraj kôd za provjeru" + }, + "attachments": { + "message": "Privitci" + }, + "deleteAttachment": { + "message": "Izbriši privitak" + }, + "deleteAttachmentConfirmation": { + "message": "Sigurno želiš izbrisati ovaj privitak?" + }, + "deletedAttachment": { + "message": "Izbrisani privitak" + }, + "newAttachment": { + "message": "Dodaj novi privitak" + }, + "noAttachments": { + "message": "Nema privitaka." + }, + "attachmentSaved": { + "message": "Privitak je spremljen." + }, + "file": { + "message": "Datoteka" + }, + "selectFile": { + "message": "Odaberi datoteku." + }, + "maxFileSize": { + "message": "Najveća veličina datoteke je 500 MB." + }, + "featureUnavailable": { + "message": "Značajka nije dostupna" + }, + "updateKey": { + "message": "Ne možeš koristiti ovu značajku prije nego ažuriraš ključ za šifriranje." + }, + "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š:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB šifriranog prostora za pohranu podataka." + }, + "ppremiumSignUpTwoStep": { + "message": "Dodatne mogućnosti za prijavu u dva koraka kao što su YubiKey, FIDO U2F i Duo." + }, + "ppremiumSignUpReports": { + "message": "Higijenu lozinki, zdravlje računa i izvještaje o krađi podatak radi zaštite svojeg trezora." + }, + "ppremiumSignUpTotp": { + "message": "Generator TOTP kontrolnog koda (2FA) za prijave u tvom trezoru." + }, + "ppremiumSignUpSupport": { + "message": "Prioritetnu korisničku podršku." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Onemogući automatsko kopiranje TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Ako se za prijavu koristi dvostruka autentifikacija, TOTP kontrolni kôd se automatski kopira u međuspremnik nakon auto-ispune korisničkog imena i lozinke." + }, + "disableAutoBiometricsPrompt": { + "message": "Ne traži biometriju pri pokretanju" + }, + "premiumRequired": { + "message": "Potrebno premium članstvo" + }, + "premiumRequiredDesc": { + "message": "Za korištenje ove značajke potrebno je premium članstvo." + }, + "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." + }, + "webAuthnNewTab": { + "message": "Nastavi na WebAuthn 2FA verifikaciju u novoj kartici." + }, + "webAuthnNewTabOpen": { + "message": "Otvori novu karticu" + }, + "webAuthnAuthenticate": { + "message": "Ovjeri WebAuthn" + }, + "loginUnavailable": { + "message": "Prijava nije dostupna" + }, + "noTwoStepProviders": { + "message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja prijave u dva koraka." + }, + "noTwoStepProviders2": { + "message": "Koristi podržani web-preglednik (npr. Chrome) i/ili dodaj dodatne usluge koje su bolje podržane u web preglednicima (npr. aplikacija Autentifikator)." + }, + "twoStepOptions": { + "message": "Mogućnosti prijave u dva koraka" + }, + "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 WebAuthn sigurnosni ključ za pristup svojem računu." + }, + "emailTitle": { + "message": "E-pošta" + }, + "emailDesc": { + "message": "Verifikacijski kodovi će biti poslani e-poštom." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Omogući auto-ispunu nakon učitavanja stranice" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Ako se otkrije obrazac za prijavu, samostalno auto-ispuni kada se web stranica učita." + }, + "experimentalFeature": { + "message": "Ovo je trenutno eksperimentalna značajka. Koristi na vlastitu odgovornost." + }, + "defaultAutoFillOnPageLoad": { + "message": "Zadana postvaka Auto-ispune za prijave" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Nakon omogućavanja Auto-ispune kod učitavanja stranice, moguće je uključiti/isključiti ovu značajku za svaku pojedinu prijavu. Ovo je zadana postavka za prijave koje nisu pojedinčano određene." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-ispuna kod učitavanja stranice (ako je uključeno u Postavkama)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Koristi zadane postavke" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-ispuna kod učitavanja" + }, + "autoFillOnPageLoadNo": { + "message": "Ne koristi Auto-ispunu kod učitavanja" + }, + "commandOpenPopup": { + "message": "Otvori iskočni prozor trezora" + }, + "commandOpenSidebar": { + "message": "Otvori trezor u bočnoj traci" + }, + "commandAutofillDesc": { + "message": "Auto-ispuni zadnju korištenu prijavu za trenutnu web stranicu." + }, + "commandGeneratePasswordDesc": { + "message": "Generiraj i kopiraj novu nasumičnu lozinku u međuspremnik." + }, + "commandLockVaultDesc": { + "message": "Zaključaj trezor" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Prilagođena polja" + }, + "copyValue": { + "message": "Kopiraj vrijednost" + }, + "value": { + "message": "Vrijednost" + }, + "newCustomField": { + "message": "Novo prilagođeno polje" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Povezana vrijednost", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Ako klikneš izvan iskočnog prozora, za provjeru kontrolnog kôda iz e-pošte, on će se zatvoriti. Želiš li ovaj iskočni prozor otvoriti u novom prozoru kako se ne bi zatvorio?" + }, + "popupU2fCloseMessage": { + "message": "Ovaj preglednik ne može obraditi U2F zahtjeve u ovom iskočnom prozoru. Želiš li otvoriti ovaj iskočni prozor u novom prozoru za prijavu putem U2F?" + }, + "disableFavicon": { + "message": "Onemogući ikone web mjesta" + }, + "disableFaviconDesc": { + "message": "Prepoznatljive ikone web mjesta prikazuju se pored prijava u tvom trezoru." + }, + "disableBadgeCounter": { + "message": "Onemogući brojač znački" + }, + "disableBadgeCounterDesc": { + "message": "Brojač znački prikazuje koliko u tvojem trezoru ima spremljenih prijava za trenutnu stranicu." + }, + "cardholderName": { + "message": "Vlasnik kartice" + }, + "number": { + "message": "Broj" + }, + "brand": { + "message": "Vrsta kartice" + }, + "expirationMonth": { + "message": "Mjesec isteka" + }, + "expirationYear": { + "message": "Godina isteka" + }, + "expiration": { + "message": "Istek" + }, + "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" + }, + "securityCode": { + "message": "Kontrolni broj" + }, + "ex": { + "message": "npr." + }, + "title": { + "message": "Titula" + }, + "mr": { + "message": "g." + }, + "mrs": { + "message": "gđa." + }, + "ms": { + "message": "gđica." + }, + "dr": { + "message": "dr." + }, + "firstName": { + "message": "Ime" + }, + "middleName": { + "message": "Srednje ime" + }, + "lastName": { + "message": "Prezime" + }, + "fullName": { + "message": "Ime i prezime" + }, + "identityName": { + "message": "Ime identiteta" + }, + "company": { + "message": "Tvrtka" + }, + "ssn": { + "message": "Broj socijalnog osiguranja" + }, + "passportNumber": { + "message": "Broj putovnice" + }, + "licenseNumber": { + "message": "Broj vozačke dozvole" + }, + "email": { + "message": "E-pošta" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresa" + }, + "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" + }, + "type": { + "message": "Vrsta" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeLogins": { + "message": "Prijave" + }, + "typeSecureNote": { + "message": "Sigurna bilješka" + }, + "typeCard": { + "message": "Platna kartica" + }, + "typeIdentity": { + "message": "Identitet" + }, + "passwordHistory": { + "message": "Povijest" + }, + "back": { + "message": "Natrag" + }, + "collections": { + "message": "Zbirke" + }, + "favorites": { + "message": "Favoriti" + }, + "popOutNewWindow": { + "message": "Otvori u novom prozoru" + }, + "refresh": { + "message": "Osvježi" + }, + "cards": { + "message": "Platne kartice" + }, + "identities": { + "message": "Identiteti" + }, + "logins": { + "message": "Prijave" + }, + "secureNotes": { + "message": "Sigurne bilješke" + }, + "clear": { + "message": "Očisti", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Uključi/Isključi trenutne URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Trenutni URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organizacija", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Vrste" + }, + "allItems": { + "message": "Sve stavke" + }, + "noPasswordsInList": { + "message": "Nema lozinki na popisu." + }, + "remove": { + "message": "Ukloni" + }, + "default": { + "message": "Zadano" + }, + "dateUpdated": { + "message": "Ažurirano", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Lozinka ažurirana", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Sigurno želiš koristiti opciju „Nikada”? Postavljanje opcija zaključavanja na „Nikada” pohranjuje šifru tvojeg trezora na tvom uređaju. Ako koristiš ovu opciju, trebali bi osigurati da je uređaj pravilno zaštićen." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Otključaj biometrijom" + }, + "awaitDesktop": { + "message": "Čekanje potvrde iz desktop aplikacije" + }, + "awaitDesktopDesc": { + "message": "Potvrdi korištenje biometrije u Bitwarden desktop aplikaciji za korištenje biometrije u pregledniku." + }, + "lockWithMasterPassOnRestart": { + "message": "Zaključaj glavnom lozinkom kod svakog pokretanja preglednika" + }, + "selectOneCollection": { + "message": "Moraš odabrati barem jednu zbirku." + }, + "cloneItem": { + "message": "Kloniraj stavku" + }, + "clone": { + "message": "Kloniraj" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedno ili više pravila organizacije utječe na postavke generatora." + }, + "vaultTimeoutAction": { + "message": "Nakon isteka trezora" + }, + "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 izbrisana stavka" + }, + "restoreItem": { + "message": "Vrati stavku" + }, + "restoreItemConfirmation": { + "message": "Sigurno želiš vratiti ovu stavku?" + }, + "restoredItem": { + "message": "Stavka vraćena" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Odjava će ukloniti pristup tvom trezoru i zahtijevati mrežnu potvrdu identiteta nakon isteka vremenske neaktivnosti. Sigurno želiš koristiti ovu postavku?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Potvrda akcije vremenske neaktivnosti" + }, + "autoFillAndSave": { + "message": "Auto-ispuni i spremi" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-ispunjena stavka i spremanje URI" + }, + "autoFillSuccess": { + "message": "Auto-ispunjena stavka" + }, + "setMasterPassword": { + "message": "Postavi 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." + }, + "termsOfService": { + "message": "Uvjeti korištenja" + }, + "privacyPolicy": { + "message": "Pravila privatnosti" + }, + "hintEqualsPassword": { + "message": "Podsjetnik za lozinku ne može biti isti kao lozinka." + }, + "ok": { + "message": "U redu" + }, + "desktopSyncVerificationTitle": { + "message": "Potvrda desktop sinkronizacije" + }, + "desktopIntegrationVerificationText": { + "message": "Provjeri da desktop aplikacija prikazuje ovaj otisak:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Integracija s preglednikom nije omogućena" + }, + "desktopIntegrationDisabledDesc": { + "message": "Integracija s preglednikom nije omogućena u Bitwarden desktop aplikaciji. Omogući integraciju u postavkama desktop aplikacije." + }, + "startDesktopTitle": { + "message": "Pokreni Bitwarden dekstop aplikaciju" + }, + "startDesktopDesc": { + "message": "Bitwarden desktop aplikacija mora biti pokrenuta prije korištenja ove funkcije." + }, + "errorEnableBiometricTitle": { + "message": "Nije moguće omogućiti biometriju" + }, + "errorEnableBiometricDesc": { + "message": "Desktop aplikacija je poništila akciju" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop aplikacija je onemogućila sigurni komunikacijski kanal. Molimo, pokušaj ponovno." + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop komunikacija prekinuta" + }, + "nativeMessagingWrongUserDesc": { + "message": "Desktop aplikacija je prijavljena, ali s drugim korisničkim računom. Provjeri da obje aplikacije koriste isti korisnički račun." + }, + "nativeMessagingWrongUserTitle": { + "message": "Pogrešan korisnički račun" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrija nije omogućena" + }, + "biometricsNotEnabledDesc": { + "message": "Biometrija preglednika zahtijeva prethodno omogućenu biometriju u Bitwarden desktop aplikaciji." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrija nije podržana" + }, + "biometricsNotSupportedDesc": { + "message": "Biometrija preglednika nije podržana na ovom uređaju." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Dopuštenje nije dano" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bez odobrenja za komunikaciju s Bitwarden Desktop aplikacijom nije moguće korištenje biometrije u proširenju preglednika." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Greška zahtjeva dozvole" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Ovu ranju nije moguće napraviti u bočnom meniju. Pokušaj ponovno u iskočnom prozoru." + }, + "personalOwnershipSubmitError": { + "message": "Pravila tvrtke onemogućuju spremanje stavki u osobni trezor. Promijeni vlasništvo stavke na tvrtku i odaberi dostupnu Zbirku." + }, + "personalOwnershipPolicyInEffect": { + "message": "Pravila organizacije utječu na tvoje mogućnosti vlasništva. " + }, + "excludedDomains": { + "message": "Izuzete domene" + }, + "excludedDomainsDesc": { + "message": "Bitwarden neće pitati treba li spremiti prijavne podatke za ove domene. Za primjenu promjena, potrebno je osvježiti stranicu." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ nije valjana domena", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Pretraži Sendove", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Dodaj Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Tekst" + }, + "sendTypeFile": { + "message": "Datoteka" + }, + "allSends": { + "message": "Svi Sendovi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Dostignut najveći broj pristupanja", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Isteklo" + }, + "pendingDeletion": { + "message": "Čeka brisanje" + }, + "passwordProtected": { + "message": "Zaštićeno lozinkom" + }, + "copySendLink": { + "message": "Kopiraj vezu na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Ukloni lozinku" + }, + "delete": { + "message": "Izbriši" + }, + "removedPassword": { + "message": "Lozinka uklonjena" + }, + "deletedSend": { + "message": "Send izbrisan", + "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." + }, + "disabled": { + "message": "Onemogućeno" + }, + "removePasswordConfirmation": { + "message": "Sigurno želiš ukloniti lozinku?" + }, + "deleteSend": { + "message": "Izbriši Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Uredi Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Nadimak za ovaj Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Datoteka koju želiš poslati" + }, + "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." + }, + "oneDay": { + "message": "1 dan" + }, + "days": { + "message": "$DAYS$ dana", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Prilagođeno" + }, + "maximumAccessCount": { + "message": "Ograničeni broj pristupanja" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kopiraj vezu na Send nakon spremanja", + "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" + }, + "sendHideText": { + "message": "Sakrij tekst ovog Senda.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Trenutni broj pristupanja" + }, + "createSend": { + "message": "Stvori novi Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nova lozinka" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Za odabir datoteke, otvori proširenje u bočnoj traci (ako je moguće) ili u iskočnom prozoru klikom na ovu poruku." + }, + "sendFirefoxFileWarning": { + "message": "Za odabir datoteke u Firefoxu, otvori proširenje u bočnoj traci ili otvori iskočni prozor klikom na ovau poruku." + }, + "sendSafariFileWarning": { + "message": "Za odabir datoteke u Safariju, otvori iskočni prozor klikom na ovu poruku." + }, + "sendFileCalloutHeader": { + "message": "Prije početka" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Biranje datuma na kalendaru", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klikni ovjde", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "za iskočni prozor", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Navedeni rok isteka nije valjan." + }, + "deletionDateIsInvalid": { + "message": "Navedeni datum brisanja nije valjan." + }, + "expirationDateAndTimeRequired": { + "message": "Potrebno je unijeti datum i vrijeme isteka." + }, + "deletionDateAndTimeRequired": { + "message": "Potrebno je unijeti datum i vrijeme brisanja." + }, + "dateParsingError": { + "message": "Došlo je do greške kod spremanja vaših datuma isteka i brisanja." + }, + "hideEmail": { + "message": "Sakrij moju adresu e-pošte od primatelja." + }, + "sendOptionsPolicyInEffect": { + "message": "Jedno ili više pravila organizacije utječe na postavke Senda." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Potrebna je potvrda e-pošte" + }, + "emailVerificationRequiredDesc": { + "message": "Moraš ovjeriti svoju e-poštu u mrežnom trezoru za koritšenje ove značajke." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Odaberi mapu..." + }, + "ssoCompleteRegistration": { + "message": "Za dovršetak jedinstvene prijave na razini tvrtke (SSO), postavi glavnu lozinku za pristup i zaštitu tvog trezora." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Vrijeme isteka premašuje ograničenje koju je postavila tvoja organizacija." + }, + "vaultExportDisabled": { + "message": "Izvoz trezora onemogućen" + }, + "personalVaultExportPolicyInEffect": { + "message": "Jedno ili više pravila organizacija onemogućuje izvoz osobnog trezora. " + }, + "copyCustomFieldNameInvalidElement": { + "message": "Nije moguće identificirati valjani element formulara. Pokušaj provjeriti HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nije nađen jedinstveni identifikator." + }, + "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" + }, + "removeMasterPassword": { + "message": "Ukloni glavnu lozinku" + }, + "removedMasterPassword": { + "message": "Glavna lozinka uklonjena." + }, + "leaveOrganizationConfirmation": { + "message": "Sigurno želiš napustiti ovu organizaciju?" + }, + "leftOrganization": { + "message": "Organizacija napuštena." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json new file mode 100644 index 0000000000..29c831c43a --- /dev/null +++ b/apps/browser/src/_locales/hu/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Ingyenes jelszókezelő", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Egy biztonságos és ingyenes jelszókezelő az összes eszközre.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Vállalati önálló bejelentkezés" + }, + "cancel": { + "message": "Mégse" + }, + "close": { + "message": "Bezár" + }, + "submit": { + "message": "Beküld" + }, + "emailAddress": { + "message": "Email cím" + }, + "masterPass": { + "message": "Mesterjelszó" + }, + "masterPassDesc": { + "message": "A mesterjelszó az a jelszó amit a széfed eléréséhez fogsz használni. Nagyon fontos, hogy ne felejtsd el a mesterjelszavad, mivel nincs lehetőséged visszaállítani még ha elfejeted is." + }, + "masterPassHintDesc": { + "message": "A mesterjelszó emlékeztető segíthet emlékezni a jelszavadra ha elfejetetted volna." + }, + "reTypeMasterPass": { + "message": "A mesterjelszó ismételt begépelése" + }, + "masterPassHint": { + "message": "Mesterjelszó emlékeztető (nem kötelező)" + }, + "tab": { + "message": "Fül" + }, + "myVault": { + "message": "Saját széf" + }, + "tools": { + "message": "Eszközök" + }, + "settings": { + "message": "Beállítások" + }, + "currentTab": { + "message": "Jelenlegi fül" + }, + "copyPassword": { + "message": "Jelszó másolása" + }, + "copyNote": { + "message": "Jegyzet másolása" + }, + "copyUri": { + "message": "URI másolása" + }, + "copyUsername": { + "message": "Felhasználónév másolása" + }, + "copyNumber": { + "message": "Szám másolása" + }, + "copySecurityCode": { + "message": "Biztonsági kód másolása" + }, + "autoFill": { + "message": "Automatikus kitöltés" + }, + "generatePasswordCopied": { + "message": "Jelszó generálás (másolt)" + }, + "copyElementIdentifier": { + "message": "Egyedi mezőnév másolása" + }, + "noMatchingLogins": { + "message": "Nincsenek egyező bejelentkezések." + }, + "unlockVaultMenu": { + "message": "Széf kinyitása" + }, + "loginToVaultMenu": { + "message": "Bejelentkezés a saját széfbe" + }, + "autoFillInfo": { + "message": "Nincsenek elérhető bejelentkezések ehhez a fülhöz ezért az automatikus kitöltés nem működik." + }, + "addLogin": { + "message": "Bejelentkezés hozzáadása" + }, + "addItem": { + "message": "Elem hozzáadása" + }, + "passwordHint": { + "message": "Jelszó emlékeztető" + }, + "enterEmailToGetHint": { + "message": "Írd be a felhasználóhoz kötött e-mail címed, hogy megkapd a mesterjelszó emlékeztetőt." + }, + "getMasterPasswordHint": { + "message": "Kérj mesterjelszó emlékeztetőt" + }, + "continue": { + "message": "Folytatás" + }, + "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." + }, + "account": { + "message": "Felhasználó" + }, + "changeMasterPassword": { + "message": "Mesterjelszó módosítása" + }, + "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é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." + }, + "twoStepLogin": { + "message": "Kétlépcsős bejelentkezés" + }, + "logOut": { + "message": "Kijelentkezés" + }, + "about": { + "message": "Névjegy" + }, + "version": { + "message": "Verzió" + }, + "save": { + "message": "Mentés" + }, + "move": { + "message": "Áthelyezés" + }, + "addFolder": { + "message": "Mappa hozzáadása" + }, + "name": { + "message": "Név" + }, + "editFolder": { + "message": "Mappa szerkesztése" + }, + "deleteFolder": { + "message": "Mappa törlése" + }, + "folders": { + "message": "Mappák" + }, + "noFolders": { + "message": "Nincsenek megjeleníthető mappák." + }, + "helpFeedback": { + "message": "Súgó és visszajelzés" + }, + "sync": { + "message": "Szinkronizálás" + }, + "syncVaultNow": { + "message": "Széf szinkronizálása most" + }, + "lastSync": { + "message": "Utolsó szinkronizálás:" + }, + "passGen": { + "message": "Jelszó generátor" + }, + "generator": { + "message": "Generátor", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatikusan létrehoz erős, egyedi jelszavakat a bejelentkezéseidhez." + }, + "bitWebVault": { + "message": "Bitwarden webes széf" + }, + "importItems": { + "message": "Elemek importálása" + }, + "select": { + "message": "Kiválaszt" + }, + "generatePassword": { + "message": "Jelszó generálása" + }, + "regeneratePassword": { + "message": "Jelszó újragenerálása" + }, + "options": { + "message": "Beállítások" + }, + "length": { + "message": "Hossz" + }, + "uppercase": { + "message": "Nagybetűs (A-Z)" + }, + "lowercase": { + "message": "Kisbetűs (a-z)" + }, + "numbers": { + "message": "Számok (0-9)" + }, + "specialCharacters": { + "message": "Speciális karakterek (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Minimális szám" + }, + "minSpecial": { + "message": "Minimális speciális" + }, + "avoidAmbChar": { + "message": "Félreérthető karakterek mellőzése" + }, + "searchVault": { + "message": "Keresés a széfben" + }, + "edit": { + "message": "Szerkesztés" + }, + "view": { + "message": "Nézet" + }, + "noItemsInList": { + "message": "Nincsenek megjeleníthető tételek." + }, + "itemInformation": { + "message": "Elem információ" + }, + "username": { + "message": "Felhasználónév" + }, + "password": { + "message": "Jelszó" + }, + "passphrase": { + "message": "Kulcskifejezés" + }, + "favorite": { + "message": "Kedvenc" + }, + "notes": { + "message": "Jegyzetek" + }, + "note": { + "message": "Jegyzet" + }, + "editItem": { + "message": "Elem szerkesztése" + }, + "folder": { + "message": "Mappa" + }, + "deleteItem": { + "message": "Elem törlése" + }, + "viewItem": { + "message": "Elem megtekintése" + }, + "launch": { + "message": "Indítás" + }, + "website": { + "message": "Weboldal" + }, + "toggleVisibility": { + "message": "Láthatóság váltása" + }, + "manage": { + "message": "Kezelés" + }, + "other": { + "message": "Egyéb" + }, + "rateExtension": { + "message": "Bővítmény értékelése" + }, + "rateExtensionDesc": { + "message": "Kérlek, fontold meg egy jó értékelés hagyását, ezzel segítve nekünk!" + }, + "browserNotSupportClipboard": { + "message": "A webböngésződ nem támogat könnyű vágólap másolást. Másold manuálisan inkább." + }, + "verifyIdentity": { + "message": "Személyazonosság ellenőrzése" + }, + "yourVaultIsLocked": { + "message": "A páncélszekrény zárva van. A folytatáshoz igazolja személyazonosságá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": "Hibás mesterjelszó" + }, + "vaultTimeout": { + "message": "Széf időkifutás" + }, + "lockNow": { + "message": "Zárolás most" + }, + "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" + }, + "onLocked": { + "message": "Rendszerzároláskor" + }, + "onRestart": { + "message": "Böngésző újraindításkor" + }, + "never": { + "message": "Soha" + }, + "security": { + "message": "Biztonság" + }, + "errorOccurred": { + "message": "Hiba történt." + }, + "emailRequired": { + "message": "E-mail cím megadása kötelező." + }, + "invalidEmail": { + "message": "Érvénytelen email cím." + }, + "masterPassRequired": { + "message": "Mesterjelszó megadása kötelező." + }, + "masterPassLength": { + "message": "Mesterjelszónak legalább 8 karakter hosszúnak kell lennie." + }, + "masterPassDoesntMatch": { + "message": "A megadott két jelszó nem egyezik meg." + }, + "newAccountCreated": { + "message": "Felhasználódat létrehoztuk. Most már be tudsz jelentkezni." + }, + "masterPassSent": { + "message": "Elküldtünk neked egy mesterjelszó emlékeztetődet tartalmazó E-mailt." + }, + "verificationCodeRequired": { + "message": "Ellenőrző kód szükséges." + }, + "invalidVerificationCode": { + "message": "Érvénytelen ellenőrző kód" + }, + "valueCopied": { + "message": "$VALUE$ másolásra került.", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Nem sikerült automatikusan kitölteni a bejelentkezést ezen a weboldalon. Helyette másold/illeszt be a felhasználóneved és/vagy a jelszavadat." + }, + "loggedOut": { + "message": "Kijelentkezett" + }, + "loginExpired": { + "message": "Bejelentkezési munkamenete lejárt." + }, + "logOutConfirmation": { + "message": "Biztos benne, hogy ki szeretnél jelentkezni?" + }, + "yes": { + "message": "Igen" + }, + "no": { + "message": "Nem" + }, + "unexpectedError": { + "message": "Váratlan hiba történt." + }, + "nameRequired": { + "message": "Név megadása kötelező." + }, + "addedFolder": { + "message": "Hozzáadott mappa" + }, + "changeMasterPass": { + "message": "Mesterjelszó módosítása" + }, + "changeMasterPasswordConfirmation": { + "message": "Mesterjelszavadat a bitwarden.com webes széfén tudod megváltoztatni. Szeretnéd meglátogatni a most a weboldalt?" + }, + "twoStepLoginConfirmation": { + "message": "A kétlépcsős bejelentkezés biztonságosabbá teszi a felhasználódat azáltal, hogy ellenőrizned kell a bejelentkezésedet egy másik készülékkel mint például biztonsági kulcs, hitelesítő alkalmazás, SMS, telefon hívás vagy e-mail. Kétlépcsős bejelentkezést a bitwarden.com webes széfén tudod megváltoztatni. Szeretnéd meglátogatni a most a weboldalt?" + }, + "editedFolder": { + "message": "A mappa módosításra került." + }, + "deleteFolderConfirmation": { + "message": "Biztos, hogy törölni akarod ezt a mappát?" + }, + "deletedFolder": { + "message": "Törölt mappa" + }, + "gettingStartedTutorial": { + "message": "Kezdeti ismertető" + }, + "gettingStartedTutorialVideo": { + "message": "Nézd meg az első lépések oktatóprogramunkat, hogy megtanuld, hogyan hozd ki a legtöbbet a böngésző kiterjesztésből." + }, + "syncingComplete": { + "message": "Szinkronizálás befejezve" + }, + "syncingFailed": { + "message": "Sikertelen szinkronizálás" + }, + "passwordCopied": { + "message": "Jelszó másolva" + }, + "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" + }, + "addedItem": { + "message": "Elem hozzáadva" + }, + "editedItem": { + "message": "Elem szerkesztve" + }, + "deleteItemConfirmation": { + "message": "Biztosan törlésre kerüljön ezt az elem?" + }, + "deletedItem": { + "message": "Az elem törlésre került." + }, + "overwritePassword": { + "message": "Jelszó felülírása" + }, + "overwritePasswordConfirmation": { + "message": "Biztosan felül akarod írni a jelenlegi jelszavad?" + }, + "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?" + }, + "searchFolder": { + "message": "Mappa keresése" + }, + "searchCollection": { + "message": "Gyűjtemény keresése" + }, + "searchType": { + "message": "Típus keresése" + }, + "noneFolder": { + "message": "Nincs mappa", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Bejelentkezés értesítés hozzáadás letiltása" + }, + "addLoginNotificationDesc": { + "message": "A \"Bejelentkezés értesítés hozzáadása\" automatikusan felajánlja a bejelentkezés széfbe mentését az első bejelentkezéskor." + }, + "dontShowCardsCurrentTab": { + "message": "A kártyák ne jelenjenek meg a fül oldalon" + }, + "dontShowCardsCurrentTabDesc": { + "message": "A széf kártyaelemei az 'Aktuális fül' oldalon jelennek meg a könnyű automatikus kitöltéshez." + }, + "dontShowIdentitiesCurrentTab": { + "message": "A személyazonosságok ne jelenjenek meg a Fül oldalon" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "A széf személyazonosság elemei az 'Aktuális fül' oldalon jelennek meg a könnyű automatikus kitöltéshez." + }, + "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." + }, + "notificationAddDesc": { + "message": "A Bitwarden megjegyezze ezt a jelszót?" + }, + "notificationAddSave": { + "message": "Mentés" + }, + "disableChangedPasswordNotification": { + "message": "Megváltozott jelszó értesítés letiltása" + }, + "disableChangedPasswordNotificationDesc": { + "message": "A \"Megváltozott jelszó értesítés\" automatikusan felajánlja a bejelentkezési jelszó frissítését a széfben, ha annak megváltoztatását érzékeli a webhelyen." + }, + "notificationChangeDesc": { + "message": "Frissítésre kerüljön a jelszó a Bitwardenben?" + }, + "notificationChangeSave": { + "message": "Frissítés" + }, + "disableContextMenuItem": { + "message": "Helyi menüopciók kikapcsolása" + }, + "disableContextMenuItemDesc": { + "message": "Helyi menü opciók gyors hozzáférést biztosít jelszó generáláshoz és bejelentkezésekhez a weboldalhoz amin éppen vagy." + }, + "defaultUriMatchDetection": { + "message": "Alapértelmezett URI egyezés érzékelés", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Az URI egyezés érzékelés alapértelmezett módjának kiválasztása a bejelentkezéseknél olyan műveletek esetében mint az automatikus kitöltés." + }, + "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" + }, + "solarizedDark": { + "message": "Szolarizált sötét", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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ább kü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 valaha a dió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." + }, + "exportMasterPassword": { + "message": "Add meg a jelszavad a széf adataid exportálásához." + }, + "shared": { + "message": "Megosztott" + }, + "learnOrg": { + "message": "Információ szervezetekről" + }, + "learnOrgConfirmation": { + "message": "A Bitwarden lehetővé teszi a tároló elemeinek megosztását másokkal egy szervezet használatával. Szeretnénk ellátogatni a bitwarden.com webhelyre további információkét?" + }, + "moveToOrganization": { + "message": "Áthelyezés szervezethez" + }, + "share": { + "message": "Megosztás" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ átkerült $ORGNAME$ szervezethez", + "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." + }, + "learnMore": { + "message": "Tudjon meg többet" + }, + "authenticatorKeyTotp": { + "message": "Hitelesítő kulcs (egyszeri időalapú)" + }, + "verificationCodeTotp": { + "message": "Ellenőrző kód (egyszeri időalapú)" + }, + "copyVerificationCode": { + "message": "Ellenőrző kód másolása" + }, + "attachments": { + "message": "Mellékletek" + }, + "deleteAttachment": { + "message": "Mellékletek törlése" + }, + "deleteAttachmentConfirmation": { + "message": "Biztos törölni akarod ezt a mellékletet?" + }, + "deletedAttachment": { + "message": "Mellékletek törlése" + }, + "newAttachment": { + "message": "Új melléklet hozzáadása" + }, + "noAttachments": { + "message": "Nincsenek mellékletek." + }, + "attachmentSaved": { + "message": "A melléklet mentésre került." + }, + "file": { + "message": "Fájl" + }, + "selectFile": { + "message": "Válassz ki egy fájlt." + }, + "maxFileSize": { + "message": "A naximális fájlméret 500 MB." + }, + "featureUnavailable": { + "message": "Ez a funkció nem érhető el." + }, + "updateKey": { + "message": "Ez a funkció nem használható, amíg nem frissíted a titkosítási kulcsod." + }, + "premiumMembership": { + "message": "Prémium tagság" + }, + "premiumManage": { + "message": "Tagság kezelése" + }, + "premiumManageAlert": { + "message": "Prémium tagságod a bitwarden.com webes széfén tudod kezelni. Szeretnéd meglátogatni a most a weboldalt?" + }, + "premiumRefresh": { + "message": "Tagság frissítése" + }, + "premiumNotCurrentMember": { + "message": "Pillanatnyilag nem vagy prémium tag." + }, + "premiumSignUpAndGet": { + "message": "Regisztrálj prémium tagságra az alábbi funkciókért:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB titkosított tárhely a fájlmellékleteknek." + }, + "ppremiumSignUpTwoStep": { + "message": "További két lépcsős bejelentkezés lehetőségek, mint például YubiKey, FIDO U2F és Duo." + }, + "ppremiumSignUpReports": { + "message": "Jelszó higiénia, fiók biztonság és adatszivárgási jelentések a széf biztonsága érdekében." + }, + "ppremiumSignUpTotp": { + "message": "TOTP ellenőrző kód (2FA) generátor a széfedben lévő bejelentkezésekhez." + }, + "ppremiumSignUpSupport": { + "message": "Kiemelt ügyfélszolgálati." + }, + "ppremiumSignUpFuture": { + "message": "Minden jövőbeli prémium funkció. Hamarosan jön még több!" + }, + "premiumPurchase": { + "message": "Prémium funkció megvásárlása" + }, + "premiumPurchaseAlert": { + "message": "Prémium tagságot a bitwarden.com webes széfén tudsz venni. Szeretnéd meglátogatni a most a weboldalt?" + }, + "premiumCurrentMember": { + "message": "Te egy prémium tag vagy!" + }, + "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": "Frissítés megtörtént" + }, + "disableAutoTotpCopy": { + "message": "Egyszeri jelszó automatikus másolás tiltása" + }, + "disableAutoTotpCopyDesc": { + "message": "Ha a bejelentkezésedhez csatolva van egy hitelesítő kód, a TOTP ellenőrző kód automatikusan másolva lesz a vágólapodra bejelentkezésed automatikus kitöltése esetén." + }, + "disableAutoBiometricsPrompt": { + "message": "Nincs biometrika kérés indításkor" + }, + "premiumRequired": { + "message": "Prémium funkció szükséges" + }, + "premiumRequiredDesc": { + "message": "Prémium tagság szükséges ennek a funkciónak eléréséhez." + }, + "enterVerificationCodeApp": { + "message": "Add meg a 6 számjegyű ellenőrző kódot a hitelesítő alkalmazásodbó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": "Emlékezz rám" + }, + "sendVerificationCodeEmailAgain": { + "message": "Megerősítő kód e-mail újra küldése" + }, + "useAnotherTwoStepMethod": { + "message": "Más két lépcsős bejelentkezés használata" + }, + "insertYubiKey": { + "message": "Illeszd be a YubiKey-t a számítógéped egyik USB portjába, majd nyomd meg a gombját." + }, + "insertU2f": { + "message": "Illesz be biztonsági kulcsod a számítógéped egyik USB portjába. Ha van rajta egy gomb, nyomd le." + }, + "webAuthnNewTab": { + "message": "A WebAuthn 2FA ellenőrzés folytatása az új fülön." + }, + "webAuthnNewTabOpen": { + "message": "Új fül megnyitása" + }, + "webAuthnAuthenticate": { + "message": "WebAutn hitelesítés" + }, + "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": "Kérlek használj támogatott böngészőt (mint például a Chrome) és/vagy adj hozzá jobban támogatott szolgáltatásokat melyek jobban támogatottak más böngészőkben is (mint például egy hitelesítő alkalmazás)." + }, + "twoStepOptions": { + "message": "Kétlépcsős bejelentkezés opciók" + }, + "recoveryCodeDesc": { + "message": "Elvesztetted a hozzáférésed az összes kétlépcsős szolgáltatásodhoz? Használd a visszaállítókódod a kétlépcsős kiszolgálok kikapcsolásához a felhasználódon." + }, + "recoveryCodeTitle": { + "message": "Helyreállító kód" + }, + "authenticatorAppTitle": { + "message": "Hitelesítő alkalmazás" + }, + "authenticatorAppDesc": { + "message": "Használj egy másik alkalmazást (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 biztonsági kulcs" + }, + "yubiKeyDesc": { + "message": "Használj egy YubiKey-t, hogy hozzá férhess a felhasználódhoz. Működik a YubiKey 4, 4 Nano, 4C, és NEO eszközökkel." + }, + "duoDesc": { + "message": "Ellenőrizd Duo Security-val a Duo Mobile alkalmazás, SMS, telefon hívás vagy U2F biztonsági kulcs segítségével.", + "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": "E-mail" + }, + "emailDesc": { + "message": "Ellenőrző kódok el lesznek e-mailbe küldve neked." + }, + "selfHostedEnvironment": { + "message": "Saját üzemeltetésű környezet" + }, + "selfHostedEnvironmentFooter": { + "message": "A helyileg működtetett Bitwarden telepítés alap webcímének megadása." + }, + "customEnvironment": { + "message": "Egyedi környezet" + }, + "customEnvironmentFooter": { + "message": "Haladó felhasználóknak. Minden egyes szolgáltatás alap URL-jét külön megadhatod." + }, + "baseUrl": { + "message": "Szerver URL" + }, + "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örnyezet URL-ek mentésre kerültek." + }, + "enableAutoFillOnPageLoad": { + "message": "Automatikus kitöltés engedélyezése oldal betöltéskor" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Ha egy bejelentkezési űrlap észlelésre került, automatikusan töltse ki az adatokat az oldal betöltésekor." + }, + "experimentalFeature": { + "message": "Ez jelenleg egy kísérleti funkció. Csak saját felelősségedre használd." + }, + "defaultAutoFillOnPageLoad": { + "message": "Alapértelmezett beállítások bejelentkezési elemekhez" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Az Automatikus kitöltés engedélyezése az oldalbetöltéskor engedélyezheti vagy letilthatja a funkciót az egyes bejelentkezési elemeknél. Ez az alapértelmezett beállítás a bejelentkezési elemeknéll, amelyek nincsenek külön konfigurálva." + }, + "itemAutoFillOnPageLoad": { + "message": "Automatikus kitöltés oldal betöltésnél (Ha engedélyezett az opcióknál)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Alapbeállítások használata" + }, + "autoFillOnPageLoadYes": { + "message": "Automatikus kitöltés oldalbetöltésnél" + }, + "autoFillOnPageLoadNo": { + "message": "Nincs automatikus kitöltés oldalbetöltéskor" + }, + "commandOpenPopup": { + "message": "Széf megnyitása ablakban" + }, + "commandOpenSidebar": { + "message": "Széf megnyitása oldalsávon" + }, + "commandAutofillDesc": { + "message": "Az aktuális webhelynél az utoljára használt bejelentkezés automatikus kitöltése." + }, + "commandGeneratePasswordDesc": { + "message": "Új véletlenszerű jelszó generálása ás másolása a vágólapra." + }, + "commandLockVaultDesc": { + "message": "A széf zárolása" + }, + "privateModeWarning": { + "message": "A privát mód támogatása kísérleti és néhány funkció korlátozott." + }, + "customFields": { + "message": "Egyedi mezők" + }, + "copyValue": { + "message": "Érték másolása" + }, + "value": { + "message": "Érték" + }, + "newCustomField": { + "message": "Új egyedi mező" + }, + "dragToSort": { + "message": "Húzás a rendezéshez" + }, + "cfTypeText": { + "message": "Szöveg" + }, + "cfTypeHidden": { + "message": "Rejtett" + }, + "cfTypeBoolean": { + "message": "Boolean (Logikai)" + }, + "cfTypeLinked": { + "message": "Csatolva", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Csatolt érték", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Az ellenőrző kódot tartalmazó email egy olyan felugró ablakban nyílik meg, mely a mellette levő területre kattinva bezáródik. Szeretnéd az emailt egy olyan ablakban megnyitni, ami nem záródhat így be?" + }, + "popupU2fCloseMessage": { + "message": "Ez a böngésző nem dolgozza fel az U2F kéréseket ebben a felbukkanó ablakban. Szeretnénk megnyitni a felbukkanó ablakot új böngészőablakban az U2F segítségével történő bejelentkezéshez?" + }, + "disableFavicon": { + "message": "Webhely ikonok letiltása" + }, + "disableFaviconDesc": { + "message": "A webhelyek ikonjai felismerhető ikonként jelennek meg a széf összes eleme mellett." + }, + "disableBadgeCounter": { + "message": "Számláló jelvény letiltása" + }, + "disableBadgeCounterDesc": { + "message": "A jelvényszámláló jelzi az aktuális oldalhoz a bejelentkezések számát a stárolóban." + }, + "cardholderName": { + "message": "Kártyatulajdonos neve" + }, + "number": { + "message": "Szám" + }, + "brand": { + "message": "Márka" + }, + "expirationMonth": { + "message": "Lejárati hónap" + }, + "expirationYear": { + "message": "Lejárati év" + }, + "expiration": { + "message": "Lejárat" + }, + "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" + }, + "securityCode": { + "message": "Biztonsági kód" + }, + "ex": { + "message": "példa:" + }, + "title": { + "message": "Titulus" + }, + "mr": { + "message": "Úr" + }, + "mrs": { + "message": "Asszony" + }, + "ms": { + "message": "Kisasszony" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Személynév" + }, + "middleName": { + "message": "Középső név" + }, + "lastName": { + "message": "Családnév" + }, + "fullName": { + "message": "Teljes név" + }, + "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": "E-mail" + }, + "phone": { + "message": "Telefonszám" + }, + "address": { + "message": "Lakcím" + }, + "address1": { + "message": "Cím 1" + }, + "address2": { + "message": "Cím 2" + }, + "address3": { + "message": "Cím 3" + }, + "cityTown": { + "message": "Település" + }, + "stateProvince": { + "message": "Állam/Megye" + }, + "zipPostalCode": { + "message": "Irányítószám" + }, + "country": { + "message": "Ország" + }, + "type": { + "message": "Típus" + }, + "typeLogin": { + "message": "Bejelentkezés" + }, + "typeLogins": { + "message": "Bejelentkezések" + }, + "typeSecureNote": { + "message": "Biztonságos jegyzet" + }, + "typeCard": { + "message": "Kártya" + }, + "typeIdentity": { + "message": "Személyazonosság" + }, + "passwordHistory": { + "message": "Jelszó előzmények" + }, + "back": { + "message": "Vissza" + }, + "collections": { + "message": "Gyűjtemények" + }, + "favorites": { + "message": "Kedvencek" + }, + "popOutNewWindow": { + "message": "Megnyitás új böngészőablakban" + }, + "refresh": { + "message": "Frissítés" + }, + "cards": { + "message": "Kártyák" + }, + "identities": { + "message": "Személyazonosságok" + }, + "logins": { + "message": "Bejelentkezések" + }, + "secureNotes": { + "message": "Biztonságos jegyzetek" + }, + "clear": { + "message": "Kiürítés", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "A jelszóvédelemi állapot 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 megnyitása" + }, + "toggleCurrentUris": { + "message": "Aktuális URI elemek váltása", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Aktuális URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Szervezet", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Típusok" + }, + "allItems": { + "message": "Összes elem" + }, + "noPasswordsInList": { + "message": "Nincsenek listázható jelszavak." + }, + "remove": { + "message": "Eltávolítás" + }, + "default": { + "message": "Alapértelmezett" + }, + "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" + }, + "neverLockWarning": { + "message": "Biztosan szeretnénk használni a \"Soha\" opciót? A zárolási opciók \"Soha\" értékre állítása a széf titkosítási kulcsát az eszközön tárolja. Ennek az opciónak a használatakor célszerű az eszköz megfelelő védettségét biztosítani." + }, + "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ás alaphelyzetbe kerül, ha teljesen kijelentkezünk az alkalmazásból." + }, + "pinRequired": { + "message": "A pinkód szükséges." + }, + "invalidPin": { + "message": "A pinkód érvénytelen." + }, + "unlockWithBiometrics": { + "message": "Biometrikus feloldás" + }, + "awaitDesktop": { + "message": "Várakozás megerősítésre az asztali alkalmazásból" + }, + "awaitDesktopDesc": { + "message": "Erősítsük meg a biometrikus adatok használatát a Bitwarden asztali alkalmazásban a biometrikus adatok engedélyezéséhez a böngészőben." + }, + "lockWithMasterPassOnRestart": { + "message": "Lezárás mesterjelszóval a böngésző újraindításakor" + }, + "selectOneCollection": { + "message": "Legalább egy gyűjteményt ki kell választani." + }, + "cloneItem": { + "message": "Tétel klónozása" + }, + "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" + }, + "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": "Véglegesen törölt elem" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Automatikus kitöltés és mentés" + }, + "autoFillSuccessAndSavedUri": { + "message": "Automatikusan kitöltött elem és mentett URI" + }, + "autoFillSuccess": { + "message": "Automatikusan kitöltött elem" + }, + "setMasterPassword": { + "message": "Mesterjelszó beállítása" + }, + "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 doboz bejelölésével elfogadjuk a következőket:" + }, + "acceptPoliciesError": { + "message": "A szolgáltatási feltételeket és az adatvédelmi irányelveket nem vették figyelembe." + }, + "termsOfService": { + "message": "Szolgáltatási feltételek" + }, + "privacyPolicy": { + "message": "Adatvédelem" + }, + "hintEqualsPassword": { + "message": "A jelszavas tipp nem lehet azonos a jelszóval." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Asztali szinkronizálás ellenőrzés" + }, + "desktopIntegrationVerificationText": { + "message": "Ellenőrizzük, hogy az asztali alkalmazás megjeleníti-e ezt az ujjlenyomatot: " + }, + "desktopIntegrationDisabledTitle": { + "message": "A böngésző integráció nem engedélyezett." + }, + "desktopIntegrationDisabledDesc": { + "message": "A böngésző integráció nincs engedélyezve a Bitwarden asztali alkalmazásban. Engedélyezzük az asztali alkalmazás beállításai között." + }, + "startDesktopTitle": { + "message": "A Bitwarden asztali alkalmazás indítása" + }, + "startDesktopDesc": { + "message": "A funkció használatához el kell indítani a Bitwarden asztali alkalmazást." + }, + "errorEnableBiometricTitle": { + "message": "Nem lehet engedélyezni a biometrikus adatokat." + }, + "errorEnableBiometricDesc": { + "message": "A műveletet az asztali alkalmazás törölte." + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Az asztali alkalmazás érvénytelenítette a biztonságos kommunikációs csatornát. Próbálkozzunk újra ezzel a művelettel" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Az asztali kommunikáció megszakadt." + }, + "nativeMessagingWrongUserDesc": { + "message": "Az asztali alkalmazás egy másik fiókba van bejelentkezve. Ellenőrizzük, hogy mindkét alkalmazást azonos fiókba van bejelentkezve." + }, + "nativeMessagingWrongUserTitle": { + "message": "A fiók nem egyezik." + }, + "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." + }, + "biometricsNotSupportedTitle": { + "message": "A biometrikus adatok nem támogatottak." + }, + "biometricsNotSupportedDesc": { + "message": "A böngésző biometrikus adatait ez az eszköz nem támogatja." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "A jogosultság nincs megadva." + }, + "nativeMessaginPermissionErrorDesc": { + "message": "A Bitwarden Desktop alkalmazással való kommunikáció engedélye nélkül nem adhatunk meg biometrikus adatokat a böngésző kiterjesztésében. Próbáljuk újra." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Engedélykérési hiba történt." + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Ez a művelet nem hajtható végre az oldalsávon. Próbáljuk meg újra a műveletet a felbukkanó ablakban." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "A szervezeti házirend befolyásolja a tulajdonosi opciókat." + }, + "excludedDomains": { + "message": "Kizárt domainek" + }, + "excludedDomainsDesc": { + "message": "A Bitwarden nem fogja kérni a domainek bejelentkezési adatainak mentését. A változások életbe lépéséhez frissíteni kell az oldalt." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ nem érvényes domain.", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Send keresése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Send hozzáadása", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Szöveg" + }, + "sendTypeFile": { + "message": "Fájl" + }, + "allSends": { + "message": "Összes Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "A maximális hozzáférések száma elérésre került.", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Lejárt" + }, + "pendingDeletion": { + "message": "Függőben lévő törlés" + }, + "passwordProtected": { + "message": "Jelszóval védett" + }, + "copySendLink": { + "message": "Send hivatkozás másolása", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Jelszó eltávolítása" + }, + "delete": { + "message": "Törlés" + }, + "removedPassword": { + "message": "A jelszó eltávolításra került." + }, + "deletedSend": { + "message": "A Send törlésre került.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send hivatkozás", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Letiltva" + }, + "removePasswordConfirmation": { + "message": "Biztosan eltávolításra kerüljön ez a jelszó?" + }, + "deleteSend": { + "message": "Send törlése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Biztosan törlésre kerüljön ez a Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Send szerkesztése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "message": "Milyen típusú ez a Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Barátságos név a Send leírására.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "A küldendő fájl." + }, + "deletionDate": { + "message": "Törlési dátum" + }, + "deletionDateDesc": { + "message": "A Send véglegesen törölve lesz 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": "Amennyiben be van állítva, a hozzáférés ehhez a Sendhez a meghatározott időpontban lejár", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "oneDay": { + "message": "1 nap" + }, + "days": { + "message": "$DAYS$ nap", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Egyedi" + }, + "maximumAccessCount": { + "message": "Maximális elérési szám" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendPasswordDesc": { + "message": "Opcionálisan megadhatunk egy jelszót a felhasználók számára 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." + }, + "sendDisableDesc": { + "message": "A Send letiltásával senki nem férhet hozzá.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Mentéskor másoljuk a Küldés hivatkozását a vágólapra.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "A küldendő fájl." + }, + "sendHideText": { + "message": "Alapértelmezés szerint elrejti a Küldés szövegét.", + "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" + }, + "createSend": { + "message": "Új küldés létrehozása", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Új jelszó" + }, + "sendDisabled": { + "message": "A Send 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ő Send törölhető.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "A Send 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 Send szerkesztésre került", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinuxChromiumFileWarning": { + "message": "A fájl kiválasztásához nyissuk meg a kiterjesztést az oldalsávon (ha lehetséges) vagy kattintsunk erre a sávra új ablak felbukkanásához." + }, + "sendFirefoxFileWarning": { + "message": "Firefox esetén nyissuk meg a bővítményt az oldalsávon vafy erre a hirdetőtáblára kattintva új felbukkanó ablak nyílik meg." + }, + "sendSafariFileWarning": { + "message": "A fájl kiválasztásához Safariban kattintsunk erre a hirdetőtáblára kattintva új ablak nyílik meg." + }, + "sendFileCalloutHeader": { + "message": "Mielőtt belevágnánk" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Naptár-stílusú dátumválasztáshoz", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "kattintás ide", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "az ablak megnyitásához", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "A megadott lejárati idő nem érvényes." + }, + "deletionDateIsInvalid": { + "message": "A megadott törlési dátum nem érvényes." + }, + "expirationDateAndTimeRequired": { + "message": "Lejárati dátum és idő megadása szükséges." + }, + "deletionDateAndTimeRequired": { + "message": "Törlési dátum és idő megadása szükséges." + }, + "dateParsingError": { + "message": "Hiba történt a törlési és a lejárati dátum mentésekor." + }, + "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." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email hitelesítés szükséges" + }, + "emailVerificationRequiredDesc": { + "message": "A funkció használatához igazolni kell email címet. Az email cím a webtárban ellenőrizhető." + }, + "updatedMasterPassword": { + "message": "A mesterjelszó frissíté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." + }, + "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." + }, + "selectFolder": { + "message": "Mappa választá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." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "A széf időkorlátja túllépi a szervezet által beállított korlátozást." + }, + "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." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Nem lehet azonosítani egy érvényes űrlapelemet. Ehelyett próbáljuk meg ellenőrizni a HTML -t." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nincs egyedi azonosító." + }, + "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" + }, + "removeMasterPassword": { + "message": "Mesterjelszó eltávolítása" + }, + "removedMasterPassword": { + "message": "A mesterjelszó eltávolításra került." + }, + "leaveOrganizationConfirmation": { + "message": "Biztosan kilépünk ebből a szervezetből?" + }, + "leftOrganization": { + "message": "Megtörtént a kilépés a szervezetből." + }, + "toggleCharacterCount": { + "message": "Karakterszámláló váltás" + }, + "sessionTimeout": { + "message": "A munkamenet lejárt. Lépjünk vissza és próbáljunk újra bejelentlezni." + }, + "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" + } + } + }, + "error": { + "message": "Hiba" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Mit szeretnénk generálni?" + }, + "passwordType": { + "message": "Jelszótípus" + }, + "service": { + "message": "Szolgáltatás" + } +} diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json new file mode 100644 index 0000000000..970c18a23a --- /dev/null +++ b/apps/browser/src/_locales/id/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Pengelola Sandi Gratis", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden adalah sebuah pengelola sandi yang aman dan gratis untuk semua perangkat Anda.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Masuk atau buat akun baru untuk mengakses brankas Anda." + }, + "createAccount": { + "message": "Buat Akun" + }, + "login": { + "message": "Masuk" + }, + "enterpriseSingleSignOn": { + "message": "Sistem Masuk Tunggal Perusahaan" + }, + "cancel": { + "message": "Batal" + }, + "close": { + "message": "Tutup" + }, + "submit": { + "message": "Kirim" + }, + "emailAddress": { + "message": "Alamat Email" + }, + "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 Kata Sandi Utama" + }, + "masterPassHint": { + "message": "Petunjuk Kata Sandi Utama (pilihan)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "Brankas Saya" + }, + "tools": { + "message": "Alat" + }, + "settings": { + "message": "Setelan" + }, + "currentTab": { + "message": "Tab Saat Ini" + }, + "copyPassword": { + "message": "Salin Kata Sandi" + }, + "copyNote": { + "message": "Salin Catatan" + }, + "copyUri": { + "message": "Salin URI" + }, + "copyUsername": { + "message": "Salin Nama Pengguna" + }, + "copyNumber": { + "message": "Salin Angka" + }, + "copySecurityCode": { + "message": "Salin Kode Keamanan" + }, + "autoFill": { + "message": "Isi otomatis" + }, + "generatePasswordCopied": { + "message": "Membuat Kata Sandi (tersalin)" + }, + "copyElementIdentifier": { + "message": "Salin Nama Kolom Pilihan" + }, + "noMatchingLogins": { + "message": "Tidak ada info masuk yang cocok." + }, + "unlockVaultMenu": { + "message": "Buka brankas Anda" + }, + "loginToVaultMenu": { + "message": "Masuk ke brankas Anda" + }, + "autoFillInfo": { + "message": "Tidak ada info masuk yang tersedia untuk mengisi secara otomatis tab peramban saat ini." + }, + "addLogin": { + "message": "Tambah Info Masuk" + }, + "addItem": { + "message": "Tambah Item" + }, + "passwordHint": { + "message": "Petunjuk Kata Sandi" + }, + "enterEmailToGetHint": { + "message": "Masukkan email akun Anda untuk menerima pentunjuk sandi utama Anda." + }, + "getMasterPasswordHint": { + "message": "Dapatkan petunjuk sandi utama" + }, + "continue": { + "message": "Lanjutkan" + }, + "sendVerificationCode": { + "message": "Kirim kode verifikasi ke email Anda" + }, + "sendCode": { + "message": "Kirim Kode" + }, + "codeSent": { + "message": "Kode Terkirim!" + }, + "verificationCode": { + "message": "Kode Verifikasi" + }, + "confirmIdentity": { + "message": "Konfirmasi identitas Anda untuk melanjutkan." + }, + "account": { + "message": "Akun" + }, + "changeMasterPassword": { + "message": "Ubah Kata Sandi Utama" + }, + "fingerprintPhrase": { + "message": "Frasa Sidik Jari", + "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": "Frasa sidik jari akun 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." + }, + "twoStepLogin": { + "message": "Info masuk dua langkah" + }, + "logOut": { + "message": "Keluar" + }, + "about": { + "message": "Tentang" + }, + "version": { + "message": "Versi" + }, + "save": { + "message": "Simpan" + }, + "move": { + "message": "Pindah" + }, + "addFolder": { + "message": "Tambah Folder" + }, + "name": { + "message": "Nama" + }, + "editFolder": { + "message": "Sunting Folder" + }, + "deleteFolder": { + "message": "Hapus Folder" + }, + "folders": { + "message": "Folder" + }, + "noFolders": { + "message": "Tidak ada folder yang dapat dicantumkan." + }, + "helpFeedback": { + "message": "Bantuan & Umpan Balik" + }, + "sync": { + "message": "Sinkronisasi" + }, + "syncVaultNow": { + "message": "Sinkronkan Brankas Sekarang" + }, + "lastSync": { + "message": "Sinkronisasi Terakhir:" + }, + "passGen": { + "message": "Pembuat Kata Sandi" + }, + "generator": { + "message": "Pembuat Sandi", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Secara otomatis membuat sandi yang kuat dan unik untuk info masuk Anda." + }, + "bitWebVault": { + "message": "Brankas Web Bitwarden" + }, + "importItems": { + "message": "Impor Item" + }, + "select": { + "message": "Pilih" + }, + "generatePassword": { + "message": "Buat Kata Sandi" + }, + "regeneratePassword": { + "message": "Buat Ulang Kata Sandi" + }, + "options": { + "message": "Pilihan" + }, + "length": { + "message": "Panjang" + }, + "uppercase": { + "message": "Huruf besar (A-Z)" + }, + "lowercase": { + "message": "Huruf kecil (a-z)" + }, + "numbers": { + "message": "Angka (0-9)" + }, + "specialCharacters": { + "message": "karakter khusus (contoh.! @#$%^&*)" + }, + "numWords": { + "message": "Jumlah Kata" + }, + "wordSeparator": { + "message": "Pemisah Kata" + }, + "capitalize": { + "message": "Huruf Besar", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Sertakan Angka" + }, + "minNumbers": { + "message": "Angka Minimum" + }, + "minSpecial": { + "message": "Spesial Minimum" + }, + "avoidAmbChar": { + "message": "Hindari Karakter Ambigu" + }, + "searchVault": { + "message": "Cari brankas" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "Tampilan" + }, + "noItemsInList": { + "message": "Tidak ada item yang dapat dicantumkan." + }, + "itemInformation": { + "message": "Informasi Item" + }, + "username": { + "message": "Nama Pengguna" + }, + "password": { + "message": "Kata Sandi" + }, + "passphrase": { + "message": "Frasa Sandi" + }, + "favorite": { + "message": "Favorit" + }, + "notes": { + "message": "Catatan" + }, + "note": { + "message": "Catatan" + }, + "editItem": { + "message": "Sunting Item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Hapus Item" + }, + "viewItem": { + "message": "Lihat Item" + }, + "launch": { + "message": "Luncurkan" + }, + "website": { + "message": "Situs Web" + }, + "toggleVisibility": { + "message": "Ubah Visibilitas" + }, + "manage": { + "message": "Kelola" + }, + "other": { + "message": "Lainnya" + }, + "rateExtension": { + "message": "Nilai Ekstensi" + }, + "rateExtensionDesc": { + "message": "Mohon pertimbangkan membantu kami dengan ulasan yang baik!" + }, + "browserNotSupportClipboard": { + "message": "Peramban Anda tidak mendukung menyalin clipboard dengan mudah. Salin secara manual." + }, + "verifyIdentity": { + "message": "Verifikasi Identitas Anda" + }, + "yourVaultIsLocked": { + "message": "Brankas Anda terkunci. Verifikasi kata sandi utama Anda untuk melanjutkan." + }, + "unlock": { + "message": "Buka Kunci" + }, + "loggedInAsOn": { + "message": "Telah masuk sebagai $EMAIL$ di $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Sandi utama tidak valid" + }, + "vaultTimeout": { + "message": "Batas Waktu Brankas" + }, + "lockNow": { + "message": "Kunci Sekarang" + }, + "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" + }, + "onLocked": { + "message": "Saat Komputer Terkunci" + }, + "onRestart": { + "message": "Saat Peramban Dimulai Ulang" + }, + "never": { + "message": "Jangan pernah" + }, + "security": { + "message": "Keamanan" + }, + "errorOccurred": { + "message": "Terjadi kesalahan" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Kode verifikasi diperlukan." + }, + "invalidVerificationCode": { + "message": "Kode verifikasi tidak valid" + }, + "valueCopied": { + "message": "$VALUE$ disalin", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Tidak dapat mengisi otomatis item yang dipilih pada laman ini. Salin dan tempel informasinya sebagai gantinya." + }, + "loggedOut": { + "message": "Keluar" + }, + "loginExpired": { + "message": "Sesi masuk Anda telah berakhir." + }, + "logOutConfirmation": { + "message": "Anda yakin ingin keluar?" + }, + "yes": { + "message": "Ya" + }, + "no": { + "message": "Tidak" + }, + "unexpectedError": { + "message": "Terjadi kesalahan yang tak diduga." + }, + "nameRequired": { + "message": "Nama diperlukan." + }, + "addedFolder": { + "message": "Tambah Folder" + }, + "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?" + }, + "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, SMK, panggilan telepon, atau email. Info masuk dua langkah dapat diaktifkan di brankas web bitwarden.com. Anda ingin mengunjungi situs web sekarang?" + }, + "editedFolder": { + "message": "Folder yang disunting" + }, + "deleteFolderConfirmation": { + "message": "Anda yakin Anda ingin menghapus folder ini?" + }, + "deletedFolder": { + "message": "Folder dihapus" + }, + "gettingStartedTutorial": { + "message": "Tutorial Perkenalan" + }, + "gettingStartedTutorialVideo": { + "message": "Lihat tutorial perkenalan kami untuk mempelajari bagaimana mendapatkan hasil maksimal dari ekstensi peramban." + }, + "syncingComplete": { + "message": "Sinkronisasi selesai" + }, + "syncingFailed": { + "message": "Gagal menyinkronkan" + }, + "passwordCopied": { + "message": "Sandi disalin" + }, + "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" + }, + "addedItem": { + "message": "Item yang Ditambahkan" + }, + "editedItem": { + "message": "Item yang Diedit" + }, + "deleteItemConfirmation": { + "message": "Apakah Anda yakin ingin menghapus item ini?" + }, + "deletedItem": { + "message": "Item yang dihapus" + }, + "overwritePassword": { + "message": "Timpa Kata Sandi" + }, + "overwritePasswordConfirmation": { + "message": "Anda yakin ingin menimpa sandi saat ini?" + }, + "overwriteUsername": { + "message": "Menimpa nama pengguna" + }, + "overwriteUsernameConfirmation": { + "message": "Anda yakin ingin menimpa nama pengguna saat ini?" + }, + "searchFolder": { + "message": "Cari folder" + }, + "searchCollection": { + "message": "Cari koleksi" + }, + "searchType": { + "message": "Jenis pencarian" + }, + "noneFolder": { + "message": "Tidak Ada Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Nonaktifkan Notifikasi Penambahan Info Masuk" + }, + "addLoginNotificationDesc": { + "message": "\"Notifikasi Penambahan Info Masuk\" secara otomatis akan meminta Anda untuk menyimpan info masuk baru ke brankas Anda saat Anda masuk untuk pertama kalinya." + }, + "dontShowCardsCurrentTab": { + "message": "Jangan Tampilkan Kartu pada Laman Tab" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Item kartu dari brankas Anda akan ditampilkan pada laman 'Tab' untuk mempermudah akses isi-otomatis." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Jangan Tampilkan Identitas pada Laman Tab" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Item identitas dari brankas Anda akan ditampilkan pada laman 'Tab' untuk mempermudah akses isi-otomatis." + }, + "clearClipboard": { + "message": "Hapus Papan Klip", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Secara otomatis menghapus konten yang disalin dari papan klip Anda.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Haruskah Bitwarden mengingat sandi ini untuk Anda?" + }, + "notificationAddSave": { + "message": "Iya, Simpan Sekarang" + }, + "disableChangedPasswordNotification": { + "message": "Nonaktifkan Notifikasi Perubahan Kata Sandi" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Notifikasi Perubahan Kata Sandi\" secara otomatis akan meminta Anda untuk memperbarui kata sandi info masuk di brankas Anda ketika mendeteksi bahwa Anda telah mengubahnya lewat situs web." + }, + "notificationChangeDesc": { + "message": "Apakah Anda ingin memperbarui kata sandi ini di Bitwarden?" + }, + "notificationChangeSave": { + "message": "Iya, Perbarui Sekarang" + }, + "disableContextMenuItem": { + "message": "Nonaktifkan Opsi Menu Konteks" + }, + "disableContextMenuItemDesc": { + "message": "Pilihan menu konteks menyediakan akses cepat ke pembuat sandi dan info masuk untuk situs web di tab Anda saat ini." + }, + "defaultUriMatchDetection": { + "message": "Deteksi Kecocokan URI Bawaan", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Pilih cara bawaan penanganan pencocokan URI untuk masuk saat melakukan tindakan seperti isi-otomatis." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Ubah tema warna aplikasi." + }, + "dark": { + "message": "Gelap", + "description": "Dark color" + }, + "light": { + "message": "Terang", + "description": "Light color" + }, + "solarizedDark": { + "message": "Gelap Solarized", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "exportVault": { + "message": "Ekspor Brankas" + }, + "fileFormat": { + "message": "Format Berkas" + }, + "warning": { + "message": "PERINGATAN", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Konfirmasi Ekspor Brankas" + }, + "exportWarningDesc": { + "message": "Berkas ekspor ini berisi data brankas Anda dalam format tidak terenkripsi. Jangan pernah menyimpan atau mengirim berkas ini melalui kanal tidak aman (seperti surel). Segera hapus setelah Anda selesai menggunakannya." + }, + "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." + }, + "exportMasterPassword": { + "message": "Masukkan sandi utama Anda untuk mengekspor data brankas Anda." + }, + "shared": { + "message": "Dibagikan" + }, + "learnOrg": { + "message": "Pelajari tentang Organisasi" + }, + "learnOrgConfirmation": { + "message": "Bitwarden memungkinkan Anda berbagi item brankas Anda dengan orang lain menggunakan organisasi. Maukah Anda mengunjungi laman bitwarden.com untuk mempelajari lebih lanjut?" + }, + "moveToOrganization": { + "message": "Pindah ke Organisasi" + }, + "share": { + "message": "Bagikan" + }, + "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 bearti memberikan kepemilikan kepada organisasi tersebut. Anda tidak akan lagi menjadi pemilik item ini." + }, + "learnMore": { + "message": "Pelajari lebih lanjut" + }, + "authenticatorKeyTotp": { + "message": "Kunci Otentikasi (TOTP)" + }, + "verificationCodeTotp": { + "message": "Kode Verifikasi (TOTP)" + }, + "copyVerificationCode": { + "message": "Salin Kode Verifikasi" + }, + "attachments": { + "message": "Lampiran" + }, + "deleteAttachment": { + "message": "Hapus lampiran" + }, + "deleteAttachmentConfirmation": { + "message": "Anda yakin ingin menghapus lampiran ini?" + }, + "deletedAttachment": { + "message": "Lampiran dihapus" + }, + "newAttachment": { + "message": "Tambah Lampiran Baru" + }, + "noAttachments": { + "message": "Tidak ada lampiran." + }, + "attachmentSaved": { + "message": "Lampiran telah disimpan." + }, + "file": { + "message": "Berkas" + }, + "selectFile": { + "message": "Pilih berkas." + }, + "maxFileSize": { + "message": "Ukuran berkas maksimal adalah 500 MB." + }, + "featureUnavailable": { + "message": "Fitur Tidak Tersedia" + }, + "updateKey": { + "message": "Anda tidak dapat menggunakan fitur ini sampai Anda memperbarui kunci enkripsi Anda." + }, + "premiumMembership": { + "message": "Keanggotaan Premium" + }, + "premiumManage": { + "message": "Kelola Keanggotaan" + }, + "premiumManageAlert": { + "message": "Anda dapat mengelola keanggotaan Anda di brankas web bitwarden.com. Anda ingin mengunjungi situs web sekarang?" + }, + "premiumRefresh": { + "message": "Segarkan Keanggotaan" + }, + "premiumNotCurrentMember": { + "message": "Anda saat ini bukan anggota premium." + }, + "premiumSignUpAndGet": { + "message": "Daftar untuk keanggotaan premium dan mendapatkan:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB penyimpanan berkas yang dienkripsi." + }, + "ppremiumSignUpTwoStep": { + "message": "Pilihan info masuk dua langkah tambahan seperti YubiKey, FIDO U2F, dan Duo." + }, + "ppremiumSignUpReports": { + "message": "Kebersihan kata sandi, kesehatan akun, dan laporan kebocoran data untuk tetap menjaga keamanan brankas Anda." + }, + "ppremiumSignUpTotp": { + "message": "Pembuat kode verifikasi TOTP (2FA) untuk masuk di brankas anda." + }, + "ppremiumSignUpSupport": { + "message": "Dukungan pelanggan prioritas." + }, + "ppremiumSignUpFuture": { + "message": "Semua fitur-fitur premium masa depan. Akan segera tiba!" + }, + "premiumPurchase": { + "message": "Beli Keanggotaan Premium" + }, + "premiumPurchaseAlert": { + "message": "Anda dapat membeli keanggotaan premium di brankas web bitwarden.com. Anda ingin mengunjungi situs web sekarang?" + }, + "premiumCurrentMember": { + "message": "Anda adalah anggota premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Terima kasih telah mendukung Bitwarden." + }, + "premiumPrice": { + "message": "Semua itu hanya $PRICE$ /tahun!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Penyegaran selesai" + }, + "disableAutoTotpCopy": { + "message": "Nonaktifkan Penyalinan Otomatis TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Jika info masuk Anda memiliki kunci autentikasi yang menyertainya, kode verifikasi TOTP akan disalin secara otomatis ke clipboard Anda setiap kali Anda mengisi info masuk secara otomatis." + }, + "disableAutoBiometricsPrompt": { + "message": "Jangan minta biometrik saat dinyalakan." + }, + "premiumRequired": { + "message": "Membutuhkan Keanggotaan Premium" + }, + "premiumRequiredDesc": { + "message": "Keanggotaan premium diperlukan untuk menggunakan fitur ini." + }, + "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": "Surel verifikasi telah 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 tombolnya." + }, + "insertU2f": { + "message": "Masukkan kunci keamanan ke port USB komputer Anda. Jika ada tombolnya, tekanlah." + }, + "webAuthnNewTab": { + "message": "Untuk memulai verifikasi 2FA WebAuthn. Klik tombol di bawah untuk membuka tab baru dan ikuti instruksi yang diberikan." + }, + "webAuthnNewTabOpen": { + "message": "Buka tab baru" + }, + "webAuthnAuthenticate": { + "message": "Autentikasi dengan WebAuthn." + }, + "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 peramban web ini." + }, + "noTwoStepProviders2": { + "message": "Silakan gunakan peramban web yang didukung (seperti Chrome) dan/atau tambahkan penyedia tambahan yang didukung di semua peramban web (seperti aplikasi autentikasi)." + }, + "twoStepOptions": { + "message": "Opsi Info Masuk Dua Langkah" + }, + "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 Otentikasi" + }, + "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 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." + }, + "selfHostedEnvironment": { + "message": "Lingkungan Penyedia Personal" + }, + "selfHostedEnvironmentFooter": { + "message": "Tetapkan URL dasar penyedia personal pemasangan Bitwarden Anda." + }, + "customEnvironment": { + "message": "Lingkungan Khusus" + }, + "customEnvironmentFooter": { + "message": "Untuk pengguna tingkat lanjut. Anda bisa menentukan basis dari URL masing-masing layanan secara independen." + }, + "baseUrl": { + "message": "URL Server" + }, + "apiUrl": { + "message": "URL Server API" + }, + "webVaultUrl": { + "message": "URL Server Brankas Web" + }, + "identityUrl": { + "message": "URL Server Identitas" + }, + "notificationsUrl": { + "message": "URL Server Notifikasi" + }, + "iconsUrl": { + "message": "URL Server Ikon" + }, + "environmentSaved": { + "message": "URL dari semua lingkungan telah disimpan." + }, + "enableAutoFillOnPageLoad": { + "message": "Aktifkan Isi-Otomatis Saat Memuat Laman" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Jika formulir info masuk terdeteksi, secara otomatis melakukan pengisian otomatis ketika memuat laman web." + }, + "experimentalFeature": { + "message": "Fitur ini saat ini adalah fitur eksperimental. Gunakan dengan risiko Anda sendiri." + }, + "defaultAutoFillOnPageLoad": { + "message": "Konfigurasi autofill standard untuk item login." + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Setelah mengaktifkan Auto-Fill waktu website terbuka, kamu dapat mengaktifkan atau meng-nonaktifkan feature ini untuk setiap item. Ini adalah konfigurasi standard untuk item yang tidak dikonfigurasi terpisah." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill waktu website terbuka (Jika diaktifkan di Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Gunakan pengaturan baku" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-Fill ketika website baru terbuka" + }, + "autoFillOnPageLoadNo": { + "message": "Jangan Auto-Fill ketika website baru terbuka" + }, + "commandOpenPopup": { + "message": "Buka popup brankas" + }, + "commandOpenSidebar": { + "message": "Buka brankas di bilah samping" + }, + "commandAutofillDesc": { + "message": "Isi otomatis info masuk yang digunakan terakhir untuk situs ini" + }, + "commandGeneratePasswordDesc": { + "message": "Buat dan salin kata sandi acak baru ke papan klip." + }, + "commandLockVaultDesc": { + "message": "Kunci brankas" + }, + "privateModeWarning": { + "message": "Dukungan mode pribadi bersifat eksperimental dan beberapa fitur terbatas." + }, + "customFields": { + "message": "Ruas Khusus" + }, + "copyValue": { + "message": "Salin Nilai" + }, + "value": { + "message": "Nilai" + }, + "newCustomField": { + "message": "Ruas Khusus Baru" + }, + "dragToSort": { + "message": "Seret untuk mengurutkan" + }, + "cfTypeText": { + "message": "Teks" + }, + "cfTypeHidden": { + "message": "Tersembunyi" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Terhubung", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Tindakan klik diluar jendela popup untuk memeriksa kode verifikasi di dalam surel Anda akan menyebabkan popup ini ditutup. Apakah Anda ingin membuka popup ini di jendela baru sehingga terus tetap terbuka?" + }, + "popupU2fCloseMessage": { + "message": "Peramban ini tidak bisa memproses permintaan U2F di jendela popup ini. Apakah Anda ingin membuka popup ini di jendela baru sehingga Anda dapat masuk menggunakan U2F?" + }, + "disableFavicon": { + "message": "Nonaktifkan Ikon Situs Web" + }, + "disableFaviconDesc": { + "message": "Ikon Situs Web menyediakan gambar yang mudah dikenali di sebelah item info masuk di dalam brankas Anda." + }, + "disableBadgeCounter": { + "message": "Matikan angka penghitung " + }, + "disableBadgeCounterDesc": { + "message": "Angka penghitung menandakan jumlah login yang kamu punya untuk website saat ini yang ada di dalam vault kamu." + }, + "cardholderName": { + "message": "Nama Pemegang Kartu" + }, + "number": { + "message": "Nomor" + }, + "brand": { + "message": "Merek" + }, + "expirationMonth": { + "message": "Bulan Kedaluwarsa" + }, + "expirationYear": { + "message": "Tahun Kedaluwarsa" + }, + "expiration": { + "message": "Masa Berlaku" + }, + "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" + }, + "securityCode": { + "message": "Kode Keamanan" + }, + "ex": { + "message": "mis." + }, + "title": { + "message": "Panggilan" + }, + "mr": { + "message": "Tuan" + }, + "mrs": { + "message": "Nyonya" + }, + "ms": { + "message": "Nona" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Nama Depan" + }, + "middleName": { + "message": "Nama Tengah" + }, + "lastName": { + "message": "Nama Belakang" + }, + "fullName": { + "message": "Nama Lengkap" + }, + "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" + }, + "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" + }, + "type": { + "message": "Tipe" + }, + "typeLogin": { + "message": "Info Masuk" + }, + "typeLogins": { + "message": "Info Masuk" + }, + "typeSecureNote": { + "message": "Catatan Aman" + }, + "typeCard": { + "message": "Kartu" + }, + "typeIdentity": { + "message": "Identitas" + }, + "passwordHistory": { + "message": "Riwayat Kata Sandi" + }, + "back": { + "message": "Kembali" + }, + "collections": { + "message": "Koleksi" + }, + "favorites": { + "message": "Favorit" + }, + "popOutNewWindow": { + "message": "Buka di jendela baru" + }, + "refresh": { + "message": "Segarkan" + }, + "cards": { + "message": "Kartu" + }, + "identities": { + "message": "Identitas" + }, + "logins": { + "message": "Info Masuk" + }, + "secureNotes": { + "message": "Catatan Aman" + }, + "clear": { + "message": "Bersihkan", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Periksa jika kata sandi telah terekspos." + }, + "passwordExposed": { + "message": "Kata sandi ini telah terekspos $VALUE$ kali dalam insiden kebocoran data. Anda harus memperbaruinya.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Kata sandi ini tidak ditemukan dalam insiden kebocoran data yang ada. Kata sandi tersebut seharusnya aman untuk digunakan." + }, + "baseDomain": { + "message": "Domain basis", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nama Domain", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Hos", + "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" + }, + "toggleCurrentUris": { + "message": "Alihkan URI Saat Ini", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI Saat Ini", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisasi", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tipe" + }, + "allItems": { + "message": "Semua Item" + }, + "noPasswordsInList": { + "message": "Tidak ada sandi yang dapat dicantumkan." + }, + "remove": { + "message": "Hapus" + }, + "default": { + "message": "Bawaan" + }, + "dateUpdated": { + "message": "Diperbarui", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Kata Sandi Diperbarui", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Apakah Anda yakin ingin menggunakan opsi \"Jangan Pernah\"? Mengatur opsi penguncian ke \"Jangan Pernah\" akan menyimpan kunci enkripsi brankas Anda di dalam perangkat. Jika Anda menggunakan opsi ini, Anda harus pastikan perangkat Anda dilindungi dengan baik." + }, + "noOrganizationsList": { + "message": "Anda tidak tergabung dalam organisasi apapun. Organisasi memungkinkan Anda secara aman berbagi item dengan pengguna lainnya." + }, + "noCollectionsInList": { + "message": "Tidak ada koleksi untuk ditampilkan." + }, + "ownership": { + "message": "Kepemilikan" + }, + "whoOwnsThisItem": { + "message": "Siapa 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": "Kata sandi utama yang Anda pilih itu lemah. Anda harus menggunakan kata sandi yang kuat (atau frasa sandi) untuk melindungi akun Bitwarden Anda. Apakah Anda yakin ingin menggunakan kata 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 sepenuhnya dari aplikasi." + }, + "pinRequired": { + "message": "Membutuhkan kode PIN." + }, + "invalidPin": { + "message": "Kode PIN tidak valid." + }, + "unlockWithBiometrics": { + "message": "Buka kunci dengan biometrik" + }, + "awaitDesktop": { + "message": "Menunggu konfirmasi dari desktop" + }, + "awaitDesktopDesc": { + "message": "Silakan konfirmasi menggunakan biometrik di aplikasi Bitwarden Desktop untuk mengaktifkan biometrik untuk peramban." + }, + "lockWithMasterPassOnRestart": { + "message": "Kunci dengan kata sandi utama saat peramban dimulai ulang" + }, + "selectOneCollection": { + "message": "Anda harus memilih setidaknya satu koleksi." + }, + "cloneItem": { + "message": "Duplikat Item" + }, + "clone": { + "message": "Duplikat" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Satu atau lebih kebijakan organisasi mempengaruhi pengaturan pembuat sandi Anda." + }, + "vaultTimeoutAction": { + "message": "Tindakan Batas Waktu Brankas" + }, + "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 Secara Permanen" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Apakah Anda yakin ingin menghapus item ini secara permanen?" + }, + "permanentlyDeletedItem": { + "message": "Hapus Item Secara Permanen" + }, + "restoreItem": { + "message": "Pulihkan Item" + }, + "restoreItemConfirmation": { + "message": "Apakah Anda yakin ingin memulihkan item ini?" + }, + "restoredItem": { + "message": "Item Yang Dipulihkan" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Keluar akan menghapus semua akses ke brankas Anda dan membutuhkan otentikasi daring setelah periode batas waktu tertentu. Apakah Anda yakin ingin menggunakan pengaturan ini?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Konfirmasi Tindakan Batas Waktu" + }, + "autoFillAndSave": { + "message": "Isi Otomatis dan Simpan" + }, + "autoFillSuccessAndSavedUri": { + "message": "Item yang Diisi Otomatis dan URI Tersimpan" + }, + "autoFillSuccess": { + "message": "Item Terisi Otomatis" + }, + "setMasterPassword": { + "message": "Atur Kata Sandi Utama" + }, + "masterPasswordPolicyInEffect": { + "message": "Satu atau lebih kebijakan organisasi membutuhkan 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 disetujui." + }, + "termsOfService": { + "message": "Persyaratan Layanan" + }, + "privacyPolicy": { + "message": "Kebijakan Privasi" + }, + "hintEqualsPassword": { + "message": "Petunjuk kata sandi Anda tidak boleh sama dengan kata sandi Anda." + }, + "ok": { + "message": "Oke" + }, + "desktopSyncVerificationTitle": { + "message": "Verifikasi sinkronisasi desktop" + }, + "desktopIntegrationVerificationText": { + "message": "Harap verifikasi bahwa aplikasi desktop menampilkan sidik jari ini: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Integrasi peramban tidak diaktifkan" + }, + "desktopIntegrationDisabledDesc": { + "message": "Integrasi peramban tidak diaktifkan di aplikasi Desktop Bitwarden. Silakan aktifkan di pengaturan di dalam aplikasi desktop." + }, + "startDesktopTitle": { + "message": "Jalankan aplikasi Desktop Bitwarden" + }, + "startDesktopDesc": { + "message": "Aplikasi Desktop Bitwarden harus dijalankan sebelum fungsi ini bisa digunakan." + }, + "errorEnableBiometricTitle": { + "message": "Tidak bisa mengaktifkan biometrik" + }, + "errorEnableBiometricDesc": { + "message": "Tindakan dibatalkan oleh aplikasi desktop" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Aplikasi desktop membatalkan saluran komunikasi aman. Silakan coba lagi proses ini" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Komunikasi desktop terputus" + }, + "nativeMessagingWrongUserDesc": { + "message": "Aplikasi desktop masuk ke akun yang berbeda. Harap pastikan kedua aplikasi masuk ke akun yang sama." + }, + "nativeMessagingWrongUserTitle": { + "message": "Akun tidak cocok" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrik tidak diaktifkan" + }, + "biometricsNotEnabledDesc": { + "message": "Biometrik peramban mengharuskan biometrik desktop diaktifkan di pengaturan terlebih dahulu." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrik tidak didukung" + }, + "biometricsNotSupportedDesc": { + "message": "Biometrik peramban tidak didukung di perangkat ini." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Izin tidak diberikan" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Tanpa adanya izin untuk berkomunikasi dengan Aplikasi Desktop Bitwarden kami tidak bisa menyediakan fitur biometrik di dalam ekstensi peramban. Silakan coba lagi." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Kesalahan permintaan izin" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Tindakan ini tidak dapat dilakukan di sidebar, coba lagi tindakan di pop-up atau pop-out." + }, + "personalOwnershipSubmitError": { + "message": "Karena Kebijakan Perusahaan, Anda dilarang menyimpan item ke brankas personal Anda. Ubah opsi Kepemilikan ke organisasi dan pilih dari Koleksi yang tersedia." + }, + "personalOwnershipPolicyInEffect": { + "message": "Kebijakan organisasi memengaruhi opsi kepemilikan Anda." + }, + "excludedDomains": { + "message": "Domain yang Dikecualikan" + }, + "excludedDomainsDesc": { + "message": "Bitwarden tidak akan meminta untuk menyimpan detail login untuk domain ini. Anda harus menyegarkan halaman agar perubahan diterapkan." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ bukan domain yang valid", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Pencarian Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Tambahkan Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Teks" + }, + "sendTypeFile": { + "message": "Berkas" + }, + "allSends": { + "message": "Semua Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Jumlah akses maksimum tercapai", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Kedaluwarsa" + }, + "pendingDeletion": { + "message": "Penghapusan menunggu keputusan" + }, + "passwordProtected": { + "message": "Dilindungi kata sandi" + }, + "copySendLink": { + "message": "Salin tautan Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Hapus Kata Sandi" + }, + "delete": { + "message": "Hapus" + }, + "removedPassword": { + "message": "Kata Sandi yang Dihapus" + }, + "deletedSend": { + "message": "Send Dihapus", + "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." + }, + "disabled": { + "message": "Dinonaktifkan" + }, + "removePasswordConfirmation": { + "message": "Anda yakin ingin menghapus kata sandi?" + }, + "deleteSend": { + "message": "Hapus Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "message": "Jenis Send apakah ini?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Nama yang bersahabat untuk menggambarkan Send ini.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "File yang ingin Anda kirim." + }, + "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." + }, + "oneDay": { + "message": "1 hari" + }, + "days": { + "message": "$DAYS$ hari", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Kustom" + }, + "maximumAccessCount": { + "message": "Hitungan Akses Maksimum" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Salin tautan Send ini ke papan klip setelah disimpan.", + "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." + }, + "sendHideText": { + "message": "Sembunyikan teks Send ini secara default.", + "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" + }, + "createSend": { + "message": "Buat Send Baru", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Kata Sandi baru" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Untuk memilih file ini, buka Extension di sidebar (jika memungkinkan) atau keluarkan menjadi window baru dengan menekan gambar ini." + }, + "sendFirefoxFileWarning": { + "message": "Untuk memilih file menggunakan Firefox, buka ekstensi di sidebar atau keluar ke jendela baru dengan mengklik banner ini." + }, + "sendSafariFileWarning": { + "message": "Untuk memilih file menggunakan Safari, keluar ke jendela baru dengan mengklik spanduk ini." + }, + "sendFileCalloutHeader": { + "message": "Sebelum kamu memulai" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Untuk menggunakan pemilih tanggal gaya kalender", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klik disini", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "untuk memunculkan jendela Anda.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Tanggal kedaluwarsa yang diberikan tidak valid." + }, + "deletionDateIsInvalid": { + "message": "Tanggal penghapusan yang diberikan tidak valid." + }, + "expirationDateAndTimeRequired": { + "message": "Diperlukan tanggal dan waktu kedaluwarsa." + }, + "deletionDateAndTimeRequired": { + "message": "Tanggal dan waktu penghapusan diperlukan." + }, + "dateParsingError": { + "message": "Terjadi kesalahan saat menyimpan tanggal penghapusan dan kedaluwarsa Anda." + }, + "hideEmail": { + "message": "Sembunyikan alamat surel dari penerima." + }, + "sendOptionsPolicyInEffect": { + "message": "Satu atau lebih kebijakan organisasi mempengaruhi pengaturan feature Send anda." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Verifikasi Email Diperlukan" + }, + "emailVerificationRequiredDesc": { + "message": "Anda harus memverifikasi email Anda untuk menggunakan fitur ini. Anda dapat memverifikasi email Anda di brankas web." + }, + "updatedMasterPassword": { + "message": "Kata Sandi Utama Telah Diperbarui" + }, + "updateMasterPassword": { + "message": "Perbarui Kata Sandi Utama" + }, + "updateMasterPasswordWarning": { + "message": "Kata Sandi Utama Anda baru-baru ini diubah oleh administrator organisasi Anda. Untuk mengakses brankas tersebut, Anda diharuskan memperbarui Kata Sandi Utama Anda sekarang. Jika Anda melanjutkan, Anda akan keluar dari sesi saat ini, yang mana mengharuskan Anda untuk login kembali. Sesi yang aktif di perangkat lain akan tetap aktif selama satu jam kedepan." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Pendaftaran Otomatis" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Organisasi ini memiliki kebijakan perusahaan yang secara otomatis mendaftarkan Anda dalam pengaturan ulang kata sandi. Dengan mendaftar, akan memungkinkan administrator organisasi untuk mengubah kata sandi utama Anda." + }, + "selectFolder": { + "message": "Pilih Folder..." + }, + "ssoCompleteRegistration": { + "message": "Untuk menyelesaikan masuk dengan SSO, harap setel kata sandi utama untuk mengakses dan melindungi brankas Anda." + }, + "hours": { + "message": "Jam" + }, + "minutes": { + "message": "Menit" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Kebijakan organisasi Anda memengaruhi waktu tunggu brankas Anda. Batas maksimal Waktu Tunggu Brankas yang diizinkan adalah $HOURS$ jam dan $MINUTES$ menit", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Waktu tunggu brankas Anda melebihi batasan yang diatur organisasi Anda." + }, + "vaultExportDisabled": { + "message": "Ekspor Brankas Dinonaktifkan" + }, + "personalVaultExportPolicyInEffect": { + "message": "Satu atau beberapa kebijakan organisasi mencegah Anda mengekspor brankas pribadi Anda." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Tidak dapat mengidentifikasi elemen yang valid. Coba inspeksi HTML saja." + }, + "copyCustomFieldNameNotUnique": { + "message": "Tidak ada pengidentifikasi unik yang ditemukan." + }, + "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": "Tinggalkan Organisasi" + }, + "removeMasterPassword": { + "message": "Hapus Kata Sandi Utama" + }, + "removedMasterPassword": { + "message": "Sandi utama dihapus." + }, + "leaveOrganizationConfirmation": { + "message": "Apakah Anda yakin ingin meninggalkan organisasi ini?" + }, + "leftOrganization": { + "message": "Anda telah keluar dari organisasi." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json new file mode 100644 index 0000000000..f1a51e23d0 --- /dev/null +++ b/apps/browser/src/_locales/it/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Gestore di password gratuito", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Un gestore di password sicuro e gratuito per tutti i tuoi dispositivi.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Accedi o crea un nuovo account per accedere alla tua cassaforte." + }, + "createAccount": { + "message": "Crea account" + }, + "login": { + "message": "Accedi" + }, + "enterpriseSingleSignOn": { + "message": "Single Sign-On aziendale" + }, + "cancel": { + "message": "Annulla" + }, + "close": { + "message": "Chiudi" + }, + "submit": { + "message": "Invia" + }, + "emailAddress": { + "message": "Indirizzo email" + }, + "masterPass": { + "message": "Password principale" + }, + "masterPassDesc": { + "message": "La password principale è la password che utilizzi per accedere alla tua cassaforte. È molto importante che tu non la dimentichi. Non c'è modo di recuperare questa password nel caso che tu la dimenticassi." + }, + "masterPassHintDesc": { + "message": "Un suggerimento per la password principale può aiutarti a ricordarla nel caso la dimenticassi." + }, + "reTypeMasterPass": { + "message": "Ri-digita la tua password principale" + }, + "masterPassHint": { + "message": "Suggerimento password principale (facoltativo)" + }, + "tab": { + "message": "Scheda" + }, + "myVault": { + "message": "Cassaforte" + }, + "tools": { + "message": "Strumenti" + }, + "settings": { + "message": "Impostazioni" + }, + "currentTab": { + "message": "Scheda attuale" + }, + "copyPassword": { + "message": "Copia password" + }, + "copyNote": { + "message": "Copia nota" + }, + "copyUri": { + "message": "Copia URI" + }, + "copyUsername": { + "message": "Copia nome utente" + }, + "copyNumber": { + "message": "Copia numero" + }, + "copySecurityCode": { + "message": "Copia codice di sicurezza" + }, + "autoFill": { + "message": "Auto-riempimento" + }, + "generatePasswordCopied": { + "message": "Genera password (copiata)" + }, + "copyElementIdentifier": { + "message": "Copia nome campo personalizzato" + }, + "noMatchingLogins": { + "message": "Nessun login corrispondente." + }, + "unlockVaultMenu": { + "message": "Sblocca la tua cassaforte" + }, + "loginToVaultMenu": { + "message": "Accedi alla tua cassaforte" + }, + "autoFillInfo": { + "message": "Non ci sono login disponibili per completare la scheda attuale del browser." + }, + "addLogin": { + "message": "Aggiungi un login" + }, + "addItem": { + "message": "Aggiungi elemento" + }, + "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 della password principale" + }, + "continue": { + "message": "Continua" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Modifica password principale" + }, + "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." + }, + "twoStepLogin": { + "message": "Verifica in due passaggi" + }, + "logOut": { + "message": "Esci" + }, + "about": { + "message": "Informazioni" + }, + "version": { + "message": "Versione" + }, + "save": { + "message": "Salva" + }, + "move": { + "message": "Sposta" + }, + "addFolder": { + "message": "Aggiungi cartella" + }, + "name": { + "message": "Nome" + }, + "editFolder": { + "message": "Modifica cartella" + }, + "deleteFolder": { + "message": "Elimina cartella" + }, + "folders": { + "message": "Cartelle" + }, + "noFolders": { + "message": "Non ci sono cartelle da elencare." + }, + "helpFeedback": { + "message": "Aiuto e segnalazioni" + }, + "sync": { + "message": "Sincronizza" + }, + "syncVaultNow": { + "message": "Sincronizza ora la cassaforte" + }, + "lastSync": { + "message": "Ultima sincronizzazione:" + }, + "passGen": { + "message": "Generatore di password" + }, + "generator": { + "message": "Generatore", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Genera automaticamente password complesse e uniche per i tuoi login." + }, + "bitWebVault": { + "message": "Cassaforte web di Bitwarden" + }, + "importItems": { + "message": "Importa elementi" + }, + "select": { + "message": "Seleziona" + }, + "generatePassword": { + "message": "Genera password" + }, + "regeneratePassword": { + "message": "Rigenera password" + }, + "options": { + "message": "Opzioni" + }, + "length": { + "message": "Lunghezza" + }, + "uppercase": { + "message": "Maiuscole (A-Z)" + }, + "lowercase": { + "message": "Minuscole (a-z)" + }, + "numbers": { + "message": "Numeri (0-9)" + }, + "specialCharacters": { + "message": "Caratteri speciali (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Minimo di numeri" + }, + "minSpecial": { + "message": "Minimo di speciali" + }, + "avoidAmbChar": { + "message": "Evita caratteri ambigui" + }, + "searchVault": { + "message": "Cerca nella cassaforte" + }, + "edit": { + "message": "Modifica" + }, + "view": { + "message": "Visualizza" + }, + "noItemsInList": { + "message": "Non ci sono elementi da elencare." + }, + "itemInformation": { + "message": "Informazioni sull'elemento" + }, + "username": { + "message": "Nome utente" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Frase segreta" + }, + "favorite": { + "message": "Preferito" + }, + "notes": { + "message": "Note" + }, + "note": { + "message": "Nota" + }, + "editItem": { + "message": "Modifica elemento" + }, + "folder": { + "message": "Cartella" + }, + "deleteItem": { + "message": "Elimina elemento" + }, + "viewItem": { + "message": "Visualizza elemento" + }, + "launch": { + "message": "Avvia" + }, + "website": { + "message": "Sito web" + }, + "toggleVisibility": { + "message": "Mostra/Nascondi" + }, + "manage": { + "message": "Gestisci" + }, + "other": { + "message": "Altro" + }, + "rateExtension": { + "message": "Valuta l'estensione" + }, + "rateExtensionDesc": { + "message": "Prendi in considerazione l'idea di lasciarci una buona recensione!" + }, + "browserNotSupportClipboard": { + "message": "Il tuo browser non supporta la copia dagli appunti. Copiala manualmente." + }, + "verifyIdentity": { + "message": "Verifica l'identità." + }, + "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" + }, + "vaultTimeout": { + "message": "Timeout cassaforte" + }, + "lockNow": { + "message": "Blocca ora" + }, + "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" + }, + "onLocked": { + "message": "Al blocco del computer" + }, + "onRestart": { + "message": "Al riavvio del browser" + }, + "never": { + "message": "Mai" + }, + "security": { + "message": "Sicurezza" + }, + "errorOccurred": { + "message": "Si è verificato un errore" + }, + "emailRequired": { + "message": "L'indirizzo email è obbligatorio." + }, + "invalidEmail": { + "message": "Indirizzo email non valido." + }, + "masterPassRequired": { + "message": "La password principale è obbligatoria." + }, + "masterPassLength": { + "message": "La password principale deve essere lunga almeno 8 caratteri." + }, + "masterPassDoesntMatch": { + "message": "La conferma della password principale non corrisponde." + }, + "newAccountCreated": { + "message": "Il tuo nuovo account è stato creato! Ora puoi eseguire l'accesso." + }, + "masterPassSent": { + "message": "Ti abbiamo inviato una email con il tuo suggerimento per la password principale." + }, + "verificationCodeRequired": { + "message": "Il codice di verifica è obbligatorio." + }, + "invalidVerificationCode": { + "message": "Codice di verifica non valido." + }, + "valueCopied": { + "message": "$VALUE$ copiata", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Impossibile completare automaticamente il login selezionato per questa pagina. Copia e incolla manualmente le tue credenziali." + }, + "loggedOut": { + "message": "Disconnesso" + }, + "loginExpired": { + "message": "La tua sessione è scaduta." + }, + "logOutConfirmation": { + "message": "Sei sicuro di volerti disconnettere?" + }, + "yes": { + "message": "Sì" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "Si è verificato un errore imprevisto." + }, + "nameRequired": { + "message": "Il nome è obbligatorio." + }, + "addedFolder": { + "message": "Cartella aggiunta" + }, + "changeMasterPass": { + "message": "Modifica password principale" + }, + "changeMasterPasswordConfirmation": { + "message": "Puoi cambiare la tua password principale sulla cassaforte online di bitwarden.com. Vuoi visitare ora il sito?" + }, + "twoStepLoginConfirmation": { + "message": "L'autenticazione in due passaggi rende il tuo account più sicuro richiedendo di verificare il login con un altro dispositivo come una chiave di sicurezza, applicazione di autenticazione, SMS, telefonata o email. Può essere abilitata sulla cassaforte online di bitwarden.com. Vuoi visitare il sito ora?" + }, + "editedFolder": { + "message": "Cartella modificata" + }, + "deleteFolderConfirmation": { + "message": "Sei sicuro di voler modificare questa cartella?" + }, + "deletedFolder": { + "message": "Cartella eliminata" + }, + "gettingStartedTutorial": { + "message": "Guida per iniziare" + }, + "gettingStartedTutorialVideo": { + "message": "Guarda il nostro tutorial iniziale per capire come ottenere il massimo dall'estensione del browser." + }, + "syncingComplete": { + "message": "Sincronizzazione completata" + }, + "syncingFailed": { + "message": "Sincronizzazione non riuscita" + }, + "passwordCopied": { + "message": "Password copiata" + }, + "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" + }, + "addedItem": { + "message": "Elemento aggiunto" + }, + "editedItem": { + "message": "Elemento modificato" + }, + "deleteItemConfirmation": { + "message": "Sei sicuro di voler cestinare questo elemento?" + }, + "deletedItem": { + "message": "Elemento cestinato" + }, + "overwritePassword": { + "message": "Sovrascrivi password" + }, + "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?" + }, + "searchFolder": { + "message": "Cerca nella cartella" + }, + "searchCollection": { + "message": "Cerca nella raccolta" + }, + "searchType": { + "message": "Cerca tipo" + }, + "noneFolder": { + "message": "Nessuna cartella", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disabilita notifica di aggiunta login" + }, + "addLoginNotificationDesc": { + "message": "\"Aggiungi notifica di login\" richiede automaticamente di salvare i nuovi login nella tua cassaforte ogni volta che accedi per la prima volta." + }, + "dontShowCardsCurrentTab": { + "message": "Non mostrare le carte nella pagina delle schede" + }, + "dontShowCardsCurrentTabDesc": { + "message": "I dati della carta dalla tua cassaforte sono elencati nella sezione \"Scheda attuale\" per facilitare il riempimento automatico." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Non mostrare le identità nella pagina delle schede" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Le identità della tua cassaforte sono elencati nella sezione \"Scheda attuale\" per facilitare il completamento automatico." + }, + "clearClipboard": { + "message": "Cancella appunti", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Cancella automaticamente dagli appunti i valori copiati.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Vuoi che Bitwarden ricordi questa password per te?" + }, + "notificationAddSave": { + "message": "Sì, salva ora" + }, + "disableChangedPasswordNotification": { + "message": "Disabilita notifica di modifica delle password" + }, + "disableChangedPasswordNotificationDesc": { + "message": "La \"notifica di cambio password\" chiede automaticamente di aggiornare la password di un account della cassaforte ogni qualvolta viene rilevata una modifica su un sito web." + }, + "notificationChangeDesc": { + "message": "Vuoi aggiornare questa password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Sì, aggiorna ora" + }, + "disableContextMenuItem": { + "message": "Disabilita integrazione del menu contestuale" + }, + "disableContextMenuItemDesc": { + "message": "Le opzioni del menu contestuale forniscono accesso rapido alla generazione di password e ai login per il sito web nella scheda corrente." + }, + "defaultUriMatchDetection": { + "message": "Rilevamento corrispondenza URI predefinito", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Scegli il modo predefinito in cui il rilevamento della corrispondenza URI viene gestito per gli accessi quando si eseguono azioni come il riempimento automatico." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Cambia lo schema di colori dell'applicazione." + }, + "dark": { + "message": "Scuro", + "description": "Dark color" + }, + "light": { + "message": "Chiaro", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarizzato scuro", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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 tua cassaforte in un formato non cifrato. Non salvare o inviare il file esportato su canali non protetti (come la posta elettronica). Eliminalo immediatamente dopo l'utilizzo." + }, + "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." + }, + "exportMasterPassword": { + "message": "Inserisci la tua password principale per esportare i dati della tua cassaforte." + }, + "shared": { + "message": "Condiviso" + }, + "learnOrg": { + "message": "Scopri le organizzazioni" + }, + "learnOrgConfirmation": { + "message": "Bitwarden ti permette di condividere gli elementi della tua cassaforte con altri usando un'organizzazione. Vuoi visitare il sito bitwarden.com per saperne di più?" + }, + "moveToOrganization": { + "message": "Sposta in organizzazione" + }, + "share": { + "message": "Condividi" + }, + "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." + }, + "learnMore": { + "message": "Per saperne di più" + }, + "authenticatorKeyTotp": { + "message": "Chiave di autenticazione (TOTP)" + }, + "verificationCodeTotp": { + "message": "Codice di verifica (TOTP)" + }, + "copyVerificationCode": { + "message": "Copia codice di verifica" + }, + "attachments": { + "message": "Allegati" + }, + "deleteAttachment": { + "message": "Elimina allegato" + }, + "deleteAttachmentConfirmation": { + "message": "Sei sicuro di voler eliminare questo allegato?" + }, + "deletedAttachment": { + "message": "Allegato eliminato" + }, + "newAttachment": { + "message": "Aggiungi Nuovo Allegato" + }, + "noAttachments": { + "message": "Nessun allegato." + }, + "attachmentSaved": { + "message": "L'allegato è stato salvato." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Seleziona un file." + }, + "maxFileSize": { + "message": "La dimensione massima del file è 500 MB." + }, + "featureUnavailable": { + "message": "Funzione non disponibile" + }, + "updateKey": { + "message": "Non puoi utilizzare questa funzione finché non aggiorni la tua chiave di cifratura." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB di spazio di archiviazione cifrato per gli allegati." + }, + "ppremiumSignUpTwoStep": { + "message": "Opzioni addizionali di login in due passaggi come YubiKey, FIDO U2F, e Duo." + }, + "ppremiumSignUpReports": { + "message": "Sicurezza delle password, integrità dell'account e resoconti sulla violazione di dati per mantenere sicura la tua cassaforte." + }, + "ppremiumSignUpTotp": { + "message": "Generatore di codice di verifica TOTP (2FA) per i login nella tua cassaforte." + }, + "ppremiumSignUpSupport": { + "message": "Supporto clienti prioritario." + }, + "ppremiumSignUpFuture": { + "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 soli $PRICE$ all'anno!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Aggiornamento completato" + }, + "disableAutoTotpCopy": { + "message": "Disattiva copia TOTP automatica" + }, + "disableAutoTotpCopyDesc": { + "message": "Se il tuo login ha un autenticatore collegato, il codice ti verifica TOTP è automaticamente copiato negli appunti ogni volta che auto-completi il login." + }, + "disableAutoBiometricsPrompt": { + "message": "Non richiedere dati biometrici all'avvio" + }, + "premiumRequired": { + "message": "Premium richiesto" + }, + "premiumRequiredDesc": { + "message": "Un abbonamento premium è richiesto per utilizzare questa funzionalità." + }, + "enterVerificationCodeApp": { + "message": "Inserisci il codice di verifica a 6 cifre dalla tua applicazione di autenticazione." + }, + "enterVerificationCodeEmail": { + "message": "Inserisci il codice di verifica a 6 cifrato inviato a $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 login in due passaggi" + }, + "insertYubiKey": { + "message": "Inserisci la tua YubiKey nella porta USB del computer, 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." + }, + "webAuthnNewTab": { + "message": "Per avviare la verifica WebAuthn 2FA. Fare clic sul pulsante in basso per aprire una nuova scheda e seguire le istruzioni fornite nella nuova scheda. " + }, + "webAuthnNewTabOpen": { + "message": "Apri nuova scheda" + }, + "webAuthnAuthenticate": { + "message": "Autenticazione WebAuthn" + }, + "loginUnavailable": { + "message": "Login non disponibile" + }, + "noTwoStepProviders": { + "message": "Questo account ha abilitato il login in due passaggi, ma nessuno dei provider configurati è supportato da questo browser web." + }, + "noTwoStepProviders2": { + "message": "Utilizzare un browser web supportato (come Chrome) e/o aggiungere altri provider che sono supportati meglio da tutti i browser web (ad esempio un'applicazione di autenticazione)." + }, + "twoStepOptions": { + "message": "Opzioni di login in due passaggi" + }, + "recoveryCodeDesc": { + "message": "Hai perso l'accesso a tutti i tuoi provider a due passaggi? Usa il tuo codice di recupero per disattivarli dal 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. Funziona 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." + }, + "selfHostedEnvironment": { + "message": "Ambiente self-hosted" + }, + "selfHostedEnvironmentFooter": { + "message": "Specifica l'URL principale della tua installazione Bitwarden self-hosted." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Abilita l'auto-completamento al caricamento della pagina" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Se viene rilevato un modulo di accesso, effettua un auto-completamento quando la pagina web si carica." + }, + "experimentalFeature": { + "message": "Al momento questa funzionalità è sperimentale. Usala a tuo rischio e pericolo." + }, + "defaultAutoFillOnPageLoad": { + "message": "Impostazioni di completamento automatico predefinito per i login" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Dopo aver abilitato il completamento automatico al caricamento della pagina, è possibile abilitare o disabilitare la funzione per singoli login. Questa è l'impostazione predefinita per i login che non sono configurati separatamente." + }, + "itemAutoFillOnPageLoad": { + "message": "Autocompletamento al caricamento della pagina (se abilitato nelle opzioni)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Usa impostazione predefinita" + }, + "autoFillOnPageLoadYes": { + "message": "Autocompletamento al caricamento della pagina" + }, + "autoFillOnPageLoadNo": { + "message": "Non completare automaticamente al caricamento della pagina" + }, + "commandOpenPopup": { + "message": "Apri popup cassaforte" + }, + "commandOpenSidebar": { + "message": "Apri la cassaforte nella barra laterale" + }, + "commandAutofillDesc": { + "message": "Auto-completa con l'ultimo accesso utilizzato sul sito corrente" + }, + "commandGeneratePasswordDesc": { + "message": "Genera e copia una nuova password casuale negli appunti" + }, + "commandLockVaultDesc": { + "message": "Blocca la cassaforte" + }, + "privateModeWarning": { + "message": "Il supporto della modalità privata è sperimentale e alcune funzionalità sono limitate." + }, + "customFields": { + "message": "Campi personalizzati" + }, + "copyValue": { + "message": "Copia valore" + }, + "value": { + "message": "Valore" + }, + "newCustomField": { + "message": "Nuovo campo personalizzato" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Valore collegato", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Facendo clic all'esterno della finestra popup per controllare la mail con il codice di verifica chiuderà la finestra di popup. Vuoi aprire questo popup in una nuova finestra?" + }, + "popupU2fCloseMessage": { + "message": "Questo browser non può elaborare richieste U2F in questa finestra a comparsa. Vuoi aprire questo popup in una nuova finestra in modo da poter accedere usando U2F?" + }, + "disableFavicon": { + "message": "Disabilita icone dei siti web" + }, + "disableFaviconDesc": { + "message": "Le icone del sito web forniscono un'immagine riconoscibile accanto a ogni elemento di login della tua cassaforte." + }, + "disableBadgeCounter": { + "message": "Disabilita contatore delle occorrenze" + }, + "disableBadgeCounterDesc": { + "message": "Il contatore delle occorrenze indica quanti accessi hai per la pagina corrente nella tua cassaforte." + }, + "cardholderName": { + "message": "Titolare della carta" + }, + "number": { + "message": "Numero" + }, + "brand": { + "message": "Marca" + }, + "expirationMonth": { + "message": "Mese di scadenza" + }, + "expirationYear": { + "message": "Anno di scadenza" + }, + "expiration": { + "message": "Scadenza" + }, + "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" + }, + "securityCode": { + "message": "Codice di sicurezza" + }, + "ex": { + "message": "es." + }, + "title": { + "message": "Titolo" + }, + "mr": { + "message": "Sig" + }, + "mrs": { + "message": "Sig.ra" + }, + "ms": { + "message": "Sig.ra" + }, + "dr": { + "message": "Dottore" + }, + "firstName": { + "message": "Nome" + }, + "middleName": { + "message": "Secondo nome" + }, + "lastName": { + "message": "Cognome" + }, + "fullName": { + "message": "Nome completo" + }, + "identityName": { + "message": "Nome dell'identità" + }, + "company": { + "message": "Azienda" + }, + "ssn": { + "message": "Codice fiscale/Previdenza sociale" + }, + "passportNumber": { + "message": "Numero del passaporto" + }, + "licenseNumber": { + "message": "Numero della patente" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telefono" + }, + "address": { + "message": "Indirizzo" + }, + "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" + }, + "type": { + "message": "Tipo" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Login" + }, + "typeSecureNote": { + "message": "Nota sicura" + }, + "typeCard": { + "message": "Carta" + }, + "typeIdentity": { + "message": "Identità" + }, + "passwordHistory": { + "message": "Cronologia delle password" + }, + "back": { + "message": "Indietro" + }, + "collections": { + "message": "Raccolte" + }, + "favorites": { + "message": "Preferiti" + }, + "popOutNewWindow": { + "message": "Apri in una nuova finestra" + }, + "refresh": { + "message": "Aggiorna" + }, + "cards": { + "message": "Carte" + }, + "identities": { + "message": "Identità" + }, + "logins": { + "message": "Login" + }, + "secureNotes": { + "message": "Note sicure" + }, + "clear": { + "message": "Cancella", + "description": "To clear something out. example: To clear browser history." + }, + "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 database di violazioni 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" + }, + "toggleCurrentUris": { + "message": "Mostra/Nascondi URI attuale", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI attuale", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organizzazione", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tipi" + }, + "allItems": { + "message": "Tutti gli elementi" + }, + "noPasswordsInList": { + "message": "Non ci sono password da elencare." + }, + "remove": { + "message": "Rimuovi" + }, + "default": { + "message": "Predefinito" + }, + "dateUpdated": { + "message": "Aggiornato", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password aggiornata", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Sei sicuro di voler usare l'opzione \"Mai\"? Impostando le opzioni di blocco su \"Mai\", la chiave di cifratura della cassaforte sarà salvata sul tuo dispositivo. Se utilizzi questa opzione, assicurati di mantenere il dispositivo adeguatamente protetto." + }, + "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": "Forte", + "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 PIN saranno reimpostate se eseguirai una disconnessione completa dall'applicazione." + }, + "pinRequired": { + "message": "È richiesto il PIN." + }, + "invalidPin": { + "message": "Codice PIN non valido." + }, + "unlockWithBiometrics": { + "message": "Sblocca con i dati biometrici" + }, + "awaitDesktop": { + "message": "In attesa di conferma dal desktop" + }, + "awaitDesktopDesc": { + "message": "Conferma utilizzando l'autenticazione biometrica nell'applicazione Bitwarden Desktop per abilitare l'autenticazione biometrica per il browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Blocca con la password principale al riavvio del browser" + }, + "selectOneCollection": { + "message": "Devi selezionare almeno una raccolta." + }, + "cloneItem": { + "message": "Clona elemento" + }, + "clone": { + "message": "Clona" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una o più policy dell'organizzazione controllano le impostazioni del tuo generatore." + }, + "vaultTimeoutAction": { + "message": "Azione timeout cassaforte" + }, + "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" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "La disconnessione rimuove tutti gli accessi alla cassaforte e richiede l'autenticazione online dopo il periodo di timeout. Sei sicuro di voler utilizzare questa impostazione?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Conferma azione di timeout" + }, + "autoFillAndSave": { + "message": "Riempi automaticamente e salva" + }, + "autoFillSuccessAndSavedUri": { + "message": "Elemento riempito automaticamente e URI salvato" + }, + "autoFillSuccess": { + "message": "Elemento riempito automaticamente" + }, + "setMasterPassword": { + "message": "Imposta la 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à di $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Lunghezza minima di $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 parametri di sicurezza." + }, + "acceptPolicies": { + "message": "Selezionando la casella accetti quanto segue:" + }, + "acceptPoliciesError": { + "message": "I termini di servizio e l'informativa sulla privacy non sono stati accettati." + }, + "termsOfService": { + "message": "Termini del servizio" + }, + "privacyPolicy": { + "message": "Informativa sulla privacy" + }, + "hintEqualsPassword": { + "message": "Il suggerimento della password non può essere uguale alla password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Verifica sincronizzazione desktop" + }, + "desktopIntegrationVerificationText": { + "message": "Verifica che l'applicazione desktop mostri questa impronta digitale: " + }, + "desktopIntegrationDisabledTitle": { + "message": "L'integrazione del browser non è abilitata" + }, + "desktopIntegrationDisabledDesc": { + "message": "L'integrazione del browser non è abilitata nell'applicazione Bitwarden Desktop. Attivala nelle impostazioni all'interno dell'applicazione desktop." + }, + "startDesktopTitle": { + "message": "Avvia l'applicazione desktop Bitwarden" + }, + "startDesktopDesc": { + "message": "L'applicazione Bitwarden Desktop deve essere avviata prima che questa funzione possa essere utilizzata." + }, + "errorEnableBiometricTitle": { + "message": "Impossibile abilitare l'autenticazione biometrica" + }, + "errorEnableBiometricDesc": { + "message": "L'azione è stata annullata dall'applicazione desktop" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "L'applicazione desktop ha invalidato il canale di comunicazione sicuro. Ritenta l'operazione" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Comunicazione desktop interrotta" + }, + "nativeMessagingWrongUserDesc": { + "message": "L'applicazione desktop è collegata a un account diverso. Assicurati che entrambe le applicazioni siano collegate allo stesso account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account non corrispondente" + }, + "biometricsNotEnabledTitle": { + "message": "Autenticazione biometrica non abilitata" + }, + "biometricsNotEnabledDesc": { + "message": "L'autenticazione biometrica del browser richiede che l'autenticazione biometrica del desktop sia prima abilitata nelle impostazioni." + }, + "biometricsNotSupportedTitle": { + "message": "Autenticazione biometrica non supportata" + }, + "biometricsNotSupportedDesc": { + "message": "L'autenticazione biometrica del browser non è supportata su questo dispositivo." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permesso non fornito" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Senza l'autorizzazione per comunicare con l'applicazione Bitwarden Desktop non è possibile fornire l'autenticazione biometrica nell'estensione del browser. Riprova di nuovo." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Errore richiesta di autorizzazione" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Questa azione non può essere eseguita nella barra laterale, riprova l'azione nel popup o nella finestra." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Una policy dell'organizzazione controlla le opzioni di proprietà." + }, + "excludedDomains": { + "message": "Domini esclusi" + }, + "excludedDomainsDesc": { + "message": "Bitwarden non chiederà di salvare i dettagli di accesso per questi domini. È necessario aggiornare la pagina perché le modifiche abbiano effetto." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ non è un dominio valido", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Cerca Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Aggiungi Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Testo" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "Tutti i Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Numero massimo di accessi raggiunto", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Scaduto" + }, + "pendingDeletion": { + "message": "In attesa di eliminazione" + }, + "passwordProtected": { + "message": "Protetto da password" + }, + "copySendLink": { + "message": "Copia collegamento del Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Rimuovi password" + }, + "delete": { + "message": "Elimina" + }, + "removedPassword": { + "message": "Password rimossa" + }, + "deletedSend": { + "message": "Send eliminato", + "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." + }, + "disabled": { + "message": "Disabilitato" + }, + "removePasswordConfirmation": { + "message": "Sei sicuro di voler rimuovere la password?" + }, + "deleteSend": { + "message": "Elimina Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Modifica Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Un nome intuitivo per descrivere questo Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Il file da inviare." + }, + "deletionDate": { + "message": "Data di eliminazione" + }, + "deletionDateDesc": { + "message": "Il Send sarà definitivamente eliminato alla data e 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 impostato, 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." + }, + "oneDay": { + "message": "1 giorno" + }, + "days": { + "message": "$DAYS$ giorni", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Personalizzato" + }, + "maximumAccessCount": { + "message": "Numero massimo di accessi" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copia il collegamento del Send negli appunti dopo aver salvato.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Il testo che vuoi inviare." + }, + "sendHideText": { + "message": "Nascondi il testo di questo Send in modo predefinito.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Numero di accessi attuale" + }, + "createSend": { + "message": "Crea nuovo Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nuova password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Per scegliere un file, apri l'estensione nella barra laterale (se possibile) o apri una nuova finestra facendo clic su questo banner." + }, + "sendFirefoxFileWarning": { + "message": "Per scegliere un file utilizzando Firefox, apri l'estensione nella barra laterale o apri una nuova finestra facendo clic sul banner." + }, + "sendSafariFileWarning": { + "message": "Per scegliere un file utilizzando Safari, apri una nuova finestra facendo clic sul banner." + }, + "sendFileCalloutHeader": { + "message": "Prima di iniziare" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Per usare un selettore di date stile calendario", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "fai clic qui", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "per aprire la finestra.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "La data di scadenza fornita non è valida." + }, + "deletionDateIsInvalid": { + "message": "La data di eliminazione fornita non è valida." + }, + "expirationDateAndTimeRequired": { + "message": "È necessario inserire data e ora di scadenza." + }, + "deletionDateAndTimeRequired": { + "message": "È necessario inserire data e ora di eliminazione." + }, + "dateParsingError": { + "message": "Si è verificato un errore durante il salvataggio delle date di eliminazione e scadenza." + }, + "hideEmail": { + "message": "Nascondi il mio indirizzo email dai destinatari." + }, + "sendOptionsPolicyInEffect": { + "message": "Una o più policy dell'organizzazione influenzano le opzioni dei Send." + }, + "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à." + }, + "emailVerificationRequired": { + "message": "Verifica email richiesta" + }, + "emailVerificationRequiredDesc": { + "message": "Devi verificare la tua email per utilizzare questa funzionalità. Puoi verificare la tua email nella cassaforte web." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Seleziona cartella..." + }, + "ssoCompleteRegistration": { + "message": "Per completare l'accesso con SSO, imposta una password principale per accedere e proteggere la cassaforte." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Il timeout della tua cassaforte supera i limiti impostati dalla tua organizzazione." + }, + "vaultExportDisabled": { + "message": "Esportazione cassaforte disabilitata" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una o più policy dell'organizzazione ti impediscono di esportare la tua cassaforte personale." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Impossibile identificare un elemento del form valido. Prova a ispezionare l'HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nessun identificatore univoco trovato." + }, + "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" + }, + "removeMasterPassword": { + "message": "Rimuovi la password principale" + }, + "removedMasterPassword": { + "message": "Password principale rimossa." + }, + "leaveOrganizationConfirmation": { + "message": "Sei sicuro di voler lasciare questa organizzazione?" + }, + "leftOrganization": { + "message": "Hai lasciato l'organizzazione." + }, + "toggleCharacterCount": { + "message": "Attiva/Disattiva conteggio dei caratteri" + }, + "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" + } + } + }, + "error": { + "message": "Errore" + }, + "regenerateUsername": { + "message": "Rigenera nome utente" + }, + "generateUsername": { + "message": "Genera nome utente" + }, + "usernameType": { + "message": "Tipo di nome utente" + }, + "plusAddressedEmail": { + "message": "Indirizzo email alternativo", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Cosa vorresti generare?" + }, + "passwordType": { + "message": "Tipo di password" + }, + "service": { + "message": "Servizio" + } +} diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json new file mode 100644 index 0000000000..d6f5ebd0b2 --- /dev/null +++ b/apps/browser/src/_locales/ja/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - 無料パスワードマネージャー", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden はあらゆる端末で使える、安全な無料パスワードマネージャーです。", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "安全なデータ保管庫へアクセスするためにログインまたはアカウントを作成してください。" + }, + "createAccount": { + "message": "アカウントの作成" + }, + "login": { + "message": "ログイン" + }, + "enterpriseSingleSignOn": { + "message": "組織のシングルサインオン" + }, + "cancel": { + "message": "キャンセル" + }, + "close": { + "message": "閉じる" + }, + "submit": { + "message": "送信" + }, + "emailAddress": { + "message": "メールアドレス" + }, + "masterPass": { + "message": "マスターパスワード" + }, + "masterPassDesc": { + "message": "マスターパスワードは、パスワード保管庫へのアクセスに使用するパスワードです。あなたのマスターパスワードを忘れないように注意してください。忘れた場合、パスワードを回復する方法はありません。" + }, + "masterPassHintDesc": { + "message": "マスターパスワードのヒントは、パスワードを忘れた場合に役立ちます。" + }, + "reTypeMasterPass": { + "message": "新しいパスワードを再入力" + }, + "masterPassHint": { + "message": "マスターパスワードのヒント (省略可能)" + }, + "tab": { + "message": "タブ" + }, + "myVault": { + "message": "保管庫" + }, + "tools": { + "message": "ツール" + }, + "settings": { + "message": "設定" + }, + "currentTab": { + "message": "現在のタブ" + }, + "copyPassword": { + "message": "パスワードをコピー" + }, + "copyNote": { + "message": "メモをコピー" + }, + "copyUri": { + "message": "URI をコピー" + }, + "copyUsername": { + "message": "ユーザー名をコピー" + }, + "copyNumber": { + "message": "番号のコピー" + }, + "copySecurityCode": { + "message": "セキュリティコードをコピー" + }, + "autoFill": { + "message": "自動入力" + }, + "generatePasswordCopied": { + "message": "パスワードを生成 (コピー)" + }, + "copyElementIdentifier": { + "message": "カスタムフィールド名をコピー" + }, + "noMatchingLogins": { + "message": "一致するログインがありません。" + }, + "unlockVaultMenu": { + "message": "保管庫のロックを解除" + }, + "loginToVaultMenu": { + "message": "保管庫にログイン" + }, + "autoFillInfo": { + "message": "現在のブラウザタブに自動入力するログイン情報はありません。" + }, + "addLogin": { + "message": "ログイン情報を追加" + }, + "addItem": { + "message": "アイテムの追加" + }, + "passwordHint": { + "message": "パスワードのヒント" + }, + "enterEmailToGetHint": { + "message": "マスターパスワードのヒントを受信するアカウントのメールアドレスを入力してください。" + }, + "getMasterPasswordHint": { + "message": "マスターパスワードのヒントを取得する" + }, + "continue": { + "message": "続ける" + }, + "sendVerificationCode": { + "message": "確認コードをメールに送信" + }, + "sendCode": { + "message": "コードを送信" + }, + "codeSent": { + "message": "確認コードを送信しました。" + }, + "verificationCode": { + "message": "認証コード" + }, + "confirmIdentity": { + "message": "続行するには本人確認を行ってください。" + }, + "account": { + "message": "アカウント" + }, + "changeMasterPassword": { + "message": "マスターパスワードの変更" + }, + "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." + }, + "twoStepLogin": { + "message": "2段階認証" + }, + "logOut": { + "message": "ログアウト" + }, + "about": { + "message": "アプリについて" + }, + "version": { + "message": "バージョン" + }, + "save": { + "message": "保存" + }, + "move": { + "message": "移動" + }, + "addFolder": { + "message": "フォルダーを追加" + }, + "name": { + "message": "名前" + }, + "editFolder": { + "message": "フォルダーを編集" + }, + "deleteFolder": { + "message": "フォルダーを削除" + }, + "folders": { + "message": "フォルダー" + }, + "noFolders": { + "message": "一覧表示するフォルダーはありません。" + }, + "helpFeedback": { + "message": "ヘルプ&フィードバック" + }, + "sync": { + "message": "同期" + }, + "syncVaultNow": { + "message": "保管庫を同期する" + }, + "lastSync": { + "message": "前回の同期:" + }, + "passGen": { + "message": "パスワード生成ツール" + }, + "generator": { + "message": "パス生成", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "ログインのために強固なユニークパスワードを自動的に生成します。" + }, + "bitWebVault": { + "message": "Bitwarden ウェブ保管庫" + }, + "importItems": { + "message": "アイテムのインポート" + }, + "select": { + "message": "選択" + }, + "generatePassword": { + "message": "パスワードの自動生成" + }, + "regeneratePassword": { + "message": "パスワードの再生成" + }, + "options": { + "message": "オプション" + }, + "length": { + "message": "長さ" + }, + "uppercase": { + "message": "大文字(A-Z)" + }, + "lowercase": { + "message": "小文字(a-z)" + }, + "numbers": { + "message": "数字 (0~9)" + }, + "specialCharacters": { + "message": "特殊文字(!@#$%^&*)" + }, + "numWords": { + "message": "単語数" + }, + "wordSeparator": { + "message": "単語の区切り" + }, + "capitalize": { + "message": "先頭を大文字", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "数字を含む" + }, + "minNumbers": { + "message": "数字の最小数" + }, + "minSpecial": { + "message": "記号の最小数" + }, + "avoidAmbChar": { + "message": "あいまいな文字を省く" + }, + "searchVault": { + "message": "保管庫を検索" + }, + "edit": { + "message": "編集" + }, + "view": { + "message": "表示" + }, + "noItemsInList": { + "message": "表示するアイテムがありません" + }, + "itemInformation": { + "message": "アイテム情報" + }, + "username": { + "message": "ユーザ名" + }, + "password": { + "message": "パスワード" + }, + "passphrase": { + "message": "パスフレーズ" + }, + "favorite": { + "message": "お気に入り" + }, + "notes": { + "message": "メモ" + }, + "note": { + "message": "メモ" + }, + "editItem": { + "message": "アイテムの編集" + }, + "folder": { + "message": "フォルダー" + }, + "deleteItem": { + "message": "アイテムの削除" + }, + "viewItem": { + "message": "アイテムの表示" + }, + "launch": { + "message": "開く" + }, + "website": { + "message": "ウェブサイト" + }, + "toggleVisibility": { + "message": "表示切り替え" + }, + "manage": { + "message": "管理" + }, + "other": { + "message": "その他" + }, + "rateExtension": { + "message": "拡張機能の評価" + }, + "rateExtensionDesc": { + "message": "良いレビューで私たちを助けてください!" + }, + "browserNotSupportClipboard": { + "message": "お使いのブラウザはクリップボードへのコピーに対応していません。手動でコピーしてください" + }, + "verifyIdentity": { + "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": "マスターパスワードが間違っています" + }, + "vaultTimeout": { + "message": "保管庫のタイムアウト" + }, + "lockNow": { + "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時間" + }, + "onLocked": { + "message": "ロック時" + }, + "onRestart": { + "message": "ブラウザ再起動時" + }, + "never": { + "message": "なし" + }, + "security": { + "message": "セキュリティ" + }, + "errorOccurred": { + "message": "エラーが発生しました" + }, + "emailRequired": { + "message": "Eメールアドレスは必須項目です。" + }, + "invalidEmail": { + "message": "無効なEメールアドレスです。" + }, + "masterPassRequired": { + "message": "マスターパスワードは必須です。" + }, + "masterPassLength": { + "message": "マスターパスワードは、少なくとも8文字以上で設定してください。" + }, + "masterPassDoesntMatch": { + "message": "マスターパスワードが一致しません。" + }, + "newAccountCreated": { + "message": "新しいアカウントを作成しました!今すぐログインできます。" + }, + "masterPassSent": { + "message": "あなたのマスターパスワードのヒントを記載したメールを送信しました。" + }, + "verificationCodeRequired": { + "message": "認証コードは必須項目です。" + }, + "invalidVerificationCode": { + "message": "認証コードが間違っています" + }, + "valueCopied": { + "message": "$VALUE$ をコピーしました", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "選択したアイテムをこのページで自動入力できませんでした。コピーして貼り付けてください。" + }, + "loggedOut": { + "message": "ログアウトしました" + }, + "loginExpired": { + "message": "ログインセッションの有効期限が切れています。" + }, + "logOutConfirmation": { + "message": "ログアウトしてもよろしいですか?" + }, + "yes": { + "message": "はい" + }, + "no": { + "message": "いいえ" + }, + "unexpectedError": { + "message": "予期せぬエラーが発生しました。" + }, + "nameRequired": { + "message": "名前は必須項目です。" + }, + "addedFolder": { + "message": "フォルダーを追加しました" + }, + "changeMasterPass": { + "message": "マスターパスワードの変更" + }, + "changeMasterPasswordConfirmation": { + "message": "マスターパスワードは bitwarden.com ウェブ保管庫で変更できます。ウェブサイトを開きますか?" + }, + "twoStepLoginConfirmation": { + "message": "2段階認証を使うと、ログイン時にセキュリティキーや認証アプリ、SMS、電話やメールでの認証を必要にすることでアカウントをさらに安全に出来ます。2段階認証は bitwarden.com ウェブ保管庫で有効化できます。ウェブサイトを開きますか?" + }, + "editedFolder": { + "message": "フォルダーを編集しました" + }, + "deleteFolderConfirmation": { + "message": "フォルダーを削除しますか?" + }, + "deletedFolder": { + "message": "フォルダーを削除しました" + }, + "gettingStartedTutorial": { + "message": "使い方のチュートリアル" + }, + "gettingStartedTutorialVideo": { + "message": "ブラウザの拡張機能を最大限に活用するための方法を学習できる、チュートリアルを見てください。" + }, + "syncingComplete": { + "message": "同期が完了しました" + }, + "syncingFailed": { + "message": "同期に失敗しました" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "追加しました" + }, + "editedItem": { + "message": "編集しました" + }, + "deleteItemConfirmation": { + "message": "このアイテムを削除しますか?" + }, + "deletedItem": { + "message": "削除済みのアイテム" + }, + "overwritePassword": { + "message": "パスワードを上書き" + }, + "overwritePasswordConfirmation": { + "message": "現在のパスワードを上書きしてよろしいですか?" + }, + "overwriteUsername": { + "message": "ユーザー名を上書き" + }, + "overwriteUsernameConfirmation": { + "message": "現在のユーザー名を上書きしてもよろしいですか?" + }, + "searchFolder": { + "message": "フォルダーの検索" + }, + "searchCollection": { + "message": "コレクションの検索" + }, + "searchType": { + "message": "検索の種類" + }, + "noneFolder": { + "message": "フォルダーなし", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "ログイン情報追加の通知を無効化" + }, + "addLoginNotificationDesc": { + "message": "初めてログインしたとき保管庫にログイン情報を保存するよう「ログイン情報を追加」通知を自動的に表示します。" + }, + "dontShowCardsCurrentTab": { + "message": "タブページにカードを表示しない" + }, + "dontShowCardsCurrentTabDesc": { + "message": "保管庫にあるカードアイテムは自動入力しやすいよう「タブ」に表示されます。" + }, + "dontShowIdentitiesCurrentTab": { + "message": "タブページに ID を表示しない" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "保管庫にある ID アイテムは自動入力しやすいよう「タブ」に表示されます。" + }, + "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." + }, + "notificationAddDesc": { + "message": "このパスワードを Bitwarden に保存しますか?" + }, + "notificationAddSave": { + "message": "保存する" + }, + "disableChangedPasswordNotification": { + "message": "パスワードの変更通知を無効化" + }, + "disableChangedPasswordNotificationDesc": { + "message": "ウェブサイトでパスワードを変更したことを検出したとき、保管庫のパスワードを更新するために自動的に「パスワードの変更通知」を表示します。" + }, + "notificationChangeDesc": { + "message": "Bitwarden でこのパスワードを更新しますか?" + }, + "notificationChangeSave": { + "message": "今すぐ更新する" + }, + "disableContextMenuItem": { + "message": "コンテキストメニューオプションを無効化" + }, + "disableContextMenuItemDesc": { + "message": "コンテキストメニューのオプションで、現在のタブのウェブサイトのログイン情報やパスワード生成に素早くアクセスできます。" + }, + "defaultUriMatchDetection": { + "message": "デフォルトの URI 一致検出方法", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "自動入力などのアクションをする時に、デフォルトでどの方法で URI の一致を検出するか選択します。" + }, + "theme": { + "message": "テーマ" + }, + "themeDesc": { + "message": "アプリのテーマカラーを変更します。" + }, + "dark": { + "message": "ダーク", + "description": "Dark color" + }, + "light": { + "message": "ライト", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized ダーク", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "保管庫のデータをエクスポートするにはマスターパスワードを入力してください。" + }, + "shared": { + "message": "共有" + }, + "learnOrg": { + "message": "組織について学ぶ" + }, + "learnOrgConfirmation": { + "message": "Bitwarden は組織を使って保管庫アイテムを他の人と共有することができます。詳細は bitwarden.com ウェブサイトをご覧ください。" + }, + "moveToOrganization": { + "message": "組織に移動" + }, + "share": { + "message": "共有" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ を $ORGNAME$ に移動しました", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "このアイテムを移動する組織を選択してください。組織に移動すると、アイテムの所有権がその組織に移行します。 このアイテムが移動された後、あなたはこのアイテムの直接の所有者にはなりません。" + }, + "learnMore": { + "message": "さらに詳しく" + }, + "authenticatorKeyTotp": { + "message": "認証キー (TOTP)" + }, + "verificationCodeTotp": { + "message": "認証コード (TOTP)" + }, + "copyVerificationCode": { + "message": "認証コードのコピー" + }, + "attachments": { + "message": "添付ファイル" + }, + "deleteAttachment": { + "message": "添付ファイルの削除" + }, + "deleteAttachmentConfirmation": { + "message": "この添付ファイルを削除してよろしいですか?" + }, + "deletedAttachment": { + "message": "削除された添付ファイル" + }, + "newAttachment": { + "message": "添付ファイルの追加" + }, + "noAttachments": { + "message": "添付ファイルなし" + }, + "attachmentSaved": { + "message": "添付ファイルを保存しました。" + }, + "file": { + "message": "ファイル" + }, + "selectFile": { + "message": "ファイルを選択してください。" + }, + "maxFileSize": { + "message": "最大ファイルサイズ: 500 MB" + }, + "featureUnavailable": { + "message": "サービスが利用できません" + }, + "updateKey": { + "message": "暗号キーを更新するまでこの機能は使用できません。" + }, + "premiumMembership": { + "message": "プレミアム会員" + }, + "premiumManage": { + "message": "会員情報の管理" + }, + "premiumManageAlert": { + "message": "会員情報は bitwarden.com ウェブ保管庫で管理できます。ウェブサイトを開きますか?" + }, + "premiumRefresh": { + "message": "会員情報の更新" + }, + "premiumNotCurrentMember": { + "message": "あなたは現在プレミアム会員ではありません。" + }, + "premiumSignUpAndGet": { + "message": "プレミアム会員に登録すると以下の特典を得られます:" + }, + "ppremiumSignUpStorage": { + "message": "1GB の暗号化されたファイルストレージ" + }, + "ppremiumSignUpTwoStep": { + "message": "YubiKey、FIDO U2F、Duoなどの追加の2段階認証ログインオプション" + }, + "ppremiumSignUpReports": { + "message": "保管庫を安全に保つための、パスワードやアカウントの健全性、データ侵害に関するレポート" + }, + "ppremiumSignUpTotp": { + "message": "保管庫内での2段階認証コード生成" + }, + "ppremiumSignUpSupport": { + "message": "優先カスタマーサポート" + }, + "ppremiumSignUpFuture": { + "message": "将来のプレミアム機能すべて(詳細は近日公開予定!)" + }, + "premiumPurchase": { + "message": "プレミアム会員に加入" + }, + "premiumPurchaseAlert": { + "message": "プレミアム会員権は bitwarden.com ウェブ保管庫で購入できます。ウェブサイトを開きますか?" + }, + "premiumCurrentMember": { + "message": "あなたはプレミアム会員です!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden を支援いただき、ありがとうございます。" + }, + "premiumPrice": { + "message": "全部でなんと$PRICE$/年だけ!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "更新完了" + }, + "disableAutoTotpCopy": { + "message": "認証コードの自動コピーを無効化" + }, + "disableAutoTotpCopyDesc": { + "message": "ログイン情報に認証キーが添付されている場合、自動入力した時に認証コードが自動的にクリップボードへコピーされます。" + }, + "disableAutoBiometricsPrompt": { + "message": "起動時に生体認証のプロンプトを表示しない" + }, + "premiumRequired": { + "message": "プレミアム会員専用" + }, + "premiumRequiredDesc": { + "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 ポートに挿入し、ボタンがある場合はボタンをタッチしてください。" + }, + "webAuthnNewTab": { + "message": "WebAuthn 2FA 認証を開始するには、下のボタンをクリックして新しいタブを開き、新しいタブの指示に従ってください。" + }, + "webAuthnNewTabOpen": { + "message": "新しいタブを開く" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn の認証" + }, + "loginUnavailable": { + "message": "ログインできません。" + }, + "noTwoStepProviders": { + "message": "このアカウントは2段階認証が有効ですが、このブラウザに対応した2段階認証プロパイダが一つも設定されていません。" + }, + "noTwoStepProviders2": { + "message": "Chrome などの対応したブラウザを使うか、より幅広い端末に対応した認証プロパイダを追加してください。" + }, + "twoStepOptions": { + "message": "2段階認証オプション" + }, + "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": "確認コードをメールにお送りします。" + }, + "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 を保存しました。" + }, + "enableAutoFillOnPageLoad": { + "message": "ページ読み込み時の自動入力を有効化" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "ページ読み込み時にログインフォームを検出したとき、ログイン情報を自動入力します。" + }, + "experimentalFeature": { + "message": "これは現在、実験的な機能です。自己責任で使用してください。" + }, + "defaultAutoFillOnPageLoad": { + "message": "ログインアイテムのデフォルトの自動入力設定" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "ページ読み込み時に自動入力を有効にすると、個々のログインアイテムの機能を有効または無効にできます。 これは個別に設定されていないログインアイテムに適用されるデフォルト設定です。" + }, + "itemAutoFillOnPageLoad": { + "message": "ページ読み込み時に自動入力する (オプションで有効な場合)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "デフォルト設定を使用" + }, + "autoFillOnPageLoadYes": { + "message": "ページ読み込み時に自動入力する" + }, + "autoFillOnPageLoadNo": { + "message": "ページ読み込み時に自動入力しない" + }, + "commandOpenPopup": { + "message": "ポップアップで保管庫を開く" + }, + "commandOpenSidebar": { + "message": "サイドバーで保管庫を開く" + }, + "commandAutofillDesc": { + "message": "現在のウェブサイトで前回使用されたログイン情報を自動入力します。" + }, + "commandGeneratePasswordDesc": { + "message": "ランダムなパスワードを生成してクリップボードにコピーします。" + }, + "commandLockVaultDesc": { + "message": "保管庫をロック" + }, + "privateModeWarning": { + "message": "プライベートモードのサポートは実験的であり、一部機能は制限されています。" + }, + "customFields": { + "message": "カスタムフィールド" + }, + "copyValue": { + "message": "値のコピー" + }, + "value": { + "message": "値" + }, + "newCustomField": { + "message": "新規カスタムフィールド" + }, + "dragToSort": { + "message": "ドラッグして並べ替え" + }, + "cfTypeText": { + "message": "テキスト" + }, + "cfTypeHidden": { + "message": "非表示" + }, + "cfTypeBoolean": { + "message": "真偽値" + }, + "cfTypeLinked": { + "message": "リンク済", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "リンクされた値", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "認証コードを確認するためにポップアップの外をクリックすると、このポップアップが閉じてしまいます。閉じてしまわないよう、新しいウインドウでこのポップアップを開きますか?" + }, + "popupU2fCloseMessage": { + "message": "このブラウザーでは U2F 要求をポップアップウインドウでは実行できません。U2F でログインできるよう、新しいウインドウで開き直しますか?" + }, + "disableFavicon": { + "message": "ウェブサイトアイコンの無効化" + }, + "disableFaviconDesc": { + "message": "保管庫のアイテム毎にウェブサイトのアイコンを表示します。" + }, + "disableBadgeCounter": { + "message": "バッジカウンターを無効化" + }, + "disableBadgeCounterDesc": { + "message": "保管庫にある、現在のページのログイン情報をバッジカウンターで表示します。" + }, + "cardholderName": { + "message": "カードの名義人名" + }, + "number": { + "message": "番号" + }, + "brand": { + "message": "ブランド" + }, + "expirationMonth": { + "message": "有効期限月" + }, + "expirationYear": { + "message": "有効期限年" + }, + "expiration": { + "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月" + }, + "securityCode": { + "message": "セキュリティコード" + }, + "ex": { + "message": "例:" + }, + "title": { + "message": "敬称" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "名" + }, + "middleName": { + "message": "ミドルネーム" + }, + "lastName": { + "message": "姓" + }, + "fullName": { + "message": "フルネーム" + }, + "identityName": { + "message": "固有名" + }, + "company": { + "message": "会社名" + }, + "ssn": { + "message": "社会保障番号" + }, + "passportNumber": { + "message": "パスポート番号" + }, + "licenseNumber": { + "message": "免許証番号" + }, + "email": { + "message": "メールアドレス" + }, + "phone": { + "message": "電話番号" + }, + "address": { + "message": "住所" + }, + "address1": { + "message": "住所 1" + }, + "address2": { + "message": "住所 2" + }, + "address3": { + "message": "住所 3" + }, + "cityTown": { + "message": "市町村" + }, + "stateProvince": { + "message": "都道府県" + }, + "zipPostalCode": { + "message": "郵便番号" + }, + "country": { + "message": "国" + }, + "type": { + "message": "タイプ" + }, + "typeLogin": { + "message": "ログイン" + }, + "typeLogins": { + "message": "ログイン" + }, + "typeSecureNote": { + "message": "セキュアメモ" + }, + "typeCard": { + "message": "カード" + }, + "typeIdentity": { + "message": "ID" + }, + "passwordHistory": { + "message": "パスワードの履歴" + }, + "back": { + "message": "戻る" + }, + "collections": { + "message": "コレクション" + }, + "favorites": { + "message": "お気に入り" + }, + "popOutNewWindow": { + "message": "新しいウインドウで開く" + }, + "refresh": { + "message": "更新" + }, + "cards": { + "message": "カード" + }, + "identities": { + "message": "ID" + }, + "logins": { + "message": "ログイン" + }, + "secureNotes": { + "message": "セキュアメモ" + }, + "clear": { + "message": "消去する", + "description": "To clear something out. example: To clear browser history." + }, + "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": "オプションの切り替え" + }, + "toggleCurrentUris": { + "message": "現在の URI を切り替え", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "現在の URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "組織", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "種類" + }, + "allItems": { + "message": "全てのアイテム" + }, + "noPasswordsInList": { + "message": "表示するパスワードがありません" + }, + "remove": { + "message": "削除" + }, + "default": { + "message": "デフォルト" + }, + "dateUpdated": { + "message": "更新日", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "パスワード更新日", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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 コードが間違っています。" + }, + "unlockWithBiometrics": { + "message": "生体認証でロック解除" + }, + "awaitDesktop": { + "message": "デスクトップからの確認待ち" + }, + "awaitDesktopDesc": { + "message": "ブラウザの生体認証を有効にするには、Bitwarden デスクトップアプリの生体認証を使用してください。" + }, + "lockWithMasterPassOnRestart": { + "message": "ブラウザー再起動時にマスターパスワードでロック" + }, + "selectOneCollection": { + "message": "最低でも一つのコレクションを選んでください。" + }, + "cloneItem": { + "message": "アイテムを複製" + }, + "clone": { + "message": "複製" + }, + "passwordGeneratorPolicyInEffect": { + "message": "一つ以上の組織のポリシーがパスワード生成の設定に影響しています。" + }, + "vaultTimeoutAction": { + "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": "リストアされたアイテム" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ログアウトすると保管庫へのすべてのアクセスが制限され、タイムアウト期間後にオンライン認証が必要になります。 この設定を使用してもよろしいですか?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "タイムアウトアクションの確認" + }, + "autoFillAndSave": { + "message": "自動入力して保存" + }, + "autoFillSuccessAndSavedUri": { + "message": "アイテムを自動入力して URI を保存しました" + }, + "autoFillSuccess": { + "message": "アイテムを自動入力しました" + }, + "setMasterPassword": { + "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": "利用規約とプライバシーポリシーを確認してください。" + }, + "termsOfService": { + "message": "サービス利用規約" + }, + "privacyPolicy": { + "message": "プライバシーポリシー" + }, + "hintEqualsPassword": { + "message": "パスワードのヒントをパスワードと同じにすることはできません。" + }, + "ok": { + "message": "OK" + }, + "desktopSyncVerificationTitle": { + "message": "デスクトップ同期の検証" + }, + "desktopIntegrationVerificationText": { + "message": "デスクトップアプリにこの指紋が表示されていることを確認してください: " + }, + "desktopIntegrationDisabledTitle": { + "message": "ブラウザ統合が有効になっていません" + }, + "desktopIntegrationDisabledDesc": { + "message": "Bitwarden デスクトップアプリでブラウザ統合が有効になっていません。デスクトップアプリの設定で有効にしてください。" + }, + "startDesktopTitle": { + "message": "Bitwarden デスクトップアプリを起動" + }, + "startDesktopDesc": { + "message": "この機能を使用するには、Bitwarden デスクトップアプリを起動してください。" + }, + "errorEnableBiometricTitle": { + "message": "生体認証を有効にできません" + }, + "errorEnableBiometricDesc": { + "message": "デスクトップアプリによってアクションがキャンセルされました" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "デスクトップアプリが安全な通信チャネルを無効にしました。操作をやり直してください。" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "デスクトップ通信が中断されました" + }, + "nativeMessagingWrongUserDesc": { + "message": "デスクトップアプリは別のアカウントにログインしています。両方のアプリが同じアカウントにログインしているか確認してください。" + }, + "nativeMessagingWrongUserTitle": { + "message": "アカウントが一致しません" + }, + "biometricsNotEnabledTitle": { + "message": "生体認証が有効になっていません" + }, + "biometricsNotEnabledDesc": { + "message": "ブラウザ生体認証を利用するには、まず設定でデスクトップ生体認証を有効にする必要があります。" + }, + "biometricsNotSupportedTitle": { + "message": "生体認証に対応していません" + }, + "biometricsNotSupportedDesc": { + "message": "このデバイスではブラウザの生体認証に対応していません。" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "権限が提供されていません" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bitwarden デスクトップアプリとの通信許可がなければ、ブラウザ拡張機能で生体認証を利用できません。もう一度やり直してください。" + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "権限リクエストエラー" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "この操作はサイドバーでは行えません。ポップアップまたはポップアウトでやり直してください。" + }, + "personalOwnershipSubmitError": { + "message": "組織のポリシーにより、個人の保管庫へのアイテムの保存が制限されています。 所有権を組織に変更し、利用可能なコレクションから選択してください。" + }, + "personalOwnershipPolicyInEffect": { + "message": "組織のポリシーが所有者のオプションに影響を与えています。" + }, + "excludedDomains": { + "message": "除外するドメイン" + }, + "excludedDomainsDesc": { + "message": "Bitwarden はこれらのドメインのログイン情報を保存するよう尋ねません。変更を有効にするにはページを更新する必要があります。" + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ は有効なドメインではありません", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Send を検索", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Send を追加", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "テキスト" + }, + "sendTypeFile": { + "message": "ファイル" + }, + "allSends": { + "message": "すべての Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "最大アクセス数に達しました", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "有効期限切れ" + }, + "pendingDeletion": { + "message": "削除の保留中" + }, + "passwordProtected": { + "message": "パスワード保護あり" + }, + "copySendLink": { + "message": "Send リンクをコピー", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "パスワードを削除" + }, + "delete": { + "message": "削除" + }, + "removedPassword": { + "message": "パスワードを削除" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "無効" + }, + "removePasswordConfirmation": { + "message": "パスワードを削除してもよろしいですか?" + }, + "deleteSend": { + "message": "Send を削除", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "この Send の種類は何ですか?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "この Send を説明するわかりやすい名前", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1日" + }, + "days": { + "message": "$DAYS$日", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "カスタム" + }, + "maximumAccessCount": { + "message": "最大アクセス数" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "誰もアクセスできないように、この Send を無効にする", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "保存時にこの Send のリンクをクリップボードにコピーする", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "送信したいテキスト" + }, + "sendHideText": { + "message": "この Send のテキストをデフォルトで非表示にする", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "現在のアクセス数" + }, + "createSend": { + "message": "新しい Send を作成", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "新しいパスワード" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "ファイルを選択するには、可能な場合サイドバーで拡張子を開くか、このバナーをクリックして新しいウィンドウにポップアップしてください。" + }, + "sendFirefoxFileWarning": { + "message": "Firefox を使用してファイルを選択するには、サイドバーで開くか、このバナーをクリックして新しいウィンドウで開いてください。" + }, + "sendSafariFileWarning": { + "message": "Safari を使用してファイルを選択するには、このバナーをクリックして新しいウィンドウで開いてください。" + }, + "sendFileCalloutHeader": { + "message": "はじめる前に" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "カレンダースタイルの日付ピッカーを使用するには", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "こちらをクリック", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "してください。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "入力された有効期限は正しくありません。" + }, + "deletionDateIsInvalid": { + "message": "入力された削除日時は正しくありません。" + }, + "expirationDateAndTimeRequired": { + "message": "有効期限は必須です。" + }, + "deletionDateAndTimeRequired": { + "message": "削除日時は必須です。" + }, + "dateParsingError": { + "message": "削除と有効期限の保存中にエラーが発生しました。" + }, + "hideEmail": { + "message": "メールアドレスを受信者に表示しない" + }, + "sendOptionsPolicyInEffect": { + "message": "一つ以上の組織ポリシーが Send の設定に影響しています。" + }, + "passwordPrompt": { + "message": "マスターパスワードの再要求" + }, + "passwordConfirmation": { + "message": "マスターパスワードの確認" + }, + "passwordConfirmationDesc": { + "message": "この操作は保護されています。続行するには、確認のためにマスターパスワードを再入力してください。" + }, + "emailVerificationRequired": { + "message": "メールアドレスの確認が必要です" + }, + "emailVerificationRequiredDesc": { + "message": "この機能を使用するにはメールアドレスを確認する必要があります。ウェブ保管庫でメールアドレスを確認できます。" + }, + "updatedMasterPassword": { + "message": "マスターパスワードを更新しました" + }, + "updateMasterPassword": { + "message": "マスターパスワードを更新しました" + }, + "updateMasterPasswordWarning": { + "message": "マスターパスワードは最近組織の管理者によって変更されました。保管庫にアクセスするには、今すぐ更新する必要があります。 続行すると現在のセッションからログアウトし、再度ログインする必要があります。 他のデバイスでのアクティブなセッションは、最大1時間アクティブになり続けることがあります。" + }, + "resetPasswordPolicyAutoEnroll": { + "message": "自動登録" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "この組織には自動的にパスワードリセットに登録するポリシーがあります。登録すると、組織の管理者はマスターパスワードを変更できます。" + }, + "selectFolder": { + "message": "フォルダーを選択..." + }, + "ssoCompleteRegistration": { + "message": "SSO ログインを完了するには、保管庫にアクセス・保護するためのマスターパスワードを設定してください。" + }, + "hours": { + "message": "時間" + }, + "minutes": { + "message": "分" + }, + "vaultTimeoutPolicyInEffect": { + "message": "あなたの組織ポリシーは保管庫のタイムアウトに影響を与えています。最大保管庫のタイムアウト時間は $HOURS$ 時間 $MINUTES$ 分です。", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "保管庫のタイムアウトが組織によって設定された制限を超えています。" + }, + "vaultExportDisabled": { + "message": "保管庫のエクスポートは無効です" + }, + "personalVaultExportPolicyInEffect": { + "message": "1 つまたは複数の組織ポリシーにより、個人の保管庫をエクスポートできません。" + }, + "copyCustomFieldNameInvalidElement": { + "message": "有効なフォーム要素を識別できませんでした。代わりに HTML を調べてみてください。" + }, + "copyCustomFieldNameNotUnique": { + "message": "一意の識別子が見つかりませんでした。" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ は自己ホストの鍵サーバで SSO を使用しています。この組織のメンバーのログインにマスターパスワードは必要ありません。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "組織から脱退する" + }, + "removeMasterPassword": { + "message": "マスターパスワードを削除する" + }, + "removedMasterPassword": { + "message": "マスターパスワードを削除しました。" + }, + "leaveOrganizationConfirmation": { + "message": "本当にこの組織から脱退しますか?" + }, + "leftOrganization": { + "message": "組織から脱退しました。" + }, + "toggleCharacterCount": { + "message": "文字カウントを切り替える" + }, + "sessionTimeout": { + "message": "セッションがタイムアウトしました。もう一度ログインしてください。" + }, + "exportingPersonalVaultTitle": { + "message": "個人保管庫のエクスポート" + }, + "exportingPersonalVaultDescription": { + "message": "$EMAIL$ に関連付けられた個人用保管庫アイテムのみがエクスポートされます。組織用保管庫アイテムは含まれません。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "エラー" + }, + "regenerateUsername": { + "message": "ユーザー名を再生成" + }, + "generateUsername": { + "message": "ユーザー名を生成" + }, + "usernameType": { + "message": "ユーザー名の種類" + }, + "plusAddressedEmail": { + "message": "プラス付きのメールアドレス", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "メールプロバイダのエイリアス機能を使用します。" + }, + "catchallEmail": { + "message": "キャッチオールメール" + }, + "catchallEmailDesc": { + "message": "ドメインに設定されたキャッチオール受信トレイを使用します。" + }, + "random": { + "message": "ランダム" + }, + "randomWord": { + "message": "ランダムな単語" + }, + "websiteName": { + "message": "ウェブサイト名" + }, + "whatWouldYouLikeToGenerate": { + "message": "何を生成しますか?" + }, + "passwordType": { + "message": "パスワードの種類" + }, + "service": { + "message": "サービス" + } +} diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json new file mode 100644 index 0000000000..ca6395e86d --- /dev/null +++ b/apps/browser/src/_locales/ka/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "ანგარიშის შექმნა" + }, + "login": { + "message": "ავტორიზაცია" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "გაუქმება" + }, + "close": { + "message": "დახურვა" + }, + "submit": { + "message": "დადასტურება" + }, + "emailAddress": { + "message": "ელ-ფოსტა" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "ხელსაწყოები" + }, + "settings": { + "message": "პარამეტრები" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "პაროლის კოპირება" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "მომხმარებლის სახელის კოპირება" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "უსაფრთხოების კოდის კოპირება" + }, + "autoFill": { + "message": "თვითშევსება" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "ავტორიზაციის დამატება" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "გაგრძელება" + }, + "sendVerificationCode": { + "message": "ვერიფიკაციის კოდის გაგზავნა საკუთარ მეილზე" + }, + "sendCode": { + "message": "კოდის გაგზავნა" + }, + "codeSent": { + "message": "კოდი გაიგზავნა" + }, + "verificationCode": { + "message": "ვერიფიკაციის კოდი" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "account": { + "message": "ანგარიში" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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." + }, + "twoStepLogin": { + "message": "ორსაფეხურიანი ავტორიზაცია" + }, + "logOut": { + "message": "გამოსვლა" + }, + "about": { + "message": "შესახებ" + }, + "version": { + "message": "ვერსია" + }, + "save": { + "message": "შენახვა" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "საქაღალდის დამატება" + }, + "name": { + "message": "სახელი" + }, + "editFolder": { + "message": "საქაღალდის რედაქტირება" + }, + "deleteFolder": { + "message": "საქაღალდის წაშლა" + }, + "folders": { + "message": "საქაღალდეები" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "დახმარება & გამოხმაურება" + }, + "sync": { + "message": "სინქრონიზაცია" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "მონიშვნა" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "პარამეტრები" + }, + "length": { + "message": "სიგრძე" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "სიტყვათა რაოდენობა" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "დიდი ასოთი აღნიშვნა", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "შეცვლა" + }, + "view": { + "message": "ნახვა" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "მომხმარებლის სახელი" + }, + "password": { + "message": "პაროლი" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "რჩეული" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "საქაღალდე" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "ვებგვერდი" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "მართვა" + }, + "other": { + "message": "სხვა" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "lockNow": { + "message": "Lock Now" + }, + "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 საათი" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Browser Restart" + }, + "never": { + "message": "არასოდეს" + }, + "security": { + "message": "უსაფრთხოება" + }, + "errorOccurred": { + "message": "დაფიქსირდა შეცდომა" + }, + "emailRequired": { + "message": "ელექტრონული ფოსტის მისამართი აუცილებელია." + }, + "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." + }, + "verificationCodeRequired": { + "message": "ვერიფიკაციის კოდი აუცილებელია." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "არა" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "სახელი სავალდებულოა." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "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?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Save" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Update" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json new file mode 100644 index 0000000000..c0fc9f75c3 --- /dev/null +++ b/apps/browser/src/_locales/km/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "login": { + "message": "Log In" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email Address" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "Copy Security Code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "Log Out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Add Folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit Folder" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "Options" + }, + "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" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favorite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "lockNow": { + "message": "Lock Now" + }, + "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" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Browser Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "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?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Save" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Update" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json new file mode 100644 index 0000000000..72a2a4a355 --- /dev/null +++ b/apps/browser/src/_locales/kn/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್" + }, + "extName": { + "message": "ಬಿಟ್‌ವಾರ್ಡೆನ್ - ಉಚಿತ ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕ", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಸುರಕ್ಷಿತ ಮತ್ತು ಉಚಿತ ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕ.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "ನಿಮ್ಮ ಸುರಕ್ಷಿತ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಲಾಗ್ ಇನ್ ಮಾಡಿ ಅಥವಾ ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಿ." + }, + "createAccount": { + "message": "ಖಾತೆ ತೆರೆ" + }, + "login": { + "message": "ಲಾಗಿನ್" + }, + "enterpriseSingleSignOn": { + "message": "ಎಂಟರ್‌ಪ್ರೈಸ್ ಏಕ ಸೈನ್-ಆನ್" + }, + "cancel": { + "message": "ರದ್ದು" + }, + "close": { + "message": "ಮುಚ್ಚಿ" + }, + "submit": { + "message": "ಒಪ್ಪಿಸು" + }, + "emailAddress": { + "message": "ಇಮೇಲ್ ವಿಳಾಸ" + }, + "masterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್" + }, + "masterPassDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ನೀವು ಬಳಸುವ ಪಾಸ್ವರ್ಡ್ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಆಗಿದೆ. ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು ಮರೆಯದಿರುವುದು ಬಹಳ ಮುಖ್ಯ. ನೀವು ಅದನ್ನು ಮರೆತ ಸಂದರ್ಭದಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಪಡೆಯಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲ." + }, + "masterPassHintDesc": { + "message": "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು ಮರೆತರೆ ಅದನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ." + }, + "reTypeMasterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರು-ಟೈಪ್ ಮಾಡಿ" + }, + "masterPassHint": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಸುಳಿವು (ಐಚ್ಛಿಕ)" + }, + "tab": { + "message": "ಟ್ಯಾಬ್" + }, + "myVault": { + "message": "ನನ್ನ ವಾಲ್ಟ್" + }, + "tools": { + "message": "ಉಪಕರಣ" + }, + "settings": { + "message": "ಸೆಟ್ಟಿಂಗ್‍ಗಳು\n" + }, + "currentTab": { + "message": "ಪ್ರಸ್ತುತ ಟ್ಯಾಬ್" + }, + "copyPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ನಕಲಿಸಿ" + }, + "copyNote": { + "message": "ಟಿಪ್ಪಣಿ ನಕಲಿಸಿ" + }, + "copyUri": { + "message": "URI ಅನ್ನು ನಕಲಿಸಿ" + }, + "copyUsername": { + "message": "ಬಳಕೆಹೆಸರು ನಕಲಿಸು" + }, + "copyNumber": { + "message": "ನಕಲು ಸಂಖ್ಯೆ" + }, + "copySecurityCode": { + "message": "ಭದ್ರತಾ ಕೋಡ್ ಅನ್ನು ನಕಲಿಸಿ" + }, + "autoFill": { + "message": "ಸ್ವಯಂ ಭರ್ತಿ" + }, + "generatePasswordCopied": { + "message": "ಪಾಸ್ವರ್ಡ್ ರಚಿಸಿ (ನಕಲಿಸಲಾಗಿದೆ)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "ಹೊಂದಾಣಿಕೆಯ ಲಾಗಿನ್‌ಗಳು ಇಲ್ಲ." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "ಪ್ರಸ್ತುತ ಬ್ರೌಸರ್ ಟ್ಯಾಬ್‌ಗಾಗಿ ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡಲು ಯಾವುದೇ ಲಾಗಿನ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ." + }, + "addLogin": { + "message": "ಲಾಗಿನ್ ಸೇರಿಸಿ" + }, + "addItem": { + "message": "ಐಟಂ ಸೇರಿಸಿ" + }, + "passwordHint": { + "message": "ಪಾಸ್ವರ್ಡ್ ಸುಳಿವು" + }, + "enterEmailToGetHint": { + "message": "ವಿಸ್ತರಣೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮೆನುವಿನಲ್ಲಿರುವ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಐಕಾನ್ ಟ್ಯಾಪ್ ಮಾಡಿ." + }, + "getMasterPasswordHint": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಸುಳಿವನ್ನು ಪಡೆಯಿರಿ" + }, + "continue": { + "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." + }, + "account": { + "message": "ಖಾತೆ" + }, + "changeMasterPassword": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಿ" + }, + "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." + }, + "twoStepLogin": { + "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್" + }, + "logOut": { + "message": "ಲಾಗ್ ಔಟ್" + }, + "about": { + "message": "ಬಗ್ಗೆ" + }, + "version": { + "message": "ಆವೃತ್ತಿ" + }, + "save": { + "message": "ಉಳಿಸಿ" + }, + "move": { + "message": "ಸರಿಸಿ" + }, + "addFolder": { + "message": "ಫೋಲ್ಡರ್ ಸೇರಿಸಿ" + }, + "name": { + "message": "ಹೆಸರು" + }, + "editFolder": { + "message": "ಫೋಲ್ಡರ್ ಸಂಪಾದಿಸಿ" + }, + "deleteFolder": { + "message": "ಫೋಲ್ಡರ್ ಅಳಿಸಿ" + }, + "folders": { + "message": "ಫೋಲ್ಡರ್‌ಗಳು" + }, + "noFolders": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಫೋಲ್ಡರ್‌ಗಳಿಲ್ಲ." + }, + "helpFeedback": { + "message": "ಸಹಾಯ ಪ್ರತಿಕ್ರಿಯೆ\n" + }, + "sync": { + "message": "ಸಿಂಕ್" + }, + "syncVaultNow": { + "message": "ವಾಲ್ಟ್ ಅನ್ನು ಈಗ ಸಿಂಕ್ ಮಾಡಿ" + }, + "lastSync": { + "message": "ಕೊನೆಯ ಸಿಂಕ್" + }, + "passGen": { + "message": "ಪಾಸ್ವರ್ಡ್ ಜನರೇಟರ್" + }, + "generator": { + "message": "ಜನರೇಟರ್", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "ನಿಮ್ಮ ಲಾಗಿನ್‌ಗಳಿಗಾಗಿ ಬಲವಾದ, ಅನನ್ಯ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಿ." + }, + "bitWebVault": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್ ವೆಬ್ ವಾಲ್ಟ್" + }, + "importItems": { + "message": "ವಸ್ತುಗಳನ್ನು ಆಮದು ಮಾಡಿ" + }, + "select": { + "message": "ಆಯ್ಕೆಮಾಡಿ" + }, + "generatePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ರಚಿಸಿ" + }, + "regeneratePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಪುನರುತ್ಪಾದಿಸಿ" + }, + "options": { + "message": "ಆಯ್ಕೆಗಳು" + }, + "length": { + "message": "ಉದ್ದ" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "ಪದಗಳ ಸಂಖ್ಯೆ" + }, + "wordSeparator": { + "message": "ಪದ ವಿಭಜಕ" + }, + "capitalize": { + "message": "ದೊಡ್ಡಕ್ಷರ ಮಾಡಿ", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ" + }, + "minNumbers": { + "message": "ಕನಿಷ್ಠ ಸಂಖ್ಯೆಗಳು" + }, + "minSpecial": { + "message": "ಕನಿಷ್ಠ ವಿಶೇಷ" + }, + "avoidAmbChar": { + "message": "ಅಸ್ಪಷ್ಟ ಅಕ್ಷರಗಳನ್ನು ತಪ್ಪಿಸಿ" + }, + "searchVault": { + "message": "ವಾಲ್ಟ್ ಹುಡುಕಿ" + }, + "edit": { + "message": "ಎಡಿಟ್" + }, + "view": { + "message": "ವೀಕ್ಷಣೆ" + }, + "noItemsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಐಟಂಗಳಿಲ್ಲ." + }, + "itemInformation": { + "message": "ಐಟಂ ಮಾಹಿತಿ" + }, + "username": { + "message": "ಬಳಕೆದಾರ ಹೆಸರು" + }, + "password": { + "message": "ಪಾಸ್ವರ್ಡ್" + }, + "passphrase": { + "message": "ಪಾಸ್ಫ್ರೇಸ್" + }, + "favorite": { + "message": "ಮೆಚ್ಚಿನ" + }, + "notes": { + "message": "ಟಿಪ್ಪಣಿಗಳು" + }, + "note": { + "message": "ಟಿಪ್ಪಣಿ" + }, + "editItem": { + "message": "ವಸ್ತುಗಳನ್ನು ಸಂಪಾದಿಸಿ" + }, + "folder": { + "message": "ಫೋಲ್ಡರ್" + }, + "deleteItem": { + "message": "ಐಟಂ ಅಳಿಸಿ" + }, + "viewItem": { + "message": "ಐಟಂ ವೀಕ್ಷಿಸಿ" + }, + "launch": { + "message": "ಶುರು" + }, + "website": { + "message": "ಜಾಲತಾಣ" + }, + "toggleVisibility": { + "message": "ಗೋಚರತೆಯನ್ನು ಟಾಗಲ್ ಮಾಡಿ" + }, + "manage": { + "message": "ವ್ಯವಸ್ಥಾಪಕ" + }, + "other": { + "message": "ಇತರೆ" + }, + "rateExtension": { + "message": "ವಿಸ್ತರಣೆಯನ್ನು ರೇಟ್ ಮಾಡಿ" + }, + "rateExtensionDesc": { + "message": "ಉತ್ತಮ ವಿಮರ್ಶೆಯೊಂದಿಗೆ ನಮಗೆ ಸಹಾಯ ಮಾಡಲು ದಯವಿಟ್ಟು ಪರಿಗಣಿಸಿ!" + }, + "browserNotSupportClipboard": { + "message": "ನಿಮ್ಮ ವೆಬ್ ಬ್ರೌಸರ್ ಸುಲಭವಾದ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್ ನಕಲು ಮಾಡುವುದನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬದಲಿಗೆ ಅದನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ನಕಲಿಸಿ." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "yourVaultIsLocked": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಲಾಕ್ ಆಗಿದೆ. ಮುಂದುವರೆಯಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ." + }, + "unlock": { + "message": "ಅನ್‌ಲಾಕ್ ಮಾಡಿ" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ನಲ್ಲಿ $EMAIL$ಆಗಿ ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "ಅಮಾನ್ಯ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್" + }, + "vaultTimeout": { + "message": "ವಾಲ್ಟ್ ಕಾಲಾವಧಿ" + }, + "lockNow": { + "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": "೪ ಗಂಟೆಗಳು" + }, + "onLocked": { + "message": "ಸಿಸ್ಟಮ್ ಲಾಕ್‌ನಲ್ಲಿ" + }, + "onRestart": { + "message": "ಬ್ರೌಸರ್ ಮರುಪ್ರಾರಂಭದಲ್ಲಿ" + }, + "never": { + "message": "ಇಲ್ಲವೇ ಇಲ್ಲ" + }, + "security": { + "message": "ಭದ್ರತೆ" + }, + "errorOccurred": { + "message": "ದೋಷ ಸಂಭವಿಸಿದೆ" + }, + "emailRequired": { + "message": "ಇಮೇಲ್ ವಿಳಾಸದ ಅಗತ್ಯವಿದೆ." + }, + "invalidEmail": { + "message": "ಅಮಾನ್ಯ ಇಮೇಲ್ ವಿಳಾಸ." + }, + "masterPassRequired": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ." + }, + "masterPassLength": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಕನಿಷ್ಠ 8 ಅಕ್ಷರಗಳಷ್ಟು ಉದ್ದವಾಗಿರಬೇಕು." + }, + "masterPassDoesntMatch": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ದೃಢೀಕರಣವು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ." + }, + "newAccountCreated": { + "message": "ನಿಮ್ಮ ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಲಾಗಿದೆ! ನೀವು ಈಗ ಲಾಗ್ ಇನ್ ಮಾಡಬಹುದು." + }, + "masterPassSent": { + "message": "ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವಿನೊಂದಿಗೆ ನಾವು ನಿಮಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿದ್ದೇವೆ." + }, + "verificationCodeRequired": { + "message": "ಪರಿಶೀಲನೆ ಕೋಡ್ ಅಗತ್ಯವಿದೆ." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ ನಕಲಿಸಲಾಗಿದೆ", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "ಈ ಪುಟದಲ್ಲಿ ಆಯ್ದ ಐಟಂ ಅನ್ನು ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಬದಲಿಗೆ ಮಾಹಿತಿಯನ್ನು ನಕಲಿಸಿ ಮತ್ತು ಅಂಟಿಸಿ." + }, + "loggedOut": { + "message": "ಲಾಗ್ ಔಟ್" + }, + "loginExpired": { + "message": "ನಿಮ್ಮ ಲಾಗಿನ್ ಸೆಷನ್ ಅವಧಿ ಮೀರಿದೆ." + }, + "logOutConfirmation": { + "message": "ಲಾಗ್ ಔಟ್ ಮಾಡಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "yes": { + "message": "ಹೌದು" + }, + "no": { + "message": "ಇಲ್ಲ" + }, + "unexpectedError": { + "message": "ಅನಿರೀಕ್ಷಿತ ದೋಷ ಸಂಭವಿಸಿದೆ." + }, + "nameRequired": { + "message": "ಹೆಸರೊಂದು ಅಗತ್ಯವಿದೆ." + }, + "addedFolder": { + "message": "ಫೋಲ್ಡರ್ ಸೇರಿಸಿ" + }, + "changeMasterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಿ" + }, + "changeMasterPasswordConfirmation": { + "message": "ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು bitwarden.com ವೆಬ್ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "twoStepLoginConfirmation": { + "message": "ಭದ್ರತಾ ಕೀ, ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್, ಎಸ್‌ಎಂಎಸ್, ಫೋನ್ ಕರೆ ಅಥವಾ ಇಮೇಲ್‌ನಂತಹ ಮತ್ತೊಂದು ಸಾಧನದೊಂದಿಗೆ ನಿಮ್ಮ ಲಾಗಿನ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿರುವ ಎರಡು ಹಂತದ ಲಾಗಿನ್ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಹೆಚ್ಚು ಸುರಕ್ಷಿತಗೊಳಿಸುತ್ತದೆ. ಬಿಟ್ವಾರ್ಡೆನ್.ಕಾಮ್ ವೆಬ್ ವಾಲ್ಟ್ನಲ್ಲಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "editedFolder": { + "message": "ಫೋಲ್ಡರ್ ತಿದ್ದಲಾಗಿದೆ" + }, + "deleteFolderConfirmation": { + "message": "ನೀವು ಈ ಕಡತಕೋಶವನ್ನು ಖಚಿತವಾಗಿಯೂ ಅಳಿಸಬಯಸುವಿರಾ?" + }, + "deletedFolder": { + "message": "ಫೋಲ್ಡರ್ ಅಳಿಸಿ" + }, + "gettingStartedTutorial": { + "message": "ಟ್ಯುಟೋರಿಯಲ್ ಪ್ರಾರಂಭಿಸುವುದು" + }, + "gettingStartedTutorialVideo": { + "message": "ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಯಿಂದ ಹೆಚ್ಚಿನದನ್ನು ಪಡೆಯುವುದು ಹೇಗೆ ಎಂದು ತಿಳಿಯಲು ನಮ್ಮ ಪ್ರಾರಂಭಿಕ ಟ್ಯುಟೋರಿಯಲ್ ವೀಕ್ಷಿಸಿ." + }, + "syncingComplete": { + "message": "ಒಡವಾಗುನಂಟು ಪೂರ್ಣಗೊಂಡಿದೆ" + }, + "syncingFailed": { + "message": "ಸಿಂಕ್ ವಿಫಲಗೊಂಡಿದೆ" + }, + "passwordCopied": { + "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": "ಹೊಸ ಯುಆರ್ಐ" + }, + "addedItem": { + "message": "ಐಟಂ ಸೇರಿಸಲಾಗಿದೆ" + }, + "editedItem": { + "message": "ಐಟಂ ಸಂಪಾದಿಸಲಾಗಿದೆ" + }, + "deleteItemConfirmation": { + "message": "ನೀವು ನಿಜವಾಗಿಯೂ ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲು ಬಯಸುವಿರಾ?" + }, + "deletedItem": { + "message": "ಐಟಂ ಅನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲಾಗಿದೆ" + }, + "overwritePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಬದಲಿಸಿ" + }, + "overwritePasswordConfirmation": { + "message": "ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ತಿದ್ದಿಬರೆಯಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "ಫೋಲ್ಡರ್ ಹುಡುಕಿ" + }, + "searchCollection": { + "message": "ಸಂಗ್ರಹಣೆ ಹುಡುಕಿ" + }, + "searchType": { + "message": "ಹುಡುಕಾಟ ಪ್ರಕಾರ" + }, + "noneFolder": { + "message": "ಫೋಲ್ಡರ್ ಇಲ್ಲ", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "ಲಾಗಿನ್ ಅಧಿಸೂಚನೆಯನ್ನು ಸೇರಿಸಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "addLoginNotificationDesc": { + "message": "\"ಲಾಗಿನ್ ಅಧಿಸೂಚನೆಯನ್ನು ಸೇರಿಸಿ\" ನೀವು ಮೊದಲ ಬಾರಿಗೆ ಪ್ರವೇಶಿಸಿದಾಗಲೆಲ್ಲಾ ಹೊಸ ಲಾಗಿನ್‌ಗಳನ್ನು ನಿಮ್ಮ ವಾಲ್ಟ್‌ಗೆ ಉಳಿಸಲು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕೇಳುತ್ತದೆ." + }, + "dontShowCardsCurrentTab": { + "message": "ಟ್ಯಾಬ್ ಪುಟದಲ್ಲಿ ಕಾರ್ಡ್‌ಗಳನ್ನು ತೋರಿಸಬೇಡಿ" + }, + "dontShowCardsCurrentTabDesc": { + "message": "ಸ್ವಯಂ-ಭರ್ತಿ ಸುಲಭ ಪ್ರವೇಶಕ್ಕಾಗಿ ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಿಂದ ಕಾರ್ಡ್ ವಸ್ತುಗಳನ್ನು 'ಪ್ರಸ್ತುತ ಟ್ಯಾಬ್' ಪುಟದಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ." + }, + "dontShowIdentitiesCurrentTab": { + "message": "ಟ್ಯಾಬ್ ಪುಟದಲ್ಲಿ ಗುರುತುಗಳನ್ನು ತೋರಿಸಬೇಡಿ" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "ನಿಮಗಾಗಿ ಈ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬಿಟ್‌ವಾರ್ಡನ್ ನೆನಪಿಸಿಕೊಳ್ಳಬೇಕೇ?" + }, + "notificationAddSave": { + "message": "ಹೌದು, ಈಗ ಉಳಿಸಿ" + }, + "disableChangedPasswordNotification": { + "message": "ಬದಲಾವಣೆ ಪಾಸ್ವರ್ಡ್ ಅಧಿಸೂಚನೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"ಬದಲಾಯಿಸಿದ ಪಾಸ್ವರ್ಡ್ ಅಧಿಸೂಚನೆ\" ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿಮ್ಮ ಉತ್ತೇಜಿಸುವ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನೀವು ವೆಬ್ಸೈಟ್ನಲ್ಲಿ ಬದಲಿಸಿದೆ ಎಂದು ಪತ್ತೆಹಚ್ಚಿದಾಗ ನಿಮ್ಮ ವಾಲ್ಟ್ನಲ್ಲಿ ಲಾಗಿನ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನವೀಕರಿಸಲು ನಿಮ್ಮನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಪೇಕ್ಷಿಸುತ್ತದೆ." + }, + "notificationChangeDesc": { + "message": "ಈ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಬಿಟ್ವರ್ಡ್ನಲ್ಲಿ ನವೀಕರಿಸಲು ನೀವು ಬಯಸುತ್ತೀರಾ?" + }, + "notificationChangeSave": { + "message": "ಹೌದು, ಈಗ ನವೀಕರಿಸಿ" + }, + "disableContextMenuItem": { + "message": "ಸನ್ನಿವೇಶ ಮೆನು ಆಯ್ಕೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableContextMenuItemDesc": { + "message": "ಸನ್ನಿವೇಶ ಮೆನು ಆಯ್ಕೆಗಳು ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಟ್ಯಾಬ್ನಲ್ಲಿ ವೆಬ್ಸೈಟ್ಗೆ ಪಾಸ್ವರ್ಡ್ ಪೀಳಿಗೆಯ ಮತ್ತು ಲಾಗಿನ್ಗಳಿಗೆ ತ್ವರಿತ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ." + }, + "defaultUriMatchDetection": { + "message": "ಡೀಫಾಲ್ಟ್ ಯುಆರ್ಐ ಹೊಂದಾಣಿಕೆ ಪತ್ತೆ", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "ಸ್ವಯಂ ಭರ್ತಿಯಂತಹ ಕ್ರಿಯೆಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಲಾಗಿನ್‌ಗಳಿಗಾಗಿ URI ಹೊಂದಾಣಿಕೆ ಪತ್ತೆಹಚ್ಚುವಿಕೆಯನ್ನು ನಿರ್ವಹಿಸುವ ಪೂರ್ವನಿಯೋಜಿತ ಮಾರ್ಗವನ್ನು ಆರಿಸಿ." + }, + "theme": { + "message": "ಥೀಮ್ಸ್" + }, + "themeDesc": { + "message": "ಅಪ್ಲಿಕೇಶನ್‌ನ ಬಣ್ಣ ಥೀಮ್ ಅನ್ನು ಬದಲಾಯಿಸಿ." + }, + "dark": { + "message": "ಡಾರ್ಕ್", + "description": "Dark color" + }, + "light": { + "message": "ಬೆಳಕು", + "description": "Light color" + }, + "solarizedDark": { + "message": "ಡಾರ್ಕ್ ಸೌರ", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "ಖಾತೆ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಗಳು ಪ್ರತಿ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಬಳಕೆದಾರ ಖಾತೆಗೆ ಅನನ್ಯವಾಗಿವೆ, ಆದ್ದರಿಂದ ನೀವು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ರಫ್ತು ಬೇರೆ ಖಾತೆಗೆ ಆಮದು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." + }, + "exportMasterPassword": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಡೇಟಾವನ್ನು ರಫ್ತು ಮಾಡಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ." + }, + "shared": { + "message": "ಹಂಚಿಕೊಳ್ಳಲಾಗಿದೆ" + }, + "learnOrg": { + "message": "ಸಂಘಟನೆಗಳ ಬಗ್ಗೆ ತಿಳಿಯಿರಿ" + }, + "learnOrgConfirmation": { + "message": "ಸಂಸ್ಥೆಯೊಂದನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಚಾವಣಿ ವಸ್ತುಗಳನ್ನು ಇತರರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು ಬಿಟ್ವರ್ಡ್ಗಳು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ನೀವು ಇನ್ನಷ್ಟು ತಿಳಿಯಲು Bitwarden.com ವೆಬ್ಸೈಟ್ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "moveToOrganization": { + "message": "ಸಂಸ್ಥೆಗೆ ಸರಿಸಿ" + }, + "share": { + "message": "ಹಂಚಿಕೊಳ್ಳಿ" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ ಅನ್ನು $ORGNAME$ ಗೆ ಸರಿಸಲಾಗಿದೆ", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಸರಿಸಲು ನೀವು ಬಯಸುವ ಸಂಸ್ಥೆಯನ್ನು ಆರಿಸಿ. ಸಂಸ್ಥೆಗೆ ಹೋಗುವುದರಿಂದ ವಸ್ತುವಿನ ಮಾಲೀಕತ್ವವನ್ನು ಆ ಸಂಸ್ಥೆಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ. ಈ ಐಟಂ ಅನ್ನು ಸರಿಸಿದ ನಂತರ ನೀವು ಇನ್ನು ಮುಂದೆ ಅದರ ನೇರ ಮಾಲೀಕರಾಗಿರುವುದಿಲ್ಲ." + }, + "learnMore": { + "message": "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ" + }, + "authenticatorKeyTotp": { + "message": "ದೃಢೀಕರಣ ಕೀ (TOTP)" + }, + "verificationCodeTotp": { + "message": "ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಳು" + }, + "copyVerificationCode": { + "message": "ಪರಿಶೀಲನೆ ಕೋಡ್ ನಕಲಿಸಿ" + }, + "attachments": { + "message": "ಲಗತ್ತುಗಳು" + }, + "deleteAttachment": { + "message": "ಲಗತ್ತನ್ನು ಅಳಿಸಿ" + }, + "deleteAttachmentConfirmation": { + "message": "ಈ ಲಗತ್ತನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "deletedAttachment": { + "message": "ಲಗತ್ತು ಅಳಿಸಲಾಗಿದೆ" + }, + "newAttachment": { + "message": "ಹೊಸ ಲಗತ್ತನ್ನು ಸೇರಿಸಿ" + }, + "noAttachments": { + "message": "ಲಗತ್ತುಗಳಿಲ್ಲ." + }, + "attachmentSaved": { + "message": "ಲಗತ್ತನ್ನು ಉಳಿಸಲಾಗಿದೆ." + }, + "file": { + "message": "ಫೈಲ್" + }, + "selectFile": { + "message": "ಕಡತವನ್ನು ಆಯ್ಕೆಮಾಡು." + }, + "maxFileSize": { + "message": "ಗರಿಷ್ಠ ಫೈಲ್ ಗಾತ್ರ 500 ಎಂಬಿ." + }, + "featureUnavailable": { + "message": "ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ" + }, + "updateKey": { + "message": "ನಿಮ್ಮ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸುವವರೆಗೆ ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ." + }, + "premiumMembership": { + "message": "ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವ" + }, + "premiumManage": { + "message": "ಸದಸ್ಯತ್ವವನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "premiumManageAlert": { + "message": "ನಿಮ್ಮ ಸದಸ್ಯತ್ವವನ್ನು ನೀವು bitwarden.com ವೆಬ್ ವಾಲ್ಟ್‌ನಲ್ಲಿ ನಿರ್ವಹಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "premiumRefresh": { + "message": "ಸದಸ್ಯತ್ವವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ" + }, + "premiumNotCurrentMember": { + "message": "ನೀವು ಪ್ರಸ್ತುತ ಪ್ರೀಮಿಯಂ ಸದಸ್ಯರಲ್ಲ." + }, + "premiumSignUpAndGet": { + "message": "ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವಕ್ಕಾಗಿ ಸೈನ್ ಅಪ್ ಮಾಡಿ ಮತ್ತು ಪಡೆಯಿರಿ:" + }, + "ppremiumSignUpStorage": { + "message": "ಫೈಲ್ ಲಗತ್ತುಗಳಿಗಾಗಿ 1 ಜಿಬಿ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಸಂಗ್ರಹ." + }, + "ppremiumSignUpTwoStep": { + "message": "ಹೆಚ್ಚುವರಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಆಯ್ಕೆಗಳಾದ ಯೂಬಿಕೆ, ಎಫ್‌ಐಡಿಒ ಯು 2 ಎಫ್, ಮತ್ತು ಡ್ಯುವೋ." + }, + "ppremiumSignUpReports": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು ಪಾಸ್ವರ್ಡ್ ನೈರ್ಮಲ್ಯ, ಖಾತೆ ಆರೋಗ್ಯ ಮತ್ತು ಡೇಟಾ ಉಲ್ಲಂಘನೆ ವರದಿಗಳು." + }, + "ppremiumSignUpTotp": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿನ ಲಾಗಿನ್‌ಗಳಿಗಾಗಿ TOTP ಪರಿಶೀಲನಾ ಕೋಡ್ (2FA) ಜನರೇಟರ್." + }, + "ppremiumSignUpSupport": { + "message": "ಆದ್ಯತೆಯ ಗ್ರಾಹಕ ಬೆಂಬಲ." + }, + "ppremiumSignUpFuture": { + "message": "ಎಲ್ಲಾ ಭವಿಷ್ಯದ ಪ್ರೀಮಿಯಂ ವೈಶಿಷ್ಟ್ಯಗಳು. ಹೆಚ್ಚು ಶೀಘ್ರದಲ್ಲೇ ಬರಲಿದೆ!" + }, + "premiumPurchase": { + "message": "ಪ್ರೀಮಿಯಂ ಖರೀದಿಸಿ" + }, + "premiumPurchaseAlert": { + "message": "ನೀವು ಬಿಟ್ವಾರ್ಡೆನ್.ಕಾಮ್ ವೆಬ್ ವಾಲ್ಟ್ನಲ್ಲಿ ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವವನ್ನು ಖರೀದಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "premiumCurrentMember": { + "message": "ನೀವು ಪ್ರೀಮಿಯಂ ಸದಸ್ಯರಾಗಿದ್ದೀರಿ!" + }, + "premiumCurrentMemberThanks": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್ ಅವರನ್ನು ಬೆಂಬಲಿಸಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು." + }, + "premiumPrice": { + "message": "ಎಲ್ಲವೂ ಕೇವಲ $PRICE$ / ವರ್ಷಕ್ಕೆ!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "ರಿಫ್ರೆಶ್ ಪೂರ್ಣಗೊಂಡಿದೆ" + }, + "disableAutoTotpCopy": { + "message": "ಸ್ವಯಂಚಾಲಿತ TOTP ನಕಲನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableAutoTotpCopyDesc": { + "message": "ನಿಮ್ಮ ಲಾಗಿನ್‌ಗೆ ದೃಢೀಕರಣ ಕೀಲಿಯನ್ನು ಲಗತ್ತಿಸಿದ್ದರೆ, ನೀವು ಲಾಗಿನ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಭರ್ತಿ ಮಾಡಿದಾಗಲೆಲ್ಲಾ TOTP ಪರಿಶೀಲನಾ ಕೋಡ್ ನಿಮ್ಮ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಕಲಿಸಲ್ಪಡುತ್ತದೆ." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "ಪ್ರೀಮಿಯಂ ಅಗತ್ಯವಿದೆ" + }, + "premiumRequiredDesc": { + "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": "ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ಯುಎಸ್‌ಬಿ ಪೋರ್ಟ್ಗೆ ನಿಮ್ಮ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಸೇರಿಸಿ. ಅದು ಬಟನ್ ಹೊಂದಿದ್ದರೆ, ಅದನ್ನು ಸ್ಪರ್ಶಿಸಿ." + }, + "webAuthnNewTab": { + "message": "WebAuthn 2FA ಪರಿಶೀಲನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು. ಹೊಸ ಟ್ಯಾಬ್ ತೆರೆಯಲು ಕೆಳಗಿನ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಒದಗಿಸಲಾದ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ." + }, + "webAuthnNewTabOpen": { + "message": "ಹೊಸ ಟ್ಯಾಬ್ ತೆರೆಯಿರಿ" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn ಅನ್ನು ಪ್ರಮಾಣಿಕರಿಸು" + }, + "loginUnavailable": { + "message": "ಲಾಗಿನ್ ಲಭ್ಯವಿಲ್ಲ" + }, + "noTwoStepProviders": { + "message": "ಈ ಖಾತೆಯು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದೆ, ಆದಾಗ್ಯೂ, ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಎರಡು-ಹಂತದ ಪೂರೈಕೆದಾರರಲ್ಲಿ ಯಾರೂ ಈ ವೆಬ್ ಬ್ರೌಸರ್‌ನಿಂದ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ." + }, + "noTwoStepProviders2": { + "message": "ದಯವಿಟ್ಟು ಬೆಂಬಲಿತ ವೆಬ್ ಬ್ರೌಸರ್ ಅನ್ನು ಬಳಸಿ (Chrome ನಂತಹ) ಮತ್ತು / ಅಥವಾ ವೆಬ್ ಬ್ರೌಸರ್‌ಗಳಲ್ಲಿ (ದೃ hentic ೀಕರಣ ಅಪ್ಲಿಕೇಶನ್‌ನಂತಹ) ಉತ್ತಮವಾಗಿ ಬೆಂಬಲಿತವಾದ ಹೆಚ್ಚುವರಿ ಪೂರೈಕೆದಾರರನ್ನು ಸೇರಿಸಿ." + }, + "twoStepOptions": { + "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": "ಪರಿಶೀಲನೆ ಕೋಡ್‌ಗಳನ್ನು ನಿಮಗೆ ಇಮೇಲ್ ಮಾಡಲಾಗುತ್ತದೆ." + }, + "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 ಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ." + }, + "enableAutoFillOnPageLoad": { + "message": "ಪುಟ ಲೋಡ್‌ನಲ್ಲಿ ಸ್ವಯಂ ಭರ್ತಿ ಸಕ್ರಿಯಗೊಳಿಸಿ" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "ಲಾಗಿನ್ ಫಾರ್ಮ್ ಪತ್ತೆಯಾದಲ್ಲಿ, ವೆಬ್ ಪುಟ ಲೋಡ್ ಆಗುವಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡಿ." + }, + "experimentalFeature": { + "message": "ಇದು ಪ್ರಸ್ತುತ ಪ್ರಾಯೋಗಿಕ ಲಕ್ಷಣವಾಗಿದೆ. ನಿಮ್ಮ ಸ್ವಂತ ಅಪಾಯದಲ್ಲಿ ಬಳಸಿ." + }, + "defaultAutoFillOnPageLoad": { + "message": "ಲಾಗಿನ್ ಐಟಂಗಳಿಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಆಟೋಫಿಲ್ ಸೆಟ್ಟಿಂಗ್" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "ಪುಟ ಲೋಡ್‌ನಲ್ಲಿ ಸ್ವಯಂ-ಭರ್ತಿ ಸಕ್ರಿಯಗೊಳಿಸಿದ ನಂತರ, ನೀವು ವೈಯಕ್ತಿಕ ಲಾಗಿನ್ ಐಟಂಗಳಿಗಾಗಿ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬಹುದು ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬಹುದು. ಪ್ರತ್ಯೇಕವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡದ ಲಾಗಿನ್ ಐಟಂಗಳ ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ ಇದು." + }, + "itemAutoFillOnPageLoad": { + "message": "ಪುಟ ಲೋಡ್‌ನಲ್ಲಿ ಸ್ವಯಂ ಭರ್ತಿ (ಆಯ್ಕೆಗಳಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದರೆ)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ ಬಳಸಿ" + }, + "autoFillOnPageLoadYes": { + "message": "ಪುಟ ಲೋಡ್‌ನಲ್ಲಿ ಸ್ವಯಂ ಭರ್ತಿ" + }, + "autoFillOnPageLoadNo": { + "message": "ಪುಟ ಲೋಡ್‌ನಲ್ಲಿ ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡಬೇಡಿ" + }, + "commandOpenPopup": { + "message": "ವಾಲ್ಟ್ ಪಾಪ್ಅಪ್ ತೆರೆಯಿರಿ" + }, + "commandOpenSidebar": { + "message": "ಸೈಡ್ಬಾರ್ನಲ್ಲಿ ವಾಲ್ಟ್ ತೆರೆಯಿರಿ" + }, + "commandAutofillDesc": { + "message": "ಪ್ರಸ್ತುತ ವೆಬ್‌ಸೈಟ್‌ಗಾಗಿ ಕೊನೆಯದಾಗಿ ಬಳಸಿದ ಲಾಗಿನ್ ಅನ್ನು ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡಿ" + }, + "commandGeneratePasswordDesc": { + "message": "ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ಹೊಸ ಯಾದೃಚ್ಛಿಕ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ರಚಿಸಿ ಮತ್ತು ನಕಲಿಸಿ" + }, + "commandLockVaultDesc": { + "message": "ವಾಲ್ಟ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಿ" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರಗಳು" + }, + "copyValue": { + "message": "ಮೌಲ್ಯವನ್ನು ನಕಲಿಸಿ" + }, + "value": { + "message": "ಮೌಲ್ಯ" + }, + "newCustomField": { + "message": "ಹೊಸ ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರ" + }, + "dragToSort": { + "message": "ವಿಂಗಡಿಸಲು ಎಳೆಯಿರಿ" + }, + "cfTypeText": { + "message": "ಪಠ್ಯ" + }, + "cfTypeHidden": { + "message": "ಮರೆಮಾಡಲಾಗಿದೆ" + }, + "cfTypeBoolean": { + "message": "ಬೂಲಿಯನ್" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "ನಿಮ್ಮ ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಾಗಿ ನಿಮ್ಮ ಇಮೇಲ್ ಪರಿಶೀಲಿಸಲು ಪಾಪ್ಅಪ್ ವಿಂಡೋದ ಹೊರಗೆ ಕ್ಲಿಕ್ ಮಾಡುವುದರಿಂದ ಈ ಪಾಪ್ಅಪ್ ಮುಚ್ಚಲ್ಪಡುತ್ತದೆ. ಈ ಪಾಪ್ಅಪ್ ಅನ್ನು ಮುಚ್ಚದಿರುವಂತೆ ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಲು ನೀವು ಬಯಸುವಿರಾ?" + }, + "popupU2fCloseMessage": { + "message": "ಈ ಬ್ರೌಸರ್ ಈ ಪಾಪ್ಅಪ್ ವಿಂಡೋದಲ್ಲಿ ಯು 2 ಎಫ್ ವಿನಂತಿಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ಪಾಪ್ಅಪ್ ಅನ್ನು ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಲು ನೀವು ಬಯಸುವಿರಾ, ಇದರಿಂದ ನೀವು ಯು 2 ಎಫ್ ಬಳಸಿ ಲಾಗ್ ಇನ್ ಆಗಬಹುದು." + }, + "disableFavicon": { + "message": "ವೆಬ್‌ಸೈಟ್ ಚಿಹ್ನೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableFaviconDesc": { + "message": "ವೆಬ್‌ಸೈಟ್ ಐಕಾನ್‌ಗಳು ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಪ್ರತಿ ಲಾಗಿನ್ ಐಟಂನ ಪಕ್ಕದಲ್ಲಿ ಗುರುತಿಸಬಹುದಾದ ಚಿತ್ರವನ್ನು ಒದಗಿಸುತ್ತದೆ." + }, + "disableBadgeCounter": { + "message": "ಬ್ಯಾಡ್ಜ್ ಕೌಂಟರ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableBadgeCounterDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ನಲ್ಲಿ ಪ್ರಸ್ತುತ ಪುಟಕ್ಕಾಗಿ ನೀವು ಎಷ್ಟು ಲಾಗಿನ್ಗಳನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಬ್ಯಾಡ್ಜ್ ಕೌಂಟರ್ ಸೂಚಿಸುತ್ತದೆ." + }, + "cardholderName": { + "message": "ಕಾರ್ಡುದಾರನ ಹೆಸರು" + }, + "number": { + "message": "ಸಂಖ್ಯೆ" + }, + "brand": { + "message": "ಬ್ರ್ಯಾಂಡ್" + }, + "expirationMonth": { + "message": "ಮುಕ್ತಾಯ ತಿಂಗಳು" + }, + "expirationYear": { + "message": "ಮುಕ್ತಾಯ ವರ್ಷ" + }, + "expiration": { + "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": "ಡಿಸೆಂಬರ್" + }, + "securityCode": { + "message": "ಭದ್ರತಾ ಕೋಡ್ " + }, + "ex": { + "message": "ಉದಾಹರಣೆ" + }, + "title": { + "message": "ಶೀರ್ಷಿಕೆ" + }, + "mr": { + "message": "ಶ್ರೀ" + }, + "mrs": { + "message": "ಶ್ರೀಮತಿ" + }, + "ms": { + "message": "ಎಂ.ಎಸ್" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "ಮೊದಲ ಹೆಸರು" + }, + "middleName": { + "message": "ಮಧ್ಯದ ಹೆಸರು" + }, + "lastName": { + "message": "ಕೊನೆ ಹೆಸರು" + }, + "fullName": { + "message": "Full Name" + }, + "identityName": { + "message": "ಹೆಸರು ಗುರುತು" + }, + "company": { + "message": "ಕಂಪನಿ" + }, + "ssn": { + "message": "ಸಾಮಾಜಿಕ ಭದ್ರತೆ ಸಂಖ್ಯೆ" + }, + "passportNumber": { + "message": "ಪಾಸ್ಪೋರ್ಟ್ ಸಂಖ್ಯೆ" + }, + "licenseNumber": { + "message": "ಪರವಾನಗಿ ಸಂಖ್ಯೆ" + }, + "email": { + "message": "ಇಮೇಲ್" + }, + "phone": { + "message": "ಫೋನ್‌" + }, + "address": { + "message": "ವಿಳಾಸ " + }, + "address1": { + "message": "ವಿಳಾಸ 1" + }, + "address2": { + "message": "ವಿಳಾಸ 2" + }, + "address3": { + "message": "ವಿಳಾಸ 3" + }, + "cityTown": { + "message": "ನಗರ / ಪಟ್ಟಣ" + }, + "stateProvince": { + "message": "ರಾಜ್ಯ / ಪ್ರಾಂತ್ಯ" + }, + "zipPostalCode": { + "message": "ಪಿನ್ / ಅಂಚೆ ಕೋಡ್" + }, + "country": { + "message": "ದೇಶ" + }, + "type": { + "message": "ಪ್ರಕಾರ" + }, + "typeLogin": { + "message": "ಲಾಗಿನ್" + }, + "typeLogins": { + "message": "ಲಾಗಿನ್ಸ್" + }, + "typeSecureNote": { + "message": "ಸುರಕ್ಷಿತ ಟಿಪ್ಪಣಿ" + }, + "typeCard": { + "message": "ಕಾರ್ಡ್" + }, + "typeIdentity": { + "message": "ಗುರುತಿಸುವಿಕೆ" + }, + "passwordHistory": { + "message": "ಪಾಸ್ವರ್ಡ್ ಇತಿಹಾಸ" + }, + "back": { + "message": "ಹಿಂದಕ್ಕೆ" + }, + "collections": { + "message": "ಸಂಗ್ರಹಣೆಗಳು" + }, + "favorites": { + "message": "ಮೆಚ್ಚುಗೆಗಳು" + }, + "popOutNewWindow": { + "message": "ಹೊಸ ವಿಂಡೋಗೆ ಪಾಪ್ ಔಟ್ ಮಾಡಿ" + }, + "refresh": { + "message": "ಹೊಸತಾಗಿಸಿ" + }, + "cards": { + "message": "ಕಾರ್ಡ್‌ಗಳು" + }, + "identities": { + "message": "ಗುರುತುಗಳು" + }, + "logins": { + "message": "ಲಾಗಿನ್ಸ್" + }, + "secureNotes": { + "message": "ಸುರಕ್ಷಿತ ಟಿಪ್ಪಣಿಗಳು" + }, + "clear": { + "message": "ಕ್ಲಿಯರ್‌", + "description": "To clear something out. example: To clear browser history." + }, + "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": "ಟಾಗಲ್ ಆಯ್ಕೆಗಳು" + }, + "toggleCurrentUris": { + "message": "ಪ್ರಸ್ತುತ URI ಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "ಪ್ರಸ್ತುತ URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "ಸಂಸ್ಥೆ", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "ರೀತಿಯ" + }, + "allItems": { + "message": "ಎಲ್ಲಾ ವಸ್ತುಗಳು" + }, + "noPasswordsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಪಾಸ್ವರ್ಡ್ಗಳು ಇಲ್ಲ." + }, + "remove": { + "message": "ತೆಗೆ" + }, + "default": { + "message": "ಡಿಫಾಲ್ಟ್" + }, + "dateUpdated": { + "message": "ಅಪ್‌ಡೇಟ್", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "ಪಾಸ್ವರ್ಡ್ ನವೀಕರಿಸಲಾಗಿದೆ", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅನ್ಲಾಕ್ ಮಾಡಲು ನಿಮ್ಮ ಪಿನ್ ಕೋಡ್ ಅನ್ನು ಹೊಂದಿಸಿ. ನೀವು ಎಂದಾದರೂ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಲಾಗ್ out ಟ್ ಆಗಿದ್ದರೆ ನಿಮ್ಮ ಪಿನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ." + }, + "pinRequired": { + "message": "ಪಿನ್ ಕೋಡ್ ಅಗತ್ಯವಿದೆ." + }, + "invalidPin": { + "message": "ಅಮಾನ್ಯ ಪಿನ್ ಕೋಡ್." + }, + "unlockWithBiometrics": { + "message": "ಬಯೋಮೆಟ್ರಿಕ್ಸ್‌ನೊಂದಿಗೆ ಅನ್ಲಾಕ್ ಮಾಡಿ" + }, + "awaitDesktop": { + "message": "ಡೆಸ್ಕ್‌ಟಾಪ್‌ನಿಂದ ದೃಢೀಕರಣಕ್ಕಾಗಿ ಕಾಯಲಾಗುತ್ತಿದೆ" + }, + "awaitDesktopDesc": { + "message": "ಬ್ರೌಸರ್‌ಗಾಗಿ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ದಯವಿಟ್ಟು ಬಿಟ್‌ವಾರ್ಡೆನ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಬಳಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿ." + }, + "lockWithMasterPassOnRestart": { + "message": "ಬ್ರೌಸರ್ ಮರುಪ್ರಾರಂಭದಲ್ಲಿ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್‌ನೊಂದಿಗೆ ಲಾಕ್ ಮಾಡಿ" + }, + "selectOneCollection": { + "message": "ನೀವು ಕನಿಷ್ಠ ಒಂದು ಸಂಗ್ರಹವನ್ನು ಆರಿಸಬೇಕು." + }, + "cloneItem": { + "message": "ಕ್ಲೋನ್ ಐಟಂ" + }, + "clone": { + "message": "ಕ್ಲೋನ್" + }, + "passwordGeneratorPolicyInEffect": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಸ್ಥೆ ನೀತಿಗಳು ನಿಮ್ಮ ಜನರೇಟರ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ" + }, + "vaultTimeoutAction": { + "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": "ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗಿದೆ" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ಲಾಗ್ out ಟ್ ಆಗುವುದರಿಂದ ನಿಮ್ಮ ವಾಲ್ಟ್‌ನ ಎಲ್ಲಾ ಪ್ರವೇಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ ಮತ್ತು ಕಾಲಾವಧಿ ಅವಧಿಯ ನಂತರ ಆನ್‌ಲೈನ್ ದೃ hentic ೀಕರಣದ ಅಗತ್ಯವಿದೆ. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬಳಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "ಕಾಲಾವಧಿ ಕ್ರಿಯೆಯ ದೃಢೀಕರಣ" + }, + "autoFillAndSave": { + "message": "ಸ್ವಯಂ ಭರ್ತಿ ಮತ್ತು ಉಳಿಸಿ" + }, + "autoFillSuccessAndSavedUri": { + "message": "ಸ್ವಯಂ ತುಂಬಿದ ಐಟಂ ಮತ್ತು ಉಳಿಸಿದ ಯುಆರ್ಐ" + }, + "autoFillSuccess": { + "message": "ಸ್ವಯಂ ತುಂಬಿದ ಐಟಂ" + }, + "setMasterPassword": { + "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": "ಸೇವಾ ನಿಯಮಗಳು ಮತ್ತು ಗೌಪ್ಯತೆ ನೀತಿಯನ್ನು ಅಂಗೀಕರಿಸಲಾಗಿಲ್ಲ." + }, + "termsOfService": { + "message": "ಸೇವಾ ನಿಯಮಗಳು" + }, + "privacyPolicy": { + "message": "ಗೌಪ್ಯತಾ ನೀತಿ" + }, + "hintEqualsPassword": { + "message": "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ನಂತೆಯೇ ಇರಬಾರದು." + }, + "ok": { + "message": "ಸರಿ" + }, + "desktopSyncVerificationTitle": { + "message": "ಡೆಸ್ಕ್ಟಾಪ್ ಸಿಂಕ್ ಪರಿಶೀಲನೆ" + }, + "desktopIntegrationVerificationText": { + "message": "ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ಈ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ತೋರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಪರಿಶೀಲಿಸಿ:" + }, + "desktopIntegrationDisabledTitle": { + "message": "ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ" + }, + "desktopIntegrationDisabledDesc": { + "message": "ಬಿಟ್‌ವಾರ್ಡೆನ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ. ದಯವಿಟ್ಟು ಅದನ್ನು ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿನ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಿ." + }, + "startDesktopTitle": { + "message": "ಬಿಟ್‌ವಾರ್ಡೆನ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭಿಸಿ" + }, + "startDesktopDesc": { + "message": "ಈ ಕಾರ್ಯವನ್ನು ಬಳಸುವ ಮೊದಲು ಬಿಟ್‌ವಾರ್ಡೆನ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕಾಗಿದೆ." + }, + "errorEnableBiometricTitle": { + "message": "ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ" + }, + "errorEnableBiometricDesc": { + "message": "ಕ್ರಮವನ್ನು ಡೆಸ್ಕ್ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ರದ್ದುಗೊಳಿಸಲಾಯಿತು" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation\n" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "ಡೆಸ್ಕ್ಟಾಪ್ ಸಂವಹನ ಅಡಚಣೆ" + }, + "nativeMessagingWrongUserDesc": { + "message": "ಡೆಸ್ಕ್ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬೇರೆ ಖಾತೆಗೆ ಲಾಗ್ ಮಾಡಲಾಗಿದೆ. ಎರಡೂ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಒಂದೇ ಖಾತೆಗೆ ಲಾಗ್ ಇನ್ ಆಗಿವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ." + }, + "nativeMessagingWrongUserTitle": { + "message": "ಖಾತೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ" + }, + "biometricsNotEnabledTitle": { + "message": "ಬಯೊಮಿಟ್ರಿಕ್ಸ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ" + }, + "biometricsNotEnabledDesc": { + "message": "ಬ್ರೌಸರ್ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಮೊದಲು ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಡೆಸ್ಕ್ಟಾಪ್ ಬಯೋಮೆಟ್ರಿಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕಾಗುತ್ತದೆ." + }, + "biometricsNotSupportedTitle": { + "message": "ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ" + }, + "biometricsNotSupportedDesc": { + "message": "ಬ್ರೌಸರ್ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಈ ಸಾಧನದಲ್ಲಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "ಅನುಮತಿ ಒದಗಿಸಲಾಗಿಲ್ಲ" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "ಬಿಟ್ವರ್ಡ್ ಡೆಸ್ಕ್ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ನೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಲು ಅನುಮತಿಯಿಲ್ಲದೆ ನಾವು ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಯಲ್ಲಿ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. ದಯವಿಟ್ಟು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "ಅನುಮತಿ ವಿನಂತಿ ದೋಷ" + }, + "nativeMessaginPermissionSidebarDesc": { + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "ಸಂಸ್ಥೆಯ ನೀತಿಯು ನಿಮ್ಮ ಮಾಲೀಕತ್ವದ ಆಯ್ಕೆಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತಿದೆ." + }, + "excludedDomains": { + "message": "ಹೊರತುಪಡಿಸಿದ ಡೊಮೇನ್ಗಳು" + }, + "excludedDomainsDesc": { + "message": "ಬಿಟ್ವಾರ್ಡ್ ಈ ಡೊಮೇನ್ಗಳಿಗಾಗಿ ಲಾಗಿನ್ ವಿವರಗಳನ್ನು ಉಳಿಸಲು ಕೇಳುವುದಿಲ್ಲ. ಬದಲಾವಣೆಗಳನ್ನು ಜಾರಿಗೆ ತರಲು ನೀವು ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಬೇಕು." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ ಮಾನ್ಯವಾದ ಡೊಮೇನ್ ಅಲ್ಲ", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "ಹುಡುಕಾಟ ಕಳುಹಿಸುತ್ತದೆ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "ಕಳುಹಿಸು ಸೇರಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "ಪಠ್ಯ" + }, + "sendTypeFile": { + "message": "ಫೈಲ್" + }, + "allSends": { + "message": "ಎಲ್ಲಾ ಕಳುಹಿಸುತ್ತದೆ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "ಗರಿಷ್ಠ ಪ್ರವೇಶ ಎಣಿಕೆ ತಲುಪಿದೆ", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "ಅವಧಿ ಮೀರಿದೆ" + }, + "pendingDeletion": { + "message": "ಅಳಿಸುವಿಕೆ ಬಾಕಿ ಉಳಿದಿದೆ" + }, + "passwordProtected": { + "message": "ಪಾಸ್ವರ್ಡ್ ರಕ್ಷಿತ" + }, + "copySendLink": { + "message": "ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ತೆಗೆದುಹಾಕಿ" + }, + "delete": { + "message": "ಅಳಿಸು" + }, + "removedPassword": { + "message": "ತೆಗೆದುಹಾಕಲಾದ ಪಾಸ್ವರ್ಡ್" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" + }, + "removePasswordConfirmation": { + "message": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "deleteSend": { + "message": "ಅಳಿಸಿ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "ಇದು ಯಾವ ರೀತಿಯ ಕಳುಹಿಸುತ್ತದೆ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "ಇದನ್ನು ಕಳುಹಿಸಲು ವಿವರಿಸಲು ಸ್ನೇಹಪರ ಹೆಸರು.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 ದಿನ" + }, + "days": { + "message": "$DAYS$ ದಿನಗಳು", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "ಕಸ್ಟಮ್" + }, + "maximumAccessCount": { + "message": "ಗರಿಷ್ಠ ಪ್ರವೇಶ ಎಣಿಕೆ" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "ಇದನ್ನು ಕಳುಹಿಸುವುದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ಇದರಿಂದ ಯಾರೂ ಅದನ್ನು ಪ್ರವೇಶಿಸಲಾಗುವುದಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "ಉಳಿಸಿದ ನಂತರ ಈ ಕಳುಹಿಸುವ ಲಿಂಕ್ ಅನ್ನು ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಿ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "ನೀವು ಕಳುಹಿಸಲು ಬಯಸುವ ಪಠ್ಯ." + }, + "sendHideText": { + "message": "ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಈ ಕಳುಹಿಸುವ ಪಠ್ಯವನ್ನು ಮರೆಮಾಡಿ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "ಪ್ರಸ್ತುತ ಪ್ರವೇಶ ಎಣಿಕೆ" + }, + "createSend": { + "message": "ಹೊಸ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ರಚಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "ಫೈಲ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲು, ಸೈಡ್‌ಬಾರ್‌ನಲ್ಲಿ ವಿಸ್ತರಣೆಯನ್ನು ತೆರೆಯಿರಿ (ಸಾಧ್ಯವಾದರೆ) ಅಥವಾ ಈ ಬ್ಯಾನರ್ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಹೊಸ ವಿಂಡೋಗೆ ಪಾಪ್ಔಟ್ ಮಾಡಿ." + }, + "sendFirefoxFileWarning": { + "message": "ಫೈರ್‌ಫಾಕ್ಸ್ ಬಳಸಿ ಫೈಲ್ ಆಯ್ಕೆ ಮಾಡಲು, ಸೈಡ್‌ಬಾರ್‌ನಲ್ಲಿ ವಿಸ್ತರಣೆಯನ್ನು ತೆರೆಯಿರಿ ಅಥವಾ ಈ ಬ್ಯಾನರ್ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಹೊಸ ವಿಂಡೋಗೆ ಪಾಪ್ಔಟ್ ಮಾಡಿ." + }, + "sendSafariFileWarning": { + "message": "ಸಫಾರಿ ಬಳಸಿ ಫೈಲ್ ಆಯ್ಕೆ ಮಾಡಲು, ಈ ಬ್ಯಾನರ್ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಹೊಸ ವಿಂಡೋಗೆ ಪಾಪ್ಔಟ್ ಮಾಡಿ." + }, + "sendFileCalloutHeader": { + "message": "ನೀವು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "ಕ್ಯಾಲೆಂಡರ್ ಶೈಲಿಯ ದಿನಾಂಕ ಆಯ್ದುಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬಳಸಲು", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "ನಿಮ್ಮ ವಿಂಡೋವನ್ನು ಪಾಪ್ಔಟ್ ಮಾಡಲು.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "ಒದಗಿಸಿದ ಮುಕ್ತಾಯ ದಿನಾಂಕವು ಮಾನ್ಯವಾಗಿಲ್ಲ." + }, + "deletionDateIsInvalid": { + "message": "ಒದಗಿಸಿದ ಅಳಿಸುವ ದಿನಾಂಕವು ಮಾನ್ಯವಾಗಿಲ್ಲ." + }, + "expirationDateAndTimeRequired": { + "message": "ಮುಕ್ತಾಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ ಅಗತ್ಯವಿದೆ." + }, + "deletionDateAndTimeRequired": { + "message": "ಅಳಿಸುವ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ ಅಗತ್ಯವಿದೆ." + }, + "dateParsingError": { + "message": "ನಿಮ್ಮ ಅಳಿಸುವಿಕೆ ಮತ್ತು ಮುಕ್ತಾಯ ದಿನಾಂಕಗಳನ್ನು ಉಳಿಸುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿದೆ." + }, + "hideEmail": { + "message": "ಸ್ವೀಕರಿಸುವವರಿಂದ ನನ್ನ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಮರೆಮಾಡಿ." + }, + "sendOptionsPolicyInEffect": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಸ್ಥೆಯ ನೀತಿಗಳು ನಿಮ್ಮ ಕಳುಹಿಸುವ ಆಯ್ಕೆಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ." + }, + "passwordPrompt": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಮರು-ಪ್ರಾಂಪ್ಟ್" + }, + "passwordConfirmation": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಣ" + }, + "passwordConfirmationDesc": { + "message": "ಮುಂದುವರಿಯಲು ಈ ಕ್ರಿಯೆಯನ್ನು ರಕ್ಷಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು ನಿಮ್ಮ ಗುರುತನ್ನು ಪರಿಶೀಲಿಸಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರು ನಮೂದಿಸಿ." + }, + "emailVerificationRequired": { + "message": "ಇಮೇಲ್ ಪರಿಶೀಲನೆ ಅಗತ್ಯವಿದೆ" + }, + "emailVerificationRequiredDesc": { + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json new file mode 100644 index 0000000000..639d216961 --- /dev/null +++ b/apps/browser/src/_locales/ko/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - 무료 비밀번호 관리자", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "당신의 모든 기기에서 사용할 수 있는, 안전한 무료 비밀번호 관리자입니다.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "안전 보관함에 접근하려면 로그인하거나 새 계정을 만드세요." + }, + "createAccount": { + "message": "계정 만들기" + }, + "login": { + "message": "로그인" + }, + "enterpriseSingleSignOn": { + "message": "엔터프라이즈 통합 인증 (SSO)" + }, + "cancel": { + "message": "취소" + }, + "close": { + "message": "닫기" + }, + "submit": { + "message": "보내기" + }, + "emailAddress": { + "message": "이메일 주소" + }, + "masterPass": { + "message": "마스터 비밀번호" + }, + "masterPassDesc": { + "message": "마스터 비밀번호는 보관함을 열 때 필요한 비밀번호입니다. 절대 마스터 비밀번호를 잊어버리지 마세요. 잊어버리면 복구할 수 있는 방법이 없습니다." + }, + "masterPassHintDesc": { + "message": "마스터 비밀번호 힌트는 마스터 비밀번호를 잊었을 때 도움이 될 수 있습니다." + }, + "reTypeMasterPass": { + "message": "마스터 비밀번호 다시 입력" + }, + "masterPassHint": { + "message": "마스터 비밀번호 힌트 (선택)" + }, + "tab": { + "message": "탭" + }, + "myVault": { + "message": "내 보관함" + }, + "tools": { + "message": "도구" + }, + "settings": { + "message": "설정" + }, + "currentTab": { + "message": "현재 탭" + }, + "copyPassword": { + "message": "비밀번호 복사" + }, + "copyNote": { + "message": "메모 복사" + }, + "copyUri": { + "message": "URI 복사" + }, + "copyUsername": { + "message": "사용자 이름 복사" + }, + "copyNumber": { + "message": "번호 복사" + }, + "copySecurityCode": { + "message": "보안 코드 복사" + }, + "autoFill": { + "message": "자동 완성" + }, + "generatePasswordCopied": { + "message": "비밀번호 생성 및 클립보드에 복사" + }, + "copyElementIdentifier": { + "message": "사용자 지정 필드 이름 복사" + }, + "noMatchingLogins": { + "message": "사용할 수 있는 로그인이 없습니다." + }, + "unlockVaultMenu": { + "message": "보관함 잠금 해제" + }, + "loginToVaultMenu": { + "message": "보관함에 로그인하기" + }, + "autoFillInfo": { + "message": "이 탭의 자동 완성에 사용할 수 있는 로그인이 없습니다." + }, + "addLogin": { + "message": "로그인 추가" + }, + "addItem": { + "message": "항목 추가" + }, + "passwordHint": { + "message": "비밀번호 힌트" + }, + "enterEmailToGetHint": { + "message": "마스터 비밀번호 힌트를 받으려면 계정의 이메일 주소를 입력하세요." + }, + "getMasterPasswordHint": { + "message": "마스터 비밀번호 힌트 얻기" + }, + "continue": { + "message": "계속" + }, + "sendVerificationCode": { + "message": "이메일로 인증 코드 보내기" + }, + "sendCode": { + "message": "코드 전송" + }, + "codeSent": { + "message": "코드 전송됨" + }, + "verificationCode": { + "message": "인증 코드" + }, + "confirmIdentity": { + "message": "계속하려면 암호를 확인하세요." + }, + "account": { + "message": "계정" + }, + "changeMasterPassword": { + "message": "마스터 비밀번호 변경" + }, + "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." + }, + "twoStepLogin": { + "message": "2단계 인증" + }, + "logOut": { + "message": "로그아웃" + }, + "about": { + "message": "정보" + }, + "version": { + "message": "버전" + }, + "save": { + "message": "저장" + }, + "move": { + "message": "이동" + }, + "addFolder": { + "message": "폴더 추가" + }, + "name": { + "message": "이름" + }, + "editFolder": { + "message": "폴더 편집" + }, + "deleteFolder": { + "message": "폴더 삭제" + }, + "folders": { + "message": "폴더" + }, + "noFolders": { + "message": "폴더가 없습니다." + }, + "helpFeedback": { + "message": "도움말 및 의견" + }, + "sync": { + "message": "동기화" + }, + "syncVaultNow": { + "message": "지금 보관함 동기화" + }, + "lastSync": { + "message": "마지막 동기화:" + }, + "passGen": { + "message": "비밀번호 생성기" + }, + "generator": { + "message": "생성기", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "유일무이하고 강력한 비밀번호를 자동으로 생성합니다." + }, + "bitWebVault": { + "message": "Bitwarden 웹 보관함" + }, + "importItems": { + "message": "항목 가져오기" + }, + "select": { + "message": "선택" + }, + "generatePassword": { + "message": "비밀번호 생성" + }, + "regeneratePassword": { + "message": "비밀번호 재생성" + }, + "options": { + "message": "옵션" + }, + "length": { + "message": "길이" + }, + "uppercase": { + "message": "대문자 (A-Z)" + }, + "lowercase": { + "message": "소문자 (a-z)" + }, + "numbers": { + "message": "숫자 (0-9)" + }, + "specialCharacters": { + "message": "특수 문자 (!@#$%^&*)" + }, + "numWords": { + "message": "단어 수" + }, + "wordSeparator": { + "message": "구분 기호" + }, + "capitalize": { + "message": "첫 글자를 대문자로", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "숫자 포함" + }, + "minNumbers": { + "message": "숫자 최소 개수" + }, + "minSpecial": { + "message": "특수 문자 최소 개수" + }, + "avoidAmbChar": { + "message": "모호한 문자 사용 안 함" + }, + "searchVault": { + "message": "보관함 검색" + }, + "edit": { + "message": "편집" + }, + "view": { + "message": "보기" + }, + "noItemsInList": { + "message": "항목이 없습니다." + }, + "itemInformation": { + "message": "항목 정보" + }, + "username": { + "message": "사용자 이름" + }, + "password": { + "message": "비밀번호" + }, + "passphrase": { + "message": "패스프레이즈" + }, + "favorite": { + "message": "즐겨찾기" + }, + "notes": { + "message": "메모" + }, + "note": { + "message": "메모" + }, + "editItem": { + "message": "항목 편집" + }, + "folder": { + "message": "폴더" + }, + "deleteItem": { + "message": "항목 삭제" + }, + "viewItem": { + "message": "항목 보기" + }, + "launch": { + "message": "열기" + }, + "website": { + "message": "웹 사이트" + }, + "toggleVisibility": { + "message": "표시 전환" + }, + "manage": { + "message": "관리" + }, + "other": { + "message": "기타" + }, + "rateExtension": { + "message": "확장 프로그램 평가" + }, + "rateExtensionDesc": { + "message": "좋은 리뷰를 남겨 저희를 도와주세요!" + }, + "browserNotSupportClipboard": { + "message": "사용하고 있는 웹 브라우저가 쉬운 클립보드 복사를 지원하지 않습니다. 직접 복사하세요." + }, + "verifyIdentity": { + "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": "잘못된 마스터 비밀번호" + }, + "vaultTimeout": { + "message": "보관함 시간 제한" + }, + "lockNow": { + "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시간" + }, + "onLocked": { + "message": "시스템 잠금 시" + }, + "onRestart": { + "message": "브라우저 다시 시작 시" + }, + "never": { + "message": "잠그지 않음" + }, + "security": { + "message": "보안" + }, + "errorOccurred": { + "message": "오류가 발생했습니다" + }, + "emailRequired": { + "message": "이메일은 반드시 입력해야 합니다." + }, + "invalidEmail": { + "message": "잘못된 이메일 주소입니다." + }, + "masterPassRequired": { + "message": "마스터 비밀번호는 반드시 입력해야 합니다." + }, + "masterPassLength": { + "message": "마스터 비밀번호는 최소 8자 이상이어야 합니다." + }, + "masterPassDoesntMatch": { + "message": "마스터 비밀번호 확인과 마스터 비밀번호가 일치하지 않습니다." + }, + "newAccountCreated": { + "message": "계정 생성이 완료되었습니다! 이제 로그인하실 수 있습니다." + }, + "masterPassSent": { + "message": "마스터 비밀번호 힌트가 담긴 이메일을 보냈습니다." + }, + "verificationCodeRequired": { + "message": "인증 코드는 반드시 입력해야 합니다." + }, + "invalidVerificationCode": { + "message": "유효하지 않은 확인 코드" + }, + "valueCopied": { + "message": "$VALUE$를 클립보드에 복사함", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "선택한 항목을 이 페이지에서 자동 완성할 수 없습니다. 대신 정보를 직접 복사 / 붙여넣기하여 사용하십시오." + }, + "loggedOut": { + "message": "로그아웃됨" + }, + "loginExpired": { + "message": "로그인 세션이 만료되었습니다." + }, + "logOutConfirmation": { + "message": "정말 로그아웃하시겠습니까?" + }, + "yes": { + "message": "예" + }, + "no": { + "message": "아니오" + }, + "unexpectedError": { + "message": "예기치 못한 오류가 발생했습니다." + }, + "nameRequired": { + "message": "이름은 반드시 입력해야 합니다." + }, + "addedFolder": { + "message": "폴더 추가함" + }, + "changeMasterPass": { + "message": "마스터 비밀번호 변경" + }, + "changeMasterPasswordConfirmation": { + "message": "bitwarden.com 웹 보관함에서 마스터 비밀번호를 바꿀 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "twoStepLoginConfirmation": { + "message": "2단계 인증은 보안 키, 인증 앱, SMS, 전화 통화 등의 다른 기기로 사용자의 로그인 시도를 검증하여 사용자의 계정을 더욱 안전하게 만듭니다. 2단계 인증은 bitwarden.com 웹 보관함에서 활성화할 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "editedFolder": { + "message": "폴더 편집함" + }, + "deleteFolderConfirmation": { + "message": "정말 이 폴더를 삭제하시겠습니까?" + }, + "deletedFolder": { + "message": "폴더 삭제함" + }, + "gettingStartedTutorial": { + "message": "시작하기 튜토리얼" + }, + "gettingStartedTutorialVideo": { + "message": "브라우저 확장 프로그램을 최대한 활용하는 방법을 알아보려면 시작하기 튜토리얼을 확인하세요." + }, + "syncingComplete": { + "message": "동기화 완료" + }, + "syncingFailed": { + "message": "동기화 실패" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "항목 추가함" + }, + "editedItem": { + "message": "항목 편집함" + }, + "deleteItemConfirmation": { + "message": "정말로 휴지통으로 이동시킬까요?" + }, + "deletedItem": { + "message": "항목 삭제함" + }, + "overwritePassword": { + "message": "비밀번호 덮어쓰기" + }, + "overwritePasswordConfirmation": { + "message": "정말 현재 비밀번호를 덮어쓰시겠습니까?" + }, + "overwriteUsername": { + "message": "아이디 덮어쓰기" + }, + "overwriteUsernameConfirmation": { + "message": "정말 현재 아이디를 덮어쓰시겠습니까?" + }, + "searchFolder": { + "message": "폴더 검색" + }, + "searchCollection": { + "message": "컬렉션 검색" + }, + "searchType": { + "message": "검색 유형" + }, + "noneFolder": { + "message": "폴더 없음", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "로그인 추가 알림 사용 안 함" + }, + "addLoginNotificationDesc": { + "message": "\"로그인 추가 알림\"을 사용하면 새 로그인을 사용할 때마다 보관함에 그 로그인을 추가할 것인지 물어봅니다." + }, + "dontShowCardsCurrentTab": { + "message": "탭 페이지에 카드 표시 안 함" + }, + "dontShowCardsCurrentTabDesc": { + "message": "보관함의 카드 항목은 쉽게 자동 완성할 수 있게끔 '현재 탭' 페이지에 나열되어 있습니다." + }, + "dontShowIdentitiesCurrentTab": { + "message": "탭 페이지에 신원 표시 안 함" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Bitwarden이 이 비밀번호를 기억하도록 하시겠습니까?" + }, + "notificationAddSave": { + "message": "예, 지금 저장하겠습니다." + }, + "disableChangedPasswordNotification": { + "message": "비밀번호 변경 알림 사용 안 함" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"비밀번호 변경 알림\"을 사용하면 사용자가 웹 사이트에서 비밀번호를 변경했을 경우, 보관함에 저장된 비밀번호를 업데이트할 것인지 자동으로 물어봅니다." + }, + "notificationChangeDesc": { + "message": "Bitwarden에 저장되어 있는 비밀번호를 이 비밀번호로 변경하시겠습니까?" + }, + "notificationChangeSave": { + "message": "예, 지금 변경하겠습니다." + }, + "disableContextMenuItem": { + "message": "오른쪽 클릭 메뉴 옵션 사용 안 함" + }, + "disableContextMenuItemDesc": { + "message": "오른쪽 클릭 메뉴 옵션을 사용하면 비밀번호 생성이나 현재 탭 웹 사이트의 로그인에 빠르게 접근할 수 있습니다." + }, + "defaultUriMatchDetection": { + "message": "기본 URI 일치 인식", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "자동 완성 등의 작업에서 각 로그인 항목의 URI 일치 감지를 처리할 기본 방법을 선택하세요." + }, + "theme": { + "message": "테마" + }, + "themeDesc": { + "message": "애플리케이션의 색상 테마를 변경합니다." + }, + "dark": { + "message": "어두운 테마", + "description": "Dark color" + }, + "light": { + "message": "밝은 테마", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "보관함 데이터를 내보내려면 마스터 비밀번호를 입력하세요." + }, + "shared": { + "message": "공유됨" + }, + "learnOrg": { + "message": "조직에 대해 알아보기" + }, + "learnOrgConfirmation": { + "message": "Bitwarden은 조직용 계정을 사용하면 사용자의 보관함을 타인에게 공유할 수 있습니다. bitwarden.com 웹 사이트를 방문하여 더 자세히 알아보시겠습니까?" + }, + "moveToOrganization": { + "message": "조직으로 이동하기" + }, + "share": { + "message": "공유" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$이(가) $ORGNAME$(으)로 이동됨", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "이 항목을 이동할 조직을 선택하십시오. 항목이 조직으로 이동되면 소유권이 조직으로 이전됩니다. 일단 이동되면, 더는 이동된 항목의 직접적인 소유자가 아니게 됩니다." + }, + "learnMore": { + "message": "더 알아보기" + }, + "authenticatorKeyTotp": { + "message": "인증 키 (TOTP)" + }, + "verificationCodeTotp": { + "message": "인증 코드 (TOTP)" + }, + "copyVerificationCode": { + "message": "인증 코드 복사" + }, + "attachments": { + "message": "첨부 파일" + }, + "deleteAttachment": { + "message": "첨부 파일 삭제" + }, + "deleteAttachmentConfirmation": { + "message": "정말 이 첨부 파일을 삭제하시겠습니까?" + }, + "deletedAttachment": { + "message": "첨부 파일 삭제함" + }, + "newAttachment": { + "message": "새 첨부 파일 추가" + }, + "noAttachments": { + "message": "첨부 파일이 없습니다." + }, + "attachmentSaved": { + "message": "첨부 파일을 저장했습니다." + }, + "file": { + "message": "파일" + }, + "selectFile": { + "message": "파일을 선택하세요." + }, + "maxFileSize": { + "message": "최대 파일 크기는 500MB입니다." + }, + "featureUnavailable": { + "message": "기능 사용할 수 없음" + }, + "updateKey": { + "message": "이 기능을 사용하려면 암호화 키를 업데이트해야 합니다." + }, + "premiumMembership": { + "message": "프리미엄 멤버십" + }, + "premiumManage": { + "message": "멤버십 관리" + }, + "premiumManageAlert": { + "message": "bitwarden.com 웹 보관함에서 멤버십을 관리할 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "premiumRefresh": { + "message": "멤버십 새로 고침" + }, + "premiumNotCurrentMember": { + "message": "프리미엄 사용자가 아닙니다." + }, + "premiumSignUpAndGet": { + "message": "프리미엄 멤버십에 가입하면 얻을 수 있는 것:" + }, + "ppremiumSignUpStorage": { + "message": "1GB의 암호화된 파일 저장소." + }, + "ppremiumSignUpTwoStep": { + "message": "YubiKey나 FIDO U2F, Duo 등의 추가적인 2단계 인증 옵션." + }, + "ppremiumSignUpReports": { + "message": "보관함을 안전하게 유지하기 위한 암호 위생, 계정 상태, 데이터 유출 보고서" + }, + "ppremiumSignUpTotp": { + "message": "보관함에 등록된 로그인 항목을 위한 TOTP 인증 코드(2FA) 생성기." + }, + "ppremiumSignUpSupport": { + "message": "고객 지원 우선 순위 제공." + }, + "ppremiumSignUpFuture": { + "message": "앞으로 추가될 모든 프리미엄 기능을 사용할 수 있습니다. 기대하세요!" + }, + "premiumPurchase": { + "message": "프리미엄 멤버십 구입" + }, + "premiumPurchaseAlert": { + "message": "bitwarden.com 웹 보관함에서 프리미엄 멤버십을 구입할 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "premiumCurrentMember": { + "message": "프리미엄 사용자입니다!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden을 지원해 주셔서 감사합니다." + }, + "premiumPrice": { + "message": "이 모든 기능을 연 $PRICE$에 이용하실 수 있습니다!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "새로 고침 완료" + }, + "disableAutoTotpCopy": { + "message": "TOTP 자동 복사 사용 안 함" + }, + "disableAutoTotpCopyDesc": { + "message": "로그인에 인증 키가 연결되어 있을 경우, 그 로그인을 자동 완성할 때마다 TOTP 인증 코드가 클립보드에 자동으로 복사됩니다." + }, + "disableAutoBiometricsPrompt": { + "message": "시작할 때 생체 인증 요구하지 않음" + }, + "premiumRequired": { + "message": "프리미엄 멤버십 필요" + }, + "premiumRequiredDesc": { + "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 포트에 삽입하고 버튼이 있는 경우 누르세요." + }, + "webAuthnNewTab": { + "message": "새 탭에서 WebAuthn 2단계 인증을 계속하세요." + }, + "webAuthnNewTabOpen": { + "message": "새 탭 열기" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn 인증" + }, + "loginUnavailable": { + "message": "로그인 불가능" + }, + "noTwoStepProviders": { + "message": "이 계정은 2단계 인증을 사용합니다. 그러나 설정된 2단계 인증 중 이 웹 브라우저에서 지원하는 방식이 없습니다." + }, + "noTwoStepProviders2": { + "message": "지원하는 웹 브라우저(Chrome 등)를 사용하거나 더 많은 브라우저를 지원하는 2단계 인증 방식(인증 앱 등)을 추가하세요." + }, + "twoStepOptions": { + "message": "2단계 인증 옵션" + }, + "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": "인증 코드가 담긴 이메일을 다시 보냅니다." + }, + "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 값을 저장했습니다." + }, + "enableAutoFillOnPageLoad": { + "message": "페이지 로드 시 자동 완성 사용" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "로그인 양식을 감지하면 웹 페이지 로드 시 자동 완성을 자동으로 수행합니다." + }, + "experimentalFeature": { + "message": "현재 실험 중인 기능입니다. 위험을 감수하여 사용하세요." + }, + "defaultAutoFillOnPageLoad": { + "message": "로그인 항목에 대한 기본 자동 완성 설정" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "페이지 로드 시 자동 완성을 켠 뒤에는 각 로그인 항목별로 이 기능을 켜거나 끌 수 있습니다. 이 옵션은 해당 기능을 개별적으로 구성하지 않은 항목에 사용되는 기본 설정값입니다." + }, + "itemAutoFillOnPageLoad": { + "message": "페이지 로드 시 자동 완성 (옵션에서 켜져 있을 경우)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "기본 설정 사용" + }, + "autoFillOnPageLoadYes": { + "message": "페이지 로드 시 자동 완성" + }, + "autoFillOnPageLoadNo": { + "message": "페이지 로드 시 자동 완성 안 함" + }, + "commandOpenPopup": { + "message": "보관함 팝업 열기" + }, + "commandOpenSidebar": { + "message": "사이드바에서 보관함 열기" + }, + "commandAutofillDesc": { + "message": "현재 웹사이트에서 최근에 사용했던 로그인을 자동 완성합니다." + }, + "commandGeneratePasswordDesc": { + "message": "새 무작위 비밀번호를 만들고 클립보드에 복사합니다." + }, + "commandLockVaultDesc": { + "message": "보관함 잠그기" + }, + "privateModeWarning": { + "message": "시크릿 모드 지원은 실험적이며 일부 기능이 제한됩니다." + }, + "customFields": { + "message": "사용자 지정 필드" + }, + "copyValue": { + "message": "값 복사" + }, + "value": { + "message": "값" + }, + "newCustomField": { + "message": "새 사용자 지정 필드" + }, + "dragToSort": { + "message": "드래그하여 정렬" + }, + "cfTypeText": { + "message": "텍스트" + }, + "cfTypeHidden": { + "message": "숨김" + }, + "cfTypeBoolean": { + "message": "참 / 거짓" + }, + "cfTypeLinked": { + "message": "연결됨", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "연결된 값", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "인증 코드가 담긴 이메일을 확인하기 위해 팝업 창의 바깥쪽을 누르면 이 팝업이 닫힙니다. 팝업 창이 닫히는 것을 방지하기 위해 이 팝업을 새 창에서 다시 여시겠습니까?" + }, + "popupU2fCloseMessage": { + "message": "이 브라우저의 팝업 창에서는 U2F 요청을 처리할 수 없습니다. U2F로 로그인할 수 있도록 이 창을 새 창에서 여시겠습니까?" + }, + "disableFavicon": { + "message": "웹 사이트 아이콘 사용 안 함" + }, + "disableFaviconDesc": { + "message": "웹 사이트 아이콘을 사용하면 보관함 각 항목 옆에 이미지를 보여줍니다." + }, + "disableBadgeCounter": { + "message": "배지에 개수 표시 사용 안 함" + }, + "disableBadgeCounterDesc": { + "message": "배지에는 보관함에 등록된 현재 페이지에 대한 로그인의 개수가 표시됩니다." + }, + "cardholderName": { + "message": "카드 소유자 이름" + }, + "number": { + "message": "번호" + }, + "brand": { + "message": "브랜드" + }, + "expirationMonth": { + "message": "만료 월" + }, + "expirationYear": { + "message": "만료 연도" + }, + "expiration": { + "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월" + }, + "securityCode": { + "message": "보안 코드" + }, + "ex": { + "message": "예)" + }, + "title": { + "message": "제목" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "이름" + }, + "middleName": { + "message": "가운데 이름" + }, + "lastName": { + "message": "성" + }, + "fullName": { + "message": "전체 이름" + }, + "identityName": { + "message": "ID 이름" + }, + "company": { + "message": "회사" + }, + "ssn": { + "message": "주민등록번호" + }, + "passportNumber": { + "message": "여권 번호" + }, + "licenseNumber": { + "message": "면허 번호" + }, + "email": { + "message": "이메일" + }, + "phone": { + "message": "전화번호" + }, + "address": { + "message": "주소" + }, + "address1": { + "message": "주소 1" + }, + "address2": { + "message": "주소 2" + }, + "address3": { + "message": "주소 3" + }, + "cityTown": { + "message": "읍 / 면 / 동" + }, + "stateProvince": { + "message": "시 / 도" + }, + "zipPostalCode": { + "message": "우편번호" + }, + "country": { + "message": "국가" + }, + "type": { + "message": "유형" + }, + "typeLogin": { + "message": "로그인" + }, + "typeLogins": { + "message": "로그인" + }, + "typeSecureNote": { + "message": "보안 메모" + }, + "typeCard": { + "message": "카드" + }, + "typeIdentity": { + "message": "신원" + }, + "passwordHistory": { + "message": "비밀번호 변경 기록" + }, + "back": { + "message": "뒤로" + }, + "collections": { + "message": "컬렉션" + }, + "favorites": { + "message": "즐겨찾기" + }, + "popOutNewWindow": { + "message": "새 창에서 보기" + }, + "refresh": { + "message": "새로 고침" + }, + "cards": { + "message": "카드" + }, + "identities": { + "message": "신원" + }, + "logins": { + "message": "로그인" + }, + "secureNotes": { + "message": "보안 메모" + }, + "clear": { + "message": "삭제", + "description": "To clear something out. example: To clear browser history." + }, + "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": "표시 / 숨기기" + }, + "toggleCurrentUris": { + "message": "현재 URI 전환", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "현재 URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "조직", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "유형" + }, + "allItems": { + "message": "모든 항목" + }, + "noPasswordsInList": { + "message": "비밀번호가 없습니다." + }, + "remove": { + "message": "제거" + }, + "default": { + "message": "기본값" + }, + "dateUpdated": { + "message": "업데이트됨", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "비밀번호 업데이트됨", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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 코드입니다." + }, + "unlockWithBiometrics": { + "message": "생체 인식을 사용하여 잠금 해제" + }, + "awaitDesktop": { + "message": "데스크톱으로부터의 확인을 대기 중" + }, + "awaitDesktopDesc": { + "message": "브라우저 생체 인식을 사용하기 위해서는 Bitwarden 데스크톱 앱에서 생체 인식을 이용하여 승인해주세요." + }, + "lockWithMasterPassOnRestart": { + "message": "브라우저 다시 시작 시 마스터 비밀번호로 잠금" + }, + "selectOneCollection": { + "message": "반드시 하나 이상의 컬렉션을 선택해야 합니다." + }, + "cloneItem": { + "message": "항목 복제" + }, + "clone": { + "message": "복제" + }, + "passwordGeneratorPolicyInEffect": { + "message": "하나 이상의 단체 정책이 생성기 규칙에 영항을 미치고 있습니다." + }, + "vaultTimeoutAction": { + "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": "복원된 항목" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "로그아웃하면 보관함에 대한 모든 접근이 제거되며 시간 제한을 초과하면 온라인 인증을 요구합니다. 정말로 이 설정을 사용하시겠습니까?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "시간 제한 초과시 동작 확인" + }, + "autoFillAndSave": { + "message": "자동 완성 및 저장" + }, + "autoFillSuccessAndSavedUri": { + "message": "항목을 자동 완성하고 URI를 저장함" + }, + "autoFillSuccess": { + "message": "항목을 자동 완성함" + }, + "setMasterPassword": { + "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": "서비스 약관 및 개인 정보 보호 정책을 확인하지 않았습니다." + }, + "termsOfService": { + "message": "서비스 약관" + }, + "privacyPolicy": { + "message": "개인 정보 보호 정책" + }, + "hintEqualsPassword": { + "message": "비밀번호 힌트는 비밀번호와 같을 수 없습니다." + }, + "ok": { + "message": "확인" + }, + "desktopSyncVerificationTitle": { + "message": "데스크톱과의 동기화 인증" + }, + "desktopIntegrationVerificationText": { + "message": "데스크톱 앱이 다음 지문 구절을 표시하는지 확인해주세요:" + }, + "desktopIntegrationDisabledTitle": { + "message": "브라우저와 연결이 활성화되지 않았습니다" + }, + "desktopIntegrationDisabledDesc": { + "message": "브라우저와 연결이 Bitwarden 데스크톱 앱에서 활성화되지 않았습니다. 데스크톱 앱의 설정에서 브라우저와 연결을 활성화해주세요." + }, + "startDesktopTitle": { + "message": "Bitwarden 데스크톱 앱을 실행하세요" + }, + "startDesktopDesc": { + "message": "이 기능을 사용하기 위해서는 Bitwarden 데스크톱 앱이 먼저 실행되어 있어야 합니다." + }, + "errorEnableBiometricTitle": { + "message": "생체 인식을 활성화할 수 없음" + }, + "errorEnableBiometricDesc": { + "message": "데스크톱 앱에서 작업이 취소되었습니다" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "데스크톱 앱에서 이 보안 통신 채널을 무효화했습니다. 다시 시도해 주세요." + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "데스크톱과의 통신이 중단됨" + }, + "nativeMessagingWrongUserDesc": { + "message": "데스크톱 앱에 다른 계정으로 로그인된 상태입니다. 두 앱에 같은 계정으로 로그인되어 있는지 확인해주세요." + }, + "nativeMessagingWrongUserTitle": { + "message": "계정이 일치하지 않음" + }, + "biometricsNotEnabledTitle": { + "message": "생체 인식이 활성화되지 않음" + }, + "biometricsNotEnabledDesc": { + "message": "브라우저에서 생체 인식을 사용하기 위해서는 설정에서 데스크톱 생체 인식을 먼저 활성화해야 합니다." + }, + "biometricsNotSupportedTitle": { + "message": "생체 인식이 지원되지 않음" + }, + "biometricsNotSupportedDesc": { + "message": "이 기기에서는 생체 인식이 지원되지 않습니다." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "권한이 부여되지 않음" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bitwarden 데스크톱 앱과 통신할 권한이 부여되지 않은 상태에서는 브라우저 확장 프로그램에서 생체 인식을 사용할 수 없습니다. 다시 시도해 주세요." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "권한 요청 오류" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "사이드바에서는 이 동작을 수행할 수 없습니다. 팝업 혹은 새 창으로 열고 다시 시도해 주세요." + }, + "personalOwnershipSubmitError": { + "message": "엔터프라이즈 정책으로 인해 개인 보관함에 항목을 저장할 수 없습니다. 조직에서 소유권 설정을 변경한 다음, 사용 가능한 컬렉션 중에서 선택해주세요." + }, + "personalOwnershipPolicyInEffect": { + "message": "조직의 정책이 소유권 설정에 영향을 미치고 있습니다." + }, + "excludedDomains": { + "message": "제외된 도메인" + }, + "excludedDomainsDesc": { + "message": "Bitwarden은 이 도메인들에 대해 로그인 정보를 저장할 것인지 묻지 않습니다. 페이지를 새로고침해야 변경된 내용이 적용됩니다." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ 도메인은 유효한 도메인이 아닙니다.", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Send 검색", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Send 추가", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "텍스트" + }, + "sendTypeFile": { + "message": "파일" + }, + "allSends": { + "message": "모든 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "최대 접근 횟수 도달", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "만료됨" + }, + "pendingDeletion": { + "message": "삭제 대기 중" + }, + "passwordProtected": { + "message": "비밀번호로 보호됨" + }, + "copySendLink": { + "message": "Send 링크 복사", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "비밀번호 제거" + }, + "delete": { + "message": "삭제" + }, + "removedPassword": { + "message": "비밀번호 제거함" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "비활성화됨" + }, + "removePasswordConfirmation": { + "message": "비밀번호를 제거하시겠습니까?" + }, + "deleteSend": { + "message": "Send 삭제", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "어떤 유형의 Send인가요?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "이 Send의 이름", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1일" + }, + "days": { + "message": "$DAYS$일", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "사용자 지정" + }, + "maximumAccessCount": { + "message": "최대 접근 횟수" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "이 Send를 비활성화하여 아무도 접근할 수 없게 합니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "저장할 때 이 Send의 링크를 클립보드에 복사합니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "전송하려는 텍스트" + }, + "sendHideText": { + "message": "이 Send의 텍스트를 기본적으로 숨김", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "현재 접근 횟수" + }, + "createSend": { + "message": "새 Send 생성", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "새 비밀번호" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "파일을 선택하려면 이 배너를 클릭하여 확장 프로그램을 사이드바에서 열거나, 불가능한 경우 새 창에서 여세요." + }, + "sendFirefoxFileWarning": { + "message": "Firefox에서 파일을 선택할 경우, 이 배너를 클릭하여 확장 프로그램을 사이드바 혹은 새 창에서 여세요." + }, + "sendSafariFileWarning": { + "message": "Safari에서 파일을 선택할 경우, 이 배너를 클릭하여 확장 프로그램을 새 창에서 여세요." + }, + "sendFileCalloutHeader": { + "message": "시작하기 전에" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "달력을 보고 날짜를 선택하려면", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "여기를 클릭하여", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "확장 프로그램을 새 창에서 여세요.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "제공된 만료 날짜가 유효하지 않습니다." + }, + "deletionDateIsInvalid": { + "message": "제공된 삭제 날짜가 유효하지 않습니다." + }, + "expirationDateAndTimeRequired": { + "message": "만료 날짜와 시간은 반드시 입력해야 합니다." + }, + "deletionDateAndTimeRequired": { + "message": "삭제 날짜와 시간은 반드시 입력해야 합니다." + }, + "dateParsingError": { + "message": "삭제 날짜와 만료 날짜를 저장하는 도중 오류가 발생했습니다." + }, + "hideEmail": { + "message": "받는 사람으로부터 나의 이메일 주소 숨기기" + }, + "sendOptionsPolicyInEffect": { + "message": "하나 이상의 단체 정책이 Send 설정에 영향을 미치고 있습니다." + }, + "passwordPrompt": { + "message": "마스터 비밀번호 재확인" + }, + "passwordConfirmation": { + "message": "마스터 비밀번호 확인" + }, + "passwordConfirmationDesc": { + "message": "이 작업은 보호되어 있습니다. 계속하려면 마스터 비밀번호를 입력하여 신원을 인증하세요." + }, + "emailVerificationRequired": { + "message": "이메일 인증 필요함" + }, + "emailVerificationRequiredDesc": { + "message": "이 기능을 사용하려면 이메일 인증이 필요합니다. 웹 보관함에서 이메일을 인증할 수 있습니다." + }, + "updatedMasterPassword": { + "message": "마스터 비밀번호 변경됨" + }, + "updateMasterPassword": { + "message": "마스터 비밀번호 변경" + }, + "updateMasterPasswordWarning": { + "message": "최근에 조직 관리자가 마스터 비밀번호를 변경했습니다. 보관함에 액세스하려면 지금 업데이트해야 합니다. 계속하면 현재 세션에서 로그아웃되며 다시 로그인해야 합니다. 다른 장치의 활성 세션은 최대 1시간 동안 계속 활성 상태로 유지될 수 있습니다." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "자동 등록" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "이 조직에는 자동으로 비밀번호 재설정에 등록하는 기업 정책이 있습니다. 등록하면 조직 관리자가 마스터 암호를 변경할 수 있습니다." + }, + "selectFolder": { + "message": "폴더 선택..." + }, + "ssoCompleteRegistration": { + "message": "SSO 로그인을 하기 위해서 보관함에 접근하고 보호할 수 있도록 마스터 비밀번호를 설정해주세요." + }, + "hours": { + "message": "시" + }, + "minutes": { + "message": "분" + }, + "vaultTimeoutPolicyInEffect": { + "message": "조직 정책이 보관함 제한 시간에 영향을 미치고 있습니다. 최대 허용 보관함 제한 시간은 $HOURS$시간 $MINUTES$분입니다", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "볼트 제한 시간이 조직에서 설정한 제한을 초과합니다." + }, + "vaultExportDisabled": { + "message": "보관함 내보내기 비활성화됨" + }, + "personalVaultExportPolicyInEffect": { + "message": "하나 이상의 조직 정책이 개인 보관함을 내보내는 것을 제한하고 있습니다." + }, + "copyCustomFieldNameInvalidElement": { + "message": "유효한 양식 요소를 식별하지 못했습니다. 대신 HTML을 검사해 보세요." + }, + "copyCustomFieldNameNotUnique": { + "message": "고유 식별자를 찾을 수 없습니다." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ 조직은 자체 호스팅 키 서버로 SSO를 사용하고 있습니다 이 조직의 멤버들은 로그인할 때에 마스터 비밀번호를 필요로 하지 않습니다.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "조직 나가기" + }, + "removeMasterPassword": { + "message": "마스터 비밀번호 제거" + }, + "removedMasterPassword": { + "message": "마스터 비밀번호가 제거되었습니다." + }, + "leaveOrganizationConfirmation": { + "message": "정말 이 조직을 떠나시겠어요?" + }, + "leftOrganization": { + "message": "조직을 떠났습니다." + }, + "toggleCharacterCount": { + "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" + } + } + }, + "error": { + "message": "오류" + }, + "regenerateUsername": { + "message": "아이디 재생성" + }, + "generateUsername": { + "message": "아이디 생성" + }, + "usernameType": { + "message": "아이디 유형" + }, + "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": "무작위" + }, + "randomWord": { + "message": "무작위 단어" + }, + "websiteName": { + "message": "웹사이트 이름" + }, + "whatWouldYouLikeToGenerate": { + "message": "무엇을 생성하실건가요?" + }, + "passwordType": { + "message": "비밀번호 유형" + }, + "service": { + "message": "서비스" + } +} diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json new file mode 100644 index 0000000000..3a2dff4064 --- /dev/null +++ b/apps/browser/src/_locales/lt/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Saugi ir nemokama slaptažodžių tvarkyklė visiems įrenginiams.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Prisijunkite arba sukurkite naują paskyrą, kad galėtumėte pasiekti saugyklą." + }, + "createAccount": { + "message": "Sukurti paskyrą" + }, + "login": { + "message": "Prisijungti" + }, + "enterpriseSingleSignOn": { + "message": "Vienkartinis įmonės prisijungimas" + }, + "cancel": { + "message": "Atšaukti" + }, + "close": { + "message": "Uždaryti" + }, + "submit": { + "message": "Išsaugoti" + }, + "emailAddress": { + "message": "El. paštas" + }, + "masterPass": { + "message": "Pagrindinis slaptažodis" + }, + "masterPassDesc": { + "message": "Pagrindinis slaptažodis yra slaptažodis, kurį naudojate norėdami pasiekti savo saugyklą. Labai svarbu nepamiršti pagrindinio slaptažodžio. Negalėsite atkurti slaptažodį, jei jį pamiršote." + }, + "masterPassHintDesc": { + "message": "Pagrindinio slaptažodžio užuomina gali padėti prisiminti slaptažodį, jei jį pamiršite." + }, + "reTypeMasterPass": { + "message": "Pakartokite pagrindinį slaptažodį" + }, + "masterPassHint": { + "message": " Pagrindinio slaptažodžio užuomina (neprivaloma)" + }, + "tab": { + "message": "Skirtukas" + }, + "myVault": { + "message": "Saugykla" + }, + "tools": { + "message": "Įrankiai" + }, + "settings": { + "message": "Nustatymai" + }, + "currentTab": { + "message": "Dabartinis skirtukas" + }, + "copyPassword": { + "message": "Kopijuoti slaptažodį" + }, + "copyNote": { + "message": "Kopijuoti pastabas" + }, + "copyUri": { + "message": "Kopijuoti nuorodą" + }, + "copyUsername": { + "message": "Kopijuoti vartotojo vardą" + }, + "copyNumber": { + "message": "Kopijuoti numerį" + }, + "copySecurityCode": { + "message": "Kopijuoti saugos kodą" + }, + "autoFill": { + "message": "Automatinis užpildymas" + }, + "generatePasswordCopied": { + "message": "Kurti slaptažodį (paruoštas įterpti)" + }, + "copyElementIdentifier": { + "message": "Kopijuoti pritaikyto laukelio pavadinimą" + }, + "noMatchingLogins": { + "message": "Nėra atitinkančių prisijungimų." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "Nėra galimų prisijungimų prie dabartinio naršyklės skirtuko." + }, + "addLogin": { + "message": "Pridėti prisijungimą" + }, + "addItem": { + "message": "Pridėti elementą" + }, + "passwordHint": { + "message": "Slaptažodžio užuomina" + }, + "enterEmailToGetHint": { + "message": "Įveskite savo paskyros el. pašto adresą, kad gautumėte pagrindinio slaptažodžio užuominą." + }, + "getMasterPasswordHint": { + "message": "Gauti pagrindinio slaptažodžio užuominą" + }, + "continue": { + "message": "Tęsti" + }, + "sendVerificationCode": { + "message": "Siųsti patvirtinimo kodą į el. paštą" + }, + "sendCode": { + "message": "Siųsti kodą" + }, + "codeSent": { + "message": "Kodas išsiųstas" + }, + "verificationCode": { + "message": "Patvirtinimo kodas" + }, + "confirmIdentity": { + "message": "Norint tęsti, patvirtinkite tapatybę." + }, + "account": { + "message": "Paskyra" + }, + "changeMasterPassword": { + "message": "Keisti pagrindinį slaptažodį" + }, + "fingerprintPhrase": { + "message": "Dalijimosi slaptažodis", + "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": "Jūsų paskiros dalijimosi slaptažodis", + "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." + }, + "twoStepLogin": { + "message": "Dviejų žingsnių prisijungimas" + }, + "logOut": { + "message": "Atsijungti" + }, + "about": { + "message": "Apie" + }, + "version": { + "message": "Versija" + }, + "save": { + "message": "Išsaugoti" + }, + "move": { + "message": "Perkelti" + }, + "addFolder": { + "message": "Pridėti katalogą" + }, + "name": { + "message": "Pavadinimas" + }, + "editFolder": { + "message": "Redaguoti aplanką" + }, + "deleteFolder": { + "message": "Šalinti katalogą" + }, + "folders": { + "message": "Aplankai" + }, + "noFolders": { + "message": "Aplankų nėra" + }, + "helpFeedback": { + "message": "Pagalba ir atsiliepimai" + }, + "sync": { + "message": "Sinchronizuoti" + }, + "syncVaultNow": { + "message": "Sinchronizuoti saugyklą dabar" + }, + "lastSync": { + "message": "Sinchronizuota:" + }, + "passGen": { + "message": "Slaptažodžių generatorius" + }, + "generator": { + "message": "Generatorius", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatiškai sukurkite patikimus, unikalius slaptažodžius." + }, + "bitWebVault": { + "message": "„Bitwarden“ žiniatinklio saugykla" + }, + "importItems": { + "message": "Importuoti duomenis" + }, + "select": { + "message": "Pasirinkti" + }, + "generatePassword": { + "message": "Kurti slaptažodį" + }, + "regeneratePassword": { + "message": "Perkurti slaptažodį" + }, + "options": { + "message": "Pasirinkimai" + }, + "length": { + "message": "Ilgis" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "Žodžių skaičius" + }, + "wordSeparator": { + "message": "Žodžių skirtukas" + }, + "capitalize": { + "message": "Pradėti didžiosiomis", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Įtraukti skaičius" + }, + "minNumbers": { + "message": "Mažiausiai skaičių" + }, + "minSpecial": { + "message": "Mažiausiai simbolių" + }, + "avoidAmbChar": { + "message": "Vengti dviprasmiškų simbolių" + }, + "searchVault": { + "message": "Ieškoti saugykloje" + }, + "edit": { + "message": "Keisti" + }, + "view": { + "message": "Peržiūrėti" + }, + "noItemsInList": { + "message": "Nėra rodytinų elementų." + }, + "itemInformation": { + "message": "Informacija" + }, + "username": { + "message": "Vartotojo vardas" + }, + "password": { + "message": "Slaptažodis" + }, + "passphrase": { + "message": "Slaptafrazė" + }, + "favorite": { + "message": "Mėgstamas" + }, + "notes": { + "message": "Pastabos" + }, + "note": { + "message": "Pastaba" + }, + "editItem": { + "message": "Redaguoti elementą" + }, + "folder": { + "message": "Aplankas" + }, + "deleteItem": { + "message": "Trinti elementą" + }, + "viewItem": { + "message": "Peržiūrėti elementą" + }, + "launch": { + "message": "Paleisti" + }, + "website": { + "message": "Tinklapis" + }, + "toggleVisibility": { + "message": "Perjungti matomumą" + }, + "manage": { + "message": "Tvarkyti" + }, + "other": { + "message": "Kita" + }, + "rateExtension": { + "message": "Įvertinkite šį plėtinį" + }, + "rateExtensionDesc": { + "message": "Apsvarstykite galimybę mums padėti palikdami gerą atsiliepimą!" + }, + "browserNotSupportClipboard": { + "message": "Jūsų žiniatinklio naršyklė nepalaiko automatinio kopijavimo. Vietoj to nukopijuokite rankiniu būdu." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "yourVaultIsLocked": { + "message": "Jūsų saugykla užrakinta. Norėdami tęsti, patikrinkite pagrindinį slaptažodį." + }, + "unlock": { + "message": "Atrakinti" + }, + "loggedInAsOn": { + "message": "Prisijungta prie $HOSTNAME$ kaip $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Neteisingas pagrindinis slaptažodis" + }, + "vaultTimeout": { + "message": "Atsijungta nuo saugyklos" + }, + "lockNow": { + "message": "Užrakinti dabar" + }, + "immediately": { + "message": "Nedelsiant" + }, + "tenSeconds": { + "message": "10 sekundžių" + }, + "twentySeconds": { + "message": "20 sekundžių" + }, + "thirtySeconds": { + "message": "30 sekundžių" + }, + "oneMinute": { + "message": "1 minutę" + }, + "twoMinutes": { + "message": "2 minučių" + }, + "fiveMinutes": { + "message": "5 minučių" + }, + "fifteenMinutes": { + "message": "15 minučių" + }, + "thirtyMinutes": { + "message": "30 minučių" + }, + "oneHour": { + "message": "1 valandos" + }, + "fourHours": { + "message": "4 valandų" + }, + "onLocked": { + "message": "Užrakinant sistemą" + }, + "onRestart": { + "message": "Paleidus iš naujo naršyklę" + }, + "never": { + "message": "Niekada" + }, + "security": { + "message": "Apsauga" + }, + "errorOccurred": { + "message": "Įvyko klaida" + }, + "emailRequired": { + "message": "Reikalingas el. pašto adresas." + }, + "invalidEmail": { + "message": "Klaidingas el. pašto adresas." + }, + "masterPassRequired": { + "message": "Būtinas pagrindinis slaptažodis." + }, + "masterPassLength": { + "message": "Pagrindinis slaptažodis turi būti bent 8 simbolių ilgio." + }, + "masterPassDoesntMatch": { + "message": "Pagrindinio slaptažodžio patvirtinimas nesutampa." + }, + "newAccountCreated": { + "message": "Jūsų paskyra sukurta! Galite prisijungti." + }, + "masterPassSent": { + "message": "Išsiuntėme jums el. laišką su pagrindinio slaptažodžio užuomina." + }, + "verificationCodeRequired": { + "message": "Būtinas patvirtinimo kodas." + }, + "invalidVerificationCode": { + "message": "Neteisingas patvirtinimo kodas" + }, + "valueCopied": { + "message": "Nukopijuota $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Nepavyko automatiškai užpildyti pasirinkto elemento šiame puslapyje. Nukopijuokite ir įklijuokite informaciją." + }, + "loggedOut": { + "message": "Atsijungta" + }, + "loginExpired": { + "message": "Sesijos laikas baigėsi." + }, + "logOutConfirmation": { + "message": "Ar tikrai norite atsijungti?" + }, + "yes": { + "message": "Taip" + }, + "no": { + "message": "Ne" + }, + "unexpectedError": { + "message": "Įvyko netikėta klaida." + }, + "nameRequired": { + "message": "Pavadinimas yra būtinas." + }, + "addedFolder": { + "message": "Katalogas pridėtas" + }, + "changeMasterPass": { + "message": "Keisti pagrindinį slaptažodį" + }, + "changeMasterPasswordConfirmation": { + "message": "Pagrindinį slaptažodį galite pakeisti bitwarden.com žiniatinklio saugykloje. Ar norite dabar apsilankyti svetainėje?" + }, + "twoStepLoginConfirmation": { + "message": "Prisijungus dviem veiksmais, jūsų paskyra tampa saugesnė, reikalaujant patvirtinti prisijungimą naudojant kitą įrenginį, pvz., Saugos raktą, autentifikavimo programą, SMS, telefono skambutį ar el. Paštą. Dviejų žingsnių prisijungimą galima įjungti „bitwarden.com“ interneto saugykloje. Ar norite dabar apsilankyti svetainėje?" + }, + "editedFolder": { + "message": "Katalogas atnaujintas" + }, + "deleteFolderConfirmation": { + "message": "Ar tikrai norite ištrinti šį aplanką?" + }, + "deletedFolder": { + "message": "Katalogas ištrintas" + }, + "gettingStartedTutorial": { + "message": "Apmokymai" + }, + "gettingStartedTutorialVideo": { + "message": "Peržiūrėkite aomokymus, kad sužinotumėte, kaip išnaudoti visas naršyklės plėtinio galimybes." + }, + "syncingComplete": { + "message": "Sinchronizacija baigta" + }, + "syncingFailed": { + "message": "Sinchronizuoti nepavyko" + }, + "passwordCopied": { + "message": "Slaptažodis nukopijuotas" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI adresas $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Naujas URI" + }, + "addedItem": { + "message": "Pridėtas elementas" + }, + "editedItem": { + "message": "Redaguotas elementas" + }, + "deleteItemConfirmation": { + "message": "Ar tikrai norite perkelti į šiukšlinę?" + }, + "deletedItem": { + "message": "Elementas perkeltas į šiukšlinę" + }, + "overwritePassword": { + "message": "Perrašyti slaptažodį" + }, + "overwritePasswordConfirmation": { + "message": "Ar tikrai norite perrašyti dabartinį slaptažodį?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "Ieškoti aplanke" + }, + "searchCollection": { + "message": "Ieškoti rinkinio" + }, + "searchType": { + "message": "Ieškoti tipo" + }, + "noneFolder": { + "message": "Be aplanko", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Išjungti Pridėti prisijungimą pranešimą" + }, + "addLoginNotificationDesc": { + "message": "Prisijungimo pridėjimo pranešimas automatiškai Jūs paragina išsaugoti naujus prisijungimus Jūsų saugykloje, kuomet prisijungiate pirmą kartą." + }, + "dontShowCardsCurrentTab": { + "message": "Nerodyti kortelių skirtuko puslapyje" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Kortelių įrašai yra nurodyti „Dabartinis skirtukas“ puslapyje lengvai laukelių užpildymo prieigai." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Nerodyti tapatybių skirtuko puslapyje" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Saugyklos tapatybių įrašai yra nurodyti „Dabartinis skirtukas“ puslapyje lengvai laukelių užpildymo prieigai." + }, + "clearClipboard": { + "message": "Išvalyti iškarpinę", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatiškai išvalyti nukopijuotas reikšmes iškarpinėje.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Ar „Bitwarden“ turėtų prisiminti šį slaptažodį?" + }, + "notificationAddSave": { + "message": "Taip, išsaugoti dabar" + }, + "disableChangedPasswordNotification": { + "message": "Išjungti pakeisto slaptažodžio pranešimą" + }, + "disableChangedPasswordNotificationDesc": { + "message": "„Pakeisto slaptažodžio pranešimas“ automatiškai ragina atnaujinti slaptažodį saugykloje, kai aptinkamas pakeitimas svetainėje." + }, + "notificationChangeDesc": { + "message": "Ar norite atnaujinti šį slaptažodį „Bitwarden“?" + }, + "notificationChangeSave": { + "message": "Taip, atnaujinti dabar" + }, + "disableContextMenuItem": { + "message": "Išjungti kontekstinio meniu nustatymus" + }, + "disableContextMenuItemDesc": { + "message": "Kontekstinio meniu nustatymai suteikia greitą prieigą prie slaptažodžių generavimo ir svetainės prisijungimų dabartiniame skirtuke." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Pakeisti programos spalvos temą" + }, + "dark": { + "message": "Tamsi", + "description": "Dark color" + }, + "light": { + "message": "Šviesi", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "exportVault": { + "message": "Eksportuoti saugyklą" + }, + "fileFormat": { + "message": "Failo formatas" + }, + "warning": { + "message": "ĮSPĖJIMAS", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Patvirtinti saugyklos eksportą" + }, + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Pasidalinti" + }, + "learnOrg": { + "message": "Sužinoti apie organizacijas" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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": "Atnaujinimas įvykdytas" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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": "Prisiminti mane" + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Atidaryti naują skirtuką" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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": "El. paštas" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "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": "Serverio 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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json new file mode 100644 index 0000000000..0f71446845 --- /dev/null +++ b/apps/browser/src/_locales/lv/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Drošs bezmaksas paroļu pārvaldnieks visām Tavām ierīcēm.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Pieraksties vai izveido jaunu kontu, lai piekļūtu drošajai glabātavai!" + }, + "createAccount": { + "message": "Izveidot kontu" + }, + "login": { + "message": "Pierakstīties" + }, + "enterpriseSingleSignOn": { + "message": "Uzņēmuma vienotā pierakstīšanās" + }, + "cancel": { + "message": "Atcelt" + }, + "close": { + "message": "Aizvērt" + }, + "submit": { + "message": "Iesniegt" + }, + "emailAddress": { + "message": "E-pasta adrese" + }, + "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)" + }, + "tab": { + "message": "Cilne" + }, + "myVault": { + "message": "Mana glabātava" + }, + "tools": { + "message": "Rīki" + }, + "settings": { + "message": "Iestatījumi" + }, + "currentTab": { + "message": "Pašreizējā cilne" + }, + "copyPassword": { + "message": "Ievietot paroli starpliktuvē" + }, + "copyNote": { + "message": "Ievietot piezīmi starpliktuvē" + }, + "copyUri": { + "message": "Ievietot URI starpliktuvē" + }, + "copyUsername": { + "message": "Ievietot lietotājvārdu starpliktuvē" + }, + "copyNumber": { + "message": "Ievietot numuru starpliktuvē" + }, + "copySecurityCode": { + "message": "Ievietot drošības kodu starpliktuvē" + }, + "autoFill": { + "message": "Automātiskā aizpilde" + }, + "generatePasswordCopied": { + "message": "Veidot paroli (ievietota starpliktuvē)" + }, + "copyElementIdentifier": { + "message": "Pavairot pielāgotā lauka nosaukumu" + }, + "noMatchingLogins": { + "message": "Nav atbilstošu pierakstīšanās vienumu." + }, + "unlockVaultMenu": { + "message": "Atslēgt glabātavu" + }, + "loginToVaultMenu": { + "message": "Pierakstīties glabātavā" + }, + "autoFillInfo": { + "message": "Nav pierakstīšanās vienumu, kurus automātiski ievadīt pašreizējā pārlūka cilnē." + }, + "addLogin": { + "message": "Pievienot pierakstīšanās vienumu" + }, + "addItem": { + "message": "Pievienot vienumu" + }, + "passwordHint": { + "message": "Paroles norāde" + }, + "enterEmailToGetHint": { + "message": "Norādīt konta e-pasta adresi, lai saņemtu galvenās paroles norādi." + }, + "getMasterPasswordHint": { + "message": "Saņemt galvenās paroles norādi" + }, + "continue": { + "message": "Turpinā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āšanas kods" + }, + "confirmIdentity": { + "message": "Apstiprināt identitāti, lai turpinātu." + }, + "account": { + "message": "Konts" + }, + "changeMasterPassword": { + "message": "Mainīt galveno paroli" + }, + "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." + }, + "twoStepLogin": { + "message": "Divpakāpju pierakstīšanās" + }, + "logOut": { + "message": "Izrakstīties" + }, + "about": { + "message": "Par" + }, + "version": { + "message": "Laidiens" + }, + "save": { + "message": "Saglabāt" + }, + "move": { + "message": "Pārvietot" + }, + "addFolder": { + "message": "Pievienot mapi" + }, + "name": { + "message": "Nosaukums" + }, + "editFolder": { + "message": "Labot mapi" + }, + "deleteFolder": { + "message": "Dzēst mapi" + }, + "folders": { + "message": "Mapes" + }, + "noFolders": { + "message": "Nav parādāmu mapju." + }, + "helpFeedback": { + "message": "Palīdzība un atsauksmes" + }, + "sync": { + "message": "Sinhronizēt" + }, + "syncVaultNow": { + "message": "Sinhronizēt glabātavu" + }, + "lastSync": { + "message": "Pēdējā sinhronizācija:" + }, + "passGen": { + "message": "Paroļu veidotājs" + }, + "generator": { + "message": "Veidotājs", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automātiski veido spēcīgas, neatkārtojamas paroles visiem pierakstīšanās vienumiem. " + }, + "bitWebVault": { + "message": "Bitwarden tīmekļa glabātava" + }, + "importItems": { + "message": "Ievietot vienumus" + }, + "select": { + "message": "Atlasīt" + }, + "generatePassword": { + "message": "Veidot paroli" + }, + "regeneratePassword": { + "message": "Pārizveidot paroli" + }, + "options": { + "message": "Iespējas" + }, + "length": { + "message": "Garums" + }, + "uppercase": { + "message": "Lielie burti (A-Z)" + }, + "lowercase": { + "message": "Mazie burti (a-z)" + }, + "numbers": { + "message": "Cipari (0-9)" + }, + "specialCharacters": { + "message": "Īpašās rakstzīmes (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Mazākais pieļaujamais ciparu skaits" + }, + "minSpecial": { + "message": "Mazākais pieļaujamais īpašo rakstzīmju skaits" + }, + "avoidAmbChar": { + "message": "Izvairīties no viegli sajaucamām rakstzīmēm" + }, + "searchVault": { + "message": "Meklēt glabātavā" + }, + "edit": { + "message": "Labot" + }, + "view": { + "message": "Skatīt" + }, + "noItemsInList": { + "message": "Nav vienumu, ko parādīt." + }, + "itemInformation": { + "message": "Vienuma informācija" + }, + "username": { + "message": "Lietotājvārds" + }, + "password": { + "message": "Parole" + }, + "passphrase": { + "message": "Paroles vārdkopa" + }, + "favorite": { + "message": "Izlasē" + }, + "notes": { + "message": "Piezīmes" + }, + "note": { + "message": "Piezīme" + }, + "editItem": { + "message": "Labot vienumu" + }, + "folder": { + "message": "Mape" + }, + "deleteItem": { + "message": "Izdzēst vienumu" + }, + "viewItem": { + "message": "Skatīt vienumu" + }, + "launch": { + "message": "Palaist" + }, + "website": { + "message": "Tīmekļa vietne" + }, + "toggleVisibility": { + "message": "Pārslēgt redzamību" + }, + "manage": { + "message": "Pārvaldīt" + }, + "other": { + "message": "Cits" + }, + "rateExtension": { + "message": "Novērtēt paplašinājumu" + }, + "rateExtensionDesc": { + "message": "Lūdzu, apsver palīdzēt mums ar labu atsauksmi!" + }, + "browserNotSupportClipboard": { + "message": "Tavs tīmekļa pārlūks neatbalsta vienkāršu starpliktuves kopēšanu. Nokopē to pašrocīgi!" + }, + "verifyIdentity": { + "message": "Apstiprināt identitāti" + }, + "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" + }, + "vaultTimeout": { + "message": "Glabātavas noildze" + }, + "lockNow": { + "message": "Aizslēgt" + }, + "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" + }, + "onLocked": { + "message": "Pēc sistēmas aizslēgšanas" + }, + "onRestart": { + "message": "Pēc pārlūka pārsāknēšanas" + }, + "never": { + "message": "Nekad" + }, + "security": { + "message": "Drošība" + }, + "errorOccurred": { + "message": "Radusies kļūda" + }, + "emailRequired": { + "message": "E-pasta adrese ir nepieciešama." + }, + "invalidEmail": { + "message": "Nederīga e-pasta adrese." + }, + "masterPassRequired": { + "message": "Galvenā parole ir nepieciešama." + }, + "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ā." + }, + "verificationCodeRequired": { + "message": "Apstiprinājuma kods ir nepieciešams." + }, + "invalidVerificationCode": { + "message": "Nederīgs apstiprinājuma kods" + }, + "valueCopied": { + "message": "$VALUE$ ievietota starpliktuvē", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Neizdevās automātiski aizpildīt izvēlēto vienumu šajā lapā. Tā vietā kopē un ielīmē to! " + }, + "loggedOut": { + "message": "Izrakstījies" + }, + "loginExpired": { + "message": "Pierakstīšanās sesija ir beigusies." + }, + "logOutConfirmation": { + "message": "Vai tiešām izrakstīties?" + }, + "yes": { + "message": "Jā" + }, + "no": { + "message": "Nē" + }, + "unexpectedError": { + "message": "Ir radusies neparedzēta kļūda." + }, + "nameRequired": { + "message": "Nosaukums ir nepieciešams." + }, + "addedFolder": { + "message": "Pievienoja mapi" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Mape labota" + }, + "deleteFolderConfirmation": { + "message": "Vai tiešām izdzēst šo mapi?" + }, + "deletedFolder": { + "message": "Mape izdzēsta" + }, + "gettingStartedTutorial": { + "message": "Uzsākšanas pamācība" + }, + "gettingStartedTutorialVideo": { + "message": "Noskaties mūsu uzsākšanas pamācību, lai uzzinātu, kā iegūt vislielāko labumu no pārlūka paplašinājuma." + }, + "syncingComplete": { + "message": "Sinhronizācija pabeigta" + }, + "syncingFailed": { + "message": "Sinhronizācija neizdevās" + }, + "passwordCopied": { + "message": "Parole ievietota starpliktuvē" + }, + "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" + }, + "addedItem": { + "message": "Vienums pievienots" + }, + "editedItem": { + "message": "Vienums labots" + }, + "deleteItemConfirmation": { + "message": "Vai tiešām pārvietot vienumu uz atkritni?" + }, + "deletedItem": { + "message": "Vienums pārvietots uz atkritni" + }, + "overwritePassword": { + "message": "Pārrakstīt paroli" + }, + "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?" + }, + "searchFolder": { + "message": "Meklēt mapē" + }, + "searchCollection": { + "message": "Meklēt krājumā" + }, + "searchType": { + "message": "Meklēšanas veids" + }, + "noneFolder": { + "message": "Nav mapes", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Atspējot piekļuves vienumu pievienošanas paziņojumu" + }, + "addLoginNotificationDesc": { + "message": "Iestatījums \"Piekļuves vienumu pievienošanas paziņojumi\" piedāvā saglabāt jaunus pieslēgšanās ierakstus, kad vien tie tiek izmantoti pirmo reizi ierakstoties." + }, + "dontShowCardsCurrentTab": { + "message": "Nerādīt kartes cilnes lapā" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Glabātavas karšu vienumi tiek attēloti 'Pašreizējā cilne' lapā vieglai piekļūšanai automātiskajai aizpildīšanai." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Nerādīt identitātes cilnes pārskatā" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Glabātavas identitātes vienumi tiek attēloti 'Pašreizējā cilne' lapā vieglai piekļūšanai automātiskajai aizpildīšanai." + }, + "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 kopētās vērtības no starpliktuves.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Vai Bitwarden atcerēties šo paroli?" + }, + "notificationAddSave": { + "message": "Jā, saglabāt" + }, + "disableChangedPasswordNotification": { + "message": "Atspējot mainītas paroles paziņojumu" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Mainītas paroles paziņojums\" vaicā atjaunināt pieteikšanās vienuma paroli glabātavā, kad vien tiek noteikts, ka tā ir mainīta tīmekļa vietnē." + }, + "notificationChangeDesc": { + "message": "Vai atjaunināt šo paroli Bitwarden?" + }, + "notificationChangeSave": { + "message": "Jā, atjaunināt" + }, + "disableContextMenuItem": { + "message": "Atspējot konteksta izvēlnes iespējas" + }, + "disableContextMenuItemDesc": { + "message": "Konteksta izvēlnes iespējas piedāvā ātru piekļūšanu paroļu veidošanai un tīmekļa vietnes pieteikšanās vienumiem pašreizējā cilnē." + }, + "defaultUriMatchDetection": { + "message": "Noklusējuma URI atbilstības noteikšana", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Izvēlēties noklusējuma veidu, kādā URI atbilstības noteikšana tiek apstrādāta, kad tiek veiktas tādas darbības kā automātiska aizpildīš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" + }, + "solarizedDark": { + "message": "Tumšs Solarized", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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ā." + }, + "exportMasterPassword": { + "message": "Ievadīt galveno paroli, lai izgūtu glabātavas saturu." + }, + "shared": { + "message": "Kopīgots" + }, + "learnOrg": { + "message": "Uzzināt par apvienībām" + }, + "learnOrgConfirmation": { + "message": "Bitwarden nodrošina iespēju kopīgot glabātavas vienumus ar citiem, kad tiek izmantota apvienība. Vai apmeklēt bitwarden.com tīmekļa vietni, lai uzzinātu vairāk?" + }, + "moveToOrganization": { + "message": "Pārvietot uz apvienību" + }, + "share": { + "message": "Kopīgot" + }, + "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." + }, + "learnMore": { + "message": "Uzzināt vairāk" + }, + "authenticatorKeyTotp": { + "message": "Autentificētāja atslēga (TOTP)" + }, + "verificationCodeTotp": { + "message": "Apstiprinājuma kods (TOTP)" + }, + "copyVerificationCode": { + "message": "Ievietot apstiprinājuma kodu starpliktuvē" + }, + "attachments": { + "message": "Pielikumi" + }, + "deleteAttachment": { + "message": "Izdzēst pielikumu" + }, + "deleteAttachmentConfirmation": { + "message": "Vai tiešām izdzēst šo pielikumu?" + }, + "deletedAttachment": { + "message": "Pielikums izdzēsts" + }, + "newAttachment": { + "message": "Pievienot Jaunu Pielikumu" + }, + "noAttachments": { + "message": "Nav 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." + }, + "featureUnavailable": { + "message": "Iespēja nav pieejama" + }, + "updateKey": { + "message": "Jūs nevarat izmantot šo funkciju līdz jūs atjaunojat savu šifrēšanas atslēgu." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB šifrētas krātuves datņu pielikumiem." + }, + "ppremiumSignUpTwoStep": { + "message": "Tādas papildus divpakāpju pierakstīšanās iespējas kā YubiKey, FIDO U2F un Duo." + }, + "ppremiumSignUpReports": { + "message": "Paroļu higiēnas, kontu veselības un datu pārkāpumu pārskati, lai uzturētu glabātavu drošu." + }, + "ppremiumSignUpTotp": { + "message": "TOTP apstiprinājuma kodu (2FA) veidotājs piekļuves ierakstiem glabātavā." + }, + "ppremiumSignUpSupport": { + "message": "Priekšrocīgs lietotāju atbalsts." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Atspējot automātisku TOTP ievietošanu starpliktuvē" + }, + "disableAutoTotpCopyDesc": { + "message": "Ja pierakstīšanās datiem ir pievienota autentificētāja atslēga, TOTP apstiprinājuma kods tiks automātiski pārkopēts uz starpliktuvi, kad vien tiks automātiski aizpildīta pierakstīšanās veidne." + }, + "disableAutoBiometricsPrompt": { + "message": "Palaišanas brīdī nevaicāt par biometriju." + }, + "premiumRequired": { + "message": "Nepieciešams Premium" + }, + "premiumRequiredDesc": { + "message": "Ir nepieciešama Premium dalība, lai izmantotu šo iespēju." + }, + "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!" + }, + "webAuthnNewTab": { + "message": "Turpināt WebAuthn 2FA apstiprināšanu jaunā cilnē." + }, + "webAuthnNewTabOpen": { + "message": "Atvērt jaunu cilni" + }, + "webAuthnAuthenticate": { + "message": "Autentificēt WebAuthn" + }, + "loginUnavailable": { + "message": "Pierakstīšanās nav pieejama" + }, + "noTwoStepProviders": { + "message": "Šim kontam ir iespējota divpakāpju pierakstīšanās, bet šajā pārlūkā netiek atbalstīts neviens no uzstādītajiem divpakāpju pārbaudes nodrošinātājiem." + }, + "noTwoStepProviders2": { + "message": "Lūgums izmantot atbalstītu tīmekļa pārlūku (piemēram Chrome) un/vai pievienot papildus nodrošinātājus, kas tiek labāk atbalstīti dažādos pārlūkos (piemēram autentificētāja lietotni)." + }, + "twoStepOptions": { + "message": "Divpakāpju pierakstīšanās iespējas" + }, + "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ā." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Iespējot aizpildīšanu lapas ielādes brīdī" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Ja tiek noteikta pieslēgšanās veidne, tā tiks aizpildīta lapas ielādes brīdī." + }, + "experimentalFeature": { + "message": "Šī iespēja pašlaik ir izmēģināšanā. Izmantošanas atbildība ir katra paša pārziņā. " + }, + "defaultAutoFillOnPageLoad": { + "message": "Noklusējuma automātiskās aizpildes iestatījums pierakstīšanās vienumiem" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Pēc automātiskās aizpildes lapas ielādes brīdī iespējošanas šo iespēju var ieslēgt vai izslēgt atsevišķiem pierakstīšanās vienumiem. Šis ir noklusējuma iestatījums visiem ierakstiem, kuriem nav norādīts šis uzstādījums." + }, + "itemAutoFillOnPageLoad": { + "message": "Automātiski aizpildīt lapas ielādes brīdī (ja iespējots iestatījumos)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Izmantot noklusējuma iestatījumu" + }, + "autoFillOnPageLoadYes": { + "message": "Automātiski aizpildīt lapas ielādes brīdī" + }, + "autoFillOnPageLoadNo": { + "message": "Neaizpildīt lapas ielādes brīdī" + }, + "commandOpenPopup": { + "message": "Atvērt glabātavas uznirstošo logu" + }, + "commandOpenSidebar": { + "message": "Atvērt glabātavu sānu joslā" + }, + "commandAutofillDesc": { + "message": "Automātiski aizpildīt ar iepriekš izmantoto pierakstīšanās vienumu pašreizējā tīmekļa vietnē" + }, + "commandGeneratePasswordDesc": { + "message": "Izveidot jaunu nejaušu paroli un ievietot to starpliktuvē" + }, + "commandLockVaultDesc": { + "message": "Aizslēgt glabātavu" + }, + "privateModeWarning": { + "message": "Personiskā stāvokļa atbalsts ir izmēģinājuma, un dažas iespējas ir ierobežotas." + }, + "customFields": { + "message": "Pielāgoti lauki" + }, + "copyValue": { + "message": "Ievietot vērtību starpliktuvē" + }, + "value": { + "message": "Vērtība" + }, + "newCustomField": { + "message": "Jauns pielāgotais lauks" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Saistīta vērtība", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Klikšķināšana ārpus uznirstošā loga, lai apskatītu e-pastā apstiprinājuma kodu, to aizvērs. Vai atvērt to atsevišķā logā, lai tas netiktu aizvērts?" + }, + "popupU2fCloseMessage": { + "message": "Šis pārlūks nevar apstrādāt U2F pieprasījumus šajā uznirstošajā logā. Vai atvērt to atsevišķā logā, lai varētu pierakstīties, izmantojot U2F?" + }, + "disableFavicon": { + "message": "Atspējot tīmekļa vietņu ikonas" + }, + "disableFaviconDesc": { + "message": "Tīmekļa vietņu ikonas nodrošina atpazīstamu attēlu pie katra glabātavas pieteikšanās vienuma." + }, + "disableBadgeCounter": { + "message": "Atspējot skaitītāja nozīmīti" + }, + "disableBadgeCounterDesc": { + "message": "Skaitītāja nozīmīte norāda, cik pierakstīšanās vienumu pašreizējai lapai ir atrodami glabātavā." + }, + "cardholderName": { + "message": "Kartes īpašnieka vārds" + }, + "number": { + "message": "Numurs" + }, + "brand": { + "message": "Zīmols" + }, + "expirationMonth": { + "message": "Derīguma mēnesis" + }, + "expirationYear": { + "message": "Derīguma gads" + }, + "expiration": { + "message": "Derīgums" + }, + "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" + }, + "securityCode": { + "message": "Drošības kods" + }, + "ex": { + "message": "piem." + }, + "title": { + "message": "Uzruna" + }, + "mr": { + "message": "K-gs" + }, + "mrs": { + "message": "K-dze" + }, + "ms": { + "message": "Jk-dze" + }, + "dr": { + "message": "Dr." + }, + "firstName": { + "message": "Vārds" + }, + "middleName": { + "message": "Citi vārdi" + }, + "lastName": { + "message": "Uzvārds" + }, + "fullName": { + "message": "Pilnais vārds" + }, + "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" + }, + "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" + }, + "type": { + "message": "Veids" + }, + "typeLogin": { + "message": "Pierakstīšanās vienums" + }, + "typeLogins": { + "message": "Pierakstīšanās vienumi" + }, + "typeSecureNote": { + "message": "Droša piezīme" + }, + "typeCard": { + "message": "Karte" + }, + "typeIdentity": { + "message": "Identitāte" + }, + "passwordHistory": { + "message": "Paroļu vēsture" + }, + "back": { + "message": "Atpakaļ" + }, + "collections": { + "message": "Krājumi" + }, + "favorites": { + "message": "Izlase" + }, + "popOutNewWindow": { + "message": "Atvērt atsevišķā logā" + }, + "refresh": { + "message": "Atsvaidzināt" + }, + "cards": { + "message": "Kartes" + }, + "identities": { + "message": "Identitātes" + }, + "logins": { + "message": "Pierakstīšanās vienumi" + }, + "secureNotes": { + "message": "Drošās piezīmes" + }, + "clear": { + "message": "Notīrīt", + "description": "To clear something out. example: To clear browser history." + }, + "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ētā atbilstības noteikšana", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Pārslēgt iespējas" + }, + "toggleCurrentUris": { + "message": "Pārslēgt pašreizējos URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Pašreizējais URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Apvienība", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Veidi" + }, + "allItems": { + "message": "Visi vienumi" + }, + "noPasswordsInList": { + "message": "Nav paroļu, ko parādīt." + }, + "remove": { + "message": "Noņemt" + }, + "default": { + "message": "Noklusējums" + }, + "dateUpdated": { + "message": "Atjaunināts", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parole atjaunināta", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Vai tiešām izmantot uzstādījumu \"Nekad\"? Uzstādot aizslēgšanas iespēju uz \"Nekad\", šifrēšanas atslēga tiek glabāta ierīcē. Ja šī iespēja tiek izmantota, jāpārliecinās, ka ierīce tiek pienācīgi aizsargāta." + }, + "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": "Jūsu izvēlētā galvenā parole ir vāja. Jums vajadzētu izmantot drošu galveno paroli (vai paroles vārdkopu), lai pienācīgi aizsargātu savu Bitwarden kontu. Vai tiešām vēlaties izmantot š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ādīt PIN kodu Bitwarden atslēgšanai. PIN iestatījumi tiks atiestatīti, ja jebkad tiks veikta pilnīga izrakstīšanās no lietotnes." + }, + "pinRequired": { + "message": "Ir nepieciešams PIN kods." + }, + "invalidPin": { + "message": "Nederīgs PIN kods." + }, + "unlockWithBiometrics": { + "message": "Atslēgt ar biometriju" + }, + "awaitDesktop": { + "message": "Tiek gaidīts apstiprinājums no darbvirsmas" + }, + "awaitDesktopDesc": { + "message": "Lūgums apstiprināt ar biometriju Bitwarden darbvirsmas lietotnē, lai iespējotu biometriju pārlūkā." + }, + "lockWithMasterPassOnRestart": { + "message": "Aizslēgt ar galveno paroli pēc pārlūka atsāknēšanas" + }, + "selectOneCollection": { + "message": "Ir jāizvēlas vismaz viens krājums." + }, + "cloneItem": { + "message": "Pavairot vienumu" + }, + "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" + }, + "lock": { + "message": "Slē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 ir neatgriezeniski izdzēsts" + }, + "restoreItem": { + "message": "Atjaunot vienumu" + }, + "restoreItemConfirmation": { + "message": "Jūs tiešām atjaunot šo vienumu?" + }, + "restoredItem": { + "message": "Vienums atjaunots" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Izrakstīšanās noņems visu piekļuvi glabātavai un pieprasīs tiešsaistes pieteikšanos pēc noildzes laika. Vai tiešām izmantot šo iestatījumu?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Noildzes darbības apstiprināšana" + }, + "autoFillAndSave": { + "message": "Automātiski aizpildīt un saglabāt" + }, + "autoFillSuccessAndSavedUri": { + "message": "Automātiski aizpildīts vienums un saglabāts URI" + }, + "autoFillSuccess": { + "message": "Automātiski aizpildīts vienums" + }, + "setMasterPassword": { + "message": "Uzstādīt galveno paroli" + }, + "masterPasswordPolicyInEffect": { + "message": "Viena vai vairākas apvienības nosacījumos ir norādīts, lai galvenā parole 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 skaitļus" + }, + "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." + }, + "termsOfService": { + "message": "Izmantošanas nosacījumi" + }, + "privacyPolicy": { + "message": "Privātuma nosacījumi" + }, + "hintEqualsPassword": { + "message": "Paroles norāde nedrīkst būt tāda pati kā parole." + }, + "ok": { + "message": "Labi" + }, + "desktopSyncVerificationTitle": { + "message": "Darbvirsmas sinhronizācijas apstiprinājums" + }, + "desktopIntegrationVerificationText": { + "message": "Lūgumus pārliecināties, ka darbvirsmas lietotne rāda šo atpazīšanas vārdkopu:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Savienojums ar pārlūku nav iespējots" + }, + "desktopIntegrationDisabledDesc": { + "message": "Savienojums ar pārlūku nav iespējots Bitwarden darbvirsmas lietotnē. Lūgums iespējot to darbvirsmas lietotnes iestatījumos." + }, + "startDesktopTitle": { + "message": "Palaist Bitwarden darbvirsmas lietotni" + }, + "startDesktopDesc": { + "message": "Bitwarden darbvirsmas lietotnei ir jābūt sāknētai, pirms šī iespēja var tikt izmantota." + }, + "errorEnableBiometricTitle": { + "message": "Nevar iespējot biometriju" + }, + "errorEnableBiometricDesc": { + "message": "Darbvirsmas lietotne atcēla darbību" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Darbvirsmas lietotne drošo saziņas avotu padarīja par nederīgu. Lūgums atkārtot šo darbību" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Darbvirsmas saziņa tika pārtraukta" + }, + "nativeMessagingWrongUserDesc": { + "message": "Darbvirsmas lietotne ir pierakstījusies atšķirīgā kontā. Lūgums nodrošināt, ka abas lietotnes ir pierakstījušās vienam un tam pašam kontam." + }, + "nativeMessagingWrongUserTitle": { + "message": "Konta nesaderība" + }, + "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ā." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrija nav nodrošināta" + }, + "biometricsNotSupportedDesc": { + "message": "Šajā ierīcē netiek atbalstīta pārlūka biometrija." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Atļauja nav nodrošināta" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bez atļaujas sazināties ar Bitwarden darbvirsmas lietotni mēs nevaram nodrošināt biometriju pārlūka paplašinājumā. Lūgums mēģināt vēlreiz." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Atļaujas pieprasījuma kļūda" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Šī darbība nav izpildāma sānjoslā, tāpēc lūgums mēģināt to veikt uznirstošajā vai izlecošajā logā." + }, + "personalOwnershipSubmitError": { + "message": "Uzņēmuma nosacījumi liedz saglabāt vienumus privātajā glabātavā. Norādi piederību apvienībai un izvēlies kādu no pieejamajiem krājumiem." + }, + "personalOwnershipPolicyInEffect": { + "message": "Apvienības nosacījumi ietekmē Tavas īpašumtiesību iespējas." + }, + "excludedDomains": { + "message": "Izņēmuma domēni" + }, + "excludedDomainsDesc": { + "message": "Bitwarden nevaicās saglabāt pierakstīšanās datus šiem domēniem. Ir jāpārlādē lapa, lai izmaiņas iedarbotos." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ nav derīgs domēns", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "\"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Meklēt \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Pievienot \"Send'", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Teksts" + }, + "sendTypeFile": { + "message": "Datne" + }, + "allSends": { + "message": "Visi \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Sasniegts lielākais pieļaujamais piekļuvju skaits", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Beidzies izmantošanas laiks" + }, + "pendingDeletion": { + "message": "Gaida dzēšanu" + }, + "passwordProtected": { + "message": "Aizsargāts ar paroli" + }, + "copySendLink": { + "message": "Ievietot \"Send\" saiti starpliktuvē", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Noņemt paroli" + }, + "delete": { + "message": "Dzēst" + }, + "removedPassword": { + "message": "Parole noņemta" + }, + "deletedSend": { + "message": "\"Send\" izdzēsts", + "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." + }, + "disabled": { + "message": "Atspējots" + }, + "removePasswordConfirmation": { + "message": "Vai tiešām noņemt paroli?" + }, + "deleteSend": { + "message": "Dzēst \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Labot \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Lasāms nosaukums, kas apraksta šo \"Send\".", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Datne, kuru ir vēlme nosūtīt." + }, + "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." + }, + "oneDay": { + "message": "1 diena" + }, + "days": { + "message": "$DAYS$ dienas", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Pielāgots" + }, + "maximumAccessCount": { + "message": "Lielākais pieļaujamais piekļuvju skaits" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Saglabājot ievietot šī \"Send\" saiti starpliktuvē.", + "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." + }, + "sendHideText": { + "message": "Pēc noklusējuma paslēpt šī \"Send\" tekstu.", + "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" + }, + "createSend": { + "message": "Izveidot jaunu \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Jauna parole" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Lai izvēlētos datni, paplašinājums ir jāatver sānjoslā (ja iespējams) vai atsevišķā logā, klikšķinot uz šī paziņojuma." + }, + "sendFirefoxFileWarning": { + "message": "Lai izvēlētos datni, ja tiek izmantots Firefox, paplašinājums ir jāatver sānjoslā vai atsevišķā logā, klikšķinot uz šī paziņojuma." + }, + "sendSafariFileWarning": { + "message": "Lai izvēlētos datni, ja tiek izmantots Safari, paplašinājums ir jāatver jaunā logā, klikšķinot uz šī paziņojuma." + }, + "sendFileCalloutHeader": { + "message": "Pirms sākt" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Lai izmantotu kalendāra veida datumu atlasītāju,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klikšķināt šeit,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "lai atvērtu jaunā logā.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Norādītais derīguma beigu datums nav derīgs." + }, + "deletionDateIsInvalid": { + "message": "Norādītais dzēšanas datums nav derīgs." + }, + "expirationDateAndTimeRequired": { + "message": "Ir jānorāda derīguma beigu datums un laiks." + }, + "deletionDateAndTimeRequired": { + "message": "Ir jānorāda dzēšanas datums un laiks." + }, + "dateParsingError": { + "message": "Atgadījusies kļūda dzēšanas un derīguma beigu datumu saglabāšanā." + }, + "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." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Nepieciešama e-pasta adreses apstiprināšana" + }, + "emailVerificationRequiredDesc": { + "message": "Ir nepieciešams apstiprināt e-pasta adresi, lai būtu iespējams izmantot šo iespēju. To var izdarīt tīmekļa glabātavā." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Izvēlēties mapi..." + }, + "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." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Glabātavas noildze pāŗsniedz apvienības uzstādītos ierobežojumus." + }, + "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." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Nav iespējams noteikt derīgu veidlapas daļu. Var mēģināt pārbaudīt HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nav atrasts neviens neatkārtojams identifikators" + }, + "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" + }, + "removeMasterPassword": { + "message": "Noņemt galveno paroli" + }, + "removedMasterPassword": { + "message": "Galvenā parole noņemta." + }, + "leaveOrganizationConfirmation": { + "message": "Vai tiešām pamest šo apvienību?" + }, + "leftOrganization": { + "message": "Apvienība ir pamesta." + }, + "toggleCharacterCount": { + "message": "Pārslēgt rakstzīmju skaita attēlošanu" + }, + "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" + } + } + }, + "error": { + "message": "Kļūda" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Izmantot e-pasta pakalpojuma nodrošinātāja apakšadresēšanas spējas." + }, + "catchallEmail": { + "message": "Visu tveroša 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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Ko ir nepieciešams izveidot?" + }, + "passwordType": { + "message": "Paroles veids" + }, + "service": { + "message": "Pakalpojums" + } +} diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json new file mode 100644 index 0000000000..9ae2ae43b6 --- /dev/null +++ b/apps/browser/src/_locales/ml/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - സൗജന്യ പാസ്സ്‌വേഡ് മാനേജർ ", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങൾക്കും സുരക്ഷിതവും സൗജന്യവുമായ പാസ്‌വേഡ് മാനേജർ.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "നിങ്ങളുടെ സുരക്ഷിത വാൾട്ടിലേക്കു പ്രവേശിക്കാൻ ലോഗിൻ ചെയ്യുക അല്ലെങ്കിൽ ഒരു പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക." + }, + "createAccount": { + "message": "അക്കൗണ്ട് സൃഷ്ടിക്കുക" + }, + "login": { + "message": "ലോഗിൻ" + }, + "enterpriseSingleSignOn": { + "message": "എന്റർപ്രൈസ് സിംഗിൾ സൈൻ-ഓൺ" + }, + "cancel": { + "message": "റദ്ദാക്കുക" + }, + "close": { + "message": "അടയ്ക്കുക" + }, + "submit": { + "message": "സമർപ്പിക്കുക" + }, + "emailAddress": { + "message": "ഈ - മെയില് വിലാസം" + }, + "masterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ്" + }, + "masterPassDesc": { + "message": "നിങ്ങളുടെ വാൾട്ടിലേക്ക് പ്രവേശിക്കാൻ ഉപയോഗിക്കുന്ന പാസ്‌വേഡാണ് പ്രാഥമിക പാസ്‌വേഡ്. നിങ്ങളുടെ മാസ്റ്റർ പാസ്‌വേഡ് മറക്കാതിരിക്കുക എന്നത് വളരെ പ്രധാനമാണ്. നിങ്ങൾ പാസ്‌വേഡ് മറന്ന സാഹചര്യത്തിൽ, പാസ്‌വേഡ് വീണ്ടെടുക്കാൻ ഒരു മാർഗവുമില്ല." + }, + "masterPassHintDesc": { + "message": "നിങ്ങളുടെ പാസ്‌വേഡ് മറന്നാൽ അത് ഓർമ്മിക്കാൻ ഒരു പ്രാഥമിക പാസ്‌വേഡ് സൂചന സഹായിക്കും." + }, + "reTypeMasterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് വീണ്ടും ടൈപ്പ്‌ ചെയ്യുക" + }, + "masterPassHint": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സൂചന (ഇഷ്ടാനുസൃതമായ)" + }, + "tab": { + "message": "ടാബ് " + }, + "myVault": { + "message": "എൻ്റെ വാൾട് " + }, + "tools": { + "message": "ഉപകരണങ്ങള്‍" + }, + "settings": { + "message": "ക്രമീകരണങ്ങള്‍" + }, + "currentTab": { + "message": "നിലവിലെ ടാബ്" + }, + "copyPassword": { + "message": "പാസ്‌വേഡ് പകർത്തുക" + }, + "copyNote": { + "message": "കുറിപ്പ് പകർത്തുക" + }, + "copyUri": { + "message": "URI പകർത്തുക" + }, + "copyUsername": { + "message": "ഉപയോക്തൃനാമം പകർത്തുക" + }, + "copyNumber": { + "message": "അക്കം പകർത്തുക" + }, + "copySecurityCode": { + "message": "സുരക്ഷാ കോഡ് പകർത്തുക" + }, + "autoFill": { + "message": "ഓട്ടോഫിൽ" + }, + "generatePasswordCopied": { + "message": "പാസ്‌വേഡ് സൃഷ്ടിക്കുക (പകർത്തുക )" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "പൊരുത്തപ്പെടുന്ന ലോഗിനുകളൊന്നുമില്ല." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "നിലവിലെ ബ്രൌസർ ടാബിന് ഓട്ടോഫിൽ ചെയ്യാൻ പ്രവേശനങ്ങൾ ലഭ്യമല്ല." + }, + "addLogin": { + "message": "പ്രവേശനം ചേർക്കുക" + }, + "addItem": { + "message": " ഇനം ചേർക്കുക" + }, + "passwordHint": { + "message": "പാസ്സ്‌വേഡ് സൂചനാ" + }, + "enterEmailToGetHint": { + "message": "നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് സൂചന ലഭിക്കുന്നതിന് നിങ്ങളുടെ അക്കൗണ്ട് ഇമെയിൽ വിലാസം നൽകുക." + }, + "getMasterPasswordHint": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സൂചന നേടുക" + }, + "continue": { + "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." + }, + "account": { + "message": "അക്കൗണ്ട്" + }, + "changeMasterPassword": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് മാറ്റുക" + }, + "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." + }, + "twoStepLogin": { + "message": "രണ്ട്-ഘട്ട ലോഗിൻ" + }, + "logOut": { + "message": "ലോഗ് ഔട്ട്" + }, + "about": { + "message": "ഇതിനെ കുറിച്ച്" + }, + "version": { + "message": "വേർഷൻ " + }, + "save": { + "message": "സംരക്ഷിക്കുക" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "ഫോൾഡർ ചേർക്കുക" + }, + "name": { + "message": "പേര്" + }, + "editFolder": { + "message": "ഫോൾഡർ തിരുത്തുക" + }, + "deleteFolder": { + "message": "ഫോൾഡർ ഇല്ലാതാക്കുക" + }, + "folders": { + "message": "ഫോൾഡറുകൾ" + }, + "noFolders": { + "message": "പ്രദർശിപ്പിക്കാൻ ഫോൾഡറുകളൊന്നുമില്ല." + }, + "helpFeedback": { + "message": "സഹായവും അഭിപ്രായവും" + }, + "sync": { + "message": "സമന്വയിപ്പിക്കുക" + }, + "syncVaultNow": { + "message": "വാൾട് ഇപ്പോൾ സമന്വയിപ്പിക്കുക" + }, + "lastSync": { + "message": "അവസാന സമന്വയം:" + }, + "passGen": { + "message": "പാസ്സ്‌വേഡ് സൃഷ്ടാവ്" + }, + "generator": { + "message": "സ്രഷ്ടാവ്", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "യാന്ത്രികമായി ശക്തമായ പാസ്സ്‌വേർഡുകൾ നിങ്ങളുടെ ലോഗിന് വേണ്ടി നിർമിക്കുക " + }, + "bitWebVault": { + "message": "Bitwarden വെബ് വാൾട് " + }, + "importItems": { + "message": "ഇനങ്ങൾ ഇമ്പോർട് ചെയ്യുക" + }, + "select": { + "message": "തിരഞ്ഞെടുക്കുക" + }, + "generatePassword": { + "message": "പാസ്‌വേഡ് സൃഷ്ടിക്കുക" + }, + "regeneratePassword": { + "message": "പാസ്സ്‌വേഡ് വീണ്ടും സൃഷ്ടിക്കുക" + }, + "options": { + "message": "ഓപ്ഷനുകൾ" + }, + "length": { + "message": "നീളം" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "വാക്കുകളുടെ എണ്ണം" + }, + "wordSeparator": { + "message": "വേര്‍പെടുത്തുക" + }, + "capitalize": { + "message": "വലിയഅക്ഷരമാകുക", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "നമ്പർ ഉൾപ്പെടുത്തുക" + }, + "minNumbers": { + "message": "കുറഞ്ഞ സംഖ്യകൾ" + }, + "minSpecial": { + "message": "കുറഞ്ഞ പ്രത്യേക പ്രതീകങ്ങൾ" + }, + "avoidAmbChar": { + "message": "അവ്യക്തമായ പ്രതീകങ്ങൾ ഒഴിവാക്കുക" + }, + "searchVault": { + "message": "വാൾട് തിരയുക" + }, + "edit": { + "message": "തിരുത്തുക" + }, + "view": { + "message": "കാണുക" + }, + "noItemsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ ഇനങ്ങളൊന്നുമില്ല." + }, + "itemInformation": { + "message": "വിവരം" + }, + "username": { + "message": "ഉപയോക്തൃനാമം" + }, + "password": { + "message": "പാസ്സ്‌വേഡ്‌" + }, + "passphrase": { + "message": "രഹസ്യ വാചകം" + }, + "favorite": { + "message": "പ്രിയങ്കരം" + }, + "notes": { + "message": "കുറിപ്പുകൾ" + }, + "note": { + "message": "കുറിപ്പ്" + }, + "editItem": { + "message": "ഇനം തിരുത്തുക" + }, + "folder": { + "message": "ഫോൾഡർ" + }, + "deleteItem": { + "message": "ഇനം ഇല്ലാതാക്കുക " + }, + "viewItem": { + "message": "ഇനം കാണുക" + }, + "launch": { + "message": "തുറക്കുക" + }, + "website": { + "message": "വെബ്സൈറ്റ്" + }, + "toggleVisibility": { + "message": "ദൃശ്യപരത ടോഗിൾ ചെയ്യുക" + }, + "manage": { + "message": "നിയന്ത്രിക്കുക" + }, + "other": { + "message": "മറ്റുള്ളവ" + }, + "rateExtension": { + "message": "എക്സ്റ്റൻഷൻ റേറ്റ് ചെയ്യുക " + }, + "rateExtensionDesc": { + "message": "ഒരു നല്ല അവലോകനത്തിന് ഞങ്ങളെ സഹായിക്കുന്നത് പരിഗണിക്കുക!" + }, + "browserNotSupportClipboard": { + "message": "നിങ്ങളുടെ ബ്രൌസർ എളുപ്പമുള്ള ക്ലിപ്പ്ബോർഡ് പകർത്തൽ പിന്തുണയ്ക്കത്തില്ല. പകരം അത് സ്വമേധയാ പകർക്കുക ." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "yourVaultIsLocked": { + "message": "തങ്ങളുടെ വാൾട് പൂട്ടിയിരിക്കുന്നു. തുടരുന്നതിന് നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് പരിശോധിക്കുക." + }, + "unlock": { + "message": "അൺലോക്ക്" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ൽ$EMAIL$ലോഗിൻ ചെയ്തിരിക്കുന്നു.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "അസാധുവായ പ്രാഥമിക പാസ്‌വേഡ്" + }, + "vaultTimeout": { + "message": "വാൾട് ടൈംഔട്ട്" + }, + "lockNow": { + "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 മണിക്കൂർ" + }, + "onLocked": { + "message": "സിസ്റ്റം ലോക്കിൽ" + }, + "onRestart": { + "message": "ബ്രൌസർ പുനരാരംഭിക്കുമ്പോൾ" + }, + "never": { + "message": "ഒരിക്കലും വേണ്ട" + }, + "security": { + "message": "സുരക്ഷ" + }, + "errorOccurred": { + "message": "ഒരു പിഴവ് സംഭവിച്ചിരിക്കുന്നു" + }, + "emailRequired": { + "message": "ഇമെയിൽ അഡ്രസ്സ് നിരബന്ധമാണ്." + }, + "invalidEmail": { + "message": "അസാധുവായ ഇമെയിൽ." + }, + "masterPassRequired": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് നിർബന്ധമാണ്‌." + }, + "masterPassLength": { + "message": "പ്രാഥമിക പാസ്‌വേഡിന് കുറഞ്ഞത് 8 പ്രതീകങ്ങളെങ്കിലും ദൈർഘ്യമുണ്ടായിരിക്കണം." + }, + "masterPassDoesntMatch": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സ്ഥിരീകരണം പൊരുത്തപ്പെടുന്നില്ല." + }, + "newAccountCreated": { + "message": "തങ്ങളുടെ അക്കൗണ്ട് സൃഷ്ടിക്കപ്പെട്ടു! ഇനി താങ്കൾക്ക് ലോഗിൻ ചെയ്യാം." + }, + "masterPassSent": { + "message": "നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് സൂചനയുള്ള ഒരു ഇമെയിൽ ഞങ്ങൾ നിങ്ങൾക്ക് അയച്ചു." + }, + "verificationCodeRequired": { + "message": "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് ആവശ്യമാണ്." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ പകർത്തി", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "ഈ പേജിൽ തിരഞ്ഞെടുത്ത ഇനം യാന്ത്രികമായി പൂരിപ്പിക്കാൻ കഴിയില്ല. പകരം വിവരങ്ങൾ പകർത്തി ഒട്ടിക്കുക." + }, + "loggedOut": { + "message": "ലോഗേഡ് ഔട്ട്" + }, + "loginExpired": { + "message": "നിങ്ങളുടെ പ്രവർത്തന സമയം കഴിഞ്ഞിരിക്കുന്നു." + }, + "logOutConfirmation": { + "message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?" + }, + "yes": { + "message": "ശരി" + }, + "no": { + "message": "തെറ്റ്" + }, + "unexpectedError": { + "message": "ഒരു അപ്രതീക്ഷിത പിശക് സംഭവിച്ചു." + }, + "nameRequired": { + "message": "പേര് നിർബന്ധമാണ്‌." + }, + "addedFolder": { + "message": "ചേർക്കപ്പെട്ട ഫോൾഡർ" + }, + "changeMasterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് മാറ്റുക" + }, + "changeMasterPasswordConfirmation": { + "message": "തങ്ങൾക്കു ബിറ്റ് വാർഡൻ വെബ് വാൾട്ടിൽ പ്രാഥമിക പാസ്‌വേഡ് മാറ്റാൻ സാധിക്കും.വെബ്സൈറ്റ് ഇപ്പോൾ സന്ദർശിക്കാൻ ആഗ്രഹിക്കുന്നുവോ?" + }, + "twoStepLoginConfirmation": { + "message": "സുരക്ഷാ കീ, ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷൻ, SMS, ഫോൺ കോൾ അല്ലെങ്കിൽ ഇമെയിൽ പോലുള്ള മറ്റൊരു ഉപകരണം ഉപയോഗിച്ച് തങ്ങളുടെ ലോഗിൻ സ്ഥിരീകരിക്കാൻ ആവശ്യപ്പെടുന്നതിലൂടെ രണ്ട്-ഘട്ട ലോഗിൻ തങ്ങളുടെ അക്കൗണ്ടിനെ കൂടുതൽ സുരക്ഷിതമാക്കുന്നു. bitwarden.com വെബ് വാൾട്ടിൽ രണ്ട്-ഘട്ട ലോഗിൻ പ്രവർത്തനക്ഷമമാക്കാനാകും.തങ്ങള്ക്കു ഇപ്പോൾ വെബ്സൈറ്റ് സന്ദർശിക്കാൻ ആഗ്രഹമുണ്ടോ?" + }, + "editedFolder": { + "message": "തിരുത്തിയ ഫോൾഡർ" + }, + "deleteFolderConfirmation": { + "message": "ഈ ഫോൾഡർ ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "deletedFolder": { + "message": "ഇല്ലാതാക്കിയ ഫോൾഡർ" + }, + "gettingStartedTutorial": { + "message": "എക്സ്റ്റൻഷൻ ഉപയോഗിയ്ക്കാൻ പരിചയപ്പെടുക" + }, + "gettingStartedTutorialVideo": { + "message": "ബ്രൗസർ എക്സ്റ്റൻഷൻ എങ്ങനെ പരമാവധി പ്രയോജനപ്പെടുത്താമെന്ന് മനസിലാക്കാൻ ഞങ്ങളുടെ ആരംഭ ട്യൂട്ടോറിയൽ കാണുക." + }, + "syncingComplete": { + "message": "സിങ്ക് പൂർത്തിയായി" + }, + "syncingFailed": { + "message": "സിങ്ക് ചെയ്യാൻ പരാജയപെട്ടു" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "ചേർക്കപ്പെട്ട ഇനം" + }, + "editedItem": { + "message": "തിരുത്തപ്പെട്ട ഇനം" + }, + "deleteItemConfirmation": { + "message": "ഈ ഇനം ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "deletedItem": { + "message": "ഇനം ട്രാഷിലേക്ക് അയച്ചു" + }, + "overwritePassword": { + "message": "പാസ്‌വേഡ് പുനരാലേഖനം ചെയ്യുക" + }, + "overwritePasswordConfirmation": { + "message": "നിലവിലെ പാസ്‌വേഡ് പുനരാലേഖനം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "ഫോൾഡറുകൾ തിരയുക" + }, + "searchCollection": { + "message": "കളക്ഷൻസ് തിരയുക " + }, + "searchType": { + "message": "തരം തിരയുന്നു" + }, + "noneFolder": { + "message": "ഫോൾഡറിൽ ഉൾപ്പെടാത്ത", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "പ്രവേശനം ചേർക്കുക എന്ന അറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കുക" + }, + "addLoginNotificationDesc": { + "message": "നിങ്ങൾ ആദ്യമായി സൈറ്റിൽ പ്രവേശിക്കുമ്പോൾ നിങ്ങളുടെ വാൾട്ടിലേക്കു തനിയെ പ്രവേശനം ഉൾപെടുത്താൻ \"പ്രവേശനം ചേർക്കുക എന്ന അറിയിപ്പ്\" ആവശ്യപ്പെടും." + }, + "dontShowCardsCurrentTab": { + "message": "ടാബ് പേജിൽ കാർഡുകൾ കാണിക്കരുത്" + }, + "dontShowCardsCurrentTabDesc": { + "message": "സ്വപ്രേരിതമായി പൂരിപ്പിക്കുന്നതിന് നിങ്ങളുടെ നിലവറയിൽ നിന്നുള്ള കാർഡ് ഇനങ്ങൾ 'നിലവിലെ ടാബ്' പേജിൽ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്." + }, + "dontShowIdentitiesCurrentTab": { + "message": "ടാബ് പേജിൽ ഐഡന്റിറ്റികൾ കാണിക്കരുത്" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "നിങ്ങൾ‌ക്കായി ഈ പാസ്‌വേഡ് ബിറ്റ്‌വർ‌ഡൻ‌ ഓർത്തിരിക്കണോ?" + }, + "notificationAddSave": { + "message": "ശരി, ഇപ്പോൾ സംരക്ഷിക്കുക" + }, + "disableChangedPasswordNotification": { + "message": "മാറ്റിയ പാസ്‌വേഡ് അറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കുക" + }, + "disableChangedPasswordNotificationDesc": { + "message": "ഒരു വെബ്‌സൈറ്റിൽ നിങ്ങൾ അത് മാറ്റിയതായി കണ്ടെത്തുമ്പോഴെല്ലാം നിങ്ങളുടെ നിലവറയിൽ ഒരു ലോഗിൻ പാസ്‌വേഡ് അപ്‌ഡേറ്റുചെയ്യാൻ \"മാറ്റിയ പാസ്‌വേഡ് അറിയിപ്പ്\" യാന്ത്രികമായി ആവശ്യപ്പെടുന്നു." + }, + "notificationChangeDesc": { + "message": "ബിറ്റ്വാർഡനിൽ ഈ പാസ്‌വേഡ് അപ്‌ഡേറ്റ് ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "notificationChangeSave": { + "message": "ശരി, ഇപ്പോൾ അപ്ഡേറ്റ് ചെയ്യുക" + }, + "disableContextMenuItem": { + "message": "സന്ദർഭ മെനു ഓപ്ഷനുകൾ അപ്രാപ്തമാക്കുക" + }, + "disableContextMenuItemDesc": { + "message": "നിങ്ങളുടെ നിലവിലെ ടാബിലെ വെബ്‌സൈറ്റിനായുള്ള പാസ്‌വേഡ് ജനറേഷനിലേക്കും ലോഗിനുകളിലേക്കും സന്ദർഭ മെനു ഓപ്ഷനുകൾ ദ്രുത പ്രവേശനം നൽകുന്നു." + }, + "defaultUriMatchDetection": { + "message": "സാധാരണ URI പൊരുത്തം കണ്ടെത്തൽ", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "യാന്ത്രിക പൂരിപ്പിക്കൽ പോലുള്ള പ്രവർത്തനങ്ങൾ നടത്തുമ്പോൾ ലോഗിനുകൾക്കായി യുആർഐ മാച്ച് ഡിറ്റക്ഷൻ കൈകാര്യം ചെയ്യുന്ന സ്ഥിരസ്ഥിതി മാർഗം തിരഞ്ഞെടുക്കുക." + }, + "theme": { + "message": "തീം" + }, + "themeDesc": { + "message": "അപ്ലിക്കേഷന്റെ തീമും വർണ്ണങ്ങളും മാറ്റുക." + }, + "dark": { + "message": "ഇരുണ്ടത്", + "description": "Dark color" + }, + "light": { + "message": "ലൈറ്റ്", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "നിങ്ങളുടെ വാൾട് ഡാറ്റ എക്‌സ്‌പോർട്ടുചെയ്യാൻ പ്രാഥമിക പാസ്‌വേഡ് നൽകുക." + }, + "shared": { + "message": "പങ്കിട്ടവ" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "പങ്കിടുക" + }, + "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." + }, + "learnMore": { + "message": "കൂടുതലറിവ് നേടുക" + }, + "authenticatorKeyTotp": { + "message": "ഓതന്റിക്കേറ്റർ കീ (TOTP)" + }, + "verificationCodeTotp": { + "message": "സ്ഥിരീകരണ കോഡ് (TOTP)" + }, + "copyVerificationCode": { + "message": "സ്ഥിരീകരണ കോഡ് പകർത്തുക " + }, + "attachments": { + "message": "അറ്റാച്ചുമെന്റുകൾ" + }, + "deleteAttachment": { + "message": "അറ്റാച്ചുമെന്റ് ഇല്ലാതാക്കുക" + }, + "deleteAttachmentConfirmation": { + "message": "ഈ അറ്റാച്ചുമെന്റ് ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "deletedAttachment": { + "message": "മായ്ച്ച അറ്റാച്ചുമെന്റ്" + }, + "newAttachment": { + "message": "പുതിയ അറ്റാച്ചുമെന്റ് ചേർക്കുക" + }, + "noAttachments": { + "message": "അറ്റാച്ചുമെന്റുകൾ ഇല്ല." + }, + "attachmentSaved": { + "message": "അറ്റാച്ചുമെന്റ് സംരക്ഷിച്ചു." + }, + "file": { + "message": "ഫയൽ" + }, + "selectFile": { + "message": "ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക" + }, + "maxFileSize": { + "message": "പരമാവധി ഫയൽ വലുപ്പം 500 MB ആണ്." + }, + "featureUnavailable": { + "message": "സവിശേഷത ലഭ്യമല്ല" + }, + "updateKey": { + "message": "നിങ്ങളുടെ എൻ‌ക്രിപ്ഷൻ കീ അപ്‌ഡേറ്റ് ചെയ്യുന്നതുവരെ നിങ്ങൾക്ക് ഈ സവിശേഷത ഉപയോഗിക്കാൻ കഴിയില്ല." + }, + "premiumMembership": { + "message": "പ്രീമിയം അംഗത്വം" + }, + "premiumManage": { + "message": "അംഗത്വം നിയന്ത്രിക്കുക" + }, + "premiumManageAlert": { + "message": "നിങ്ങളുടെ അംഗത്വം bitwarden.com വെബ് വാൾട്ടിൽ മാനേജുചെയ്യാൻ കഴിയും. തങ്ങൾക്ക് ഇപ്പോൾ വെബ്സൈറ്റ് സന്ദർശിക്കാൻ ആഗ്രഹമുണ്ടോ?" + }, + "premiumRefresh": { + "message": "അംഗത്വം റിഫ്രഷ് ചെയ്യുക" + }, + "premiumNotCurrentMember": { + "message": "നിങ്ങൾ നിലവിൽ ഒരു പ്രീമിയം അംഗമല്ല." + }, + "premiumSignUpAndGet": { + "message": "ഒരു പ്രീമിയം അംഗത്വത്തിനായി സൈൻ അപ്പ് ചെയ്ത് നേടുക:" + }, + "ppremiumSignUpStorage": { + "message": "ഫയൽ അറ്റാച്ചുമെന്റുകൾക്കായി 1 ജിബി എൻക്രിപ്റ്റുചെയ്‌ത സംഭരണം." + }, + "ppremiumSignUpTwoStep": { + "message": "രണ്ട്-ഘട്ട പ്രവേശന ഓപ്ഷനുകളായ Yubikey, FIDO U2F, Duo." + }, + "ppremiumSignUpReports": { + "message": "നിങ്ങളുടെ വാൾട് സൂക്ഷിക്കുന്നതിന്. പാസ്‌വേഡ് ശുചിത്വം, അക്കൗണ്ട് ആരോഗ്യം, ഡാറ്റ ലംഘന റിപ്പോർട്ടുകൾ." + }, + "ppremiumSignUpTotp": { + "message": "നിങ്ങളുടെ വാൾട്ടിലെ പ്രവേശനങ്ങൾക്കായി TOTP പരിശോധന കോഡ് (2FA) സൃഷ്ടാവ്." + }, + "ppremiumSignUpSupport": { + "message": "മുൻ‌ഗണന ഉപഭോക്തൃ പിന്തുണ." + }, + "ppremiumSignUpFuture": { + "message": "ഭാവിയിലെ എല്ലാ പ്രീമിയം സവിശേഷതകളും. കൂടുതൽ ഉടനെ വരുന്നു !" + }, + "premiumPurchase": { + "message": "പ്രീമിയം വാങ്ങുക" + }, + "premiumPurchaseAlert": { + "message": "നിങ്ങൾക്ക് bitwarden.com വെബ് വാൾട്ടിൽ പ്രീമിയം അംഗത്വം വാങ്ങാം. നിങ്ങൾക്ക് ഇപ്പോൾ വെബ്സൈറ്റ് സന്ദർശിക്കാൻ ആഗ്രഹമുണ്ടോ?" + }, + "premiumCurrentMember": { + "message": "തങ്ങൾ ഒരു പ്രീമിയം അംഗമാണ്!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwardenനെ പിന്തുണച്ചതിന് നന്ദി." + }, + "premiumPrice": { + "message": "എല്ലാം വെറും $PRICE$/ വർഷത്തേക്ക്!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "റിഫ്രഷ് പൂർത്തിയായി" + }, + "disableAutoTotpCopy": { + "message": "ഓട്ടോമാറ്റിക് TOTP പകർപ്പ് പ്രവർത്തനരഹിതമാക്കുക" + }, + "disableAutoTotpCopyDesc": { + "message": "നിങ്ങളുടെ പ്രവേശനം ഒരു ഓതന്റിക്കേറ്റർ കീയുമായി ബന്ധപെടുത്തിയട്ടുടെങ്കിൽ, പ്രവേശനം ഓട്ടോഫിൽ ചെയ്യുമ്പോഴെല്ലാം TOTP സ്ഥിരീകരണ കോഡ് നിങ്ങളുടെ ക്ലിപ്ബോർഡിൽ ഓട്ടോമാറ്റിക്കയായി പകർത്തപ്പെടും." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "പ്രീമിയം അംഗത്വം ആവശ്യമാണ്" + }, + "premiumRequiredDesc": { + "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": "നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ യുഎസ്ബി പോർട്ടിൽ സുരക്ഷാ കീ ഇടുക. അതിന് ഒരു ബട്ടൺ ഉണ്ടെങ്കിൽ അത് അമർത്തുക." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "loginUnavailable": { + "message": "പ്രവേശനം ലഭ്യമല്ല" + }, + "noTwoStepProviders": { + "message": "ഈ അക്കൗണ്ടിന് രണ്ട്-ഘട്ട പ്രവേശനം പ്രാപ്തമാക്കിയിട്ടുണ്ട്, എന്നിരുന്നാലും, ക്രമീകരിച്ച രണ്ട്-ഘട്ട ദാതാക്കളെയൊന്നും ഈ ഉപകരണം പിന്തുണയ്ക്കുന്നില്ല." + }, + "noTwoStepProviders2": { + "message": "മികച്ച പിന്തുണയുള്ള, കൂടുതൽ ദാതാക്കളെ ദയവായി ചേർക്കുക (ഒരു ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷൻ പോലുള്ളവ)." + }, + "twoStepOptions": { + "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, എസ്എംഎസ്, ഫോൺ കോൾ അല്ലെങ്കിൽ യു 2 എഫ് സുരക്ഷാ കീ ഉപയോഗിച്ച് നിങ്ങളുടെ ഓർഗനൈസേഷനെ ഡ്യുവോ സെക്യൂരിറ്റി ഉപയോഗിച്ച് പരിശോധിക്കുക.", + "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": "സ്ഥിരീകരണ കോഡുകൾ നിങ്ങൾക്ക് ഇമെയിൽ ചെയ്യും." + }, + "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": "API സെർവർ URL" + }, + "iconsUrl": { + "message": "ഐക്കണുകളുടെ സെർവർ URL" + }, + "environmentSaved": { + "message": "എന്വിയാണമെന്റ് URL സംരക്ഷിച്ചു." + }, + "enableAutoFillOnPageLoad": { + "message": "പേജ് ലോഡിൽ യാന്ത്രിക-പൂരിപ്പിക്കൽ പ്രവർത്തനക്ഷമമാക്കുക" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "ഒരു ലോഗിൻ ഫോം കണ്ടെത്തിയാൽ, വെബ് പേജ് ലോഡുചെയ്യുമ്പോൾ യാന്ത്രികമായി ഒരു സ്വയം പൂരിപ്പിക്കൽ നടത്തുക." + }, + "experimentalFeature": { + "message": "ഇത് നിലവിൽ ഒരു പരീക്ഷണാത്മക സവിശേഷതയാണ്. നിങ്ങളുടെ സ്വന്തം ഉത്തരവാദിത്വത്തിൽ ഉപയോഗിക്കുക." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "വോൾട്ട് പോപ്പ്അപ്പ് തുറക്കുക" + }, + "commandOpenSidebar": { + "message": "വാൾട് സൈഡ്ബാറിൽ തുറക്കുക" + }, + "commandAutofillDesc": { + "message": "നിലവിലെ വെബ്‌സൈറ്റിനായി അവസാനമായി ഉപയോഗിച്ച ലോഗിൻ യാന്ത്രികമായി പൂരിപ്പിക്കുക" + }, + "commandGeneratePasswordDesc": { + "message": "ക്ലിപ്പ്ബോർഡിലേക്ക് ഒരു പുതിയ റാൻഡം പാസ്‌വേഡ് സൃഷ്ടിച്ച് പകർത്തുക" + }, + "commandLockVaultDesc": { + "message": "നിലവറ പൂട്ടുക" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "ഇഷ്‌ടാനുസൃത ഫീൽഡുകൾ" + }, + "copyValue": { + "message": "മൂല്യം പകർത്തുക" + }, + "value": { + "message": "മൂല്യം" + }, + "newCustomField": { + "message": "പുതിയ ഇഷ്‌ടാനുസൃത ഫീൽഡ്" + }, + "dragToSort": { + "message": "അടുക്കാൻ വലിച്ചിടുക" + }, + "cfTypeText": { + "message": "വാചകം" + }, + "cfTypeHidden": { + "message": "മറച്ചത്" + }, + "cfTypeBoolean": { + "message": "ബൂളിയൻ" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "നിങ്ങളുടെ സ്ഥിരീകരണ കോഡിനായി നിങ്ങളുടെ ഇമെയിൽ പരിശോധിക്കുന്നതിന് പോപ്പ്അപ്പ് വിൻഡോയ്ക്ക് പുറത്ത് ക്ലിക്കുചെയ്യുന്നത് ഈ പോപ്പ്അപ്പ് അടയ്‌ക്കുന്നതിന് കാരണമാകും. ഈ പോപ്പ്അപ്പ് അടയ്‌ക്കാത്തവിധം ഒരു പുതിയ വിൻ‌ഡോയിൽ‌ തുറക്കാൻ‌ നിങ്ങൾ‌ താൽ‌പ്പര്യപ്പെടുന്നോ?" + }, + "popupU2fCloseMessage": { + "message": "ഈ ബ്ര pop സറിന് ഈ പോപ്പ്അപ്പ് വിൻഡോയിൽ U2F അഭ്യർത്ഥനകൾ പ്രോസസ്സ് ചെയ്യാൻ കഴിയില്ല. യു 2 എഫ് ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യാൻ ഈ പോപ്പ്അപ്പ് ഒരു പുതിയ വിൻഡോയിൽ തുറക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "disableFavicon": { + "message": "വെബ്‌സൈറ്റ് ഐക്കണുകൾ പ്രവർത്തനരഹിതമാക്കുക" + }, + "disableFaviconDesc": { + "message": "വെബ്സൈറ്റ് ഐക്കണുകൾ തങ്ങളുടെ വാൾട്ടിലെ ലോഗിൻ ഇന്നതിന്റ്റെ അടുത്തായി തിരിച്ചറിയുന്ന ഒരു ചിത്രം ഉൾപ്പെടുത്തുന്നു." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "കാർഡ് ഉടമയുടെ പേര്" + }, + "number": { + "message": "നമ്പർ" + }, + "brand": { + "message": "ബ്രാൻഡ്" + }, + "expirationMonth": { + "message": "കാലാവതി കഴിയുന്ന മാസം" + }, + "expirationYear": { + "message": "കാലാവതി കഴിയുന്ന വർഷം" + }, + "expiration": { + "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": "ഡിസംബർ" + }, + "securityCode": { + "message": "സുരക്ഷാ കോഡ്" + }, + "ex": { + "message": "ഉദാഹരണം." + }, + "title": { + "message": "ശീർഷകം" + }, + "mr": { + "message": "ശ്രീ" + }, + "mrs": { + "message": "ശ്രിമതി" + }, + "ms": { + "message": "കുമാരി" + }, + "dr": { + "message": "ഡോ" + }, + "firstName": { + "message": "പേരിന്റെ ആദ്യഭാഗം" + }, + "middleName": { + "message": "മധ്യ നാമം" + }, + "lastName": { + "message": "പേരിന്റെ അവസാന ഭാഗം" + }, + "fullName": { + "message": "Full Name" + }, + "identityName": { + "message": "ഐഡന്റിറ്റിയുടെ പേര്" + }, + "company": { + "message": "കമ്പനി" + }, + "ssn": { + "message": "സാമൂഹിക സുരക്ഷാ നമ്പർ" + }, + "passportNumber": { + "message": "പാസ്പോർട്ട് നമ്പർ" + }, + "licenseNumber": { + "message": "ലൈസൻസ് നമ്പർ" + }, + "email": { + "message": "ഇമെയിൽ" + }, + "phone": { + "message": "ഫോൺ" + }, + "address": { + "message": "മേൽവിലാസം" + }, + "address1": { + "message": "മേൽവിലാസം 1" + }, + "address2": { + "message": "മേൽവിലാസം 2" + }, + "address3": { + "message": "മേൽവിലാസം 3" + }, + "cityTown": { + "message": "നഗരം / പട്ടണം" + }, + "stateProvince": { + "message": "സംസ്ഥാനം/ ദേശം" + }, + "zipPostalCode": { + "message": "പിൻകോഡ്" + }, + "country": { + "message": "രാജ്യം" + }, + "type": { + "message": "തരം" + }, + "typeLogin": { + "message": "പ്രവേശനം" + }, + "typeLogins": { + "message": "പ്രവേശനങ്ങൾ" + }, + "typeSecureNote": { + "message": "സുരക്ഷിത കുറിപ്പ്" + }, + "typeCard": { + "message": "കാർഡ്" + }, + "typeIdentity": { + "message": "ഐഡന്റിറ്റി" + }, + "passwordHistory": { + "message": "പാസ്സ്‌വേഡ് നാൾവഴി" + }, + "back": { + "message": "പുറകോട്ട്" + }, + "collections": { + "message": "കളക്ഷൻസ്" + }, + "favorites": { + "message": "പ്രിയങ്കരങ്ങള്‍" + }, + "popOutNewWindow": { + "message": "ഒരു പുതിയ വിൻ‌ഡോയിലേക്ക് പോപ്പ് out ട്ട് ചെയ്യുക" + }, + "refresh": { + "message": "റിഫ്രഷ് ചെയ്യുക" + }, + "cards": { + "message": "കാർഡുകൾ" + }, + "identities": { + "message": "തിരിച്ചറിയലുകൾ" + }, + "logins": { + "message": "പ്രവേശനങ്ങൾ" + }, + "secureNotes": { + "message": "സുരക്ഷാ കുറിപ്പുകൾ" + }, + "clear": { + "message": "മായ്ക്കുക", + "description": "To clear something out. example: To clear browser history." + }, + "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": "ഓപ്ഷനുകൾ ടോഗിൾ ചെയ്യുക" + }, + "toggleCurrentUris": { + "message": "നിലവിലെ URIകൾ ടോഗിൾ ചെയ്യുക", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "നിലവിലെ URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "സംഘടന", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "തരങ്ങൾ" + }, + "allItems": { + "message": "എല്ലാ ഇനങ്ങൾ" + }, + "noPasswordsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ പാസ്സ്‌വേഡുകൾ ഒന്നും ഇല്ല." + }, + "remove": { + "message": "നീക്കുക" + }, + "default": { + "message": "സ്ഥിരസ്ഥിതി" + }, + "dateUpdated": { + "message": "പുതുക്കി", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "പാസ്സ്‌വേഡ് പുതുക്കി", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": " പിൻ കോഡ് അസാധുവാണ്." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "ബ്രൌസർ പുനരാരംഭത്തിൽ പ്രാഥമിക പാസ്‌വേഡ് ഉപയോഗിച്ച് ലോക്ക് ചെയ്യുക" + }, + "selectOneCollection": { + "message": "നിങ്ങൾ ഒരു കളക്ഷനെങ്കിലും തിരഞ്ഞെടുക്കണം." + }, + "cloneItem": { + "message": "ഇനം ക്ലോൺ ചെയ്യുക" + }, + "clone": { + "message": "ക്ലോൺ" + }, + "passwordGeneratorPolicyInEffect": { + "message": "ഒന്നോ അതിലധികമോ സംഘടന നയങ്ങൾ നിങ്ങളുടെ പാസ്സ്‌വേഡ് സൃഷ്ടാവിൻ്റെ ക്രമീകരണങ്ങളെ ബാധിക്കുന്നു" + }, + "vaultTimeoutAction": { + "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": "വീണ്ടെടുത്ത ഇനം" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ലോഗൗട്ട് ചെയ്യുകയാണെങ്കിൽ തങ്ങളുടെ വാൾട്ടിലേക്കുള്ള എല്ലാ ആക്സസും നീക്കംചെയ്യും. കാലയളവിനുശേഷം ഓൺലൈൻ ഓതന്റിക്കേറ്റർ ആവശ്യമാണ്. ഈ ക്രമീകരണം ഉപയോഗിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "ടൈംഔട് ആക്ഷൻ സ്ഥിരീകരണം" + }, + "autoFillAndSave": { + "message": "യാന്ത്രികമായി പൂരിപ്പിച്ച് സംരക്ഷിക്കുക" + }, + "autoFillSuccessAndSavedUri": { + "message": "യാന്ത്രികമായി പൂരിപ്പിച്ച ഇനവും സംരക്ഷിച്ച URI" + }, + "autoFillSuccess": { + "message": "യാന്ത്രികമായി പൂരിപ്പിച്ച ഇനം" + }, + "setMasterPassword": { + "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": "സേവന നിബന്ധനകളും സ്വകാര്യതാ നയവും അംഗീകരിച്ചിട്ടില്ല." + }, + "termsOfService": { + "message": "സേവന നിബന്ധനകൾ" + }, + "privacyPolicy": { + "message": "സ്വകാര്യതാനയം" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json new file mode 100644 index 0000000000..3aa141549a --- /dev/null +++ b/apps/browser/src/_locales/nb/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden — Fri passordbehandling", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden er en sikker og fri passordbehandler for alle dine PCer og mobiler.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Logg på eller opprett en ny konto for å få tilgang til ditt sikre hvelv." + }, + "createAccount": { + "message": "Opprett en konto" + }, + "login": { + "message": "Logg inn" + }, + "enterpriseSingleSignOn": { + "message": "Bedriftsinnlogging (SSO)" + }, + "cancel": { + "message": "Lukk" + }, + "close": { + "message": "Lukk" + }, + "submit": { + "message": "Send inn" + }, + "emailAddress": { + "message": "E-postadresse" + }, + "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": "Et hint for hovedpassordet (valgfritt)" + }, + "tab": { + "message": "Fane" + }, + "myVault": { + "message": "Mitt hvelv" + }, + "tools": { + "message": "Verktøy" + }, + "settings": { + "message": "Innstillinger" + }, + "currentTab": { + "message": "Nåværende fane" + }, + "copyPassword": { + "message": "Kopier passordet" + }, + "copyNote": { + "message": "Kopier notatet" + }, + "copyUri": { + "message": "Kopier URIen" + }, + "copyUsername": { + "message": "Kopier brukernavnet" + }, + "copyNumber": { + "message": "Kopier nummeret" + }, + "copySecurityCode": { + "message": "Kopier sikkerhetskoden" + }, + "autoFill": { + "message": "Auto-utfylling" + }, + "generatePasswordCopied": { + "message": "Generer et passord (kopiert)" + }, + "copyElementIdentifier": { + "message": "Kopier egendefinert feltnavn" + }, + "noMatchingLogins": { + "message": "Ingen samsvarende innlogginger." + }, + "unlockVaultMenu": { + "message": "Lås opp hvelvet ditt" + }, + "loginToVaultMenu": { + "message": "Logg inn på hvelvet ditt" + }, + "autoFillInfo": { + "message": "Det er ingen tilgjengelige innlogginger å auto-utfylle med i den nåværende nettleserfanen." + }, + "addLogin": { + "message": "Legg til en innlogging" + }, + "addItem": { + "message": "Legg til en gjenstand" + }, + "passwordHint": { + "message": "Passordhint" + }, + "enterEmailToGetHint": { + "message": "Skriv inn din kontos E-postadresse for å motta hintet til ditt superpassord." + }, + "getMasterPasswordHint": { + "message": "Få et hint om superpassordet" + }, + "continue": { + "message": "Fortsett" + }, + "sendVerificationCode": { + "message": "Send en bekreftelseskode til E-postadressen din" + }, + "sendCode": { + "message": "Send kode" + }, + "codeSent": { + "message": "Kode sendt" + }, + "verificationCode": { + "message": "Verifiseringskode" + }, + "confirmIdentity": { + "message": "Bekreft identiteten din for å fortsette." + }, + "account": { + "message": "Konto" + }, + "changeMasterPassword": { + "message": "Endre hovedpassordet" + }, + "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." + }, + "twoStepLogin": { + "message": "2-trinnsinnlogging" + }, + "logOut": { + "message": "Logg ut" + }, + "about": { + "message": "Om" + }, + "version": { + "message": "Versjon" + }, + "save": { + "message": "Lagre" + }, + "move": { + "message": "Flytt" + }, + "addFolder": { + "message": "Legg til en mappe" + }, + "name": { + "message": "Navn" + }, + "editFolder": { + "message": "Rediger mappen" + }, + "deleteFolder": { + "message": "Slett mappen" + }, + "folders": { + "message": "Mapper" + }, + "noFolders": { + "message": "Det er ingen mapper å liste opp." + }, + "helpFeedback": { + "message": "Hjelp og tilbakemelding" + }, + "sync": { + "message": "Synkroniser" + }, + "syncVaultNow": { + "message": "Synkroniser hvelvet nå" + }, + "lastSync": { + "message": "Forrige synkronisering:" + }, + "passGen": { + "message": "Passordgenerator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Generer automatisk sterke og unike passord for dine innlogginger." + }, + "bitWebVault": { + "message": "Bitwarden netthvelv" + }, + "importItems": { + "message": "Importer gjenstander" + }, + "select": { + "message": "Velg" + }, + "generatePassword": { + "message": "Generer et passord" + }, + "regeneratePassword": { + "message": "Omgenerer et passord" + }, + "options": { + "message": "Alternativer" + }, + "length": { + "message": "Lengde" + }, + "uppercase": { + "message": "Store bokstaver (A–Å)" + }, + "lowercase": { + "message": "Små bokstaver (a-z)" + }, + "numbers": { + "message": "Tall (0-9)" + }, + "specialCharacters": { + "message": "Spesialtegn (!@#$%^&*)" + }, + "numWords": { + "message": "Antall ord" + }, + "wordSeparator": { + "message": "Ordadskiller" + }, + "capitalize": { + "message": "Stor forbokstav", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inkluder nummer" + }, + "minNumbers": { + "message": "Minste antall numre" + }, + "minSpecial": { + "message": "Minste antall spesialtegn" + }, + "avoidAmbChar": { + "message": "Unngå tvetydige tegn" + }, + "searchVault": { + "message": "Søk i hvelvet" + }, + "edit": { + "message": "Rediger" + }, + "view": { + "message": "Vis" + }, + "noItemsInList": { + "message": "Det er ingen gjenstander å liste opp." + }, + "itemInformation": { + "message": "Gjenstandsinformasjon" + }, + "username": { + "message": "Brukernavn" + }, + "password": { + "message": "Passord" + }, + "passphrase": { + "message": "Passfrase" + }, + "favorite": { + "message": "Favoritt" + }, + "notes": { + "message": "Notater" + }, + "note": { + "message": "Notat" + }, + "editItem": { + "message": "Rediger objektet" + }, + "folder": { + "message": "Mappe" + }, + "deleteItem": { + "message": "Slett objektet" + }, + "viewItem": { + "message": "Vis objektet" + }, + "launch": { + "message": "Åpne" + }, + "website": { + "message": "Nettsted" + }, + "toggleVisibility": { + "message": "Juster synlighet" + }, + "manage": { + "message": "Behandle" + }, + "other": { + "message": "Annet" + }, + "rateExtension": { + "message": "Gi denne utvidelsen en vurdering" + }, + "rateExtensionDesc": { + "message": "Tenk gjerne på om du vil skrive en anmeldelse om oss!" + }, + "browserNotSupportClipboard": { + "message": "Nettleseren din støtter ikke kopiering til utklippstavlen på noe enkelt vis. Prøv å kopiere det manuelt i stedet." + }, + "verifyIdentity": { + "message": "Bekreft identitet" + }, + "yourVaultIsLocked": { + "message": "Hvelvet ditt er låst. Kontroller 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" + }, + "vaultTimeout": { + "message": "Tidsavbrudd i hvelvet" + }, + "lockNow": { + "message": "Lås nå" + }, + "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" + }, + "onLocked": { + "message": "Ved maskinlåsing" + }, + "onRestart": { + "message": "Ved nettleseromstart" + }, + "never": { + "message": "Aldri" + }, + "security": { + "message": "Sikkerhet" + }, + "errorOccurred": { + "message": "En feil har oppstått" + }, + "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." + }, + "verificationCodeRequired": { + "message": "En verifiseringskode er påkrevd." + }, + "invalidVerificationCode": { + "message": "Ugyldig bekreftelseskode" + }, + "valueCopied": { + "message": "$VALUE$ er kopiert", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Klarte ikke å auto-utfylle den valgte gjenstanden på denne siden. Kopier og lim inn informasjonen i stedet." + }, + "loggedOut": { + "message": "Logget av" + }, + "loginExpired": { + "message": "Din innloggingsøkt har utløpt." + }, + "logOutConfirmation": { + "message": "Er du sikker på at du vil logge av?" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nei" + }, + "unexpectedError": { + "message": "En uventet feil har oppstått." + }, + "nameRequired": { + "message": "Et navn er påkrevd." + }, + "addedFolder": { + "message": "La til en mappe" + }, + "changeMasterPass": { + "message": "Endre hovedpassordet" + }, + "changeMasterPasswordConfirmation": { + "message": "Du kan endre superpassordet ditt på bitwarden.net-netthvelvet. Vil du besøke det nettstedet nå?" + }, + "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å?" + }, + "editedFolder": { + "message": "Redigerte mappen" + }, + "deleteFolderConfirmation": { + "message": "Er du sikker på at du vil slette denne mappen?" + }, + "deletedFolder": { + "message": "Slettet mappen" + }, + "gettingStartedTutorial": { + "message": "Opplæring om å sette i gang" + }, + "gettingStartedTutorialVideo": { + "message": "Se vår opplæringsvideo for å lære hvordan man får mest mulig ut av nettleserutvidelsen." + }, + "syncingComplete": { + "message": "Synkronisering fullført" + }, + "syncingFailed": { + "message": "Synkronisering mislyktes" + }, + "passwordCopied": { + "message": "Passordet er kopiert" + }, + "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" + }, + "addedItem": { + "message": "La til gjenstanden" + }, + "editedItem": { + "message": "Redigerte gjenstanden" + }, + "deleteItemConfirmation": { + "message": "Er du sikker på at du vil slette dette objektet?" + }, + "deletedItem": { + "message": "Slettet objektet" + }, + "overwritePassword": { + "message": "Overskriv passordet" + }, + "overwritePasswordConfirmation": { + "message": "Er du sikker på at du vil overskrive det nåværende passordet?" + }, + "overwriteUsername": { + "message": "Skriv over brukernavn" + }, + "overwriteUsernameConfirmation": { + "message": "Er du sikker på at du vil skrive over det nåværende brukernavnet?" + }, + "searchFolder": { + "message": "Søk i mappe" + }, + "searchCollection": { + "message": "Søk i samling" + }, + "searchType": { + "message": "Søketype" + }, + "noneFolder": { + "message": "Ingen mappe", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Deaktiver «Legg til innlogging»-beskjedene" + }, + "addLoginNotificationDesc": { + "message": "\"Legg til innlogging\"-beskjeden ber deg automatisk om å lagre nye innlogginger til hvelvet ditt hver gang du logger på dem for første gang." + }, + "dontShowCardsCurrentTab": { + "message": "Ikke vis kort på fanesiden" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Kortene fra hvelvet ditt er listet opp på «Nåværende fane»-siden for enkel tilgang til autoutfylling." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Ikke vis identiteter på fanesiden" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identitetene fra hvelvet ditt er listet opp på «Nåværende fane»-siden for enkel autoutfyllingstilgang." + }, + "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." + }, + "notificationAddDesc": { + "message": "Skal Bitwarden huske på dette passordet for deg?" + }, + "notificationAddSave": { + "message": "Ja, lagre nå" + }, + "disableChangedPasswordNotification": { + "message": "Deaktiver beskjeder om passordendringer" + }, + "disableChangedPasswordNotificationDesc": { + "message": "«Endret passord»-beskjeden spør deg automatisk om å oppdatere et innloggingspassord i hvelvet ditt, dersom den oppdager at du har endret det på et nettsted." + }, + "notificationChangeDesc": { + "message": "Vil du oppdatere dette passordet i Bitwarden?" + }, + "notificationChangeSave": { + "message": "Ja, oppdater nå" + }, + "disableContextMenuItem": { + "message": "Deaktiver sammenhengsmeny-innstillinger" + }, + "disableContextMenuItemDesc": { + "message": "Sammenhengsmeny-alternativer sørger for rask tilgang til passordgenerering og innlogginger for nettstedet i din nåværende fane." + }, + "defaultUriMatchDetection": { + "message": "Standard URI-samsvarsgjenkjenning", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Velg standardmåten for å håndtere URI-samsvarsgjenkjenning for pålogginger ved f. eks. auto-utfylling." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Endre appens fargetema." + }, + "dark": { + "message": "Mørkt", + "description": "Dark color" + }, + "light": { + "message": "Lyst", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarisert mørk", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Skriv inn ditt superpassord for å eksportere dine hvelvdataer." + }, + "shared": { + "message": "Delt" + }, + "learnOrg": { + "message": "Lær om organisasjoner" + }, + "learnOrgConfirmation": { + "message": "Bitwarden lar deg dele dine hvelvgjenstander med andre ved å bruke en organisasjon. Vil du besøke bitwarden.com-nettstedet for å lære mer?" + }, + "moveToOrganization": { + "message": "Flytt til organisasjon" + }, + "share": { + "message": "Del" + }, + "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 å flytte denne gjenstanden til. Flytting til en organisasjon overfører eierskap til den aktuelle organisasjonen. Du vil ikke lenger være den direkte eieren av denne varen når den er flyttet." + }, + "learnMore": { + "message": "Lær mer" + }, + "authenticatorKeyTotp": { + "message": "Autentiseringsnøkkel (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verifiseringskode (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopier verifiseringskoden" + }, + "attachments": { + "message": "Vedlegg" + }, + "deleteAttachment": { + "message": "Slett vedlegget" + }, + "deleteAttachmentConfirmation": { + "message": "Er du sikker på at du vil slette dette vedlegget?" + }, + "deletedAttachment": { + "message": "Slettet vedlegget" + }, + "newAttachment": { + "message": "Legg til et nytt vedlegg" + }, + "noAttachments": { + "message": "Ingen vedlegg." + }, + "attachmentSaved": { + "message": "Vedlegget har blitt lagret." + }, + "file": { + "message": "Fil" + }, + "selectFile": { + "message": "Velg en fil." + }, + "maxFileSize": { + "message": "Den maksimale filstørrelsen er 500 MB." + }, + "featureUnavailable": { + "message": "Egenskapen er utilgjengelig" + }, + "updateKey": { + "message": "Du kan ikke bruke denne funksjonen før du oppdaterer krypteringsnøkkelen din." + }, + "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": "Oppdater medlemskapet" + }, + "premiumNotCurrentMember": { + "message": "Du er ikke for øyeblikket et Premium-medlem." + }, + "premiumSignUpAndGet": { + "message": "Skriv deg opp på et Premium-medlemskap og få:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB med kryptert fillagring for filvedlegg." + }, + "ppremiumSignUpTwoStep": { + "message": "Ytterligere 2-trinnsinnloggingsmuligheter, slik som YubiKey, FIDO U2F, og Duo." + }, + "ppremiumSignUpReports": { + "message": "Passordhygiene, kontohelse, og databruddsrapporter som holder hvelvet ditt trygt." + }, + "ppremiumSignUpTotp": { + "message": "TOTP-verifiseringskodegenerator (2FA) for innlogginger i ditt hvelv." + }, + "ppremiumSignUpSupport": { + "message": "Prioritert kundestøtte." + }, + "ppremiumSignUpFuture": { + "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": "Og alt det for %price%/år!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Oppfriskning fullført" + }, + "disableAutoTotpCopy": { + "message": "Deaktiver automatisk TOTP-kopiering" + }, + "disableAutoTotpCopyDesc": { + "message": "Dersom din innlogging har en autentiseringsnøkkel knyttet til den, blir TOTP-verifiseringskoden automatisk kopiert til utklippstavlen din når enn du auto-utfyller innloggingen." + }, + "disableAutoBiometricsPrompt": { + "message": "Ikke be om biometri under åpning" + }, + "premiumRequired": { + "message": "Premium er påkrevd" + }, + "premiumRequiredDesc": { + "message": "Et Premium-medlemskap er påkrevd for å bruke denne funksjonen." + }, + "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", + "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." + }, + "webAuthnNewTab": { + "message": "For å starte WebAuthn 2FA bekreftelsen. Klikk på knappen nedenfor for å åpne en ny fane og følge instruksene som er gitt i den nye fanen." + }, + "webAuthnNewTabOpen": { + "message": "Åpne ny fane" + }, + "webAuthnAuthenticate": { + "message": "Autentiser WebAuthn" + }, + "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 nettleseren." + }, + "noTwoStepProviders2": { + "message": "Vennligst bruk en støttet nettleser (f.eks. Chrome) og/eller legg til flere leverandører som er bedre støttet mellom flere nettlesere (slik som en autentiseringsapp)." + }, + "twoStepOptions": { + "message": "Alternativer for 2-trinnsinnlogging" + }, + "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 til å få tilgang til kontoen din." + }, + "emailTitle": { + "message": "E-post" + }, + "emailDesc": { + "message": "Verifiseringskoder vil bli sendt til deg med E-post." + }, + "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 tjenernettadresse" + }, + "identityUrl": { + "message": "Identitetstjenerens nettadresse" + }, + "notificationsUrl": { + "message": "Varslingstjenerens URL" + }, + "iconsUrl": { + "message": "Ikonenes tjenernettadresse" + }, + "environmentSaved": { + "message": "Miljø-nettadressene har blitt lagret." + }, + "enableAutoFillOnPageLoad": { + "message": "Aktiver auto-utfylling ved sideinnlastning" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Dersom et innloggingskjema blir oppdaget, utfør automatisk en auto-utfylling når nettstedet lastes inn." + }, + "experimentalFeature": { + "message": "Dette er for øyeblikket en eksperimentell egenskap. Bruk det på din egen risiko." + }, + "defaultAutoFillOnPageLoad": { + "message": "Standard autofyll innstilling for innloggingselementer" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Etter aktivering av auto-utfylling på sidelasser, kan du aktivere eller deaktivere funksjonen for individuelle innloggingselementer. Dette er standardinnstillingen for innloggingselementer som ikke er satt opp separat." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-utfyll på sideinnlastning (hvis aktivert i Alternativer)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Bruk standardinnstillinger" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-utfyll ved innlasting av side" + }, + "autoFillOnPageLoadNo": { + "message": "Ikke fyll automatisk når du laster inn siden" + }, + "commandOpenPopup": { + "message": "Åpne hvelv-vindu" + }, + "commandOpenSidebar": { + "message": "Åpne hvelv i sidepanelet" + }, + "commandAutofillDesc": { + "message": "Auto-utfyll den senest brukte innloggingen til den nåværende nettsiden." + }, + "commandGeneratePasswordDesc": { + "message": "Generer og kopier et nytt tilfeldig passord til utklippstavlen." + }, + "commandLockVaultDesc": { + "message": "Lås hvelvet" + }, + "privateModeWarning": { + "message": "Støtte for privatmodus er eksperimentelt, og noen funksjoner er begrenset." + }, + "customFields": { + "message": "Tilpassede felter" + }, + "copyValue": { + "message": "Kopier verdien" + }, + "value": { + "message": "Verdi" + }, + "newCustomField": { + "message": "Nytt egendefinert felt" + }, + "dragToSort": { + "message": "Dra for å sortere" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Skjult" + }, + "cfTypeBoolean": { + "message": "Boolsk verdi" + }, + "cfTypeLinked": { + "message": "Tilkoblet", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Tilkoblet verdi", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Å klikke utenfor dette oppsprettsvinduet for å sjekke E-postinnboksen din for en verifiseringskoden, vil lukke denne oppspretten. Vil du åpne oppsprettet i et nytt vindu sånn at den ikke lukkes?" + }, + "popupU2fCloseMessage": { + "message": "Denne nettleseren kan ikke behandle U2F-forespørsler i dette popup-vinduet. Vil du åpne denne popupen i et nytt vindu, slik at du kan logge deg på med U2F?" + }, + "disableFavicon": { + "message": "Skru av nettstedsikoner" + }, + "disableFaviconDesc": { + "message": "Nettstedsikoner sørger for et gjenkjennelig bilde ved siden av hver innloggingsgjenstand i hvelvet ditt." + }, + "disableBadgeCounter": { + "message": "Deaktiver Badge Teller" + }, + "disableBadgeCounterDesc": { + "message": "Bade-teller indikerer hvor mange innlogginger du har for den nåværende siden i hvelvet ditt." + }, + "cardholderName": { + "message": "Kortholderens navn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Merke" + }, + "expirationMonth": { + "message": "Utløpsmåned" + }, + "expirationYear": { + "message": "Utløpsår" + }, + "expiration": { + "message": "Utløp" + }, + "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" + }, + "securityCode": { + "message": "Sikkerhetskode" + }, + "ex": { + "message": "f.eks." + }, + "title": { + "message": "Tittel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Frøken" + }, + "dr": { + "message": "Dr." + }, + "firstName": { + "message": "Fornavn" + }, + "middleName": { + "message": "Mellomnavn" + }, + "lastName": { + "message": "Etternavn" + }, + "fullName": { + "message": "Fullt navn" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Innlogging" + }, + "typeLogins": { + "message": "Innlogginger" + }, + "typeSecureNote": { + "message": "Sikker notis" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "passwordHistory": { + "message": "Passordhistorikk" + }, + "back": { + "message": "Tilbake" + }, + "collections": { + "message": "Samlinger" + }, + "favorites": { + "message": "Favoritter" + }, + "popOutNewWindow": { + "message": "Vis i et nytt vindu" + }, + "refresh": { + "message": "Oppfrisk" + }, + "cards": { + "message": "Kort" + }, + "identities": { + "message": "Identiteter" + }, + "logins": { + "message": "Innlogginger" + }, + "secureNotes": { + "message": "Sikre notiser" + }, + "clear": { + "message": "Tøm", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Domenenavn", + "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" + }, + "toggleCurrentUris": { + "message": "Veksle nåværende URI-er", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Gjeldende URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisasjon", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Typer" + }, + "allItems": { + "message": "Alle objekter" + }, + "noPasswordsInList": { + "message": "Det er ingen passord å liste opp." + }, + "remove": { + "message": "Fjern" + }, + "default": { + "message": "Standard" + }, + "dateUpdated": { + "message": "Oppdatert den", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Passordet ble oppdatert den", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Er du sikker på at du vil bruke alternativet «Aldri»? Ved å angi låsemulighetene til «Aldri» lagres hvelvets krypteringsnøkkel på enheten. Hvis du bruker dette alternativet, bør du sørge for at du holder enheten forsvarlig beskyttet." + }, + "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-kode" + }, + "setYourPinCode": { + "message": "Angi PIN-koden din for å låse opp Bitwarden. PIN-innstillingene tilbakestilles hvis du logger deg helt ut av programmet." + }, + "pinRequired": { + "message": "PIN-kode er påkrevd." + }, + "invalidPin": { + "message": "Ugyldig PIN-kode." + }, + "unlockWithBiometrics": { + "message": "Lås opp med biometri" + }, + "awaitDesktop": { + "message": "Venter på bekreftelse fra skrivebordsprogrammet" + }, + "awaitDesktopDesc": { + "message": "Bekreft bruk av biometri i Bitwardens skrivebordsprogram for å aktivere biometri for nettleseren." + }, + "lockWithMasterPassOnRestart": { + "message": "Lås med hovedpassordet når du starter nettleseren på nytt" + }, + "selectOneCollection": { + "message": "Du må velge minst én samling." + }, + "cloneItem": { + "message": "Klon objektet" + }, + "clone": { + "message": "Klon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "En eller flere av organisasjonens vilkår påvirker generatorinnstillingene dine." + }, + "vaultTimeoutAction": { + "message": "Handling ved tidsavbrudd i hvelvet" + }, + "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": "Slettet objektet permanent" + }, + "restoreItem": { + "message": "Gjenopprett objekt" + }, + "restoreItemConfirmation": { + "message": "Er du sikker på at du vil gjenopprette dette objektet?" + }, + "restoredItem": { + "message": "Gjenopprettet objekt" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Hvis du logger ut, fjerner du all tilgang til hvelvet ditt og krever online godkjenning etter tidsavbrudd. Er du sikker på at du vil bruke denne innstillingen?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bekreftelse på handling ved tidsavbrudd" + }, + "autoFillAndSave": { + "message": "Autofyll og lagre" + }, + "autoFillSuccessAndSavedUri": { + "message": "Autoutfylt objekt og lagret URI" + }, + "autoFillSuccess": { + "message": "Autoutfylt gjenstand" + }, + "setMasterPassword": { + "message": "Angi hovedpassord" + }, + "masterPasswordPolicyInEffect": { + "message": "Ett eller flere av organisasjonens vilkår krever at hovedpassordet oppfyller 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": "Inneholde én eller flere store bokstaver" + }, + "policyInEffectLowercase": { + "message": "Inneholde én eller flere små bokstaver" + }, + "policyInEffectNumbers": { + "message": "Inneholde ett eller flere tall" + }, + "policyInEffectSpecial": { + "message": "Inneholde 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 å merke av denne boksen sier du deg enig i følgende:" + }, + "acceptPoliciesError": { + "message": "Vilkårene for bruk og personvernerklæring er ikke akseptert." + }, + "termsOfService": { + "message": "Vilkår for bruk" + }, + "privacyPolicy": { + "message": "Personvernerklæring" + }, + "hintEqualsPassword": { + "message": "Passordhintet ditt kan ikke være det samme som passordet ditt." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Verifisering av skrivebordssynkronisering" + }, + "desktopIntegrationVerificationText": { + "message": "Kontroller at skrivebordsprogrammet viser dette fingeravtrykket:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Nettleserintegrasjon er ikke aktivert" + }, + "desktopIntegrationDisabledDesc": { + "message": "Nettleserintegrasjon er ikke aktivert i Bitwardens skrivebordsprogram. Du kan aktiver integrasjonen i innstillingene for skrivebordsprogrammet." + }, + "startDesktopTitle": { + "message": "Start Bitwardens skrivebordsprogram." + }, + "startDesktopDesc": { + "message": "Bitwardens skrivebordsprogram må startes før denne funksjonen kan brukes." + }, + "errorEnableBiometricTitle": { + "message": "Kunne ikke aktivere biometrier" + }, + "errorEnableBiometricDesc": { + "message": "Handlingen ble avbrutt av skrivebordsprogrammet" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Skrivebordsprogrammet ugyldiggjorde den sikre kommunikasjonskanalen. Prøv igjen" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Kommunikasjon med skrivebordsprogrammet er avbrutt" + }, + "nativeMessagingWrongUserDesc": { + "message": "Skrivebordsprogrammet er innlogget på en annen konto. Kontroller at både nettleserutvidelsen og skrivebordsprogrammet er innlogget på den samme kontoen." + }, + "nativeMessagingWrongUserTitle": { + "message": "Kontoen eksisterer ikke" + }, + "biometricsNotEnabledTitle": { + "message": "Biometri ikke aktivert" + }, + "biometricsNotEnabledDesc": { + "message": "Biometri i nettleserutvidelsen krever først aktivering i innstillinger i skrivebordsprogrammet." + }, + "biometricsNotSupportedTitle": { + "message": "Biometri støttes ikke" + }, + "biometricsNotSupportedDesc": { + "message": "Biometri i nettleseren støttes ikke på denne enheten." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Tillatelse er ikke gitt" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Uten tillatelse til å kommunisere med Bitwardens skrivebordsprogram kan vi ikke tilgjengeligjøre biometri i nettleserutvidelsen. Prøv igjen." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Feil ved forespørsel om tillatelse" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Denne handlingen kan ikke gjøres i sidestolpen, prøv på nytt i sprettoppvinduet eller popvindu." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "En bedriftsretningslinje påvirker dine eierskapsinnstillinger." + }, + "excludedDomains": { + "message": "Ekskluderte domener" + }, + "excludedDomainsDesc": { + "message": "Bitwarden vil ikke be om å lagre innloggingsdetaljer for disse domenene. Du må oppdatere siden for at endringene skal tre i kraft." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ er ikke et gyldig domene", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "addSend": { + "message": "Legg til Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Tekst" + }, + "sendTypeFile": { + "message": "Fil" + }, + "allSends": { + "message": "Alle Send-er", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maksimalt antall tilganger nådd", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Utløpt" + }, + "pendingDeletion": { + "message": "Venter på sletting" + }, + "passwordProtected": { + "message": "Passord beskyttet" + }, + "copySendLink": { + "message": "Kopier Send-lenke", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Fjern passord" + }, + "delete": { + "message": "Slett" + }, + "removedPassword": { + "message": "Fjernet passord" + }, + "deletedSend": { + "message": "Slettet Send", + "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." + }, + "disabled": { + "message": "Deaktivert" + }, + "removePasswordConfirmation": { + "message": "Er du sikker på at du vil fjerne passordet?" + }, + "deleteSend": { + "message": "Slett Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Er du sikker på at du vil slette denne Send-en?", + "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." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Et vennlig navn for å beskrive dette Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Filen du vil send." + }, + "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." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dager", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Egendefinert" + }, + "maximumAccessCount": { + "message": "Maksimal antall tilganger" + }, + "maximumAccessCountDesc": { + "message": "Hvis satt, vil ikke brukere 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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kopier denne Send-ens lenke til utklippstavlen når den har blitt lagret.", + "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." + }, + "sendHideText": { + "message": "Skjul denne Send-ens tekst som standard.", + "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 tilganger" + }, + "createSend": { + "message": "Lag en ny Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nytt passord" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "For å velge en fil, åpne utvidelsen i sidepanelet (hvis mulig) eller poppe ut til et nytt vindu ved å klikke på dette banneret." + }, + "sendFirefoxFileWarning": { + "message": "For å velge en fil med Firefox må du åpne utvidelsen i sidestolpen eller sprette ut til et nytt vindu ved å klikke på dette banneret." + }, + "sendSafariFileWarning": { + "message": "For å velge en fil med Safari, popp ut i et nytt vindu ved å klikke på dette banneret." + }, + "sendFileCalloutHeader": { + "message": "Før du starter" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Hvis du vil bruke en kalenderstil-datovelger", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "kilkk her", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "å pope ut vinduet.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Utløpsdatoen angitt er ikke gyldig." + }, + "deletionDateIsInvalid": { + "message": "Slettingsdatoen som er gitt er ikke gyldig." + }, + "expirationDateAndTimeRequired": { + "message": "Utløps dato og tid er påkrevd." + }, + "deletionDateAndTimeRequired": { + "message": "Det kreves en slettingsdato og -tid." + }, + "dateParsingError": { + "message": "Det oppstod en feil ved lagring av slettingen og utløpsdatoene." + }, + "hideEmail": { + "message": "Skjul min e-postadresse fra mottakere." + }, + "sendOptionsPolicyInEffect": { + "message": "En eller flere av organisasjons retningslinjer påvirker generatorinnstillingene dine." + }, + "passwordPrompt": { + "message": "Forespørsel om hovedpassord på nytt" + }, + "passwordConfirmation": { + "message": "Superpassord bekreftelse" + }, + "passwordConfirmationDesc": { + "message": "Denne handlingen er beskyttet. For å fortsette, skriv inn superpassordet på nytt for å bekrefte identiteten din." + }, + "emailVerificationRequired": { + "message": "E-postbekreftelse kreves" + }, + "emailVerificationRequiredDesc": { + "message": "Du må bekrefte e-posten din for å bruke denne funksjonen. Du kan bekrefte e-postadressen din i netthvelvet." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Velg mappe …" + }, + "ssoCompleteRegistration": { + "message": "For å fullføre påloggingen med SSO, vennligst velg et hovedpassord for å få tilgang til og beskytte hvelvet ditt." + }, + "hours": { + "message": "Åpningstider" + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Tidsavbruddet ditt for hvelvet overstiger begrensningene som er satt av organisasjonen din." + }, + "vaultExportDisabled": { + "message": "Hvelveksportering er skrudd av" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flere regler i organisasjonsoppsettet forhindrer deg i å eksportere ditt personlige hvelv." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Klarte ikke å identifisere et gyldig skjemaelement. Prøv å inspisere HTML-en i stedet." + }, + "copyCustomFieldNameNotUnique": { + "message": "Ingen unik identifikator ble funnet." + }, + "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 organisasjonen" + }, + "removeMasterPassword": { + "message": "Fjern hovedpassord" + }, + "removedMasterPassword": { + "message": "Hovedpassordet er fjernet." + }, + "leaveOrganizationConfirmation": { + "message": "Er du sikker på at du vil forlate denne organisasjonen?" + }, + "leftOrganization": { + "message": "Du har forlatt organisasjonen." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Eksporterer 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" + } + } + }, + "error": { + "message": "Feil" + }, + "regenerateUsername": { + "message": "Regenerer brukernavn" + }, + "generateUsername": { + "message": "Generer brukernavn" + }, + "usernameType": { + "message": "Brukernavntype" + }, + "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": "Tilfeldig" + }, + "randomWord": { + "message": "Tilfeldig ord" + }, + "websiteName": { + "message": "Navn på nettside" + }, + "whatWouldYouLikeToGenerate": { + "message": "Hva vil du generere?" + }, + "passwordType": { + "message": "Passordtype" + }, + "service": { + "message": "Tjeneste" + } +} diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json new file mode 100644 index 0000000000..17e9bc636c --- /dev/null +++ b/apps/browser/src/_locales/nl/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Gratis wachtwoordbeheer", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Een veilige en gratis oplossing voor wachtwoordbeheer voor al je apparaten.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Annuleren" + }, + "close": { + "message": "Sluiten" + }, + "submit": { + "message": "Versturen" + }, + "emailAddress": { + "message": "E-mailadres" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "Mijn kluis" + }, + "tools": { + "message": "Gereedschap" + }, + "settings": { + "message": "Instellingen" + }, + "currentTab": { + "message": "Huidige tab" + }, + "copyPassword": { + "message": "Wachtwoord kopiëren" + }, + "copyNote": { + "message": "Notitie kopiëren" + }, + "copyUri": { + "message": "URI kopiëren" + }, + "copyUsername": { + "message": "Gebruikersnaam kopiëren" + }, + "copyNumber": { + "message": "Nummer kopiëren" + }, + "copySecurityCode": { + "message": "Beveiligingscode kopiëren" + }, + "autoFill": { + "message": "Auto-invullen" + }, + "generatePasswordCopied": { + "message": "Wachtwoord genereren (op klembord)" + }, + "copyElementIdentifier": { + "message": "Aangepaste veldnaam kopiëren" + }, + "noMatchingLogins": { + "message": "Geen overeenkomstige logins." + }, + "unlockVaultMenu": { + "message": "Ontgrendel je kluis" + }, + "loginToVaultMenu": { + "message": "Log in op je kluis" + }, + "autoFillInfo": { + "message": "Er zijn geen logins beschikbaar om op het huidige browser-tabblad in te vullen." + }, + "addLogin": { + "message": "Login toevoegen" + }, + "addItem": { + "message": "Item toevoegen" + }, + "passwordHint": { + "message": "Wachtwoordhint" + }, + "enterEmailToGetHint": { + "message": "Voer het e-mailadres van je account in om je hoofdwachtwoordhint te ontvangen." + }, + "getMasterPasswordHint": { + "message": "Hoofdwachtwoordhint opvragen" + }, + "continue": { + "message": "Doorgaan" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Hoofdwachtwoord wijzigen" + }, + "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." + }, + "twoStepLogin": { + "message": "Tweestapsaanmelding" + }, + "logOut": { + "message": "Uitloggen" + }, + "about": { + "message": "Over" + }, + "version": { + "message": "Versie" + }, + "save": { + "message": "Opslaan" + }, + "move": { + "message": "Verplaatsen" + }, + "addFolder": { + "message": "Map toevoegen" + }, + "name": { + "message": "Naam" + }, + "editFolder": { + "message": "Map bewerken" + }, + "deleteFolder": { + "message": "Map verwijderen" + }, + "folders": { + "message": "Mappen" + }, + "noFolders": { + "message": "Er zijn geen mappen om weer te geven." + }, + "helpFeedback": { + "message": "Hulp en reacties" + }, + "sync": { + "message": "Synchroniseren" + }, + "syncVaultNow": { + "message": "Kluis nu synchroniseren" + }, + "lastSync": { + "message": "Laatste synchronisatie:" + }, + "passGen": { + "message": "Wachtwoordgenerator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatisch sterke, unieke wachtwoorden voor je logins genereren." + }, + "bitWebVault": { + "message": "Bitwarden Webkluis" + }, + "importItems": { + "message": "Items importeren" + }, + "select": { + "message": "Selecteren" + }, + "generatePassword": { + "message": "Wachtwoord genereren" + }, + "regeneratePassword": { + "message": "Opnieuw genereren" + }, + "options": { + "message": "Opties" + }, + "length": { + "message": "Lengte" + }, + "uppercase": { + "message": "Hoofdletters (A-Z)" + }, + "lowercase": { + "message": "Kleine letters (a-z)" + }, + "numbers": { + "message": "Cijfers (0-9)" + }, + "specialCharacters": { + "message": "Speciale tekens (!@#$%^&*)" + }, + "numWords": { + "message": "Aantal woorden" + }, + "wordSeparator": { + "message": "Scheidingsteken" + }, + "capitalize": { + "message": "Beginhoofdletters", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Cijfer toevoegen" + }, + "minNumbers": { + "message": "Minimum aantal cijfers" + }, + "minSpecial": { + "message": "Minimum aantal speciale tekens" + }, + "avoidAmbChar": { + "message": "Dubbelzinnige tekens vermijden" + }, + "searchVault": { + "message": "Kluis doorzoeken" + }, + "edit": { + "message": "Bewerken" + }, + "view": { + "message": "Weergeven" + }, + "noItemsInList": { + "message": "Er zijn geen items om weer te geven." + }, + "itemInformation": { + "message": "Item" + }, + "username": { + "message": "Gebruikersnaam" + }, + "password": { + "message": "Wachtwoord" + }, + "passphrase": { + "message": "Wachtwoordzin" + }, + "favorite": { + "message": "Favoriet" + }, + "notes": { + "message": "Notities" + }, + "note": { + "message": "Notitie" + }, + "editItem": { + "message": "Item bewerken" + }, + "folder": { + "message": "Map" + }, + "deleteItem": { + "message": "Item verwijderen" + }, + "viewItem": { + "message": "Item weergeven" + }, + "launch": { + "message": "Starten" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Zichtbaarheid wisselen" + }, + "manage": { + "message": "Beheren" + }, + "other": { + "message": "Overig" + }, + "rateExtension": { + "message": "Deze extensie beoordelen" + }, + "rateExtensionDesc": { + "message": "Je kunt ons helpen door een goede recensie achter te laten!" + }, + "browserNotSupportClipboard": { + "message": "Je webbrowser ondersteunt kopiëren naar plakbord niet. Kopieer handmatig." + }, + "verifyIdentity": { + "message": "Identiteit verifiëren" + }, + "yourVaultIsLocked": { + "message": "Je kluis is vergrendeld. Bevestig je identiteit 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" + }, + "vaultTimeout": { + "message": "Time-out van de kluis" + }, + "lockNow": { + "message": "Nu vergrendelen" + }, + "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" + }, + "onLocked": { + "message": "Bij systeemvergrendeling" + }, + "onRestart": { + "message": "Bij herstart van de browser" + }, + "never": { + "message": "Nooit" + }, + "security": { + "message": "Beveiliging" + }, + "errorOccurred": { + "message": "Er is een fout opgetreden" + }, + "emailRequired": { + "message": "E-mailadres is vereist." + }, + "invalidEmail": { + "message": "Ongeldig e-mailadres." + }, + "masterPassRequired": { + "message": "Hoofdwachtwoord is vereist." + }, + "masterPassLength": { + "message": "Hoofdwachtwoord moet minstens 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." + }, + "verificationCodeRequired": { + "message": "Verificatiecode is vereist." + }, + "invalidVerificationCode": { + "message": "Ongeldige verificatiecode" + }, + "valueCopied": { + "message": "$VALUE$ gekopieerd", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Automatisch invullen mislukt; kopieer en plak je inloggegevens handmatig." + }, + "loggedOut": { + "message": "Uitgelogd" + }, + "loginExpired": { + "message": "Je inlogsessie is verlopen." + }, + "logOutConfirmation": { + "message": "Weet je zeker dat je wilt uitloggen?" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nee" + }, + "unexpectedError": { + "message": "Er is een onverwachte fout opgetreden." + }, + "nameRequired": { + "message": "Naam is vereist." + }, + "addedFolder": { + "message": "Map is toegevoegd" + }, + "changeMasterPass": { + "message": "Hoofdwachtwoord wijzigen" + }, + "changeMasterPasswordConfirmation": { + "message": "Je kunt je hoofdwachtwoord wijzigen in de kluis op bitwarden.com. Wil je de website nu bezoeken?" + }, + "twoStepLoginConfirmation": { + "message": "Tweestapsaanmelding beschermt je account door je inlogpoging te bevestigen met een ander apparaat zoals een beveiligingscode, authenticatie-app, SMS, spraakoproep of e-mail. Je kunt Tweestapsaanmelding inschakelen in de webkluis op bitwarden.com. Wil je de website nu bezoeken?" + }, + "editedFolder": { + "message": "Map is bewerkt" + }, + "deleteFolderConfirmation": { + "message": "Weet je zeker dat je deze map wilt verwijderen?" + }, + "deletedFolder": { + "message": "Map is verwijderd" + }, + "gettingStartedTutorial": { + "message": "Aan-de-slag-handleiding" + }, + "gettingStartedTutorialVideo": { + "message": "Bekijk onze aan-de-slag-handleiding om te leren hoe je het meeste haalt uit de browserextensie." + }, + "syncingComplete": { + "message": "Synchronisatie voltooid" + }, + "syncingFailed": { + "message": "Synchronisatie mislukt" + }, + "passwordCopied": { + "message": "Wachtwoord gekopieerd" + }, + "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" + }, + "addedItem": { + "message": "Item is toegevoegd" + }, + "editedItem": { + "message": "Item is bewerkt" + }, + "deleteItemConfirmation": { + "message": "Weet je zeker dat je dit naar de prullenbak wilt verplaatsen?" + }, + "deletedItem": { + "message": "Item is verwijderd" + }, + "overwritePassword": { + "message": "Wachtwoord overschrijven" + }, + "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?" + }, + "searchFolder": { + "message": "Map doorzoeken" + }, + "searchCollection": { + "message": "Verzameling doorzoeken" + }, + "searchType": { + "message": "Categorie doorzoeken" + }, + "noneFolder": { + "message": "Geen map", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Melding bij nieuwe login uitschakelen" + }, + "addLoginNotificationDesc": { + "message": "\"Melding bij nieuwe login\" vraagt automatisch om nieuwe sites in de kluis op te slaan wanneer je ergens voor de eerste keer inlogt." + }, + "dontShowCardsCurrentTab": { + "message": "Kaarten verbergen op tab" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Kaartitems uit je kluis staan op de pagina 'Huidige Tab' om automatisch invullen te vereenvoudigen." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Identiteiten verbergen op tab" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identiteitsitems uit je kluis staan op de pagina 'Huidige Tab' om automatisch invullen te vereenvoudigen." + }, + "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." + }, + "notificationAddDesc": { + "message": "Moet Bitwarden dit wachtwoord voor je onthouden?" + }, + "notificationAddSave": { + "message": "Ja, nu opslaan" + }, + "disableChangedPasswordNotification": { + "message": "Melding gewijzigd wachtwoord uitschakelen" + }, + "disableChangedPasswordNotificationDesc": { + "message": "De \"Melding gewijzigd wachtwoord\" stelt automatisch voor om een wachtwoord in je kluis bij te werken wanneer het op een website is gewijzigd." + }, + "notificationChangeDesc": { + "message": "Wilt je dit wachtwoord in Bitwarden bijwerken?" + }, + "notificationChangeSave": { + "message": "Ja, nu bijwerken" + }, + "disableContextMenuItem": { + "message": "Contextmenu-opties uitschakelen" + }, + "disableContextMenuItemDesc": { + "message": "Contextmenu-opties bieden snelle toegang tot de wachtwoordgenerator en logins voor de website in de huidige tab." + }, + "defaultUriMatchDetection": { + "message": "Standaard URI-overeenkomstdetectie", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Kies de standaardmethode voor detectie van URI-overeenkomsten voor logins bij acties, zoals automatisch invullen." + }, + "theme": { + "message": "Thema" + }, + "themeDesc": { + "message": "Het kleurenthema van de toepassing wijzigen." + }, + "dark": { + "message": "Donker", + "description": "Dark color" + }, + "light": { + "message": "Licht", + "description": "Light color" + }, + "solarizedDark": { + "message": "Overbelicht donker", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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 kunt een versleutelde export dus niet in een ander account importeren." + }, + "exportMasterPassword": { + "message": "Voer je hoofdwachtwoord in om de kluisgegevens te exporteren." + }, + "shared": { + "message": "Gedeeld" + }, + "learnOrg": { + "message": "Meer over organisaties" + }, + "learnOrgConfirmation": { + "message": "Door een organisatie te gebruiken in Bitwarden kun je kluis-items delen met anderen. Wil je de website van bitwarden.com bezoeken voor meer informatie?" + }, + "moveToOrganization": { + "message": "Naar organisatie verplaatsen" + }, + "share": { + "message": "Delen" + }, + "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." + }, + "learnMore": { + "message": "Meer informatie" + }, + "authenticatorKeyTotp": { + "message": "Authenticatiecode (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verificatiecode (TOTP)" + }, + "copyVerificationCode": { + "message": "Verificatiecode kopiëren" + }, + "attachments": { + "message": "Bijlagen" + }, + "deleteAttachment": { + "message": "Bijlage verwijderen" + }, + "deleteAttachmentConfirmation": { + "message": "Weet je zeker dat je deze bijlage wilt verwijderen?" + }, + "deletedAttachment": { + "message": "Bijlage is verwijderd" + }, + "newAttachment": { + "message": "Nieuwe bijlage toevoegen" + }, + "noAttachments": { + "message": "Geen bijlagen." + }, + "attachmentSaved": { + "message": "De bijlage is opgeslagen." + }, + "file": { + "message": "Bestand" + }, + "selectFile": { + "message": "Selecteer een bestand." + }, + "maxFileSize": { + "message": "Maximale bestandsgrootte is 500 MB." + }, + "featureUnavailable": { + "message": "Functionaliteit niet beschikbaar" + }, + "updateKey": { + "message": "Je kunt deze functie pas gebruiken als je je encryptiesleutel bijwerkt." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB versleutelde opslag voor bijlagen." + }, + "ppremiumSignUpTwoStep": { + "message": "Extra opties voor tweestapsaanmelding zoals YubiKey, FIDO U2F en Duo." + }, + "ppremiumSignUpReports": { + "message": "Wachtwoordhygiëne, gezondheid van je account en datalekken om je kluis veilig te houden." + }, + "ppremiumSignUpTotp": { + "message": "TOTP-verificatiecodegenerator (2FA) voor logins in uw kluis." + }, + "ppremiumSignUpSupport": { + "message": "Klantondersteuning met hoge prioriteit." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "TOTP automatisch kopiëren uitschakelen" + }, + "disableAutoTotpCopyDesc": { + "message": "Als je login gekoppeld is met een authenticatiecode, wordt de TOTP-verificatiecode automatisch naar het klembord gekopieerd bij het automatisch invullen van de login." + }, + "disableAutoBiometricsPrompt": { + "message": "Bij opstarten niet om biometrisch ontgrendelen vragen" + }, + "premiumRequired": { + "message": "Premium is vereist" + }, + "premiumRequiredDesc": { + "message": "Je hebt een Premium-abonnement nodig om deze functie te gebruiken." + }, + "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." + }, + "webAuthnNewTab": { + "message": "Ga door met WebAuthn 2FA-verificatie in de nieuwe tab." + }, + "webAuthnNewTabOpen": { + "message": "Nieuwe tab openen" + }, + "webAuthnAuthenticate": { + "message": "Authenticeer WebAuthn" + }, + "loginUnavailable": { + "message": "Login niet beschikbaar" + }, + "noTwoStepProviders": { + "message": "Dit account heeft tweestapsaanmelding ingeschakeld, maar deze webbrowser ondersteunt geen van de geconfigureerde aanbieders." + }, + "noTwoStepProviders2": { + "message": "Gebruik een ondersteunde webbrowser (zoals Chrome) en/of voeg extra aanbieders toe die beter worden ondersteund in webbrowsers (zoals een authenticator-app)." + }, + "twoStepOptions": { + "message": "Opties voor tweestapsaanmelding" + }, + "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 uw 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." + }, + "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 omgeving-URL's zijn opgeslagen." + }, + "enableAutoFillOnPageLoad": { + "message": "Automatisch invullen bij laden van pagina" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Als een inlogformulier wordt gedetecteerd, dan worden de inloggegevens automatisch ingevuld." + }, + "experimentalFeature": { + "message": "Dit is momenteel een experimentele functie; gebruik hiervan is op eigen risico." + }, + "defaultAutoFillOnPageLoad": { + "message": "Standaardinstelling voor automatisch invullen login-items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Na het inschakelen van Automatisch invullen bij laden van pagina, kun je de functie voor individuele inlogitems in- of uitschakelen. Dit is de standaardinstelling voor inlogitems die niet afzonderlijk zijn geconfigureerd." + }, + "itemAutoFillOnPageLoad": { + "message": "Automatisch invullen bij laden van pagina (als ingeschakeld in Opties)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Standaardinstelling gebruiken" + }, + "autoFillOnPageLoadYes": { + "message": "Automatisch invullen bij laden van pagina" + }, + "autoFillOnPageLoadNo": { + "message": "Niet Automatisch invullen bij laden van pagina" + }, + "commandOpenPopup": { + "message": "Open kluis in pop-up" + }, + "commandOpenSidebar": { + "message": "Open kluis in zijbalk" + }, + "commandAutofillDesc": { + "message": "Vul automatisch de laatst gebruikte login in voor de huidige website" + }, + "commandGeneratePasswordDesc": { + "message": "Genereer en kopieer een nieuw willekeurig wachtwoord naar het klembord." + }, + "commandLockVaultDesc": { + "message": "Kluis vergrendelen" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Aangepaste velden" + }, + "copyValue": { + "message": "Waarde kopiëren" + }, + "value": { + "message": "Waarde" + }, + "newCustomField": { + "message": "Nieuw aangepast veld" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Gekoppelde waarde", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Als je buiten het pop-upvenster klikt om je e-mail te controleren op een verificatiecode, dan zal de pop-up sluiten. Wil je het pop-upvenster openen in een nieuw scherm, zodat het niet wordt gesloten?" + }, + "popupU2fCloseMessage": { + "message": "Deze browser kan U2F-verzoeken niet verwerken in dit popupvenster. Wilt je deze pop-up openen in een nieuw venster zodat je kunt inloggen met U2F?" + }, + "disableFavicon": { + "message": "Websitepictogrammen uitschakelen" + }, + "disableFaviconDesc": { + "message": "Websitepictogrammen geven een herkenbare afbeelding naast elk item in je kluis weer." + }, + "disableBadgeCounter": { + "message": "Badgeteller uitschakelen" + }, + "disableBadgeCounterDesc": { + "message": "De badgeteller geeft aan hoeveel logins je in je kluis hebt voor de huidige pagina." + }, + "cardholderName": { + "message": "Naam kaarthouder" + }, + "number": { + "message": "Kaartummer" + }, + "brand": { + "message": "Merk" + }, + "expirationMonth": { + "message": "Vervalmaand" + }, + "expirationYear": { + "message": "Vervaljaar" + }, + "expiration": { + "message": "Vervaldatum" + }, + "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" + }, + "securityCode": { + "message": "Beveiligingscode" + }, + "ex": { + "message": "bijv." + }, + "title": { + "message": "Aanhef" + }, + "mr": { + "message": "Dhr." + }, + "mrs": { + "message": "Mevr." + }, + "ms": { + "message": "Mej." + }, + "dr": { + "message": "Dr." + }, + "firstName": { + "message": "Voornaam" + }, + "middleName": { + "message": "Tweede naam" + }, + "lastName": { + "message": "Achternaam" + }, + "fullName": { + "message": "Volledige naam" + }, + "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" + }, + "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" + }, + "type": { + "message": "Categorie" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Veilige notitie" + }, + "typeCard": { + "message": "Kaart" + }, + "typeIdentity": { + "message": "Identiteit" + }, + "passwordHistory": { + "message": "Geschiedenis" + }, + "back": { + "message": "Terug" + }, + "collections": { + "message": "Verzamelingen" + }, + "favorites": { + "message": "Favorieten" + }, + "popOutNewWindow": { + "message": "Openen in een nieuw venster" + }, + "refresh": { + "message": "Verversen" + }, + "cards": { + "message": "Kaarten" + }, + "identities": { + "message": "Identiteiten" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Veilige notities" + }, + "clear": { + "message": "Wissen", + "description": "To clear something out. example: To clear browser history." + }, + "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 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" + }, + "toggleCurrentUris": { + "message": "Huidige URI's wisselen", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Huidige URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisatie", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Categorieën" + }, + "allItems": { + "message": "Alle items" + }, + "noPasswordsInList": { + "message": "Er zijn geen wachtwoorden om weer te geven." + }, + "remove": { + "message": "Verwijderen" + }, + "default": { + "message": "Standaard" + }, + "dateUpdated": { + "message": "Bijgewerkt", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Wachtwoord bijgewerkt", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Weet je zeker dat je de optie \"Nooit\" wilt gebruiken? Met de vergrendelingsoptie \"Nooit\" wordt de coderingssleutel van je kluis op je apparaat bewaard. Als je deze optie gebruikt, moet je ervoor zorgen dat je je apparaat naar behoren beschermt." + }, + "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 is vereist." + }, + "invalidPin": { + "message": "Ongeldige PIN-code." + }, + "unlockWithBiometrics": { + "message": "Biometrisch ontgrendelen" + }, + "awaitDesktop": { + "message": "Wacht op bevestiging van de desktop" + }, + "awaitDesktopDesc": { + "message": "Bevestig het gebruik van biometrie in de Bitwarden-desktopapplicatie om biometrie voor de browser in te schakelen." + }, + "lockWithMasterPassOnRestart": { + "message": "Vergrendelen met hoofdwachtwoord bij herstart browser" + }, + "selectOneCollection": { + "message": "Je moet tenminste één verzameling selecteren." + }, + "cloneItem": { + "message": "Item dupliceren" + }, + "clone": { + "message": "Dupliceren" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen heeft invloed op de instellingen van je generator." + }, + "vaultTimeoutAction": { + "message": "Actie bij time-out" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Automatisch invullen en opslaan" + }, + "autoFillSuccessAndSavedUri": { + "message": "Automatisch gevuld item en opgeslagen URI" + }, + "autoFillSuccess": { + "message": "Automatisch gevuld item" + }, + "setMasterPassword": { + "message": "Hoofdwachtwoord instellen" + }, + "masterPasswordPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen verlangen dat je hoofdwachtwoord voldoet aan:" + }, + "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." + }, + "termsOfService": { + "message": "Algemene voorwaarden" + }, + "privacyPolicy": { + "message": "Privacybeleid" + }, + "hintEqualsPassword": { + "message": "Je wachtwoordhint moet anders zijn dan je wachtwoord." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktopsynchronisatieverificatie" + }, + "desktopIntegrationVerificationText": { + "message": "Controleer of de desktopapplicatie deze vingerafdruk weergeeft: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browserintegratie is niet ingeschakeld" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browserintegratie is niet ingeschakeld in de Bitwarden-desktopapplicatie. Schakel deze optie in de instellingen binnen de desktop-applicatie in." + }, + "startDesktopTitle": { + "message": "Bitwarden-desktopapplicatie opstarten" + }, + "startDesktopDesc": { + "message": "Je moet de Bitwarden-desktopapplicatie starten om deze functie te gebruiken." + }, + "errorEnableBiometricTitle": { + "message": "Kon biometrie niet inschakelen" + }, + "errorEnableBiometricDesc": { + "message": "Actie is geannuleerd door de desktopapplicatie" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "De desktopapplicatie heeft het beveiligde communicatiekanaal ongeldig verklaard. Probeer het opnieuw" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktopcommunicatie onderbroken" + }, + "nativeMessagingWrongUserDesc": { + "message": "De desktopapplicatie is aangemeld bij een ander account. Zorg ervoor dat beide applicaties op hetzelfde account zijn aangemeld." + }, + "nativeMessagingWrongUserTitle": { + "message": "Accounts komt niet overeen" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrie niet ingeschakeld" + }, + "biometricsNotEnabledDesc": { + "message": "Voor browserbiometrie moet je eerst desktopbiometrie inschakelen in de instellingen." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrie niet ondersteund" + }, + "biometricsNotSupportedDesc": { + "message": "Dit apparaat ondersteunt geen browserbiometrie." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Toestemming niet verleend" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Zonder toestemming om te communiceren met de Bitwarden Desktop-applicatie, kunnen we biometrisch inloggen in de browserextensie niet leveren. Probeer het opnieuw." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Fout bij toestemmingsaanvraag" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Deze actie kan niet worden uitgevoerd in de zijbalk, probeer de actie opnieuw in de pop-up of pop-out." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Een organisatiebeleid heeft invloed op je eigendomsopties." + }, + "excludedDomains": { + "message": "Uitgesloten domeinen" + }, + "excludedDomainsDesc": { + "message": "Bitwarden zal voor deze domeinen niet vragen om inloggegevens op te slaan. Je moet de pagina vernieuwen om de wijzigingen toe te passen." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is geen geldig domein", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Sends zoeken", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Send toevoegen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Tekst" + }, + "sendTypeFile": { + "message": "Bestand" + }, + "allSends": { + "message": "Alle Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maximum aantal keren benaderd", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Verlopen" + }, + "pendingDeletion": { + "message": "Wordt verwijderd" + }, + "passwordProtected": { + "message": "Beveiligd met wachtwoord" + }, + "copySendLink": { + "message": "Send-link kopiëren", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Wachtwoord verwijderen" + }, + "delete": { + "message": "Verwijderen" + }, + "removedPassword": { + "message": "Verwijderd wachtwoord" + }, + "deletedSend": { + "message": "Verwijderde 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." + }, + "disabled": { + "message": "Uitgeschakeld" + }, + "removePasswordConfirmation": { + "message": "Weet je zeker dat je het wachtwoord wilt verwijderen?" + }, + "deleteSend": { + "message": "Send verwijderen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Send bewerken", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Een vriendelijke naam om deze Send te beschrijven.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Het bestand dat je wilt versturen." + }, + "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." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dagen", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Aangepast" + }, + "maximumAccessCount": { + "message": "Maximum toegangsaantal" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kopieer de link van deze Send bij het opslaan naar het klembord.", + "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." + }, + "sendHideText": { + "message": "De tekst van deze Send standaard verbergen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Huidige toegangsaantal" + }, + "createSend": { + "message": "Nieuwe Send aanmaken", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nieuw wachtwoord" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Om een bestand te kiezen open je de extensie in de zijbalk (indien mogelijk) of pop-out naar een nieuw venster door op deze banner te klikken." + }, + "sendFirefoxFileWarning": { + "message": "Om een bestand te kiezen met Firefox, open je de extensie in de zijbalk of als pop-up in een nieuw venster door op deze banner te klikken." + }, + "sendSafariFileWarning": { + "message": "Om een bestand te kiezen met Safari, open je een nieuw pop-up-venster door op deze banner te klikken." + }, + "sendFileCalloutHeader": { + "message": "Voor je begint" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Om een datumkiezer in kalenderstijl te gebruiken", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klik hier", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "om een pop-up te openen.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "De opgegeven vervaldatum is niet geldig." + }, + "deletionDateIsInvalid": { + "message": "De opgegeven verwijderdatum is niet geldig." + }, + "expirationDateAndTimeRequired": { + "message": "Een vervaldatum en -tijd zijn vereist." + }, + "deletionDateAndTimeRequired": { + "message": "Een verwijderingsdatum en -tijd zijn vereist." + }, + "dateParsingError": { + "message": "Er is een fout opgetreden bij het opslaan van je verwijder- en vervaldatum." + }, + "hideEmail": { + "message": "Verberg mijn e-mailadres voor ontvangers." + }, + "sendOptionsPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen heeft invloed op de mogelijkheden van je Send." + }, + "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." + }, + "emailVerificationRequired": { + "message": "E-mailverificatie vereist" + }, + "emailVerificationRequiredDesc": { + "message": "Je moet je e-mailadres verifiëren om deze functie te gebruiken. Je kunt je e-mailadres verifiëren in de kluis." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Map selecteren..." + }, + "ssoCompleteRegistration": { + "message": "Voor het inloggen met SSO moet je een hoofdwachtwoord instellen voor toegang tot en bescherming van je kluis." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Je kluis time-out is hoger dan het maximum van jouw organisatie." + }, + "vaultExportDisabled": { + "message": "Kluis exporteren uitgeschakeld" + }, + "personalVaultExportPolicyInEffect": { + "message": "Organisatiebeleid voorkomt dat je je persoonlijke kluis exporteert." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Kan geen geldig formulierelement identificeren. Probeer in plaats daarvan de HTML te inspecteren." + }, + "copyCustomFieldNameNotUnique": { + "message": "Geen unieke id gevonden." + }, + "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" + }, + "removeMasterPassword": { + "message": "Hoofdwachtwoord verwijderen" + }, + "removedMasterPassword": { + "message": "Hoofdwachtwoord verwijderd." + }, + "leaveOrganizationConfirmation": { + "message": "Weet je zeker dat je deze organisatie wilt verlaten?" + }, + "leftOrganization": { + "message": "Je hebt de organisatie verlaten." + }, + "toggleCharacterCount": { + "message": "Tekentelling in-/uitschakelen" + }, + "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" + } + } + }, + "error": { + "message": "Fout" + }, + "regenerateUsername": { + "message": "Gebruikersnaam opnieuw genereren" + }, + "generateUsername": { + "message": "Gebruikersnamen genereren" + }, + "usernameType": { + "message": "Type gebruikersnaam" + }, + "plusAddressedEmail": { + "message": "E-mailadres-met-plus", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Wat wil je genereren?" + }, + "passwordType": { + "message": "Type wachtwoord" + }, + "service": { + "message": "Dienst" + } +} diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json new file mode 100644 index 0000000000..c0fc9f75c3 --- /dev/null +++ b/apps/browser/src/_locales/nn/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "login": { + "message": "Log In" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email Address" + }, + "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)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "Copy Security Code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "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." + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "Log Out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Add Folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit Folder" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "Options" + }, + "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" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favorite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "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" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "lockNow": { + "message": "Lock Now" + }, + "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" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Browser Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "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" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "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?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Save" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Update" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Shared" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Share" + }, + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "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" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "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" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json new file mode 100644 index 0000000000..64351f4ac0 --- /dev/null +++ b/apps/browser/src/_locales/pl/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - darmowy menedżer haseł", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bezpieczny i darmowy menedżer haseł dla wszystkich Twoich urządzeń.", + "description": "Extension description" + }, + "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ę" + }, + "enterpriseSingleSignOn": { + "message": "Logowanie jednokrotne" + }, + "cancel": { + "message": "Anuluj" + }, + "close": { + "message": "Zamknij" + }, + "submit": { + "message": "Wyślij" + }, + "emailAddress": { + "message": "Adres e-mail" + }, + "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)" + }, + "tab": { + "message": "Karta" + }, + "myVault": { + "message": "Mój sejf" + }, + "tools": { + "message": "Narzędzia" + }, + "settings": { + "message": "Ustawienia" + }, + "currentTab": { + "message": "Obecna karta" + }, + "copyPassword": { + "message": "Kopiuj hasło" + }, + "copyNote": { + "message": "Kopiuj notatkę" + }, + "copyUri": { + "message": "Kopiuj URI" + }, + "copyUsername": { + "message": "Kopiuj nazwę użytkownika" + }, + "copyNumber": { + "message": "Kopiuj numer" + }, + "copySecurityCode": { + "message": "Kopiuj kod zabezpieczający" + }, + "autoFill": { + "message": "Autouzupełnianie" + }, + "generatePasswordCopied": { + "message": "Generuj hasło (do schowka)" + }, + "copyElementIdentifier": { + "message": "Kopiuj nazwę pola niestandardowego" + }, + "noMatchingLogins": { + "message": "Brak pasujących danych logowania." + }, + "unlockVaultMenu": { + "message": "Odblokuj sejf" + }, + "loginToVaultMenu": { + "message": "Zaloguj się do sejfu" + }, + "autoFillInfo": { + "message": "Brak dostępnych danych logowania do autouzupełnienia dla obecnej karty przeglądarki." + }, + "addLogin": { + "message": "Dodaj dane logowania" + }, + "addItem": { + "message": "Dodaj element" + }, + "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" + }, + "continue": { + "message": "Kontynuuj" + }, + "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ć." + }, + "account": { + "message": "Konto" + }, + "changeMasterPassword": { + "message": "Zmień hasło główne" + }, + "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." + }, + "twoStepLogin": { + "message": "Logowanie dwustopniowe" + }, + "logOut": { + "message": "Wyloguj się" + }, + "about": { + "message": "O aplikacji" + }, + "version": { + "message": "Wersja" + }, + "save": { + "message": "Zapisz" + }, + "move": { + "message": "Przenieś" + }, + "addFolder": { + "message": "Dodaj folder" + }, + "name": { + "message": "Nazwa" + }, + "editFolder": { + "message": "Edytuj folder" + }, + "deleteFolder": { + "message": "Usuń folder" + }, + "folders": { + "message": "Foldery" + }, + "noFolders": { + "message": "Brak folderów do wyświetlenia." + }, + "helpFeedback": { + "message": "Pomoc i opinie" + }, + "sync": { + "message": "Synchronizacja" + }, + "syncVaultNow": { + "message": "Synchronizuj sejf" + }, + "lastSync": { + "message": "Ostatnia synchronizacja:" + }, + "passGen": { + "message": "Generator hasła" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatycznie wygeneruj silne, unikatowe hasła dla swoich loginów." + }, + "bitWebVault": { + "message": "Sejf internetowy Bitwarden" + }, + "importItems": { + "message": "Importuj elementy" + }, + "select": { + "message": "Wybierz" + }, + "generatePassword": { + "message": "Generuj hasło" + }, + "regeneratePassword": { + "message": "Wygeneruj hasło ponownie" + }, + "options": { + "message": "Opcje" + }, + "length": { + "message": "Długość" + }, + "uppercase": { + "message": "Wielkie litery (A-Z)" + }, + "lowercase": { + "message": "Małe litery (a-z)" + }, + "numbers": { + "message": "Cyfry (0-9)" + }, + "specialCharacters": { + "message": "Znaki specjalne (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Minimalna liczba cyfr" + }, + "minSpecial": { + "message": "Minimalna liczba znaków specjalnych" + }, + "avoidAmbChar": { + "message": "Unikaj niejednoznacznych znaków" + }, + "searchVault": { + "message": "Szukaj w sejfie" + }, + "edit": { + "message": "Edytuj" + }, + "view": { + "message": "Zobacz" + }, + "noItemsInList": { + "message": "Brak elementów." + }, + "itemInformation": { + "message": "Informacje o elemencie" + }, + "username": { + "message": "Nazwa użytkownika" + }, + "password": { + "message": "Hasło" + }, + "passphrase": { + "message": "Hasło wyrazowe" + }, + "favorite": { + "message": "Ulubione" + }, + "notes": { + "message": "Notatki" + }, + "note": { + "message": "Notatka" + }, + "editItem": { + "message": "Edytuj element" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Usuń element" + }, + "viewItem": { + "message": "Zobacz element" + }, + "launch": { + "message": "Uruchom" + }, + "website": { + "message": "Strona" + }, + "toggleVisibility": { + "message": "Pokaż / Ukryj" + }, + "manage": { + "message": "Zarządzaj" + }, + "other": { + "message": "Inne" + }, + "rateExtension": { + "message": "Oceń rozszerzenie" + }, + "rateExtensionDesc": { + "message": "Wesprzyj nas pozytywną opinią!" + }, + "browserNotSupportClipboard": { + "message": "Przeglądarka nie obsługuje łatwego kopiowania schowka. Skopiuj element ręcznie." + }, + "verifyIdentity": { + "message": "Zweryfikuj tożsamość" + }, + "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" + }, + "vaultTimeout": { + "message": "Blokowanie sejfu" + }, + "lockNow": { + "message": "Zablokuj" + }, + "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" + }, + "onLocked": { + "message": "Po zablokowaniu komputera" + }, + "onRestart": { + "message": "Po restarcie przeglądarki" + }, + "never": { + "message": "Nigdy" + }, + "security": { + "message": "Zabezpieczenia" + }, + "errorOccurred": { + "message": "Wystąpił błąd" + }, + "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." + }, + "verificationCodeRequired": { + "message": "Kod weryfikacyjny jest wymagany." + }, + "invalidVerificationCode": { + "message": "Kod weryfikacyjny jest nieprawidłowy" + }, + "valueCopied": { + "message": "Skopiowano $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Nie można zastosować autouzupełnienia na tej stronie. Skopiuj i wklej informacje ręcznie." + }, + "loggedOut": { + "message": "Wylogowano" + }, + "loginExpired": { + "message": "Twoja sesja wygasła." + }, + "logOutConfirmation": { + "message": "Czy na pewno chcesz się wylogować?" + }, + "yes": { + "message": "Tak" + }, + "no": { + "message": "Nie" + }, + "unexpectedError": { + "message": "Wystąpił nieoczekiwany błąd." + }, + "nameRequired": { + "message": "Nazwa jest wymagana." + }, + "addedFolder": { + "message": "Folder został dodany" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Folder został zaktualizowany" + }, + "deleteFolderConfirmation": { + "message": "Czy na pewno chcesz usunąć ten folder?" + }, + "deletedFolder": { + "message": "Folder został usunięty" + }, + "gettingStartedTutorial": { + "message": "Samouczek" + }, + "gettingStartedTutorialVideo": { + "message": "Obejrzyj samouczek, aby dowiedzieć się, jak najlepiej wykorzystać rozszerzenie przeglądarki." + }, + "syncingComplete": { + "message": "Synchronizacja została zakończona" + }, + "syncingFailed": { + "message": "Synchronizacja nie powiodła się" + }, + "passwordCopied": { + "message": "Hasło zostało skopiowane" + }, + "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" + }, + "addedItem": { + "message": "Element został dodany" + }, + "editedItem": { + "message": "Element został zaktualizowany" + }, + "deleteItemConfirmation": { + "message": "Czy na pewno chcesz to usunąć?" + }, + "deletedItem": { + "message": "Element został przeniesiony do kosza" + }, + "overwritePassword": { + "message": "Zastąp hasło" + }, + "overwritePasswordConfirmation": { + "message": "Czy na pewno chcesz zastąpić obecne hasło?" + }, + "overwriteUsername": { + "message": "Nadpisz nazwę użytkownika" + }, + "overwriteUsernameConfirmation": { + "message": "Czy na pewno chcesz nadpisać aktualną nazwę użytkownika?" + }, + "searchFolder": { + "message": "Szukaj w folderze" + }, + "searchCollection": { + "message": "Szukaj w kolekcji" + }, + "searchType": { + "message": "Szukaj elementu" + }, + "noneFolder": { + "message": "Nieprzypisane", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Wyłącz powiadomienia automatycznego logowania" + }, + "addLoginNotificationDesc": { + "message": "\"Dodaj powiadomienia logowania\" automatycznie wyświetla monit o zapisanie nowych danych logowania do sejfu przy każdym pierwszym logowaniu." + }, + "dontShowCardsCurrentTab": { + "message": "Nie pokazuj kart w zakładce \"Obecna karta\"" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Karty zapisane w sejfie są wyświetlane w zakładce \"Obecna karta\"." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Nie pokazuj tożsamości w zakładce \"Obecna karta\"" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Tożsamości zapisane w sejfie są wyświetlane w zakładce \"Obecna karta\"." + }, + "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." + }, + "notificationAddDesc": { + "message": "Czy Bitwarden powinien zapisać dla Ciebie to hasło?" + }, + "notificationAddSave": { + "message": "Zapisz" + }, + "disableChangedPasswordNotification": { + "message": "Wyłącz powiadomienie o zmianie hasła" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Powiadomienie o zmianie hasła\" automatycznie zapyta Cię o zaktualizowanie hasła w sejfie za każdym razem, gdy wykryje zmianę hasła na danej stronie." + }, + "notificationChangeDesc": { + "message": "Czy chcesz zaktualizować to hasło w Bitwarden?" + }, + "notificationChangeSave": { + "message": "Zaktualizuj" + }, + "disableContextMenuItem": { + "message": "Wyłącz opcje menu kontekstowego" + }, + "disableContextMenuItemDesc": { + "message": "Opcje menu kontekstowego zapewniają szybki dostęp do generowania haseł oraz do danych logowania dla obecnej karty." + }, + "defaultUriMatchDetection": { + "message": "Domyślne wykrywanie dopasowania", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Wybierz domyślny sposób wykrywania dopasowania adresów dla czynności takich jak autouzupełnianie." + }, + "theme": { + "message": "Motyw" + }, + "themeDesc": { + "message": "Zmień motyw kolorystyczny aplikacji." + }, + "dark": { + "message": "Ciemny", + "description": "Dark color" + }, + "light": { + "message": "Jasny", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Wpisz hasło główne, aby wyeksportować dane z sejfu." + }, + "shared": { + "message": "Udostępnione" + }, + "learnOrg": { + "message": "Dowiedz się więcej o organizacjach" + }, + "learnOrgConfirmation": { + "message": "Bitwarden pozwala na udostępnianie zawartości sejfu innym osobom za pośrednictwem organizacji. Czy chcesz odwiedzić stronę bitwarden.com, aby dowiedzieć się więcej?" + }, + "moveToOrganization": { + "message": "Przenieś do organizacji" + }, + "share": { + "message": "Udostępnij" + }, + "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." + }, + "learnMore": { + "message": "Dowiedz się więcej" + }, + "authenticatorKeyTotp": { + "message": "Klucz uwierzytelniający (TOTP)" + }, + "verificationCodeTotp": { + "message": "Kod weryfikacyjny (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiuj kod weryfikacyjny" + }, + "attachments": { + "message": "Załączniki" + }, + "deleteAttachment": { + "message": "Usuń załącznik" + }, + "deleteAttachmentConfirmation": { + "message": "Czy na pewno chcesz usunąć ten załącznik?" + }, + "deletedAttachment": { + "message": "Załącznik został usunięty" + }, + "newAttachment": { + "message": "Dodaj załącznik" + }, + "noAttachments": { + "message": "Brak załączników." + }, + "attachmentSaved": { + "message": "Załącznik został zapisany." + }, + "file": { + "message": "Plik" + }, + "selectFile": { + "message": "Wybierz plik." + }, + "maxFileSize": { + "message": "Maksymalny rozmiar pliku to 500 MB." + }, + "featureUnavailable": { + "message": "Funkcja jest niedostępna" + }, + "updateKey": { + "message": "Nie możesz używać tej funkcji, dopóki nie zaktualizujesz klucza szyfrowania." + }, + "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": "Odśwież konto Premium" + }, + "premiumNotCurrentMember": { + "message": "Nie posiadasz obecnie konta Premium." + }, + "premiumSignUpAndGet": { + "message": "Zarejestruj konto Premium, aby otrzymać:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB miejsca na zaszyfrowane załączniki." + }, + "ppremiumSignUpTwoStep": { + "message": "Dodatkowe opcje logowania dwustopniowego, takie jak klucze YubiKey, FIDO U2F oraz Duo." + }, + "ppremiumSignUpReports": { + "message": "Raporty bezpieczeństwa haseł, stanu konta i raporty wycieków danych, aby Twoje dane były bezpieczne." + }, + "ppremiumSignUpTotp": { + "message": "Generator kodów weryfikacyjnych TOTP (2FA) dla danych logowania w Twoim sejfie." + }, + "ppremiumSignUpSupport": { + "message": "Priorytetowe wsparcie klienta." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Wyłącz automatyczne kopiowanie kodu TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Jeśli dane logowania posiadają dołączony klucz uwierzytelniający TOTP, kod weryfikacyjny jest automatycznie kopiowany do schowka przy każdym autouzupełnianiu danych logowania." + }, + "disableAutoBiometricsPrompt": { + "message": "Zapamiętaj autoryzację biometryczną" + }, + "premiumRequired": { + "message": "Konto Premium jest wymagane" + }, + "premiumRequiredDesc": { + "message": "Konto Premium jest wymagane, aby skorzystać z tej funkcji." + }, + "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." + }, + "webAuthnNewTab": { + "message": "Kontynuuj logowanie dwustopniowe WebAuthn w nowej karcie." + }, + "webAuthnNewTabOpen": { + "message": "Otwórz nową kartę" + }, + "webAuthnAuthenticate": { + "message": "Uwierzytelnianie WebAuthn" + }, + "loginUnavailable": { + "message": "Logowanie jest niedostępne" + }, + "noTwoStepProviders": { + "message": "Konto posiada włączoną opcję logowania dwustopniowego, jednak ta przeglądarka nie wspiera żadnego ze skonfigurowanych mechanizmów autoryzacji dwustopniowej." + }, + "noTwoStepProviders2": { + "message": "Proszę użyć obsługiwanej przeglądarki (takiej jak Chrome) i/lub dodać dodatkowych dostawców, którzy są lepiej wspierani przez przeglądarki internetowe (np. aplikacja uwierzytelniająca)." + }, + "twoStepOptions": { + "message": "Opcje logowania dwustopniowego" + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Włącz autouzupełnianie po załadowaniu strony" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Jeśli zostanie wykryty formularz logowania, automatycznie uzupełnij dane logowania po załadowaniu strony." + }, + "experimentalFeature": { + "message": "Obecnie jest to funkcja eksperymentalna. Używaj na własne ryzyko." + }, + "defaultAutoFillOnPageLoad": { + "message": "Domyślne ustawienie autouzupełniania" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Po włączeniu autouzupełnianiu po załadowaniu strony, możesz włączyć lub wyłączyć tę funkcję dla poszczególnych wpisów." + }, + "itemAutoFillOnPageLoad": { + "message": "Automatycznie uzupełniaj po załadowaniu strony (jeśli włączono w opcjach)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Użyj domyślnego ustawienia" + }, + "autoFillOnPageLoadYes": { + "message": "Automatycznie uzupełniaj po załadowaniu strony" + }, + "autoFillOnPageLoadNo": { + "message": "Nie uzupełniaj automatycznie po załadowaniu strony" + }, + "commandOpenPopup": { + "message": "Otwórz sejf w oknie" + }, + "commandOpenSidebar": { + "message": "Otwórz sejf na pasku bocznym" + }, + "commandAutofillDesc": { + "message": "Autouzupełnianie korzysta z ostatnio używanych danych logowania na tej stronie." + }, + "commandGeneratePasswordDesc": { + "message": "Wygeneruj nowe losowe hasło i skopiuj je do schowka." + }, + "commandLockVaultDesc": { + "message": "Zablokuj sejf" + }, + "privateModeWarning": { + "message": "Obsługa trybu prywatnego jest eksperymentalna, a niektóre funkcje są ograniczone." + }, + "customFields": { + "message": "Pola niestandardowe" + }, + "copyValue": { + "message": "Kopiuj wartość" + }, + "value": { + "message": "Wartość" + }, + "newCustomField": { + "message": "Nowe pole niestandardowe" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Powiązana wartość", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Kliknięcie poza okno, w celu sprawdzenia wiadomość z kodem weryfikacyjnym spowoduje, że zostanie ono zamknięte. Czy chcesz otworzyć nowe okno tak, aby się nie zamknęło?" + }, + "popupU2fCloseMessage": { + "message": "Ta przeglądarka nie może przetworzyć żądania U2F w tym oknie. Czy chcesz otworzyć nowe okno przeglądarki, aby zalogować się przy pomocy klucza U2F?" + }, + "disableFavicon": { + "message": "Wyłącz ikony stron" + }, + "disableFaviconDesc": { + "message": "Wyświetlaj rozpoznawalną ikonę serwisu obok danych logowania w sejfie." + }, + "disableBadgeCounter": { + "message": "Wyłącz licznik logowań" + }, + "disableBadgeCounterDesc": { + "message": "Licznik informuje, ile razy zalogowałeś się na obecnej stronie w sejfie." + }, + "cardholderName": { + "message": "Właściciel karty" + }, + "number": { + "message": "Numer" + }, + "brand": { + "message": "Wydawca" + }, + "expirationMonth": { + "message": "Miesiąc wygaśnięcia" + }, + "expirationYear": { + "message": "Rok wygaśnięcia" + }, + "expiration": { + "message": "Data wygaśnięcia" + }, + "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": "September" + }, + "october": { + "message": "Październik" + }, + "november": { + "message": "Listopad" + }, + "december": { + "message": "Grudzień" + }, + "securityCode": { + "message": "Kod zabezpieczający" + }, + "ex": { + "message": "np." + }, + "title": { + "message": "Tytuł" + }, + "mr": { + "message": "Pan" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Pani" + }, + "dr": { + "message": "Doktor" + }, + "firstName": { + "message": "Imię" + }, + "middleName": { + "message": "Drugie imię" + }, + "lastName": { + "message": "Nazwisko" + }, + "fullName": { + "message": "Imię i nazwisko" + }, + "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" + }, + "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" + }, + "type": { + "message": "Rodzaj" + }, + "typeLogin": { + "message": "Dane logowania" + }, + "typeLogins": { + "message": "Dane logowania" + }, + "typeSecureNote": { + "message": "Bezpieczna notatka" + }, + "typeCard": { + "message": "Karta" + }, + "typeIdentity": { + "message": "Tożsamość" + }, + "passwordHistory": { + "message": "Historia haseł" + }, + "back": { + "message": "Powrót" + }, + "collections": { + "message": "Kolekcje" + }, + "favorites": { + "message": "Ulubione" + }, + "popOutNewWindow": { + "message": "Wyświetl w nowym oknie" + }, + "refresh": { + "message": "Odśwież" + }, + "cards": { + "message": "Karty" + }, + "identities": { + "message": "Tożsamości" + }, + "logins": { + "message": "Dane logowania" + }, + "secureNotes": { + "message": "Bezpieczne notatki" + }, + "clear": { + "message": "Wyczyść", + "description": "To clear something out. example: To clear browser history." + }, + "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." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Przełącz obecny URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Obecny URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organizacja", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Rodzaje" + }, + "allItems": { + "message": "Wszystkie elementy" + }, + "noPasswordsInList": { + "message": "Brak haseł." + }, + "remove": { + "message": "Usuń" + }, + "default": { + "message": "Domyślny" + }, + "dateUpdated": { + "message": "Zaktualizowano", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Aktualizacja hasła", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Czy na pewno chcesz użyć opcji \"Nigdy\"? Ustawienie opcji blokady na \"Nigdy\" przechowuje klucz szyfrowania Twojego sejfu na urządzeniu. Jeśli używasz tej opcji upewnij się, że odpowiednio zabezpieczasz swoje urządzenie." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Odblokuj danymi biometrycznymi" + }, + "awaitDesktop": { + "message": "Oczekiwanie na potwierdzenie z aplikacji desktopowej" + }, + "awaitDesktopDesc": { + "message": "Włącz dane biometryczne w aplikacji desktopowej Bitwarden, aby włączyć tę samą funkcję w przeglądarce." + }, + "lockWithMasterPassOnRestart": { + "message": "Zablokuj hasłem głównym po uruchomieniu przeglądarki" + }, + "selectOneCollection": { + "message": "Musisz wybrać co najmniej jedną kolekcję." + }, + "cloneItem": { + "message": "Klonuj element" + }, + "clone": { + "message": "Klonuj" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji wpływa na ustawienia generatora." + }, + "vaultTimeoutAction": { + "message": "Sposób blokowania sejfu" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Automatycznie uzupełnij i zapisz" + }, + "autoFillSuccessAndSavedUri": { + "message": "URI został zapisany i automatycznie uzupełniony" + }, + "autoFillSuccess": { + "message": "Element został automatycznie uzupełniony" + }, + "setMasterPassword": { + "message": "Ustaw 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." + }, + "termsOfService": { + "message": "Regulamin" + }, + "privacyPolicy": { + "message": "Polityka prywatności" + }, + "hintEqualsPassword": { + "message": "Podpowiedź do hasła nie może być taka sama jak hasło." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Weryfikacja synchronizacji z aplikacją desktopową" + }, + "desktopIntegrationVerificationText": { + "message": "Zweryfikuj aplikację desktopową z wyświetlonym identyfikatorem: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Połączenie z przeglądarką jest wyłączone" + }, + "desktopIntegrationDisabledDesc": { + "message": "Połączenie z przeglądarką jest wyłączone. Włącz funkcję w ustawieniach aplikacji desktopowej Bitwarden." + }, + "startDesktopTitle": { + "message": "Uruchom aplikację desktopową Bitwarden" + }, + "startDesktopDesc": { + "message": "Aplikacja desktopowa Bitwarden, przed użyciem tej funkcji, musi zostać ponownie uruchomiona." + }, + "errorEnableBiometricTitle": { + "message": "Nie można włączyć danych biometrycznych" + }, + "errorEnableBiometricDesc": { + "message": "Operacja została anulowana przez aplikację desktopową" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Aplikacja desktopowa unieważniła bezpieczny kanał komunikacji. Spróbuj ponownie wykonać tę operację" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Komunikacja z aplikacją desktopową została przerwana" + }, + "nativeMessagingWrongUserDesc": { + "message": "W aplikacji desktopowej jesteś zalogowany na inne konto. Upewnij się, że w obu aplikacjach jesteś zalogowany na to same konto." + }, + "nativeMessagingWrongUserTitle": { + "message": "Konto jest niezgodne" + }, + "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 desktopowej." + }, + "biometricsNotSupportedTitle": { + "message": "Dane biometryczne nie są obsługiwane" + }, + "biometricsNotSupportedDesc": { + "message": "Dane biometryczne przeglądarki nie są obsługiwane na tym urządzeniu." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Uprawnienie nie zostało przyznane" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bez uprawnienia do komunikowania się z aplikacją desktopową Bitwarden nie możemy dostarczyć obsługi danych biometrycznych w rozszerzeniu przeglądarki. Spróbuj ponownie." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Wystąpił błąd żądania uprawnienia" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Ta operacja nie może zostać wykonana na pasku bocznym. Spróbuj ponownie w nowym oknie." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Zasada organizacji ma wpływ na opcję własności elementów." + }, + "excludedDomains": { + "message": "Wykluczone domeny" + }, + "excludedDomainsDesc": { + "message": "Aplikacja Bitwarden nie będzie proponować zapisywania danych logowania dla tych domen. Musisz odświeżyć stronę, aby zastosowywać zmiany." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ nie jest prawidłową nazwą domeny", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Wyślij", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "addSend": { + "message": "Dodaj wysyłkę", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Tekst" + }, + "sendTypeFile": { + "message": "Plik" + }, + "allSends": { + "message": "Wszystkie wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maksymalna liczba dostępów została osiągnięta", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Wygasła" + }, + "pendingDeletion": { + "message": "Oczekiwanie na usunięcie" + }, + "passwordProtected": { + "message": "Chroniona hasłem" + }, + "copySendLink": { + "message": "Kopiuj link wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Usuń hasło" + }, + "delete": { + "message": "Usuń" + }, + "removedPassword": { + "message": "Hasło zostało usunięte" + }, + "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." + }, + "sendLink": { + "message": "Link wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Wyłączona" + }, + "removePasswordConfirmation": { + "message": "Czy na pewno chcesz usunąć hasło?" + }, + "deleteSend": { + "message": "Usuń wysyłkę", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edytuj wysyłkę", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Nazwa wysyłki.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Plik, który chcesz wysłać." + }, + "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." + }, + "oneDay": { + "message": "1 dzień" + }, + "days": { + "message": "$DAYS$ dni", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Niestandardowe" + }, + "maximumAccessCount": { + "message": "Maksymalna liczba dostępów" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Po zapisaniu wysyłki, skopiuj link do schowka.", + "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ć." + }, + "sendHideText": { + "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." + }, + "currentAccessCount": { + "message": "Obecna liczba dostępów" + }, + "createSend": { + "message": "Utwórz nową wysyłkę", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nowe hasło" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Aby wybrać plik, otwórz rozszerzenie na pasku bocznym (jeśli to możliwe) lub w nowym oknie." + }, + "sendFirefoxFileWarning": { + "message": "Aby wybrać plik za pomocą przeglądarki Firefox, otwórz rozszerzenie w nowym oknie." + }, + "sendSafariFileWarning": { + "message": "Aby wybrać plik za pomocą przeglądarki Safari, otwórz rozszerzenie w nowym oknie." + }, + "sendFileCalloutHeader": { + "message": "Zanim zaczniesz" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Aby wybrać datę, ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "kliknij tutaj", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "w celu otwarcia rozszerzenia w oknie.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Data wygaśnięcia nie jest prawidłowa." + }, + "deletionDateIsInvalid": { + "message": "Data usunięcia nie jest prawidłowa." + }, + "expirationDateAndTimeRequired": { + "message": "Data i czas wygaśnięcia są wymagane." + }, + "deletionDateAndTimeRequired": { + "message": "Data i czas usunięcia są wymagane." + }, + "dateParsingError": { + "message": "Wystąpił błąd podczas zapisywania dat usunięcia i wygaśnięcia." + }, + "hideEmail": { + "message": "Ukryj mój adres e-mail przed odbiorcami." + }, + "sendOptionsPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji wpływa na ustawienia wysyłek." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Weryfikacja adresu e-mail jest wymagana" + }, + "emailVerificationRequiredDesc": { + "message": "Musisz zweryfikować adres e-mail, aby korzystać z tej funkcji. Adres możesz zweryfikować w sejfie internetowym." + }, + "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ę." + }, + "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." + }, + "selectFolder": { + "message": "Wybierz folder..." + }, + "ssoCompleteRegistration": { + "message": "W celu zakończenia jednokrotnego logowania SSO, ustaw hasło główne, aby uzyskać dostęp do sejfu." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Czas blokowania sejfu przekracza limit określony przez organizację." + }, + "vaultExportDisabled": { + "message": "Eksportowanie sejfu zostało wyłączone" + }, + "personalVaultExportPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie Twojego sejfu." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Nie można zidentyfikować poprawnego elementu formularza. Spróbuj sprawdzić kod HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nie znaleziono unikatowego identyfikatora." + }, + "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ę" + }, + "removeMasterPassword": { + "message": "Usuń hasło główne" + }, + "removedMasterPassword": { + "message": "Hasło główne zostało usunięte." + }, + "leaveOrganizationConfirmation": { + "message": "Czy na pewno chcesz opuścić tę organizację?" + }, + "leftOrganization": { + "message": "Nie należysz już do tej organizacji." + }, + "toggleCharacterCount": { + "message": "Pokaż / Ukryj licznik znaków" + }, + "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" + } + } + }, + "error": { + "message": "Błąd" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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": "Losowo" + }, + "randomWord": { + "message": "Losowe słowo" + }, + "websiteName": { + "message": "Nazwa witryny" + }, + "whatWouldYouLikeToGenerate": { + "message": "Co chcesz wygenerować?" + }, + "passwordType": { + "message": "Rodzaj hasła" + }, + "service": { + "message": "Usługa" + } +} diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json new file mode 100644 index 0000000000..3faa73af94 --- /dev/null +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Um gerenciador de senhas seguro e gratuito para todos os seus dispositivos.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Iniciar Sessão Empresarial Única" + }, + "cancel": { + "message": "Cancelar" + }, + "close": { + "message": "Fechar" + }, + "submit": { + "message": "Enviar" + }, + "emailAddress": { + "message": "Endereço de E-mail" + }, + "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 de Senha Mestra (opcional)" + }, + "tab": { + "message": "Aba" + }, + "myVault": { + "message": "Meu Cofre" + }, + "tools": { + "message": "Ferramentas" + }, + "settings": { + "message": "Configurações" + }, + "currentTab": { + "message": "Aba Atual" + }, + "copyPassword": { + "message": "Copiar Senha" + }, + "copyNote": { + "message": "Copiar Nota" + }, + "copyUri": { + "message": "Copiar URI" + }, + "copyUsername": { + "message": "Copiar Nome de Usuário" + }, + "copyNumber": { + "message": "Copiar Número" + }, + "copySecurityCode": { + "message": "Copiar Código de Segurança" + }, + "autoFill": { + "message": "Autopreencher" + }, + "generatePasswordCopied": { + "message": "Gerar Senha (copiada)" + }, + "copyElementIdentifier": { + "message": "Copiar Nome do Campo Personalizado" + }, + "noMatchingLogins": { + "message": "Sem credenciais correspondentes." + }, + "unlockVaultMenu": { + "message": "Desbloqueie seu cofre" + }, + "loginToVaultMenu": { + "message": "Acesse o seu cofre" + }, + "autoFillInfo": { + "message": "Não há credenciais disponíveis para autopreenchimento para a aba do navegador atual." + }, + "addLogin": { + "message": "Adicionar uma Credencial" + }, + "addItem": { + "message": "Adicionar Item" + }, + "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" + }, + "continue": { + "message": "Continuar" + }, + "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." + }, + "account": { + "message": "Conta" + }, + "changeMasterPassword": { + "message": "Alterar Senha Mestra" + }, + "fingerprintPhrase": { + "message": "Frase de Biometria", + "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." + }, + "twoStepLogin": { + "message": "Login em Duas Etapas" + }, + "logOut": { + "message": "Encerrar Sessão" + }, + "about": { + "message": "Sobre" + }, + "version": { + "message": "Versão" + }, + "save": { + "message": "Salvar" + }, + "move": { + "message": "Mover" + }, + "addFolder": { + "message": "Adicionar Pasta" + }, + "name": { + "message": "Nome" + }, + "editFolder": { + "message": "Editar Pasta" + }, + "deleteFolder": { + "message": "Excluir Pasta" + }, + "folders": { + "message": "Pastas" + }, + "noFolders": { + "message": "Não existem pastas para listar." + }, + "helpFeedback": { + "message": "Ajuda & Feedback" + }, + "sync": { + "message": "Sincronizar" + }, + "syncVaultNow": { + "message": "Sincronizar Cofre Agora" + }, + "lastSync": { + "message": "Última Sincronização:" + }, + "passGen": { + "message": "Gerador de Senha" + }, + "generator": { + "message": "Gerador", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Gere automaticamente senhas fortes e únicas para as suas credenciais." + }, + "bitWebVault": { + "message": "Cofre Web do Bitwarden" + }, + "importItems": { + "message": "Importar Itens" + }, + "select": { + "message": "Selecionar" + }, + "generatePassword": { + "message": "Gerar Senha" + }, + "regeneratePassword": { + "message": "Gerar Nova Senha" + }, + "options": { + "message": "Opções" + }, + "length": { + "message": "Comprimento" + }, + "uppercase": { + "message": "Maiúsculas (A-Z)" + }, + "lowercase": { + "message": "Minúsculas (a-z)" + }, + "numbers": { + "message": "Números (0-9)" + }, + "specialCharacters": { + "message": "Caracteres Especiais (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Mínimo de Números" + }, + "minSpecial": { + "message": "Mínimo Especial" + }, + "avoidAmbChar": { + "message": "Evitar Caracteres Ambíguos" + }, + "searchVault": { + "message": "Pesquisar no Cofre" + }, + "edit": { + "message": "Editar" + }, + "view": { + "message": "Ver" + }, + "noItemsInList": { + "message": "Não há itens para listar." + }, + "itemInformation": { + "message": "Informação do Item" + }, + "username": { + "message": "Nome de Usuário" + }, + "password": { + "message": "Senha" + }, + "passphrase": { + "message": "Frase Secreta" + }, + "favorite": { + "message": "Favorito" + }, + "notes": { + "message": "Notas" + }, + "note": { + "message": "Nota" + }, + "editItem": { + "message": "Editar Item" + }, + "folder": { + "message": "Pasta" + }, + "deleteItem": { + "message": "Excluir Item" + }, + "viewItem": { + "message": "Visualizar Item" + }, + "launch": { + "message": "Abrir" + }, + "website": { + "message": "Site" + }, + "toggleVisibility": { + "message": "Alternar Visibilidade" + }, + "manage": { + "message": "Gerenciar" + }, + "other": { + "message": "Outros" + }, + "rateExtension": { + "message": "Avaliar a Extensão" + }, + "rateExtensionDesc": { + "message": "Por favor considere ajudar-nos com uma boa avaliação!" + }, + "browserNotSupportClipboard": { + "message": "O seu navegador web não suporta cópia para a área de transferência. Em alternativa, copie manualmente." + }, + "verifyIdentity": { + "message": "Verificar Identidade" + }, + "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" + }, + "vaultTimeout": { + "message": "Tempo limite do cofre." + }, + "lockNow": { + "message": "Bloquear Agora" + }, + "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" + }, + "onLocked": { + "message": "Quando o Sistema for Bloqueado" + }, + "onRestart": { + "message": "Ao Reiniciar" + }, + "never": { + "message": "Nunca" + }, + "security": { + "message": "Segurança" + }, + "errorOccurred": { + "message": "Ocorreu um erro" + }, + "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." + }, + "verificationCodeRequired": { + "message": "O código de verificação é necessário." + }, + "invalidVerificationCode": { + "message": "Código de verificação inválido" + }, + "valueCopied": { + "message": " copiado", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Não é possível autopreencher o item selecionado nesta página. Em alternativa, copie e cole a informação." + }, + "loggedOut": { + "message": "Sessão encerrada" + }, + "loginExpired": { + "message": "A sua sessão expirou." + }, + "logOutConfirmation": { + "message": "Você tem certeza que deseja sair?" + }, + "yes": { + "message": "Sim" + }, + "no": { + "message": "Não" + }, + "unexpectedError": { + "message": "Ocorreu um erro inesperado." + }, + "nameRequired": { + "message": "O nome é necessário." + }, + "addedFolder": { + "message": "Pasta adicionada" + }, + "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?" + }, + "twoStepLoginConfirmation": { + "message": "O login em duas etapas torna a sua conta mais segura ao exigir que você verifique seu login com outro dispositivo como uma chave de segurança, aplicativo de autenticação, SMS, ligação telefônica, ou e-mail. O login em duas etapas pode ser ativado no cofre web em bitwarden.com. Você deseja visitar o site agora?" + }, + "editedFolder": { + "message": "Pasta Editada" + }, + "deleteFolderConfirmation": { + "message": "Você tem certeza que deseja excluir esta pasta?" + }, + "deletedFolder": { + "message": "Pasta excluída" + }, + "gettingStartedTutorial": { + "message": "Tutorial de Introdução" + }, + "gettingStartedTutorialVideo": { + "message": "Assista o nosso tutorial de introdução e saiba como tirar o máximo de proveito da extensão de navegador." + }, + "syncingComplete": { + "message": "Sincronização completa" + }, + "syncingFailed": { + "message": "A Sincronização falhou" + }, + "passwordCopied": { + "message": "Senha copiada" + }, + "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": "Novo URI" + }, + "addedItem": { + "message": "Item adicionado" + }, + "editedItem": { + "message": "Item editado" + }, + "deleteItemConfirmation": { + "message": "Você tem certeza que deseja enviar este item para a lixeira?" + }, + "deletedItem": { + "message": "Enviar item para lixeira" + }, + "overwritePassword": { + "message": "Sobrescrever Senha" + }, + "overwritePasswordConfirmation": { + "message": "Você tem certeza que deseja substituir a senha atual?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "Pesquisar pasta" + }, + "searchCollection": { + "message": "Pesquisar coleção" + }, + "searchType": { + "message": "Pesquisar tipo" + }, + "noneFolder": { + "message": "Nenhuma Pasta", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Desativar Notificação de Adicionar Credencial" + }, + "addLoginNotificationDesc": { + "message": "A \"Notificação de Adicionar Login\" pede para salvar automaticamente novas logins para o seu cofre quando você inicia uma sessão em um site pela primeira vez." + }, + "dontShowCardsCurrentTab": { + "message": "Não Mostrar Cartões na Página 'Aba'" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Os itens de cartão do seu cofre estão listados na página 'Aba Atual' para facilitar o acesso ao preenchimento automático." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Não Mostrar Identidades na Página \"Aba\"" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Os itens de identidade do seu cofre estão listados na página 'Aba Atual' para facilitar o acesso ao preenchimento automático." + }, + "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." + }, + "notificationAddDesc": { + "message": "O Bitwarden deve lembrar esta senha para você?" + }, + "notificationAddSave": { + "message": "Salvar" + }, + "disableChangedPasswordNotification": { + "message": "Desativar Notificação de Alteração da Senha" + }, + "disableChangedPasswordNotificationDesc": { + "message": "A \"Notificação de Alteração da Senha\" solicita automaticamente que você atualize a senha de uma credencial no seu cofre quando detecta que você a alterou em um site." + }, + "notificationChangeDesc": { + "message": "Você quer atualizar esta senha no Bitwarden?" + }, + "notificationChangeSave": { + "message": "Atualizar" + }, + "disableContextMenuItem": { + "message": "Desativar Opções do Menu de Contexto" + }, + "disableContextMenuItemDesc": { + "message": "As opções do menu de contexto fornecem acesso rápido à geração de senha e credenciais para o site na sua aba atual." + }, + "defaultUriMatchDetection": { + "message": "Detecção de Correspondência de URI Padrão", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Escolha a maneira padrão pela qual a detecção de correspondência de URI é manipulada para logins ao executar ações como preenchimento automático." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Altere o tema de cores do aplicativo." + }, + "dark": { + "message": "Escuro", + "description": "Dark color" + }, + "light": { + "message": "Claro", + "description": "Light color" + }, + "solarizedDark": { + "message": "Escuro Solarizado", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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 são únicas para cada conta de usuário do Bitwarden, então você não pode importar um arquivo de exportação criptografado para uma conta diferente." + }, + "exportMasterPassword": { + "message": "Insira a sua senha mestra para exportar os dados do seu cofre." + }, + "shared": { + "message": "Compartilhado" + }, + "learnOrg": { + "message": "Aprenda mais sobre as Organizações" + }, + "learnOrgConfirmation": { + "message": "O Bitwarden permite compartilhar os seus itens do cofre com outros ao utilizar uma organização. Gostaria de visitar o site bitwarden.com para saber mais?" + }, + "moveToOrganization": { + "message": "Mover para a Organização" + }, + "share": { + "message": "Compartilhar" + }, + "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." + }, + "learnMore": { + "message": "Saber mais" + }, + "authenticatorKeyTotp": { + "message": "Chave de Autenticação (TOTP)" + }, + "verificationCodeTotp": { + "message": "Código de Verificação (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiar Código de Verificação" + }, + "attachments": { + "message": "Anexos" + }, + "deleteAttachment": { + "message": "Excluir anexo" + }, + "deleteAttachmentConfirmation": { + "message": "Tem a certeza de que deseja excluir este anexo?" + }, + "deletedAttachment": { + "message": "Anexo excluído" + }, + "newAttachment": { + "message": "Adicionar Novo Anexo" + }, + "noAttachments": { + "message": "Sem anexos." + }, + "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." + }, + "featureUnavailable": { + "message": "Recurso Indisponível" + }, + "updateKey": { + "message": "Você não pode usar este recurso, até você atualizar sua chave de criptografia." + }, + "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": "Registre-se para uma assinatura premium e obtenha:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB de armazenamento de arquivos encriptados." + }, + "ppremiumSignUpTwoStep": { + "message": "Opções de autenticação de duas etapas adicionais como YubiKey, FIDO U2F, e Duo." + }, + "ppremiumSignUpReports": { + "message": "Higiene de senha, saúde da conta, e relatórios sobre violação de dados para manter o seu cofre seguro." + }, + "ppremiumSignUpTotp": { + "message": "Gerador de códigos de verificação TOTP (2FA) para credenciais no seu cofre." + }, + "ppremiumSignUpSupport": { + "message": "Prioridade no suporte ao cliente." + }, + "ppremiumSignUpFuture": { + "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 completa" + }, + "disableAutoTotpCopy": { + "message": "Desativar Cópia Automática de TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Se a sua credencial tiver uma chave de autenticação anexada, o código de verificação TOTP será copiado automaticamente para a área de transferência quando você autopreencher a credencial." + }, + "disableAutoBiometricsPrompt": { + "message": "Não solicitar por biometria na inicialização." + }, + "premiumRequired": { + "message": "Requer Assinatura Premium" + }, + "premiumRequiredDesc": { + "message": "Uma conta premium é necessária para usar esse recurso." + }, + "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": "Insira 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." + }, + "webAuthnNewTab": { + "message": "Para iniciar a verificação 2FA WebAuthn. Clique no botão abaixo para abrir uma nova aba e siga as instruções fornecidas na nova aba." + }, + "webAuthnNewTabOpen": { + "message": "Abrir nova aba" + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "loginUnavailable": { + "message": "Sessão Indisponível" + }, + "noTwoStepProviders": { + "message": "Esta conta tem a verificação em duas etapas ativado, no entanto, nenhum dos provedores de verificação em duas etapas configurados são suportados por este navegador web." + }, + "noTwoStepProviders2": { + "message": "Por favor utilize um navegador web suportado (tal como o Chrome) e/ou inclua provedores adicionais que são melhor suportados entre navegadores web (tal como uma aplicativo de autenticação)." + }, + "twoStepOptions": { + "message": "Opções de Login em Duas Etapas" + }, + "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ê." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Ativar o Autopreenchimento ao Carregar a Página" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Se um formulário de login for detectado, realize automaticamente um autopreenchimento quando a página web carregar." + }, + "experimentalFeature": { + "message": "Atualmente, este é um recurso experimental. Utilize por sua conta e risco." + }, + "defaultAutoFillOnPageLoad": { + "message": "Configuração de autopreenchimento padrão para itens de credenciais" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Depois de ativar o Autopreenchimento ao carregar a página, você pode ativar ou desativar o recurso para itens de credenciais individuais. Esta é a configuração padrão para itens de credenciais que não são configurados separadamente." + }, + "itemAutoFillOnPageLoad": { + "message": "Autopreencher no Carregamento da Página (se ativado nas Opções)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Usar configuração padrão" + }, + "autoFillOnPageLoadYes": { + "message": "Autopreencher ao carregar a página" + }, + "autoFillOnPageLoadNo": { + "message": "Não autopreencher ao carregar a página" + }, + "commandOpenPopup": { + "message": "Abrir pop-up do cofre" + }, + "commandOpenSidebar": { + "message": "Abrir cofre na barra lateral" + }, + "commandAutofillDesc": { + "message": "Autopreencher o último login utilizado para o site atual." + }, + "commandGeneratePasswordDesc": { + "message": "Gerar e copiar uma nova senha aleatória para a área de transferência." + }, + "commandLockVaultDesc": { + "message": "Bloquear o cofre" + }, + "privateModeWarning": { + "message": "O suporte para modo privado é experimental e alguns recursos são limitados." + }, + "customFields": { + "message": "Campos Personalizados" + }, + "copyValue": { + "message": "Copiar Valor" + }, + "value": { + "message": "Valor" + }, + "newCustomField": { + "message": "Novo Campo Personalizado" + }, + "dragToSort": { + "message": "Arrastar para ordenar" + }, + "cfTypeText": { + "message": "Texto" + }, + "cfTypeHidden": { + "message": "Ocultado" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "cfTypeLinked": { + "message": "Vinculado", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Valor vinculado", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Ao clicar fora da janela de pop-up para verificar seu e-mail para o seu código de verificação fará com que este pop-up feche. Você deseja abrir este pop-up em uma nova janela para que ele não seja fechado?" + }, + "popupU2fCloseMessage": { + "message": "Este navegador não pode processar requisições U2F nesta janela popup. Você quer abrir este popup em uma nova janela para que você possa entrar usando U2F?" + }, + "disableFavicon": { + "message": "Desativar Ícones de Site" + }, + "disableFaviconDesc": { + "message": "O Ícone do Site fornece uma imagem reconhecível ao lado de cada credencial no seu cofre." + }, + "disableBadgeCounter": { + "message": "Desativar Contador" + }, + "disableBadgeCounterDesc": { + "message": "O contador indica a quantidade de credenciais que você tem para a página atual no seu cofre." + }, + "cardholderName": { + "message": "Titular do Cartão" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Bandeira" + }, + "expirationMonth": { + "message": "Mês de Vencimento" + }, + "expirationYear": { + "message": "Ano de Vencimento" + }, + "expiration": { + "message": "Vencimento" + }, + "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" + }, + "securityCode": { + "message": "Código de Segurança" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Título" + }, + "mr": { + "message": "Sr" + }, + "mrs": { + "message": "Sra" + }, + "ms": { + "message": "Sra" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Primeiro Nome" + }, + "middleName": { + "message": "Nome do Meio" + }, + "lastName": { + "message": "Sobrenome" + }, + "fullName": { + "message": "Nome Completo" + }, + "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" + }, + "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" + }, + "type": { + "message": "Tipo" + }, + "typeLogin": { + "message": "Credencial" + }, + "typeLogins": { + "message": "Credenciais" + }, + "typeSecureNote": { + "message": "Nota Segura" + }, + "typeCard": { + "message": "Cartão" + }, + "typeIdentity": { + "message": "Identidade" + }, + "passwordHistory": { + "message": "Histórico de Senha" + }, + "back": { + "message": "Voltar" + }, + "collections": { + "message": "Coleções" + }, + "favorites": { + "message": "Favoritos" + }, + "popOutNewWindow": { + "message": "Abrir em uma nova janela" + }, + "refresh": { + "message": "Atualizar" + }, + "cards": { + "message": "Cartões" + }, + "identities": { + "message": "Identidades" + }, + "logins": { + "message": "Credenciais" + }, + "secureNotes": { + "message": "Notas Seguras" + }, + "clear": { + "message": "Limpar", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Verifique se a senha foi exposta." + }, + "passwordExposed": { + "message": "Esta senha foi exposta $VALUE$ vez(es) em violações de dados. Você deve alterá-la.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Esta senha não foi encontrada em violações 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" + }, + "toggleCurrentUris": { + "message": "Alternar URIs atuais", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI atual", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organização", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tipos" + }, + "allItems": { + "message": "Todos os Itens" + }, + "noPasswordsInList": { + "message": "Não existem senhas para listar." + }, + "remove": { + "message": "Remover" + }, + "default": { + "message": "Padrão" + }, + "dateUpdated": { + "message": "Atualizado", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Senha Atualizada", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Você tem certeza que deseja usar a opção \"Nunca\"? Definir suas opções de bloqueio para \"Nunca\" armazena a chave de criptografia do seu cofre no seu dispositivo. Se você usar esta opção, você deve garantir que irá manter o seu dispositivo devidamente protegido." + }, + "noOrganizationsList": { + "message": "Você pertence a nenhuma organização. As organizações permitem que você compartilhe 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." + }, + "unlockWithBiometrics": { + "message": "Desbloquear com a biometria" + }, + "awaitDesktop": { + "message": "Aguardando confirmação do desktop" + }, + "awaitDesktopDesc": { + "message": "Por favor, confirme o uso de dados biométricos no aplicativo Bitwarden Desktop para ativar a biometria para o navegador." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloquear com senha mestra ao reiniciar o navegador" + }, + "selectOneCollection": { + "message": "Você deve selecionar pelo menos uma coleção." + }, + "cloneItem": { + "message": "Clonar Item" + }, + "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" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Autopreencher e Salvar" + }, + "autoFillSuccessAndSavedUri": { + "message": "Item Auto-Preenchido e URI Salvo" + }, + "autoFillSuccess": { + "message": "Item Auto-Preenchido" + }, + "setMasterPassword": { + "message": "Definir 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." + }, + "termsOfService": { + "message": "Termos de Serviço" + }, + "privacyPolicy": { + "message": "Política de Privacidade" + }, + "hintEqualsPassword": { + "message": "Sua dica de senha não pode ser o mesmo que sua senha." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Verificação de sincronização do Desktop" + }, + "desktopIntegrationVerificationText": { + "message": "Por favor, verifique se o aplicativo desktop mostra esta impressão digital: " + }, + "desktopIntegrationDisabledTitle": { + "message": "A integração com o navegador não está ativada" + }, + "desktopIntegrationDisabledDesc": { + "message": "A integração com o navegador não está ativada no aplicativo Bitwarden Desktop. Por favor, ative-a nas configurações do aplicativo desktop." + }, + "startDesktopTitle": { + "message": "Iniciar o aplicativo Bitwarden Desktop" + }, + "startDesktopDesc": { + "message": "O aplicativo Bitwarden Desktop precisa ser iniciado antes que esta função possa ser usada." + }, + "errorEnableBiometricTitle": { + "message": "Não foi possível ativar a biometria" + }, + "errorEnableBiometricDesc": { + "message": "A ação foi cancelada pelo aplicativo desktop" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "O aplicativo desktop invalidou o canal de comunicação seguro. Por favor, tente esta operação novamente" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Comunicação com o desktop interrompida" + }, + "nativeMessagingWrongUserDesc": { + "message": "O aplicativo desktop está conectado em uma conta diferente. Por favor, certifique-se de que ambos os aplicativos estejam conectados na mesma conta." + }, + "nativeMessagingWrongUserTitle": { + "message": "A conta não confere" + }, + "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." + }, + "biometricsNotSupportedTitle": { + "message": "Biometria não suportada" + }, + "biometricsNotSupportedDesc": { + "message": "A biometria com o navegador não é suportada neste dispositivo." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permissão não fornecida" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Sem a permissão para se comunicar com o Aplicativo Bitwarden Desktop, não podemos fornecer dados biométricos na extensão do navegador. Por favor, tente novamente." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Erro ao solicitar permissão" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Esta ação não pode ser feita na barra lateral. Por favor, tente novamente no pop-up ou popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Uma política de organização está afetando suas opções de propriedade." + }, + "excludedDomains": { + "message": "Domínios Excluídos" + }, + "excludedDomainsDesc": { + "message": "O Bitwarden não irá pedir para salvar os detalhes de credencial para estes domínios. Você deve atualizar a página para que as alterações entrem em vigor." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ não é um domínio válido", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Pesquisar Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Adicionar Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Texto" + }, + "sendTypeFile": { + "message": "Arquivo" + }, + "allSends": { + "message": "Todos os Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Número máximo de acessos atingido", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expirado" + }, + "pendingDeletion": { + "message": "Exclusão pendente" + }, + "passwordProtected": { + "message": "Protegido por senha" + }, + "copySendLink": { + "message": "Copiar link do Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remover Senha" + }, + "delete": { + "message": "Excluir" + }, + "removedPassword": { + "message": "Senha Removida" + }, + "deletedSend": { + "message": "Send Excluído", + "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." + }, + "disabled": { + "message": "Desativado" + }, + "removePasswordConfirmation": { + "message": "Você tem certeza que deseja remover a senha?" + }, + "deleteSend": { + "message": "Excluir Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Editar Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Um nome amigável para descrever este Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "O arquivo que você deseja enviar." + }, + "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." + }, + "oneDay": { + "message": "1 dia" + }, + "days": { + "message": "$DAYS$ dias", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Personalizado" + }, + "maximumAccessCount": { + "message": "Contagem Máxima de Acessos" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendPasswordDesc": { + "message": "Exigir opcionalmente 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 esse Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copiar o link deste Send para área de transferência após salvar.", + "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." + }, + "sendHideText": { + "message": "Ocultar o texto deste Send por padrão.", + "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" + }, + "createSend": { + "message": "Criar Novo Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nova Senha" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Para escolher um arquivo, abra a extensão na barra lateral (se possível), ou abra uma nova janela clicando neste banner." + }, + "sendFirefoxFileWarning": { + "message": "Para escolher um arquivo usando o Firefox, abra a extensão na barra lateral ou abra uma nova janela clicando neste banner." + }, + "sendSafariFileWarning": { + "message": "Para escolher um arquivo usando o Safari, abra uma nova janela clicando neste banner." + }, + "sendFileCalloutHeader": { + "message": "Antes de começar" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Para usar um seletor de data no estilo calendário", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "clique aqui", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "para abrir a sua janela.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "A data de validade fornecida não é válida." + }, + "deletionDateIsInvalid": { + "message": "A data de exclusão fornecida não é válida." + }, + "expirationDateAndTimeRequired": { + "message": "Uma data e hora de expiração são obrigatórias." + }, + "deletionDateAndTimeRequired": { + "message": "Uma data e hora de exclusão são obrigatórias." + }, + "dateParsingError": { + "message": "Ocorreu um erro ao salvar as suas datas de exclusão e validade." + }, + "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." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Verificação de E-mail Necessária" + }, + "emailVerificationRequiredDesc": { + "message": "Você precisa verificar o seu e-mail para usar este recurso. Você pode verificar seu e-mail no cofre web." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Selecionar pasta..." + }, + "ssoCompleteRegistration": { + "message": "Para concluir o login com o SSO, defina uma senha mestra para acessar e proteger o seu cofre." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "O tempo limite do seu cofre excede as restrições definidas por sua organização." + }, + "vaultExportDisabled": { + "message": "Exportação de Cofre Desativada" + }, + "personalVaultExportPolicyInEffect": { + "message": "Uma ou mais políticas da organização impedem que você exporte seu cofre pessoal." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Não foi possível identificar um elemento de formulário válido. Em vez disso, tente inspecionar o HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nenhum identificador exclusivo encontrado." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remover Senha Mestra" + }, + "removedMasterPassword": { + "message": "Senha mestra removida." + }, + "leaveOrganizationConfirmation": { + "message": "Você tem certeza que deseja sair desta organização?" + }, + "leftOrganization": { + "message": "Você saiu da organização." + }, + "toggleCharacterCount": { + "message": "Alternar contagem de caracteres" + }, + "sessionTimeout": { + "message": "Sua sessão expirou. Por favor, volte e tente iniciar a sessão novamente." + }, + "exportingPersonalVaultTitle": { + "message": "Exportando o 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" + } + } + }, + "error": { + "message": "Erro" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json new file mode 100644 index 0000000000..407c1933a5 --- /dev/null +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -0,0 +1,1817 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Início de Sessão Único da Empresa" + }, + "cancel": { + "message": "Cancelar" + }, + "close": { + "message": "Fechar" + }, + "submit": { + "message": "Submeter" + }, + "emailAddress": { + "message": "Endereço de email" + }, + "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)" + }, + "tab": { + "message": "Separador" + }, + "myVault": { + "message": "Meu cofre" + }, + "tools": { + "message": "Ferramentas" + }, + "settings": { + "message": "Definições" + }, + "currentTab": { + "message": "Separador atual" + }, + "copyPassword": { + "message": "Copiar palavra-passe" + }, + "copyNote": { + "message": "Copiar nota" + }, + "copyUri": { + "message": "Copiar URI" + }, + "copyUsername": { + "message": "Copiar nome de utilizador" + }, + "copyNumber": { + "message": "Copiar número" + }, + "copySecurityCode": { + "message": "Copiar código de segurança" + }, + "autoFill": { + "message": "Auto-preencher" + }, + "generatePasswordCopied": { + "message": "Gerar palavra-passe (copiada)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "Sem credencias correspondidas." + }, + "vaultLocked": { + "message": "O cofre está bloqueado." + }, + "vaultLoggedOut": { + "message": "Sessão terminada no cofre." + }, + "autoFillInfo": { + "message": "Não existem credenciais disponíveis para auto-preencher para o separador de navegador atual." + }, + "addLogin": { + "message": "Adicionar uma credencial" + }, + "addItem": { + "message": "Adicionar item" + }, + "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" + }, + "continue": { + "message": "Continuar" + }, + "verificationCode": { + "message": "Código de verificação" + }, + "account": { + "message": "Conta" + }, + "changeMasterPassword": { + "message": "Alterar palavra-passe mestra" + }, + "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." + }, + "twoStepLogin": { + "message": "Início de sessão de dois passos" + }, + "logOut": { + "message": "Terminar sessão" + }, + "about": { + "message": "Acerca" + }, + "version": { + "message": "Versão" + }, + "save": { + "message": "Guardar" + }, + "move": { + "message": "Move" + }, + "addFolder": { + "message": "Adicionar pasta" + }, + "name": { + "message": "Nome" + }, + "editFolder": { + "message": "Editar pasta" + }, + "deleteFolder": { + "message": "Eliminar pasta" + }, + "folders": { + "message": "Pastas" + }, + "noFolders": { + "message": "Não existem pastas para listar." + }, + "helpFeedback": { + "message": "Ajuda e feedback" + }, + "sync": { + "message": "Sincronizar" + }, + "syncVaultNow": { + "message": "Sincronizar cofre agora" + }, + "lastSync": { + "message": "Última sincronização:" + }, + "passGen": { + "message": "Gerador de palavras-passe" + }, + "generator": { + "message": "Gerador", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Gera automaticamente palavras-passe fortes e únicas para as suas credenciais." + }, + "bitWebVault": { + "message": "Cofre Web Bitwarden" + }, + "importItems": { + "message": "Importar itens" + }, + "select": { + "message": "Selecionar" + }, + "generatePassword": { + "message": "Gerar palavra-passe" + }, + "regeneratePassword": { + "message": "Regenerar palavra-passe" + }, + "options": { + "message": "Opções" + }, + "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" + }, + "minNumbers": { + "message": "Números mínimos" + }, + "minSpecial": { + "message": "Especiais mínimos" + }, + "avoidAmbChar": { + "message": "Evitar caracteres ambíguos" + }, + "searchVault": { + "message": "Pesquisar cofre" + }, + "edit": { + "message": "Editar" + }, + "view": { + "message": "Ver" + }, + "noItemsInList": { + "message": "Não existem itens para listar." + }, + "itemInformation": { + "message": "Informação do item" + }, + "username": { + "message": "Nome de utilizador" + }, + "password": { + "message": "Palavra-passe" + }, + "passphrase": { + "message": "Frase-passe" + }, + "favorite": { + "message": "Favorito" + }, + "notes": { + "message": "Notas" + }, + "note": { + "message": "Nota" + }, + "editItem": { + "message": "Editar item" + }, + "folder": { + "message": "Pasta" + }, + "deleteItem": { + "message": "Eliminar item" + }, + "viewItem": { + "message": "Ver item" + }, + "launch": { + "message": "Iniciar" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Alternar visibilidade" + }, + "manage": { + "message": "Gerir" + }, + "other": { + "message": "Outros" + }, + "rateExtension": { + "message": "Avaliar a extensão" + }, + "rateExtensionDesc": { + "message": "Por favor considere ajudar-nos com uma boa análise!" + }, + "browserNotSupportClipboard": { + "message": "O seu navegador web não suporta cópia fácil da área de transferência. Em alternativa, copie manualmente." + }, + "verifyMasterPassword": { + "message": "Verificar palavra-passe mestra" + }, + "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" + }, + "vaultTimeout": { + "message": "Expiração do cofre" + }, + "lockNow": { + "message": "Bloquear agora" + }, + "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" + }, + "onLocked": { + "message": "Quando o sistema está bloqueado" + }, + "onRestart": { + "message": "Quando reiniciar o navegador" + }, + "never": { + "message": "Nunca" + }, + "security": { + "message": "Segurança" + }, + "errorOccurred": { + "message": "Ocorreu um erro" + }, + "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." + }, + "verificationCodeRequired": { + "message": "O código de verificação é requerido." + }, + "valueCopied": { + "message": "$VALUE$ copiado(a)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Não é possível auto-preencher o item selecionado nesta página. Em alternativa, copie e cole a informação." + }, + "loggedOut": { + "message": "Sessão terminada" + }, + "loginExpired": { + "message": "A sua sessão expirou." + }, + "logOutConfirmation": { + "message": "Tem a certeza de que pretende terminar sessão?" + }, + "yes": { + "message": "Sim" + }, + "no": { + "message": "Não" + }, + "unexpectedError": { + "message": "Ocorreu um erro inesperado." + }, + "nameRequired": { + "message": "O nome é requerido." + }, + "addedFolder": { + "message": "Pasta adicionada" + }, + "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?" + }, + "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?" + }, + "editedFolder": { + "message": "Pasta editada" + }, + "deleteFolderConfirmation": { + "message": "Tem a certeza de que pretende eliminar esta pasta?" + }, + "deletedFolder": { + "message": "Pasta eliminada" + }, + "gettingStartedTutorial": { + "message": "Tutorial de introdução" + }, + "gettingStartedTutorialVideo": { + "message": "Veja o nosso tutorial de introdução e saiba como tirar o máximo partido da extensão de navegador." + }, + "syncingComplete": { + "message": "Sincronização completada" + }, + "syncingFailed": { + "message": "Sincronização falhada" + }, + "passwordCopied": { + "message": "Palavra-passe copiada" + }, + "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" + }, + "addedItem": { + "message": "Item adicionado" + }, + "editedItem": { + "message": "Item editado" + }, + "deleteItemConfirmation": { + "message": "Tem a certeza de que pretende apagar este item?" + }, + "deletedItem": { + "message": "Item enviado para o lixo" + }, + "overwritePassword": { + "message": "Sobreescrever palavra-passe" + }, + "overwritePasswordConfirmation": { + "message": "Tem a certeza de que pretende sobreescrever a palavra-passe atual?" + }, + "searchFolder": { + "message": "Pesquisar pasta" + }, + "searchCollection": { + "message": "Pesquisar coleção" + }, + "searchType": { + "message": "Pesquisar tipo" + }, + "noneFolder": { + "message": "Nenhuma pasta", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Desativar notificação de adicionar credencial" + }, + "addLoginNotificationDesc": { + "message": "A \"notificação de adicionar credencial\" solicita-lhe automaticamente a guardar novas credenciais para o seu cofre quando inicia sessão nas mesmas pela primeira vez." + }, + "dontShowCardsCurrentTab": { + "message": "Não mostrar cartões na página do separador" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Os itens de cartões do seu cofre estão listados na página 'Separador atual' para acesso de auto-preenchimento fácil." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Não mostrar identidades na página do separador" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Os itens de identidades do seu cofre estão listados na página 'Separador atual' para acesso de auto-preenchimento fácil." + }, + "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." + }, + "notificationAddDesc": { + "message": "Deve o Bitwarden memorizar esta palavra-passe para si?" + }, + "notificationAddSave": { + "message": "Sim, guardar agora" + }, + "notificationNeverSave": { + "message": "Nunca para este site" + }, + "disableChangedPasswordNotification": { + "message": "Desativar notificação de palavra-passe alterada" + }, + "disableChangedPasswordNotificationDesc": { + "message": "A \"notificação de palavra-passe alterada\" solicita-lhe automaticamente para atualizar a palavra-passe de uma credencial no seu cofre quando deteta que a alterou num website." + }, + "notificationChangeDesc": { + "message": "Pretende atualizar esta palavra-passe no Bitwarden?" + }, + "notificationChangeSave": { + "message": "Sim, atualizar agora" + }, + "disableContextMenuItem": { + "message": "Desativar opções do menu de contexto" + }, + "disableContextMenuItemDesc": { + "message": "As opções do menu de contexto providenciam acesso rápido à geração de palavras-passe e credenciais para o website no seu separador atual." + }, + "defaultUriMatchDetection": { + "message": "Deteção de correspondência de URI predefinida", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Escolha a maneira predefinida pela qual a deteção de correspondência de URI é manuseada para credenciais ao realizar ações como auto-preenchimento." + }, + "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" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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). Apague-a imediatamente após a 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." + }, + "shared": { + "message": "Partilhado" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Partilhar" + }, + "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." + }, + "learnMore": { + "message": "Saber mais" + }, + "authenticatorKeyTotp": { + "message": "Chave de autenticador (TOTP)" + }, + "verificationCodeTotp": { + "message": "Código de verificação (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiar código de verificação" + }, + "attachments": { + "message": "Anexos" + }, + "deleteAttachment": { + "message": "Eliminar anexo" + }, + "deleteAttachmentConfirmation": { + "message": "Tem a certeza de que deseja eliminar este anexo?" + }, + "deletedAttachment": { + "message": "Anexo eliminado" + }, + "newAttachment": { + "message": "Adicionar novo anexo" + }, + "noAttachments": { + "message": "Sem anexos." + }, + "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." + }, + "featureUnavailable": { + "message": "Funcionalidade indisponível" + }, + "updateKey": { + "message": "Não pode utilizar esta funcionalidade até atualizar a sua chave de encriptação." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB de armazenamento encriptado para anexos de ficheiros." + }, + "ppremiumSignUpTwoStep": { + "message": "Opções de início de sessão de dois passos adicionais como YubiKey, FIDO U2F, e Duo." + }, + "ppremiumSignUpReports": { + "message": "Higiene de palavras-passe, saúde das contas, e relatórios de brechas de dados para manter o seu cofre seguro." + }, + "ppremiumSignUpTotp": { + "message": "Gerador de códigos de verificação TOTP (2FA) para credenciais no seu cofre." + }, + "ppremiumSignUpSupport": { + "message": "Prioridade no apoio ao cliente." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Desativar cópia automática de TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Se a sua credencial tem uma chave de autenticador anexada à mesma, o código de verificação TOTP é copiado automaticamente para a sua área de transferência quando quer que auto-preencha a credencial." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium requerido" + }, + "premiumRequiredDesc": { + "message": "É requerida uma adesão premium para utilizar esta funcionalidade." + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 navegador web." + }, + "noTwoStepProviders2": { + "message": "Por favor utilize um navegador web suportado (tal como o Chrome) e/ou adicione provedores adicionais que são melhor suportados entre navegadores web (tal como uma aplicação de autenticador)." + }, + "twoStepOptions": { + "message": "Opções de início de sessão de dois passos" + }, + "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." + }, + "selfHostedEnvironment": { + "message": "Ambiente auto-hospedado" + }, + "selfHostedEnvironmentFooter": { + "message": "Especifique o URL de base da sua instalação local 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." + }, + "enableAutoFillOnPageLoad": { + "message": "Ativar auto-preenchimento no carregar da página" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Se um formulário de início de sessão for detetado, realizar automaticamente um auto-preenchimento quando a página web carregar." + }, + "experimentalFeature": { + "message": "Esta é atualmente uma funcionalidade experimental. Utilize por sua conta e risco." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Abrir popup do cofre" + }, + "commandOpenSidebar": { + "message": "Abrir cofre na barra lateral" + }, + "commandAutofillDesc": { + "message": "Auto-preencher o último início de sessão utilizado para o website atual" + }, + "commandGeneratePasswordDesc": { + "message": "Gerar e copiar uma nova palavra-passe aleatória para a área de transferência" + }, + "commandLockVaultDesc": { + "message": "Bloquear o cofre" + }, + "privateModeMessage": { + "message": "Infelizmente esta janela não está disponível no modo privado para este navegador." + }, + "customFields": { + "message": "Campos personalizados" + }, + "copyValue": { + "message": "Copiar valor" + }, + "value": { + "message": "Valor" + }, + "newCustomField": { + "message": "Novo campo personalizado" + }, + "dragToSort": { + "message": "Arraste para ordenar" + }, + "cfTypeText": { + "message": "Texto" + }, + "cfTypeHidden": { + "message": "Ocultado" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "popup2faCloseMessage": { + "message": "Clicar fora da janela popup para verificar o seu email pelo código de verificação irá causar com que este popup feche. Deseja abrir este popup numa nova janela para que este não se feche?" + }, + "popupU2fCloseMessage": { + "message": "Este navegador não pode processar solicitações U2F nesta janela popup. Pretende abrir este popup numa nova janela para que inicie sessão utilizando U2F?" + }, + "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." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Titular do cartão" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expirationMonth": { + "message": "Mês de expiração" + }, + "expirationYear": { + "message": "Ano de expiração" + }, + "expiration": { + "message": "Expiração" + }, + "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" + }, + "securityCode": { + "message": "Código de segurança" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Título" + }, + "mr": { + "message": "Sr" + }, + "mrs": { + "message": "Sra" + }, + "ms": { + "message": "Sra" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Primeiro nome" + }, + "middleName": { + "message": "Nome do meio" + }, + "lastName": { + "message": "Último nome" + }, + "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" + }, + "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" + }, + "type": { + "message": "Tipo" + }, + "typeLogin": { + "message": "Credencial" + }, + "typeLogins": { + "message": "Credenciais" + }, + "typeSecureNote": { + "message": "Nota segura" + }, + "typeCard": { + "message": "Cartão" + }, + "typeIdentity": { + "message": "Identidade" + }, + "passwordHistory": { + "message": "Histórico de palavras-passe" + }, + "back": { + "message": "Retroceder" + }, + "collections": { + "message": "Coleções" + }, + "favorites": { + "message": "Favoritos" + }, + "popOutNewWindow": { + "message": "Enviar para uma nova janela" + }, + "refresh": { + "message": "Atualizar" + }, + "cards": { + "message": "Cartões" + }, + "identities": { + "message": "Identidades" + }, + "logins": { + "message": "Credenciais" + }, + "secureNotes": { + "message": "Notas seguras" + }, + "clear": { + "message": "Limpar", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Alternar URIs atuais", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI atual", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organização", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tipos" + }, + "allItems": { + "message": "Todos os itens" + }, + "noPasswordsInList": { + "message": "Não existem palavras-passe para listar." + }, + "remove": { + "message": "Remover" + }, + "default": { + "message": "Predefinido" + }, + "dateUpdated": { + "message": "Atualizado", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Palavra passe atualizada", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Tem a certeza de que pretende utilizar a opção \"Nunca\"? Definir as suas opções de bloqueio para \"Nunca\" armazena a chave de encriptação do seu cofre no seu dispositivo. Se utilizar esta opção deve assegurar-se de que mantém o seu dispositivo devidamente protegido." + }, + "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 listar." + }, + "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." + }, + "verifyPin": { + "message": "Verificar PIN" + }, + "yourVaultIsLockedPinCode": { + "message": "O seu cofre está bloqueado. Verifique o seu PIN para continuar." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloquear com palavra-passe mestra quando reiniciar o navegador" + }, + "selectOneCollection": { + "message": "Tem de selecionar pelo menos uma coleção." + }, + "cloneItem": { + "message": "Clonar item" + }, + "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" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-preencher e guardar" + }, + "autoFillSuccessAndSavedUri": { + "message": "Item auto-preenchido e URI guardado" + }, + "autoFillSuccess": { + "message": "Item auto-preenchido" + }, + "setMasterPassword": { + "message": "Definir 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." + }, + "termsOfService": { + "message": "Termos de serviço" + }, + "privacyPolicy": { + "message": "Política de privacidade" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ não é um domínio válido", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Texto" + }, + "sendTypeFile": { + "message": "Ficheiro" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copiar Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remover palavra-passe" + }, + "delete": { + "message": "Eliminar" + }, + "removedPassword": { + "message": "Palavra-passe removida" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + } +} diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json new file mode 100644 index 0000000000..9bb0a3154d --- /dev/null +++ b/apps/browser/src/_locales/ro/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Manager de parole gratuit", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Un manager de parole sigur și gratuit pentru toate dispozitivele dvs.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Autentificați-vă sau creați un cont nou pentru a accesa seiful dvs. securizat." + }, + "createAccount": { + "message": "Creare cont" + }, + "login": { + "message": "Autentificare" + }, + "enterpriseSingleSignOn": { + "message": "Conectare unică organizație (SSO)" + }, + "cancel": { + "message": "Anulare" + }, + "close": { + "message": "Închidere" + }, + "submit": { + "message": "Trimitere" + }, + "emailAddress": { + "message": "Adresă de e-mail" + }, + "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)" + }, + "tab": { + "message": "Filă" + }, + "myVault": { + "message": "Seiful meu" + }, + "tools": { + "message": "Unelte" + }, + "settings": { + "message": "Setări" + }, + "currentTab": { + "message": "Fila curentă" + }, + "copyPassword": { + "message": "Copiere parolă" + }, + "copyNote": { + "message": "Copiere notă" + }, + "copyUri": { + "message": "Copiere URL" + }, + "copyUsername": { + "message": "Copiere nume utilizator" + }, + "copyNumber": { + "message": "Copiere număr" + }, + "copySecurityCode": { + "message": "Copiere cod de securitate" + }, + "autoFill": { + "message": "Auto-completare" + }, + "generatePasswordCopied": { + "message": "Generare parolă (s-a copiat)" + }, + "copyElementIdentifier": { + "message": "Copiere nume de câmp personalizat" + }, + "noMatchingLogins": { + "message": "Nu există potrivire de autentificări." + }, + "unlockVaultMenu": { + "message": "Deblocați-vă seiful" + }, + "loginToVaultMenu": { + "message": "Conectați-vă la seif" + }, + "autoFillInfo": { + "message": "Nu sunt disponibile autentificări pentru auto-completare în fila curentă a browserului." + }, + "addLogin": { + "message": "Adăugare autentificare" + }, + "addItem": { + "message": "Adăugare articol" + }, + "passwordHint": { + "message": "Indiciu parolă" + }, + "enterEmailToGetHint": { + "message": "Adresa de e-mail a contului pentru primirea indiciului parolei principale." + }, + "getMasterPasswordHint": { + "message": "Obținere indiciu parolă principală" + }, + "continue": { + "message": "Continuare" + }, + "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." + }, + "account": { + "message": "Cont" + }, + "changeMasterPassword": { + "message": "Schimbare parolă principală" + }, + "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." + }, + "twoStepLogin": { + "message": "Autentificare în două etape" + }, + "logOut": { + "message": "Deconectare" + }, + "about": { + "message": "Despre" + }, + "version": { + "message": "Versiune" + }, + "save": { + "message": "Salvare" + }, + "move": { + "message": "Mutare" + }, + "addFolder": { + "message": "Adăugare dosar" + }, + "name": { + "message": "Denumire" + }, + "editFolder": { + "message": "Editare dosar" + }, + "deleteFolder": { + "message": "Ștergere dosar" + }, + "folders": { + "message": "Dosare" + }, + "noFolders": { + "message": "Nu există niciun dosar de afișat." + }, + "helpFeedback": { + "message": "Ajutor și feedback" + }, + "sync": { + "message": "Sincronizare" + }, + "syncVaultNow": { + "message": "Sincronizare seif acum" + }, + "lastSync": { + "message": "Ultima sincronizare:" + }, + "passGen": { + "message": "Generator de parole" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Generează automat parole unice și puternice pentru autentificările dvs." + }, + "bitWebVault": { + "message": "Seif web Bitwarden" + }, + "importItems": { + "message": "Import elemente" + }, + "select": { + "message": "Selectare" + }, + "generatePassword": { + "message": "Generare parolă" + }, + "regeneratePassword": { + "message": "Regenerare parolă" + }, + "options": { + "message": "Opțiuni" + }, + "length": { + "message": "Lungime" + }, + "uppercase": { + "message": "Litere mari (A-Z)" + }, + "lowercase": { + "message": "Litere mici (a-z)" + }, + "numbers": { + "message": "Numere (0-9)" + }, + "specialCharacters": { + "message": "Caractere speciale (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "Minimum de cifre" + }, + "minSpecial": { + "message": "Minim de caractere speciale" + }, + "avoidAmbChar": { + "message": "Se evită caracterele ambigue" + }, + "searchVault": { + "message": "Căutare în seif" + }, + "edit": { + "message": "Editare" + }, + "view": { + "message": "Afișare" + }, + "noItemsInList": { + "message": "Nu există niciun articol de afișat." + }, + "itemInformation": { + "message": "Informații de autentificare" + }, + "username": { + "message": "Nume utilizator" + }, + "password": { + "message": "Parolă" + }, + "passphrase": { + "message": "Frază de acces" + }, + "favorite": { + "message": "Favorit" + }, + "notes": { + "message": "Note" + }, + "note": { + "message": "Notă" + }, + "editItem": { + "message": "Editare articol" + }, + "folder": { + "message": "Dosar" + }, + "deleteItem": { + "message": "Ștergere articol" + }, + "viewItem": { + "message": "Afișare articol" + }, + "launch": { + "message": "Lansare" + }, + "website": { + "message": "Sait web" + }, + "toggleVisibility": { + "message": "Comutare vizibilitate" + }, + "manage": { + "message": "Gestionare" + }, + "other": { + "message": "Altele" + }, + "rateExtension": { + "message": "Evaluare extensie" + }, + "rateExtensionDesc": { + "message": "Vă rugăm să luați în considerare să ne ajutați cu o recenzie bună!" + }, + "browserNotSupportClipboard": { + "message": "Browserul dvs. nu acceptă copierea în clipboard. Transcrieți datele manual." + }, + "verifyIdentity": { + "message": "Verificare identitate" + }, + "yourVaultIsLocked": { + "message": "Seiful dvs. este blocat. Verificați-vă identitatea pentru a continua." + }, + "unlock": { + "message": "Deblocare" + }, + "loggedInAsOn": { + "message": "Autentificat ca $EMAIL$ în $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Parolă principală incorectă" + }, + "vaultTimeout": { + "message": "Expirare seif" + }, + "lockNow": { + "message": "Blocare imediată" + }, + "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" + }, + "onLocked": { + "message": "La blocarea dispozitivului" + }, + "onRestart": { + "message": "La repornirea browserului" + }, + "never": { + "message": "Niciodată" + }, + "security": { + "message": "Securitate" + }, + "errorOccurred": { + "message": "S-a produs o eroare" + }, + "emailRequired": { + "message": "Este necesară adresa de e-mail." + }, + "invalidEmail": { + "message": "Adresă de e-mail greșită." + }, + "masterPassRequired": { + "message": "Este necesară parola principală." + }, + "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." + }, + "verificationCodeRequired": { + "message": "Este necesar codul de verificare." + }, + "invalidVerificationCode": { + "message": "Cod de verificare nevalid" + }, + "valueCopied": { + "message": " $VALUE$ s-a copiat", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Nu se pot auto-completa datele de conectare pentru această pagină. În schimb, puteți copia și lipi aceste date." + }, + "loggedOut": { + "message": "Deconectat" + }, + "loginExpired": { + "message": "Sesiunea de autentificare a expirat." + }, + "logOutConfirmation": { + "message": "Sigur doriți să vă deconectați?" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Nu" + }, + "unexpectedError": { + "message": "A survenit o eroare neașteptată." + }, + "nameRequired": { + "message": "Numele utilizator este obligatoriu." + }, + "addedFolder": { + "message": "Dosar adăugat" + }, + "changeMasterPass": { + "message": "Schimbare parolă principală" + }, + "changeMasterPasswordConfirmation": { + "message": "Puteți modifica parola principală în seiful web bitwarden.com. Doriți să vizitați saitul acum?" + }, + "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?" + }, + "editedFolder": { + "message": "Dosar editat" + }, + "deleteFolderConfirmation": { + "message": "Sigur doriți să ștergeți dosarul?" + }, + "deletedFolder": { + "message": "Dosar șters" + }, + "gettingStartedTutorial": { + "message": "Tutorial introductiv" + }, + "gettingStartedTutorialVideo": { + "message": "Urmăriți tutorialul nostru pentru a afla cum să beneficiați cât mai mult de această extensie a browserului." + }, + "syncingComplete": { + "message": "Sincronizare completă" + }, + "syncingFailed": { + "message": "Sincronizare eșuată" + }, + "passwordCopied": { + "message": "Parola s-a copiat" + }, + "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" + }, + "addedItem": { + "message": "Articol adăugat" + }, + "editedItem": { + "message": "Articol editat" + }, + "deleteItemConfirmation": { + "message": "Sigur doriți să trimiteți în coșul de reciclare?" + }, + "deletedItem": { + "message": "Articolul a fost trimis în coșul de reciclare" + }, + "overwritePassword": { + "message": "Modificare parolă" + }, + "overwritePasswordConfirmation": { + "message": "Sigur doriți să modificaț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?" + }, + "searchFolder": { + "message": "Căutare în dosar" + }, + "searchCollection": { + "message": "Căutare în colecție" + }, + "searchType": { + "message": "Căutare în tipuri" + }, + "noneFolder": { + "message": "Fără dosar", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Dezactivare \"Notificare de adăugare a autentificărilor\"" + }, + "addLoginNotificationDesc": { + "message": "\"Notificarea de adăugare a autentificării\" vă solicită automat salvarea noilor conturi în seif de fiecare dată când vă conectați la ele pentru prima dată." + }, + "dontShowCardsCurrentTab": { + "message": "Nu se afișează carduri în pagina filei curente" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Informațiile de tip card din seiful dvs. sunt afișate în pagina din \"Fila curentă\" pentru acces ușor la auto-completare." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Nu se afișează identități în pagina filei curente" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Informațiile de tip identitate din seiful dvs. sunt afișate în pagina din \"Fila curentă\" pentru acces ușor la auto-completare." + }, + "clearClipboard": { + "message": "Golire clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Șterge automat valorile copiate din clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Ar trebui ca Bitwarden să memoreze această parolă pentru dvs.?" + }, + "notificationAddSave": { + "message": "Salvare" + }, + "disableChangedPasswordNotification": { + "message": "Dezactivare notificare de modificare a parolei" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Notificarea de modificare a parolei\" vă propune automat să actualizați o parolă din seif oricând se detectează că ați modificat-o pe un sait." + }, + "notificationChangeDesc": { + "message": "Doriți să actualizați această parolă în Bitwarden?" + }, + "notificationChangeSave": { + "message": "Actualizare" + }, + "disableContextMenuItem": { + "message": "Dezactivare opțiuni meniu contextual" + }, + "disableContextMenuItemDesc": { + "message": "Opțiunile din meniul contextual oferă acces rapid la generarea de parole și la autentificările pentru saitul web din fila curentă." + }, + "defaultUriMatchDetection": { + "message": "Detectare de potrivire URI implicită", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Alege modul implicit de gestionare a detectării de potrivire URI pentru conectări când se efectuează acțiuni precum auto-completarea." + }, + "theme": { + "message": "Temă" + }, + "themeDesc": { + "message": "Schimbă tema de culori a aplicației." + }, + "dark": { + "message": "Întunecat", + "description": "Dark color" + }, + "light": { + "message": "Luminos", + "description": "Light color" + }, + "solarizedDark": { + "message": "Întuneric solarizat", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Introduceți parola principală pentru a exporta datele din seif." + }, + "shared": { + "message": "Partajat" + }, + "learnOrg": { + "message": "Aflați despre organizații" + }, + "learnOrgConfirmation": { + "message": "Bitwarden vă permite să vă partajați articolele seifului cu alte persoane utilizând o organizație. Doriți să vizitați site-ul bitwarden.com pentru a afla mai multe?" + }, + "moveToOrganization": { + "message": "Mutare la organizație" + }, + "share": { + "message": "Partajare" + }, + "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." + }, + "learnMore": { + "message": "Aflați mai multe" + }, + "authenticatorKeyTotp": { + "message": "Cheie autentificare (TOTP)" + }, + "verificationCodeTotp": { + "message": "Cod de verificare (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiere cod de verificare" + }, + "attachments": { + "message": "Atașamente" + }, + "deleteAttachment": { + "message": "Ștergere atașament" + }, + "deleteAttachmentConfirmation": { + "message": "Sigur doriți să ștergeți acest atașament?" + }, + "deletedAttachment": { + "message": "Atașament șters" + }, + "newAttachment": { + "message": "Adăugare atașament nou" + }, + "noAttachments": { + "message": "Niciun 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." + }, + "featureUnavailable": { + "message": "Caracteristică indisponibilă" + }, + "updateKey": { + "message": "Nu puteți utiliza această caracteristică înainte de a actualiza cheia de criptare." + }, + "premiumMembership": { + "message": "Membru Premium" + }, + "premiumManage": { + "message": "Gestionare statut de membru" + }, + "premiumManageAlert": { + "message": "Vă puteți gestiona statutul de membru pe saitul 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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB spațiu de stocare criptat pentru atașamente de fișiere." + }, + "ppremiumSignUpTwoStep": { + "message": "Opțiuni adiționale de conectare în două etape, cum ar fi YubiKey, FIDO U2F și Duo." + }, + "ppremiumSignUpReports": { + "message": "Rapoarte privind igiena parolelor, sănătatea contului și breșele de date pentru a vă păstra seiful în siguranță." + }, + "ppremiumSignUpTotp": { + "message": "Generator de cod de verificare TOTP (2FA) pentru autentificările din seif." + }, + "ppremiumSignUpSupport": { + "message": "Asistență prioritară pentru clienți." + }, + "ppremiumSignUpFuture": { + "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": "Actualizare completă" + }, + "disableAutoTotpCopy": { + "message": "Dezactivare copiere automată a codului TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Dacă autentificarea dvs. are o cheie atașată, codul de verificare TOTP este copiat în clipboard de fiecare dată când efectuați auto-completarea datelor de conectare." + }, + "disableAutoBiometricsPrompt": { + "message": "Nu solicitați datele biometrice la pornire" + }, + "premiumRequired": { + "message": "Este necesară versiunea Premium" + }, + "premiumRequiredDesc": { + "message": "Este necesar statutul de membru Premium pentru a utiliza această caracteristică." + }, + "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 apăsați butonul acestuia." + }, + "insertU2f": { + "message": "Introduceți cheia de securitate în portul USB al computerului. Dacă are un buton, apăsați-l." + }, + "webAuthnNewTab": { + "message": "Pentru a începe verificarea WebAuthn 2FA. Faceți clic pe butonul de mai jos pentru a deschide o filă nouă și urmați instrucțiunile furnizate în filă nouă." + }, + "webAuthnNewTabOpen": { + "message": "Deschideți o filă nouă" + }, + "webAuthnAuthenticate": { + "message": "Autentificare WebAuthn" + }, + "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 de acest browser web." + }, + "noTwoStepProviders2": { + "message": "Utilizați un browser acceptat (cum ar fi Chrome) și/sau adăugați furnizori suplimentari mai bine susținuți de browserele web (cum ar fi o aplicație de autentificare)." + }, + "twoStepOptions": { + "message": "Opțiuni de autentificare în două etape" + }, + "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 YubiKey pentru a accesa contul dvs. 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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Activare auto-completare la încărcarea paginii" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Dacă este detectat un formular de autentificare, se efectuează automat o completare a acestuia la încărcarea paginii." + }, + "experimentalFeature": { + "message": "În acest moment, aceasta funcțiune este experimentală. O puteți folosi pe propria răspundere." + }, + "defaultAutoFillOnPageLoad": { + "message": "Setarea implicită de completare automată pentru articole de conectare" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "După activarea completării automate la încărcarea paginii, puteți activa sau dezactiva funcția pentru elementele de conectare individuale. Aceasta este setarea implicită pentru articolele de conectare care nu sunt configurate separat." + }, + "itemAutoFillOnPageLoad": { + "message": "Completare automată la încărcarea paginii (dacă este activată în opțiuni)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Utilizați setarea implicită" + }, + "autoFillOnPageLoadYes": { + "message": "Completare automată la încărcarea paginii" + }, + "autoFillOnPageLoadNo": { + "message": "Nu completați automat la încărcarea paginii" + }, + "commandOpenPopup": { + "message": "Deschidere seif pop-up" + }, + "commandOpenSidebar": { + "message": "Deschidere seif în bara laterală" + }, + "commandAutofillDesc": { + "message": "Auto-completare a ultimei autentificări utilizate pe saitul web curent" + }, + "commandGeneratePasswordDesc": { + "message": "Generare parolă aleatorie și copiere în clipboard" + }, + "commandLockVaultDesc": { + "message": "Blocare seif" + }, + "privateModeWarning": { + "message": "Suportul pentru modul privat este experimental, iar unele caracteristici sunt limitate." + }, + "customFields": { + "message": "Câmpuri particularizate" + }, + "copyValue": { + "message": "Copiere valoare" + }, + "value": { + "message": "Valoare" + }, + "newCustomField": { + "message": "Câmp nou particularizat" + }, + "dragToSort": { + "message": "Tragere pentru sortare" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Ascuns" + }, + "cfTypeBoolean": { + "message": "Valoare logică" + }, + "cfTypeLinked": { + "message": "Conectat", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Valoarea conectată", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Dând clic în afara ferestrei pop-up pentru a vă verifica e-mailul pentru codul de verificare, aceasta se va închide. Doriți să deschideți acest pop-up într-o fereastră nouă, astfel încât aceasta să nu se închidă?" + }, + "popupU2fCloseMessage": { + "message": "Acest browser nu poate procesa cererile U2F în această fereastră pop-up. Doriți să deschideți acest pop-up într-o fereastră nouă, astfel încât să vă puteți conecta utilizând U2F?" + }, + "disableFavicon": { + "message": "Dezactivare iconuri sait" + }, + "disableFaviconDesc": { + "message": "Iconurile saiturilor oferă o imagine identificabilă lângă fiecare element de conectare din seiful dvs." + }, + "disableBadgeCounter": { + "message": "Dezactivați contorul de insigne" + }, + "disableBadgeCounterDesc": { + "message": "Contorul de insigne arată câte conectări aveți în seiful dvs. pentru pagina curentă." + }, + "cardholderName": { + "message": "Deținător card" + }, + "number": { + "message": "Număr card" + }, + "brand": { + "message": "Tip card" + }, + "expirationMonth": { + "message": "Luna expirării" + }, + "expirationYear": { + "message": "Anul expirării" + }, + "expiration": { + "message": "Expirare" + }, + "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" + }, + "securityCode": { + "message": "Cod de securitate (CVV/CVC)" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Titlu" + }, + "mr": { + "message": "Dl" + }, + "mrs": { + "message": "Dna" + }, + "ms": { + "message": "Dra" + }, + "dr": { + "message": "Dr." + }, + "firstName": { + "message": "Prenume" + }, + "middleName": { + "message": "Al doilea prenume" + }, + "lastName": { + "message": "Nume" + }, + "fullName": { + "message": "Numele complet" + }, + "identityName": { + "message": "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ă" + }, + "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ă" + }, + "type": { + "message": "Tip" + }, + "typeLogin": { + "message": "Conectare" + }, + "typeLogins": { + "message": "Conectări" + }, + "typeSecureNote": { + "message": "Notă protejată" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identitate" + }, + "passwordHistory": { + "message": "Istoric parole" + }, + "back": { + "message": "Înapoi" + }, + "collections": { + "message": "Colecții" + }, + "favorites": { + "message": "Favorite" + }, + "popOutNewWindow": { + "message": "Deschidere într-o fereastră nouă" + }, + "refresh": { + "message": "Reîmprospătare" + }, + "cards": { + "message": "Carduri" + }, + "identities": { + "message": "Identități" + }, + "logins": { + "message": "Conectări" + }, + "secureNotes": { + "message": "Note protejate" + }, + "clear": { + "message": "Ștergere", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Comutare URI-uri curente", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI curent", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organizație", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Tipuri" + }, + "allItems": { + "message": "Toate elementele" + }, + "noPasswordsInList": { + "message": "Nicio parolă de afișat." + }, + "remove": { + "message": "Ștergere" + }, + "default": { + "message": "Implicit" + }, + "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" + }, + "neverLockWarning": { + "message": "Sigur doriți să utilizați opțiunea \"Niciodată\"? Setarea opțiunii de blocare pe \"Niciodată\" vă salvează cheia de criptare pe dispozitiv. Dacă utilizați această opțiune ar trebui să vă asigurați că vă păstrați dispozitivul protejat corespunzător." + }, + "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": "Nu există 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": "Codul PIN este invalid." + }, + "unlockWithBiometrics": { + "message": "Deblocare folosind biometria" + }, + "awaitDesktop": { + "message": "Se așteaptă confirmarea de la desktop" + }, + "awaitDesktopDesc": { + "message": "Vă rugăm să confirmați utilizarea biometriei în aplicația Bitwarden Desktop pentru a activa biometria pentru browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Blocare cu parola principală la repornirea browserului" + }, + "selectOneCollection": { + "message": "Trebuie să selectați cel puțin o colecție." + }, + "cloneItem": { + "message": "Clonare articol" + }, + "clone": { + "message": "Clonare" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una sau mai multe politici organizaționale vă afectează setările generatorului." + }, + "vaultTimeoutAction": { + "message": "Acțiune la expirarea seifului" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-completare și Salvare" + }, + "autoFillSuccessAndSavedUri": { + "message": "Articolul s-a completat automat și URl-ul s-a salvat" + }, + "autoFillSuccess": { + "message": "Articolul s-a completat automat" + }, + "setMasterPassword": { + "message": "Setare 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": "Termenii de utilizare și Politica de confidențialitate nu au fost recunoscute." + }, + "termsOfService": { + "message": "Termeni de utilizare" + }, + "privacyPolicy": { + "message": "Politică de confidențialitate" + }, + "hintEqualsPassword": { + "message": "Indiciul dvs. de parolă nu poate fi același cu parola dvs." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Verificare sincronizare desktop" + }, + "desktopIntegrationVerificationText": { + "message": "Verificați dacă aplicația desktop afișează această amprentă digitală:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Integrarea browserului nu este activată" + }, + "desktopIntegrationDisabledDesc": { + "message": "Integrarea browserului nu este activată în aplicația Bitwarden Desktop. Vă rugăm să o activați în setările din aplicația desktop." + }, + "startDesktopTitle": { + "message": "Porniți aplicația Bitwarden Desktop" + }, + "startDesktopDesc": { + "message": "Aplicația Bitwarden Desktop trebuie să fie pornită înainte de a putea fi utilizată deblocarea cu date biometrice." + }, + "errorEnableBiometricTitle": { + "message": "Nu se poate activa biometria" + }, + "errorEnableBiometricDesc": { + "message": "Acțiunea a fost anulată de aplicația desktop" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Aplicația desktop a invalidat canalul de comunicare securizată. Reîncercați această operație" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Comunicare desktop întreruptă" + }, + "nativeMessagingWrongUserDesc": { + "message": "Aplicația desktop este conectată la un alt cont. Vă rugăm să vă asigurați că ambele aplicații sunt înregistrate în același cont." + }, + "nativeMessagingWrongUserTitle": { + "message": "Eroare de cont" + }, + "biometricsNotEnabledTitle": { + "message": "Biometria nu a fost activată" + }, + "biometricsNotEnabledDesc": { + "message": "Biometria browserului necesită activarea mai întâi a biometriei de pe desktop în setări." + }, + "biometricsNotSupportedTitle": { + "message": "Biometria nu este acceptată" + }, + "biometricsNotSupportedDesc": { + "message": "Biometria browserului nu este acceptată pe acest dispozitiv." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permisiunea nu a fost furnizată" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Fără permisiunea de comunicare cu aplicația Bitwarden Desktop nu putem furniza date biometrice în extensia browserului. Încercați din nou." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Eroare solicitare permisiune" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Această acțiune nu se poate efectua în bara laterală, vă rugăm să reîncercați acțiunea în fereastra pop-up sau popup." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "O politică de organizație vă afectează opțiunile de proprietate." + }, + "excludedDomains": { + "message": "Domenii excluse" + }, + "excludedDomainsDesc": { + "message": "Bitwarden nu va cere să salveze detaliile de conectare pentru aceste domenii. Trebuie să reîmprospătați pagina pentru ca modificările să intre în vigoare." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ nu este un domeniu valid", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "addSend": { + "message": "Adăugare Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "Fișier" + }, + "allSends": { + "message": "Toate Send-urile", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "S-a atins numărul maxim de accesări", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expirat" + }, + "pendingDeletion": { + "message": "Ștergere în așteptare" + }, + "passwordProtected": { + "message": "Protejat cu parolă" + }, + "copySendLink": { + "message": "Copiere link Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Eliminare parolă" + }, + "delete": { + "message": "Ștergere" + }, + "removedPassword": { + "message": "Parola a fost eliminată" + }, + "deletedSend": { + "message": "Send-ul a fost șters", + "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." + }, + "disabled": { + "message": "Dezactivat" + }, + "removePasswordConfirmation": { + "message": "Sigur doriți să eliminați parola?" + }, + "deleteSend": { + "message": "Ștergere Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Editare Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Un nume prietenos pentru a descrie acest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Fișierul pe care doriți să-l trimiteți." + }, + "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." + }, + "oneDay": { + "message": "1 zi" + }, + "days": { + "message": "$DAYS$ zile", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Personalizat" + }, + "maximumAccessCount": { + "message": "Număr maxim de accesări" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "message": "Dezactivează 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." + }, + "sendShareDesc": { + "message": "Copiază acest link de Send în clipboard la salvare.", + "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." + }, + "sendHideText": { + "message": "Ascunde în mod implicit textul acestui Send.", + "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" + }, + "createSend": { + "message": "Creare de nou Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Parolă nouă" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Pentru a alege un fișier, deschideți extensia în bara laterală (dacă este posibil) sau deschideți-o într-o fereastră nouă, făcând clic pe acest banner." + }, + "sendFirefoxFileWarning": { + "message": "Pentru a alege un fișier folosind Firefox, deschideți extensia din bara laterală sau deschideți o fereastră nouă făcând clic pe acest banner." + }, + "sendSafariFileWarning": { + "message": "Pentru a alege un fișier folosind Safari, deschideți o fereastră nouă făcând clic pe acest banner." + }, + "sendFileCalloutHeader": { + "message": "Înainte de a începe" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Pentru a utiliza un selector de date în stil calendar,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "faceți clic aici", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "pentru ca fereastra dvs să apară.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Data de expirare furnizată nu este validă." + }, + "deletionDateIsInvalid": { + "message": "Data de ștergere furnizată nu este validă." + }, + "expirationDateAndTimeRequired": { + "message": "Sunt necesare o dată și o oră de expirare." + }, + "deletionDateAndTimeRequired": { + "message": "Sunt necesare o dată și o oră de ștergere." + }, + "dateParsingError": { + "message": "A survenit o eroare la salvarea datelor de ștergere și de expirare." + }, + "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." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Este necesară verificarea adresei de e-mail" + }, + "emailVerificationRequiredDesc": { + "message": "Trebuie să vă verificați e-mailul pentru a utiliza această caracteristică. Puteți verifica e-mailul în seiful web." + }, + "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ă." + }, + "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ă." + }, + "selectFolder": { + "message": "Selectare folder..." + }, + "ssoCompleteRegistration": { + "message": "Pentru a finaliza conectarea cu SSO, vă rugăm să setați o parolă principală pentru a vă accesa și proteja seiful." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Timpul de expirare a seifului depășește restricțiile stabilite de organizația dvs." + }, + "vaultExportDisabled": { + "message": "Export de seif dezactivat" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una sau mai multe politici ale organizației vă împiedică să exportați seiful personal." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Imposibil de identificat un element de formular valid. Încercați să inspectați codul HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nu a fost găsit niciun identificator unic." + }, + "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" + }, + "removeMasterPassword": { + "message": "Eliminare parolă principală" + }, + "removedMasterPassword": { + "message": "Parolă principală eliminată." + }, + "leaveOrganizationConfirmation": { + "message": "Sigur doriți să părăsiți această organizație?" + }, + "leftOrganization": { + "message": "Ați părăsit organizația." + }, + "toggleCharacterCount": { + "message": "Comutare pe contorizare de caractere" + }, + "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" + } + } + }, + "error": { + "message": "Eroare" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Ce doriți să generați?" + }, + "passwordType": { + "message": "Tip de parolă" + }, + "service": { + "message": "Serviciu" + } +} diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json new file mode 100644 index 0000000000..76e56a6084 --- /dev/null +++ b/apps/browser/src/_locales/ru/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - бесплатный менеджер паролей", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Защищенный и бесплатный менеджер паролей для всех ваших устройств.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Войдите или создайте новый аккаунт для доступа к вашему защищенному хранилищу." + }, + "createAccount": { + "message": "Создать аккаунт" + }, + "login": { + "message": "Войти" + }, + "enterpriseSingleSignOn": { + "message": "Единая корпоративная авторизация (SSO)" + }, + "cancel": { + "message": "Отмена" + }, + "close": { + "message": "Закрыть" + }, + "submit": { + "message": "Отправить" + }, + "emailAddress": { + "message": "Адрес email" + }, + "masterPass": { + "message": "Мастер-пароль" + }, + "masterPassDesc": { + "message": "Мастер-пароль – это ключ к вашему защищенному хранилищу. Он очень важен, поэтому не забывайте его. Восстановить мастер-пароль невозможно." + }, + "masterPassHintDesc": { + "message": "Подсказка к мастер-паролю может помочь вам его вспомнить." + }, + "reTypeMasterPass": { + "message": "Введите мастер-пароль повторно" + }, + "masterPassHint": { + "message": "Подсказка к мастер-паролю (необяз.)" + }, + "tab": { + "message": "Вкладка" + }, + "myVault": { + "message": "Хранилище" + }, + "tools": { + "message": "Инструменты" + }, + "settings": { + "message": "Настройки" + }, + "currentTab": { + "message": "Текущая вкладка" + }, + "copyPassword": { + "message": "Скопировать пароль" + }, + "copyNote": { + "message": "Скопировать заметку" + }, + "copyUri": { + "message": "Скопировать URI" + }, + "copyUsername": { + "message": "Скопировать имя пользователя" + }, + "copyNumber": { + "message": "Скопировать номер" + }, + "copySecurityCode": { + "message": "Скопировать код безопасности" + }, + "autoFill": { + "message": "Автозаполнение" + }, + "generatePasswordCopied": { + "message": "Сгенерировать пароль (с копированием)" + }, + "copyElementIdentifier": { + "message": "Скопировать название пользовательского поля" + }, + "noMatchingLogins": { + "message": "Нет подходящих логинов." + }, + "unlockVaultMenu": { + "message": "Разблокировать хранилище" + }, + "loginToVaultMenu": { + "message": "Войти в хранилище" + }, + "autoFillInfo": { + "message": "Нет доступных логинов для автозаполнения на текущей вкладке браузера." + }, + "addLogin": { + "message": "Добавить логин" + }, + "addItem": { + "message": "Добавить элемент" + }, + "passwordHint": { + "message": "Подсказка к паролю" + }, + "enterEmailToGetHint": { + "message": "Введите email аккаунта для получения подсказки к мастер-паролю." + }, + "getMasterPasswordHint": { + "message": "Получить подсказку к мастер-паролю" + }, + "continue": { + "message": "Продолжить" + }, + "sendVerificationCode": { + "message": "Отправить код подтверждения на ваш email" + }, + "sendCode": { + "message": "Отправить код" + }, + "codeSent": { + "message": "Код отправлен" + }, + "verificationCode": { + "message": "Код подтверждения" + }, + "confirmIdentity": { + "message": "Подтвердите вашу личность, чтобы продолжить." + }, + "account": { + "message": "Аккаунт" + }, + "changeMasterPassword": { + "message": "Изменить мастер-пароль" + }, + "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." + }, + "twoStepLogin": { + "message": "Двухфакторная аутентификация" + }, + "logOut": { + "message": "Выйти" + }, + "about": { + "message": "О Bitwarden" + }, + "version": { + "message": "Версия" + }, + "save": { + "message": "Сохранить" + }, + "move": { + "message": "Переместить" + }, + "addFolder": { + "message": "Добавить папку" + }, + "name": { + "message": "Название" + }, + "editFolder": { + "message": "Изменить папку" + }, + "deleteFolder": { + "message": "Удалить папку" + }, + "folders": { + "message": "Папки" + }, + "noFolders": { + "message": "Нет папок для отображения." + }, + "helpFeedback": { + "message": "Помощь и обратная связь" + }, + "sync": { + "message": "Синхронизация" + }, + "syncVaultNow": { + "message": "Синхронизировать сейчас" + }, + "lastSync": { + "message": "Последняя синхронизация:" + }, + "passGen": { + "message": "Генератор паролей" + }, + "generator": { + "message": "Генератор", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Автоматическая генерация сильных и уникальных паролей для ваших логинов." + }, + "bitWebVault": { + "message": "Веб-хранилище Bitwarden" + }, + "importItems": { + "message": "Импорт элементов" + }, + "select": { + "message": "Выбрать" + }, + "generatePassword": { + "message": "Сгенерировать пароль" + }, + "regeneratePassword": { + "message": "Создать новый пароль" + }, + "options": { + "message": "Опции" + }, + "length": { + "message": "Длина" + }, + "uppercase": { + "message": "Прописные буквы (A-Z)" + }, + "lowercase": { + "message": "Строчные буквы (a-z)" + }, + "numbers": { + "message": "Цифры (0-9)" + }, + "specialCharacters": { + "message": "Специальные символы (!@#$%^&*)" + }, + "numWords": { + "message": "Количество слов" + }, + "wordSeparator": { + "message": "Разделитель слов" + }, + "capitalize": { + "message": "С заглавной буквы", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Добавить цифру" + }, + "minNumbers": { + "message": "Минимум цифр" + }, + "minSpecial": { + "message": "Минимум символов" + }, + "avoidAmbChar": { + "message": "Избегать неоднозначных символов" + }, + "searchVault": { + "message": "Поиск в хранилище" + }, + "edit": { + "message": "Изменить" + }, + "view": { + "message": "Просмотр" + }, + "noItemsInList": { + "message": "Нет элементов для отображения." + }, + "itemInformation": { + "message": "Информация об элементе" + }, + "username": { + "message": "Имя пользователя" + }, + "password": { + "message": "Пароль" + }, + "passphrase": { + "message": "Парольная фраза" + }, + "favorite": { + "message": "Избранный" + }, + "notes": { + "message": "Заметки" + }, + "note": { + "message": "Заметка" + }, + "editItem": { + "message": "Изменение элемента" + }, + "folder": { + "message": "Папка" + }, + "deleteItem": { + "message": "Удалить элемент" + }, + "viewItem": { + "message": "Просмотр элемента" + }, + "launch": { + "message": "Перейти" + }, + "website": { + "message": "Веб-сайт" + }, + "toggleVisibility": { + "message": "Вкл/выкл видимость" + }, + "manage": { + "message": "Управление" + }, + "other": { + "message": "Прочее" + }, + "rateExtension": { + "message": "Оценить расширение" + }, + "rateExtensionDesc": { + "message": "Пожалуйста, подумайте о том, чтобы помочь нам хорошим отзывом!" + }, + "browserNotSupportClipboard": { + "message": "Ваш браузер не поддерживает копирование данных в буфер обмена. Скопируйте вручную." + }, + "verifyIdentity": { + "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": "Неверный мастер-пароль" + }, + "vaultTimeout": { + "message": "Тайм-аут хранилища" + }, + "lockNow": { + "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 часа" + }, + "onLocked": { + "message": "Вместе с компьютером" + }, + "onRestart": { + "message": "При перезапуске" + }, + "never": { + "message": "Никогда" + }, + "security": { + "message": "Безопасность" + }, + "errorOccurred": { + "message": "Произошла ошибка" + }, + "emailRequired": { + "message": "Необходимо указать email." + }, + "invalidEmail": { + "message": "Неверный адрес email." + }, + "masterPassRequired": { + "message": "Необходимо ввести мастер-пароль." + }, + "masterPassLength": { + "message": "Мастер-пароль должен содержать не менее 8 символов." + }, + "masterPassDoesntMatch": { + "message": "Мастер-пароли не совпадают." + }, + "newAccountCreated": { + "message": "Ваш аккаунт создан! Теперь вы можете войти в систему." + }, + "masterPassSent": { + "message": "Мы отправили вам письмо с подсказкой к мастер-паролю." + }, + "verificationCodeRequired": { + "message": "Необходимо ввести код подтверждения." + }, + "invalidVerificationCode": { + "message": "Неверный код подтверждения" + }, + "valueCopied": { + "message": "$VALUE$ скопировано", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Не удалось автоматически заполнить выбранный элемент на этой странице. Скопируйте и вставьте логин/пароль из своего хранилища." + }, + "loggedOut": { + "message": "Вы вышли из хранилища" + }, + "loginExpired": { + "message": "Истек срок действия вашей сессии." + }, + "logOutConfirmation": { + "message": "Вы действительно хотите выйти?" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Нет" + }, + "unexpectedError": { + "message": "Произошла непредвиденная ошибка." + }, + "nameRequired": { + "message": "Необходимо название." + }, + "addedFolder": { + "message": "Папка добавлена" + }, + "changeMasterPass": { + "message": "Изменить мастер-пароль" + }, + "changeMasterPasswordConfirmation": { + "message": "Вы можете изменить свой мастер-пароль на bitwarden.com. Перейти на сайт сейчас?" + }, + "twoStepLoginConfirmation": { + "message": "Двухфакторная аутентификация делает ваш аккаунт более защищенным, требуя подтверждения входа на другом устройстве, например, ключом безопасности, приложением-аутентификатором, SMS, телефонным звонком или письмом. Двухфакторная аутентификация включается на bitwarden.com. Перейти на сайт сейчас?" + }, + "editedFolder": { + "message": "Папка отредактирована" + }, + "deleteFolderConfirmation": { + "message": "Удалить эту папку?" + }, + "deletedFolder": { + "message": "Папка удалена" + }, + "gettingStartedTutorial": { + "message": "Учебник по началу работы" + }, + "gettingStartedTutorialVideo": { + "message": "Посмотрите небольшой обучающий материал, чтобы узнать, как получить максимальную отдачу от расширения браузера." + }, + "syncingComplete": { + "message": "Синхронизация завершена" + }, + "syncingFailed": { + "message": "Ошибка синхронизации" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "Элемент добавлен" + }, + "editedItem": { + "message": "Элемент изменен" + }, + "deleteItemConfirmation": { + "message": "Вы действительно хотите отправить в корзину?" + }, + "deletedItem": { + "message": "Элемент отправлен в корзину" + }, + "overwritePassword": { + "message": "Перезаписать пароль" + }, + "overwritePasswordConfirmation": { + "message": "Вы хотите перезаписать текущий пароль?" + }, + "overwriteUsername": { + "message": "Перезаписать имя пользователя" + }, + "overwriteUsernameConfirmation": { + "message": "Вы хотите перезаписать текущее имя пользователя?" + }, + "searchFolder": { + "message": "Поиск в папке" + }, + "searchCollection": { + "message": "Поиск в коллекции" + }, + "searchType": { + "message": "Тип поиска" + }, + "noneFolder": { + "message": "Без папки", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Отключить уведомление о добавлении логина" + }, + "addLoginNotificationDesc": { + "message": "Уведомление о добавлении логина автоматически предложит вам сохранить новые логины в хранилище." + }, + "dontShowCardsCurrentTab": { + "message": "Не показывать карты на вкладке" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Карты из вашего хранилища перечислены на 'Текущей вкладке' для упрощения доступа к автозаполнению." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Не показывать Личности на вкладке" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Должен ли Bitwarden запомнить этот пароль?" + }, + "notificationAddSave": { + "message": "Сохранить" + }, + "disableChangedPasswordNotification": { + "message": "Отключить уведомление об изменении пароля" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Уведомление об изменении пароля автоматически предложит вам обновить пароль входа в хранилище, когда обнаружит, что вы изменили его на веб-сайте." + }, + "notificationChangeDesc": { + "message": "Обновить этот пароль в Bitwarden?" + }, + "notificationChangeSave": { + "message": "Обновить" + }, + "disableContextMenuItem": { + "message": "Отключить опции контекстного меню" + }, + "disableContextMenuItemDesc": { + "message": "Опции контекстного меню обеспечивают быстрый доступ к генератору паролей и логинам для сайта на текущей вкладке." + }, + "defaultUriMatchDetection": { + "message": "Обнаружение совпадения URI по умолчанию", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Выберите стандартный способ определения соответствия URI для логинов при выполнении таких действий, как автоматическое заполнение." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Изменение цветовой темы приложения." + }, + "dark": { + "message": "Темная", + "description": "Dark color" + }, + "light": { + "message": "Светлая", + "description": "Light color" + }, + "solarizedDark": { + "message": "Солнечная темная", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Для экспорта данных из хранилища введите мастер-пароль." + }, + "shared": { + "message": "Общие" + }, + "learnOrg": { + "message": "Узнать об организациях" + }, + "learnOrgConfirmation": { + "message": "Bitwarden позволяет делиться элементами вашего хранилища с другими пользователями с помощью организации. Хотите посетить сайт bitwarden.com, чтобы узнать больше?" + }, + "moveToOrganization": { + "message": "Переместить в организацию" + }, + "share": { + "message": "Поделиться" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ перемещен в $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Выберите организацию, в которую вы хотите переместить этот элемент. При перемещении в организацию право собственности на элемент переходит к этой организации. Вы больше не будете прямым владельцем этого элемента после его перемещения." + }, + "learnMore": { + "message": "Подробнее" + }, + "authenticatorKeyTotp": { + "message": "Ключ проверки подлинности (TOTP)" + }, + "verificationCodeTotp": { + "message": "Код подтверждения (TOTP)" + }, + "copyVerificationCode": { + "message": "Скопировать код подтверждения" + }, + "attachments": { + "message": "Вложения" + }, + "deleteAttachment": { + "message": "Удалить вложение" + }, + "deleteAttachmentConfirmation": { + "message": "Вы действительно хотите удалить это вложение?" + }, + "deletedAttachment": { + "message": "Вложение удалено" + }, + "newAttachment": { + "message": "Добавить новое вложение" + }, + "noAttachments": { + "message": "Без вложений." + }, + "attachmentSaved": { + "message": "Вложение сохранено." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Выберите файл." + }, + "maxFileSize": { + "message": "Максимальный размер файла 500 МБ." + }, + "featureUnavailable": { + "message": "Функция недоступна" + }, + "updateKey": { + "message": "Вы не можете использовать эту функцию, пока не обновите свой ключ шифрования." + }, + "premiumMembership": { + "message": "Премиум" + }, + "premiumManage": { + "message": "Управление Премиум" + }, + "premiumManageAlert": { + "message": "Вы можете управлять Премиум на bitwarden.com. Перейти на сайт сейчас?" + }, + "premiumRefresh": { + "message": "Обновить Премиум" + }, + "premiumNotCurrentMember": { + "message": "На текущий момент у вас отсутствует Премиум." + }, + "premiumSignUpAndGet": { + "message": "Подпишитесь на Премиум и получите:" + }, + "ppremiumSignUpStorage": { + "message": "1 ГБ зашифрованного хранилища для вложенных файлов." + }, + "ppremiumSignUpTwoStep": { + "message": "Дополнительные варианты двухфакторной аутентификации, такие как YubiKey, FIDO U2F и Duo." + }, + "ppremiumSignUpReports": { + "message": "Гигиена паролей, здоровье аккаунта и отчеты об утечках данных для обеспечения безопасности вашего хранилища." + }, + "ppremiumSignUpTotp": { + "message": "TOTP-генератор кодов (2ФА) для логинов в хранилище." + }, + "ppremiumSignUpSupport": { + "message": "Приоритетная поддержка." + }, + "ppremiumSignUpFuture": { + "message": "Все будущие функции Премиум. Их будет больше!" + }, + "premiumPurchase": { + "message": "Купить Премиум" + }, + "premiumPurchaseAlert": { + "message": "Вы можете купить Премиум на bitwarden.com. Перейти на сайт сейчас?" + }, + "premiumCurrentMember": { + "message": "У вас есть Премиум!" + }, + "premiumCurrentMemberThanks": { + "message": "Благодарим вас за поддержку Bitwarden." + }, + "premiumPrice": { + "message": "Всего лишь $PRICE$ в год!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Обновление завершено" + }, + "disableAutoTotpCopy": { + "message": "Отключить автоматическое копирование TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Если к вашему логину прикреплен ключ проверки подлинности, то код подтверждения TOTP будет скопирован при автозаполнении логина." + }, + "disableAutoBiometricsPrompt": { + "message": "Не запрашивать биометрию при запуске" + }, + "premiumRequired": { + "message": "Необходим Премиум" + }, + "premiumRequiredDesc": { + "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-порт компьютера. Если у ключа есть кнопка, нажмите ее." + }, + "webAuthnNewTab": { + "message": "Продолжить верификацию 2ФА WebAuthn в новой вкладке." + }, + "webAuthnNewTabOpen": { + "message": "Открыть новую вкладку" + }, + "webAuthnAuthenticate": { + "message": "Аутентификация WebAutn" + }, + "loginUnavailable": { + "message": "Вход недоступен" + }, + "noTwoStepProviders": { + "message": "У этой учетной записи включена двухфакторная аутентификация, однако ни один из настроенных вариантов не поддерживается этим веб-браузером." + }, + "noTwoStepProviders2": { + "message": "Используйте поддерживаемый веб-браузер (например, Chrome) и/или добавьте дополнительные варианты аутентификации, которые поддерживаются в веб-браузерах (например, приложение-аутентификатор)." + }, + "twoStepOptions": { + "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 серии, 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": "Коды подтверждения будут отправлены вам по электронной почте." + }, + "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-адреса среды сохранены." + }, + "enableAutoFillOnPageLoad": { + "message": "Включить автозаполнение при загрузке страницы" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "При обнаружении формы входа выполняется автозаполнение во время загрузки веб-страницы." + }, + "experimentalFeature": { + "message": "Это экспериментальная функция. Используйте на свой страх и риск." + }, + "defaultAutoFillOnPageLoad": { + "message": "Настройка автозаполнения по умолчанию для логинов" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "После включения автозаполнения при загрузке страницы вы можете включить или отключить эту функцию для отдельных логинов. Это настройка по умолчанию для логинов, которые не были настроены отдельно." + }, + "itemAutoFillOnPageLoad": { + "message": "Автозаполнение при загрузке страницы (если включено в настройках)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Использовать настройки по умолчанию" + }, + "autoFillOnPageLoadYes": { + "message": "Автозаполнение при загрузке страницы" + }, + "autoFillOnPageLoadNo": { + "message": "Не заполнять автоматически при загрузке страницы" + }, + "commandOpenPopup": { + "message": "Открыть хранилище во всплывающем окне" + }, + "commandOpenSidebar": { + "message": "Открыть хранилище в боковой панели" + }, + "commandAutofillDesc": { + "message": "Автозаполнение последнего использованного логина для текущего веб-сайта." + }, + "commandGeneratePasswordDesc": { + "message": "Сгенерировать и скопировать новый случайный пароль в буфер обмена." + }, + "commandLockVaultDesc": { + "message": "Заблокировать хранилище" + }, + "privateModeWarning": { + "message": "Частный режим - экспериментальный, некоторые функции ограничены." + }, + "customFields": { + "message": "Пользовательские поля" + }, + "copyValue": { + "message": "Скопировать значение" + }, + "value": { + "message": "Значение" + }, + "newCustomField": { + "message": "Новое пользовательское поле" + }, + "dragToSort": { + "message": "Перетащите для сортировки" + }, + "cfTypeText": { + "message": "Текстовое" + }, + "cfTypeHidden": { + "message": "Скрытое" + }, + "cfTypeBoolean": { + "message": "Логическое" + }, + "cfTypeLinked": { + "message": "Связано", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Связанное значение", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Щелчок за пределами этого окна для просмотра кода проверки из электронной почты приведет к его закрытию. Открыть bitwarden в новом окне?" + }, + "popupU2fCloseMessage": { + "message": "Этот браузер не может обрабатывать запросы U2F в этом всплывающем окне. Вы хотите открыть это всплывающее окно в новом окне, чтобы иметь возможность войти в систему, используя U2F?" + }, + "disableFavicon": { + "message": "Отключить значки веб-сайтов" + }, + "disableFaviconDesc": { + "message": "Значки веб-сайтов отображаются рядом с каждым элементом в вашем хранилище." + }, + "disableBadgeCounter": { + "message": "Отключить счетчик значка" + }, + "disableBadgeCounterDesc": { + "message": "Счетчик значка показывает, сколько в вашем хранилище логинов для текущей страницы." + }, + "cardholderName": { + "message": "Имя владельца карты" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Тип карты" + }, + "expirationMonth": { + "message": "Месяц" + }, + "expirationYear": { + "message": "Год" + }, + "expiration": { + "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": "Декабрь" + }, + "securityCode": { + "message": "Код безопасности" + }, + "ex": { + "message": "напр." + }, + "title": { + "message": "Обращение" + }, + "mr": { + "message": "Г-н" + }, + "mrs": { + "message": "Г-жа" + }, + "ms": { + "message": "Проф." + }, + "dr": { + "message": "Тов." + }, + "firstName": { + "message": "Имя" + }, + "middleName": { + "message": "Отчество" + }, + "lastName": { + "message": "Фамилия" + }, + "fullName": { + "message": "Полное имя" + }, + "identityName": { + "message": "Имя" + }, + "company": { + "message": "Компания" + }, + "ssn": { + "message": "Номер социального страхования" + }, + "passportNumber": { + "message": "Номер паспорта" + }, + "licenseNumber": { + "message": "ИНН" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адрес" + }, + "address1": { + "message": "Строка адреса 1" + }, + "address2": { + "message": "Строка адреса 2" + }, + "address3": { + "message": "Строка адреса 3" + }, + "cityTown": { + "message": "Город/Поселок" + }, + "stateProvince": { + "message": "Регион / Область" + }, + "zipPostalCode": { + "message": "Почтовый индекс" + }, + "country": { + "message": "Страна" + }, + "type": { + "message": "Тип" + }, + "typeLogin": { + "message": "Логин" + }, + "typeLogins": { + "message": "Логины" + }, + "typeSecureNote": { + "message": "Защищенная заметка" + }, + "typeCard": { + "message": "Карта" + }, + "typeIdentity": { + "message": "Личная информация" + }, + "passwordHistory": { + "message": "История паролей" + }, + "back": { + "message": "Назад" + }, + "collections": { + "message": "Коллекции" + }, + "favorites": { + "message": "Избранные" + }, + "popOutNewWindow": { + "message": "Перейти в новое окно" + }, + "refresh": { + "message": "Обновить" + }, + "cards": { + "message": "Карты" + }, + "identities": { + "message": "Личные данные" + }, + "logins": { + "message": "Логины" + }, + "secureNotes": { + "message": "Защищенные заметки" + }, + "clear": { + "message": "Очистить", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Переключить настройки" + }, + "toggleCurrentUris": { + "message": "Переключить текущий URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Текущий URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Организация", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Типы элементов" + }, + "allItems": { + "message": "Все элементы" + }, + "noPasswordsInList": { + "message": "Нет паролей для отображения." + }, + "remove": { + "message": "Удалить" + }, + "default": { + "message": "По умолчанию" + }, + "dateUpdated": { + "message": "Обновлено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль обновлен", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "Установите PIN-код для разблокировки Bitwarden. Настройки PIN-кода будут сброшены, если вы когда-либо полностью выйдете из приложения." + }, + "pinRequired": { + "message": "Необходим PIN-код." + }, + "invalidPin": { + "message": "Неверный PIN-код." + }, + "unlockWithBiometrics": { + "message": "Разблокировать с помощью биометрии" + }, + "awaitDesktop": { + "message": "Ожидание подтверждения с компьютера" + }, + "awaitDesktopDesc": { + "message": "Для включения биометрии в браузере, подтвердите это в приложении Bitwarden для компьютера." + }, + "lockWithMasterPassOnRestart": { + "message": "Блокировать мастер-паролем при перезапуске браузера" + }, + "selectOneCollection": { + "message": "Необходимо выбрать хотя бы одну коллекцию." + }, + "cloneItem": { + "message": "Клонировать элемент" + }, + "clone": { + "message": "Клонировать" + }, + "passwordGeneratorPolicyInEffect": { + "message": "На настройки генератора влияют одна или несколько политик организации." + }, + "vaultTimeoutAction": { + "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": "Элемент восстановлен" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "По истечении тайм-аута будет выполнен выход, что приведет к отмене всех прав доступа к вашему хранилищу и потребует онлайн-аутентификации. Вы уверены, что хотите использовать этот параметр?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Подтверждение действия по тайм-ауту" + }, + "autoFillAndSave": { + "message": "Заполнить и сохранить" + }, + "autoFillSuccessAndSavedUri": { + "message": "Автозаполненный элемент и сохраненный URI" + }, + "autoFillSuccess": { + "message": "Автозаполненный элемент" + }, + "setMasterPassword": { + "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": "Условия предоставления услуг и Политика конфиденциальности не были подтверждены." + }, + "termsOfService": { + "message": "Условия предоставления услуг" + }, + "privacyPolicy": { + "message": "Политика конфиденциальности" + }, + "hintEqualsPassword": { + "message": "Подсказка для пароля не может совпадать с паролем." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Проверка синхронизации на компьютере" + }, + "desktopIntegrationVerificationText": { + "message": "Пожалуйста, убедитесь, что приложение для компьютера отображает этот отпечаток: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Интеграция с браузером не включена" + }, + "desktopIntegrationDisabledDesc": { + "message": "Пожалуйста, включите интеграцию с браузером в настройках приложения Bitwarden для компьютера." + }, + "startDesktopTitle": { + "message": "Запустить приложение Bitwarden для компьютера" + }, + "startDesktopDesc": { + "message": "Перед использованием разблокировки с помощью биометрии необходимо запустить приложение Bitwarden для компьютера." + }, + "errorEnableBiometricTitle": { + "message": "Не удается включить биометрию" + }, + "errorEnableBiometricDesc": { + "message": "Действие было отменено приложением для компьютера" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Приложению для компьютера не удалось создать защищенный канал подключения. Пожалуйста, попробуйте еще раз" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Соединение с приложением для компьютера прервано" + }, + "nativeMessagingWrongUserDesc": { + "message": "Приложение для компьютера авторизовано под другим аккаунтом. Необходимо чтобы оба приложения были авторизованы под одной учетной записью." + }, + "nativeMessagingWrongUserTitle": { + "message": "Несоответствие аккаунта" + }, + "biometricsNotEnabledTitle": { + "message": "Биометрия не включена" + }, + "biometricsNotEnabledDesc": { + "message": "Для активации биометрии в браузере сначала необходимо включить биометрию в приложении для компьютера." + }, + "biometricsNotSupportedTitle": { + "message": "Биометрия не поддерживается" + }, + "biometricsNotSupportedDesc": { + "message": "Биометрия в браузере не поддерживается этом устройстве." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Разрешение не представлено" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Без разрешения на взаимодействие с Bitwarden для компьютера биометрия в расширении браузера работать не сможет. Попробуйте еще раз." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Ошибка при запросе разрешения" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Это действие невозможно выполнить в боковой панели. Попробуйте снова в всплывающем или отдельном окне." + }, + "personalOwnershipSubmitError": { + "message": "В соответствии с корпоративной политикой вам запрещено сохранять элементы в личном хранилище. Измените владельца на организацию и выберите из доступных Коллекций." + }, + "personalOwnershipPolicyInEffect": { + "message": "Политика организации влияет на ваши варианты владения." + }, + "excludedDomains": { + "message": "Исключенные домены" + }, + "excludedDomainsDesc": { + "message": "Bitwarden не будет предлагать сохранить логины для этих доменов. Для вступления изменений в силу необходимо обновить страницу." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ – некорректно указанный домен", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Поиск Send’ов", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Добавить Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Текст" + }, + "sendTypeFile": { + "message": "Файл" + }, + "allSends": { + "message": "Все Send’ы", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Достигнут максимум обращений", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Срок истек" + }, + "pendingDeletion": { + "message": "Ожидание удаления" + }, + "passwordProtected": { + "message": "Защищено паролем" + }, + "copySendLink": { + "message": "Скопировать ссылку на Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Удалить пароль" + }, + "delete": { + "message": "Удалить" + }, + "removedPassword": { + "message": "Пароль удален" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "Отключено" + }, + "removePasswordConfirmation": { + "message": "Вы уверены, что хотите удалить пароль?" + }, + "deleteSend": { + "message": "Удалить Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "Выберите тип Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Понятное имя для описания этой Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 день" + }, + "days": { + "message": "$DAYS$ дн.", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Пользовательский" + }, + "maximumAccessCount": { + "message": "Максимум обращений" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "Отключить эту Send, чтобы никто не мог получить к ней доступ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Скопировать ссылку на эту Send в буфер обмена после сохранения.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст, который вы хотите отправить." + }, + "sendHideText": { + "message": "Скрыть текст этой Send по умолчанию.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Текущих обращений" + }, + "createSend": { + "message": "Создание новой Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Новый пароль" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Для выбора файла откройте расширение в боковой панели (если возможно) или перейдите в новое окно, нажав на этот баннер." + }, + "sendFirefoxFileWarning": { + "message": "Для выбора файла с помощью Firefox, откройте расширение в боковой панели или перейдите в новое окно, нажав на этот баннер." + }, + "sendSafariFileWarning": { + "message": "Для выбора файла с помощью Safari, перейдите в новое окно, нажав на этот баннер." + }, + "sendFileCalloutHeader": { + "message": "Перед тем, как начать" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Для использования календарного стиля выбора даты,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "нажмите здесь", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "для открытия в новом окне.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Срок истечения указан некорректно." + }, + "deletionDateIsInvalid": { + "message": "Срок удаления указан некорректно." + }, + "expirationDateAndTimeRequired": { + "message": "Необходимо указать дату и время срока истечения." + }, + "deletionDateAndTimeRequired": { + "message": "Необходимо указать дату и время срока удаления." + }, + "dateParsingError": { + "message": "Произошла ошибка при сохранении данных о сроках удаления и истечения." + }, + "hideEmail": { + "message": "Скрыть мой адрес email от получателей." + }, + "sendOptionsPolicyInEffect": { + "message": "На параметры Send влияют одна или несколько политик организации." + }, + "passwordPrompt": { + "message": "Повторный запрос мастер-пароля" + }, + "passwordConfirmation": { + "message": "Подтверждение мастер-пароля" + }, + "passwordConfirmationDesc": { + "message": "Это действие защищено. Для продолжения введите свой мастер-пароль, чтобы подтвердить свою личность." + }, + "emailVerificationRequired": { + "message": "Требуется подтверждение электронной почты" + }, + "emailVerificationRequiredDesc": { + "message": "Для использования этой функции необходимо подтвердить ваш email. Вы можете это сделать в веб-хранилище." + }, + "updatedMasterPassword": { + "message": "Мастер-пароль обновлен" + }, + "updateMasterPassword": { + "message": "Обновить мастер-пароль" + }, + "updateMasterPasswordWarning": { + "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущая сессия будет завершена, потребуется повторный вход. Активные сессии на других устройствах могут оставаться активными в течение одного часа." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматическая регистрация" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "В этой организации действует корпоративная политика, которая автоматически зарегистрирует вас на сброс пароля. Регистрация позволит администраторам организации изменить ваш мастер-пароль." + }, + "selectFolder": { + "message": "Выберите папку..." + }, + "ssoCompleteRegistration": { + "message": "Для завершения процесса авторизации при помощи SSO, установите мастер-пароль для доступа к вашему хранилищу и его защиты." + }, + "hours": { + "message": "Час." + }, + "minutes": { + "message": "Мин." + }, + "vaultTimeoutPolicyInEffect": { + "message": "Политики вашей организации влияют на тайм-аут хранилища. Максимально допустимый тайм-аут хранилища составляет $HOURS$ час. и $MINUTES$ мин.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Время ожидания превышает ограничения, установленные вашей организацией." + }, + "vaultExportDisabled": { + "message": "Экспорт хранилища отключен" + }, + "personalVaultExportPolicyInEffect": { + "message": "Экспорт вашего личного хранилища запрещен одной или несколькими политиками организации." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Невозможно определить элемент формы. Попробуйте вместо этого проверить HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Уникальный идентификатор не найден." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ использует SSO с собственным сервером ключей. Для авторизации членам этой организации больше не требуется мастер-пароль.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Покинуть организацию" + }, + "removeMasterPassword": { + "message": "Удалить мастер-пароль" + }, + "removedMasterPassword": { + "message": "Мастер-пароль удален." + }, + "leaveOrganizationConfirmation": { + "message": "Вы действительно хотите покинуть эту организацию?" + }, + "leftOrganization": { + "message": "Вы покинули организацию." + }, + "toggleCharacterCount": { + "message": "Показать количество символов" + }, + "sessionTimeout": { + "message": "Время вашей сессии истекло. Пожалуйста, вернитесь и попробуйте войти снова." + }, + "exportingPersonalVaultTitle": { + "message": "Экспорт личного хранилища" + }, + "exportingPersonalVaultDescription": { + "message": "Будут экспортированы только личные элементы хранилища, связанные с $EMAIL$. Элементы хранилища организации включены не будут.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "Ошибка" + }, + "regenerateUsername": { + "message": "Пересоздать имя пользователя" + }, + "generateUsername": { + "message": "Создать имя пользователя" + }, + "usernameType": { + "message": "Тип имени пользователя" + }, + "plusAddressedEmail": { + "message": "Плюс-адресованные email", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Использовать возможности суб-адресации вашего провайдера электронной почты." + }, + "catchallEmail": { + "message": "Catch-all-адрес электронной почты" + }, + "catchallEmailDesc": { + "message": "Использовать настроенную в вашем домене почту catch-all." + }, + "random": { + "message": "Случайно" + }, + "randomWord": { + "message": "Случайное слово" + }, + "websiteName": { + "message": "Название сайта" + }, + "whatWouldYouLikeToGenerate": { + "message": "Что вы хотите сгенерировать?" + }, + "passwordType": { + "message": "Тип пароля" + }, + "service": { + "message": "Служба" + } +} diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json new file mode 100644 index 0000000000..d2209e31b4 --- /dev/null +++ b/apps/browser/src/_locales/si/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "බිට්වාඩන්" + }, + "extName": { + "message": "බිට්වාඩන් - නොමිලේ මුරපදය කළමනාකරු", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "ඔබගේ සියලු උපාංග සඳහා ආරක්ෂිත සහ නොමිලේ මුරපද කළමණාකරුවෙකු.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "ඔබගේ ආරක්ෂිත සුරක්ෂිතාගාරය වෙත පිවිසීමට හෝ නව ගිණුමක් නිර්මාණය කරන්න." + }, + "createAccount": { + "message": "ගිණුමක් සාදන්න" + }, + "login": { + "message": "පිවිසෙන්න" + }, + "enterpriseSingleSignOn": { + "message": "ව්යවසාය තනි සංඥා මත" + }, + "cancel": { + "message": "අවලංගු කරන්න" + }, + "close": { + "message": "වසන්න" + }, + "submit": { + "message": "යොමන්න" + }, + "emailAddress": { + "message": "වි-තැපැල් ලිපිනය" + }, + "masterPass": { + "message": "ප්රධාන මුරපදය" + }, + "masterPassDesc": { + "message": "ප්රධාන මුරපදය යනු ඔබේ සුරක්ෂිතාගාරය වෙත ප්රවේශ වීමට ඔබ භාවිතා කරන මුරපදයයි. ඔබ ඔබේ ප්රධාන මුරපදය අමතක නොකිරීම ඉතා වැදගත් වේ. ඔබට එය අමතක වූ අවස්ථාවකදී මුරපදය නැවත ලබා ගැනීමට ක්රමයක් නොමැත." + }, + "masterPassHintDesc": { + "message": "ඔබ එය අමතක නම් ඔබේ මුරපදය මතක තබා ගැනීමට ප්රධාන මුරපද ඉඟියක් ඔබට උපකාර කළ හැකිය." + }, + "reTypeMasterPass": { + "message": "නැවත වර්ගය මාස්ටර් මුරපදය" + }, + "masterPassHint": { + "message": "ප්රධාන මුරපදය ඉඟියක් (විකල්ප)" + }, + "tab": { + "message": "ටැබ්" + }, + "myVault": { + "message": "මගේ සුරක්ෂිතාගාරය" + }, + "tools": { + "message": "මෙවලම්" + }, + "settings": { + "message": "සැකසුම්" + }, + "currentTab": { + "message": "වත්මන් ටැබ්" + }, + "copyPassword": { + "message": "මුරපදය පිටපත් කරන්න" + }, + "copyNote": { + "message": "සටහන පිටපත් කරන්න" + }, + "copyUri": { + "message": "පිටපත් කරන්න" + }, + "copyUsername": { + "message": "පරිශීලකනාමය පිටපත් කරන්න" + }, + "copyNumber": { + "message": "අංකය පිටපත් කරන්න" + }, + "copySecurityCode": { + "message": "ආරක්ෂක කේතය පිටපත් කරන්න" + }, + "autoFill": { + "message": "ස්වයං-පිරවීම" + }, + "generatePasswordCopied": { + "message": "මුරපදය ජනනය (පිටපත්)" + }, + "copyElementIdentifier": { + "message": "අභිරුචි ක්ෂේත්ර නම පිටපත් කරන්න" + }, + "noMatchingLogins": { + "message": "ගැලපෙන පිවිසුම් නොමැත." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "වත්මන් බ්රව්සර් ටැබය සඳහා ස්වයංක්රීයව පිරවීම සඳහා කිසිදු පිවිසුම් නොමැත." + }, + "addLogin": { + "message": "පිවිසුමක් එකතු කරන්න" + }, + "addItem": { + "message": "අයිතමය එකතු කරන්න" + }, + "passwordHint": { + "message": "මුරපදය ඉඟිය" + }, + "enterEmailToGetHint": { + "message": "ඔබගේ ප්රධාන මුරපදය ඉඟියක් ලබා ගැනීමට ඔබගේ ගිණුම ඊ-තැපැල් ලිපිනය ඇතුලත් කරන්න." + }, + "getMasterPasswordHint": { + "message": "ප්රධාන මුරපදය ඉඟියක් ලබා ගන්න" + }, + "continue": { + "message": "ඉදිරියට" + }, + "sendVerificationCode": { + "message": "ඔබගේ විද්යුත් තැපෑලට සත්යාපන කේතයක් යවන්න" + }, + "sendCode": { + "message": "කේතය යවන්න" + }, + "codeSent": { + "message": "යවන ලද කේතය" + }, + "verificationCode": { + "message": "සත්යාපන කේතය" + }, + "confirmIdentity": { + "message": "දිගටම කරගෙන යාමට ඔබගේ අනන්යතාවය තහවුරු කරන්න." + }, + "account": { + "message": "ගිණුම" + }, + "changeMasterPassword": { + "message": "ප්රධාන මුරපදය වෙනස්" + }, + "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." + }, + "twoStepLogin": { + "message": "ද්වි-පියවර ලොගින් වන්න" + }, + "logOut": { + "message": "නික්මෙන්න" + }, + "about": { + "message": "පිලිබඳව" + }, + "version": { + "message": "අනුවාදය" + }, + "save": { + "message": "සුරකින්න" + }, + "move": { + "message": "ගෙනයන්න" + }, + "addFolder": { + "message": "බහාලුම එකතු කරන්න" + }, + "name": { + "message": "නම" + }, + "editFolder": { + "message": "බහාලුම සංස්කරණය" + }, + "deleteFolder": { + "message": "ෆෝල්ඩරය මකන්න" + }, + "folders": { + "message": "බහාලුම්" + }, + "noFolders": { + "message": "ලැයිස්තු ගත කිරීමට ෆෝල්ඩර නොමැත." + }, + "helpFeedback": { + "message": "උදව් සහ ප්රතිපෝෂණ" + }, + "sync": { + "message": "සමමුහූර්තනය" + }, + "syncVaultNow": { + "message": "සුරක්ෂිතාගාරය දැන් සමමුහුර්ත කරන්න" + }, + "lastSync": { + "message": "අවසන් සමමුහුර්ත කරන්න:" + }, + "passGen": { + "message": "රහස් පදය උත්පාදක යන්ත්රය" + }, + "generator": { + "message": "උත්පාදක යන්ත්රය", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "ඔබේ පිවිසුම් සඳහා ශක්තිමත්, අද්විතීය මුරපද ස්වයංක්රීයව ජනනය කරන්න." + }, + "bitWebVault": { + "message": "බිට්වර්ඩන් වෙබ් සුරක්ෂිතාගාරය" + }, + "importItems": { + "message": "ආනයන අයිතම" + }, + "select": { + "message": "තෝරන්න" + }, + "generatePassword": { + "message": "මුරපදය ජනනය කරන්න" + }, + "regeneratePassword": { + "message": "මුරපදය ප්රතිජනනය" + }, + "options": { + "message": "විකල්ප" + }, + "length": { + "message": "දිග" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "වචන ගණන" + }, + "wordSeparator": { + "message": "වචනය ෙවන්" + }, + "capitalize": { + "message": "ප්රාග්ධනීකරණය", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "අංකය ඇතුළත් කරන්න" + }, + "minNumbers": { + "message": "අවම අංක" + }, + "minSpecial": { + "message": "අවම විශේෂ" + }, + "avoidAmbChar": { + "message": "අපැහැදිලි චරිත වලින් වළකින්න" + }, + "searchVault": { + "message": "සුරක්ෂිතාගාරය සොයන්න" + }, + "edit": { + "message": "සංස්කරණය" + }, + "view": { + "message": "දකින්න" + }, + "noItemsInList": { + "message": "ලැයිස්තු ගත කිරීමට අයිතම නොමැත." + }, + "itemInformation": { + "message": "අයිතම තොරතුරු" + }, + "username": { + "message": "පරිශීලක නාමය" + }, + "password": { + "message": "මුරපදය" + }, + "passphrase": { + "message": "පැස්ප්රස්" + }, + "favorite": { + "message": "ප්‍රියතමය" + }, + "notes": { + "message": "සටහන්" + }, + "note": { + "message": "සටහන" + }, + "editItem": { + "message": "අයිතම සංස්කරණය කරන්න" + }, + "folder": { + "message": "බහාලුම" + }, + "deleteItem": { + "message": "අයිතමය මකන්න" + }, + "viewItem": { + "message": "දැක්ම අයිතමය" + }, + "launch": { + "message": "දියත්කරන්න" + }, + "website": { + "message": "වියමන අඩවිය" + }, + "toggleVisibility": { + "message": "දෘශ්යතාව ටොගල් කරන්න" + }, + "manage": { + "message": "කළමනාකරණය" + }, + "other": { + "message": "වෙනත්" + }, + "rateExtension": { + "message": "දිගුව අනුපාතය" + }, + "rateExtensionDesc": { + "message": "කරුණාකර හොඳ සමාලෝචනයකින් අපට උදව් කිරීම ගැන සලකා බලන්න!" + }, + "browserNotSupportClipboard": { + "message": "ඔබේ වෙබ් බ්රව්සරය පහසු පසුරු පුවරුවක් පිටපත් කිරීමට සහාය නොදක්වයි. ඒ වෙනුවට එය අතින් පිටපත් කරන්න." + }, + "verifyIdentity": { + "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": "වලංගු නොවන ප්රධාන මුරපදය" + }, + "vaultTimeout": { + "message": "සුරක්ෂිතාගාරය වේලාව" + }, + "lockNow": { + "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" + }, + "onLocked": { + "message": "පද්ධතිය ලොක් මත" + }, + "onRestart": { + "message": "බ්රව්සරය නැවත ආරම්භ" + }, + "never": { + "message": "කිසි විටෙකත්" + }, + "security": { + "message": "ආරක්ෂාව" + }, + "errorOccurred": { + "message": "දෝෂයක් සිදුවී ඇත" + }, + "emailRequired": { + "message": "විද්යුත් තැපැල් ලිපිනය අවශ්ය වේ." + }, + "invalidEmail": { + "message": "වලංගු නොවන විද්යුත් තැපැල් ලිපිනය." + }, + "masterPassRequired": { + "message": "ප්රධාන මුරපදය අවශ්ය වේ." + }, + "masterPassLength": { + "message": "ප්රධාන මුරපදය අවම වශයෙන් අක්ෂර 8 ක් දිගු විය යුතුය." + }, + "masterPassDoesntMatch": { + "message": "ප්රධාන මුරපදය තහවුරු කිරීම නොගැලපේ." + }, + "newAccountCreated": { + "message": "ඔබගේ නව ගිණුම නිර්මාණය කර ඇත! ඔබට දැන් ලොග් විය හැකිය." + }, + "masterPassSent": { + "message": "ඔබගේ ප්රධාන මුරපදය ඉඟියක් සමඟ අපි ඔබට විද්යුත් තැපෑලක් යවා ඇත්තෙමු." + }, + "verificationCodeRequired": { + "message": "සත්යාපන කේතය අවශ්ය වේ." + }, + "invalidVerificationCode": { + "message": "වලංගු නොවන සත්යාපන කේතය" + }, + "valueCopied": { + "message": "$VALUE$ පිටපත් කරන ලදි", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "මෙම පිටුවේ තෝරාගත් අයිතමය ස්වයංක්රීයව පිරවිය නොහැක. ඒ වෙනුවට තොරතුරු පිටපත් කර අලවන්න." + }, + "loggedOut": { + "message": "ලොගින් වී" + }, + "loginExpired": { + "message": "ඔබගේ පිවිසුම් සැසිය කල් ඉකුත් වී ඇත." + }, + "logOutConfirmation": { + "message": "ඔබට ලොග් වීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "yes": { + "message": "ඔව්" + }, + "no": { + "message": "නැත" + }, + "unexpectedError": { + "message": "අනපේක්ෂිත දෝෂයක් සිදුවී ඇත." + }, + "nameRequired": { + "message": "නම අවශ්ය වේ." + }, + "addedFolder": { + "message": "එකතු කරන ලද ෆෝල්ඩරය" + }, + "changeMasterPass": { + "message": "ප්රධාන මුරපදය වෙනස්" + }, + "changeMasterPasswordConfirmation": { + "message": "bitwarden.com වෙබ් සුරක්ෂිතාගාරයේ ඔබේ ප්රධාන මුරපදය වෙනස් කළ හැකිය. ඔබට දැන් වෙබ් අඩවියට පිවිසීමට අවශ්යද?" + }, + "twoStepLoginConfirmation": { + "message": "ආරක්ෂක යතුරක්, සත්යාපන යෙදුම, කෙටි පණිවුඩ, දුරකථන ඇමතුමක් හෝ විද්යුත් තැපෑල වැනි වෙනත් උපාංගයක් සමඟ ඔබේ පිවිසුම සත්යාපනය කිරීමට ඔබට අවශ්ය වීමෙන් ද්වි-පියවර පිවිසුම ඔබගේ ගිණුම වඩාත් සුරක්ෂිත කරයි. බිට්වොන්.com වෙබ් සුරක්ෂිතාගාරයේ ද්වි-පියවර පිවිසුම සක්රීය කළ හැකිය. ඔබට දැන් වෙබ් අඩවියට පිවිසීමට අවශ්යද?" + }, + "editedFolder": { + "message": "සංස්කරණය ෆෝල්ඩරය" + }, + "deleteFolderConfirmation": { + "message": "ඔබට මෙම ෆෝල්ඩරය මකා දැමීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "deletedFolder": { + "message": "මකාදැමූ ෆෝල්ඩරය" + }, + "gettingStartedTutorial": { + "message": "ආරම්භ නිබන්ධනය ලබා ගැනීම" + }, + "gettingStartedTutorialVideo": { + "message": "බ්රව්සර් දිගුවෙන් උපරිම ප්රයෝජන ලබා ගන්නේ කෙසේදැයි ඉගෙන ගැනීමට අපගේ ආරම්භ නිබන්ධනය බලන්න." + }, + "syncingComplete": { + "message": "සම්පූර්ණ සමමුහුර්ත" + }, + "syncingFailed": { + "message": "සමමුහුර්ත කිරීම අසාර්ථකයි" + }, + "passwordCopied": { + "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": "නව වර්ගය" + }, + "addedItem": { + "message": "එකතු කරන ලද අයිතමය" + }, + "editedItem": { + "message": "සංස්කරණය කරන ලද අයිතමය" + }, + "deleteItemConfirmation": { + "message": "ඔබට ඇත්තටම කුණු කූඩයට යැවීමට අවශ්යද?" + }, + "deletedItem": { + "message": "කුණු කූඩයට යවන ලද අයිතමය" + }, + "overwritePassword": { + "message": "මුරපදය නැවත ලියන්න" + }, + "overwritePasswordConfirmation": { + "message": "ඔබට වත්මන් මුරපදය නැවත ලිවීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "බහාලුම සොයන්න" + }, + "searchCollection": { + "message": "සෙවුම් එකතුව" + }, + "searchType": { + "message": "සෙවුම් වර්ගය" + }, + "noneFolder": { + "message": "බහලුමක් නැත", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "අක්රීය කරන්න ලොගින් වන්න නිවේදනය" + }, + "addLoginNotificationDesc": { + "message": "මෙම “ලොගින් වන්න නිවේදනය එකතු කරන්න” ස්වයංක්රීයව ඔබ පළමු වරට ඔවුන් තුලට ප්රවිෂ්ට සෑම අවස්ථාවකදීම ඔබගේ සුරක්ෂිතාගාරය නව පිවිසුම් බේරා ගැනීමට ඔබෙන් විමසනු." + }, + "dontShowCardsCurrentTab": { + "message": "ටැබ් පිටුවේ කාඩ්පත් පෙන්වන්න එපා" + }, + "dontShowCardsCurrentTabDesc": { + "message": "ඔබගේ සුරක්ෂිතාගාරයේ කාඩ්පත් අයිතම පහසුවෙන් ස්වයංක්රීයව පිරවීමේ ප්රවේශය සඳහා 'වත්මන් ටැබ් 'පිටුවේ ලැයිස්තුගත කර ඇත." + }, + "dontShowIdentitiesCurrentTab": { + "message": "ටැබ් පිටුවේ අනන්යතා පෙන්වන්න එපා" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Bitwarden ඔබ වෙනුවෙන් මෙම මුරපදය මතක තබා ගත යුතුද?" + }, + "notificationAddSave": { + "message": "සුරකින්න" + }, + "disableChangedPasswordNotification": { + "message": "වෙනස් කළ මුරපද නිවේදනය අක්රීය කරන්න" + }, + "disableChangedPasswordNotificationDesc": { + "message": "මෙම “වෙනස් මුරපදය නිවේදනය” ස්වයංක්රීයව ඔබ වෙබ් අඩවිය මත එය වෙනස් කර ඇති බව හඳුනාගන්නා සෑම අවස්ථාවකදීම ඔබගේ සුරක්ෂිතාගාරයේ පිවිසුම් මුරපදය යාවත්කාලීන කිරීමට ඔබෙන් විමසනු ඇත." + }, + "notificationChangeDesc": { + "message": "Bitwarden හි මෙම මුරපදය යාවත්කාලීන කිරීමට ඔබට අවශ්යද?" + }, + "notificationChangeSave": { + "message": "යාවත්කාල" + }, + "disableContextMenuItem": { + "message": "සන්දර්භය මෙනු විකල්ප අක්රීය කරන්න" + }, + "disableContextMenuItemDesc": { + "message": "සන්දර්භය මෙනු විකල්පයන් ඔබගේ වත්මන් පටිත්තෙහි ඇති වෙබ් අඩවිය සඳහා මුරපද උත්පාදනය සහ පිවිසුම් සඳහා ඉක්මන් ප්රවේශයක් ලබා දෙයි." + }, + "defaultUriMatchDetection": { + "message": "පෙරනිමි URI තරග හඳුනා", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "එවැනි ස්වයංක්රීය-පිරවීම ලෙස ක්රියා සිදු කරන විට URI තරගය හඳුනා පිවිසුම් සඳහා කටයුතු කරන බව පෙරනිමි මාර්ගය තෝරන්න." + }, + "theme": { + "message": "තේමාව" + }, + "themeDesc": { + "message": "යෙදුමේ වර්ණ තේමාව වෙනස් කරන්න." + }, + "dark": { + "message": "අඳුරු", + "description": "Dark color" + }, + "light": { + "message": "ආලෝකය", + "description": "Light color" + }, + "solarizedDark": { + "message": "අඳුරු අඳුරු", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "ඔබගේ සුරක්ෂිතාගාරය දත්ත අපනයනය කිරීමට ඔබගේ ප්රධාන මුරපදය ඇතුලත් කරන්න." + }, + "shared": { + "message": "බෙදාගත්" + }, + "learnOrg": { + "message": "සංවිධාන ගැන ඉගෙන ගන්න" + }, + "learnOrgConfirmation": { + "message": "සංවිධානයක් භාවිතා කිරීමෙන් ඔබේ සුරක්ෂිතාගාරය අයිතම අන් අය සමඟ බෙදා ගැනීමට Bitwarden ඔබට ඉඩ දෙයි. වැඩි විස්තර දැනගැනීම සඳහා bitwarden.com වෙබ් අඩවියට පිවිසීමට ඔබ කැමතිද?" + }, + "moveToOrganization": { + "message": "සංවිධානය වෙත ගෙනයන්න" + }, + "share": { + "message": "බෙදාගන්න" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ $ORGNAME$වෙත ගෙන ගියේය", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "ඔබ මෙම අයිතමය ගෙන යාමට කැමති සංවිධානයක් තෝරන්න. සංවිධානයක් වෙත යාම එම අයිතමයේ හිමිකාරිත්වය එම සංවිධානයට පැවරේ. එය ගෙන ගිය පසු ඔබ තවදුරටත් මෙම අයිතමයේ සෘජු හිමිකරු වනු ඇත." + }, + "learnMore": { + "message": "වැඩිදුර ඉගෙන ගන්න" + }, + "authenticatorKeyTotp": { + "message": "සත්යාපන යතුර (TOTP)" + }, + "verificationCodeTotp": { + "message": "සත්යාපන කේතය (TOTP)" + }, + "copyVerificationCode": { + "message": "සත්යාපන කේතය පිටපත් කරන්න" + }, + "attachments": { + "message": "ඇමුණුම්" + }, + "deleteAttachment": { + "message": "ඇමුණුම මකන්න" + }, + "deleteAttachmentConfirmation": { + "message": "ඔබට මෙම ඇමුණුම මකා දැමීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "deletedAttachment": { + "message": "මකාදැමූ ඇමුණු" + }, + "newAttachment": { + "message": "නව ඇමුණුමක් එකතු කරන්න" + }, + "noAttachments": { + "message": "ඇමුණුම් නොමැත." + }, + "attachmentSaved": { + "message": "ඇමුණුම ගැලවීම කර ඇත." + }, + "file": { + "message": "ගොනුව" + }, + "selectFile": { + "message": "ගොනුවක් තෝරන්න." + }, + "maxFileSize": { + "message": "උපරිම ගොනු ප්රමාණය 500 MB වේ." + }, + "featureUnavailable": { + "message": "විශේෂාංගය ලබාගත නොහැක" + }, + "updateKey": { + "message": "ඔබ ඔබේ සංකේතාංකන යතුර යාවත්කාලීන කරන තුරු ඔබට මෙම අංගය භාවිතා කළ නොහැක." + }, + "premiumMembership": { + "message": "වාරික සාමාජිකත්වය" + }, + "premiumManage": { + "message": "සාමාජිකත්වය කළමනාකරණය කරන්න" + }, + "premiumManageAlert": { + "message": "බිට්වොන්.com වෙබ් සුරක්ෂිතාගාරයේ ඔබේ සාමාජිකත්වය කළමනාකරණය කළ හැකිය. ඔබට දැන් වෙබ් අඩවියට පිවිසීමට අවශ්යද?" + }, + "premiumRefresh": { + "message": "සාමාජිකත්වය නැවුම් කරන්න" + }, + "premiumNotCurrentMember": { + "message": "ඔබ දැනට වාරික සාමාජිකයෙකු නොවේ." + }, + "premiumSignUpAndGet": { + "message": "වාරික සාමාජිකත්වය සඳහා ලියාපදිංචි වී ලබා ගන්න:" + }, + "ppremiumSignUpStorage": { + "message": "ගොනු ඇමුණුම් සඳහා 1 GB සංකේතාත්මක ගබඩා." + }, + "ppremiumSignUpTwoStep": { + "message": "එවැනි YuBiKey, FIDO U2F, සහ Duo ලෙස අතිරේක පියවර දෙකක් පිවිසුම් විකල්ප." + }, + "ppremiumSignUpReports": { + "message": "ඔබගේ සුරක්ෂිතාගාරය ආරක්ෂිතව තබා ගැනීම සඳහා මුරපදය සනීපාරක්ෂාව, ගිණුම් සෞඛ්යය සහ දත්ත උල්ලං ach නය වාර්තා කරයි." + }, + "ppremiumSignUpTotp": { + "message": "TOTP සත්යාපන කේතය (2FA) ඔබගේ සුරක්ෂිතාගාරයේ පිවිසුම් සඳහා ජනකය." + }, + "ppremiumSignUpSupport": { + "message": "ප්රමුඛතා පාරිභෝගික සහාය." + }, + "ppremiumSignUpFuture": { + "message": "සියලුම අනාගත වාරික විශේෂාංග. තවත් ළඟදීම!" + }, + "premiumPurchase": { + "message": "වාරික මිලදී" + }, + "premiumPurchaseAlert": { + "message": "ඔබට bitwarden.com වෙබ් සුරක්ෂිතාගාරයේ වාරික සාමාජිකත්වය මිලදී ගත හැකිය. ඔබට දැන් වෙබ් අඩවියට පිවිසීමට අවශ්යද?" + }, + "premiumCurrentMember": { + "message": "ඔබ වාරික සාමාජිකයෙක්!" + }, + "premiumCurrentMemberThanks": { + "message": "බිට්වර්ඩන්ට සහාය වීම ගැන ස්තූතියි." + }, + "premiumPrice": { + "message": "සියල්ල $PRICE$ /අවුරුද්ද සඳහා!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "සම්පූර්ණ නැවුම් කරන්න" + }, + "disableAutoTotpCopy": { + "message": "ස්වයංක්රීය TOTP පිටපත් අක්රීය" + }, + "disableAutoTotpCopyDesc": { + "message": "ඔබගේ පිවිසුමට සත්යාපන යතුරක් අමුණා තිබේ නම්, ඔබ පිවිසුම ස්වයංක්රීයව පුරවන සෑම අවස්ථාවකදීම TOTP සත්යාපන කේතය ස්වයංක්රීයව ඔබගේ පසුරු පුවරුවට පිටපත් කරනු ලැබේ." + }, + "disableAutoBiometricsPrompt": { + "message": "දියත් කිරීම සඳහා ජෛව මිතික විද්යාව සඳහා විමසුම් නොකරන්න" + }, + "premiumRequired": { + "message": "වාරික අවශ්ය" + }, + "premiumRequiredDesc": { + "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": "ඔබේ පරිගණකයේ USB පෝට් එකට ඔබගේ YuBiKey ඇතුල් කරන්න, ඉන්පසු එහි බොත්තම ස්පර්ශ කරන්න." + }, + "insertU2f": { + "message": "ඔබේ ආරක්ෂක යතුර ඔබේ පරිගණකයේ USB පෝට් එකට ඇතුල් කරන්න. එයට බොත්තමක් තිබේ නම් එය ස්පර්ශ කරන්න." + }, + "webAuthnNewTab": { + "message": "WebAUTN 2FA සත්යාපනය ආරම්භ කිරීමට. නව පටිත්තක් විවෘත කිරීමට පහත බොත්තම ක්ලික් කර නව පටිත්තෙහි ඇති උපදෙස් අනුගමනය කරන්න." + }, + "webAuthnNewTabOpen": { + "message": "නව ටැබය විවෘත කරන්න" + }, + "webAuthnAuthenticate": { + "message": "සත්‍යවත් වෙබ් සත්‍යවත් කරන්න" + }, + "loginUnavailable": { + "message": "ලොගින් වන්න ලබාගත නොහැක" + }, + "noTwoStepProviders": { + "message": "මෙම ගිණුමේ පියවර දෙකක පිවිසුම් සක්රීය කර ඇත, කෙසේ වෙතත්, වින්යාසගත කළ පියවර දෙකක සපයන්නන් කිසිවක් මෙම වෙබ් බ්රව්සරයේ සහාය නොදක්වයි." + }, + "noTwoStepProviders2": { + "message": "කරුණාකර සහාය දක්වන වෙබ් බ්රව්සරයක් (Chrome වැනි) භාවිතා කරන්න සහ/හෝ වෙබ් බ්රව්සර් හරහා වඩා හොඳ සහය දක්වන අතිරේක සැපයුම්කරුවන් එකතු කරන්න (සත්යාපන යෙදුමක් වැනි)." + }, + "twoStepOptions": { + "message": "ද්වි-පියවර ලොගින් වන්න විකල්ප" + }, + "recoveryCodeDesc": { + "message": "ඔබගේ ද්වි-සාධක සපයන්නන් සියලු ප්රවේශ අහිමි? ඔබගේ ගිණුමෙන් සියලුම ද්වි-සාධක සපයන්නන් අක්රීය කිරීමට ඔබගේ ප්රතිසාධන කේතය භාවිතා කරන්න." + }, + "recoveryCodeTitle": { + "message": "ප්රතිසාධන කේතය" + }, + "authenticatorAppTitle": { + "message": "සත්යාපන යෙදුම" + }, + "authenticatorAppDesc": { + "message": "කාලය මත පදනම් වූ සත්යාපන කේත ජනනය කිරීම සඳහා සත්යාපන යෙදුමක් (සත්යාපන හෝ ගූගල් සත්යාපන වැනි) භාවිතා කරන්න.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP ආරක්ෂක යතුර" + }, + "yubiKeyDesc": { + "message": "ඔබගේ ගිණුමට ප්රවේශ වීමට YuBiKey භාවිතා කරන්න. YuBiKey 4, 4 නැනෝ, 4C, සහ NEO උපාංග සමඟ ක්රියා කරයි." + }, + "duoDesc": { + "message": "Duo ජංගම යෙදුම, කෙටි පණිවුඩ, දුරකථන ඇමතුමක්, හෝ U2F ආරක්ෂක යතුර භාවිතා කරමින් Duo ආරක්ෂක සමඟ තහවුරු කරන්න.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Duo ජංගම යෙදුම, කෙටි පණිවුඩ, දුරකථන ඇමතුමක්, හෝ U2F ආරක්ෂක යතුර භාවිතා ඔබේ සංවිධානය සඳහා Duo ආරක්ෂක සමඟ තහවුරු කරන්න.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 වෙබ්සත්ටින්" + }, + "webAuthnDesc": { + "message": "ඔබගේ ගිණුමට ප්රවේශ වීමට ඕනෑම WebAUTUN සක්රීය ආරක්ෂක යතුරක් භාවිතා කරන්න." + }, + "emailTitle": { + "message": "ඊ-තැපැල්" + }, + "emailDesc": { + "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 සුරකිනු ඇත." + }, + "enableAutoFillOnPageLoad": { + "message": "පිටු පැටවුම් මත ස්වයංක්රීය-පිරවීම සක්රීය" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "පිවිසුම් පෝරමයක් අනාවරණය කර ඇත්නම්, වෙබ් පිටුව පැටවුම් කරන විට ස්වයංක්රීයව ස්වයංක්රීයව පිරවීම සිදු කරන්න." + }, + "experimentalFeature": { + "message": "මෙය දැනට පර්යේෂණාත්මක ලක්ෂණයකි. ඔබේම අවදානමකින් භාවිතා කරන්න." + }, + "defaultAutoFillOnPageLoad": { + "message": "පිවිසුම් අයිතම සඳහා පෙරනිමි autofill සැකසුම" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "පිටු පැටවුම් මත වාහන-පිරවීම සක්රීය කිරීමෙන් පසු, ඔබ තනි පිවිසුම් අයිතම සඳහා විශේෂාංගය සක්රිය හෝ අක්රිය කළ හැකිය. වෙන වෙනම වින්යාස කර නොමැති පිවිසුම් අයිතම සඳහා පෙරනිමි සැකසුම මෙයයි." + }, + "itemAutoFillOnPageLoad": { + "message": "පිටු පැටවුම් මත ස්වයංක්රීය-පිරවීම (විකල්ප සක්රීය නම්)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "පෙරනිමි සැකසුම භාවිතා" + }, + "autoFillOnPageLoadYes": { + "message": "පිටු බර මත ස්වයංක්රීයව පුරවන්න" + }, + "autoFillOnPageLoadNo": { + "message": "පිටු බර මත ස්වයංක්රීයව පුරවන්න එපා" + }, + "commandOpenPopup": { + "message": "විවෘත සුරක්ෂිතාගාරය උත්පතන" + }, + "commandOpenSidebar": { + "message": "පැති තීරුවේ විවෘත සුරක්ෂිතාගාරය" + }, + "commandAutofillDesc": { + "message": "වත්මන් වෙබ් අඩවිය සඳහා අවසන් වරට භාවිතා කරන ලද පිවිසුම ස්වයංක්රීය-පුරවන්න" + }, + "commandGeneratePasswordDesc": { + "message": "පසුරු පුවරුවට නව අහඹු මුරපදයක් ජනනය කර පිටපත් කරන්න" + }, + "commandLockVaultDesc": { + "message": "සුරක්ෂිතාගාරය ලොක් කරන්න" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "අභිරුචි ක්ෂේත්ර" + }, + "copyValue": { + "message": "පිටපත් වටිනාකම" + }, + "value": { + "message": "වටිනාකම" + }, + "newCustomField": { + "message": "නව රේගු ක්ෂේත්ර" + }, + "dragToSort": { + "message": "වර්ග කිරීමට ඇද දමන්න" + }, + "cfTypeText": { + "message": "පෙළ" + }, + "cfTypeHidden": { + "message": "සැඟවුනු" + }, + "cfTypeBoolean": { + "message": "බූලියන්" + }, + "cfTypeLinked": { + "message": "සම්බන්ධිත", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "සම්බන්ධිත අගය", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "ඔබගේ සත්යාපන කේතය සඳහා ඔබගේ ඊ-තැපැල් පරීක්ෂා කිරීමට උත්පතන කවුළුවෙන් පිටත ක්ලික් කිරීමෙන් මෙම උත්පතන වසා දැමීමට හේතු වේ. මෙම උත්පතන නව කවුළුවක විවෘත කිරීමට ඔබට අවශ්යද?" + }, + "popupU2fCloseMessage": { + "message": "මෙම බ්රවුසරයට මෙම උත්පතන කවුළුව තුළ U2F ඉල්ලීම් සැකසීමට නොහැක. ඔබට U2F භාවිතයෙන් පිවිසිය හැකි වන පරිදි නව කවුළුවක මෙම උත්පතන විවෘත කිරීමට අවශ්යද?" + }, + "disableFavicon": { + "message": "වෙබ් අඩවි අයිකන අක්රීය කරන්න" + }, + "disableFaviconDesc": { + "message": "වෙබ් අඩවි අයිකන ඔබගේ සුරක්ෂිතාගාරයේ එක් එක් පිවිසුම් අයිතමයට යාබදව හඳුනාගත හැකි රූපයක් ලබා දෙයි." + }, + "disableBadgeCounter": { + "message": "බැජ් කවුන්ටරය අක්රීය කරන්න" + }, + "disableBadgeCounterDesc": { + "message": "බැජ් කවුන්ටරය ඔබ ඔබේ සුරක්ෂිතාගාරයේ වත්මන් පිටුව සඳහා කොපමණ පිවිසුම් පෙන්නුම් කරයි." + }, + "cardholderName": { + "message": "කාඞ්පත් හිමි නම" + }, + "number": { + "message": "අංකය" + }, + "brand": { + "message": "වෙළඳ නාමය" + }, + "expirationMonth": { + "message": "කල් ඉකුත්වන මාසය" + }, + "expirationYear": { + "message": "කල් ඉකුත්වන වසර" + }, + "expiration": { + "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": "උඳුවප්" + }, + "securityCode": { + "message": "ආරක්ෂක කේතය" + }, + "ex": { + "message": "හිටපු." + }, + "title": { + "message": "මාතෘකාව" + }, + "mr": { + "message": "මහතා" + }, + "mrs": { + "message": "මහත්මිය" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "ආචාර්ය" + }, + "firstName": { + "message": "මුල් නම" + }, + "middleName": { + "message": "මැද නම" + }, + "lastName": { + "message": "අවසාන නම" + }, + "fullName": { + "message": "සම්පූර්ණ නම" + }, + "identityName": { + "message": "අනන්යතා නාමය" + }, + "company": { + "message": "සමාගම" + }, + "ssn": { + "message": "සමාජ ආරක්ෂණ අංකය" + }, + "passportNumber": { + "message": "ගමන් බලපත්ර අංකය" + }, + "licenseNumber": { + "message": "බලපත්ර අංකය" + }, + "email": { + "message": "ඊ-තැපැල්" + }, + "phone": { + "message": "දුරකථන" + }, + "address": { + "message": "ලිපිනය" + }, + "address1": { + "message": "ලිපිනය 1" + }, + "address2": { + "message": "ලිපිනය 2" + }, + "address3": { + "message": "ලිපිනය 3" + }, + "cityTown": { + "message": "නගරය/නගරය" + }, + "stateProvince": { + "message": "රාජ්ය/පළාත" + }, + "zipPostalCode": { + "message": "Zip/තැපැල් කේතය" + }, + "country": { + "message": "රට" + }, + "type": { + "message": "වර්ගය" + }, + "typeLogin": { + "message": "ලොගින් වන්න" + }, + "typeLogins": { + "message": "ලොගින් වන්න" + }, + "typeSecureNote": { + "message": "ආරක්ෂිත සටහන" + }, + "typeCard": { + "message": "කාඩ්" + }, + "typeIdentity": { + "message": "අනන්යතාවය" + }, + "passwordHistory": { + "message": "මුරපද ඉතිහාසය" + }, + "back": { + "message": "ආපසු" + }, + "collections": { + "message": "එකතුව" + }, + "favorites": { + "message": "ප්රියතම දැන්වීම්" + }, + "popOutNewWindow": { + "message": "නව කවුළුවකට පොප්" + }, + "refresh": { + "message": "නැවුම් කරන්න" + }, + "cards": { + "message": "කාඩ්" + }, + "identities": { + "message": "අනන්යතා" + }, + "logins": { + "message": "ලොගින් වන්න" + }, + "secureNotes": { + "message": "ආරක්ෂිත සටහන්" + }, + "clear": { + "message": "පැහැදිලි", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "මුරපදය නිරාවරණය වී ඇත්දැයි පරීක්ෂා කරන්න." + }, + "passwordExposed": { + "message": "මෙම මුරපදය නිරාවරණය කර ඇත $VALUE$ කාලය (ය) දත්ත උල්ලං aches නය කිරීම් වලදී. ඔබ එය වෙනස් කළ යුතුය.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "මෙම මුරපදය දන්නා දත්ත උල්ලං aches නය කිරීම් වලින් සොයාගත නොහැකි විය. එය භාවිතා කිරීමට ආරක්ෂිත විය යුතුය." + }, + "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": "ටොගල් කරන්න විකල්ප" + }, + "toggleCurrentUris": { + "message": "ටොගල් කරන්න වත්මන් URis", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "වත්මන් වර්ගය", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "සංවිධානය", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "වර්ග" + }, + "allItems": { + "message": "සියලු අයිතම" + }, + "noPasswordsInList": { + "message": "ලැයිස්තු ගත කිරීමට මුරපද නොමැත." + }, + "remove": { + "message": "ඉවත් කරන්න" + }, + "default": { + "message": "පෙරනිමි" + }, + "dateUpdated": { + "message": "යාවත්කාලීන", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "මුරපදය යාවත්කාලීන කිරීම", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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 ගිණුම නිසි ලෙස ආරක්ෂා කිරීම සඳහා ඔබ ශක්තිමත් ප්රධාන මුරපදයක් (හෝ passphrase) භාවිතා කළ යුතුය. ඔබට මෙම ප්රධාන මුරපදය භාවිතා කිරීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "pin": { + "message": "පින්", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "PIN අංකය සමඟ විවෘත" + }, + "setYourPinCode": { + "message": "බිට්වර්ඩන් අගුළු ඇරීමට ඔබේ PIN අංකය කේතය සකසන්න. ඔබ කවදා හෝ යෙදුමෙන් සම්පූර්ණයෙන්ම පුරනය වී ඇත්නම් ඔබගේ PIN සැකසුම් නැවත සකසනු ඇත." + }, + "pinRequired": { + "message": "PIN කේතය අවශ්ය වේ." + }, + "invalidPin": { + "message": "වලංගු නොවන PIN කේතය." + }, + "unlockWithBiometrics": { + "message": "ජෛව විද්යාව සමඟ අගුළු ඇරීම" + }, + "awaitDesktop": { + "message": "ඩෙස්ක්ටොප් සිට තහවුරු කිරීම බලාපොරොත්තුවෙන්" + }, + "awaitDesktopDesc": { + "message": "බ්රව්සරය සඳහා biometrics සක්රීය කිරීම සඳහා Bitwarden ඩෙස්ක්ටොප් යෙදුමේ biometrics භාවිතා කිරීම තහවුරු කරන්න." + }, + "lockWithMasterPassOnRestart": { + "message": "බ්රව්සරය නැවත ආරම්භ මත ප්රධාන මුරපදය සමග අගුළු" + }, + "selectOneCollection": { + "message": "ඔබ අවම වශයෙන් එක් එකතුවක්වත් තෝරා ගත යුතුය." + }, + "cloneItem": { + "message": "ක්ලෝන අයිතම" + }, + "clone": { + "message": "ක්ලෝන" + }, + "passwordGeneratorPolicyInEffect": { + "message": "සංවිධාන ප්රතිපත්ති එකක් හෝ වැඩි ගණනක් ඔබේ උත්පාදක සැකසුම් වලට බලපායි." + }, + "vaultTimeoutAction": { + "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": "ප්රතිෂ්ඨාපනය අයිතමය" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "පිටතට පිවිසීමෙන් ඔබගේ සුරක්ෂිතාගාරය වෙත ඇති සියලුම ප්රවේශය ඉවත් කරනු ඇති අතර කාල සීමාව පසු මාර්ගගත සත්යාපනය අවශ්ය වේ. ඔබට මෙම සැකසුම භාවිතා කිරීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "කාලය ක්රියාත්මක කිරීම තහවුරු කිරීම" + }, + "autoFillAndSave": { + "message": "ස්වයංක්රීය-පිරවීම සහ සුරකින්න" + }, + "autoFillSuccessAndSavedUri": { + "message": "ස්වයංක්රීය-පිරවූ අයිතමය සහ සුරකින ලද URI" + }, + "autoFillSuccess": { + "message": "ස්වයංක්රීය-පිරවූ අයිතමය" + }, + "setMasterPassword": { + "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": "සේවා කොන්දේසි සහ රහස්යතා ප්රතිපත්තිය පිළිගෙන නොමැත." + }, + "termsOfService": { + "message": "සේවා කොන්දේසි" + }, + "privacyPolicy": { + "message": "රහස්යතා ප්රතිපත්තිය" + }, + "hintEqualsPassword": { + "message": "ඔබගේ මුරපද ඉඟිය ඔබගේ මුරපදයට සමාන විය නොහැක." + }, + "ok": { + "message": "හරි" + }, + "desktopSyncVerificationTitle": { + "message": "ඩෙස්ක්ටොප් සමමුහුර්ත සත්යාපනය" + }, + "desktopIntegrationVerificationText": { + "message": "ඩෙස්ක්ටොප් යෙදුම මෙම ඇඟිලි සලකුණ පෙන්වන බව කරුණාකර තහවුරු කරන්න: " + }, + "desktopIntegrationDisabledTitle": { + "message": "බ්රව්සර් ඒකාබද්ධ සක්රීය කර නැත" + }, + "desktopIntegrationDisabledDesc": { + "message": "බිට්වර්ඩන් ඩෙස්ක්ටොප් යෙදුම තුළ බ්රව්සර් ඒකාබද්ධ කිරීම සක්රීය කර නොමැත. කරුණාකර ඩෙස්ක්ටොප් යෙදුම තුළ සැකසුම් තුළ එය සක්රීය කරන්න." + }, + "startDesktopTitle": { + "message": "බිට්වර්ඩන් ඩෙස්ක්ටොප් යෙදුම ආරම්භ කරන්න" + }, + "startDesktopDesc": { + "message": "මෙම ශ්රිතය භාවිතා කිරීමට පෙර බිට්වර්ඩන් ඩෙස්ක්ටොප් යෙදුම ආරම්භ කළ යුතුය." + }, + "errorEnableBiometricTitle": { + "message": "ජෛව විද්යාත්මක සක්රීය කිරීමට නොහැකි විය" + }, + "errorEnableBiometricDesc": { + "message": "ඩෙස්ක්ටොප් යෙදුම මගින් ක්රියාව අවලංගු කරන ලදී" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "ඩෙස්ක්ටොප් යෙදුම ආරක්ෂිත සන්නිවේදන නාලිකාව අවලංගු කළේය. කරුණාකර මෙම මෙහෙයුම නැවත උත්සාහ කරන්න" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "ඩෙස්ක්ටොප් සන්නිවේදනය බාධා" + }, + "nativeMessagingWrongUserDesc": { + "message": "ඩෙස්ක්ටොප් යෙදුම වෙනත් ගිණුමකට ලොගින් වී ඇත. කරුණාකර අයදුම්පත් දෙකම එකම ගිණුමකට ලොගින් වී ඇති බවට සහතික වන්න." + }, + "nativeMessagingWrongUserTitle": { + "message": "ගිණුම මිස්ගැලච්" + }, + "biometricsNotEnabledTitle": { + "message": "ජීව විද්යාව සක්රීය කර නැත" + }, + "biometricsNotEnabledDesc": { + "message": "බ්රව්සරය biometrics පළමු සැකසුම් සක්රීය කිරීමට ඩෙස්ක්ටොප් ජීව අවශ්ය වේ." + }, + "biometricsNotSupportedTitle": { + "message": "ජෛව විද්යාව සඳහා සහය නොදක්වයි" + }, + "biometricsNotSupportedDesc": { + "message": "බ්රව්සර් biometrics මෙම උපාංගය මත සහය නොදක්වයි." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "අවසර ලබා දී නැත" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "බිට්වර්ඩන් ඩෙස්ක්ටොප් යෙදුම සමඟ සන්නිවේදනය කිරීමට අවසරයකින් තොරව අපට බ්රව්සර් දිගුවේ ජෛව මිතික ලබා දිය නොහැක. කරුණාකර නැවත උත්සාහ කරන්න." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "අවසර ඉල්ලීමේ දෝෂය" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "මෙම ක්රියාව පැති තීරුවේ කළ නොහැක, කරුණාකර උත්පතන හෝ උත්පතන තුළ ක්රියාව නැවත උත්සාහ කරන්න." + }, + "personalOwnershipSubmitError": { + "message": "ව්යවසාය ප්රතිපත්තියක් හේතුවෙන්, ඔබේ පුද්ගලික සුරක්ෂිතාගාරය වෙත භාණ්ඩ ඉතිරි කිරීම සීමා කර ඇත. හිමිකාරිත්ව විකල්පය සංවිධානයකට වෙනස් කර ලබා ගත හැකි එකතුවෙන් තෝරා ගන්න." + }, + "personalOwnershipPolicyInEffect": { + "message": "සංවිධාන ප්රතිපත්තියක් ඔබේ හිමිකාරිත්ව විකල්පයන් කෙරෙහි බලපායි." + }, + "excludedDomains": { + "message": "බැහැර වසම්" + }, + "excludedDomainsDesc": { + "message": "බිට්වර්ඩන් මෙම වසම් සඳහා පිවිසුම් තොරතුරු සුරැකීමට ඉල්ලා නොසිටිනු ඇත. බලාත්මක කිරීම සඳහා වෙනස්කම් සඳහා ඔබ පිටුව නැවුම් කළ යුතුය." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ වලංගු වසමක් නොවේ", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "යවන්න", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "සෙවුම් යවයි", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "යවන්න එකතු කරන්න", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "පෙළ" + }, + "sendTypeFile": { + "message": "ගොනුව" + }, + "allSends": { + "message": "සියලු යවයි", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "මැක්ස් ප්රවේශ ගණන ළඟා", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "කල් ඉකුත්" + }, + "pendingDeletion": { + "message": "මකාදැමීම" + }, + "passwordProtected": { + "message": "මුරපදය ආරක්ෂා" + }, + "copySendLink": { + "message": "සබැඳිය යවන්න පිටපත් කරන්න", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "මුරපදය ඉවත් කරන්න" + }, + "delete": { + "message": "මකන්න" + }, + "removedPassword": { + "message": "ඉවත් කරන ලද මුරපදය" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "අබල කර ඇත" + }, + "removePasswordConfirmation": { + "message": "ඔබට මුරපදය ඉවත් කිරීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "deleteSend": { + "message": "යවන්න මකන්න", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "මෙය කුමන ආකාරයේ යවන්න ද?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "මෙම යවන්න විස්තර කිරීමට මිත්රශීලී නමක්.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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": "සකසා ඇත්නම්, මෙම යවන්න වෙත ප්රවේශය නිශ්චිත දිනය හා වේලාව කල් ඉකුත් වනු ඇත.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "oneDay": { + "message": "දින 1" + }, + "days": { + "message": "$DAYS$ දින", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "අභිරුචි" + }, + "maximumAccessCount": { + "message": "උපරිම ප්රවේශ ගණන්" + }, + "maximumAccessCountDesc": { + "message": "සකසා ඇත්නම්, උපරිම ප්රවේශ ගණන ළඟා වූ පසු පරිශීලකයින්ට මෙම Send වෙත ප්රවේශ වීමට තවදුරටත් නොහැකි වනු ඇත.", + "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." + }, + "sendDisableDesc": { + "message": "මෙය අක්රීය කරන්න යවන්න එවිට කිසිවෙකුට එයට ප්රවේශ විය නොහැක.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "සුරකින්න මත මෙම යවන්න ගේ සබැඳිය පසුරු පුවරුවට පිටපත් කරන්න.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "ඔබට යැවීමට අවශ්ය පෙළ." + }, + "sendHideText": { + "message": "මෙම යවන්න පෙළ පෙරනිමියෙන් සඟවන්න.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "වත්මන් ප්රවේශ ගණන්" + }, + "createSend": { + "message": "නව යවන්න නිර්මාණය", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "නව මුරපදය" + }, + "sendDisabled": { + "message": "ආබාධිත යවන්න", + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "ගොනුවක් තෝරා ගැනීම සඳහා, පැති තීරුවේ දිගුව විවෘත කරන්න (හැකි නම්) හෝ මෙම බැනරය ක්ලික් කිරීමෙන් නව කවුළුවකට පොප් කරන්න." + }, + "sendFirefoxFileWarning": { + "message": "ෆයර්ෆොක්ස් භාවිතයෙන් ගොනුවක් තෝරා ගැනීම සඳහා, පැති තීරුවේ දිගුව විවෘත කරන්න හෝ මෙම බැනරය ක්ලික් කිරීමෙන් නව කවුළුවකට පොප් කරන්න." + }, + "sendSafariFileWarning": { + "message": "සෆාරි භාවිතා ගොනුවක් තෝරා ගැනීම සඳහා, මෙම බැනරය ක්ලික් කිරීමෙන් නව කවුළුවකට දිස්වේ." + }, + "sendFileCalloutHeader": { + "message": "ඔබ ආරම්භ කිරීමට පෙර" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "දින දර්ශනය ශෛලිය දිනය ජීව අත්බෝම්බයක් සමග භාවිතා කිරීමට", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "මෙහි ක්ලික් කරන්න", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "ඔබේ කවුළුව දිස්වේ.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "ලබා දී ඇති කල් ඉකුත්වන දිනය වලංගු නොවේ." + }, + "deletionDateIsInvalid": { + "message": "ලබා දී ඇති මකාදැමීමේ දිනය වලංගු නොවේ." + }, + "expirationDateAndTimeRequired": { + "message": "කල් ඉකුත්වන දිනය සහ වේලාව අවශ්ය වේ." + }, + "deletionDateAndTimeRequired": { + "message": "මකාදැමීමේ දිනය සහ වේලාව අවශ්ය වේ." + }, + "dateParsingError": { + "message": "ඔබගේ මකාදැමීම සහ කල් ඉකුත් වීමේ දිනයන් ඉතිරි කිරීමේ දෝෂයක් තිබුණි." + }, + "hideEmail": { + "message": "ලබන්නන්ගෙන් මගේ විද්යුත් තැපැල් ලිපිනය සඟවන්න." + }, + "sendOptionsPolicyInEffect": { + "message": "සංවිධාන ප්රතිපත්ති එකක් හෝ කිහිපයක් ඔබගේ Send විකල්පයන්ට බලපායි." + }, + "passwordPrompt": { + "message": "ප්රධාන මුරපදය නැවත විමසුමක්" + }, + "passwordConfirmation": { + "message": "ප්රධාන මුරපදය තහවුරු" + }, + "passwordConfirmationDesc": { + "message": "මෙම ක්රියාව ආරක්ෂා කර ඇත. දිගටම කරගෙන යාම සඳහා, කරුණාකර ඔබේ අනන්යතාවය තහවුරු කර ගැනීම සඳහා ඔබේ ප්රධාන මුරපදය නැවත ඇතුළත් කරන්න." + }, + "emailVerificationRequired": { + "message": "ඊමේල් සත්යාපනය අවශ්ය වේ" + }, + "emailVerificationRequiredDesc": { + "message": "මෙම අංගය භාවිතා කිරීම සඳහා ඔබේ විද්යුත් තැපෑල සත්යාපනය කළ යුතුය. වෙබ් සුරක්ෂිතාගාරයේ ඔබගේ විද්යුත් තැපෑල සත්යාපනය කළ හැකිය." + }, + "updatedMasterPassword": { + "message": "යාවත්කාලීන කරන ලද මාස්ටර් මුරපදය" + }, + "updateMasterPassword": { + "message": "මාස්ටර් මුරපදය යාවත්කාලීන" + }, + "updateMasterPasswordWarning": { + "message": "ඔබේ ප්රධාන මුරපදය මෑතකදී ඔබේ සංවිධානයේ පරිපාලක විසින් වෙනස් කරන ලදී. සුරක්ෂිතාගාරය වෙත ප්රවේශ වීම සඳහා, ඔබ දැන් එය යාවත්කාලීන කළ යුතුය. ඔබගේ වර්තමාන සැසියෙන් ඔබව ප්රවිෂ්ට වනු ඇත, ඔබ නැවත ප්රවිෂ්ට වීමට අවශ්ය. වෙනත් උපාංගවල ක්රියාකාරී සැසි පැයක් දක්වා ක්රියාකාරීව පැවතිය හැකිය." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "ස්වයංක්රීය බඳවා ගැනීම" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "මෙම සංවිධානයට ව්යවසාය ප්රතිපත්තියක් ඇති අතර එමඟින් මුරපදය නැවත සකස් කිරීමේදී ඔබව ස්වයංක්රීයව ඇතුළත් වේ. බඳවා ගැනීම සංවිධාන පරිපාලකයින්ට ඔබේ ප්රධාන මුරපදය වෙනස් කිරීමට ඉඩ සලසයි." + }, + "selectFolder": { + "message": "ෆෝල්ඩරය තෝරන්න..." + }, + "ssoCompleteRegistration": { + "message": "SSG සමග ලොග් වීම සම්පූර්ණ කිරීම සඳහා, කරුණාකර ඔබේ සුරක්ෂිතාගාරය වෙත ප්රවේශ වීමට සහ ආරක්ෂා කිරීමට ප්රධාන මුරපදයක් සකසන්න." + }, + "hours": { + "message": "පැය" + }, + "minutes": { + "message": "විනාඩි" + }, + "vaultTimeoutPolicyInEffect": { + "message": "ඔබේ සංවිධාන ප්රතිපත්ති ඔබගේ සුරක්ෂිතාගාරය කාලය කෙරෙහි බලපායි. උපරිම අවසර ලත් සුරක්ෂිතාගාරය කාලය පැය $HOURS$ (ය) සහ විනාඩි $MINUTES$ (ය)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "ඔබේ සුරක්ෂිතාගාරය කාලය ඔබේ සංවිධානය විසින් නියම කර ඇති සීමාවන් ඉක්මවා යයි." + }, + "vaultExportDisabled": { + "message": "ආබාධිත අපනයන සුරක්ෂිතාගාරය" + }, + "personalVaultExportPolicyInEffect": { + "message": "සංවිධාන ප්රතිපත්ති එකක් හෝ කිහිපයක් ඔබේ පුද්ගලික සුරක්ෂිතාගාරය අපනයනය කිරීමෙන් වළක්වයි." + }, + "copyCustomFieldNameInvalidElement": { + "message": "වලංගු ආකෘති මූලද්රව්යයක් හඳුනා ගැනීමට නොහැකි විය. ඒ වෙනුවට HTML පරීක්ෂා කිරීමට උත්සාහ කරන්න." + }, + "copyCustomFieldNameNotUnique": { + "message": "අද්විතීය හඳුනාගැනීමක් සොයාගත නොහැකි විය." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ ස්වයං සත්කාරක යතුරු සේවාදායකයක් සමඟ SSO භාවිතා කරයි. මෙම සංවිධානයේ සාමාජිකයන් සඳහා ප්රවිෂ්ට වීමට ප්රධාන මුරපදයක් තවදුරටත් අවශ්ය නොවේ.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "සංවිධානය හැරයන්න" + }, + "removeMasterPassword": { + "message": "ප්රධාන මුරපදය ඉවත් කරන්න" + }, + "removedMasterPassword": { + "message": "ප්රධාන මුරපදය ඉවත් කර ඇත." + }, + "leaveOrganizationConfirmation": { + "message": "ඔබට මෙම සංවිධානයෙන් ඉවත් වීමට අවශ්ය බව ඔබට විශ්වාසද?" + }, + "leftOrganization": { + "message": "ඔබ සංවිධානයෙන් ඉවත් වී ඇත." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json new file mode 100644 index 0000000000..56652cccd7 --- /dev/null +++ b/apps/browser/src/_locales/sk/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Bezplatný správca hesiel", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "bitwarden je bezpečný a bezplatný správca hesiel pre všetky vaše zariadenia.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Prihláste sa, alebo vytvorte nový účet pre prístup k vášmu bezpečnému trezoru." + }, + "createAccount": { + "message": "Vytvoriť účet" + }, + "login": { + "message": "Prihlásiť sa" + }, + "enterpriseSingleSignOn": { + "message": "Prihlásenie cez prihlasovací formulár spoločnosti (SSO)" + }, + "cancel": { + "message": "Zrušiť" + }, + "close": { + "message": "Zavrieť" + }, + "submit": { + "message": "Potvrdiť" + }, + "emailAddress": { + "message": "Emailová adresa" + }, + "masterPass": { + "message": "Hlavné heslo" + }, + "masterPassDesc": { + "message": "Hlavné heslo je heslo, ktoré použijete 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ápoveda 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ápoveda k hlavnému heslu (voliteľné)" + }, + "tab": { + "message": "Karta" + }, + "myVault": { + "message": "Môj trezor" + }, + "tools": { + "message": "Nástroje" + }, + "settings": { + "message": "Nastavenia" + }, + "currentTab": { + "message": "Aktuálna karta" + }, + "copyPassword": { + "message": "Kopírovať heslo" + }, + "copyNote": { + "message": "Kopírovať poznámku" + }, + "copyUri": { + "message": "Kopírovať URI" + }, + "copyUsername": { + "message": "Kopírovať používateľské meno" + }, + "copyNumber": { + "message": "Kopírovať číslo" + }, + "copySecurityCode": { + "message": "Kopírovať bezpečnostný kód" + }, + "autoFill": { + "message": "Automatické vypĺňanie" + }, + "generatePasswordCopied": { + "message": "Vygenerovať heslo (skopírované)" + }, + "copyElementIdentifier": { + "message": "Kopírovať názov vlastného poľa" + }, + "noMatchingLogins": { + "message": "Žiadne zodpovedajúce prihlasovacie údaje." + }, + "unlockVaultMenu": { + "message": "Odomknúť trezor" + }, + "loginToVaultMenu": { + "message": "Prihláste sa do trezora" + }, + "autoFillInfo": { + "message": "Nie sú prístupné žiadne prihlasovacie údaje na automatické vyplnenie pre aktuálnu kartu." + }, + "addLogin": { + "message": "Pridať prihlasovacie údaje" + }, + "addItem": { + "message": "Pridať položku" + }, + "passwordHint": { + "message": "Nápoveda k heslu" + }, + "enterEmailToGetHint": { + "message": "Zadajte emailovú adresu na zaslanie nápovedy pre vaše hlavné heslo." + }, + "getMasterPasswordHint": { + "message": "Získať nápovedu k hlavnému heslu" + }, + "continue": { + "message": "Pokračovať" + }, + "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." + }, + "account": { + "message": "Účet" + }, + "changeMasterPassword": { + "message": "Zmeniť hlavné heslo" + }, + "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 vášho úč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." + }, + "twoStepLogin": { + "message": "Dvojstupňové prihlásenie" + }, + "logOut": { + "message": "Odhlásiť sa" + }, + "about": { + "message": "O aplikácii" + }, + "version": { + "message": "Verzia" + }, + "save": { + "message": "Uložiť" + }, + "move": { + "message": "Presunúť" + }, + "addFolder": { + "message": "Pridať priečinok" + }, + "name": { + "message": "Meno" + }, + "editFolder": { + "message": "Upraviť priečinok" + }, + "deleteFolder": { + "message": "Odstrániť priečinok" + }, + "folders": { + "message": "Priečinky" + }, + "noFolders": { + "message": "V zozname sa nenachádzajú žiadne priečinky." + }, + "helpFeedback": { + "message": "Pomoc a spätná väzba" + }, + "sync": { + "message": "Synchronizácia" + }, + "syncVaultNow": { + "message": "Synchronizovať trezor teraz" + }, + "lastSync": { + "message": "Posledná synchronizácia:" + }, + "passGen": { + "message": "Generátor hesla" + }, + "generator": { + "message": "Generátor", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automaticky generovať silné a unikátne heslá k prihlasovacím údajom." + }, + "bitWebVault": { + "message": "Webový trezor Bitwarden" + }, + "importItems": { + "message": "Importovať položky" + }, + "select": { + "message": "Vybrať" + }, + "generatePassword": { + "message": "Generovať heslo" + }, + "regeneratePassword": { + "message": "Vygenerovať nové heslo" + }, + "options": { + "message": "Možnosti" + }, + "length": { + "message": "Dĺžka" + }, + "uppercase": { + "message": "Veľké písmená (A-Z)" + }, + "lowercase": { + "message": "Malé písmená (a-z)" + }, + "numbers": { + "message": "Čísla (0-9)" + }, + "specialCharacters": { + "message": "Špeciálne znaky (!@#$%^&*)" + }, + "numWords": { + "message": "Počet slov" + }, + "wordSeparator": { + "message": "Oddeľovač slov" + }, + "capitalize": { + "message": "Prvé písmeno veľkým", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Zahrnúť číslo" + }, + "minNumbers": { + "message": "Minimum číslic" + }, + "minSpecial": { + "message": "Minimum špec. znakov" + }, + "avoidAmbChar": { + "message": "Vyhnúť sa zameniteľným znakom" + }, + "searchVault": { + "message": "Prehľadávať trezor" + }, + "edit": { + "message": "Upraviť" + }, + "view": { + "message": "Zobraziť" + }, + "noItemsInList": { + "message": "Neexistujú žiadne položky na zobrazenie." + }, + "itemInformation": { + "message": "Informácie o položke" + }, + "username": { + "message": "Používateľské meno" + }, + "password": { + "message": "Heslo" + }, + "passphrase": { + "message": "Prístupová fráza" + }, + "favorite": { + "message": "Obľúbené" + }, + "notes": { + "message": "Poznámky" + }, + "note": { + "message": "Poznámka" + }, + "editItem": { + "message": "Upraviť položku" + }, + "folder": { + "message": "Priečinok" + }, + "deleteItem": { + "message": "Zmazať položku" + }, + "viewItem": { + "message": "Zobraziť položku" + }, + "launch": { + "message": "Spustiť" + }, + "website": { + "message": "Webstránka" + }, + "toggleVisibility": { + "message": "Prepnúť viditeľnosť" + }, + "manage": { + "message": "Spravovať" + }, + "other": { + "message": "Ostatné" + }, + "rateExtension": { + "message": "Ohodnotiť rozšírenie" + }, + "rateExtensionDesc": { + "message": "Prosíme, zvážte napísanie pozitívnej recenzie!" + }, + "browserNotSupportClipboard": { + "message": "Váš webový prehliadač nepodporuje automatické kopírovanie do schránky. Kopírujte manuálne." + }, + "verifyIdentity": { + "message": "Overiť identitu" + }, + "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" + }, + "vaultTimeout": { + "message": "Časový limit pre trezor vypršal" + }, + "lockNow": { + "message": "Uzamknúť teraz" + }, + "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" + }, + "onLocked": { + "message": "Pri uzamknutí" + }, + "onRestart": { + "message": "Po reštarte" + }, + "never": { + "message": "Nikdy" + }, + "security": { + "message": "Zabezpečenie" + }, + "errorOccurred": { + "message": "Vyskytla sa chyba" + }, + "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": "Poslali sme vám email s nápovedou k hlavnému heslu." + }, + "verificationCodeRequired": { + "message": "Overovací kód je povinný." + }, + "invalidVerificationCode": { + "message": "Neplatný verifikačný kód" + }, + "valueCopied": { + "message": " skopírované", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Na tejto stránke sa nedajú automaticky vyplniť prihlasovacie údaje. Namiesto toho skopírujte/vložte prihlasovacie údaje manuálne." + }, + "loggedOut": { + "message": "Odhlásený" + }, + "loginExpired": { + "message": "Vaša relácia vypršala." + }, + "logOutConfirmation": { + "message": "Naozaj sa chcete odhlásiť?" + }, + "yes": { + "message": "Áno" + }, + "no": { + "message": "Nie" + }, + "unexpectedError": { + "message": "Vyskytla sa neočakávaná chyba." + }, + "nameRequired": { + "message": "Meno je povinné." + }, + "addedFolder": { + "message": "Pridaný priečinok" + }, + "changeMasterPass": { + "message": "Zmeniť hlavné heslo" + }, + "changeMasterPasswordConfirmation": { + "message": "Teraz si môžete zmeniť svoje hlavné heslo vo webovom trezore bitwarden.com. Chcete navštíviť túto stránku teraz?" + }, + "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 navštíviť túto stránku teraz?" + }, + "editedFolder": { + "message": "Priečinok upravený" + }, + "deleteFolderConfirmation": { + "message": "Naozaj chcete odstrániť tento priečinok?" + }, + "deletedFolder": { + "message": "Odstránený priečinok" + }, + "gettingStartedTutorial": { + "message": "Začiatočnícka príručka" + }, + "gettingStartedTutorialVideo": { + "message": "Sledujte našu začiatočnícku príručku, aby ste sa naučili, ako získať maximum z nášho rozšírenia prehliadača." + }, + "syncingComplete": { + "message": "Synchronizácia kompletná" + }, + "syncingFailed": { + "message": "Synchronizácia zlyhala" + }, + "passwordCopied": { + "message": "Heslo skopírované" + }, + "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" + }, + "addedItem": { + "message": "Položka pridaná" + }, + "editedItem": { + "message": "Položka upravená" + }, + "deleteItemConfirmation": { + "message": "Naozaj chcete odstrániť túto položku?" + }, + "deletedItem": { + "message": "Položka odstránená do koša" + }, + "overwritePassword": { + "message": "Prepísať heslo" + }, + "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?" + }, + "searchFolder": { + "message": "Prehľadávať priečinok" + }, + "searchCollection": { + "message": "Vyhľadať zbierku" + }, + "searchType": { + "message": "Typ vyhľadávania" + }, + "noneFolder": { + "message": "Žiadny priečinok", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Vypnúť notifikáciu Pridať prihlasovacie údaje" + }, + "addLoginNotificationDesc": { + "message": "\"Notifikácia Pridať prihlasovacie údaje\" vás automaticky upozorní na uloženie nových údajov do vášho trezoru vždy, keď sa s nimi prihlasujete poprvýkrát." + }, + "dontShowCardsCurrentTab": { + "message": "Nezobrazovať platobné karty na stránke \"Aktuálna karta\"" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Položky kariet sa zobrazujú na stránke „Aktuálna karta“ pre ľahšie automatické vypĺňanie." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Nezobrazovať identity na stránke Karta" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity z vášho trezoru sa zobrazujú na stránke \"Aktuálna karta\" pre ľahké automatické vypĺňanie." + }, + "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." + }, + "notificationAddDesc": { + "message": "Má si pre vás Bitwarden zapamätať toto heslo?" + }, + "notificationAddSave": { + "message": "Uložiť" + }, + "disableChangedPasswordNotification": { + "message": "Vypnúť oznámenie o zmene hesla" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Oznámenie o zmene hesla sa vás automaticky opýta na aktualizáciu prihlasovacích údajov vo vašom trezore vždy, keď zistí, že ste ho zmenili na stránke." + }, + "notificationChangeDesc": { + "message": "Chcete aktualizovať toto heslo v Bitwarden?" + }, + "notificationChangeSave": { + "message": "Aktualizovať" + }, + "disableContextMenuItem": { + "message": "Vypnúť možnosti kontextového menu" + }, + "disableContextMenuItemDesc": { + "message": "Možnosti kontextového menu ponúkajú rýchly prístup k prihlasovacím údajom a generovaniu hesiel pre stránku vo vašej aktuálnej karte." + }, + "defaultUriMatchDetection": { + "message": "Predvolené mapovanie", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Vyberte si predvolený spôsob mapovania, ktorý bude použitý pre prihlasovacie údaje pri využití funkcí ako je napríklad automatické vypĺňanie hesiel." + }, + "theme": { + "message": "Motív" + }, + "themeDesc": { + "message": "Zmeniť motív aplikácie." + }, + "dark": { + "message": "Tmavý", + "description": "Dark color" + }, + "light": { + "message": "Svetlý", + "description": "Light color" + }, + "solarizedDark": { + "message": "Tmavá –⁠ Solarized", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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." + }, + "exportMasterPassword": { + "message": "Zadajte vaše hlavné heslo pre export údajov trezoru." + }, + "shared": { + "message": "Zdieľané" + }, + "learnOrg": { + "message": "Zistiť viac o organizáciách" + }, + "learnOrgConfirmation": { + "message": "Bitwarden vám umožňuje zdieľať vaše položky trezora s ostatnými pomocou organizácie. Chcete navštíviť webovú stránku bitwarden.com a dozvedieť sa viac?" + }, + "moveToOrganization": { + "message": "Presunúť do organizácie" + }, + "share": { + "message": "Zdieľať" + }, + "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." + }, + "learnMore": { + "message": "Zistiť viac" + }, + "authenticatorKeyTotp": { + "message": "Kľúč overovateľa (TOTP)" + }, + "verificationCodeTotp": { + "message": "Overovací kód (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopírovať overovací kód" + }, + "attachments": { + "message": "Prílohy" + }, + "deleteAttachment": { + "message": "Odstrániť prílohu" + }, + "deleteAttachmentConfirmation": { + "message": "Naozaj chcete odstrániť túto prílohu?" + }, + "deletedAttachment": { + "message": "Odstránená príloha" + }, + "newAttachment": { + "message": "Pridať novú prílohu" + }, + "noAttachments": { + "message": "Žiadne prílohy." + }, + "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." + }, + "featureUnavailable": { + "message": "Funkcia nie je k dispozícii" + }, + "updateKey": { + "message": "Túto funkciu nemožno použiť, pokým neaktualizujete svoj šifrovací kľúč." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB šifrovaného úložiska." + }, + "ppremiumSignUpTwoStep": { + "message": "Ďalšie možnosti dvojstupňového prihlásenia ako YubiKey, FIDO U2F a Duo." + }, + "ppremiumSignUpReports": { + "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čí." + }, + "ppremiumSignUpTotp": { + "message": "Generátor TOTP verifikačného kódu (2FA) pre prihlásenie do vášho trezora." + }, + "ppremiumSignUpSupport": { + "message": "Prioritná zákaznícka podpora." + }, + "ppremiumSignUpFuture": { + "message": "Všetky budúce prémiové funkcie. Viac už čoskoro!" + }, + "premiumPurchase": { + "message": "Zakúpiť Prémiový účet" + }, + "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, že podporujete Bitwarden." + }, + "premiumPrice": { + "message": "Všetko len za %price% /rok!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Obnova kompletná" + }, + "disableAutoTotpCopy": { + "message": "Vypnúť automatické kopírovanie TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Ak je kľúč overovateľa spojený s vašim prihlásením, TOTP verifikačný kód bude automaticky skopírovaný do schránky vždy, keď použijete automatické vypĺňanie." + }, + "disableAutoBiometricsPrompt": { + "message": "Pri spustení nevyžadovať biometrické údaje" + }, + "premiumRequired": { + "message": "Vyžaduje prémiový účet" + }, + "premiumRequiredDesc": { + "message": "Pre použitie tejto funkcie je potrebné prémiové členstvo." + }, + "enterVerificationCodeApp": { + "message": "Zadajte 6-miestny verifikačný kód z vašej overovacej aplikácie." + }, + "enterVerificationCodeEmail": { + "message": "Zadajte 6-miestny verifikačný kód, ktorý vám bol zaslaný emailom", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Overovací e-mail odoslaný na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapamätať 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." + }, + "webAuthnNewTab": { + "message": "V overovaní cez WebAuthn 2FA pokračujte na ďalšej záložke." + }, + "webAuthnNewTabOpen": { + "message": "Otvoriť v novej karte" + }, + "webAuthnAuthenticate": { + "message": "Overiť cez WebAuthn" + }, + "loginUnavailable": { + "message": "Prihlasovací údaj nedostupný" + }, + "noTwoStepProviders": { + "message": "Tento účet má povolené dvojstupňové prihlásenie, ale žiadny z nakonfigurovaných poskytovateľov nie je podporovaný týmto prehliadačom." + }, + "noTwoStepProviders2": { + "message": "Prosím, použite podporovaný prehliadač (napríklad Chrome) a/alebo pridajte iných poskytovateľov, ktorí sú lepšie podporovaní prehliadačmi (ako napríklad overovacia aplikácia)." + }, + "twoStepOptions": { + "message": "Možnosti dvojstupňového prihlásenia" + }, + "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": "Záchranný kód" + }, + "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ť s 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ť s 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": "Verifikačné kódy vám budú zaslané emailom." + }, + "selfHostedEnvironment": { + "message": "Sebou hosťované prostredie" + }, + "selfHostedEnvironmentFooter": { + "message": "Zadajte základnú URL adresu lokálne hosťovanej inštalácie Bitwarden." + }, + "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 ikôn" + }, + "environmentSaved": { + "message": "URL prostredia boli uložené." + }, + "enableAutoFillOnPageLoad": { + "message": "Povoliť automatické vypĺňanie pri načítaní stránky" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Ak je prihlasovací formulár detegovaný, automaticky vykonať vypĺňanie pri načítaní stránky." + }, + "experimentalFeature": { + "message": "Toto je zatiaľ experimentálna funkcia. Použite na vlastné riziko." + }, + "defaultAutoFillOnPageLoad": { + "message": "Predvolené nastavenie automatického vypĺňania pre prihlasovacie položky" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Po zapnutí funkcie Automatické vypĺňanie pri načítaní stránky môžete túto funkciu zapnúť alebo vypnúť pre jednotlivé položky prihlásenia. Toto je predvolené nastavenie pre prihlasovacie položky, ktoré nie sú samostatne nakonfigurované." + }, + "itemAutoFillOnPageLoad": { + "message": "Automatické vypĺňanie pri načítaní stránky (ak je povolené v možnostiach)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Pôvodné nastavenia" + }, + "autoFillOnPageLoadYes": { + "message": "Automatické vypĺňanie pri načítaní stránky" + }, + "autoFillOnPageLoadNo": { + "message": "Nevypĺňať automaticky pri načítaní stránky" + }, + "commandOpenPopup": { + "message": "Otvoriť vyskakovacie okno trezora" + }, + "commandOpenSidebar": { + "message": "Otvoriť trezor v bočnom paneli" + }, + "commandAutofillDesc": { + "message": "Automaticky vyplniť naposledy použité prihlasovacie údaje pre túto stránku" + }, + "commandGeneratePasswordDesc": { + "message": "Vygenerovať a skopírovať nové náhodné heslo do schránky" + }, + "commandLockVaultDesc": { + "message": "Zamknúť trezor" + }, + "privateModeWarning": { + "message": "Podpora privátneho režimu je experimentálna a niektoré funkcie sú obmedzené." + }, + "customFields": { + "message": "Vlastné polia" + }, + "copyValue": { + "message": "Kopírovať hodnotu" + }, + "value": { + "message": "Hodnota" + }, + "newCustomField": { + "message": "Nové vlastné pole" + }, + "dragToSort": { + "message": "Zoradiť presúvaním" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Skryté" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Prepojené", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Prepojená hodnota", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Kliknutie mimo popup okna na prezretie vášho emailu pre overovací kód spôsobí zavretie tohto popupu. Chcete otvoriť tento popup v novom okne tak, aby sa nezavrel?" + }, + "popupU2fCloseMessage": { + "message": "Tento prehliadač nedokáže spracovať U2F požiadavku v popup okne. Chcete ho otvoriť v novom okne aby ste sa mohli prihlásiť pomocou U2F?" + }, + "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." + }, + "disableBadgeCounter": { + "message": "Zakázať počítadlo na ikone" + }, + "disableBadgeCounterDesc": { + "message": "Zakáže počítadlo na ikone, ktoré zobrazuje počet prihlasovacích údajov v trezore pre aktuálnu stránku." + }, + "cardholderName": { + "message": "Meno vlastníka karty" + }, + "number": { + "message": "Číslo" + }, + "brand": { + "message": "Značka" + }, + "expirationMonth": { + "message": "Mesiac expirácie" + }, + "expirationYear": { + "message": "Rok expirácie" + }, + "expiration": { + "message": "Expirácia" + }, + "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" + }, + "securityCode": { + "message": "Bezpečnostný kód" + }, + "ex": { + "message": "napr." + }, + "title": { + "message": "Oslovenie" + }, + "mr": { + "message": "Pán" + }, + "mrs": { + "message": "Pani" + }, + "ms": { + "message": "Slečna" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Krstné meno" + }, + "middleName": { + "message": "Druhé meno" + }, + "lastName": { + "message": "Priezvisko" + }, + "fullName": { + "message": "Celé meno" + }, + "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" + }, + "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" + }, + "type": { + "message": "Typ" + }, + "typeLogin": { + "message": "Prihlásenie" + }, + "typeLogins": { + "message": "Prihlasovacie údaje" + }, + "typeSecureNote": { + "message": "Zabezpečená poznámka" + }, + "typeCard": { + "message": "Karta" + }, + "typeIdentity": { + "message": "Identita" + }, + "passwordHistory": { + "message": "História hesla" + }, + "back": { + "message": "Späť" + }, + "collections": { + "message": "Zbierky" + }, + "favorites": { + "message": "Obľúbené" + }, + "popOutNewWindow": { + "message": "Otvoriť v novom okne" + }, + "refresh": { + "message": "Obnoviť" + }, + "cards": { + "message": "Karty" + }, + "identities": { + "message": "Identity" + }, + "logins": { + "message": "Prihlasovacie údaje" + }, + "secureNotes": { + "message": "Zabezpečené poznámky" + }, + "clear": { + "message": "Vyčistiť", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Overiť či došlo k úniku hesla." + }, + "passwordExposed": { + "message": "Toto heslo uniklo $VALUE$ krát. 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" + }, + "toggleCurrentUris": { + "message": "Prepnúť zobrazovanie aktuálnej URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Aktuálna URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organizácia", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Typy" + }, + "allItems": { + "message": "Všetky položky" + }, + "noPasswordsInList": { + "message": "Neboli nájdené žiadne heslá." + }, + "remove": { + "message": "Odstrániť" + }, + "default": { + "message": "Predvolené" + }, + "dateUpdated": { + "message": "Aktualizované", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Heslo bolo aktualizované", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Ste si istí, že chcete použiť možnosť \"Nikdy\"? Táto predvoľba ukladá šifrovací kľúč od trezora priamo na zariadení. Ak použijete túto možnosť, mali by ste svoje zariadenie náležite zabezpečiť." + }, + "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úť s PIN" + }, + "setYourPinCode": { + "message": "Nastaviť kód PIN na odomykanie Bitwardenu. Nastavenie PIN sa vynuluje, ak sa úplne odhlásite z aplikácie." + }, + "pinRequired": { + "message": "Kód PIN je povinný." + }, + "invalidPin": { + "message": "Neplatný PIN kód." + }, + "unlockWithBiometrics": { + "message": "Odomknúť pomocou biometrie" + }, + "awaitDesktop": { + "message": "Čaká sa na potvrdenie z desktopu" + }, + "awaitDesktopDesc": { + "message": "Ak chcete povoliť biometriu pre prehliadač, potvrďte použitie biometrie v aplikácii Bitwarden Desktop." + }, + "lockWithMasterPassOnRestart": { + "message": "Pri reštarte prehliadača zamknúť s hlavným heslom" + }, + "selectOneCollection": { + "message": "Musíte vybrať aspoň jednu zbierku." + }, + "cloneItem": { + "message": "Klonovať položku" + }, + "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" + }, + "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 narvalo odstrániť túto položku?" + }, + "permanentlyDeletedItem": { + "message": "Natrvalo odstrániť položku" + }, + "restoreItem": { + "message": "Obnoviť položku" + }, + "restoreItemConfirmation": { + "message": "Naozaj chcete obnoviť túto položku?" + }, + "restoredItem": { + "message": "Obnovená položka" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-vyplniť a Uložiť" + }, + "autoFillSuccessAndSavedUri": { + "message": "Automatické vypĺnenie a uloženie úspešné" + }, + "autoFillSuccess": { + "message": "Automaticky vyplnené" + }, + "setMasterPassword": { + "message": "Nastaviť 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é 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." + }, + "termsOfService": { + "message": "Podmienky používania" + }, + "privacyPolicy": { + "message": "Zásady ochrany osobných údajov" + }, + "hintEqualsPassword": { + "message": "Nápoveda pre heslo nemôže byť rovnaká ako heslo." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Overenie synchronizácie desktopu" + }, + "desktopIntegrationVerificationText": { + "message": "Prosím, overte, že desktopová aplikácia zobrazuje tento odtlačok: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Integrácia v prehliadači nie je povolená" + }, + "desktopIntegrationDisabledDesc": { + "message": "Integrácia v prehliadači nie je povolená v aplikácii Bitwarden Desktop. Prosím, povoľte ju v nastaveniach desktopovej aplikácie." + }, + "startDesktopTitle": { + "message": "Spustiť desktopovú aplikáciu Bitwarden Desktop" + }, + "startDesktopDesc": { + "message": "Aplikácia Bitwarden Desktop musí byť pred použitím odomknutia pomocou biometrických údajov spustená." + }, + "errorEnableBiometricTitle": { + "message": "Nie je môžné povoliť biometriu" + }, + "errorEnableBiometricDesc": { + "message": "Akcia bola zrušená desktopovou aplikáciou" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktopová aplikácia pre počítač zneplatnila zabezpečený komunikačný kanál. Skúste túto operáciu znova" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Komunikácia s desktopom prerušená" + }, + "nativeMessagingWrongUserDesc": { + "message": "Táto desktopová aplikácia je prihlásená do iného účtu. Zaistite, aby boli obe aplikácie prihlásené do rovnakého účtu." + }, + "nativeMessagingWrongUserTitle": { + "message": "Nezhoda účtu" + }, + "biometricsNotEnabledTitle": { + "message": "Biometria nie je povolená" + }, + "biometricsNotEnabledDesc": { + "message": "Biometria v prehliadači vyžaduje, aby bola povolená biometria v desktopovej aplikácii." + }, + "biometricsNotSupportedTitle": { + "message": "Biometria nie je podporovaná" + }, + "biometricsNotSupportedDesc": { + "message": "Biometria v prehliadači nie je podporovaná na tomto zariadení." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Povolenie nebolo udelené" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bez oprávnenia komunikovať s aplikáciou Bitwarden Desktop nemôžeme poskytnúť biometriu v rozšírení prehliadača. Skúste to znova." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Chyba žiadosti o povolenie" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Túto akciu nie je možné vykonať na bočnom paneli. Skúste to znova vo vyskakovacom alebo samostatnom okne." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Politika organizácie ovplyvňuje vaše možnosti vlastníctva." + }, + "excludedDomains": { + "message": "Vylúčené domény" + }, + "excludedDomainsDesc": { + "message": "Bitwarden nebude požadovať ukladanie prihlasovacích údajov pre tieto domény. Aby sa zmeny prejavili, musíte stránku obnoviť." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ nie je platná doména", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Odoslať", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Hľadať Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Pridať Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "Súbor" + }, + "allSends": { + "message": "Všetky Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Bol dosiahnutý maximálny počet prístupov", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expirované" + }, + "pendingDeletion": { + "message": "Čakajúce odstránenie" + }, + "passwordProtected": { + "message": "Chránené heslom" + }, + "copySendLink": { + "message": "Kopírovať odkaz na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Odstrániť heslo" + }, + "delete": { + "message": "Odstrániť" + }, + "removedPassword": { + "message": "Heslo odstránené" + }, + "deletedSend": { + "message": "Odstrániť Send", + "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." + }, + "disabled": { + "message": "Zakázané" + }, + "removePasswordConfirmation": { + "message": "Ste si istý, že chcete odstrániť heslo?" + }, + "deleteSend": { + "message": "Odstrániť Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Ste si istý, že chcete odstrániť Send?", + "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." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Priateľský názov pre popísanie tohto Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Súbor, ktorý chcete odoslať." + }, + "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." + }, + "oneDay": { + "message": "1 deň" + }, + "days": { + "message": "$DAYS$ dní", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Vlastné" + }, + "maximumAccessCount": { + "message": "Maximálny počet prístupov" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Pri uložení 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." + }, + "sendTextDesc": { + "message": "Text, ktorý chcete odoslať." + }, + "sendHideText": { + "message": "Predvolene skryť text tohto Sendu.", + "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" + }, + "createSend": { + "message": "Vytvoriť nový Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nové heslo" + }, + "sendDisabled": { + "message": "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Ak chcete zvoliť súbor, otvorte rozšírenie v bočnom paneli (ak je to možné) alebo kliknite do tohto okna kliknutím na tento banner." + }, + "sendFirefoxFileWarning": { + "message": "Ak chcete zvoliť súbor pomocou prehliadača Firefox, otvorte rozšírenie v bočnom paneli alebo kliknite do tohto okna kliknutím na tento banner." + }, + "sendSafariFileWarning": { + "message": "Ak chcete zvoliť súbor pomocou Safari, kliknite na tento banner a otvorte nové okno." + }, + "sendFileCalloutHeader": { + "message": "Skôr než začnete" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Ak chcete použiť pre výber dátumu štýl kalendára", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "kliknite sem", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "a vysunie sa.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Uvedený dátum exspirácie nie je platný." + }, + "deletionDateIsInvalid": { + "message": "Uvedený dátum odstránenia nie je platný." + }, + "expirationDateAndTimeRequired": { + "message": "Vyžaduje sa dátum a čas vypršania platnosti." + }, + "deletionDateAndTimeRequired": { + "message": "Vyžaduje sa dátum a čas odstránenia." + }, + "dateParsingError": { + "message": "Pri ukladaní dátumov odstránenia a vypršania platnosti sa vyskytla chyba." + }, + "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." + }, + "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ť." + }, + "emailVerificationRequired": { + "message": "Vyžaduje sa overenie e-mailu" + }, + "emailVerificationRequiredDesc": { + "message": "Na použitie tejto funkcie musíte overiť svoj e-mail. Svoj e-mail môžete overiť vo webovom trezore." + }, + "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." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatická registrácia" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Táto organizácia má podnikovú politiku, ktorá vás automaticky zaregistruje na obnovenia hesla. Registrácia umožní správcom organizácie zmeniť vaše hlavné heslo." + }, + "selectFolder": { + "message": "Vybrať priečinok..." + }, + "ssoCompleteRegistration": { + "message": "Aby ste dokončili nastavenie prihlasovacieho portálu (SSO), prosím nastavte hlavné heslo na prístup a ochranu vášho trezora." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Časový limit vášho trezora prekračuje obmedzenia nastavené vašou organizáciou." + }, + "vaultExportDisabled": { + "message": "Export trezoru je zakázaný" + }, + "personalVaultExportPolicyInEffect": { + "message": "Jedna alebo viacero zásad organizácie vám bráni exportovať váš osobný trezor." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Nie je možné identifikovať platný prvok formulára. Skúste namiesto toho preskúmať HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Nenašiel sa žiadny jedinečný identifikátor." + }, + "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" + }, + "removeMasterPassword": { + "message": "Odstrániť hlavné heslo" + }, + "removedMasterPassword": { + "message": "Hlavné heslo bolo odstránené." + }, + "leaveOrganizationConfirmation": { + "message": "Naozaj chcete opustiť túto organizáciu?" + }, + "leftOrganization": { + "message": "Opustili ste organizáciu." + }, + "toggleCharacterCount": { + "message": "Prepnúť počítadlo znakov" + }, + "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" + } + } + }, + "error": { + "message": "Chyba" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Použiť možnosti subadresovania svojho poskytovateľa e-mailu." + }, + "catchallEmail": { + "message": "Catch-all e-mail" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "Čo by ste chceli vygenerovať?" + }, + "passwordType": { + "message": "Typ hesla" + }, + "service": { + "message": "Služba" + } +} diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json new file mode 100644 index 0000000000..213e8e397f --- /dev/null +++ b/apps/browser/src/_locales/sl/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Brezplačen upravitelj gesel", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Varen in brezplačen upravitelj gesel za vse vaše naprave.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Prijavite se ali ustvarite nov račun za dostop do vašega varnega trezorja." + }, + "createAccount": { + "message": "Ustvari račun" + }, + "login": { + "message": "Prijavi se" + }, + "enterpriseSingleSignOn": { + "message": "Enkratna podjetniška prijava." + }, + "cancel": { + "message": "Prekliči" + }, + "close": { + "message": "Zapri" + }, + "submit": { + "message": "Pošlji" + }, + "emailAddress": { + "message": "Elektronski naslov" + }, + "masterPass": { + "message": "Glavno geslo" + }, + "masterPassDesc": { + "message": "Glavno geslo je geslo, ki ga uporabljate za dostop do vašega trezorja. Zelo pomembno je, da ne pozabite vaše glavno geslo. Gesla ni mogoče obnoviti v primeru, če ga pozabite." + }, + "masterPassHintDesc": { + "message": "Namig glavnega gesla vam lahko pomaga, da se spomnite vašega gesla, če ga pozabite." + }, + "reTypeMasterPass": { + "message": "Ponovno vnesite glavno geslo" + }, + "masterPassHint": { + "message": "Namig za glavno geslo (neobvezno)" + }, + "tab": { + "message": "Zavihek" + }, + "myVault": { + "message": "Moj trezor" + }, + "tools": { + "message": "Orodja" + }, + "settings": { + "message": "Nastavitve" + }, + "currentTab": { + "message": "Trenutni zavihek" + }, + "copyPassword": { + "message": "Kopiraj geslo" + }, + "copyNote": { + "message": "Kopiraj opombo" + }, + "copyUri": { + "message": "Kopiraj URL" + }, + "copyUsername": { + "message": "Kopiraj uporabniško ime" + }, + "copyNumber": { + "message": "Kopiraj številko" + }, + "copySecurityCode": { + "message": "Kopiraj varnostno kodo" + }, + "autoFill": { + "message": "samodejno zapolni" + }, + "generatePasswordCopied": { + "message": "Generiraj geslo (kopirano)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "Nobenih ujemajočih prijav." + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "Nobene prijave ni na voljo za auto-izpolnitev za trenutni zavihek." + }, + "addLogin": { + "message": "Dodaj prijavo" + }, + "addItem": { + "message": "Dodal element" + }, + "passwordHint": { + "message": "Namig za geslo" + }, + "enterEmailToGetHint": { + "message": "Vnesite epoštni naslov vašega računa, da prejmete namig za vaše glavno geslo." + }, + "getMasterPasswordHint": { + "message": "Pridobi namig za glavno geslo" + }, + "continue": { + "message": "Nadaljuj" + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verifikacijska koda" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "account": { + "message": "Račun" + }, + "changeMasterPassword": { + "message": "Spremeni glavno geslo" + }, + "fingerprintPhrase": { + "message": "Fingerprint 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": "Fingerprint fraza 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." + }, + "twoStepLogin": { + "message": "Prijava v dveh korakih" + }, + "logOut": { + "message": "Odjava" + }, + "about": { + "message": "O programu" + }, + "version": { + "message": "Različica" + }, + "save": { + "message": "Shrani" + }, + "move": { + "message": "Premakni" + }, + "addFolder": { + "message": "Dodaj mapo" + }, + "name": { + "message": "Naziv" + }, + "editFolder": { + "message": "Uredi mapo" + }, + "deleteFolder": { + "message": "Izbriši mapo" + }, + "folders": { + "message": "Mape" + }, + "noFolders": { + "message": "Ni map za prikazat." + }, + "helpFeedback": { + "message": "Pomoč in povratne informacije" + }, + "sync": { + "message": "Sinhronizacija" + }, + "syncVaultNow": { + "message": "Sinhroniziraj trezor zdaj" + }, + "lastSync": { + "message": "Zadnja sinhronizacija:" + }, + "passGen": { + "message": "Generator gesel" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Avtomatično generiraj močna, edinstvena gesla za vaše prijave." + }, + "bitWebVault": { + "message": "Bitwarden spletni trezor" + }, + "importItems": { + "message": "Uvozi predmete" + }, + "select": { + "message": "Izberi" + }, + "generatePassword": { + "message": "Generiraj geslo" + }, + "regeneratePassword": { + "message": "Regeneriraj geslo" + }, + "options": { + "message": "Možnosti" + }, + "length": { + "message": "Dolžina" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "Število besed" + }, + "wordSeparator": { + "message": "Ločilo besed" + }, + "capitalize": { + "message": "Velika začetnica", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Vključi številko" + }, + "minNumbers": { + "message": "Minimalno števil" + }, + "minSpecial": { + "message": "Minimalno posebnih znakov" + }, + "avoidAmbChar": { + "message": "Izogibaj se dvoumnim znakom" + }, + "searchVault": { + "message": "Išči v trezorju" + }, + "edit": { + "message": "Uredi" + }, + "view": { + "message": "Pogled" + }, + "noItemsInList": { + "message": "Ni predmetov za prikazat." + }, + "itemInformation": { + "message": "Informacije o izdelku" + }, + "username": { + "message": "Uporabniško ime" + }, + "password": { + "message": "Geslo" + }, + "passphrase": { + "message": "Parafraza" + }, + "favorite": { + "message": "Priljubljeni" + }, + "notes": { + "message": "Opombe" + }, + "note": { + "message": "Opomba" + }, + "editItem": { + "message": "Uredi vnos" + }, + "folder": { + "message": "Mapa" + }, + "deleteItem": { + "message": "Izbiši vnos" + }, + "viewItem": { + "message": "Ogled vnosa" + }, + "launch": { + "message": "Zaženi" + }, + "website": { + "message": "Spletna stran" + }, + "toggleVisibility": { + "message": "Preklopi vidljivost" + }, + "manage": { + "message": "Upravljaj" + }, + "other": { + "message": "Drugo" + }, + "rateExtension": { + "message": "Ocenite to razširitev" + }, + "rateExtensionDesc": { + "message": "Premislite če nam želite pomagati z dobro oceno!" + }, + "browserNotSupportClipboard": { + "message": "Vaš spletni brskalnik ne podpira enostavno kopiranje odložišča. Kopirajte ročno." + }, + "verifyIdentity": { + "message": "Verify Identity" + }, + "yourVaultIsLocked": { + "message": "Vaš trezor je zaklenjen. Potrdite vaše glavno geslo 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" + }, + "vaultTimeout": { + "message": "Časovna omejitev trezorja" + }, + "lockNow": { + "message": "Zakleni zdaj" + }, + "immediately": { + "message": "Takoj" + }, + "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" + }, + "onLocked": { + "message": "Ob sistemskem zaklepu" + }, + "onRestart": { + "message": "Ob ponovnem zagonu spletnega brskalnika" + }, + "never": { + "message": "Nikoli" + }, + "security": { + "message": "Varnost" + }, + "errorOccurred": { + "message": "Prišlo je do napake" + }, + "emailRequired": { + "message": "Epoštni naslov je obvezen." + }, + "invalidEmail": { + "message": "Neveljaven epoštni naslov." + }, + "masterPassRequired": { + "message": "Glavno geslo je obvezno." + }, + "masterPassLength": { + "message": "Glavno geslo mora biti dolgo najmanj 8 znakov." + }, + "masterPassDoesntMatch": { + "message": "Potrditev glavnega gesla se ne ujema." + }, + "newAccountCreated": { + "message": "Vaš nov račun je bil ustvarjen! Sedaj se lahko prijavite." + }, + "masterPassSent": { + "message": "Poslali smo vam epoštno spročilo z namigom za vaše glavno geslo." + }, + "verificationCodeRequired": { + "message": "Verifikacijska koda je obvezna." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "valueCopied": { + "message": "$VALUE$ kopirano", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Ni mogoče avto-izpolniti izbrazno prijavo na tej spletni strani. Namesto tega kopirajte in prilepite podatke." + }, + "loggedOut": { + "message": "Odjavljen" + }, + "loginExpired": { + "message": "Vaša seja je potekla." + }, + "logOutConfirmation": { + "message": "Ste prepričani, da se želite odjaviti?" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "unexpectedError": { + "message": "Prišlo je do nepričakovane napake." + }, + "nameRequired": { + "message": "Ime je obvezno." + }, + "addedFolder": { + "message": "Dodana mapa" + }, + "changeMasterPass": { + "message": "Spremeni glavno geslo" + }, + "changeMasterPasswordConfirmation": { + "message": "Svoje glavno geslo lahko spremenite v bitwarden.com spletnem trezorju. Želite obiskati spletno stran zdaj?" + }, + "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?" + }, + "editedFolder": { + "message": "Urejena mapa" + }, + "deleteFolderConfirmation": { + "message": "Ste prepričani, da želite izbrisati to mapo?" + }, + "deletedFolder": { + "message": "Izbrisana mapa" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Sinhronizacija končana" + }, + "syncingFailed": { + "message": "Sinhronizacija ni uspela" + }, + "passwordCopied": { + "message": "Geslo je bilo kopirano" + }, + "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": "Nov URL" + }, + "addedItem": { + "message": "Dodan vnos" + }, + "editedItem": { + "message": "Urejen vnos" + }, + "deleteItemConfirmation": { + "message": "Ali ste prepričani, da želite izbrisati?" + }, + "deletedItem": { + "message": "Pošlji vnos v smeti" + }, + "overwritePassword": { + "message": "Prepiši geslo" + }, + "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?" + }, + "searchFolder": { + "message": "Preišči mapo" + }, + "searchCollection": { + "message": "Preišči zbirko" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "Brez mape", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Ne prikazuj identitete" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Da, shrani zdaj" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Da, posodobi zdaj" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Spremeni temo aplikacije." + }, + "dark": { + "message": "Temno", + "description": "Dark color" + }, + "light": { + "message": "Svetlo", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Ta izvoz šifrira vaše podatke z uporabo ključa za šifriranje. Če boste kdaj zamenjali ključ za šifriranje, je potrebno, da ponovno naredite izvoz, ker ne boste mogli dešifrirati to izvoženo datoteko." + }, + "encExportAccountWarningDesc": { + "message": "Ključ za šifriranje je edinstven za vsak Bitwarden račun, zato ni mogoče da se uvozi šifrirana datoteka v drugi račun." + }, + "exportMasterPassword": { + "message": "Vnesite vaše glavno geslo za izvoz podatkov iz vašega trezorja." + }, + "shared": { + "message": "V skupni rabi" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "message": "Deli" + }, + "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." + }, + "learnMore": { + "message": "Več o tem" + }, + "authenticatorKeyTotp": { + "message": "Ključ avtentikatorja (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verifikacijska koda (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiraj verifikacijsko kodo" + }, + "attachments": { + "message": "Priponke" + }, + "deleteAttachment": { + "message": "Izbriši priponke" + }, + "deleteAttachmentConfirmation": { + "message": "Ste prepričani, da želite izbrisati to priponko?" + }, + "deletedAttachment": { + "message": "Izbrisana priponka" + }, + "newAttachment": { + "message": "Dodaj novo priponko" + }, + "noAttachments": { + "message": "Ni priponk." + }, + "attachmentSaved": { + "message": "Priponka je bila shranjena." + }, + "file": { + "message": "Datoteka" + }, + "selectFile": { + "message": "Izberite datoteko." + }, + "maxFileSize": { + "message": "Največja velikost datoteke je 500 MB." + }, + "featureUnavailable": { + "message": "Funkcija ni na voljo." + }, + "updateKey": { + "message": "Ne morete koristiti to funkcijo dokler ne posodobite vaš ključ za šifriranje." + }, + "premiumMembership": { + "message": "Premium članstvo" + }, + "premiumManage": { + "message": "Upravljanje članstva" + }, + "premiumManageAlert": { + "message": "S svojim članstvom lahko upravljate na bitwarden.com spletnem trezorju. Želite obiskati spletno stran zdaj?" + }, + "premiumRefresh": { + "message": "Osvežite članstvo" + }, + "premiumNotCurrentMember": { + "message": "Trenutno niste premium član." + }, + "premiumSignUpAndGet": { + "message": "Prijavite se za premium članstvo in dobite:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB šifriranog prostora za shrambo podatkov." + }, + "ppremiumSignUpTwoStep": { + "message": "Dodatne možnosti za prijavo v dveh korakih kot so YubiKey, FIDO U2F in Duo." + }, + "ppremiumSignUpReports": { + "message": "Higiena gesel, zdravje računa in poročila o kraji podatkov, da lahko ohranite vaš trezor varen." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verifikacijska koda (2FA) generator za prijave v vašem trezorju." + }, + "ppremiumSignUpSupport": { + "message": "Prioritetna podpora strankam." + }, + "ppremiumSignUpFuture": { + "message": "Vse bodoče premium ugodnosti. Kmalu še več!" + }, + "premiumPurchase": { + "message": "Kupite premium članstvo" + }, + "premiumPurchaseAlert": { + "message": "Premium članstvo lahko kupite na bitwarden.com spletnem trezoju. Želite obiskati spletno stran zdaj?" + }, + "premiumCurrentMember": { + "message": "Ste premium član!" + }, + "premiumCurrentMemberThanks": { + "message": "Hvala da podpirate Bitwarden." + }, + "premiumPrice": { + "message": "Vse za samo $PRICE$ /leto!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Osveževanje zaključeno" + }, + "disableAutoTotpCopy": { + "message": "Onemogočite avtomatsko kopiranje TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Če za prijavo uporabljate avtentikacijski ključ je TOTP verifikacijska koda avtomatično kopirana v vaše odložišče kadarkoli avto-izpolnite prijavo." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium članstvo je potrebno" + }, + "premiumRequiredDesc": { + "message": "Premium članstvo je potrebno za uporabo te funkcije." + }, + "enterVerificationCodeApp": { + "message": "Vnesite 6-mestno verifikacijsko kodo iz vaše verifikacijske 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": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapomni si me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Ponovno pošlji verifikacijsko kodo na email" + }, + "useAnotherTwoStepMethod": { + "message": "Uporabi drugi način prijave v dveh korakih" + }, + "insertYubiKey": { + "message": "Priključi svoj YubiKey v USB priključek, nato pa pritisni na njegovo tipko." + }, + "insertU2f": { + "message": "Priključi svoj varnostni ključ v USB priključek. Če ima tipko, se jo dotaknite." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "loginUnavailable": { + "message": "Prijava ni na voljo" + }, + "noTwoStepProviders": { + "message": "Ta račun ima omogočemo prijavo v dveh korakih, ampak, nobena izmed konfiguriranih prijav v dveh korakih ni podprta v teb spletnem brskalniku." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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": "Aplikacija za avtentikacijo" + }, + "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." + }, + "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": "URL naslov strežnika" + }, + "apiUrl": { + "message": "URL naslov API strežnika" + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill on Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Uporabi privzete nastavitve" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Besedilo" + }, + "cfTypeHidden": { + "message": "Skrito" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Če kliknete izven pojavnega okna, da preverite vašo epošto za vašo verifikacijsko kodo, bo to povročilo, da se je pojavno okno zapre. Želite odpreti to pojavno okno v novem oknu, tako, da se ne bo zaprlo?" + }, + "popupU2fCloseMessage": { + "message": "Ta spletni brskalnik ne more obdelati U2F zahteve v tem pojavnem oknu. Želite odpreti to pojavno okno v novem oknu, tako, da se lahko prijavite z U2F?" + }, + "disableFavicon": { + "message": "Onemogoči ikone spletnih mest" + }, + "disableFaviconDesc": { + "message": "Ikone spletnih mest ponujajo prepoznavne ikone zraven prijav v vašem trezorju." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Ime imetnika kartice" + }, + "number": { + "message": "Številka" + }, + "brand": { + "message": "Znamka" + }, + "expirationMonth": { + "message": "Mesec poteka" + }, + "expirationYear": { + "message": "Leto poteka" + }, + "expiration": { + "message": "Potek" + }, + "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" + }, + "securityCode": { + "message": "Varnostna koda" + }, + "ex": { + "message": "npr." + }, + "title": { + "message": "Naziv" + }, + "mr": { + "message": "G." + }, + "mrs": { + "message": "Ga." + }, + "ms": { + "message": "Gdč." + }, + "dr": { + "message": "Dr." + }, + "firstName": { + "message": "Ime" + }, + "middleName": { + "message": "Srednje ime" + }, + "lastName": { + "message": "Priimek" + }, + "fullName": { + "message": "Full Name" + }, + "identityName": { + "message": "Ime identitete" + }, + "company": { + "message": "Podjetje" + }, + "ssn": { + "message": "EMŠO" + }, + "passportNumber": { + "message": "Številka potnega lista" + }, + "licenseNumber": { + "message": "Številka vozniškega dovoljenja" + }, + "email": { + "message": "E-pošta" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Naslov" + }, + "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" + }, + "type": { + "message": "Vrsta" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeLogins": { + "message": "Prijave" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Priljubljeno" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Osveži" + }, + "cards": { + "message": "Plačilne kartice" + }, + "identities": { + "message": "Identitete" + }, + "logins": { + "message": "Prijave" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Počisti", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set 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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Add Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "File" + }, + "allSends": { + "message": "All Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "delete": { + "message": "Delete" + }, + "removedPassword": { + "message": "Removed Password" + }, + "deletedSend": { + "message": "Deleted 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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json new file mode 100644 index 0000000000..e5cb6ff47f --- /dev/null +++ b/apps/browser/src/_locales/sr/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Бесплатни Менаџер Лозинки", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Сигурни и бесплатни менаџер лозинке за све ваше уређаје.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Пријавите се или креирајте нови налог за приступ Сефу." + }, + "createAccount": { + "message": "Креирај налог" + }, + "login": { + "message": "Пријавите се" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Једна Пријава" + }, + "cancel": { + "message": "Откажи" + }, + "close": { + "message": "Затвори" + }, + "submit": { + "message": "Пошаљи" + }, + "emailAddress": { + "message": "Адреса е-поште" + }, + "masterPass": { + "message": "Главна Лозинка" + }, + "masterPassDesc": { + "message": "Главна Лозинка је лозинка коју користите за приступ Вашем сефу. Врло је важно да је не заборавите. Не постоји начин да повратите лозинку у случају да је заборавите." + }, + "masterPassHintDesc": { + "message": "Савет Главне Лозинке може да Вам помогне да се потсетите ако је заборавите." + }, + "reTypeMasterPass": { + "message": "Поновите Главну Лозинку" + }, + "masterPassHint": { + "message": "Савет Главне Лозинке (опционо)" + }, + "tab": { + "message": "Језичак" + }, + "myVault": { + "message": "Мој Сеф" + }, + "tools": { + "message": "Алатке" + }, + "settings": { + "message": "Подешавања" + }, + "currentTab": { + "message": "Тренутни језичак" + }, + "copyPassword": { + "message": "Копирај лозинку" + }, + "copyNote": { + "message": "Копирај белешку" + }, + "copyUri": { + "message": "Копирај УРЛ" + }, + "copyUsername": { + "message": "Копирај име" + }, + "copyNumber": { + "message": "Копирај број" + }, + "copySecurityCode": { + "message": "Копирај сигурносни код" + }, + "autoFill": { + "message": "Аутоматско допуњавање" + }, + "generatePasswordCopied": { + "message": "Генериши Лозинку (копирано)" + }, + "copyElementIdentifier": { + "message": "Копирај назив прилагођеног поља" + }, + "noMatchingLogins": { + "message": "Нема одговарајућих пријављивања." + }, + "unlockVaultMenu": { + "message": "Откључај свој сеф" + }, + "loginToVaultMenu": { + "message": "Пријавите се на свој налог" + }, + "autoFillInfo": { + "message": "Нема доступне пријаве за аутоматско допуњавање за тренутни језичак прегледача." + }, + "addLogin": { + "message": "Додај Пријаву" + }, + "addItem": { + "message": "Додај ставку" + }, + "passwordHint": { + "message": "Савет лозинке" + }, + "enterEmailToGetHint": { + "message": "Унесите Ваш имејл да би добили савет за Вашу Главну Лозинку." + }, + "getMasterPasswordHint": { + "message": "Добити савет за Главну Лозинку" + }, + "continue": { + "message": "Настави" + }, + "sendVerificationCode": { + "message": "Пошаљите верификациони код на вашу е-пошту" + }, + "sendCode": { + "message": "Пошаљи код" + }, + "codeSent": { + "message": "Код послан" + }, + "verificationCode": { + "message": "Верификациони код" + }, + "confirmIdentity": { + "message": "Потврдите свој идентитет да би наставили." + }, + "account": { + "message": "Налог" + }, + "changeMasterPassword": { + "message": "Промени главну лозинку" + }, + "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." + }, + "twoStepLogin": { + "message": "Пријава у два корака" + }, + "logOut": { + "message": "Одјави се" + }, + "about": { + "message": "О апликацији" + }, + "version": { + "message": "Верзија" + }, + "save": { + "message": "Сачувај" + }, + "move": { + "message": "Премести" + }, + "addFolder": { + "message": "Додај фасциклу" + }, + "name": { + "message": "Име" + }, + "editFolder": { + "message": "Уреди фасциклу" + }, + "deleteFolder": { + "message": "Избриши фасциклу" + }, + "folders": { + "message": "Фасцикле" + }, + "noFolders": { + "message": "Нема фасцикле за приказивање." + }, + "helpFeedback": { + "message": "Помоћ и подршка" + }, + "sync": { + "message": "Синхронизација" + }, + "syncVaultNow": { + "message": "Одмах синхронизуј сеф" + }, + "lastSync": { + "message": "Задња синронизација:" + }, + "passGen": { + "message": "Генератор Лозинке" + }, + "generator": { + "message": "Генератор", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Аутоматски генеришите јаке, јединствене лозинке за ваше пријаве." + }, + "bitWebVault": { + "message": "Bitwarden Интернет Сеф" + }, + "importItems": { + "message": "Увоз ставки" + }, + "select": { + "message": "Изабери" + }, + "generatePassword": { + "message": "Генерисање лозинке" + }, + "regeneratePassword": { + "message": "Поново генериши лозинку" + }, + "options": { + "message": "Опције" + }, + "length": { + "message": "Дужина" + }, + "uppercase": { + "message": "Велика слова (A-Z)" + }, + "lowercase": { + "message": "Мала слова (a-z)" + }, + "numbers": { + "message": "Цифре (0-9)" + }, + "specialCharacters": { + "message": "Специјална слова (!@#$%^&*)" + }, + "numWords": { + "message": "Број речи" + }, + "wordSeparator": { + "message": "Одвајач речи" + }, + "capitalize": { + "message": "Прво слово велико", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Убаци број" + }, + "minNumbers": { + "message": "Минимално Бројева" + }, + "minSpecial": { + "message": "Минимално специјалних знакова" + }, + "avoidAmbChar": { + "message": "Избегавај двосмислене карактере" + }, + "searchVault": { + "message": "Претражи сеф" + }, + "edit": { + "message": "Уреди" + }, + "view": { + "message": "Приказ" + }, + "noItemsInList": { + "message": "Нема ставке у листи." + }, + "itemInformation": { + "message": "Инфо о ставци" + }, + "username": { + "message": "Корисничко име" + }, + "password": { + "message": "Лозинка" + }, + "passphrase": { + "message": "Фраза лозинке" + }, + "favorite": { + "message": "Омиљено" + }, + "notes": { + "message": "Белешке" + }, + "note": { + "message": "Белешка" + }, + "editItem": { + "message": "Уреди ставку" + }, + "folder": { + "message": "Фасцикла" + }, + "deleteItem": { + "message": "Обриши ставку" + }, + "viewItem": { + "message": "Види ставку" + }, + "launch": { + "message": "Отвори" + }, + "website": { + "message": "Веб сајт" + }, + "toggleVisibility": { + "message": "Пребаци видљивост" + }, + "manage": { + "message": "Управљати" + }, + "other": { + "message": "Остало" + }, + "rateExtension": { + "message": "Оцени овај додатак" + }, + "rateExtensionDesc": { + "message": "Молимо вас да размотрите да нам помогнете уз добру оцену!" + }, + "browserNotSupportClipboard": { + "message": "Ваш прегледач не подржава једноставно копирање у привремену меморију. Уместо тога копирајте га ручно." + }, + "verifyIdentity": { + "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": "Погрешна главна лозинка" + }, + "vaultTimeout": { + "message": "Тајмаут сефа" + }, + "lockNow": { + "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 сата" + }, + "onLocked": { + "message": "На закључавање система" + }, + "onRestart": { + "message": "На покретање прегледача" + }, + "never": { + "message": "Никада" + }, + "security": { + "message": "Сигурност" + }, + "errorOccurred": { + "message": "Дошло је до грешке!" + }, + "emailRequired": { + "message": "Имејл је неопходан." + }, + "invalidEmail": { + "message": "Неисправан имејл." + }, + "masterPassRequired": { + "message": "Главна Лозинка је неопходна." + }, + "masterPassLength": { + "message": "Главна Лозинка треба имати бар 8 знака." + }, + "masterPassDoesntMatch": { + "message": "Потврђена Главна Лозинка се не подудара." + }, + "newAccountCreated": { + "message": "Ваш налог је креиран! Сада се можете пријавити." + }, + "masterPassSent": { + "message": "Послали смо Вам поруку са саветом главне лозинке." + }, + "verificationCodeRequired": { + "message": "Верификациони код је обавезан." + }, + "invalidVerificationCode": { + "message": "Неисправан верификациони код" + }, + "valueCopied": { + "message": "$VALUE$ копиран(а/о)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Није могуће аутоматско допуњавање одабране ставке на овој страници. Уместо тога копирајте и налепите информације." + }, + "loggedOut": { + "message": "Одјављено" + }, + "loginExpired": { + "message": "Ваша сесија је истекла." + }, + "logOutConfirmation": { + "message": "Заиста желите да се одјавите?" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Не" + }, + "unexpectedError": { + "message": "Дошло је до неочекиване грешке." + }, + "nameRequired": { + "message": "Име је неопходно." + }, + "addedFolder": { + "message": "Фасцикла додата" + }, + "changeMasterPass": { + "message": "Промени главну лозинку" + }, + "changeMasterPasswordConfirmation": { + "message": "Можете променити главну лозинку у Вашем сефу на bitwarden.com. Да ли желите да посетите веб страницу сада?" + }, + "twoStepLoginConfirmation": { + "message": "Пријава у два корака чини ваш налог сигурнијим захтевом да верификујете своје податке помоћу другог уређаја, као што су безбедносни кључ, апликација, СМС-а, телефонски позив или имејл. Пријављивање у два корака може се омогућити на веб сефу. Да ли желите да посетите веб страницу сада?" + }, + "editedFolder": { + "message": "Фасцикла измењена" + }, + "deleteFolderConfirmation": { + "message": "Сигурно обрисати ову фасциклу?" + }, + "deletedFolder": { + "message": "Фасцикла обрисана" + }, + "gettingStartedTutorial": { + "message": "Туторијал" + }, + "gettingStartedTutorialVideo": { + "message": "Погледајте наш туторијал да бисте сазнали како да максимално искористите додатак прегледача." + }, + "syncingComplete": { + "message": "Синхронизација је завршена" + }, + "syncingFailed": { + "message": "Синхронизација није успела" + }, + "passwordCopied": { + "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": "Нови линк" + }, + "addedItem": { + "message": "Ставка додата" + }, + "editedItem": { + "message": "Ставка уређена" + }, + "deleteItemConfirmation": { + "message": "Сигурно послати ову ставку у отпад?" + }, + "deletedItem": { + "message": "Ставка послата у Отпад" + }, + "overwritePassword": { + "message": "Препиши лозинку" + }, + "overwritePasswordConfirmation": { + "message": "Сигурно преписати тренутну лозинку?" + }, + "overwriteUsername": { + "message": "Препиши име" + }, + "overwriteUsernameConfirmation": { + "message": "Сигурно преписати тренутно име?" + }, + "searchFolder": { + "message": "Претражи фасциклу" + }, + "searchCollection": { + "message": "Претражи колекцију" + }, + "searchType": { + "message": "Тип претраге" + }, + "noneFolder": { + "message": "Без фасцикле", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Онемогући обавештење Додај Пријаву" + }, + "addLoginNotificationDesc": { + "message": "„Нотификације Додај Лозинку“ аутоматски тражи да сачувате нове пријаве у сефу кад год се први пут пријавите на њих." + }, + "dontShowCardsCurrentTab": { + "message": "Не приказуј кредитне картице на страници" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Ставке кредитне картице из вашег сефа наведене су на страници „Тренутна картица“ ради једноставног приступа аутоматског попуњавања." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Не приказуј идентитете на страници" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Да ли Bitwarden треба да запамти ову лозинку?" + }, + "notificationAddSave": { + "message": "Сачувај" + }, + "disableChangedPasswordNotification": { + "message": "Онемогући обавештење о промењеним лозинкама" + }, + "disableChangedPasswordNotificationDesc": { + "message": "„Нотификација Промењена Лозинка“ аутоматски тражи да ажурирате лозинку за пријављивање у сефу сваки пут када открије да сте је променили на веб сајту." + }, + "notificationChangeDesc": { + "message": "Да ли желите да ажурирате ову лозинку за Bitwarden?" + }, + "notificationChangeSave": { + "message": "Ажурирај" + }, + "disableContextMenuItem": { + "message": "Онемогући опције у контекстном менију" + }, + "disableContextMenuItemDesc": { + "message": "Опције контекстуалног менија пружају брз приступ генерисању лозинки и пријавама за веб сајт на вашом тренутном језичку." + }, + "defaultUriMatchDetection": { + "message": "Стандардно налажење УРЛ", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Изаберите подразумевани начин на који се поступа са откривањем УРЛ за пријаве приликом извођења радњи као што је ауто-попуњавање." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Промени боје апликације" + }, + "dark": { + "message": "Тамна", + "description": "Dark color" + }, + "light": { + "message": "Светла", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized црно", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Унети главну лозинку за извоз сефа." + }, + "shared": { + "message": "Дељено" + }, + "learnOrg": { + "message": "Сазнајте о организацијама" + }, + "learnOrgConfirmation": { + "message": "Bitwarden вам омогућава да делите ставке сефа са другима користећи организацију. Да ли желите да посетите веб локацију bitwarden.com да бисте сазнали више?" + }, + "moveToOrganization": { + "message": "Премести у организацију" + }, + "share": { + "message": "Подели" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ премештен у $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Изаберите организацију у коју желите да преместите овај предмет. Прелазак на организацију преноси власништво над ставком у ту организацију. Више нећете бити директни власник ове ставке након што је премештена." + }, + "learnMore": { + "message": "Сазнај више" + }, + "authenticatorKeyTotp": { + "message": "Једнократни код" + }, + "verificationCodeTotp": { + "message": "Једнократни код" + }, + "copyVerificationCode": { + "message": "Копирај верификациони код" + }, + "attachments": { + "message": "Прилози" + }, + "deleteAttachment": { + "message": "Обриши прилог" + }, + "deleteAttachmentConfirmation": { + "message": "Сигурно обрисати овај прилог?" + }, + "deletedAttachment": { + "message": "Прилог обрисан" + }, + "newAttachment": { + "message": "Додај нови прилог" + }, + "noAttachments": { + "message": "Без прилога." + }, + "attachmentSaved": { + "message": "Прилог је сачуван." + }, + "file": { + "message": "Датотека" + }, + "selectFile": { + "message": "Изабери датотеку." + }, + "maxFileSize": { + "message": "Максимална величина је 500МБ." + }, + "featureUnavailable": { + "message": "Функција је недоступна" + }, + "updateKey": { + "message": "Не можете да користите ову способност док не промените Ваш кључ за шифровање." + }, + "premiumMembership": { + "message": "Премијум чланство" + }, + "premiumManage": { + "message": "Управљање чланством" + }, + "premiumManageAlert": { + "message": "Можете управљати вашом претплатом на bitwarden.com. Да ли желите да посетите веб сајт сада?" + }, + "premiumRefresh": { + "message": "Освежите чланство" + }, + "premiumNotCurrentMember": { + "message": "Тренутно нисте премијум члан." + }, + "premiumSignUpAndGet": { + "message": "Пријавите се за премијум чланство и добијте:" + }, + "ppremiumSignUpStorage": { + "message": "1ГБ шифровано складиште за прилоге." + }, + "ppremiumSignUpTwoStep": { + "message": "Додатне опције пријаве у два корака као што су YubiKey, FIDO U2F, и Duo." + }, + "ppremiumSignUpReports": { + "message": "Извештаји о хигијени лозинки, здравственом стању налога и кршењу података да бисте заштитили сеф." + }, + "ppremiumSignUpTotp": { + "message": "Генератор једнократног кода (2FA) за пријаве из сефа." + }, + "ppremiumSignUpSupport": { + "message": "Приоритетна корисничка подршка." + }, + "ppremiumSignUpFuture": { + "message": "Све будуће премијум функције. Више долазе ускоро!" + }, + "premiumPurchase": { + "message": "Купити премијум" + }, + "premiumPurchaseAlert": { + "message": "Можете купити премијум претплату на bitwarden.com. Да ли желите да посетите веб сајт сада?" + }, + "premiumCurrentMember": { + "message": "Ви сте премијум члан!" + }, + "premiumCurrentMemberThanks": { + "message": "Хвала Вам за подршку Bitwarden-а." + }, + "premiumPrice": { + "message": "Све за само $PRICE$ годишње!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Освежавање је завршено" + }, + "disableAutoTotpCopy": { + "message": "Угаси аутоматско копирање једнократног кода" + }, + "disableAutoTotpCopyDesc": { + "message": "Ако је за вашу пријаву приложен аутентификациони кључ, једнократни код се аутоматски копира у вашој привременој меморији кад год ауто-попуните пријаву." + }, + "disableAutoBiometricsPrompt": { + "message": "Не тражи биометрику након покретања." + }, + "premiumRequired": { + "message": "Потребан Премијум" + }, + "premiumRequiredDesc": { + "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": "Убаците свој сигурносни кључ у УСБ порт рачунара, и ако има дугме , додирните га." + }, + "webAuthnNewTab": { + "message": "Да бисте започели WebAuthn верификацију у два корака. Кликните на дугме испод за отваранје новог језичка и пратите упутства у нјему." + }, + "webAuthnNewTabOpen": { + "message": "Отвори нови језичак " + }, + "webAuthnAuthenticate": { + "message": "WebAutn аутентификација" + }, + "loginUnavailable": { + "message": "Пријава недоступна" + }, + "noTwoStepProviders": { + "message": "Овај налог има омогућено пријављивање у два корака, међутим овај веб прегледач не подржава ниједног од конфигурисаних добављача." + }, + "noTwoStepProviders2": { + "message": "Користите подржани веб прегледач (као што је Chrome) и/или додајте додатне добављаче који су боље подржани у веб прегледачима (као што је апликација за аутентификацију)." + }, + "twoStepOptions": { + "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": "Верификациони кодови ће вам бити послати имејлом." + }, + "selfHostedEnvironment": { + "message": "Самостално окружење" + }, + "selfHostedEnvironmentFooter": { + "message": "Наведите основни УРЛ ваше локалне Bitwarden инсталације." + }, + "customEnvironment": { + "message": "Прилагођено окружење" + }, + "customEnvironmentFooter": { + "message": "За напредне кориснике. Можете да одредите независно основни УРЛ сваког сервиса." + }, + "baseUrl": { + "message": "УРЛ Сервера" + }, + "apiUrl": { + "message": "УРЛ АПИ Сервера" + }, + "webVaultUrl": { + "message": "УРЛ сервера Сефа" + }, + "identityUrl": { + "message": "УРЛ сервера идентитета" + }, + "notificationsUrl": { + "message": "УРЛ сервера обавештења" + }, + "iconsUrl": { + "message": "УРЛ сервера иконица" + }, + "environmentSaved": { + "message": "УРЛ адресе окружења су сачуване." + }, + "enableAutoFillOnPageLoad": { + "message": "Омогући аутоматско попуњавање након учитавања странице" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Ако се открије образац за пријаву, извршите аутоматско попуњавање када се веб страница учита." + }, + "experimentalFeature": { + "message": "Ово је тренутно експериментална способност. Користите на властиту одговорност." + }, + "defaultAutoFillOnPageLoad": { + "message": "Подразумевано подешавање аутопуњења за пријаве" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Након што омогућите ауто-попуњавање странице, можете омогућити или онемогућити функцију за појединачне ставке за пријаву. Ово је подразумевана поставка за ставке за пријаву које нису различито конфигурисане." + }, + "itemAutoFillOnPageLoad": { + "message": "Ауто-попуњавање након учитавања странице (ако је омогућено у опцијама)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Користи подразумевано подешавање" + }, + "autoFillOnPageLoadYes": { + "message": "Аутоматско попуњавање наконг учитавања странице" + }, + "autoFillOnPageLoadNo": { + "message": "Без аутоматског попуњавања након учитавања странице" + }, + "commandOpenPopup": { + "message": "Отвори искачући прозор сефа" + }, + "commandOpenSidebar": { + "message": "Отвори сеф у бочну траку" + }, + "commandAutofillDesc": { + "message": "Аутоматско попуњавање последњу коришћену пријаву за тренутну веб страницу" + }, + "commandGeneratePasswordDesc": { + "message": "Генеришите и копирајте нову случајну лозинку у привремену меморију" + }, + "commandLockVaultDesc": { + "message": "Закључај сеф" + }, + "privateModeWarning": { + "message": "Подршка за приватни режим је експериментална и неке функције су ограничене." + }, + "customFields": { + "message": "Прилагођена Поља" + }, + "copyValue": { + "message": "Копирај вредност" + }, + "value": { + "message": "Вредност" + }, + "newCustomField": { + "message": "Ново прилагођено поље" + }, + "dragToSort": { + "message": "Превуците за сортирање" + }, + "cfTypeText": { + "message": "Текст" + }, + "cfTypeHidden": { + "message": "Сакривено" + }, + "cfTypeBoolean": { + "message": "Булове" + }, + "cfTypeLinked": { + "message": "Повезано", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Вредност повезана", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Ако кликнете изван искачућег прозора да бисте проверили имејл за верификациони код, овај прозор ће се затворити. Да ли желите да отворите овај прозор у новом прозору да се не би затворио?" + }, + "popupU2fCloseMessage": { + "message": "Овај прегледач не може да обрађује U2F захтеве у овом искачућем прозору. Да ли желите да отворите овај искачући прозор у новом прозору како бисте могли да се пријавите користећи U2F?" + }, + "disableFavicon": { + "message": "Онемогући иконице сајта" + }, + "disableFaviconDesc": { + "message": "Иконе веб сајта пружају препознатљиву слику поред сваке пријаве у сефу." + }, + "disableBadgeCounter": { + "message": "Онемогући бројач на иконици" + }, + "disableBadgeCounterDesc": { + "message": "Бројач иконице указује колико пријава имате за тренутну страницу у вашем сефу." + }, + "cardholderName": { + "message": "Име Власника Картице" + }, + "number": { + "message": "Број" + }, + "brand": { + "message": "Произвођач" + }, + "expirationMonth": { + "message": "Месец истека" + }, + "expirationYear": { + "message": "Година истека" + }, + "expiration": { + "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": "Децембар" + }, + "securityCode": { + "message": "Сигурносни код" + }, + "ex": { + "message": "нпр." + }, + "title": { + "message": "Наслов" + }, + "mr": { + "message": "Г." + }, + "mrs": { + "message": "Гђц." + }, + "ms": { + "message": "Гђа." + }, + "dr": { + "message": "Др" + }, + "firstName": { + "message": "Име" + }, + "middleName": { + "message": "Средње име" + }, + "lastName": { + "message": "Презиме" + }, + "fullName": { + "message": "Пуно име" + }, + "identityName": { + "message": "Име идентитета" + }, + "company": { + "message": "Предузеће" + }, + "ssn": { + "message": "Број социјалног осигурања" + }, + "passportNumber": { + "message": "Број пасоша" + }, + "licenseNumber": { + "message": "Број возачке дозволе" + }, + "email": { + "message": "Имејл" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адреса" + }, + "address1": { + "message": "Адреса 1" + }, + "address2": { + "message": "Адреса 2" + }, + "address3": { + "message": "Адреса 3" + }, + "cityTown": { + "message": "Град" + }, + "stateProvince": { + "message": "Држава / покрајина" + }, + "zipPostalCode": { + "message": "Поштански број" + }, + "country": { + "message": "Земља" + }, + "type": { + "message": "Тип" + }, + "typeLogin": { + "message": "Пријава" + }, + "typeLogins": { + "message": "Пријаве" + }, + "typeSecureNote": { + "message": "Сигурносна белешка" + }, + "typeCard": { + "message": "Кредитна Картица" + }, + "typeIdentity": { + "message": "Идентитет" + }, + "passwordHistory": { + "message": "Историја Лозинке" + }, + "back": { + "message": "Назад" + }, + "collections": { + "message": "Колекције" + }, + "favorites": { + "message": "Омиљени" + }, + "popOutNewWindow": { + "message": "Отворите у нови прозор" + }, + "refresh": { + "message": "Освежи" + }, + "cards": { + "message": "Кредитне Картице" + }, + "identities": { + "message": "Идентитети" + }, + "logins": { + "message": "Пријаве" + }, + "secureNotes": { + "message": "Сигурносне белешке" + }, + "clear": { + "message": "Очисти", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Пребацити опције" + }, + "toggleCurrentUris": { + "message": "Укључи/искључи тренутне УРЛ", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Тренутни УРЛ", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Организација", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Врсте" + }, + "allItems": { + "message": "Све ставке" + }, + "noPasswordsInList": { + "message": "Нема лозинки у листи." + }, + "remove": { + "message": "Уклони" + }, + "default": { + "message": "Подразумевано" + }, + "dateUpdated": { + "message": "Промењено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Лозинка ажурирана", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "Поставите свој ПИН код за откључавање Bitwarden-а. Поставке ПИН-а ће се ресетовати ако се икада потпуно одјавите из апликације." + }, + "pinRequired": { + "message": "ПИН је обавезан." + }, + "invalidPin": { + "message": "Погрешан ПИН код." + }, + "unlockWithBiometrics": { + "message": "Откључавајте помоћу биометрије" + }, + "awaitDesktop": { + "message": "Чекање потврде са десктопа" + }, + "awaitDesktopDesc": { + "message": "Потврдити са биометриком у Bitwarden Desktop апликацији да би омогућили биометрику у претраживачу." + }, + "lockWithMasterPassOnRestart": { + "message": "Закључајте са главном лозинком при поновном покретању прегледача" + }, + "selectOneCollection": { + "message": "Морате одабрати макар једну колекцију." + }, + "cloneItem": { + "message": "Клонирај ставку" + }, + "clone": { + "message": "Клонирај" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Једна или више смерница организације утичу на поставке вашег генератора." + }, + "vaultTimeoutAction": { + "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": "Ставка враћена" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Одјава ће уклонити сваки приступ вашем сефу и захтева мрежну потврду идентитета након истека тајмаута. Да ли сте сигурни да желите да користите ову поставку?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Потврда акције тајмаута" + }, + "autoFillAndSave": { + "message": "Аутоматско попуњавање и чување" + }, + "autoFillSuccessAndSavedUri": { + "message": "Аутоматски попуњена ставка и сачуван УРЛ" + }, + "autoFillSuccess": { + "message": "Ставка ауто-попуњена" + }, + "setMasterPassword": { + "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": "Услови услуге и Политика приватности нису прихваћени." + }, + "termsOfService": { + "message": "Услови коришћења услуге" + }, + "privacyPolicy": { + "message": "Политика приватности" + }, + "hintEqualsPassword": { + "message": "Ваш савет за лозинку не може да буде исти као лозинка." + }, + "ok": { + "message": "У реду" + }, + "desktopSyncVerificationTitle": { + "message": "Провера синхронизације Desktop-а" + }, + "desktopIntegrationVerificationText": { + "message": "Проверите да десктоп апликација показује овај отисак: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Интеграција претраживача није омогућена" + }, + "desktopIntegrationDisabledDesc": { + "message": "Интеграција претраживача није омогућена у Bitwarden Desktop. Омогућите је у подешавањима из Bitwarden Desktop апликације." + }, + "startDesktopTitle": { + "message": "Покрени Bitwarden Desktop апликацију" + }, + "startDesktopDesc": { + "message": "Bitwarden Desktop апликација треба да се покрене пре употребе ове функције." + }, + "errorEnableBiometricTitle": { + "message": "Није могуће омогућити биометрику" + }, + "errorEnableBiometricDesc": { + "message": "Desktop апликација је поништила акцију" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop апликација је онемогућила безбедни комуникациони канал. Поновите ову операцију" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop комуникација прекинута" + }, + "nativeMessagingWrongUserDesc": { + "message": "Desktop апликација је пријављена на други налог. Проверите да су обе апликације са истим налогом." + }, + "nativeMessagingWrongUserTitle": { + "message": "Неподударање налога" + }, + "biometricsNotEnabledTitle": { + "message": "Биометрија није омогућена" + }, + "biometricsNotEnabledDesc": { + "message": "Биометрија прегледача захтева да у поставкама прво буде омогућена биометрија desktop-а." + }, + "biometricsNotSupportedTitle": { + "message": "Биометрија није подржана" + }, + "biometricsNotSupportedDesc": { + "message": "Биометрија прегледача није подржана на овом уређају." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Дозвола није дата" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Без дозволе за комуникацију са Bitwarden Desktop апликацијом, не можемо пружити биометријске податке у екстензији прегледача. Молимо вас, покушајте поново." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Грешка у захтеву за дозволу" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Ову радњу није могуће извршити на бочној траци, покушајте поново у искачућем прозору." + }, + "personalOwnershipSubmitError": { + "message": "Због смерница за предузећа, ограничено вам је чување предмета у вашем личном трезору. Промените опцију власништва у организацију и изаберите из доступних колекција." + }, + "personalOwnershipPolicyInEffect": { + "message": "смернице организације утичу на ваше могућности власништва." + }, + "excludedDomains": { + "message": "Изузети домени" + }, + "excludedDomainsDesc": { + "message": "Bitwarden неће тражити да сачува податке за пријављивање за ове домене. Морате освежити страницу да би промене ступиле на снагу." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ није важећи домен", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Тражи „Send“", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Додај „Send“", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Текст" + }, + "sendTypeFile": { + "message": "Датотека" + }, + "allSends": { + "message": "Све „Send“", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Достигнут максималан број приступа", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Истекло" + }, + "pendingDeletion": { + "message": "Брисање на чекању" + }, + "passwordProtected": { + "message": "Заштићено лозинком" + }, + "copySendLink": { + "message": "Копирај УРЛ „Send“", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Уклони лозинку" + }, + "delete": { + "message": "Обриши" + }, + "removedPassword": { + "message": "Лозинка уклоњена" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "Онемогућено" + }, + "removePasswordConfirmation": { + "message": "Да ли сте сигурни да желите уклонити лозинку?" + }, + "deleteSend": { + "message": "Избриши „Send“", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "Који је ово тип „Send“-a?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Име да се опише овај „Send“.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 дан" + }, + "days": { + "message": "$DAYS$ дана", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Друго" + }, + "maximumAccessCount": { + "message": "Максималан број приступа" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "Онемогућите овај „Send“ да нико не би могао да му приступи.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Након чувања, копирај УРЛ за овај „Send“ у привремену меморију.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст који желиш да пошаљеш." + }, + "sendHideText": { + "message": "Подразумевано сакриј текст за овај „Send“.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Тренутни број приступа" + }, + "createSend": { + "message": "Креирај нови „Send“", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Нова лозинка" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Да бисте изабрали датотеку, отворите екстензију на бочној траци (ако је могуће) или отворите у нови прозор кликом на овај банер." + }, + "sendFirefoxFileWarning": { + "message": "Да бисте изабрали датотеку са Firefox-ом, отворите екстензију на бочној траци или отворите у нови прозор кликом на овај банер." + }, + "sendSafariFileWarning": { + "message": "Да бисте изабрали датотеку са Safari-ом, отворите у нови прозор кликом на овај банер." + }, + "sendFileCalloutHeader": { + "message": "Пре него што почнеш" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Да би користио бирање датума кроз календар", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "кликните овде", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "Да бисте приказали искачући прозор.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Наведени датум истека није исправан." + }, + "deletionDateIsInvalid": { + "message": "Наведени датум брисања није исправан." + }, + "expirationDateAndTimeRequired": { + "message": "Неопходни су датум и време истека." + }, + "deletionDateAndTimeRequired": { + "message": "Неопходни су датум и време брисања." + }, + "dateParsingError": { + "message": "Појавила се грешка при чувању датума брисања и истека." + }, + "hideEmail": { + "message": "Сакриј моју е-адресу од примаоца." + }, + "sendOptionsPolicyInEffect": { + "message": "Једна или више смерница организације утичу на опције „Send“-а." + }, + "passwordPrompt": { + "message": "Поновно тражење главне лозинке" + }, + "passwordConfirmation": { + "message": "Потврда главне лозинке" + }, + "passwordConfirmationDesc": { + "message": "Ова акција је заштићена. Да бисте наставили, поново унесите своју главну лозинку да бисте проверили идентитет." + }, + "emailVerificationRequired": { + "message": "Потребна је верификација е-поште" + }, + "emailVerificationRequiredDesc": { + "message": "Морате да потврдите е-пошту да бисте користили ову функцију. Можете да потврдите е-пошту у веб сефу." + }, + "updatedMasterPassword": { + "message": "Главна лозинка ажурирана" + }, + "updateMasterPassword": { + "message": "Ажурирај главну лозинку" + }, + "updateMasterPasswordWarning": { + "message": "Ваша главна лозинка је недавно промењена од стране администратора организације. Како бисте приступили сефу, морате да је ажурирате. Ако наставите бићете одјављени из ваше тренутне сесије, што ће захтевати да се поново пријавите. Активне сесије на другим уређајима ће можда наставити да раде до сат времена." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Ауто пријављивање" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Ова организација има полису која ће вас аутоматски пријавити за ресетовање лозинке. Пријава ће дозволити администраторима ваше организације да промене главну лозинку." + }, + "selectFolder": { + "message": "Изаберите фасциклу..." + }, + "ssoCompleteRegistration": { + "message": "Да бисте довршили пријављивање помоћу SSO, молимо да поставите главну лозинку за приступ и заштиту вашег сефа." + }, + "hours": { + "message": "Сата" + }, + "minutes": { + "message": "Минута" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Полиса ваше организације утиче на време истека сефа. Максимално дозвољено време истека је $HOURS$ сат(и) и $MINUTES$ minut(а)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Време истека вашег сефа је премашило дозвољена ограничења од стране ваше организације." + }, + "vaultExportDisabled": { + "message": "Извоз сефа онемогућен" + }, + "personalVaultExportPolicyInEffect": { + "message": "Једна или више полиса ваше организације вас спречава да извезете ваш сеф." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Није могуће идентификовати валидан елемент обрасца. Покушајте уместо тога да прегледате HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Није пронађен ниједан јединствени идентификатор." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ користи SSO уз сопствени сервер за кључеве. Главна лозинка за пријаву више није неопходна за чланове ове организације.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Напусти организацију" + }, + "removeMasterPassword": { + "message": "Уклони главну лозинку" + }, + "removedMasterPassword": { + "message": "Главна лозинка уклоњена." + }, + "leaveOrganizationConfirmation": { + "message": "Да ли сте сигурни да желите да напустите ову организацију?" + }, + "leftOrganization": { + "message": "Напустили сте организацију." + }, + "toggleCharacterCount": { + "message": "Пребаци бројање слова" + }, + "sessionTimeout": { + "message": "Ваша сесија је истекла. Вратите се и покушајте поново да се пријавите." + }, + "exportingPersonalVaultTitle": { + "message": "Извоз личног сефа" + }, + "exportingPersonalVaultDescription": { + "message": "Само предмети личног сефа повезани са $EMAIL$ биће извезени. Ставке организационог сефа неће бити укључене.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "Грешка" + }, + "regenerateUsername": { + "message": "Поново генериши име" + }, + "generateUsername": { + "message": "Генериши име" + }, + "usernameType": { + "message": "Тип имена" + }, + "plusAddressedEmail": { + "message": "Плус имејл адресе", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Користите могућности подадресирања вашег добављача е-поште." + }, + "catchallEmail": { + "message": "„Ухвати све“ е-порука" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Случајно" + }, + "randomWord": { + "message": "Случајна реч" + }, + "websiteName": { + "message": "Име Вашег веб-сајта" + }, + "whatWouldYouLikeToGenerate": { + "message": "Шта желите да генеришете?" + }, + "passwordType": { + "message": "Тип лозинке" + }, + "service": { + "message": "Сервис" + } +} diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json new file mode 100644 index 0000000000..7537ff2954 --- /dev/null +++ b/apps/browser/src/_locales/sv/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Gratis lösenordshanterare", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden är en säker och gratis lösenordshanterare för alla dina enheter.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Logga in eller skapa ett nytt konto för att komma åt dina lösenord." + }, + "createAccount": { + "message": "Skapa konto" + }, + "login": { + "message": "Logga in" + }, + "enterpriseSingleSignOn": { + "message": "Single Sign-On för företag" + }, + "cancel": { + "message": "Avbryt" + }, + "close": { + "message": "Stäng" + }, + "submit": { + "message": "Skicka" + }, + "emailAddress": { + "message": "E-postadress" + }, + "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 om 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 (frivillig)" + }, + "tab": { + "message": "Flik" + }, + "myVault": { + "message": "Mitt valv" + }, + "tools": { + "message": "Verktyg" + }, + "settings": { + "message": "Inställningar" + }, + "currentTab": { + "message": "Nuvarande flik" + }, + "copyPassword": { + "message": "Kopiera lösenord" + }, + "copyNote": { + "message": "Kopiera anteckning" + }, + "copyUri": { + "message": "Kopiera URI" + }, + "copyUsername": { + "message": "Kopiera användarnamn" + }, + "copyNumber": { + "message": "Kopiera nummer" + }, + "copySecurityCode": { + "message": "Kopiera säkerhetskod" + }, + "autoFill": { + "message": "Fyll i automatiskt" + }, + "generatePasswordCopied": { + "message": "Skapa lösenord (kopierad)" + }, + "copyElementIdentifier": { + "message": "Kopiera anpassat fältnamn" + }, + "noMatchingLogins": { + "message": "Inga matchande inloggningar." + }, + "unlockVaultMenu": { + "message": "Lås upp ditt valv" + }, + "loginToVaultMenu": { + "message": "Logga in i ditt valv" + }, + "autoFillInfo": { + "message": "Det finns inga inloggningar tillgängliga för automatisk ifyllnad på den nuvarande fliken." + }, + "addLogin": { + "message": "Lägg till en inloggning" + }, + "addItem": { + "message": "Lägg till objekt" + }, + "passwordHint": { + "message": "Lösenordsledtråd" + }, + "enterEmailToGetHint": { + "message": "Ange din e-postadress för att hämta din huvudlösenordsledtråd." + }, + "getMasterPasswordHint": { + "message": "Hämta huvudlösenordsledtråd" + }, + "continue": { + "message": "Fortsätt" + }, + "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." + }, + "account": { + "message": "Konto" + }, + "changeMasterPassword": { + "message": "Ändra huvudlösenord" + }, + "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." + }, + "twoStepLogin": { + "message": "Tvåstegsverifiering" + }, + "logOut": { + "message": "Logga ut" + }, + "about": { + "message": "Om" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Spara" + }, + "move": { + "message": "Flytta" + }, + "addFolder": { + "message": "Skapa mapp" + }, + "name": { + "message": "Namn" + }, + "editFolder": { + "message": "Redigera mapp" + }, + "deleteFolder": { + "message": "Radera mapp" + }, + "folders": { + "message": "Mappar" + }, + "noFolders": { + "message": "Det finns inga mappar att lista." + }, + "helpFeedback": { + "message": "Hjälp & Feedback" + }, + "sync": { + "message": "Synkronisera" + }, + "syncVaultNow": { + "message": "Synkronisera valv nu" + }, + "lastSync": { + "message": "Senaste synkronisering:" + }, + "passGen": { + "message": "Lösenordsgenerator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Skapa starka och unika lösenord automatiskt för dina inloggningar." + }, + "bitWebVault": { + "message": "Bitwardens webbvalv" + }, + "importItems": { + "message": "Importera objekt" + }, + "select": { + "message": "Välj" + }, + "generatePassword": { + "message": "Skapa lösenord" + }, + "regeneratePassword": { + "message": "Skapa nytt lösenord" + }, + "options": { + "message": "Alternativ" + }, + "length": { + "message": "Längd" + }, + "uppercase": { + "message": "Versaler (A-Ö)" + }, + "lowercase": { + "message": "Gemener (a-ö)" + }, + "numbers": { + "message": "Siffror (0-9)" + }, + "specialCharacters": { + "message": "Specialtecken (!@#$%^&*)" + }, + "numWords": { + "message": "Antal ord" + }, + "wordSeparator": { + "message": "Ordseparator" + }, + "capitalize": { + "message": "Versalisera", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inkludera siffra" + }, + "minNumbers": { + "message": "Minst antal nummer" + }, + "minSpecial": { + "message": "Minst antal speciella tecken" + }, + "avoidAmbChar": { + "message": "Undvik mångtydiga tecken" + }, + "searchVault": { + "message": "Sök i valvet" + }, + "edit": { + "message": "Redigera" + }, + "view": { + "message": "Visa" + }, + "noItemsInList": { + "message": "Det finns inga objekt att visa." + }, + "itemInformation": { + "message": "Objektinformation" + }, + "username": { + "message": "Användarnamn" + }, + "password": { + "message": "Lösenord" + }, + "passphrase": { + "message": "Lösenordsfras" + }, + "favorite": { + "message": "Favorit" + }, + "notes": { + "message": "Anteckningar" + }, + "note": { + "message": "Anteckning" + }, + "editItem": { + "message": "Redigera objekt" + }, + "folder": { + "message": "Mapp" + }, + "deleteItem": { + "message": "Radera objekt" + }, + "viewItem": { + "message": "Visa objekt" + }, + "launch": { + "message": "Öppna" + }, + "website": { + "message": "Webbsida" + }, + "toggleVisibility": { + "message": "Växla synlighet" + }, + "manage": { + "message": "Hantera" + }, + "other": { + "message": "Annat" + }, + "rateExtension": { + "message": "Betygsätt tillägget" + }, + "rateExtensionDesc": { + "message": "Överväg gärna att hjälpa oss genom att ge oss en bra recension!" + }, + "browserNotSupportClipboard": { + "message": "Din webbläsare har inte stöd för att enkelt kopiera till urklipp. Kopiera till urklipp manuellt istället." + }, + "verifyIdentity": { + "message": "Verifiera identitet" + }, + "yourVaultIsLocked": { + "message": "Ditt valv är låst. Verifiera 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": "Felaktigt huvudlösenord" + }, + "vaultTimeout": { + "message": "Valvets tidsgräns" + }, + "lockNow": { + "message": "Lås nu" + }, + "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" + }, + "onLocked": { + "message": "Vid låsning av datorn" + }, + "onRestart": { + "message": "Vid omstart" + }, + "never": { + "message": "Aldrig" + }, + "security": { + "message": "Säkerhet" + }, + "errorOccurred": { + "message": "Ett fel har uppstått" + }, + "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": "Bekräftelsen för huvudlösenordet stämde ej." + }, + "newAccountCreated": { + "message": "Ditt nya konto har blivit skapat! Du kan nu logga in." + }, + "masterPassSent": { + "message": "Vi har skickat ett mejl till dig med din huvudlösenordsledtråd." + }, + "verificationCodeRequired": { + "message": "Verifieringskod krävs." + }, + "invalidVerificationCode": { + "message": "Ogiltig verifieringskod" + }, + "valueCopied": { + "message": "$VALUE$ kopierat", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Kunde inte automatiskt fylla i det valda objektet på den här webbsidan. Klipp/klistra informationen istället." + }, + "loggedOut": { + "message": "Loggade ut" + }, + "loginExpired": { + "message": "Din inloggningssession har utgått." + }, + "logOutConfirmation": { + "message": "Är du säker på att du vill logga ut?" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nej" + }, + "unexpectedError": { + "message": "Ett okänt fel har inträffat." + }, + "nameRequired": { + "message": "Namn krävs." + }, + "addedFolder": { + "message": "Skapade mapp" + }, + "changeMasterPass": { + "message": "Ändra huvudlösenord" + }, + "changeMasterPasswordConfirmation": { + "message": "Du kan ändra ditt huvudlösenord på bitwardens webbvalv. Vill du besöka webbplatsen nu?" + }, + "twoStepLoginConfirmation": { + "message": "Tvåstegsverifiering gör ditt konto säkrare genom att kräva att du verifierar din inloggning med en annan enhet, till exempel genom en säkerhetsnyckel, autentiseringsapp, SMS, telefonsamtal eller mejl. Tvåstegsverifiering kan aktiveras på bitwardens webbvalv. Vill du besöka webbplatsen nu?" + }, + "editedFolder": { + "message": "Ändrade mapp" + }, + "deleteFolderConfirmation": { + "message": "Är du säker på att du vill ta bort den här mappen?" + }, + "deletedFolder": { + "message": "Tog bort mapp" + }, + "gettingStartedTutorial": { + "message": "Komma igång - Handledning" + }, + "gettingStartedTutorialVideo": { + "message": "Titta på vår 'Komma igång - Handledning'-video för att lära dig hur du får ut det mesta av webbläsartillägget." + }, + "syncingComplete": { + "message": "Synkronisering genomförd" + }, + "syncingFailed": { + "message": "Synkroniseringen misslyckades" + }, + "passwordCopied": { + "message": "Lösenord kopierat" + }, + "uri": { + "message": "URI (länk)" + }, + "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" + }, + "addedItem": { + "message": "Skapade objekt" + }, + "editedItem": { + "message": "Ändrade objekt" + }, + "deleteItemConfirmation": { + "message": "Är du säker på att du vill radera detta objekt?" + }, + "deletedItem": { + "message": "Raderade objekt" + }, + "overwritePassword": { + "message": "Skriv över lösenord" + }, + "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?" + }, + "searchFolder": { + "message": "Sök i mapp" + }, + "searchCollection": { + "message": "Sök i samling" + }, + "searchType": { + "message": "Sök efter typ" + }, + "noneFolder": { + "message": "Ingen mapp", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Inaktivera aviseringar för nya inloggningar" + }, + "addLoginNotificationDesc": { + "message": "Aviseringar för nya inloggningar frågar dig om du vill lägga till en inloggning automatiskt till ditt valv, när du använder en inloggning som inte redan finns i ditt valv." + }, + "dontShowCardsCurrentTab": { + "message": "Visa inte kort på fliksida" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Kortobjekt från ditt valv listas på 'nuvarande flik'-sidan för enkel automatisk ifyllnad." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Visa inte identiteter på fliksidan" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identitetsobjekt från ditt valv listas på 'nuvarande flik'-sidan för enkel automatisk ifyllnad." + }, + "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." + }, + "notificationAddDesc": { + "message": "Ska Bitwarden komma ihåg det här lösenordet åt dig?" + }, + "notificationAddSave": { + "message": "Spara" + }, + "disableChangedPasswordNotification": { + "message": "Inaktivera notifikation för ändrade lösenord" + }, + "disableChangedPasswordNotificationDesc": { + "message": "”Notifikation för ändrade lösenord” uppmanar dig automatiskt att uppdatera ett lösenord i ditt valv när den upptäcker att du har ändrat det på en webbplats." + }, + "notificationChangeDesc": { + "message": "Vill du uppdatera det här lösenordet i Bitwarden?" + }, + "notificationChangeSave": { + "message": "Uppdatera" + }, + "disableContextMenuItem": { + "message": "Inaktivera innehållsmenyn" + }, + "disableContextMenuItemDesc": { + "message": "Innehållsmenyn (högerklick) ger dig snabbare åtkomst för att skapa ett slumpmässigt lösenord, och för att fylla i en inloggning i den nuvarande fliken." + }, + "defaultUriMatchDetection": { + "message": "Standardmatchning för URI", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Välj standardalternativet för hur matchning av URI är hanterat för inloggningar när du utför operationer såsom automatisk ifyllnad." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Ändra programmets färgtema." + }, + "dark": { + "message": "Mörkt", + "description": "Dark color" + }, + "light": { + "message": "Ljust", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Den här exporten innehåller ditt valvs okrypterade data i .csv-format. Du bör inte lagra eller skicka filen över osäkra anslutningar (genom t.ex. mejl). Radera filen efter 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." + }, + "exportMasterPassword": { + "message": "Ange ditt huvudlösenord för att exportera ditt valv." + }, + "shared": { + "message": "Delad" + }, + "learnOrg": { + "message": "Lär dig om organisationer" + }, + "learnOrgConfirmation": { + "message": "Bitwarden gör det möjligt för dig att objekt i valvet med andra genom att använda en organisation. Vill du besöka bitwarden.com för att lära dig mer?" + }, + "moveToOrganization": { + "message": "Flytta till organisation" + }, + "share": { + "message": "Dela" + }, + "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." + }, + "learnMore": { + "message": "Läs mer" + }, + "authenticatorKeyTotp": { + "message": "Autentiseringsnyckel (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verifieringskod (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiera verifieringskod" + }, + "attachments": { + "message": "Bifogade filer" + }, + "deleteAttachment": { + "message": "Ta bort bilaga" + }, + "deleteAttachmentConfirmation": { + "message": "Är du säker på att du vill ta bort bilagan?" + }, + "deletedAttachment": { + "message": "Tog bort bilaga" + }, + "newAttachment": { + "message": "Bifoga ny fil" + }, + "noAttachments": { + "message": "Inga bilagor." + }, + "attachmentSaved": { + "message": "Den bifogade filen har sparats." + }, + "file": { + "message": "Fil" + }, + "selectFile": { + "message": "Välj en fil." + }, + "maxFileSize": { + "message": "Filen får vara maximalt 500 MB." + }, + "featureUnavailable": { + "message": "Funktionen är inte tillgänglig" + }, + "updateKey": { + "message": "Du kan inte använda denna funktion förrän du uppdaterar din krypteringsnyckel." + }, + "premiumMembership": { + "message": "Premium-medlemskap" + }, + "premiumManage": { + "message": "Hantera medlemskap" + }, + "premiumManageAlert": { + "message": "Du kan hantera ditt medlemskap på 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å:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB lagring av krypterade filer." + }, + "ppremiumSignUpTwoStep": { + "message": "Ytterligare alternativ för tvåstegsverifiering såsom YubiKey, FIDO U2F och Duo." + }, + "ppremiumSignUpReports": { + "message": "Lösenordshygien, kontohälsa och dataintrångsrapporter för att hålla ditt valv säkert." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verifieringskod-generator (2FA) för inloggningar i ditt valv." + }, + "ppremiumSignUpSupport": { + "message": "Prioriterad kundsupport." + }, + "ppremiumSignUpFuture": { + "message": "Alla framtida premium-funktioner. Mer kommer snart!" + }, + "premiumPurchase": { + "message": "Köp Premium" + }, + "premiumPurchaseAlert": { + "message": "Du kan köpa premium-medlemskap på 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": "Uppdatering färdig" + }, + "disableAutoTotpCopy": { + "message": "Inaktivera automatisk TOTP-kopiering" + }, + "disableAutoTotpCopyDesc": { + "message": "Om din inloggning har en autentiseringsnyckel kopplad till den, kommer TOTP-verifieringskoden att automatiskt kopieras till urklipp när du automatiskt fyller i inloggningen." + }, + "disableAutoBiometricsPrompt": { + "message": "Fråga inte efter biometri vid uppstart" + }, + "premiumRequired": { + "message": "Premium krävs" + }, + "premiumRequiredDesc": { + "message": "Ett premium-medlemskap krävs för att använda den här funktionen." + }, + "enterVerificationCodeApp": { + "message": "Ange den 6-siffriga verifieringskoden från din autentiseringsapp." + }, + "enterVerificationCodeEmail": { + "message": "Ange den 6-siffriga verifieringskoden som skickades till $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verifieringsmejl skickat till $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Kom ihåg mig" + }, + "sendVerificationCodeEmailAgain": { + "message": "Skicka verifieringskod-mejlet igen" + }, + "useAnotherTwoStepMethod": { + "message": "Använd en annan inloggningsmetod för tvåstegsverifiering" + }, + "insertYubiKey": { + "message": "Sätt i din YubiKey i en av datorns USB-portar och sätt fingret på knappen." + }, + "insertU2f": { + "message": "Sätt i din säkerhetsnyckel i en av datorns USB-portar. Om nyckeln har en knapp, sätt fingret på den." + }, + "webAuthnNewTab": { + "message": "För att påbörja verifieringen av WebAuthn 2FA. Klicka på knappen nedan för att öppna en ny flik och följ instruktionerna i den nya fliken." + }, + "webAuthnNewTabOpen": { + "message": "Öppna ny flik" + }, + "webAuthnAuthenticate": { + "message": "Autentisera WebAuthn" + }, + "loginUnavailable": { + "message": "Inloggning inte tillgänglig" + }, + "noTwoStepProviders": { + "message": "Detta konto har tvåstegsverifiering aktiverat, men inget av de aktiverade alternativen stöds av den här webbläsaren." + }, + "noTwoStepProviders2": { + "message": "Vänligen använd en webbläsare som stöds (till exempel Chrome) och/eller lägg till fler alternativ som stöds bättre över webbläsare (till exempel en autentiseringsapp)." + }, + "twoStepOptions": { + "message": "Alternativ för tvåstegsverifiering" + }, + "recoveryCodeDesc": { + "message": "Förlorat åtkomst till alla dina tvåstegsverifierings-alternativ? 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 (till exempel 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 få åtkomst till 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." + }, + "selfHostedEnvironment": { + "message": "Egen-hostad miljö" + }, + "selfHostedEnvironmentFooter": { + "message": "Ange bas-URL:en för din \"on-premise\"-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": "Webbvalv server-URL" + }, + "identityUrl": { + "message": "Identitetsserver-URL" + }, + "notificationsUrl": { + "message": "URL för notifieringsserver" + }, + "iconsUrl": { + "message": "Ikoner Server-URL" + }, + "environmentSaved": { + "message": "Miljö-URL:er har sparats." + }, + "enableAutoFillOnPageLoad": { + "message": "Aktivera automatisk ifyllnad vid sidhämtning" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Utför automatisk ifyllnad om ett inloggningsformulär upptäcks när webbsidan laddas." + }, + "experimentalFeature": { + "message": "Detta är för närvarande en experimentell funktion. Använd på egen risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Standardinställning för autofyll för inloggningsobjekt" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Efter att du har aktiverat automatisk ifyllnad vid sidhämtning kan du aktivera eller inaktivera funktionen för enskilda inloggningsobjekt. Detta är standardinställningen för inloggningsobjekt som inte är konfigurerade separat." + }, + "itemAutoFillOnPageLoad": { + "message": "Automatisk ifyllning vid sidhämtning (om aktiverat i Alternativ)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Använd standardinställningen" + }, + "autoFillOnPageLoadYes": { + "message": "Fyll i automatiskt vid sidladdning" + }, + "autoFillOnPageLoadNo": { + "message": "Fyll inte i automatiskt vid sidladdning" + }, + "commandOpenPopup": { + "message": "Öppna valvet i ett popupfönster" + }, + "commandOpenSidebar": { + "message": "Öppna valvet i sidofältet" + }, + "commandAutofillDesc": { + "message": "Fyll automatiskt i den senast använda inloggningen för den aktuella webbsidan" + }, + "commandGeneratePasswordDesc": { + "message": "Skapa och kopiera ett nytt slumpmässigt lösenord till urklipp." + }, + "commandLockVaultDesc": { + "message": "Lås valvet" + }, + "privateModeWarning": { + "message": "Stöd för privat läge är experimentellt och vissa funktioner är begränsade." + }, + "customFields": { + "message": "Anpassade fält" + }, + "copyValue": { + "message": "Kopiera värde" + }, + "value": { + "message": "Värde" + }, + "newCustomField": { + "message": "Nytt anpassat fält" + }, + "dragToSort": { + "message": "Dra för att sortera" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Dold" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Länkat", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Länkat värde", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Om du klickar utanför popup-fönstret för att kontrollera din email efter din verifieringskod så stängs popup-fönstret. Vill du öppna popup-fönstret i ett nytt fönster, så att det inte stängs?" + }, + "popupU2fCloseMessage": { + "message": "Den här webbläsaren kan inte bearbeta U2F-förfrågningar i detta popup-fönster. Vill du öppna ett nytt fönster så att du kan logga in med U2F?" + }, + "disableFavicon": { + "message": "Inaktivera webbplatsikoner" + }, + "disableFaviconDesc": { + "message": "Webbplatsikoner ger en igenkännbar ikon bredvid varje inloggningsobjekt i ditt valv." + }, + "disableBadgeCounter": { + "message": "Inaktivera märkesräknare" + }, + "disableBadgeCounterDesc": { + "message": "Märkesräknare visar hur många inloggningar du har för den aktuella sidan i ditt valv." + }, + "cardholderName": { + "message": "Kortinnehavarens namn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Märke" + }, + "expirationMonth": { + "message": "Förfallomånad" + }, + "expirationYear": { + "message": "Förfalloår" + }, + "expiration": { + "message": "Utgång" + }, + "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" + }, + "securityCode": { + "message": "Säkerhetskod" + }, + "ex": { + "message": "t.ex." + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Fröken" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Förnamn" + }, + "middleName": { + "message": "Mellannamn" + }, + "lastName": { + "message": "Efternamn" + }, + "fullName": { + "message": "Fullständigt namn" + }, + "identityName": { + "message": "Identitetsnamn" + }, + "company": { + "message": "Företag" + }, + "ssn": { + "message": "Personnummer" + }, + "passportNumber": { + "message": "Passnummer" + }, + "licenseNumber": { + "message": "Licensnummer" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adress" + }, + "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" + }, + "type": { + "message": "Typ" + }, + "typeLogin": { + "message": "Inloggning" + }, + "typeLogins": { + "message": "Inloggningar" + }, + "typeSecureNote": { + "message": "Säker anteckning" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "passwordHistory": { + "message": "Lösenordshistorik" + }, + "back": { + "message": "Tillbaka" + }, + "collections": { + "message": "Samlingar" + }, + "favorites": { + "message": "Favoriter" + }, + "popOutNewWindow": { + "message": "Poppa ut till ett nytt fönster" + }, + "refresh": { + "message": "Uppdatera" + }, + "cards": { + "message": "Kort" + }, + "identities": { + "message": "Identiteter" + }, + "logins": { + "message": "Inloggningar" + }, + "secureNotes": { + "message": "Säkra anteckningar" + }, + "clear": { + "message": "Rensa", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Kontrollera om lösenord 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ågot känt 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" + }, + "toggleCurrentUris": { + "message": "Växla nuvarande URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Nuvarande URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Typer" + }, + "allItems": { + "message": "Alla objekt" + }, + "noPasswordsInList": { + "message": "Det finns inga lösenord att lista." + }, + "remove": { + "message": "Ta bort" + }, + "default": { + "message": "Standard" + }, + "dateUpdated": { + "message": "Uppdaterad", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Lösenord uppdaterat", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Är du säker på att du vill använda alternativet ”Aldrig”? Att ställa in låsnings-alternativet till ”Aldrig” lagrar valvets krypteringsnyckel på datorn. Om du använder det här alternativet bör du se till att du håller datorn ordentligt skyddad." + }, + "noOrganizationsList": { + "message": "Du tillhör inte någon organisation. 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ösenfras) 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 för att låsa upp Bitwarden. Dina PIN-inställningar återställs om du någonsin loggar ut helt från programmet." + }, + "pinRequired": { + "message": "PIN-kod krävs." + }, + "invalidPin": { + "message": "Ogiltig PIN-kod." + }, + "unlockWithBiometrics": { + "message": "Lås upp med biometri" + }, + "awaitDesktop": { + "message": "Väntar på bekräftelse från skrivbordsprogrammet" + }, + "awaitDesktopDesc": { + "message": "Säkerställ att du använder biometri i Bitwardens skrivbordsprogram för att aktivera biometri för webbläsaren." + }, + "lockWithMasterPassOnRestart": { + "message": "Lås med huvudlösenordet vid omstart av webbläsaren" + }, + "selectOneCollection": { + "message": "Du måste markera minst en samling." + }, + "cloneItem": { + "message": "Klona objekt" + }, + "clone": { + "message": "Klona" + }, + "passwordGeneratorPolicyInEffect": { + "message": "En eller flera organisationspolicyer påverkar dina generatorinställningar." + }, + "vaultTimeoutAction": { + "message": "Åtgärd när valvets tidsgräns överskrids" + }, + "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Fyll i automatiskt och spara" + }, + "autoFillSuccessAndSavedUri": { + "message": "Fyllde i objektet automatiskt och sparade URI:n" + }, + "autoFillSuccess": { + "message": "Fyllde i objektet automatiskt" + }, + "setMasterPassword": { + "message": "Ange 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." + }, + "termsOfService": { + "message": "Användarvillkor" + }, + "privacyPolicy": { + "message": "Integritetspolicy" + }, + "hintEqualsPassword": { + "message": "Din lösenordsledtråd får inte vara samma som ditt lösenord." + }, + "ok": { + "message": "OK" + }, + "desktopSyncVerificationTitle": { + "message": "Verifiering av synkronisering med skrivbordsprogrammet" + }, + "desktopIntegrationVerificationText": { + "message": "Vänligen bekräfta att skrivbordsprogrammet visar det här fingeravtrycket: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Webbläsarintegration är inte aktiverad" + }, + "desktopIntegrationDisabledDesc": { + "message": "Webbläsarintegration är inte aktiverad i Bitwardens skrivbordsprogram. Aktivera det i inställningarna i skrivbordsprogrammet." + }, + "startDesktopTitle": { + "message": "Starta Bitwardens skrivbordsprogram" + }, + "startDesktopDesc": { + "message": "Bitwardens skrivbordsprogram måste köras innan denna funktion kan användas." + }, + "errorEnableBiometricTitle": { + "message": "Det gick inte att aktivera biometri" + }, + "errorEnableBiometricDesc": { + "message": "Åtgärden avbröts av skrivbordsprogrammet" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Skrivbordsprogrammet ogiltigförklarade den säkra kommunikationskanalen. Försök igen" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Kommunikationen med skrivbordsprogrammet avbröts" + }, + "nativeMessagingWrongUserDesc": { + "message": "Skrivbordsprogrammet är inloggat på ett annat konto. Se till att båda applikationerna är inloggade på samma konto." + }, + "nativeMessagingWrongUserTitle": { + "message": "Kontoavvikelse" + }, + "biometricsNotEnabledTitle": { + "message": "Biometri är inte aktiverat" + }, + "biometricsNotEnabledDesc": { + "message": "Biometri i webbläsaren kräver att biometri på skrivbordet aktiveras i inställningarna först." + }, + "biometricsNotSupportedTitle": { + "message": "Biometri stöds inte" + }, + "biometricsNotSupportedDesc": { + "message": "Biometri i webbläsaren stöds inte på den här enheten." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Behörighet ej beviljad" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Utan behörighet att kommunicera med Bitwardens skrivbordsprogram kan vi inte tillhandahålla biometri i webbläsartillägget. Försök igen." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Fel vid behörighetsbegäran" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Denna åtgärd kan inte utföras i sidofältet. Försök igen i popup- eller popout-fönstret." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "En organisationspolicy påverkar dina ägarskapsalternativ." + }, + "excludedDomains": { + "message": "Exkluderade domäner" + }, + "excludedDomainsDesc": { + "message": "Bitwarden kommer inte att fråga om att få spara inloggningsuppgifter för dessa domäner. Du måste uppdatera sidan för att ändringarna ska träda i kraft." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ är inte en giltig domän", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Sök bland Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Lägg till Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Text" + }, + "sendTypeFile": { + "message": "Fil" + }, + "allSends": { + "message": "Alla Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Det maximala antalet åtkomster har uppnåtts", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Utgången" + }, + "pendingDeletion": { + "message": "Väntar på radering" + }, + "passwordProtected": { + "message": "Lösenordsskyddad" + }, + "copySendLink": { + "message": "Kopiera länk till Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Ta bort lösenord" + }, + "delete": { + "message": "Radera" + }, + "removedPassword": { + "message": "Tog bort lösenord" + }, + "deletedSend": { + "message": "Raderade Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Länk till Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Inaktiverad" + }, + "removePasswordConfirmation": { + "message": "Är du säker på att du vill ta bort lösenordet?" + }, + "deleteSend": { + "message": "Radera Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "editSend": { + "message": "Redigera Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Ett eget namn för att beskriva denna Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Filen du vill skicka." + }, + "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." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dagar", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Anpassad" + }, + "maximumAccessCount": { + "message": "Maximalt antal åtkomster" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendPasswordDesc": { + "message": "Kräv eventuellt lösenord av användare för att komma åt denna Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Privata anteckningar om denna Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisableDesc": { + "message": "Inaktivera denna Send så att ingen kan komma åt den.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Nuvarande antal åtkomster" + }, + "createSend": { + "message": "Skapa ny 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" + }, + "sendDisabled": { + "message": "Send inaktiverad", + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "För att välja en fil, öppna tillägget i sidofältet (om möjligt) eller skapa ett nytt fönster genom att klicka på denna banner." + }, + "sendFirefoxFileWarning": { + "message": "För att välja en fil med Firefox, öppna tillägget i sidofältet eller öppna ett nytt fönster genom att klicka på denna banner." + }, + "sendSafariFileWarning": { + "message": "För att välja en fil med Safari, öppna ett nytt fönster genom att klicka på denna banner." + }, + "sendFileCalloutHeader": { + "message": "Innan du börjar" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "För att använda en datumväljare med kalenderstil", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "klicka här", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "för att öppna ett nytt fönster.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Det angivna utgångsdatumet är inte giltigt." + }, + "deletionDateIsInvalid": { + "message": "Det angivna raderingsdatumet är inte giltigt." + }, + "expirationDateAndTimeRequired": { + "message": "Ett utgångsdatum och tid krävs." + }, + "deletionDateAndTimeRequired": { + "message": "Ett raderingsdatum och tid krävs." + }, + "dateParsingError": { + "message": "Det gick inte att spara raderings- och utgångsdatum." + }, + "hideEmail": { + "message": "Dölj min e-postadress för mottagare." + }, + "sendOptionsPolicyInEffect": { + "message": "En eller flera organisationsriktlinjer påverkar dina Send-inställningar." + }, + "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." + }, + "emailVerificationRequired": { + "message": "E-postverifiering krävs" + }, + "emailVerificationRequiredDesc": { + "message": "Du måste verifiera din e-postadress för att använda den här funktionen. Du kan verifiera din e-postadress i webbvalvet." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Välj mapp…" + }, + "ssoCompleteRegistration": { + "message": "För att slutföra inloggning med SSO, ange ett huvudlösenord för att komma åt och skydda ditt valv." + }, + "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$ timmar och $MINUTES$ minuter", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Ditt valvs tid för timeout överskrider de begränsningar som fastställts av din organisation." + }, + "vaultExportDisabled": { + "message": "Valvexport inaktiverad" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flera organisationsprinciper hindrar dig från att exportera ditt personliga valv." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Det gick inte att identifiera något giltigt formulärelement. Prova att inspektera HTML-koden istället." + }, + "copyCustomFieldNameNotUnique": { + "message": "Ingen unik identifierare hittades." + }, + "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" + }, + "removeMasterPassword": { + "message": "Ta bort huvudlösenord" + }, + "removedMasterPassword": { + "message": "Huvudlösenord togs bort." + }, + "leaveOrganizationConfirmation": { + "message": "Är du säker på att du vill lämna denna organisation?" + }, + "leftOrganization": { + "message": "Du har lämnat organisationen." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "sessionTimeout": { + "message": "Din session har gått ut. Gå tillbaka och försök logga in igen." + }, + "exportingPersonalVaultTitle": { + "message": "Exportera personligt valv" + }, + "exportingPersonalVaultDescription": { + "message": "Endast de personliga valvobjekt som är associerade med $EMAIL$ kommer att exporteras. Organisationens valv kommer inte att inkluderas.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "Fel" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json new file mode 100644 index 0000000000..4a02eb6ef6 --- /dev/null +++ b/apps/browser/src/_locales/th/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "bitwarden" + }, + "extName": { + "message": "bitwarden - Free Password Manager", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "bitwarden is a secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "ล็อกอิน หรือ สร้างบัญชีใหม่ เพื่อใช้งานตู้นิรภัยของคุณ" + }, + "createAccount": { + "message": "สร้างบัญชี" + }, + "login": { + "message": "เข้าสู่ระบบ" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "ยกเลิก" + }, + "close": { + "message": "ปิด" + }, + "submit": { + "message": "ส่งข้อมูล" + }, + "emailAddress": { + "message": "ที่อยู่อีเมล" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "รหัสผ่านหลัก คือ รหัสผ่านที่ใช้เข้าถึงตู้นิรภัยของคุณ สิ่งสำคัญมาก คือ คุณจะต้องไม่ลืมรหัสผ่านหลักโดยเด็ดขาด เพราะหากคุณลืมแล้วล่ะก็ จะไม่มีวิธีที่สามารถกู้รหัสผ่านของคุณได้เลย" + }, + "masterPassHintDesc": { + "message": "คำใบ้เกี่ยวกับรหัสผ่านหลักสามารถช่วยให้คุณนึกรหัสผ่านหลักออกได้หากลืม" + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "tab": { + "message": "แท็บ" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "เครื่องมือ" + }, + "settings": { + "message": "การตั้งค่า" + }, + "currentTab": { + "message": "แท็บปัจจุบัน" + }, + "copyPassword": { + "message": "คัดลอกรหัสผ่าน" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "คัดลอก URI" + }, + "copyUsername": { + "message": "คัดลอกชื่อผู้ใช้" + }, + "copyNumber": { + "message": "คัดลอกหมายเลข" + }, + "copySecurityCode": { + "message": "คัดลอกรหัสรักษาความปลอดภัย" + }, + "autoFill": { + "message": "กรอกข้อมูลอัตโนมัติ" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "ไม่พบข้อมูลล็อกอินที่ตรงกัน" + }, + "unlockVaultMenu": { + "message": "Unlock your vault" + }, + "loginToVaultMenu": { + "message": "Log in to your vault" + }, + "autoFillInfo": { + "message": "ไม่พบข้อมูลล็อกอินเพื่อใช้กรอกข้อมูลอัตโนมัติ สำหรับแท็บปัจจุบันของเบราว์เซอร์" + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "เพิ่มรายการ" + }, + "passwordHint": { + "message": "คำใบ้รหัสผ่าน" + }, + "enterEmailToGetHint": { + "message": "กรอกอีเมลของบัญชีของคุณ เพื่อรับคำใบ้เกี่ยวกับรหัสผ่านหลักของคุณ" + }, + "getMasterPasswordHint": { + "message": "รับคำใบ้เกี่ยวกับรหัสผ่านหลักของคุณ" + }, + "continue": { + "message": "ดำเนินการต่อไป" + }, + "sendVerificationCode": { + "message": "ส่งโค้ดยืนยันไปยังอีเมลของคุณ" + }, + "sendCode": { + "message": "ส่งโค้ด" + }, + "codeSent": { + "message": "ส่งโค้ดแล้ว" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "ยืนยันตัวตนของคุณเพื่อดำเนินการต่อ" + }, + "account": { + "message": "บัญชี" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "ออกจากระบบ" + }, + "about": { + "message": "เกี่ยวกับ" + }, + "version": { + "message": "เวอร์ชัน" + }, + "save": { + "message": "บันทึก" + }, + "move": { + "message": "ย้าย" + }, + "addFolder": { + "message": "เพิ่มโฟลเดอร์" + }, + "name": { + "message": "ชื่อ" + }, + "editFolder": { + "message": "แก้ไขโฟลเดอร์" + }, + "deleteFolder": { + "message": "ลบโฟลเดอร์" + }, + "folders": { + "message": "โฟลเดอร์" + }, + "noFolders": { + "message": "ไม่มีโฟลเดอร์" + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "ซิงค์" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "สุ่มรหัส", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "เลือก" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "ตัวเลือก" + }, + "length": { + "message": "ความยาว" + }, + "uppercase": { + "message": "ตัวพิมพ์ใหญ่ (A-Z)" + }, + "lowercase": { + "message": "ตัวพิมพ์เล็ก (a-z)" + }, + "numbers": { + "message": "ตัวเลข (0-9)" + }, + "specialCharacters": { + "message": "อักขระพิเศษ (!@#$%^&*)" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "ขึ้นต้นด้วยตัวพิมพ์ใหญ่", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "ต่อท้ายด้วยตัวเลข" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "ค้นหาในตู้นิรภัย" + }, + "edit": { + "message": "แก้ไข" + }, + "view": { + "message": "แสดง" + }, + "noItemsInList": { + "message": "ไม่มีรายการ" + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "ชื่อผู้ใช้" + }, + "password": { + "message": "รหัสผ่าน" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "รายการโปรด" + }, + "notes": { + "message": "โน้ต" + }, + "note": { + "message": "โน้ต" + }, + "editItem": { + "message": "แก้ไขรายการ" + }, + "folder": { + "message": "โฟลเดอร์" + }, + "deleteItem": { + "message": "ลบรายการ" + }, + "viewItem": { + "message": "ดูรายการ" + }, + "launch": { + "message": "เริ่ม" + }, + "website": { + "message": "เว็บไซต์" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "จัดการ" + }, + "other": { + "message": "อื่น ๆ" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyIdentity": { + "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": "รหัสผ่านหลักไม่ถูกต้อง" + }, + "vaultTimeout": { + "message": "ระยะเวลาล็อกตู้เซฟ" + }, + "lockNow": { + "message": "Lock Now" + }, + "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 ชั่วโมง" + }, + "onLocked": { + "message": "On Locked" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "ไม่อีกเลย" + }, + "security": { + "message": "ความปลอดภัย" + }, + "errorOccurred": { + "message": "พบข้อผิดพลาด" + }, + "emailRequired": { + "message": "ต้องระบุอีเมล" + }, + "invalidEmail": { + "message": "ที่อยู่อีเมลไม่ถูกต้อง" + }, + "masterPassRequired": { + "message": "ต้องระบุรหัสผ่านหลัก" + }, + "masterPassLength": { + "message": "รหัสผ่านหลักต้องมีความยาวอย่างน้อย 8 อักขระ" + }, + "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." + }, + "verificationCodeRequired": { + "message": "ต้องระบุโค้ดยืนยัน" + }, + "invalidVerificationCode": { + "message": "โค้ดยืนยันไม่ถูกต้อง" + }, + "valueCopied": { + "message": " copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected login on this page. Copy/paste your username and/or password instead." + }, + "loggedOut": { + "message": "ออกจากระบบ" + }, + "loginExpired": { + "message": "เซสชันของคุณหมดอายุแล้ว" + }, + "logOutConfirmation": { + "message": "คุณต้องการล็อกเอาต์ใช่หรือไม่?" + }, + "yes": { + "message": "ใช่" + }, + "no": { + "message": "ไม่ใช่" + }, + "unexpectedError": { + "message": "An unexpected error has occured." + }, + "nameRequired": { + "message": "ต้องระบุชื่อ" + }, + "addedFolder": { + "message": "เพิ่มโฟลเดอร์แล้ว" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "คุณสามารถเปลี่ยนรหัสผ่านหลักได้ที่เว็บตู้เซฟ bitwarden.com คุณต้องการเปิดเว็บไซต์เลยหรือไม่?" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to enter a security code from an authenticator app whenever you log in. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "editedFolder": { + "message": "Edited Folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "ลบโฟลเดอร์แล้ว" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "การซิงก์เสร็จสมบูรณ์" + }, + "syncingFailed": { + "message": "การซิงก์ล้มเหลว" + }, + "passwordCopied": { + "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 ใหม่" + }, + "addedItem": { + "message": "เพิ่มรายการแล้ว" + }, + "editedItem": { + "message": "แก้ไขรายการแล้ว" + }, + "deleteItemConfirmation": { + "message": "คุณต้องการส่งไปยังถังขยะใช่หรือไม่?" + }, + "deletedItem": { + "message": "ส่งรายการไปยังถังขยะแล้ว" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "overwritePasswordConfirmation": { + "message": "คุณต้องการเขียนทับรหัสผ่านปัจจุบันใช่หรือไม่?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "searchFolder": { + "message": "ค้นหาในโพลเดอร์" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "clearClipboard": { + "message": "ล้างคลิปบอร์ด", + "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." + }, + "notificationAddDesc": { + "message": "Should bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Yes, Save Now" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "คุณต้องการอัปเดตรหัสผ่านนี้ใน Bitwarden หรือไม่?" + }, + "notificationChangeSave": { + "message": "Yes, Update Now" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "ธีม" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "มืด", + "description": "Dark color" + }, + "light": { + "message": "สว่าง", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "คำเตือน", + "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." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "แชร์แล้ว" + }, + "learnOrg": { + "message": "Learn about Organizations" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "share": { + "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." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "ไฟล์แนบ" + }, + "deleteAttachment": { + "message": "ลบไฟล์แนบ" + }, + "deleteAttachmentConfirmation": { + "message": "คุณต้องการลบไฟล์แนบนี้ใช่หรือไม่?" + }, + "deletedAttachment": { + "message": "ลบไฟล์แนบแล้ว" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "ไม่มีไฟล์แนบ" + }, + "attachmentSaved": { + "message": "บันทึกไฟล์แนบแล้ว" + }, + "file": { + "message": "ไฟล์" + }, + "selectFile": { + "message": "เลือกไฟล์" + }, + "maxFileSize": { + "message": "ขนาดไฟล์สูงสุด คือ 500 MB" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "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:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB of encrypted file storage." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "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" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "ส่งโค้ดยืนยันไปยังอีเมล $EMAIL$ แล้ว", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "ส่งโค้ดยืนยันไปยังอีเมลอีกครั้ง" + }, + "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." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Open new tab" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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": "อีเมล" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "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": "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill On Page Load." + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Auto-fill on Page Load (if enabled in Options)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Use default setting" + }, + "autoFillOnPageLoadYes": { + "message": "Auto-fill on page load" + }, + "autoFillOnPageLoadNo": { + "message": "Do not auto-fill on page load" + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website." + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard." + }, + "commandLockVaultDesc": { + "message": "ล็อกตู้เซฟ" + }, + "privateModeWarning": { + "message": "Private mode support is experimental and some features are limited." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "ค่า" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "ข้อความ" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provides a recognizable icon next to each login item in your vault." + }, + "disableBadgeCounter": { + "message": "Disable Badge Counter" + }, + "disableBadgeCounterDesc": { + "message": "Badge counter indicates how many logins you have for the current page in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "หมายเลข" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "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": "ธันวาคม" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "คำนำหน้า" + }, + "mr": { + "message": "นาย" + }, + "mrs": { + "message": "นาง" + }, + "ms": { + "message": "นางสาว" + }, + "dr": { + "message": "ดร." + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "บริษัท" + }, + "ssn": { + "message": "หมายเลขประกันสังคม" + }, + "passportNumber": { + "message": "หมายเลขหนังสือเดินทาง" + }, + "licenseNumber": { + "message": "หมายเลขใบอนุญาต" + }, + "email": { + "message": "อีเมล" + }, + "phone": { + "message": "โทรศัพท์" + }, + "address": { + "message": "ที่อยู่" + }, + "address1": { + "message": "ที่อยู่ 1" + }, + "address2": { + "message": "ที่อยู่ 2" + }, + "address3": { + "message": "ที่อยู่ 3" + }, + "cityTown": { + "message": "เมือง" + }, + "stateProvince": { + "message": "รัฐ / จังหวัด" + }, + "zipPostalCode": { + "message": "รหัสไปรษณีย์" + }, + "country": { + "message": "ประเทศ" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "ล็อกอิน" + }, + "typeLogins": { + "message": "ล็อกอิน" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "บัตรเครดิต" + }, + "typeIdentity": { + "message": "ข้อมูลระบุตัวตน" + }, + "passwordHistory": { + "message": "ประวัติของรหัสผ่าน" + }, + "back": { + "message": "ย้อนกลับ" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "รายการโปรด" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed 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" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI ปัจจุบัน", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "องค์กร", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "รายการทั้งหมด" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "ลบ" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "อัปเดตแล้ว", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "อัปเดต Password แล้ว", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + }, + "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": "เจ้าของ" + }, + "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": "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": "ปลดล็อกด้วย PIN" + }, + "setYourPinCode": { + "message": "ตั้ง PIN เพื่อใช้ปลดล็อก Bitwarden ทั้งนี้ หากคุณล็อกเอาต์ออกจากแอปโดยสมบูรณ์จะเป็นการลบการตั้งค่า PIN ของคุณด้วย" + }, + "pinRequired": { + "message": "ต้องระบุ PIN" + }, + "invalidPin": { + "message": "PIN ไม่ถูกต้อง" + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "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": "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" + }, + "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" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "ตั้งรหัสผ่านหลัก" + }, + "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": "ความยาวอย่างน้อย $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": "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." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "ตกลง" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Permission request error" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "ค้นหาใน Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "เพิ่ม Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "ข้อความ" + }, + "sendTypeFile": { + "message": "ไฟล์" + }, + "allSends": { + "message": "Send ทั้งหมด", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "passwordProtected": { + "message": "Password protected" + }, + "copySendLink": { + "message": "Copy Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "ลบรหัสผ่าน" + }, + "delete": { + "message": "ลบ" + }, + "removedPassword": { + "message": "รหัสผ่านถูกลบแล้ว" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "Disabled" + }, + "removePasswordConfirmation": { + "message": "คุณต้องการลบรหัสผ่านนี้ใช่หรือไม่" + }, + "deleteSend": { + "message": "ลบ Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "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." + }, + "oneDay": { + "message": "1 วัน" + }, + "days": { + "message": "$DAYS$ วัน", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Custom" + }, + "maximumAccessCount": { + "message": "Maximum Access Count" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "ข้อความที่คุณต้องการส่ง" + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Before you start" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "click here", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "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." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature. You can verify your email in the web vault." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json new file mode 100644 index 0000000000..a29e01b8e3 --- /dev/null +++ b/apps/browser/src/_locales/tr/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Ücretsiz Parola Yöneticisi", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Tüm cihazlarınız için güvenli ve ücretsiz bir parola yöneticisi.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Kurumsal tek oturum açma (SSO)" + }, + "cancel": { + "message": "İptal" + }, + "close": { + "message": "Kapat" + }, + "submit": { + "message": "Gönder" + }, + "emailAddress": { + "message": "E-posta adresi" + }, + "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. Unutursanız parolalarınızı asla kurtaramazsınız." + }, + "masterPassHintDesc": { + "message": "Ana parolanızı unutursanız bu ipucuna bakınca size ana parolanızı hatırlatacak bir şey yazabilirsiniz." + }, + "reTypeMasterPass": { + "message": "Ana parolayı tekrar yazın" + }, + "masterPassHint": { + "message": "Ana Parola İpucu (isteğe bağlı)" + }, + "tab": { + "message": "Sekme" + }, + "myVault": { + "message": "Kasam" + }, + "tools": { + "message": "Araçlar" + }, + "settings": { + "message": "Ayarlar" + }, + "currentTab": { + "message": "Geçerli sekme" + }, + "copyPassword": { + "message": "Parolayı kopyala" + }, + "copyNote": { + "message": "Notu kopyala" + }, + "copyUri": { + "message": "URI'yi kopyala" + }, + "copyUsername": { + "message": "Kullanıcı adını kopyala" + }, + "copyNumber": { + "message": "Numarayı kopyala" + }, + "copySecurityCode": { + "message": "Güvenlik kodunu kopyala" + }, + "autoFill": { + "message": "Otomatik doldur" + }, + "generatePasswordCopied": { + "message": "Parola oluştur (ve kopyala)" + }, + "copyElementIdentifier": { + "message": "Özel alan adını kopyala" + }, + "noMatchingLogins": { + "message": "Eşleşen hesap yok." + }, + "unlockVaultMenu": { + "message": "Kasanızın kilidini açın" + }, + "loginToVaultMenu": { + "message": "Kasanıza giriş yapın" + }, + "autoFillInfo": { + "message": "Mevcut sekme için otomatik doldurulacak giriş bilgisi bulunmuyor." + }, + "addLogin": { + "message": "Hesap ekle" + }, + "addItem": { + "message": "Kayıt ekle" + }, + "passwordHint": { + "message": "Parola ipucu" + }, + "enterEmailToGetHint": { + "message": "Ana parola ipucunu almak için hesabınızın e-posta adresini girin." + }, + "getMasterPasswordHint": { + "message": "Ana parola ipucunu al" + }, + "continue": { + "message": "Devam" + }, + "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." + }, + "account": { + "message": "Hesap" + }, + "changeMasterPassword": { + "message": "Ana parolayı değiştir" + }, + "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." + }, + "twoStepLogin": { + "message": "İki aşamalı giriş" + }, + "logOut": { + "message": "Çıkış yap" + }, + "about": { + "message": "Hakkında" + }, + "version": { + "message": "Sürüm" + }, + "save": { + "message": "Kaydet" + }, + "move": { + "message": "Taşı" + }, + "addFolder": { + "message": "Klasör ekle" + }, + "name": { + "message": "Ad" + }, + "editFolder": { + "message": "Klasörü düzenle" + }, + "deleteFolder": { + "message": "Klasörü sil" + }, + "folders": { + "message": "Klasörler" + }, + "noFolders": { + "message": "Listelenecek klasör yok." + }, + "helpFeedback": { + "message": "Yardım ve geribildirim" + }, + "sync": { + "message": "Eşitle" + }, + "syncVaultNow": { + "message": "Kasayı şimdi eşitle" + }, + "lastSync": { + "message": "Son eşitleme:" + }, + "passGen": { + "message": "Parola Oluşturucu" + }, + "generator": { + "message": "Oluşturucu", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Hesaplarınız için otomatik olarak güçlü, özgün parolalar oluşturun." + }, + "bitWebVault": { + "message": "Bitwarden web kasası" + }, + "importItems": { + "message": "Hesapları içe aktar" + }, + "select": { + "message": "Seç" + }, + "generatePassword": { + "message": "Parola oluştur" + }, + "regeneratePassword": { + "message": "Yeni parola oluştur" + }, + "options": { + "message": "Seçenekler" + }, + "length": { + "message": "Uzunluk" + }, + "uppercase": { + "message": "Büyük harf (A-Z)" + }, + "lowercase": { + "message": "Küçük harf (a-z)" + }, + "numbers": { + "message": "Rakamlar (0-9)" + }, + "specialCharacters": { + "message": "Özel karakterler (!@#$%^&*)" + }, + "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" + }, + "minNumbers": { + "message": "En az rakam" + }, + "minSpecial": { + "message": "En az özel karakter" + }, + "avoidAmbChar": { + "message": "Okurken karışabilecek karakterleri kullanma" + }, + "searchVault": { + "message": "Kasada ara" + }, + "edit": { + "message": "Düzenle" + }, + "view": { + "message": "Görüntüle" + }, + "noItemsInList": { + "message": "Listelenecek kayıt yok." + }, + "itemInformation": { + "message": "Hesap Bilgileri" + }, + "username": { + "message": "Kullanıcı adı" + }, + "password": { + "message": "Parola" + }, + "passphrase": { + "message": "Uzun söz" + }, + "favorite": { + "message": "Favori" + }, + "notes": { + "message": "Notlar" + }, + "note": { + "message": "Not" + }, + "editItem": { + "message": "Kaydı düzenle" + }, + "folder": { + "message": "Klasör" + }, + "deleteItem": { + "message": "Kaydı sil" + }, + "viewItem": { + "message": "Kaydı göster" + }, + "launch": { + "message": "Aç" + }, + "website": { + "message": "Web sitesi" + }, + "toggleVisibility": { + "message": "Görünürlüğünü aç/kapat" + }, + "manage": { + "message": "Yönet" + }, + "other": { + "message": "Diğer" + }, + "rateExtension": { + "message": "Uzantıyı değerlendirin" + }, + "rateExtensionDesc": { + "message": "İyi bir yorum yazarak bizi destekleyebilirsiniz." + }, + "browserNotSupportClipboard": { + "message": "Web tarayıcınız panoya kopyalamayı desteklemiyor. Parolayı elle kopyalayın." + }, + "verifyIdentity": { + "message": "Kimlik Doğrulama" + }, + "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" + }, + "vaultTimeout": { + "message": "Kasa zaman aşımı" + }, + "lockNow": { + "message": "Şimdi kilitle" + }, + "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" + }, + "onLocked": { + "message": "Sistem kilitlenince" + }, + "onRestart": { + "message": "Tarayıcı yeniden başlatılınca" + }, + "never": { + "message": "Asla" + }, + "security": { + "message": "Güvenlik" + }, + "errorOccurred": { + "message": "Bir hata oluştu" + }, + "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": "Ana 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." + }, + "verificationCodeRequired": { + "message": "Doğrulama kodu gereklidir." + }, + "invalidVerificationCode": { + "message": "Geçersiz doğrulama kodu" + }, + "valueCopied": { + "message": "$VALUE$ kopyalandı", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Seçilen hesap bu sayfada otomatik olarak doldurulamadı. Lütfen bilgileri elle kopyalayıp yapıştırın." + }, + "loggedOut": { + "message": "Çıkış yapıldı" + }, + "loginExpired": { + "message": "Oturumunuz zaman aşımına uğradı." + }, + "logOutConfirmation": { + "message": "Çıkış yapmak istediğinize emin misiniz?" + }, + "yes": { + "message": "Evet" + }, + "no": { + "message": "Hayır" + }, + "unexpectedError": { + "message": "Beklenmedik bir hata oluştu." + }, + "nameRequired": { + "message": "Ad gereklidir." + }, + "addedFolder": { + "message": "Klasör eklendi" + }, + "changeMasterPass": { + "message": "Ana parolayı değiştir" + }, + "changeMasterPasswordConfirmation": { + "message": "Ana parolanızı bitwarden.com web kasası üzerinden değiştirebilirsiniz. Siteye gitmek ister misiniz?" + }, + "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?" + }, + "editedFolder": { + "message": "Klasör düzenlendi" + }, + "deleteFolderConfirmation": { + "message": "Bu klasörü silmek istediğinizden emin misiniz?" + }, + "deletedFolder": { + "message": "Klasör silindi" + }, + "gettingStartedTutorial": { + "message": "Başlangıç Rehberi" + }, + "gettingStartedTutorialVideo": { + "message": "Tarayıcı uzantımızdan en iyi şekilde yararlanmayı öğrenmek için başlangıç eğitimimizi izleyebilirsiniz." + }, + "syncingComplete": { + "message": "Eşitleme tamamlandı" + }, + "syncingFailed": { + "message": "Eşitleme başarısız" + }, + "passwordCopied": { + "message": "Parola kopyalandı" + }, + "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" + }, + "addedItem": { + "message": "Kayıt eklendi" + }, + "editedItem": { + "message": "Kayıt düzenlendi" + }, + "deleteItemConfirmation": { + "message": "Çöp kutusuna göndermek istediğinizden emin misiniz?" + }, + "deletedItem": { + "message": "Kayıt çöp kutusuna gönderildi" + }, + "overwritePassword": { + "message": "Parolanın üzerine yaz" + }, + "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?" + }, + "searchFolder": { + "message": "Klasörde ara" + }, + "searchCollection": { + "message": "Koleksiyonda ara" + }, + "searchType": { + "message": "Arama türü" + }, + "noneFolder": { + "message": "Klasör yok", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "\"Hesap ekle\" bildirimini kapat" + }, + "addLoginNotificationDesc": { + "message": "\"Hesap ekle\" bildirimi, ilk kez kullandığınız hesap bilgilerini kasanıza kaydetmek isteyip istemediğinizi otomatik olarak sorar." + }, + "dontShowCardsCurrentTab": { + "message": "Sekme sayfasında kartları gösterme" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Kasanızdaki banka/kredi kartları, otomatik doldurmayı kolaylaştırmak için \"geçerli sekme\" sayfasında listelenir." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Sekme sayfasında kimlikleri gösterme" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Kasanızdaki kimlik kayıtları, otomatik doldurmayı kolaylaştırmak için \"geçerli sekme\" sayfasında listelenir." + }, + "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." + }, + "notificationAddDesc": { + "message": "Bitwarden bu parolayı sizin için hatırlasın mı?" + }, + "notificationAddSave": { + "message": "Kaydet" + }, + "disableChangedPasswordNotification": { + "message": "\"Parola değiştirildi\" bildirimini kapat" + }, + "disableChangedPasswordNotificationDesc": { + "message": "\"Parola değiştirildi\" bildirimi, bir web sitesindeki parolanızı değiştirdiğiniz algılanınca otomatik olarak kasanızda kayıtlı parolayı güncellemenizi sağlar." + }, + "notificationChangeDesc": { + "message": "Bu parolayı Bitwarden'da güncellemek ister misiniz?" + }, + "notificationChangeSave": { + "message": "Güncelle" + }, + "disableContextMenuItem": { + "message": "Sağ tıklama menüsünü kapat" + }, + "disableContextMenuItemDesc": { + "message": "Sağ tıklama menüsü, parola oluşturma aracına ve açık sekmeye ait hesaplara hızlı erişim sağlar." + }, + "defaultUriMatchDetection": { + "message": "Varsayılan URI eşleşme tespiti", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Otomatik doldurma gibi eylemler gerçekleştirilirken hesaplar için URI eşleşme tespitinin nasıl yapılacağını seçin." + }, + "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" + }, + "solarizedDark": { + "message": "Solarized koyu", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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ı Onayla" + }, + "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": "Her Bitwarden kullanıcı hesabının hesap şifreleme anahtarları farklıdır. Yani şifrelenmiş bir dışa aktarmayı farklı bir hesapta içe aktaramazsınız." + }, + "exportMasterPassword": { + "message": "Kasadaki verilerinizi dışa aktarmak için ana parolanızı girin." + }, + "shared": { + "message": "Paylaşılan" + }, + "learnOrg": { + "message": "Kuruluşlar hakkında bilgi al" + }, + "learnOrgConfirmation": { + "message": "Bitwarden'ın kuruluş özelliğini kullanarak kasanızdaki kayıtları başkalarıyla paylaşabilirsiniz. Daha fazla bilgi için bitwarden.com sitesini ziyaret etmek ister misiniz?" + }, + "moveToOrganization": { + "message": "Kuruluşa taşı" + }, + "share": { + "message": "Paylaş" + }, + "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." + }, + "learnMore": { + "message": "Daha fazla bilgi al" + }, + "authenticatorKeyTotp": { + "message": "Kimlik doğrulama anahtarı (TOTP)" + }, + "verificationCodeTotp": { + "message": "Doğrulama kodu (TOTP)" + }, + "copyVerificationCode": { + "message": "Doğrulama kodunu kopyala" + }, + "attachments": { + "message": "Ekler" + }, + "deleteAttachment": { + "message": "Eki sil" + }, + "deleteAttachmentConfirmation": { + "message": "Bu eki silmek istediğinize emin misiniz?" + }, + "deletedAttachment": { + "message": "Ek silindi" + }, + "newAttachment": { + "message": "Yeni dosya ekle" + }, + "noAttachments": { + "message": "Ek yok." + }, + "attachmentSaved": { + "message": "Dosya kaydedildi." + }, + "file": { + "message": "Dosya" + }, + "selectFile": { + "message": "Bir dosya seçin." + }, + "maxFileSize": { + "message": "Maksimum dosya boyutu 500 MB'dir." + }, + "featureUnavailable": { + "message": "Özellik kullanılamıyor" + }, + "updateKey": { + "message": "Şifreleme anahtarınızı güncellemeden bu özelliği kullanamazsınız." + }, + "premiumMembership": { + "message": "Premium üyelik" + }, + "premiumManage": { + "message": "Üyeliğimi yönet" + }, + "premiumManageAlert": { + "message": "Üyeliğinizi bitwarden.com web kasası üzerinden yönetebilirsiniz. Şimdi siteye gitmek ister misiniz?" + }, + "premiumRefresh": { + "message": "Üyeliğimi yenile" + }, + "premiumNotCurrentMember": { + "message": "Şu anda premium üye değilsiniz." + }, + "premiumSignUpAndGet": { + "message": "Premium üye olarak sahip olacağınız avantajlar:" + }, + "ppremiumSignUpStorage": { + "message": "Dosya ekleri için 1 GB şifrelenmiş depolama." + }, + "ppremiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F ve Duo gibi iki aşamalı giriş seçenekleri." + }, + "ppremiumSignUpReports": { + "message": "Kasanızı güvende tutmak için parola hijyeni, hesap sağlığı ve veri ihlali raporları." + }, + "ppremiumSignUpTotp": { + "message": "Kasanızdaki hesaplar için TOTP doğrulama kodu (2FA) oluşturucu." + }, + "ppremiumSignUpSupport": { + "message": "Öncelikli müşteri desteği." + }, + "ppremiumSignUpFuture": { + "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ı" + }, + "disableAutoTotpCopy": { + "message": "Otomatik TOTP kopyalamayı kapat" + }, + "disableAutoTotpCopyDesc": { + "message": "Hesabınıza bağlı bir kimlik doğrulama anahtarı varsa giriş bilgilerini otomatik olarak doldurduğunuzda TOTP doğrulama kodu da otomatik olarak panonuza kopyalanır." + }, + "disableAutoBiometricsPrompt": { + "message": "Açılışta biyometri doğrulaması isteme" + }, + "premiumRequired": { + "message": "Premium gerekli" + }, + "premiumRequiredDesc": { + "message": "Bu özelliği kullanmak için premium üyelik gereklidir." + }, + "enterVerificationCodeApp": { + "message": "Kimlik doğrulama uygulamanızdaki 6 haneli doğrulama kodunu girin." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ adresine e-postayla gönderdiğimiz 6 haneli doğrulama kodunu girin.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Doğrulama e-postası $EMAIL$ adresine gönderildi.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Beni hatırla" + }, + "sendVerificationCodeEmailAgain": { + "message": "Doğrulama kodunu yeniden gönder" + }, + "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. Düğmesi varsa dokunun." + }, + "webAuthnNewTab": { + "message": "WebAuthn iki aşamalı doğrulamayı başlatmak için aşağıdaki düğmeye tıklayın ve açılan sekmedeki yönergeleri takip edin." + }, + "webAuthnNewTabOpen": { + "message": "Yeni sekme aç" + }, + "webAuthnAuthenticate": { + "message": "WebAutn ile doğrula" + }, + "loginUnavailable": { + "message": "Giriş yapılamıyor" + }, + "noTwoStepProviders": { + "message": "Bu hesapta iki aşamalı giriş özelliği etkin ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu tarayıcıyı desteklemiyor." + }, + "noTwoStepProviders2": { + "message": "Lütfen desteklenen bir web tarayıcısı (örn. Chrome) kullanın ve/veya web tarayıcılarında daha iyi desteklenen sağlayıcılar (örn. kimlik doğrulama uygulaması) ekleyin." + }, + "twoStepOptions": { + "message": "İki aşamalı giriş seçenekleri" + }, + "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ğrulama uygulaması" + }, + "authenticatorAppDesc": { + "message": "Zamana dayalı doğrulama kodları oluşturmak için kimlik doğrulama uygulaması (örn. Authy veya Google Authenticator) 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 araması 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 araması 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 kodları e-posta adresinize gönderilecek." + }, + "selfHostedEnvironment": { + "message": "Şirket içinde barındırılan ortam" + }, + "selfHostedEnvironmentFooter": { + "message": "Kurum içinde barındırılan Bitwarden kurulumunuzun taban URL'sini belirtin." + }, + "customEnvironment": { + "message": "Özel ortam" + }, + "customEnvironmentFooter": { + "message": "İleri düzey kullanıcılar için. Her hizmetin 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 sunucusu URL'si" + }, + "notificationsUrl": { + "message": "Bildirim sunucusu URL'si" + }, + "iconsUrl": { + "message": "Simge sunucusu URL'si" + }, + "environmentSaved": { + "message": "Ortam URL'leri kaydedildi." + }, + "enableAutoFillOnPageLoad": { + "message": "Sayfa yüklendiğinde otomatik doldur" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Sayfa yüklendiğinde giriş formu tespit edilirse otomatik olarak formu doldur." + }, + "experimentalFeature": { + "message": "Bu şu anda deneysel bir özelliktir. Kullanımı sizin sorumluluğunuzdadır." + }, + "defaultAutoFillOnPageLoad": { + "message": "Hesaplar için varsayılan otomatik doldurma ayarı" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "\"Sayfa yüklendiğinde otomatik doldur\"u açtıktan sonra her hesap için bu özelliği ayrı ayrı açıp kapatabilirsiniz. Bu ayar, özellikle ayarlama yapmadığınız hesaplarda kullanılacak varsayılan ayardır." + }, + "itemAutoFillOnPageLoad": { + "message": "Sayfa yüklendiğinde otomatik doldur (seçeneklerde etkinleştirilmişse)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Varsayılan ayarı kullan" + }, + "autoFillOnPageLoadYes": { + "message": "Sayfa yüklendiğinde otomatik doldur" + }, + "autoFillOnPageLoadNo": { + "message": "Sayfa yüklendiğinde otomatik doldurma" + }, + "commandOpenPopup": { + "message": "Kasayı açılır pencerede aç" + }, + "commandOpenSidebar": { + "message": "Kasayı kenar çubuğunda aç" + }, + "commandAutofillDesc": { + "message": "Geçerli site için son kullanılan hesabı otomatik doldur" + }, + "commandGeneratePasswordDesc": { + "message": "Rastgele yeni bir parola oluştur ve panoya kopyala" + }, + "commandLockVaultDesc": { + "message": "Kasayı kilitle" + }, + "privateModeWarning": { + "message": "Gizli mod desteği deneyseldir ve bazı özellikler kısıtlıdır." + }, + "customFields": { + "message": "Özel alanlar" + }, + "copyValue": { + "message": "Değeri kopyala" + }, + "value": { + "message": "Değer" + }, + "newCustomField": { + "message": "Yeni özel alan" + }, + "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' (tied) to another field." + }, + "linkedValue": { + "message": "Bağlı değer", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Doğrulama kodunuzu alacağınız e-postayı kontrol etmek için bu pencerenin dışında bir yere tıklarsanız bu pencere kapanacaktır. Bu pencerenin kapanmaması için yeni bir pencerede açmak ister misiniz?" + }, + "popupU2fCloseMessage": { + "message": "Bu tarayıcı bu açılır pencerede U2F isteklerini işleyemiyor. U2F kullanarak giriş yapmak için bu açılır pencereyi yeni bir pencerede açmak ister misiniz?" + }, + "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." + }, + "disableBadgeCounter": { + "message": "Düğmedeki sayacı devre dışı bırak" + }, + "disableBadgeCounterDesc": { + "message": "Düğmedeki sayaç, görüntülenen sayfaya ait kaç hesabınız olduğunu gösterir." + }, + "cardholderName": { + "message": "Kart sahibinin adı" + }, + "number": { + "message": "Numara" + }, + "brand": { + "message": "Marka" + }, + "expirationMonth": { + "message": "Son kullanma ayı" + }, + "expirationYear": { + "message": "Son kullanma yılı" + }, + "expiration": { + "message": "Son kullanma tarihi" + }, + "january": { + "message": "Ocak" + }, + "february": { + "message": "Şubat" + }, + "march": { + "message": "Mart" + }, + "april": { + "message": "Nisan" + }, + "may": { + "message": "May" + }, + "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" + }, + "securityCode": { + "message": "Güvenlik kodu" + }, + "ex": { + "message": "örn." + }, + "title": { + "message": "Unvan" + }, + "mr": { + "message": "Bay" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "Ad" + }, + "middleName": { + "message": "İkinci ad" + }, + "lastName": { + "message": "Soyad" + }, + "fullName": { + "message": "Adı soyadı" + }, + "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" + }, + "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" + }, + "type": { + "message": "Tür" + }, + "typeLogin": { + "message": "Hesap" + }, + "typeLogins": { + "message": "Hesaplar" + }, + "typeSecureNote": { + "message": "Güvenli not" + }, + "typeCard": { + "message": "Kart" + }, + "typeIdentity": { + "message": "Kimlik" + }, + "passwordHistory": { + "message": "Parola geçmişi" + }, + "back": { + "message": "Geri" + }, + "collections": { + "message": "Koleksiyonlar" + }, + "favorites": { + "message": "Favoriler" + }, + "popOutNewWindow": { + "message": "Yeni pencerede aç" + }, + "refresh": { + "message": "Yenile" + }, + "cards": { + "message": "Kartlar" + }, + "identities": { + "message": "Kimlikler" + }, + "logins": { + "message": "Hesaplar" + }, + "secureNotes": { + "message": "Güvenli notlar" + }, + "clear": { + "message": "Temizle", + "description": "To clear something out. example: To clear browser history." + }, + "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" + }, + "toggleCurrentUris": { + "message": "Geçerli URI'leri aç/kapat", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Geçerli URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Kuruluş", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Türler" + }, + "allItems": { + "message": "Tüm kayıtlar" + }, + "noPasswordsInList": { + "message": "Listelenecek parola yok." + }, + "remove": { + "message": "Kaldır" + }, + "default": { + "message": "Varsayılan" + }, + "dateUpdated": { + "message": "Güncelleme", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parola güncelleme", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "message": "\"Asla\" seçeneğini kullanmak istediğinizden emin misiniz? Kilit seçeneğinizi \"Asla\" olarak ayarlarsanız kasanızın şifreleme anahtarı cihazınızda saklanacaktır. Bu seçeneği kullanırsanız cihazınızı çok iyi korumalısı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 öğenin 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 gerekli." + }, + "invalidPin": { + "message": "PIN kodu geçersiz." + }, + "unlockWithBiometrics": { + "message": "Kilidi biyometri ile aç" + }, + "awaitDesktop": { + "message": "Masaüstünden onay bekleniyor" + }, + "awaitDesktopDesc": { + "message": "Tarayıcıda biyometriyi etkinleştirmek için lütfen Bitwarden masaüstü uygulamasında biyometri kullanımını onaylayın." + }, + "lockWithMasterPassOnRestart": { + "message": "Tarayıcı yeniden başlatıldığında ana parola ile kilitle" + }, + "selectOneCollection": { + "message": "En az bir koleksiyon seçmelisiniz." + }, + "cloneItem": { + "message": "Kaydı klonla" + }, + "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" + }, + "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 kaydı kalıcı olarak silmek istediğinizden emin misiniz?" + }, + "permanentlyDeletedItem": { + "message": "Kayıt kalıcı olarak silindi" + }, + "restoreItem": { + "message": "Kaydı geri yükle" + }, + "restoreItemConfirmation": { + "message": "Bu kaydı geri yüklemek istediğinizden emin misiniz?" + }, + "restoredItem": { + "message": "Kayıt geri yüklendi" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Çıkış yaptığınızda kasanıza erişiminiz tamamen sonlanacak ve zaman aşımının ardından çevrimiçi kimlik doğrulaması yapmanız gerekecek. Bu ayarı kullanmak istediğinizden emin misiniz?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Zaman Aşımı Eylem Onayı" + }, + "autoFillAndSave": { + "message": "Otomatik doldur ve kaydet" + }, + "autoFillSuccessAndSavedUri": { + "message": "Kayıt otomatik dolduruldu ve URI kaydedildi" + }, + "autoFillSuccess": { + "message": "Kayıt otomatik dolduruldu" + }, + "setMasterPassword": { + "message": "Ana parolayı belirle" + }, + "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ş." + }, + "termsOfService": { + "message": "Hizmet Koşulları" + }, + "privacyPolicy": { + "message": "Gizlilik Politikası" + }, + "hintEqualsPassword": { + "message": "Parola ipucunuz parolanızla aynı olamaz." + }, + "ok": { + "message": "Tamam" + }, + "desktopSyncVerificationTitle": { + "message": "Masaüstü eşitleme doğrulaması" + }, + "desktopIntegrationVerificationText": { + "message": "Lütfen masaüstü uygulamasında bu parmak izinin göründüğünü onaylayın: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Tarayıcı entegrasyonu etkinleştirilmedi" + }, + "desktopIntegrationDisabledDesc": { + "message": "Bitwarden masaüstü uygulamasında tarayıcı entegrasyonu etkin değil. Lütfen masaüstü uygulamasının ayarlarından tarayıcı entegrasyonunu açın." + }, + "startDesktopTitle": { + "message": "Bitwarden masaüstü uygulamasını başlat" + }, + "startDesktopDesc": { + "message": "Bu işlevin kullanılabilmesi için Bitwarden masaüstü uygulamasının başlatılması gerekir." + }, + "errorEnableBiometricTitle": { + "message": "Biyometri etkinleştirilemedi" + }, + "errorEnableBiometricDesc": { + "message": "İşlem masaüstü uygulaması tarafından iptal edildi" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Masaüstü uygulaması güvenli iletişim kanalını geçersiz kıldı. Lütfen bu işlemi tekrar deneyin" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Masaüstü ile iletişim kesildi" + }, + "nativeMessagingWrongUserDesc": { + "message": "Masaüstü uygulamasında farklı bir hesaba giriş yapılmış. Lütfen her iki uygulamada da aynı hesaba giriş yapın." + }, + "nativeMessagingWrongUserTitle": { + "message": "Hesap uyuşmazlığı" + }, + "biometricsNotEnabledTitle": { + "message": "Biyometri etkin değil" + }, + "biometricsNotEnabledDesc": { + "message": "Tarayıcıda biyometriyi kullanmak için önce ayarlardan masaüstü biyometrisini etkinleştirilmeniz gerekir." + }, + "biometricsNotSupportedTitle": { + "message": "Biyometri desteklenmiyor" + }, + "biometricsNotSupportedDesc": { + "message": "Tarayıcı biyometrisi bu cihazda desteklenmiyor." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "İzin verilmedi" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bitwarden masaüstü uygulamasıyla iletişim kurma iznimiz olmadan tarayıcı uzantısında biyometriyi kullanamayız. Lütfen tekrar deneyin." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "İzin isteme hatası" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Bu işlemi kenar çubuğundan yapamazsınız. Lütfen açılır pencereden yapmayı deneyin." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "Bir kuruluş ilkesi sahiplik seçeneklerinizi etkiliyor." + }, + "excludedDomains": { + "message": "Hariç tutulan alan adları" + }, + "excludedDomainsDesc": { + "message": "Bitwarden bu alan adlarında hesaplarınızı kaydetmeyi sormayacaktır. Değişikliklerin etkili olması için sayfayı yenilemelisiniz." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ geçerli bir alan adı değil", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Send'lerde ara", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Send ekle", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Metin" + }, + "sendTypeFile": { + "message": "Dosya" + }, + "allSends": { + "message": "Tüm Send'ler", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Maksimum erişim sayısına ulaşıldı", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Süresi dolmuş" + }, + "pendingDeletion": { + "message": "Silinmesi bekleniyor" + }, + "passwordProtected": { + "message": "Parola korumalı" + }, + "copySendLink": { + "message": "Send bağlantısını kopyala", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Parolayı kaldır" + }, + "delete": { + "message": "Sil" + }, + "removedPassword": { + "message": "Parola kaldırıldı" + }, + "deletedSend": { + "message": "Send silindi", + "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." + }, + "disabled": { + "message": "Devre dışı" + }, + "removePasswordConfirmation": { + "message": "Parolayı kaldırmak istediğinizden emin misiniz?" + }, + "deleteSend": { + "message": "Send'i sil", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Bu Send'i açıklayan anlaşılır bir ad", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Göndermek istediğiniz dosya." + }, + "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." + }, + "oneDay": { + "message": "1 gün" + }, + "days": { + "message": "$DAYS$ gün", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Özel" + }, + "maximumAccessCount": { + "message": "Maksimum erişim sayısı" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Kaydettikten sonra bu Send'in linkini panoya kopyala.", + "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." + }, + "sendHideText": { + "message": "Bu Send'in metnini varsayılan olarak gizle.", + "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ı" + }, + "createSend": { + "message": "Yeni Send oluştur", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Yeni parola" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Dosya seçmek için eklentiyi kenar çubuğunda açın (mümkünse) veya bu banner'a tıklayarak yeni bir pencerede açın." + }, + "sendFirefoxFileWarning": { + "message": "Firefox ile dosya seçmek için eklentiyi kenar çubuğunda açın veya bu banner'a tıklayarak yeni bir pencerede açın." + }, + "sendSafariFileWarning": { + "message": "Safari ile dosya seçmek için bu banner'a tıklayarak eklentiyi yeni bir pencerede açın." + }, + "sendFileCalloutHeader": { + "message": "Başlamadan önce" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Takvim tarzı tarih seçiyi kullanmak için", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "buraya tıklayarak", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "yeni bir pencere açın.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Belirtilen son kullanma tarihi geçersiz." + }, + "deletionDateIsInvalid": { + "message": "Belirtilen silinme tarihi geçersiz." + }, + "expirationDateAndTimeRequired": { + "message": "Son kullanma tarihi ve saati gereklidir." + }, + "deletionDateAndTimeRequired": { + "message": "Silinme tarihi ve saati gereklidir." + }, + "dateParsingError": { + "message": "Silinme ve son kullanma tarihleriniz kaydedilirken bir hata oluştu." + }, + "hideEmail": { + "message": "E-posta adresimi alıcılardan gizle." + }, + "sendOptionsPolicyInEffect": { + "message": "Bir veya daha fazla kuruluş ilkesi Send seçeneklerinizi etkiliyor." + }, + "passwordPrompt": { + "message": "Ana parolayı yeniden iste" + }, + "passwordConfirmation": { + "message": "Ana parola onayı" + }, + "passwordConfirmationDesc": { + "message": "Bu işlem korumalıdır. İşleme devam etmek için lütfen ana parolanızı yeniden girin." + }, + "emailVerificationRequired": { + "message": "E-posta doğrulaması gerekiyor" + }, + "emailVerificationRequiredDesc": { + "message": "Bu özelliği kullanmak için e-postanızı doğrulamanız gerekir. E-postanızı web kasasında doğrulayabilirsiniz." + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Klasör seç..." + }, + "ssoCompleteRegistration": { + "message": "SSO ile girişinizi tamamlamak için lütfen kasanıza erişirken kullanacağınız ana parolayı belirleyin." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Kasa zaman aşımınız, kuruluşunuz tarafından belirlenen kısıtlamaları aşıyor." + }, + "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." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Geçerli bir form elemanı bulunamadı. HTML'i denetlemeyi deneyebilirsiniz." + }, + "copyCustomFieldNameNotUnique": { + "message": "Benzersiz tanımlayıcı bulunamadı." + }, + "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" + }, + "removeMasterPassword": { + "message": "Ana parolayı kaldır" + }, + "removedMasterPassword": { + "message": "Ana parola kaldırıldı." + }, + "leaveOrganizationConfirmation": { + "message": "Bu kuruluştan ayrılmak istediğinizden emin misiniz?" + }, + "leftOrganization": { + "message": "Kuruluştan ayrıldınız." + }, + "toggleCharacterCount": { + "message": "Karakter sayacını aç/kapat" + }, + "sessionTimeout": { + "message": "Oturumunuzun süresi doldu. Lütfen geri dönüp yeniden giriş yapın." + }, + "exportingPersonalVaultTitle": { + "message": "Kişisel Kasayı Dışa Aktarma" + }, + "exportingPersonalVaultDescription": { + "message": "Yalnızca $EMAIL$ ile ilişkili kişisel kasa öğeleri dışa aktarılacaktır. Kuruluş kasası öğeleri dahil edilmeyecektir.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "Hata" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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": "Rastgele" + }, + "randomWord": { + "message": "Rastgele kelime" + }, + "websiteName": { + "message": "Web sitesi adı" + }, + "whatWouldYouLikeToGenerate": { + "message": "Ne oluşturmak istersiniz?" + }, + "passwordType": { + "message": "Parola türü" + }, + "service": { + "message": "Servis" + } +} diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json new file mode 100644 index 0000000000..b0d8ecd981 --- /dev/null +++ b/apps/browser/src/_locales/uk/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden - це захищений і безкоштовний менеджер паролів для всіх ваших пристроїв.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Для доступу до сховища увійдіть в обліковий запис, або створіть новий." + }, + "createAccount": { + "message": "Створити обліковий запис" + }, + "login": { + "message": "Увійти" + }, + "enterpriseSingleSignOn": { + "message": "Єдиний корпоративний вхід (SSO)" + }, + "cancel": { + "message": "Скасувати" + }, + "close": { + "message": "Закрити" + }, + "submit": { + "message": "Відправити" + }, + "emailAddress": { + "message": "Адреса е-пошти" + }, + "masterPass": { + "message": "Головний пароль" + }, + "masterPassDesc": { + "message": "Головний пароль використовується для доступу до вашого сховища. Дуже важливо, щоб ви запам'ятали його. Якщо ви забудете головний пароль, його неможливо буде відновити." + }, + "masterPassHintDesc": { + "message": "Якщо ви забудете головний пароль, підказка може допомогти вам згадати його." + }, + "reTypeMasterPass": { + "message": "Введіть головний пароль ще раз" + }, + "masterPassHint": { + "message": "Підказка для головного пароля (необов'язково)" + }, + "tab": { + "message": "Вкладка" + }, + "myVault": { + "message": "Моє сховище" + }, + "tools": { + "message": "Інструменти" + }, + "settings": { + "message": "Налаштування" + }, + "currentTab": { + "message": "Поточна вкладка" + }, + "copyPassword": { + "message": "Копіювати пароль" + }, + "copyNote": { + "message": "Копіювати нотатку" + }, + "copyUri": { + "message": "Копіювати URI" + }, + "copyUsername": { + "message": "Копіювати ім'я користувача" + }, + "copyNumber": { + "message": "Копіювати номер" + }, + "copySecurityCode": { + "message": "Копіювати код безпеки" + }, + "autoFill": { + "message": "Автозаповнення" + }, + "generatePasswordCopied": { + "message": "Генерувати пароль (з копіюванням)" + }, + "copyElementIdentifier": { + "message": "Копіювати назву власного поля" + }, + "noMatchingLogins": { + "message": "Немає відповідних записів." + }, + "unlockVaultMenu": { + "message": "Розблокуйте сховище" + }, + "loginToVaultMenu": { + "message": "Увійдіть до сховища" + }, + "autoFillInfo": { + "message": "Для поточної вкладки браузера немає записів автозаповнення." + }, + "addLogin": { + "message": "Додати запис" + }, + "addItem": { + "message": "Додати запис" + }, + "passwordHint": { + "message": "Підказка для пароля" + }, + "enterEmailToGetHint": { + "message": "Введіть свою адресу е-пошти, щоб отримати підказку для головного пароля." + }, + "getMasterPasswordHint": { + "message": "Отримати підказку для головного пароля" + }, + "continue": { + "message": "Продовжити" + }, + "sendVerificationCode": { + "message": "Надіслати код підтвердження е-поштою" + }, + "sendCode": { + "message": "Надіслати код" + }, + "codeSent": { + "message": "Код надіслано" + }, + "verificationCode": { + "message": "Код підтвердження" + }, + "confirmIdentity": { + "message": "Підтвердьте свої облікові дані для продовження." + }, + "account": { + "message": "Обліковий запис" + }, + "changeMasterPassword": { + "message": "Змінити головний пароль" + }, + "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." + }, + "twoStepLogin": { + "message": "Двоетапна перевірка" + }, + "logOut": { + "message": "Вийти" + }, + "about": { + "message": "Про розширення" + }, + "version": { + "message": "Версія" + }, + "save": { + "message": "Зберегти" + }, + "move": { + "message": "Перемістити" + }, + "addFolder": { + "message": "Додати теку" + }, + "name": { + "message": "Назва" + }, + "editFolder": { + "message": "Редагувати теку" + }, + "deleteFolder": { + "message": "Видалити теку" + }, + "folders": { + "message": "Теки" + }, + "noFolders": { + "message": "Немає тек." + }, + "helpFeedback": { + "message": "Допомога і зворотній зв'язок" + }, + "sync": { + "message": "Синхронізація" + }, + "syncVaultNow": { + "message": "Синхронізувати зараз" + }, + "lastSync": { + "message": "Остання синхронізація:" + }, + "passGen": { + "message": "Генератор паролів" + }, + "generator": { + "message": "Генератор", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Автоматичне генерування стійких, унікальних паролів." + }, + "bitWebVault": { + "message": "Веб сховище Bitwarden" + }, + "importItems": { + "message": "Імпорт записів" + }, + "select": { + "message": "Обрати" + }, + "generatePassword": { + "message": "Генерувати пароль" + }, + "regeneratePassword": { + "message": "Генерувати новий" + }, + "options": { + "message": "Додатково" + }, + "length": { + "message": "Довжина" + }, + "uppercase": { + "message": "Верхній регістр (A-Z)" + }, + "lowercase": { + "message": "Нижній регістр (a-z)" + }, + "numbers": { + "message": "Числа (0-9)" + }, + "specialCharacters": { + "message": "Спеціальні символи (!@#$%^&*)" + }, + "numWords": { + "message": "Кількість слів" + }, + "wordSeparator": { + "message": "Розділювач слів" + }, + "capitalize": { + "message": "Великі літери", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Включити число" + }, + "minNumbers": { + "message": "Мінімум цифр" + }, + "minSpecial": { + "message": "Мінімум спеціальних символів" + }, + "avoidAmbChar": { + "message": "Уникати неоднозначних символів" + }, + "searchVault": { + "message": "Пошук" + }, + "edit": { + "message": "Змінити" + }, + "view": { + "message": "Перегляд" + }, + "noItemsInList": { + "message": "Немає записів." + }, + "itemInformation": { + "message": "Інформація про запис" + }, + "username": { + "message": "Ім'я користувача" + }, + "password": { + "message": "Пароль" + }, + "passphrase": { + "message": "Парольна фраза" + }, + "favorite": { + "message": "Обране" + }, + "notes": { + "message": "Нотатки" + }, + "note": { + "message": "Нотатка" + }, + "editItem": { + "message": "Зміна запису" + }, + "folder": { + "message": "Тека" + }, + "deleteItem": { + "message": "Видалити запис" + }, + "viewItem": { + "message": "Перегляд запису" + }, + "launch": { + "message": "Перейти" + }, + "website": { + "message": "Вебсайт" + }, + "toggleVisibility": { + "message": "Змінити видимість" + }, + "manage": { + "message": "Керування" + }, + "other": { + "message": "Інше" + }, + "rateExtension": { + "message": "Оцінити розширення" + }, + "rateExtensionDesc": { + "message": "Будь ласка, подумайте про те, щоб допомогти нам хорошим відгуком!" + }, + "browserNotSupportClipboard": { + "message": "Ваш браузер не підтримує копіювання даних в буфер обміну. Скопіюйте вручну." + }, + "verifyIdentity": { + "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": "Неправильний головний пароль" + }, + "vaultTimeout": { + "message": "Час очікування сховища" + }, + "lockNow": { + "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 години" + }, + "onLocked": { + "message": "При блокуванні системи" + }, + "onRestart": { + "message": "При перезапуску браузера" + }, + "never": { + "message": "Ніколи" + }, + "security": { + "message": "Безпека" + }, + "errorOccurred": { + "message": "Сталася помилка" + }, + "emailRequired": { + "message": "Необхідно вказати адресу е-пошти." + }, + "invalidEmail": { + "message": "Неправильна адреса е-пошти." + }, + "masterPassRequired": { + "message": "Потрібен головний пароль." + }, + "masterPassLength": { + "message": "Довжина головного пароля повинна бути не менше 8 символів." + }, + "masterPassDoesntMatch": { + "message": "Підтвердження головного пароля не збігається." + }, + "newAccountCreated": { + "message": "Ваш обліковий запис створений! Тепер ви можете увійти." + }, + "masterPassSent": { + "message": "Ми надіслали вам лист з підказкою для головного пароля." + }, + "verificationCodeRequired": { + "message": "Потрібний код підтвердження." + }, + "invalidVerificationCode": { + "message": "Недійсний код підтвердження" + }, + "valueCopied": { + "message": "$VALUE$ скопійовано", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Не вдається заповнити пароль на цій сторінці. Скопіюйте і вставте ім'я користувача та/або пароль." + }, + "loggedOut": { + "message": "Ви вийшли" + }, + "loginExpired": { + "message": "Тривалість вашого сеансу завершилась." + }, + "logOutConfirmation": { + "message": "Ви дійсно хочете вийти?" + }, + "yes": { + "message": "Так" + }, + "no": { + "message": "Ні" + }, + "unexpectedError": { + "message": "Сталася неочікувана помилка." + }, + "nameRequired": { + "message": "Потрібна назва." + }, + "addedFolder": { + "message": "Додано теку" + }, + "changeMasterPass": { + "message": "Змінити головний пароль" + }, + "changeMasterPasswordConfirmation": { + "message": "Ви можете змінити головний пароль в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "twoStepLoginConfirmation": { + "message": "Двоетапна перевірка робить ваш обліковий запис більш захищеним, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете увімкнути двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "editedFolder": { + "message": "Тека змінена" + }, + "deleteFolderConfirmation": { + "message": "Ви дійсно хочете видалити цю теку?" + }, + "deletedFolder": { + "message": "Теку видалено" + }, + "gettingStartedTutorial": { + "message": "Знайомство" + }, + "gettingStartedTutorialVideo": { + "message": "Перегляньте знайомство, щоб дізнатися про можливості розширення для браузера." + }, + "syncingComplete": { + "message": "Синхронізацію завершено" + }, + "syncingFailed": { + "message": "Не вдалося синхронізувати" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "Запис додано" + }, + "editedItem": { + "message": "Запис змінено" + }, + "deleteItemConfirmation": { + "message": "Ви дійсно хочете перенести до смітника?" + }, + "deletedItem": { + "message": "Запис перенесено до смітника" + }, + "overwritePassword": { + "message": "Перезаписати пароль" + }, + "overwritePasswordConfirmation": { + "message": "Ви дійсно хочете перезаписати поточний пароль?" + }, + "overwriteUsername": { + "message": "Перезаписати ім'я користувача" + }, + "overwriteUsernameConfirmation": { + "message": "Ви дійсно бажаєте перезаписати поточне ім'я користувача?" + }, + "searchFolder": { + "message": "Пошук в теці" + }, + "searchCollection": { + "message": "Пошук в збірках" + }, + "searchType": { + "message": "Пошук за типом" + }, + "noneFolder": { + "message": "Без теки", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Вимкнути сповіщення про новий запис" + }, + "addLoginNotificationDesc": { + "message": "Сповіщення про додавання пароля автоматично пропонує зберегти нові паролі у вашому сховищі під час першого входу." + }, + "dontShowCardsCurrentTab": { + "message": "Не показувати картки на вкладці" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Картки з вашого сховища показано на сторінці поточної вкладки для швидкого доступу." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Не показувати посвідчення на вкладці" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "Чи повинен Bitwarden зберегти цей пароль?" + }, + "notificationAddSave": { + "message": "Зберегти" + }, + "disableChangedPasswordNotification": { + "message": "Вимкнути сповіщення зміненого пароля" + }, + "disableChangedPasswordNotificationDesc": { + "message": "Сповіщення зміненого пароля автоматично запитує вас про оновлення пароля у сховищі, коли виявлено його зміну на вебсайті." + }, + "notificationChangeDesc": { + "message": "Ви хочете оновити цей пароль в Bitwarden?" + }, + "notificationChangeSave": { + "message": "Оновити" + }, + "disableContextMenuItem": { + "message": "Вимкнути в контекстному меню" + }, + "disableContextMenuItemDesc": { + "message": "Можливості контекстного меню забезпечують швидкий доступ до генерування пароля й входу для вебсайту поточної вкладки." + }, + "defaultUriMatchDetection": { + "message": "Типове виявлення збігів URI", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Оберіть типовий спосіб виявлення збігів URI для виконання автозаповнення під час входу." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Змінити колірну тему додатка." + }, + "dark": { + "message": "Темна", + "description": "Dark color" + }, + "light": { + "message": "Світла", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized темна", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "Введіть головний пароль, щоб експортувати дані сховища." + }, + "shared": { + "message": "Спільні" + }, + "learnOrg": { + "message": "Докладніше про організації" + }, + "learnOrgConfirmation": { + "message": "Bitwarden дозволяє вам надавати доступ до записів свого сховища іншим за допомогою облікового запису організації. Бажаєте перейти на веб-сайт bitwarden.com, щоб дізнатися більше?" + }, + "moveToOrganization": { + "message": "Перемістити до організації" + }, + "share": { + "message": "Поділитися" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ переміщено до $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Виберіть організацію, до якої ви бажаєте перемістити цей запис. При переміщенні до організації власність запису передається тій організації. Ви більше не будете єдиним власником цього запису після переміщення." + }, + "learnMore": { + "message": "Докладніше" + }, + "authenticatorKeyTotp": { + "message": "Ключ авторизації (TOTP)" + }, + "verificationCodeTotp": { + "message": "Код підтвердження (TOTP)" + }, + "copyVerificationCode": { + "message": "Копіювати код підтвердження" + }, + "attachments": { + "message": "Вкладення" + }, + "deleteAttachment": { + "message": "Видалити вкладення" + }, + "deleteAttachmentConfirmation": { + "message": "Ви дійсно хочете видалити це вкладення?" + }, + "deletedAttachment": { + "message": "Вкладення видалено" + }, + "newAttachment": { + "message": "Додати нове вкладення" + }, + "noAttachments": { + "message": "Немає вкладень." + }, + "attachmentSaved": { + "message": "Вкладення збережено." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Оберіть файл." + }, + "maxFileSize": { + "message": "Максимальний розмір файлу 500 Мб." + }, + "featureUnavailable": { + "message": "Функція недоступна" + }, + "updateKey": { + "message": "Ви не можете використовувати цю функцію доки не оновите свій ключ шифрування." + }, + "premiumMembership": { + "message": "Преміум статус" + }, + "premiumManage": { + "message": "Керувати статусом" + }, + "premiumManageAlert": { + "message": "Ви можете керувати своїм статусом у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "premiumRefresh": { + "message": "Оновити статус" + }, + "premiumNotCurrentMember": { + "message": "Зараз у вас немає преміум-статусу." + }, + "premiumSignUpAndGet": { + "message": "Підпишіться на преміум-статус і отримайте:" + }, + "ppremiumSignUpStorage": { + "message": "1 ГБ зашифрованого сховища для файлів." + }, + "ppremiumSignUpTwoStep": { + "message": "Додаткові можливості двоетапної перевірки, наприклад, YubiKey, FIDO U2F та Duo." + }, + "ppremiumSignUpReports": { + "message": "Гігієна паролів, здоров'я облікового запису, а також звіти про вразливості даних, щоб зберігати ваше сховище в безпеці." + }, + "ppremiumSignUpTotp": { + "message": "Генератор коду авторизації TOTP (2FA) для входу в сховище." + }, + "ppremiumSignUpSupport": { + "message": "Пріоритетну технічну підтримку." + }, + "ppremiumSignUpFuture": { + "message": "Всі майбутні функції преміум статусу. Їх буде більше!" + }, + "premiumPurchase": { + "message": "Придбати преміум" + }, + "premiumPurchaseAlert": { + "message": "Ви можете придбати преміум статус у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "premiumCurrentMember": { + "message": "У вас преміум статус!" + }, + "premiumCurrentMemberThanks": { + "message": "Дякуємо за підтримку Bitwarden." + }, + "premiumPrice": { + "message": "Всього лише $PRICE$ / за рік!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Оновлення завершено" + }, + "disableAutoTotpCopy": { + "message": "Вимкнути авто-копіювання TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Якщо ваш запис має вкладений ключ авторизації, код підтвердження TOTP автоматично копіюється до буфера обміну щоразу при автозаповненні." + }, + "disableAutoBiometricsPrompt": { + "message": "Не запитувати біометрію при запуску" + }, + "premiumRequired": { + "message": "Необхідний преміум статус" + }, + "premiumRequiredDesc": { + "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 порт комп'ютера. Якщо в нього є кнопка, натисніть її." + }, + "webAuthnNewTab": { + "message": "Щоб почати перевірку WebAuthn 2FA, натисніть кнопку внизу для відкриття нової вкладки і дотримуйтесь зазначених на ній настанов." + }, + "webAuthnNewTabOpen": { + "message": "Відкрити нову вкладку" + }, + "webAuthnAuthenticate": { + "message": "Авторизація WebAuthn" + }, + "loginUnavailable": { + "message": "Вхід недоступний" + }, + "noTwoStepProviders": { + "message": "Для цього облікового запису увімкнено двоетапну перевірку. Однак, жоден з налаштованих провайдерів двоетапної перевірки не підтримується цим браузером." + }, + "noTwoStepProviders2": { + "message": "Будь ласка, скористайтеся підтримуваним браузером (наприклад, Chrome) та/або іншими провайдерами, що краще підтримуються браузерами (наприклад, програма авторизації)." + }, + "twoStepOptions": { + "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, 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": "Коди підтвердження будуть надсилатися на вашу пошту." + }, + "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-адреси середовища збережено." + }, + "enableAutoFillOnPageLoad": { + "message": "Автозаповнення на сторінці" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "При виявленні форми входу виконувати автоматичне її заповнення під час завантаження сторінки." + }, + "experimentalFeature": { + "message": "Це експериментальна функція. При її використанні ви берете ризик на себе." + }, + "defaultAutoFillOnPageLoad": { + "message": "Типове налаштування автозаповнення для записів входу" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "Після увімкнення автозаповнення на сторінці ви можете увімкнути чи вимкнути цю функцію для окремих записів входу. Це налаштування є типовим для записів входу, які не мають окремого налаштування." + }, + "itemAutoFillOnPageLoad": { + "message": "Автозаповнення на сторінці (якщо не увімкнено в налаштуваннях)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Типове налаштування" + }, + "autoFillOnPageLoadYes": { + "message": "Автозаповнення на сторінці" + }, + "autoFillOnPageLoadNo": { + "message": "Не заповнювати автоматично" + }, + "commandOpenPopup": { + "message": "Відкрити сховище у виринаючому вікні" + }, + "commandOpenSidebar": { + "message": "Відкрити сховище у бічній панелі" + }, + "commandAutofillDesc": { + "message": "Автозаповнення останнього використаного запису для цього вебсайту" + }, + "commandGeneratePasswordDesc": { + "message": "Генерувати і копіювати новий випадковий пароль в буфер обміну" + }, + "commandLockVaultDesc": { + "message": "Заблокувати сховище" + }, + "privateModeWarning": { + "message": "Приватний режим - це експериментальна функція і деякі можливості обмежені." + }, + "customFields": { + "message": "Власні поля" + }, + "copyValue": { + "message": "Копіювати значення" + }, + "value": { + "message": "Значення" + }, + "newCustomField": { + "message": "Нове власне поле" + }, + "dragToSort": { + "message": "Перетягніть, щоб відсортувати" + }, + "cfTypeText": { + "message": "Текст" + }, + "cfTypeHidden": { + "message": "Приховано" + }, + "cfTypeBoolean": { + "message": "Логічне значення" + }, + "cfTypeLinked": { + "message": "Пов'язано", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Пов'язане значення", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Натискання поза межами спливаючого вікна для перевірки коду підтвердження в пошті спричинить його закриття. Хочете відкрити його в новому вікні, щоб воно не закрилося?" + }, + "popupU2fCloseMessage": { + "message": "Цей браузер не може обробити U2F запити в цьому виринаючому вікні. Хочете відкрити його у новому вікні, щоб ви змогли увійти з використанням U2F?" + }, + "disableFavicon": { + "message": "Вимкнути піктограми вебсайтів" + }, + "disableFaviconDesc": { + "message": "Впізнавані піктограми вебсайтів додаються біля кожного запису вашого сховища." + }, + "disableBadgeCounter": { + "message": "Вимкнути лічильник значка" + }, + "disableBadgeCounterDesc": { + "message": "Лічильник значка показує кількість записів у сховищі для поточної сторінки." + }, + "cardholderName": { + "message": "Ім'я власника картки" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Тип картки" + }, + "expirationMonth": { + "message": "Місяць завершення" + }, + "expirationYear": { + "message": "Рік завершення" + }, + "expiration": { + "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": "Грудень" + }, + "securityCode": { + "message": "Код безпеки" + }, + "ex": { + "message": "зразок" + }, + "title": { + "message": "Звернення" + }, + "mr": { + "message": "Містер" + }, + "mrs": { + "message": "Місіс" + }, + "ms": { + "message": "Міс" + }, + "dr": { + "message": "Доктор" + }, + "firstName": { + "message": "Ім’я" + }, + "middleName": { + "message": "По батькові" + }, + "lastName": { + "message": "Прізвище" + }, + "fullName": { + "message": "Повне ім'я" + }, + "identityName": { + "message": "Назва" + }, + "company": { + "message": "Компанія" + }, + "ssn": { + "message": "Номер соціального страхування" + }, + "passportNumber": { + "message": "Номер паспорта" + }, + "licenseNumber": { + "message": "Номер ліцензії" + }, + "email": { + "message": "Е-пошта" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адреса" + }, + "address1": { + "message": "Адреса 1" + }, + "address2": { + "message": "Адреса 2" + }, + "address3": { + "message": "Адреса 3" + }, + "cityTown": { + "message": "Місто / Селище" + }, + "stateProvince": { + "message": "Штат / Область" + }, + "zipPostalCode": { + "message": "Поштовий індекс" + }, + "country": { + "message": "Країна" + }, + "type": { + "message": "Тип" + }, + "typeLogin": { + "message": "Вхід" + }, + "typeLogins": { + "message": "Записи входу" + }, + "typeSecureNote": { + "message": "Захищена нотатка" + }, + "typeCard": { + "message": "Картка" + }, + "typeIdentity": { + "message": "Особисті дані" + }, + "passwordHistory": { + "message": "Історія паролів" + }, + "back": { + "message": "Назад" + }, + "collections": { + "message": "Збірки" + }, + "favorites": { + "message": "Обране" + }, + "popOutNewWindow": { + "message": "Відкрити в новому вікні" + }, + "refresh": { + "message": "Оновити" + }, + "cards": { + "message": "Картки" + }, + "identities": { + "message": "Особисті дані" + }, + "logins": { + "message": "Записи входу" + }, + "secureNotes": { + "message": "Захищені нотатки" + }, + "clear": { + "message": "Стерти", + "description": "To clear something out. example: To clear browser history." + }, + "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": "Перемкнути налаштування" + }, + "toggleCurrentUris": { + "message": "Перемкнути поточні URL-адреси", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Поточна URL-адреса", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Організація", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Типи" + }, + "allItems": { + "message": "Всі елементи" + }, + "noPasswordsInList": { + "message": "Немає паролів." + }, + "remove": { + "message": "Вилучити" + }, + "default": { + "message": "Типово" + }, + "dateUpdated": { + "message": "Оновлено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль оновлено", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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": "Встановіть PIN-код для розблокування Bitwarden. Налаштування PIN-коду будуть скинуті, якщо ви коли-небудь повністю вийдете з програми." + }, + "pinRequired": { + "message": "Необхідний PIN-код." + }, + "invalidPin": { + "message": "Неправильний PIN-код." + }, + "unlockWithBiometrics": { + "message": "Розблокувати з біометрією" + }, + "awaitDesktop": { + "message": "Очікується підтвердження з комп'ютера" + }, + "awaitDesktopDesc": { + "message": "Для увімкнення біометрії в браузері, будь ласка, підтвердьте це у програмі Bitwarden на комп'ютері." + }, + "lockWithMasterPassOnRestart": { + "message": "Блокувати головним паролем при перезапуску браузера" + }, + "selectOneCollection": { + "message": "Ви повинні обрати принаймні одну збірку." + }, + "cloneItem": { + "message": "Клонувати запис" + }, + "clone": { + "message": "Клонувати" + }, + "passwordGeneratorPolicyInEffect": { + "message": "На параметри генератора впливають одна чи декілька політик організації." + }, + "vaultTimeoutAction": { + "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": "Запис відновлено" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Вихід скасує всі права доступу до вашого сховища і вимагатиме авторизації після завершення часу очікування. Ви дійсно хочете використати цей параметр?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Підтвердження дії часу очікування" + }, + "autoFillAndSave": { + "message": "Заповнити і зберегти" + }, + "autoFillSuccessAndSavedUri": { + "message": "Запис заповнено і збережено" + }, + "autoFillSuccess": { + "message": "Запис заповнено" + }, + "setMasterPassword": { + "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": "Умови користування та політика приватності не погоджені." + }, + "termsOfService": { + "message": "Умови користування" + }, + "privacyPolicy": { + "message": "Політика приватності" + }, + "hintEqualsPassword": { + "message": "Підказка для пароля не може бути такою самою, як ваш пароль." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Перевірка синхронізації на комп'ютері" + }, + "desktopIntegrationVerificationText": { + "message": "Перевірте, чи програма на комп'ютері показує відбиток: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Інтеграція з браузером не увімкнена" + }, + "desktopIntegrationDisabledDesc": { + "message": "Інтеграція з браузером не увімкнена в програмі Bitwarden на комп'ютері. Увімкніть її в налаштуваннях програми на комп'ютері." + }, + "startDesktopTitle": { + "message": "Запустіть програму Bitwarden на комп'ютері" + }, + "startDesktopDesc": { + "message": "Для можливості розблокування з біометрією необхідно запустити програму Bitwarden на комп'ютері." + }, + "errorEnableBiometricTitle": { + "message": "Не вдається увімкнути біометрію" + }, + "errorEnableBiometricDesc": { + "message": "Дію було скасовано програмою на комп'ютері" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Програма на комп'ютері не схвалила безпечний канал зв'язку. Будь ласка, спробуйте знову" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "З'єднання з комп'ютером перервано" + }, + "nativeMessagingWrongUserDesc": { + "message": "Програма на комп'ютері використовує інший обліковий запис. Переконайтеся, що програма й розширення використовують однаковий обліковий запис." + }, + "nativeMessagingWrongUserTitle": { + "message": "Невідповідність облікових записів" + }, + "biometricsNotEnabledTitle": { + "message": "Біометрію не увімкнено" + }, + "biometricsNotEnabledDesc": { + "message": "Для активації біометрії в браузері необхідно спершу увімкнути біометрію в програмі на комп'ютері." + }, + "biometricsNotSupportedTitle": { + "message": "Біометрія не підтримується" + }, + "biometricsNotSupportedDesc": { + "message": "Біометрія в браузері не підтримується на цьому пристрої." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Дозвіл не надано" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Без дозволу з'єднання з програмою Bitwarden на комп'ютері неможливо використовувати біометрію в розширенні браузера. Спробуйте знову." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Помилка запиту дозволу" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "Цю дію неможливо виконати в бічній панелі. Спробуйте знову в спливному чи окремому вікні." + }, + "personalOwnershipSubmitError": { + "message": "У зв'язку з корпоративною політикою, вам не дозволено зберігати записи до особистого сховища. Змініть налаштування власності на організацію та виберіть серед доступних збірок." + }, + "personalOwnershipPolicyInEffect": { + "message": "Політика організації впливає на ваші параметри власності." + }, + "excludedDomains": { + "message": "Виключені домени" + }, + "excludedDomainsDesc": { + "message": "Bitwarden не запитуватиме про збереження даних входу для цих доменів. Ви повинні оновити сторінку для застосування змін." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ не є дійсним доменом", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "Пошук відправлень", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "Додати відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Текст" + }, + "sendTypeFile": { + "message": "Файл" + }, + "allSends": { + "message": "Усі відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Досягнуто максимальну кількість доступів", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Термін дії завершився" + }, + "pendingDeletion": { + "message": "Очікується видалення" + }, + "passwordProtected": { + "message": "Захищено паролем" + }, + "copySendLink": { + "message": "Копіювати посилання відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Вилучити пароль" + }, + "delete": { + "message": "Видалити" + }, + "removedPassword": { + "message": "Пароль вилучено" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "Вимкнено" + }, + "removePasswordConfirmation": { + "message": "Ви дійсно хочете вилучити пароль?" + }, + "deleteSend": { + "message": "Видалити відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "Який це тип відправлення?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Опис цього відправлення.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 день" + }, + "days": { + "message": "$DAYS$ днів", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Спеціальний" + }, + "maximumAccessCount": { + "message": "Максимальна кількість доступів" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "Деактивувати це відправлення для скасування доступу до нього.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "Копіювати посилання цього відправлення перед збереженням.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст, який ви хочете відправити." + }, + "sendHideText": { + "message": "Приховувати текст цього відправлення.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Поточна кількість доступів" + }, + "createSend": { + "message": "Створити нове відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "Щоб вибрати файл, відкрийте розширення в бічній панелі (якщо можливо) або в новому вікні, натиснувши цей банер." + }, + "sendFirefoxFileWarning": { + "message": "Щоб вибрати файл з використанням Firefox, відкрийте розширення в бічній панелі або в новому вікні, натиснувши цей банер." + }, + "sendSafariFileWarning": { + "message": "Щоб вибрати файл з використанням Safari, відкрийте розширення в новому вікні, натиснувши на цей банер." + }, + "sendFileCalloutHeader": { + "message": "Перед початком" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "Щоб використовувати календарний стиль вибору дати", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "натисніть тут", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "щоб відкріпити ваше вікно.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "Вказано недійсний термін дії." + }, + "deletionDateIsInvalid": { + "message": "Вказано недійсну дату видалення." + }, + "expirationDateAndTimeRequired": { + "message": "Необхідно вказати час і дату терміну дії." + }, + "deletionDateAndTimeRequired": { + "message": "Необхідно вказати час і дату видалення." + }, + "dateParsingError": { + "message": "При збереженні дат видалення і терміну дії виникла помилка." + }, + "hideEmail": { + "message": "Приховувати мою адресу електронної пошти від отримувачів." + }, + "sendOptionsPolicyInEffect": { + "message": "На параметри відправлень впливають одна чи декілька політик організації." + }, + "passwordPrompt": { + "message": "Повторний запит головного пароля" + }, + "passwordConfirmation": { + "message": "Підтвердження головного пароля" + }, + "passwordConfirmationDesc": { + "message": "Ця дія захищена. Щоб продовжити, повторно введіть головний пароль." + }, + "emailVerificationRequired": { + "message": "Необхідно підтвердити е-пошту" + }, + "emailVerificationRequiredDesc": { + "message": "Для використання цієї функції необхідно підтвердити електронну пошту. Ви можете виконати підтвердження у веб сховищі." + }, + "updatedMasterPassword": { + "message": "Головний пароль оновлено" + }, + "updateMasterPassword": { + "message": "Оновити головний пароль" + }, + "updateMasterPasswordWarning": { + "message": "Ваш головний пароль нещодавно був змінений адміністратором організації. Щоб отримати доступ до сховища, ви повинні оновити його зараз. Продовживши, ви вийдете з поточного сеансу, після чого необхідно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматичне розгортання" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Ця організація має корпоративну політику, яка автоматично розгортає вас на скидання пароля. Розгортання дозволятиме адміністраторам організації змінювати ваш головний пароль." + }, + "selectFolder": { + "message": "Обрати теку..." + }, + "ssoCompleteRegistration": { + "message": "Щоб завершити налаштування входу з SSO, встановіть головний пароль для доступу і захисту сховища." + }, + "hours": { + "message": "Годин" + }, + "minutes": { + "message": "Хвилин" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Політики вашої організації впливають на час очікування сховища. Максимальний дозволений час очікування сховища $HOURS$ годин, $MINUTES$ хвилин", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Час очікування сховища перевищує обмеження, встановлені вашою організацією." + }, + "vaultExportDisabled": { + "message": "Експорт сховища вимкнено" + }, + "personalVaultExportPolicyInEffect": { + "message": "Одна чи декілька організаційних політик не дозволяють вам експортувати особисте сховище." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Не вдається ідентифікувати дійсний елемент форми. Спробуйте натомість інспектувати HTML." + }, + "copyCustomFieldNameNotUnique": { + "message": "Не знайдено унікальний ідентифікатор." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ використовує SSO з власним сервером ключів. Головний пароль для учасників цієї організації більше не вимагається.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Покинути організацію" + }, + "removeMasterPassword": { + "message": "Вилучити головний пароль" + }, + "removedMasterPassword": { + "message": "Головний пароль вилучено." + }, + "leaveOrganizationConfirmation": { + "message": "Ви справді хочете покинути цю організацію?" + }, + "leftOrganization": { + "message": "Ви покинули організацію." + }, + "toggleCharacterCount": { + "message": "Перемкнути лічильник символів" + }, + "sessionTimeout": { + "message": "Час вашого сеансу завершився. Поверніться назад і спробуйте увійти знову." + }, + "exportingPersonalVaultTitle": { + "message": "Експортування особистого сховища" + }, + "exportingPersonalVaultDescription": { + "message": "Будуть експортовані лише записи особистого сховища, пов'язані з $EMAIL$. Записи сховища організації не буде включено.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "Помилка" + }, + "regenerateUsername": { + "message": "Повторно генерувати ім'я користувача" + }, + "generateUsername": { + "message": "Генерувати ім'я користувача" + }, + "usernameType": { + "message": "Тип імені користувача" + }, + "plusAddressedEmail": { + "message": "Плюс адреса електронної пошти", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Використовуйте розширені можливості адрес вашого постачальника електронної пошти." + }, + "catchallEmail": { + "message": "Адреса е-пошти Catch-all" + }, + "catchallEmailDesc": { + "message": "Використовуйте свою скриньку вхідних Catch-All власного домену." + }, + "random": { + "message": "Випадково" + }, + "randomWord": { + "message": "Випадкове слово" + }, + "websiteName": { + "message": "Назва вебсайту" + }, + "whatWouldYouLikeToGenerate": { + "message": "Що ви бажаєте згенерувати?" + }, + "passwordType": { + "message": "Тип пароля" + }, + "service": { + "message": "Послуга" + } +} diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json new file mode 100644 index 0000000000..0ee9af993c --- /dev/null +++ b/apps/browser/src/_locales/vi/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Một trình quản lý mật khẩu an toàn và miễn phí cho mọi thiết bị của bạn.", + "description": "Extension description" + }, + "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" + }, + "enterpriseSingleSignOn": { + "message": "Đăng nhập theo tài khoản tổ chức" + }, + "cancel": { + "message": "Hủy bỏ" + }, + "close": { + "message": "Đóng" + }, + "submit": { + "message": "Gửi" + }, + "emailAddress": { + "message": "Địa chỉ Email" + }, + "masterPass": { + "message": "Mật khẩu chính" + }, + "masterPassDesc": { + "message": "Mật khẩu chủ 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ủ của mình. Không thể khôi phục lại mật khẩu chủ 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ủ 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)" + }, + "tab": { + "message": "Thẻ" + }, + "myVault": { + "message": "Hầm của tôi" + }, + "tools": { + "message": "Công cụ" + }, + "settings": { + "message": "Cài đặt" + }, + "currentTab": { + "message": "Thẻ hiện tại" + }, + "copyPassword": { + "message": "Sao chép Mật khẩu" + }, + "copyNote": { + "message": "Sao chép Ghi chú" + }, + "copyUri": { + "message": "Sao chép URL" + }, + "copyUsername": { + "message": "Sao chép tên đăng nhập" + }, + "copyNumber": { + "message": "Sao chép Số" + }, + "copySecurityCode": { + "message": "Sao chép Mã bảo mật" + }, + "autoFill": { + "message": "Tự động điền" + }, + "generatePasswordCopied": { + "message": "Tạo mật khẩu (đã sao chép)" + }, + "copyElementIdentifier": { + "message": "Sao chép Tên trường Tùy chỉnh" + }, + "noMatchingLogins": { + "message": "Không có thông tin đăng nhập phù hợp." + }, + "unlockVaultMenu": { + "message": "Mở khóa bảo mật" + }, + "loginToVaultMenu": { + "message": "Đăng nhập tài khoản bảo mật" + }, + "autoFillInfo": { + "message": "Không có thông tin đăng nhập nào sẵn có để tự động điền vào tab hiện tại." + }, + "addLogin": { + "message": "Thêm một Đăng nhập" + }, + "addItem": { + "message": "Thêm Mục" + }, + "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ủ." + }, + "getMasterPasswordHint": { + "message": "Nhận gợi ý mật khẩu chủ" + }, + "continue": { + "message": "Tiếp tục" + }, + "sendVerificationCode": { + "message": "Gửi mã xác minh tới email của bạn" + }, + "sendCode": { + "message": "Gửi mã" + }, + "codeSent": { + "message": "Đã gửi mã" + }, + "verificationCode": { + "message": "Mã xác nhận" + }, + "confirmIdentity": { + "message": "Xác nhận nhận dạng của bạn để tiếp tục" + }, + "account": { + "message": "Tài khoản" + }, + "changeMasterPassword": { + "message": "Thay đổi mật khẩu chính" + }, + "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 của 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." + }, + "twoStepLogin": { + "message": "Xác thực hai lớp" + }, + "logOut": { + "message": "Đăng xuất" + }, + "about": { + "message": "Thông tin" + }, + "version": { + "message": "Phiên bản" + }, + "save": { + "message": "Lưu" + }, + "move": { + "message": "Chuyển" + }, + "addFolder": { + "message": "Thêm thư mục" + }, + "name": { + "message": "Tên mục" + }, + "editFolder": { + "message": "Chỉnh sửa thư mục" + }, + "deleteFolder": { + "message": "Xóa thư mục" + }, + "folders": { + "message": "Thư mục" + }, + "noFolders": { + "message": "Không có thư mục để liệt kê." + }, + "helpFeedback": { + "message": "Trợ giúp & Phản hồi" + }, + "sync": { + "message": "Đồng bộ" + }, + "syncVaultNow": { + "message": "Đồng bộ Kho mật khẩu ngay" + }, + "lastSync": { + "message": "Lần đồng bộ gần nhất:" + }, + "passGen": { + "message": "Tạo mật khẩu" + }, + "generator": { + "message": "Tạo mật khẩu", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Tự động tạo mật khẩu mạnh mẽ, duy nhất cho đăng nhập của bạn." + }, + "bitWebVault": { + "message": "Hầm bitwarden trên Web" + }, + "importItems": { + "message": "Nhập mục" + }, + "select": { + "message": "Chọn" + }, + "generatePassword": { + "message": "Tạo mật khẩu" + }, + "regeneratePassword": { + "message": "Tạo lại mật khẩu" + }, + "options": { + "message": "Tùy chọn" + }, + "length": { + "message": "Độ dài" + }, + "uppercase": { + "message": "Chữ in hoa (A-Z)" + }, + "lowercase": { + "message": "Chữ in thường (a-z)" + }, + "numbers": { + "message": "Chữ số (0-9)" + }, + "specialCharacters": { + "message": "Ký tự đặc biệt (!@#$%^&*)" + }, + "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ố" + }, + "minNumbers": { + "message": "Số kí tự tối thiểu" + }, + "minSpecial": { + "message": "Số kí tự đặc biệt tối thiểu" + }, + "avoidAmbChar": { + "message": "Tránh các ký tự không rõ ràng" + }, + "searchVault": { + "message": "Tìm kiếm trong kho" + }, + "edit": { + "message": "Sửa" + }, + "view": { + "message": "Xem" + }, + "noItemsInList": { + "message": "Không có mục nào để liệt kê." + }, + "itemInformation": { + "message": "Mục thông tin" + }, + "username": { + "message": "Tên người dùng" + }, + "password": { + "message": "Mật khẩu" + }, + "passphrase": { + "message": "Cụm từ mật khẩu" + }, + "favorite": { + "message": "Yêu thích" + }, + "notes": { + "message": "Ghi chú" + }, + "note": { + "message": "Ghi chú" + }, + "editItem": { + "message": "Chỉnh sửa mục" + }, + "folder": { + "message": "Thư mục" + }, + "deleteItem": { + "message": "Xóa mục" + }, + "viewItem": { + "message": "Xem mục" + }, + "launch": { + "message": "Khởi chạy" + }, + "website": { + "message": "Trang web" + }, + "toggleVisibility": { + "message": "Bật/tắt khả năng hiển thị" + }, + "manage": { + "message": "Quản lý" + }, + "other": { + "message": "Khác" + }, + "rateExtension": { + "message": "Đánh giá tiện ích mở rộng" + }, + "rateExtensionDesc": { + "message": "Xin hãy nhìn nhận và đánh giá tốt cho chúng tôi!" + }, + "browserNotSupportClipboard": { + "message": "Trình duyệt web của bạn không hỗ trợ dễ dàng sao chép bộ nhớ tạm. Bạn có thể sao chép nó theo cách thủ công để thay thế." + }, + "verifyIdentity": { + "message": "Mã xác minh" + }, + "yourVaultIsLocked": { + "message": "Kho của bạn đã bị khóa. Xác minh mật khẩu chính của bạn để mở." + }, + "unlock": { + "message": "Mở khóa" + }, + "loggedInAsOn": { + "message": "Đã đăng nhập là $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ủ không hợp lệ" + }, + "vaultTimeout": { + "message": "Thời Gian Chờ Của Kho" + }, + "lockNow": { + "message": "Khóa ngay" + }, + "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ờ" + }, + "onLocked": { + "message": "Mỗi khi khóa" + }, + "onRestart": { + "message": "Mỗi khi khởi động lại trình duyệt" + }, + "never": { + "message": "Không bao giờ" + }, + "security": { + "message": "Bảo mật" + }, + "errorOccurred": { + "message": "Đã xảy ra lỗi chưa xác đị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ủ là bắt buộc." + }, + "masterPassLength": { + "message": "Mật khẩu chủ phải có ít nhất 8 kí tự." + }, + "masterPassDoesntMatch": { + "message": "Xác nhận mật khẩu chủ 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ủ của bạn." + }, + "verificationCodeRequired": { + "message": "Yêu cầu mã xác nhận." + }, + "invalidVerificationCode": { + "message": "Mã xác minh không đúng" + }, + "valueCopied": { + "message": "$VALUE$ đã sao chép", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Tự động điền thông tin đăng nhập trong hoạt động trên trang này. Bạn có thể thực hiện thủ công bằng cách sao chép/dán thông tin đăng nhập." + }, + "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?" + }, + "yes": { + "message": "Có" + }, + "no": { + "message": "Không" + }, + "unexpectedError": { + "message": "Một lỗi bất ngờ đã xảy ra." + }, + "nameRequired": { + "message": "Tên là bắt buộc." + }, + "addedFolder": { + "message": "Thêm thư mục" + }, + "changeMasterPass": { + "message": "Thay đổi mật khẩu chính" + }, + "changeMasterPasswordConfirmation": { + "message": "Bạn có thể thay đổi mật khẩu chủ trong trang web Bitwarden. Bạn có muốn truy cập bitwarden.com bây giờ?" + }, + "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 trang web Bitwarden. Bạn có muốn ghé thăm bitwarden.com bây giờ?" + }, + "editedFolder": { + "message": "Chỉnh sửa 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" + }, + "gettingStartedTutorial": { + "message": "Hướng dẫn Bắt đầu" + }, + "gettingStartedTutorialVideo": { + "message": "Xem hướng dẫn bắt đầu của chúng tôi để tìm hiểu cách tận dụng tối đa tiện ích mở rộng của trình duyệt." + }, + "syncingComplete": { + "message": "Đồng bộ hoàn tất" + }, + "syncingFailed": { + "message": "Đồng bộ thất bại" + }, + "passwordCopied": { + "message": "Đã sao chép mật khẩu" + }, + "uri": { + "message": "Đường dẫn" + }, + "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" + }, + "addedItem": { + "message": "Đã thêm mục" + }, + "editedItem": { + "message": "Mục được chỉnh sửa" + }, + "deleteItemConfirmation": { + "message": "Bạn có chắc bạn muốn xóa mục này?" + }, + "deletedItem": { + "message": "Đã xóa mục" + }, + "overwritePassword": { + "message": "Ghi đè lên mật khẩu" + }, + "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?" + }, + "searchFolder": { + "message": "Tìm kiếm thư mục" + }, + "searchCollection": { + "message": "Tìm kiếm bộ sưu tập" + }, + "searchType": { + "message": "Tìm mục" + }, + "noneFolder": { + "message": "Không có thư mục", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Vô hiệu thông báo Thêm đăng nhập" + }, + "addLoginNotificationDesc": { + "message": "'Thông báo Thêm đăng nhập' sẽ tự động nhắc bạn lưu các đăng nhập mới vào hầm an toàn của bạn bất cứ khi nào bạn đăng nhập trang web lần đầu tiên." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "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." + }, + "notificationAddDesc": { + "message": "Bạn có cần Bitwarden nhớ giúp bạn mật khẩu này không?" + }, + "notificationAddSave": { + "message": "Vâng, Lưu Ngay" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Bạn có muốn cập nhật mật khẩu này trên Bitwarden không?" + }, + "notificationChangeSave": { + "message": "Yes, Update Now" + }, + "disableContextMenuItem": { + "message": "Tắt tuỳ chọn trong Menu Ngữ Cảnh" + }, + "disableContextMenuItemDesc": { + "message": "Tùy chọn menu ngữ cảnh giúp bạn truy cập nhanh thông tin đăng nhập và tạo mật khẩu cho trang web trong tab mà bạn đang mở." + }, + "defaultUriMatchDetection": { + "message": "Phương thức kiểm tra URI mặc định", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Chọn phương thức mặc định để kiểm tra so sánh URI cho các đăng nhập khi xử lí các hành động như là tự động điền." + }, + "theme": { + "message": "Giao diện" + }, + "themeDesc": { + "message": "Thay đổi màu sắc ứng dụng." + }, + "dark": { + "message": "Tối", + "description": "Dark color" + }, + "light": { + "message": "Sáng", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "exportVault": { + "message": "Xuất Kho" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "CẢNH BÁO", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Xác nhận xuất mật khẩu" + }, + "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." + }, + "exportMasterPassword": { + "message": "Nhập mật khẩu chủ để xuất kho dữ liệu của bạn." + }, + "shared": { + "message": "Đã chia sẻ" + }, + "learnOrg": { + "message": "Xem tổ chức của bạn" + }, + "learnOrgConfirmation": { + "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" + }, + "moveToOrganization": { + "message": "Chuyển tới Tổ chức" + }, + "share": { + "message": "Chia sẻ" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ chuyển tới $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." + }, + "learnMore": { + "message": "Tìm hiểu thêm" + }, + "authenticatorKeyTotp": { + "message": "Khóa xác thực (TOTP)" + }, + "verificationCodeTotp": { + "message": "Mã xác thực (TOTP)" + }, + "copyVerificationCode": { + "message": "Sao chép Mã xác thực" + }, + "attachments": { + "message": "Tệp đính kèm" + }, + "deleteAttachment": { + "message": "Xóa tệp đính kèm" + }, + "deleteAttachmentConfirmation": { + "message": "Bạn có muốn xóa tệp đính kèm này không?" + }, + "deletedAttachment": { + "message": "Đã xoá tệp đính kèm" + }, + "newAttachment": { + "message": "Thêm tệp đính kèm mới" + }, + "noAttachments": { + "message": "Không có tệp đính kèm." + }, + "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." + }, + "featureUnavailable": { + "message": "Tính năng không có sẵn" + }, + "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." + }, + "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 trang web Bitwarden. Bạn có muốn truy cập bitwarden.com 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:" + }, + "ppremiumSignUpStorage": { + "message": "1GB bộ nhớ lưu trữ tập tin được mã hóa." + }, + "ppremiumSignUpTwoStep": { + "message": "Các tùy chọn xác thực hai lớp bổ sung như YubiKey, FIDO U2F và Duo." + }, + "ppremiumSignUpReports": { + "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." + }, + "ppremiumSignUpTotp": { + "message": "Mã xác nhận TOTP (2FA) để đăng nhập vào kho mật khẩu của bạn." + }, + "ppremiumSignUpSupport": { + "message": "Hỗ trợ khách hàng ưu tiên." + }, + "ppremiumSignUpFuture": { + "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 trang web Bitwarden. Bạn có muốn truy cập bitwarden.com 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" + }, + "disableAutoTotpCopy": { + "message": "Vô hiệu hoá tự động sao chép TOTP" + }, + "disableAutoTotpCopyDesc": { + "message": "Nếu đăng nhập của bạn có một khóa xác thực gắn liền với nó, mã xác nhận TOTP sẽ được tự động sao chép vào bộ nhớ tạm của bạn bất cứ khi nào bạn tự động điền thông tin đăng nhập." + }, + "disableAutoBiometricsPrompt": { + "message": "Không nhắc bảo mật sinh trắc học khi khởi chạy" + }, + "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." + }, + "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ó." + }, + "webAuthnNewTab": { + "message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab." + }, + "webAuthnNewTabOpen": { + "message": "Mở thẻ mới" + }, + "webAuthnAuthenticate": { + "message": "Xác thực WebAuthn" + }, + "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, trình duyệt 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 sử dụng trình duyệt web được hỗ trợ (chẳng hạn như Chrome) và/hoặc thêm dịch vụ bổ sung được hỗ trợ tốt hơn trên các trình duyệt web (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" + }, + "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 Authenticator" + }, + "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": "Xác minh với Duo Security cho tổ chức của bạn 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." + }, + "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." + }, + "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." + }, + "enableAutoFillOnPageLoad": { + "message": "Bật Tự động điền vào Tải trang" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "Nếu có một biểu mẫu đăng nhập được phát hiện, thực hiện tự động điền khi trang web tải xong." + }, + "experimentalFeature": { + "message": "Đây là một tính năng thử nghiệm. Sử dụng nó có thể gây ra rủi ro cho bạn." + }, + "defaultAutoFillOnPageLoad": { + "message": "Default autofill setting for login items" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured." + }, + "itemAutoFillOnPageLoad": { + "message": "Tự động điền khi tải trang (nếu được kích hoạt trong Tùy chọn)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "Sử dụng thiết lập mặc định" + }, + "autoFillOnPageLoadYes": { + "message": "Tự động điền khi tải trang" + }, + "autoFillOnPageLoadNo": { + "message": "Không tự động điền khi tải trang" + }, + "commandOpenPopup": { + "message": "Mở popup kho" + }, + "commandOpenSidebar": { + "message": "Mở kho ở thanh bên" + }, + "commandAutofillDesc": { + "message": "Tự động điền thông tin đăng nhập người dùng cho trang web hiện tại." + }, + "commandGeneratePasswordDesc": { + "message": "Tạo và sao chép một mật khẩu ngẫu nhiên mới vào bộ nhớ tạm." + }, + "commandLockVaultDesc": { + "message": "Khóa bảo mật" + }, + "privateModeWarning": { + "message": "Hỗ trợ cho chế độ riêng tư đang được thử nghiệm và hạn chế một số tính năng." + }, + "customFields": { + "message": "Trường tùy chỉnh" + }, + "copyValue": { + "message": "Sao chép giá trị" + }, + "value": { + "message": "Giá trị" + }, + "newCustomField": { + "message": "Trường tùy chỉnh mới" + }, + "dragToSort": { + "message": "Kéo để sắp xếp" + }, + "cfTypeText": { + "message": "Văn bản" + }, + "cfTypeHidden": { + "message": "Ẩn" + }, + "cfTypeBoolean": { + "message": "Đúng/Sai" + }, + "cfTypeLinked": { + "message": "Đã liên kết", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "Giá trị liên kết", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "Nhấp bên ngoài popup để xem mã xác thực trong email của bạn sẽ làm cho popup này đóng lại. Bạn có muốn mở popup này trong một cửa sổ mới để nó không bị đóng?" + }, + "popupU2fCloseMessage": { + "message": "Trình duyệt này không thể xử lý các yêu cầu U2F trong cửa sổ popup này. Bạn có muốn mở popup này trong cửa sổ mới để bạn có thể đăng nhập thông qua U2F?" + }, + "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." + }, + "disableBadgeCounter": { + "message": "Hủy bộ đếm số" + }, + "disableBadgeCounterDesc": { + "message": "Bộ đếm số chỉ ra bao nhiêu tài khoản đăng nhập bạn có với trang hiện tại." + }, + "cardholderName": { + "message": "Tên chủ thẻ" + }, + "number": { + "message": "Số" + }, + "brand": { + "message": "Thương hiệu" + }, + "expirationMonth": { + "message": "Tháng Hết Hạn" + }, + "expirationYear": { + "message": "Năm hết hạn" + }, + "expiration": { + "message": "Hết hạn" + }, + "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" + }, + "securityCode": { + "message": "Mã bảo mật" + }, + "ex": { + "message": "Ví dụ:" + }, + "title": { + "message": "Tiêu đề" + }, + "mr": { + "message": "Ông" + }, + "mrs": { + "message": "Bà" + }, + "ms": { + "message": "Chị" + }, + "dr": { + "message": "Bác sĩ" + }, + "firstName": { + "message": "Tên" + }, + "middleName": { + "message": "Tên đệm" + }, + "lastName": { + "message": "Họ" + }, + "fullName": { + "message": "Họ và tên" + }, + "identityName": { + "message": "Tên nhận dạng" + }, + "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ỉ" + }, + "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" + }, + "type": { + "message": "Loại" + }, + "typeLogin": { + "message": "Đăng nhập" + }, + "typeLogins": { + "message": "Đăng nhập" + }, + "typeSecureNote": { + "message": "Lưu ý an toàn" + }, + "typeCard": { + "message": "Thẻ" + }, + "typeIdentity": { + "message": "Danh tính" + }, + "passwordHistory": { + "message": "Lịch sử Mật khẩu" + }, + "back": { + "message": "Quay lại" + }, + "collections": { + "message": "Các Bộ Sưu Tập" + }, + "favorites": { + "message": "Yêu thích" + }, + "popOutNewWindow": { + "message": "Mở trong cửa sổ mới" + }, + "refresh": { + "message": "Làm mới" + }, + "cards": { + "message": "Thẻ" + }, + "identities": { + "message": "Danh tính" + }, + "logins": { + "message": "Đăng nhập" + }, + "secureNotes": { + "message": "Ghi chú bảo mật" + }, + "clear": { + "message": "Xoá", + "description": "To clear something out. example: To clear browser history." + }, + "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$ 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" + }, + "toggleCurrentUris": { + "message": "Bật/tắt URI hiện tại", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "URI hiện tại", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Tổ chức", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Các loại" + }, + "allItems": { + "message": "Tất cả các mục" + }, + "noPasswordsInList": { + "message": "Không có mật khẩu để liệt kê." + }, + "remove": { + "message": "Xoá" + }, + "default": { + "message": "Mặc định" + }, + "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" + }, + "neverLockWarning": { + "message": "Bạn có chắc bạn muốn sử dụng tùy chọn \"Không bao giờ\"? Đặt các tùy chọn khóa về \"Không bao giờ\" sẽ lưu key mã hóa kho của ngay trên thiết bị của bạn. Nếu bạn sử dụng tùy chọn này, bạn nên chắc chắn là thiết bị bạn đang được bảo vệ." + }, + "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": "Mật khẩu chính đơn giản" + }, + "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ệ." + }, + "unlockWithBiometrics": { + "message": "Mở khóa bằng sinh trắc học" + }, + "awaitDesktop": { + "message": "Đợi xác nhận từ máy tính" + }, + "awaitDesktopDesc": { + "message": "Vui lòng xác nhận sử dụng sinh trắc học với ứng dụng Bitwarden trên máy tính." + }, + "lockWithMasterPassOnRestart": { + "message": "Khóa với mật khẩu chính khi trình duyệt khởi động lại" + }, + "selectOneCollection": { + "message": "Bạn phải chọn ít nhất một bộ sưu tập." + }, + "cloneItem": { + "message": "Tại bản sao của mục" + }, + "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ờ" + }, + "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" + }, + "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ờ" + }, + "autoFillAndSave": { + "message": "Tự động điền và Lưu" + }, + "autoFillSuccessAndSavedUri": { + "message": "Tự động điền và Lưu URI" + }, + "autoFillSuccess": { + "message": "Tự động điền" + }, + "setMasterPassword": { + "message": "Đặt mật khẩu chính" + }, + "masterPasswordPolicyInEffect": { + "message": "Tổ chức của bạn yêu cầu mật khẩu chính của bạn phải đáp ứng các yêu cầu sau:" + }, + "policyInEffectMinComplexity": { + "message": "Điểm số phức tạp là", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Độ dài tối thiểu là $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Chứa chữ cái in hoa" + }, + "policyInEffectLowercase": { + "message": "Chứa một hoặc nhiều kí tự viết thường" + }, + "policyInEffectNumbers": { + "message": "Chứa một hoặc nhiều chữ số" + }, + "policyInEffectSpecial": { + "message": "Chứa ký tự đặc biệt $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Mật khẩu chính bạn chọn không đáp ứng yêu cầu." + }, + "acceptPolicies": { + "message": "Bạn đồng ý với những điều sau khi nhấn chọn ô này:" + }, + "acceptPoliciesError": { + "message": "Điều khoản sử dụng và Chính sách quyền riêng tư chưa được đồng ý." + }, + "termsOfService": { + "message": "Điều khoản sử dụng" + }, + "privacyPolicy": { + "message": "Chính sách quyền riêng tư" + }, + "hintEqualsPassword": { + "message": "Lời nhắc mật khẩu không được giống mật khẩu của bạn" + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Xác minh đồng bộ máy tính" + }, + "desktopIntegrationVerificationText": { + "message": "Vui lòng xác minh rằng ứng dụng trên máy tính thấy vân tay này:" + }, + "desktopIntegrationDisabledTitle": { + "message": "Tích hợp trình duyệt chưa được kích hoạt" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Mở ứng dụng Bitwarden trên máy tính" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + }, + "errorEnableBiometricTitle": { + "message": "Không thể bật nhận dạng sinh trắc học" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Tài khoản không đúng" + }, + "biometricsNotEnabledTitle": { + "message": "Nhận dạng sinh trắc học chưa được bật" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Nhận dạng sinh trắc học không được hỗ trợ" + }, + "biometricsNotSupportedDesc": { + "message": "Nhận dạng sinh trắc học trên trình duyệt không được hỗ trợ trên thiết bị này" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Quyền chưa được cấp" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "Lỗi yêu cầu quyền" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + }, + "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." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "addSend": { + "message": "Thêm Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "Văn bản" + }, + "sendTypeFile": { + "message": "Tập tin" + }, + "allSends": { + "message": "Toàn bộ Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "Đã hết hạn" + }, + "pendingDeletion": { + "message": "Đang chờ xóa" + }, + "passwordProtected": { + "message": "Mật khẩu đã được bảo vệ" + }, + "copySendLink": { + "message": "Sao chép liên kết Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Đã xóa mật khẩu" + }, + "delete": { + "message": "Xóa" + }, + "removedPassword": { + "message": "Xóa mật khẩu" + }, + "deletedSend": { + "message": "Đã xóa 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." + }, + "disabled": { + "message": "Đã tắt" + }, + "removePasswordConfirmation": { + "message": "Bạn có chắc chắn muốn xóa mật khẩu này?" + }, + "deleteSend": { + "message": "Xóa Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "sendTypeHeader": { + "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." + }, + "sendNameDesc": { + "message": "Một tên gợi nhớ để mô tả về Send này.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "message": "Tập tin bạn muốn gửi." + }, + "deletionDate": { + "message": "Ngày xóa" + }, + "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." + }, + "oneDay": { + "message": "1 ngày" + }, + "days": { + "message": "#DAYS# ngày", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "Tùy chỉnh" + }, + "maximumAccessCount": { + "message": "Số lượng truy cập tối đa" + }, + "maximumAccessCountDesc": { + "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." + }, + "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." + }, + "sendDisableDesc": { + "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." + }, + "sendShareDesc": { + "message": "Copy this Send's link to clipboard upon save.", + "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." + }, + "sendHideText": { + "message": "Hide this Send's text by default.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "createSend": { + "message": "Create New 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" + }, + "sendDisabled": { + "message": "Đã tắt gửi", + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + }, + "sendFirefoxFileWarning": { + "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + }, + "sendSafariFileWarning": { + "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + }, + "sendFileCalloutHeader": { + "message": "Trước khi bạn bắt đầu" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "To use a calendar style date picker", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "nhấn vào đây", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "to pop out your window.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "passwordPrompt": { + "message": "Nhắc lại mật khẩu chính" + }, + "passwordConfirmation": { + "message": "Xác nhận mật khẩu chính" + }, + "passwordConfirmationDesc": { + "message": "Hành động này được bảo vệ. Để tiếp tục, vui lòng nhập lại mật khẩu chính của bạn." + }, + "emailVerificationRequired": { + "message": "Yêu cầu xác nhận danh tính qua email" + }, + "emailVerificationRequiredDesc": { + "message": "Bạn phải xác nhận email để sử dụng tính năng này. Bạn có thể xác minh email trên web." + }, + "updatedMasterPassword": { + "message": "Mật khẩu chính đã cập nhật" + }, + "updateMasterPassword": { + "message": "Cập nhật mật khẩu chính" + }, + "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." + }, + "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." + }, + "selectFolder": { + "message": "Chọn thư mục" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "hours": { + "message": "Giờ" + }, + "minutes": { + "message": "Phút" + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Xuất mật khẩu đăng tắt" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + }, + "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": "Rời tổ chức" + }, + "removeMasterPassword": { + "message": "Xóa mật khẩu chính" + }, + "removedMasterPassword": { + "message": "Đã xóa mật khẩu chính" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "toggleCharacterCount": { + "message": "Toggle character count" + }, + "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" + } + } + }, + "error": { + "message": "Error" + }, + "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" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json new file mode 100644 index 0000000000..4155b19928 --- /dev/null +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -0,0 +1,1817 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - 免费密码管理器", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden 是一个安全且免费的跨平台密码管理器。", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "登录或新建一个帐号来访问你的密码库。" + }, + "createAccount": { + "message": "新建帐号" + }, + "login": { + "message": "登录" + }, + "enterpriseSingleSignOn": { + "message": "企业单点登录(SSO)" + }, + "cancel": { + "message": "取消" + }, + "close": { + "message": "关闭" + }, + "submit": { + "message": "提交" + }, + "emailAddress": { + "message": "电子邮件地址" + }, + "masterPass": { + "message": "主密码" + }, + "masterPassDesc": { + "message": "主密码是您访问密码库的唯一密码。它非常重要,请您不要忘记。一旦忘记,无任何办法恢复此密码。" + }, + "masterPassHintDesc": { + "message": "主密码提示可以在你忘记密码时帮你回忆起来。" + }, + "reTypeMasterPass": { + "message": "重新输入主密码" + }, + "masterPassHint": { + "message": "主密码提示 (可选)" + }, + "tab": { + "message": "标签页" + }, + "myVault": { + "message": "密码库" + }, + "tools": { + "message": "工具" + }, + "settings": { + "message": "设置" + }, + "currentTab": { + "message": "当前标签" + }, + "copyPassword": { + "message": "复制密码" + }, + "copyNote": { + "message": "复制备注" + }, + "copyUri": { + "message": "复制 URI" + }, + "copyUsername": { + "message": "复制用户名" + }, + "copyNumber": { + "message": "复制号码" + }, + "copySecurityCode": { + "message": "复制安全码" + }, + "autoFill": { + "message": "自动填充" + }, + "generatePasswordCopied": { + "message": "生成密码 (并复制)" + }, + "copyElementIdentifier": { + "message": "Copy Custom Field Name" + }, + "noMatchingLogins": { + "message": "无匹配的登录信息。" + }, + "vaultLocked": { + "message": "密码库已锁定" + }, + "vaultLoggedOut": { + "message": "密码库已注销" + }, + "autoFillInfo": { + "message": "没有可以自动填充当前浏览器标签页的登录项目。" + }, + "addLogin": { + "message": "添加登录信息" + }, + "addItem": { + "message": "添加项目" + }, + "passwordHint": { + "message": "密码提示" + }, + "enterEmailToGetHint": { + "message": "请输入您帐号的 Email 地址来接收主密码提示。" + }, + "getMasterPasswordHint": { + "message": "获取主密码提示" + }, + "continue": { + "message": "继续" + }, + "verificationCode": { + "message": "验证码" + }, + "account": { + "message": "账户" + }, + "changeMasterPassword": { + "message": "修改主密码" + }, + "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." + }, + "twoStepLogin": { + "message": "两步登录" + }, + "logOut": { + "message": "注销" + }, + "about": { + "message": "关于" + }, + "version": { + "message": "版本" + }, + "save": { + "message": "保存" + }, + "move": { + "message": "移动" + }, + "addFolder": { + "message": "添加文件夹" + }, + "name": { + "message": "名称" + }, + "editFolder": { + "message": "编辑文件夹" + }, + "deleteFolder": { + "message": "删除文件夹" + }, + "folders": { + "message": "文件夹" + }, + "noFolders": { + "message": "没有可列出的文件夹。" + }, + "helpFeedback": { + "message": "帮助和反馈" + }, + "sync": { + "message": "同步" + }, + "syncVaultNow": { + "message": "立即同步密码库" + }, + "lastSync": { + "message": "上次同步:" + }, + "passGen": { + "message": "密码生成器" + }, + "generator": { + "message": "生成器", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "自动生成安全可靠唯一的登录密码。" + }, + "bitWebVault": { + "message": "Bitwarden 网页版密码库" + }, + "importItems": { + "message": "导入项目" + }, + "select": { + "message": "选择" + }, + "generatePassword": { + "message": "生成密码" + }, + "regeneratePassword": { + "message": "重新生成密码" + }, + "options": { + "message": "选项" + }, + "length": { + "message": "长度" + }, + "numWords": { + "message": "单词数" + }, + "wordSeparator": { + "message": "单词分隔符" + }, + "capitalize": { + "message": "大写", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "包含数字" + }, + "minNumbers": { + "message": "数字最少个数" + }, + "minSpecial": { + "message": "符号最少个数" + }, + "avoidAmbChar": { + "message": "避免易混淆的字符" + }, + "searchVault": { + "message": "搜索密码库" + }, + "edit": { + "message": "编辑" + }, + "view": { + "message": "查看" + }, + "noItemsInList": { + "message": "没有可列出的项目。" + }, + "itemInformation": { + "message": "项目信息" + }, + "username": { + "message": "用户名" + }, + "password": { + "message": "密码" + }, + "passphrase": { + "message": "密码短语" + }, + "favorite": { + "message": "收藏" + }, + "notes": { + "message": "备注" + }, + "note": { + "message": "备注" + }, + "editItem": { + "message": "编辑项目" + }, + "folder": { + "message": "文件夹" + }, + "deleteItem": { + "message": "删除项目" + }, + "viewItem": { + "message": "查看项目" + }, + "launch": { + "message": "启动" + }, + "website": { + "message": "网站" + }, + "toggleVisibility": { + "message": "切换可见性" + }, + "manage": { + "message": "管理" + }, + "other": { + "message": "其他" + }, + "rateExtension": { + "message": "为本扩展打分" + }, + "rateExtensionDesc": { + "message": "请给我们好评!" + }, + "browserNotSupportClipboard": { + "message": "您的浏览器不支持剪贴板简单复制,请手动复制。" + }, + "verifyMasterPassword": { + "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": "无效的主密码" + }, + "vaultTimeout": { + "message": "密码库超时" + }, + "lockNow": { + "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 小时" + }, + "onLocked": { + "message": "系统锁定时" + }, + "onRestart": { + "message": "重启浏览器时" + }, + "never": { + "message": "从不" + }, + "security": { + "message": "安全" + }, + "errorOccurred": { + "message": "发生了一个错误" + }, + "emailRequired": { + "message": "必须填写电子邮件地址。" + }, + "invalidEmail": { + "message": "无效的电子邮件地址。" + }, + "masterPassRequired": { + "message": "必须填写主密码。" + }, + "masterPassLength": { + "message": "主密码至少需要 8 个字符。" + }, + "masterPassDoesntMatch": { + "message": "两次填写的主密码不一致。" + }, + "newAccountCreated": { + "message": "已经为您建立了账户,您可以登录了。" + }, + "masterPassSent": { + "message": "我们已经为您发送了包含主密码提示的邮件。" + }, + "verificationCodeRequired": { + "message": "必须填写验证码。" + }, + "valueCopied": { + "message": "$VALUE$ 已复制", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "无法在此页面上自动填充所选项目。请改为手工复制并粘贴。" + }, + "loggedOut": { + "message": "已注销" + }, + "loginExpired": { + "message": "您的登录会话已过期。" + }, + "logOutConfirmation": { + "message": "您确定要注销吗?" + }, + "yes": { + "message": "是" + }, + "no": { + "message": "否" + }, + "unexpectedError": { + "message": "发生意外错误。" + }, + "nameRequired": { + "message": "必须填写名称。" + }, + "addedFolder": { + "message": "文件夹已添加" + }, + "changeMasterPass": { + "message": "修改主密码" + }, + "changeMasterPasswordConfirmation": { + "message": "您可以在 bitwarden.com 网页版密码库修改主密码。您现在要访问这个网站吗?" + }, + "twoStepLoginConfirmation": { + "message": "两步登录要求您从其他设备(例如安全钥匙、验证器应用、短信、电话或者电子邮件)来验证你的登录,这能使您的账户更加安全。两步登录可以在 bitwarden.com 网页版密码库启用。您现在要访问这个网站吗?" + }, + "editedFolder": { + "message": "文件夹已编辑" + }, + "deleteFolderConfirmation": { + "message": "您确定要删除此文件夹吗?" + }, + "deletedFolder": { + "message": "文件夹已删除" + }, + "gettingStartedTutorial": { + "message": "入门教程" + }, + "gettingStartedTutorialVideo": { + "message": "观看我们的入门教程,了解如何充分利用浏览器扩展。" + }, + "syncingComplete": { + "message": "同步完成" + }, + "syncingFailed": { + "message": "同步失败" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "项目已添加" + }, + "editedItem": { + "message": "项目已编辑" + }, + "deleteItemConfirmation": { + "message": "您确定要删除此项目吗?" + }, + "deletedItem": { + "message": "发送项目到回收站" + }, + "overwritePassword": { + "message": "覆盖密码" + }, + "overwritePasswordConfirmation": { + "message": "您确定要覆盖当前密码吗?" + }, + "searchFolder": { + "message": "搜索文件夹" + }, + "searchCollection": { + "message": "搜索集合" + }, + "searchType": { + "message": "搜索类型" + }, + "noneFolder": { + "message": "默认文件夹", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "禁用添加登录项的提醒" + }, + "addLoginNotificationDesc": { + "message": "当您第一次登录时,\"添加登录提醒\" 会自动提醒您在密码库里保存新的登录信息。" + }, + "dontShowCardsCurrentTab": { + "message": "标签页上不显示支付卡" + }, + "dontShowCardsCurrentTabDesc": { + "message": "密码库中的支付卡项目会在 “当前标签” 页面列出,以便于自动填充。" + }, + "dontShowIdentitiesCurrentTab": { + "message": "标签页上不显示身份" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "希望 Bitwarden 为您保存这个密码吗?" + }, + "notificationAddSave": { + "message": "是,现在保存" + }, + "notificationNeverSave": { + "message": "永久忽略此网站" + }, + "disableChangedPasswordNotification": { + "message": "禁用密码变更通知" + }, + "disableChangedPasswordNotificationDesc": { + "message": "检测到您已变更网站上的密码时,“密码变更通知” 自动提醒您更新密码库中相应项的密码。" + }, + "notificationChangeDesc": { + "message": "是否要在 Bitwarden 中更新此密码?" + }, + "notificationChangeSave": { + "message": "是,立即更新" + }, + "disableContextMenuItem": { + "message": "关闭上下文菜单选项" + }, + "disableContextMenuItemDesc": { + "message": "上下文菜单选项可以让您快速访问密码生成器,也可以登陆当前标签的网站。" + }, + "defaultUriMatchDetection": { + "message": "默认的 URI 匹配检测方式", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "选择在执行诸如自动填充之类的操作时对登录进行 URI 匹配检测的默认方式。" + }, + "theme": { + "message": "主题" + }, + "themeDesc": { + "message": "更改本应用程序的颜色主题。" + }, + "dark": { + "message": "暗", + "description": "Dark color" + }, + "light": { + "message": "亮", + "description": "Light color" + }, + "solarizedDark": { + "message": "过曝暗", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "输入主密码来导出你的密码库。" + }, + "shared": { + "message": "已共享" + }, + "learnOrg": { + "message": "了解组织" + }, + "learnOrgConfirmation": { + "message": "Bitwarden 允许您使用组织与他人共享您的密码库项目。要访问 bitwarden.com 网站以了解更多内容吗?" + }, + "moveToOrganization": { + "message": "移动到组织" + }, + "share": { + "message": "共享" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ 已移动到 $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "选择一个您想将此项目移至的组织。移动到组织会将该项目的所有权转让给该组织。移动后,您将不再是此项目的直接所有者。" + }, + "learnMore": { + "message": "进一步了解" + }, + "authenticatorKeyTotp": { + "message": "验证器密钥 (TOTP)" + }, + "verificationCodeTotp": { + "message": "验证码 (TOTP)" + }, + "copyVerificationCode": { + "message": "复制验证码" + }, + "attachments": { + "message": "附件" + }, + "deleteAttachment": { + "message": "删除附件" + }, + "deleteAttachmentConfirmation": { + "message": "您确定要删除此附件吗?" + }, + "deletedAttachment": { + "message": "附件已删除" + }, + "newAttachment": { + "message": "添加新附件" + }, + "noAttachments": { + "message": "没有附件。" + }, + "attachmentSaved": { + "message": "附件已保存。" + }, + "file": { + "message": "文件" + }, + "selectFile": { + "message": "选择一个文件。" + }, + "maxFileSize": { + "message": "文件最大为 500 MB。" + }, + "featureUnavailable": { + "message": "功能不可用" + }, + "updateKey": { + "message": "在您更新加密密钥前,您不能使用此功能。" + }, + "premiumMembership": { + "message": "高级会员" + }, + "premiumManage": { + "message": "管理会员资格" + }, + "premiumManageAlert": { + "message": "您可以在 bitwarden.com 网页版密码库管理您的会员资格。现在要访问吗?" + }, + "premiumRefresh": { + "message": "刷新会员资格" + }, + "premiumNotCurrentMember": { + "message": "您目前不是高级会员。" + }, + "premiumSignUpAndGet": { + "message": "注册高级会员将获得:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB 文件附件加密存储。" + }, + "ppremiumSignUpTwoStep": { + "message": "额外的两步登录选项,如 YubiKey、FIDO U2F 和 Duo。" + }, + "ppremiumSignUpReports": { + "message": "密码健康、账户体检以及数据泄露报告,保障您的密码库安全。" + }, + "ppremiumSignUpTotp": { + "message": "用于登录您的密码库的 TOTP 验证码(两步验证)生成器。" + }, + "ppremiumSignUpSupport": { + "message": "优先客户支持。" + }, + "ppremiumSignUpFuture": { + "message": "未来会增加更多高级功能。敬请期待!" + }, + "premiumPurchase": { + "message": "购买高级版" + }, + "premiumPurchaseAlert": { + "message": "您可以在 bitwarden.com 网页版密码库购买高级会员。现在要访问吗?" + }, + "premiumCurrentMember": { + "message": "您是高级会员!" + }, + "premiumCurrentMemberThanks": { + "message": "感谢您支持 Bitwarden。" + }, + "premiumPrice": { + "message": "每年只需 $PRICE$ !", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "刷新完成" + }, + "disableAutoTotpCopy": { + "message": "禁用自动 TOTP 复制" + }, + "disableAutoTotpCopyDesc": { + "message": "如果您的登录信息包含一个验证器密钥,当自动填充该登录项目时,TOTP 验证码将会自动复制到剪贴板。" + }, + "disableAutoBiometricsPrompt": { + "message": "Do not prompt for biometrics on launch" + }, + "premiumRequired": { + "message": "需要高级会员" + }, + "premiumRequiredDesc": { + "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 端口。如果它有一个按钮,按下它。" + }, + "webAuthnNewTab": { + "message": "要开始 WebAuthn 2FA 验证,请点击下面的按钮打开一个新标签页,并按照新标签页中提供的说明操作。" + }, + "webAuthnNewTabOpen": { + "message": "打开新标签页" + }, + "webAuthnAuthenticate": { + "message": "验证 WebAuthn" + }, + "loginUnavailable": { + "message": "登录不可用" + }, + "noTwoStepProviders": { + "message": "此账户已启用两步登录,但此浏览器不支持任何已配置的两步登录提供程序。" + }, + "noTwoStepProviders2": { + "message": "请使用支持的网页浏览器(例如 Chrome)和/或添加其他支持更广泛的提供程序(例如验证器应用)。" + }, + "twoStepOptions": { + "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 移动应用、短信、电话或 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": "验证码将会发送到您的电子邮箱。" + }, + "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 已保存。" + }, + "enableAutoFillOnPageLoad": { + "message": "启用页面加载时的自动填充" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "如果网页加载时检测到登录表单,自动进行自动填充。" + }, + "experimentalFeature": { + "message": "目前这是一项实验功能。使用需自担风险。" + }, + "defaultAutoFillOnPageLoad": { + "message": "登录项目的默认自动填充设置" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "启用页面加载时自动填充后,您可以为单个登录项目启用或禁用此功能。这是未单独配置的登录项目的默认设置。" + }, + "itemAutoFillOnPageLoad": { + "message": "页面加载时自动填充(如果选项中已启用)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "使用默认设置" + }, + "autoFillOnPageLoadYes": { + "message": "页面加载时自动填充" + }, + "autoFillOnPageLoadNo": { + "message": "页面加载时不自动填充" + }, + "commandOpenPopup": { + "message": "在弹出框中打开密码库" + }, + "commandOpenSidebar": { + "message": "在侧边栏中打开密码库" + }, + "commandAutofillDesc": { + "message": "为当前网站自动填充最后使用的登录信息" + }, + "commandGeneratePasswordDesc": { + "message": "生成一个新的随机密码并将其复制到剪贴板中。" + }, + "commandLockVaultDesc": { + "message": "锁定密码库" + }, + "privateModeMessage": { + "message": "非常不幸,此窗口在这个浏览器的隐私模式中不可用。" + }, + "customFields": { + "message": "自定义字段" + }, + "copyValue": { + "message": "复制值" + }, + "value": { + "message": "值" + }, + "newCustomField": { + "message": "新建自定义字段" + }, + "dragToSort": { + "message": "拖动排序" + }, + "cfTypeText": { + "message": "文本" + }, + "cfTypeHidden": { + "message": "隐藏的" + }, + "cfTypeBoolean": { + "message": "布尔值" + }, + "popup2faCloseMessage": { + "message": "如果您点击弹窗外的任何区域,将导致弹窗关闭。您想在新窗口中打开此弹窗,以便它不会关闭吗?" + }, + "popupU2fCloseMessage": { + "message": "此浏览器无法处理此弹出窗口中的 U2F 请求。您想要在新窗口中打开此弹出窗口吗?" + }, + "disableFavicon": { + "message": "禁用网站图标" + }, + "disableFaviconDesc": { + "message": "在您密码库的每个登录项目旁边显示一个可识别的图标。" + }, + "disableBadgeCounter": { + "message": "禁用角标计数器" + }, + "disableBadgeCounterDesc": { + "message": "角标计数器表示您的密码库中可用于当前页面的登录的数量。" + }, + "cardholderName": { + "message": "持卡人姓名" + }, + "number": { + "message": "号码" + }, + "brand": { + "message": "品牌" + }, + "expirationMonth": { + "message": "到期月份" + }, + "expirationYear": { + "message": "到期年份" + }, + "expiration": { + "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": "十二月" + }, + "securityCode": { + "message": "安全码" + }, + "ex": { + "message": "例如" + }, + "title": { + "message": "称呼" + }, + "mr": { + "message": "先生" + }, + "mrs": { + "message": "夫人" + }, + "ms": { + "message": "女士" + }, + "dr": { + "message": "博士" + }, + "firstName": { + "message": "名" + }, + "middleName": { + "message": "中间名" + }, + "lastName": { + "message": "姓" + }, + "identityName": { + "message": "身份名称" + }, + "company": { + "message": "公司" + }, + "ssn": { + "message": "社会安全号码" + }, + "passportNumber": { + "message": "护照号码" + }, + "licenseNumber": { + "message": "许可证编号" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "电话" + }, + "address": { + "message": "地址" + }, + "address1": { + "message": "地址 1" + }, + "address2": { + "message": "地址 2" + }, + "address3": { + "message": "地址 3" + }, + "cityTown": { + "message": "市 / 镇" + }, + "stateProvince": { + "message": "州 / 省" + }, + "zipPostalCode": { + "message": "邮编 / 邮政代码" + }, + "country": { + "message": "国家" + }, + "type": { + "message": "类型" + }, + "typeLogin": { + "message": "登录" + }, + "typeLogins": { + "message": "登录项目" + }, + "typeSecureNote": { + "message": "安全笔记" + }, + "typeCard": { + "message": "支付卡" + }, + "typeIdentity": { + "message": "身份" + }, + "passwordHistory": { + "message": "密码历史记录" + }, + "back": { + "message": "后退" + }, + "collections": { + "message": "集合" + }, + "favorites": { + "message": "收藏" + }, + "popOutNewWindow": { + "message": "弹出到新窗口" + }, + "refresh": { + "message": "刷新" + }, + "cards": { + "message": "支付卡" + }, + "identities": { + "message": "身份" + }, + "logins": { + "message": "登录" + }, + "secureNotes": { + "message": "安全笔记" + }, + "clear": { + "message": "清除", + "description": "To clear something out. example: To clear browser history." + }, + "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": "切换选项" + }, + "toggleCurrentUris": { + "message": "切换当前网址", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "当前 URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "组织", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "类型" + }, + "allItems": { + "message": "所有项目" + }, + "noPasswordsInList": { + "message": "没有可列出的密码。" + }, + "remove": { + "message": "移除" + }, + "default": { + "message": "默认" + }, + "dateUpdated": { + "message": "更新于", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "密码更新于", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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 码。" + }, + "verifyPin": { + "message": "验证 PIN 码" + }, + "yourVaultIsLockedPinCode": { + "message": "您的密码库已锁定。请验证您的 PIN 码以继续。" + }, + "unlockWithBiometrics": { + "message": "使用生物识别解锁" + }, + "awaitDesktop": { + "message": "等待来自桌面应用程序的确认" + }, + "awaitDesktopDesc": { + "message": "请确认在 Bitwarden 桌面应用程序中使用了生物识别以启用浏览器的生物识别。" + }, + "lockWithMasterPassOnRestart": { + "message": "浏览器重启后使用主密码锁定" + }, + "selectOneCollection": { + "message": "您必须至少选择一个集合。" + }, + "cloneItem": { + "message": "复制项目" + }, + "clone": { + "message": "克隆" + }, + "passwordGeneratorPolicyInEffect": { + "message": "一个或多个组织策略正在影响您的生成器设置。" + }, + "vaultTimeoutAction": { + "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": "项目已恢复" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "超时后注销将解除对密码库的所有访问权限,并需要进行在线认证。确定使用此设置吗?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "超时动作确认" + }, + "autoFillAndSave": { + "message": "自动填充并保存" + }, + "autoFillSuccessAndSavedUri": { + "message": "项目已自动填充且 URI 已保存" + }, + "autoFillSuccess": { + "message": "项目已自动填充" + }, + "setMasterPassword": { + "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": "尚未同意服务条款和隐私政策。" + }, + "termsOfService": { + "message": "服务条款" + }, + "privacyPolicy": { + "message": "隐私政策" + }, + "hintEqualsPassword": { + "message": "您的密码提示不能与您的密码相同。" + }, + "ok": { + "message": "确定" + }, + "desktopSyncVerificationTitle": { + "message": "桌面同步验证" + }, + "desktopIntegrationVerificationText": { + "message": "请验证桌面应用程序显示的指纹为: " + }, + "desktopIntegrationDisabledTitle": { + "message": "浏览器整合未启用" + }, + "desktopIntegrationDisabledDesc": { + "message": "浏览器整合在 Bitwarden 桌面应用程序中未启用。请在桌面应用程序的设置中启用它。" + }, + "startDesktopTitle": { + "message": "启动 Bitwarden 桌面应用程序" + }, + "startDesktopDesc": { + "message": "Bitwarden 桌面应用程序需要已启动才能使用此功能。" + }, + "errorEnableBiometricTitle": { + "message": "无法启用生物识别" + }, + "errorEnableBiometricDesc": { + "message": "操作被桌面应用程序取消" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "桌面应用程序废止了安全通信通道。请重试此操作" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "桌面通信已中断" + }, + "nativeMessagingWrongUserDesc": { + "message": "桌面应用程序登录到了不同的帐户。请确保两个应用程序都登录到同一个帐户。" + }, + "nativeMessagingWrongUserTitle": { + "message": "账户不匹配" + }, + "biometricsNotEnabledTitle": { + "message": "生物识别未启用" + }, + "biometricsNotEnabledDesc": { + "message": "需要首先在桌面应用程序的设置中启用生物识别才能使用浏览器的生物识别。" + }, + "biometricsNotSupportedTitle": { + "message": "不支持生物识别" + }, + "biometricsNotSupportedDesc": { + "message": "此设备不支持浏览器生物识别。" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "未提供权限" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "没有与 Bitwarden 桌面应用程序通信的权限,我们无法在浏览器扩展中提供生物识别。请再试一次。" + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "权限请求错误" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "此操作不能在侧边栏中完成,请在弹出窗口或弹出对话框中重试。" + }, + "personalOwnershipSubmitError": { + "message": "由于某个企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。" + }, + "personalOwnershipPolicyInEffect": { + "message": "一个组织策略正影响您的所有权选项。" + }, + "excludedDomains": { + "message": "排除的域名" + }, + "excludedDomainsDesc": { + "message": "Bitwarden 将不会询问是否为这些域名保存登录信息。需要刷新页面才能生效。" + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ 不是一个有效的域名", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "搜索 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "添加 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "文本" + }, + "sendTypeFile": { + "message": "文件" + }, + "allSends": { + "message": "所有 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "已达最大访问次数" + }, + "expired": { + "message": "已过期" + }, + "pendingDeletion": { + "message": "等待删除" + }, + "passwordProtected": { + "message": "密码保护" + }, + "copySendLink": { + "message": "复制 Send 链接", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "移除密码" + }, + "delete": { + "message": "删除" + }, + "removedPassword": { + "message": "密码已移除" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "已禁用" + }, + "removePasswordConfirmation": { + "message": "确定要移除此密码吗?" + }, + "deleteSend": { + "message": "删除 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "这是什么类型的 Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "用于描述此 Send 的友好名称。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 天" + }, + "days": { + "message": "$DAYS$ 天", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "自定义" + }, + "maximumAccessCount": { + "message": "最大访问次数" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "禁用此 Send 以阻止任何人访问它。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "保存时复制此 Send 的链接到剪贴板。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "您想要发送的文本。" + }, + "sendHideText": { + "message": "默认隐藏此 Send 的文本。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "当前访问次数" + }, + "createSend": { + "message": "创建新 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "新密码" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "要选择文件,请在侧边栏中打开扩展(如果可以),或者点击此横幅来弹出一个新窗口。" + }, + "sendFirefoxFileWarning": { + "message": "要在 Firefox 中选择文件,请在侧边栏中打开本扩展,或者点击此横幅来弹出一个新窗口。" + }, + "sendSafariFileWarning": { + "message": "要在 Safari 中选择文件,请点击此横幅来弹出一个新窗口。" + }, + "sendFileCalloutHeader": { + "message": "在开始之前" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "要使用日历样式的日期选择器", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "点击这里", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "来弹出窗口。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "所提供的到期日期无效。" + }, + "deletionDateIsInvalid": { + "message": "所提供的删除日期无效。" + }, + "expirationDateAndTimeRequired": { + "message": "需要到期日期和时间。" + }, + "deletionDateAndTimeRequired": { + "message": "需要删除日期和时间。" + }, + "dateParsingError": { + "message": "保存您的删除和到期日期时出错。" + }, + "hideEmail": { + "message": "对收件人隐藏我的电子邮件地址。" + }, + "sendOptionsPolicyInEffect": { + "message": "一个或多个组织策略正在影响您的 Send 选项。" + }, + "passwordPrompt": { + "message": "重新询问主密码" + }, + "passwordConfirmation": { + "message": "确认主密码" + }, + "passwordConfirmationDesc": { + "message": "此操作受到保护。若要继续,请重新输入您的主密码以验证您的身份。" + }, + "emailVerificationRequired": { + "message": "需要验证电子邮件地址" + }, + "emailVerificationRequiredDesc": { + "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." + }, + "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." + }, + "selectFolder": { + "message": "Select folder..." + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "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" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "copyCustomFieldNameInvalidElement": { + "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + }, + "copyCustomFieldNameNotUnique": { + "message": "No unique identifier found." + } +} diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json new file mode 100644 index 0000000000..58f30ba0f3 --- /dev/null +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -0,0 +1,1943 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - 免費密碼管理工具", + "description": "Extension name, MUST be less than 40 characters (Safari restriction)" + }, + "extDesc": { + "message": "Bitwarden 是一款安全、免費、跨平台的密碼管理工具。", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "登入或建立帳戶以存取您的安全密碼庫。" + }, + "createAccount": { + "message": "建立帳戶" + }, + "login": { + "message": "登入" + }, + "enterpriseSingleSignOn": { + "message": "企業單一登入" + }, + "cancel": { + "message": "取消" + }, + "close": { + "message": "關閉" + }, + "submit": { + "message": "送出" + }, + "emailAddress": { + "message": "電子郵件地址" + }, + "masterPass": { + "message": "主密碼" + }, + "masterPassDesc": { + "message": "主密碼是用於存取密碼庫的密碼。它非常重要,請您不要忘記它。若您忘記了主密碼,沒有任何方法能將其復原。" + }, + "masterPassHintDesc": { + "message": "主密碼提示可以在您忘記主密碼時幫助您回憶主密碼。" + }, + "reTypeMasterPass": { + "message": "重新輸入主密碼" + }, + "masterPassHint": { + "message": "主密碼提示(選用)" + }, + "tab": { + "message": "分頁" + }, + "myVault": { + "message": "密碼庫" + }, + "tools": { + "message": "工具" + }, + "settings": { + "message": "設定" + }, + "currentTab": { + "message": "目前分頁" + }, + "copyPassword": { + "message": "複製密碼" + }, + "copyNote": { + "message": "複製備註" + }, + "copyUri": { + "message": "複製 URI" + }, + "copyUsername": { + "message": "複製使用者名稱" + }, + "copyNumber": { + "message": "複製號碼" + }, + "copySecurityCode": { + "message": "複製安全代碼" + }, + "autoFill": { + "message": "自動填入" + }, + "generatePasswordCopied": { + "message": "產生及複製密碼" + }, + "copyElementIdentifier": { + "message": "複製自訂欄位名稱" + }, + "noMatchingLogins": { + "message": "無符合的登入資料。" + }, + "unlockVaultMenu": { + "message": "解鎖您的密碼庫" + }, + "loginToVaultMenu": { + "message": "登入您的密碼庫" + }, + "autoFillInfo": { + "message": "沒有可以自動填入目前瀏覽器分頁的登入資料。" + }, + "addLogin": { + "message": "新增登入資料" + }, + "addItem": { + "message": "新增項目" + }, + "passwordHint": { + "message": "密碼提示" + }, + "enterEmailToGetHint": { + "message": "請輸入您的帳户電子郵件地址以接收主密碼提示。" + }, + "getMasterPasswordHint": { + "message": "取得主密碼提示" + }, + "continue": { + "message": "繼續" + }, + "sendVerificationCode": { + "message": "傳送驗證碼至您的電子郵件信箱" + }, + "sendCode": { + "message": "傳送驗證碼" + }, + "codeSent": { + "message": "驗證碼已傳送" + }, + "verificationCode": { + "message": "驗證碼" + }, + "confirmIdentity": { + "message": "請先確認身分後再繼續。" + }, + "account": { + "message": "帳戶" + }, + "changeMasterPassword": { + "message": "變更主密碼" + }, + "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." + }, + "twoStepLogin": { + "message": "兩步驟登入" + }, + "logOut": { + "message": "登出" + }, + "about": { + "message": "關於" + }, + "version": { + "message": "版本" + }, + "save": { + "message": "儲存" + }, + "move": { + "message": "移動" + }, + "addFolder": { + "message": "新增資料夾" + }, + "name": { + "message": "名稱" + }, + "editFolder": { + "message": "編輯資料夾" + }, + "deleteFolder": { + "message": "刪除資料夾" + }, + "folders": { + "message": "資料夾" + }, + "noFolders": { + "message": "沒有可列出的資料夾。" + }, + "helpFeedback": { + "message": "協助與意見反應" + }, + "sync": { + "message": "同步" + }, + "syncVaultNow": { + "message": "立即同步密碼庫" + }, + "lastSync": { + "message": "上次同步於:" + }, + "passGen": { + "message": "密碼產生器" + }, + "generator": { + "message": "產生器", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "自動產生安全、唯一的登入密碼。" + }, + "bitWebVault": { + "message": "Bitwarden 網頁版密碼庫" + }, + "importItems": { + "message": "匯入項目" + }, + "select": { + "message": "選擇" + }, + "generatePassword": { + "message": "產生密碼" + }, + "regeneratePassword": { + "message": "重新產生密碼" + }, + "options": { + "message": "選項" + }, + "length": { + "message": "長度" + }, + "uppercase": { + "message": "大寫 (A-Z)" + }, + "lowercase": { + "message": "小寫 (a-z)" + }, + "numbers": { + "message": "數字 (0-9)" + }, + "specialCharacters": { + "message": "特殊字元 (!@#$%^&*)" + }, + "numWords": { + "message": "字數" + }, + "wordSeparator": { + "message": "文字分隔字元" + }, + "capitalize": { + "message": "大寫", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "包含數字" + }, + "minNumbers": { + "message": "最少數字位數" + }, + "minSpecial": { + "message": "最少符號位數" + }, + "avoidAmbChar": { + "message": "避免易混淆的字元" + }, + "searchVault": { + "message": "搜尋密碼庫" + }, + "edit": { + "message": "編輯" + }, + "view": { + "message": "檢視" + }, + "noItemsInList": { + "message": "沒有可列出的項目。" + }, + "itemInformation": { + "message": "項目資訊" + }, + "username": { + "message": "使用者名稱" + }, + "password": { + "message": "密碼" + }, + "passphrase": { + "message": "密碼短語" + }, + "favorite": { + "message": "我的最愛" + }, + "notes": { + "message": "備註" + }, + "note": { + "message": "備註" + }, + "editItem": { + "message": "編輯項目" + }, + "folder": { + "message": "資料夾" + }, + "deleteItem": { + "message": "刪除項目" + }, + "viewItem": { + "message": "檢視項目" + }, + "launch": { + "message": "啟動" + }, + "website": { + "message": "網站" + }, + "toggleVisibility": { + "message": "切換可見度" + }, + "manage": { + "message": "管理" + }, + "other": { + "message": "其他" + }, + "rateExtension": { + "message": "為本套件評分" + }, + "rateExtensionDesc": { + "message": "請給予我們好評!" + }, + "browserNotSupportClipboard": { + "message": "您的瀏覽器不支援剪貼簿簡單複製,請手動複製。" + }, + "verifyIdentity": { + "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": "無效的主密碼" + }, + "vaultTimeout": { + "message": "密碼庫逾時時間" + }, + "lockNow": { + "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 小時" + }, + "onLocked": { + "message": "系統鎖定時" + }, + "onRestart": { + "message": "重新啟動瀏覽器時" + }, + "never": { + "message": "永不" + }, + "security": { + "message": "安全" + }, + "errorOccurred": { + "message": "發生錯誤" + }, + "emailRequired": { + "message": "必須填入電子郵件地址 。" + }, + "invalidEmail": { + "message": "無效的電子郵件地址。" + }, + "masterPassRequired": { + "message": "必須填入主密碼。" + }, + "masterPassLength": { + "message": "主密碼需要至少 8 個字元。" + }, + "masterPassDoesntMatch": { + "message": "兩次填入的主密碼不相符。" + }, + "newAccountCreated": { + "message": "帳戶已建立!現在可以登入了。" + }, + "masterPassSent": { + "message": "已寄出包含您主密碼提示的電子郵件。" + }, + "verificationCodeRequired": { + "message": "必須填入驗證碼。" + }, + "invalidVerificationCode": { + "message": "無效的驗證碼" + }, + "valueCopied": { + "message": "$VALUE$ 已複製", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "無法在此頁面自動填入所選項目。請手動複製貼上。" + }, + "loggedOut": { + "message": "已登出" + }, + "loginExpired": { + "message": "您的登入階段已過期。" + }, + "logOutConfirmation": { + "message": "您確定要登出嗎?" + }, + "yes": { + "message": "是" + }, + "no": { + "message": "否" + }, + "unexpectedError": { + "message": "發生了未預期的錯誤。" + }, + "nameRequired": { + "message": "必須填入名稱。" + }, + "addedFolder": { + "message": "已新增資料夾" + }, + "changeMasterPass": { + "message": "變更主密碼" + }, + "changeMasterPasswordConfirmation": { + "message": "您可以在 Bitwarden 網頁版密碼庫變更主密碼。要現在前往嗎?" + }, + "twoStepLoginConfirmation": { + "message": "兩步驟登入需要您從其他裝置(例如安全金鑰、驗證器程式、SMS、手機或電子郵件)來驗證您的登入,這使您的帳戶更加安全。兩步驟登入可以在 Bitwarden 網頁版密碼庫啟用。要現在前往嗎?" + }, + "editedFolder": { + "message": "已編輯資料夾" + }, + "deleteFolderConfirmation": { + "message": "您確定要刪除此資料夾嗎?" + }, + "deletedFolder": { + "message": "已刪除資料夾" + }, + "gettingStartedTutorial": { + "message": "新手教學" + }, + "gettingStartedTutorialVideo": { + "message": "觀看我們的新手教學,了解如何充分利用瀏覽器擴充套件。" + }, + "syncingComplete": { + "message": "同步完成" + }, + "syncingFailed": { + "message": "同步失敗" + }, + "passwordCopied": { + "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" + }, + "addedItem": { + "message": "已新增項目" + }, + "editedItem": { + "message": "已編輯項目" + }, + "deleteItemConfirmation": { + "message": "確定要刪除此項目嗎?" + }, + "deletedItem": { + "message": "將項目移至垃圾桶" + }, + "overwritePassword": { + "message": "覆寫密碼" + }, + "overwritePasswordConfirmation": { + "message": "您確定要覆寫目前的密碼嗎?" + }, + "overwriteUsername": { + "message": "覆寫使用者名稱" + }, + "overwriteUsernameConfirmation": { + "message": "您確定要覆寫目前的使用者名稱嗎?" + }, + "searchFolder": { + "message": "搜尋資料夾" + }, + "searchCollection": { + "message": "搜尋集合" + }, + "searchType": { + "message": "搜尋類型" + }, + "noneFolder": { + "message": "(未分類)", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "停用新增登入資料提示" + }, + "addLoginNotificationDesc": { + "message": "當您首次登入時,「新增登入資料提示」會自動提醒您在密碼庫中新增登入資料。" + }, + "dontShowCardsCurrentTab": { + "message": "不要在分頁頁面顯示支付卡" + }, + "dontShowCardsCurrentTabDesc": { + "message": "將密碼庫中的支付卡項目列在「目前分頁」頁面上,以便於自動填入。" + }, + "dontShowIdentitiesCurrentTab": { + "message": "不要在分頁頁面顯示身分" + }, + "dontShowIdentitiesCurrentTabDesc": { + "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." + }, + "notificationAddDesc": { + "message": "希望 Bitwarden 幫您儲存這個密碼嗎?" + }, + "notificationAddSave": { + "message": "儲存" + }, + "disableChangedPasswordNotification": { + "message": "停用密碼變更通知" + }, + "disableChangedPasswordNotificationDesc": { + "message": "偵測到您變更網站上的密碼時,「密碼變更通知」將會自動提醒您更新密碼庫的密碼。" + }, + "notificationChangeDesc": { + "message": "是否要在 Bitwarden 中更新此密碼?" + }, + "notificationChangeSave": { + "message": "更新" + }, + "disableContextMenuItem": { + "message": "停用右鍵選單選項" + }, + "disableContextMenuItemDesc": { + "message": "右鍵選單選項幫您快速使用密碼產生器,以及快速登入目前分頁中的網站。" + }, + "defaultUriMatchDetection": { + "message": "預設的 URI 一致性偵測", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "選擇在執行自動填入等動作時對登入資料進行 URI 一致性偵測的預設方式。" + }, + "theme": { + "message": "主題" + }, + "themeDesc": { + "message": "變更應用程式的主題色彩。" + }, + "dark": { + "message": "深色", + "description": "Dark color" + }, + "light": { + "message": "淺色", + "description": "Light color" + }, + "solarizedDark": { + "message": "Solarized Dark", + "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." + }, + "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": "輸入您的主密碼以匯出密碼庫資料。" + }, + "shared": { + "message": "已共用" + }, + "learnOrg": { + "message": "瞭解組織" + }, + "learnOrgConfirmation": { + "message": "Bitwarden 允許您使用組織與他人分享您的密碼庫項目。您想造訪 bitwarden.com 網站以深入了解內容嗎?" + }, + "moveToOrganization": { + "message": "移動至組織 " + }, + "share": { + "message": "共用" + }, + "movedItemToOrg": { + "message": "已將 $ITEMNAME$ 移動至 $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "選擇您希望將這個項目移動至哪個組織。項目的擁有權將會轉移至該組織。轉移之後,您將不再是此項目的直接擁有者。" + }, + "learnMore": { + "message": "深入了解" + }, + "authenticatorKeyTotp": { + "message": "驗證器金鑰 (TOTP)" + }, + "verificationCodeTotp": { + "message": "驗證碼 (TOTP)" + }, + "copyVerificationCode": { + "message": "複製驗證碼" + }, + "attachments": { + "message": "附件" + }, + "deleteAttachment": { + "message": "刪除附件" + }, + "deleteAttachmentConfirmation": { + "message": "確定要刪除此附件嗎?" + }, + "deletedAttachment": { + "message": "附件已刪除" + }, + "newAttachment": { + "message": "新增附件" + }, + "noAttachments": { + "message": "沒有附件。" + }, + "attachmentSaved": { + "message": "附件已儲存。" + }, + "file": { + "message": "檔案" + }, + "selectFile": { + "message": "選擇檔案。" + }, + "maxFileSize": { + "message": "檔案最大為 500MB。" + }, + "featureUnavailable": { + "message": "功能無法使用" + }, + "updateKey": { + "message": "更新加密金鑰前不能使用此功能。" + }, + "premiumMembership": { + "message": "進階會員" + }, + "premiumManage": { + "message": "管理會員資格" + }, + "premiumManageAlert": { + "message": "您可以在 Bitwarden 網頁版管理您的會員資格。要現在前往嗎?" + }, + "premiumRefresh": { + "message": "更新會員資格狀態" + }, + "premiumNotCurrentMember": { + "message": "您尚未成為進階會員。" + }, + "premiumSignUpAndGet": { + "message": "註冊成為進階會員將獲得:" + }, + "ppremiumSignUpStorage": { + "message": "用於檔案附件的 1 GB 加密儲存空間。" + }, + "ppremiumSignUpTwoStep": { + "message": "YubiKey、FIDO U2F 和 Duo 等額外的兩步驟登入選項。" + }, + "ppremiumSignUpReports": { + "message": "密碼健康度檢查、提供帳戶體檢以及資料外洩報告,以保障您的密碼庫安全。" + }, + "ppremiumSignUpTotp": { + "message": "用於登入您的密碼庫的 TOTP 驗證碼 (2FA) 產生器。" + }, + "ppremiumSignUpSupport": { + "message": "優先客戶支援。" + }, + "ppremiumSignUpFuture": { + "message": "未來會新增更多進階功能,敬請期待!" + }, + "premiumPurchase": { + "message": "升級為進階會員" + }, + "premiumPurchaseAlert": { + "message": "您可以在 Bitwarden 網頁版密碼庫購買進階會員資格。要現在前往嗎?" + }, + "premiumCurrentMember": { + "message": "您目前為進階會員!" + }, + "premiumCurrentMemberThanks": { + "message": "感謝您支持 Bitwarden 。" + }, + "premiumPrice": { + "message": "每年只需 $PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "狀態更新完成" + }, + "disableAutoTotpCopy": { + "message": "停用自動 TOTP 複製" + }, + "disableAutoTotpCopyDesc": { + "message": "若您的登入資料已包含驗證器金鑰,TOTP 驗證碼會在您自動填入時自動複製至您的剪貼簿。" + }, + "disableAutoBiometricsPrompt": { + "message": "不要在啟動時提示生物特徵辨識驗證" + }, + "premiumRequired": { + "message": "需要進階會員資格" + }, + "premiumRequiredDesc": { + "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 連接埠,然後按一下它的按鈕(如有的話)。" + }, + "webAuthnNewTab": { + "message": "要開始 WebAuthn 2FA 驗證,請點選下面的按鈕開啟一個新分頁,並依照新分頁中提供的說明操作。" + }, + "webAuthnNewTabOpen": { + "message": "開啟新分頁" + }, + "webAuthnAuthenticate": { + "message": "驗證 WebAuthn" + }, + "loginUnavailable": { + "message": "無法登入" + }, + "noTwoStepProviders": { + "message": "此帳戶已啟用兩步驟登入,但是本瀏覽器不支援已設定的兩步驟登入方式。" + }, + "noTwoStepProviders2": { + "message": "請使用已支援的瀏覽器(例如 Chrome ),及/或新增可以更好地跨瀏覽器的兩步驟登入方法(例如驗證器應用程式)。" + }, + "twoStepOptions": { + "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 程式、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": "使用電子郵件傳送驗證碼給您。" + }, + "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。" + }, + "enableAutoFillOnPageLoad": { + "message": "啟用頁面載入時的自動填入功能" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "如果網頁載入時偵測到登入表單,則自動執行表單填入。" + }, + "experimentalFeature": { + "message": "這目前是一項實驗性功能。要使用需自行承擔風險。" + }, + "defaultAutoFillOnPageLoad": { + "message": "登入項目的預設自動填入設定" + }, + "defaultAutoFillOnPageLoadDesc": { + "message": "啟用頁面載入時自動填入後,您可以為單個登入項目啟用或停用此功能。這是未單獨設定的登入項目的預設設定。" + }, + "itemAutoFillOnPageLoad": { + "message": "頁面載入時自動填入 (如果選項中已啟用)" + }, + "autoFillOnPageLoadUseDefault": { + "message": "使用預設設定" + }, + "autoFillOnPageLoadYes": { + "message": "頁面載入時自動填入" + }, + "autoFillOnPageLoadNo": { + "message": "不要在頁面載入時自動填入" + }, + "commandOpenPopup": { + "message": "在彈出式視窗中開啟密碼庫" + }, + "commandOpenSidebar": { + "message": "在側邊欄中開啟密碼庫" + }, + "commandAutofillDesc": { + "message": "自動將上次使用的登入資料填入目前網站" + }, + "commandGeneratePasswordDesc": { + "message": "產生一組新的隨機密碼並將它複製到剪貼簿中。" + }, + "commandLockVaultDesc": { + "message": "鎖定密碼庫" + }, + "privateModeWarning": { + "message": "私密模式的支援是實驗性功能,部分功能無法完全發揮作用。" + }, + "customFields": { + "message": "自訂欄位" + }, + "copyValue": { + "message": "複製值" + }, + "value": { + "message": "值" + }, + "newCustomField": { + "message": "新增自訂欄位" + }, + "dragToSort": { + "message": "透過拖曳來排序" + }, + "cfTypeText": { + "message": "文字型" + }, + "cfTypeHidden": { + "message": "隱藏型" + }, + "cfTypeBoolean": { + "message": "布林值" + }, + "cfTypeLinked": { + "message": "連結型", + "description": "This describes a field that is 'linked' (tied) to another field." + }, + "linkedValue": { + "message": "連結的值", + "description": "This describes a value that is 'linked' (tied) to another value." + }, + "popup2faCloseMessage": { + "message": "如果您點選彈出式視窗外的任意區域,將導致彈出式視窗關閉。您想在新視窗中開啟此彈出式視窗,以讓它不關閉嗎?" + }, + "popupU2fCloseMessage": { + "message": "此瀏覽器不能在彈出式視窗中處理 U2F 要求。是否在新視窗開啟此對話方塊,以便您能夠使用 U2F 登入?" + }, + "disableFavicon": { + "message": "停用網站圖示顯示功能" + }, + "disableFaviconDesc": { + "message": "在您密碼庫的每個登入資料旁顯示一個可辨識的圖示。" + }, + "disableBadgeCounter": { + "message": "停用圖示計數器" + }, + "disableBadgeCounterDesc": { + "message": "圖示計數器可顯示您密碼庫中可用於目前頁面的登入資料數量。" + }, + "cardholderName": { + "message": "持卡人姓名" + }, + "number": { + "message": "號碼" + }, + "brand": { + "message": "發卡組織" + }, + "expirationMonth": { + "message": "逾期月份" + }, + "expirationYear": { + "message": "逾期年份" + }, + "expiration": { + "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": "十二月" + }, + "securityCode": { + "message": "安全代碼" + }, + "ex": { + "message": "例如" + }, + "title": { + "message": "稱呼" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "名" + }, + "middleName": { + "message": "中間名" + }, + "lastName": { + "message": "姓" + }, + "fullName": { + "message": "全名" + }, + "identityName": { + "message": "身分名稱" + }, + "company": { + "message": "公司" + }, + "ssn": { + "message": "社會安全號碼" + }, + "passportNumber": { + "message": "護照號碼" + }, + "licenseNumber": { + "message": "許可證號碼" + }, + "email": { + "message": "電子郵件" + }, + "phone": { + "message": "電話號碼" + }, + "address": { + "message": "地址" + }, + "address1": { + "message": "地址 1" + }, + "address2": { + "message": "地址 2" + }, + "address3": { + "message": "地址 3" + }, + "cityTown": { + "message": "市/鎮" + }, + "stateProvince": { + "message": "州/省" + }, + "zipPostalCode": { + "message": "郵遞區號" + }, + "country": { + "message": "國家" + }, + "type": { + "message": "類型" + }, + "typeLogin": { + "message": "登入" + }, + "typeLogins": { + "message": "登入資料" + }, + "typeSecureNote": { + "message": "安全筆記" + }, + "typeCard": { + "message": "支付卡" + }, + "typeIdentity": { + "message": "身分" + }, + "passwordHistory": { + "message": "密碼歷史記錄" + }, + "back": { + "message": "返回" + }, + "collections": { + "message": "集合" + }, + "favorites": { + "message": "我的最愛" + }, + "popOutNewWindow": { + "message": "彈出至新視窗" + }, + "refresh": { + "message": "重新整理" + }, + "cards": { + "message": "支付卡" + }, + "identities": { + "message": "身分" + }, + "logins": { + "message": "登入資料" + }, + "secureNotes": { + "message": "安全筆記" + }, + "clear": { + "message": "清除", + "description": "To clear something out. example: To clear browser history." + }, + "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": "切換選項" + }, + "toggleCurrentUris": { + "message": "切換目前 URI", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "目前 URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "組織", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "類型" + }, + "allItems": { + "message": "所有項目" + }, + "noPasswordsInList": { + "message": "沒有可列出的密碼。" + }, + "remove": { + "message": "移除" + }, + "default": { + "message": "預設" + }, + "dateUpdated": { + "message": "更新於", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "密碼更新於", + "description": "ex. Date this password was updated" + }, + "neverLockWarning": { + "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 碼。" + }, + "unlockWithBiometrics": { + "message": "使用生物特徵辨識解鎖" + }, + "awaitDesktop": { + "message": "等待來自桌面應用程式的確認" + }, + "awaitDesktopDesc": { + "message": "請確認在 Bitwarden 桌面應用程式中使用了生物特徵辨識,以啟用瀏覽器的生物特徵辨識。" + }, + "lockWithMasterPassOnRestart": { + "message": "瀏覽器重啟後使用主密碼鎖定" + }, + "selectOneCollection": { + "message": "您必須至少選擇一個集合。" + }, + "cloneItem": { + "message": "複製項目" + }, + "clone": { + "message": "複製" + }, + "passwordGeneratorPolicyInEffect": { + "message": "一個或多個組織原則正影響密碼產生器設定。" + }, + "vaultTimeoutAction": { + "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": "項目已還原" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "選擇登出將會在密碼庫逾時後移除對密碼庫的所有存取權限,若要重新驗證則需連線網路。確定要使用此設定嗎?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "逾時動作確認" + }, + "autoFillAndSave": { + "message": "自動填入並儲存" + }, + "autoFillSuccessAndSavedUri": { + "message": "項目已自動填入並且 URL 已儲存" + }, + "autoFillSuccess": { + "message": "項目已自動填入" + }, + "setMasterPassword": { + "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": "尚未接受服務條款與隱私權政策。" + }, + "termsOfService": { + "message": "服務條款" + }, + "privacyPolicy": { + "message": "隱私權政策" + }, + "hintEqualsPassword": { + "message": "密碼提示不能與您的密碼相同。" + }, + "ok": { + "message": "確定" + }, + "desktopSyncVerificationTitle": { + "message": "桌面同步驗證" + }, + "desktopIntegrationVerificationText": { + "message": "請驗證桌面應用程式顯示的指紋為: " + }, + "desktopIntegrationDisabledTitle": { + "message": "瀏覽器整合未啟用" + }, + "desktopIntegrationDisabledDesc": { + "message": "瀏覽器整合在桌面應用程式中未啟用,請在桌面應用程式的設定中啟用它。" + }, + "startDesktopTitle": { + "message": "啟動 Bitwarden 桌面應用程式" + }, + "startDesktopDesc": { + "message": "Bitwarden 桌面應用程式需要在啟動狀態才能使用生物特徵辨識解鎖功能。" + }, + "errorEnableBiometricTitle": { + "message": "無法啟用生物特徵辨識" + }, + "errorEnableBiometricDesc": { + "message": "動作被桌面應用程式取消" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "桌面應用程式廢止了安全通訊通道。請重試此操作" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "桌面通訊已中斷" + }, + "nativeMessagingWrongUserDesc": { + "message": "桌面應用程式登入了不同的帳戶。請確保兩個應用程式登入的是同一個帳戶。" + }, + "nativeMessagingWrongUserTitle": { + "message": "帳戶不相符" + }, + "biometricsNotEnabledTitle": { + "message": "生物特徵辨識未啟用" + }, + "biometricsNotEnabledDesc": { + "message": "需先在桌面應用程式設定中啟用生物特徵辨識,才能使用瀏覽器的生物特徵辨識功能。" + }, + "biometricsNotSupportedTitle": { + "message": "不支援生物特徵辨識" + }, + "biometricsNotSupportedDesc": { + "message": "此裝置不支援瀏覽器生物特徵辨識。" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "未提供權限" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "沒有與 Bitwarden 桌面應用程式通訊的權限,我們無法在瀏覽器擴充套件中提供生物特徵辨識功能。請再試一次。" + }, + "nativeMessaginPermissionSidebarTitle": { + "message": "權限要求錯誤" + }, + "nativeMessaginPermissionSidebarDesc": { + "message": "此動作無法在側邊欄中完成,請在彈出式視窗中再試一次。" + }, + "personalOwnershipSubmitError": { + "message": "由於某個企業原則,您被限制為儲存項目到您的個人密碼庫。將擁有權變更為組織,並從可用的集合中選擇。" + }, + "personalOwnershipPolicyInEffect": { + "message": "組織原則正在影響您的擁有權選項。" + }, + "excludedDomains": { + "message": "排除的網域" + }, + "excludedDomainsDesc": { + "message": "Bitwarden 不會要求儲存這些網域的詳細登入資訊。必須重新整理頁面才能使變更生效。" + }, + "excludedDomainsInvalidDomain": { + "message": "$DOMAIN$ 不是一個有效的網域", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "searchSends": { + "message": "搜尋 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "addSend": { + "message": "新增 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeText": { + "message": "文字" + }, + "sendTypeFile": { + "message": "檔案" + }, + "allSends": { + "message": "所有 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCountReached": { + "message": "已達最大存取次數", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "expired": { + "message": "已逾期" + }, + "pendingDeletion": { + "message": "等待刪除" + }, + "passwordProtected": { + "message": "密碼保護" + }, + "copySendLink": { + "message": "複製 Send 連結", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "移除密碼" + }, + "delete": { + "message": "刪除" + }, + "removedPassword": { + "message": "已移除密碼" + }, + "deletedSend": { + "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." + }, + "disabled": { + "message": "已停用" + }, + "removePasswordConfirmation": { + "message": "您確定要移除此密碼嗎?" + }, + "deleteSend": { + "message": "刪除 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "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." + }, + "sendTypeHeader": { + "message": "這是什麽類型的 Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "用於描述此 Send 的易記名稱。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendFileDesc": { + "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." + }, + "oneDay": { + "message": "1 天" + }, + "days": { + "message": "$DAYS$ 天", + "placeholders": { + "days": { + "content": "$1", + "example": "2" + } + } + }, + "custom": { + "message": "自訂" + }, + "maximumAccessCount": { + "message": "最大存取次數" + }, + "maximumAccessCountDesc": { + "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." + }, + "sendDisableDesc": { + "message": "停用此 Send 以阻止任何人存取。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendShareDesc": { + "message": "儲存時複製此 Send 的連結至剪貼簿。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "您想要傳送的文字。" + }, + "sendHideText": { + "message": "預設隱藏此 Send 的文字。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "目前存取次數" + }, + "createSend": { + "message": "建立新 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "新密碼" + }, + "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." + }, + "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." + }, + "sendLinuxChromiumFileWarning": { + "message": "要選擇檔案,請在側邊欄中開啟擴充套件(若可以),或點選此橫幅彈出至新視窗。" + }, + "sendFirefoxFileWarning": { + "message": "要使用 Firefox 來選擇檔案,請在側邊欄中開啟擴充套件,或點選此橫幅彈出至新視窗。" + }, + "sendSafariFileWarning": { + "message": "要使用 Safari 來選擇檔案,請點選此橫幅彈出至新視窗。" + }, + "sendFileCalloutHeader": { + "message": "在開始之前" + }, + "sendFirefoxCustomDatePopoutMessage1": { + "message": "使用行事曆樣式的日期選擇器", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage2": { + "message": "點選此處", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" + }, + "sendFirefoxCustomDatePopoutMessage3": { + "message": "要彈出至視窗。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" + }, + "expirationDateIsInvalid": { + "message": "指定的逾期日期無效。" + }, + "deletionDateIsInvalid": { + "message": "指定的刪除日期無效。" + }, + "expirationDateAndTimeRequired": { + "message": "要求指定逾期日期和時間。" + }, + "deletionDateAndTimeRequired": { + "message": "要求指定刪除日期和時間。" + }, + "dateParsingError": { + "message": "儲存刪除日期和逾期日期時發生錯誤。" + }, + "hideEmail": { + "message": "對收件人隱藏我的電子郵件地址。" + }, + "sendOptionsPolicyInEffect": { + "message": "一個或多個組織原則正影響您的 Send 選項。" + }, + "passwordPrompt": { + "message": "重新詢問主密碼" + }, + "passwordConfirmation": { + "message": "確認主密碼" + }, + "passwordConfirmationDesc": { + "message": "此動作受到保護。若要繼續,請重新輸入您的主密碼以驗證您的身份。" + }, + "emailVerificationRequired": { + "message": "需要驗證電子郵件" + }, + "emailVerificationRequiredDesc": { + "message": "您必須驗證您的電子郵件才能使用此功能。您可以在網頁密碼庫裡驗證您的電子郵件。" + }, + "updatedMasterPassword": { + "message": "已更新主密碼" + }, + "updateMasterPassword": { + "message": "更新主密碼" + }, + "updateMasterPasswordWarning": { + "message": "您的主密碼最近被您的組織管理者變更過。若要存取密碼庫,您必須立即更新主密碼。繼續操作會登出目前的登入階段,並要求您重新登入。其他裝置上的活動登入階段最多會保持一個小時。" + }, + "resetPasswordPolicyAutoEnroll": { + "message": "自動註冊" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "此組織有一個可以為您自動註冊密碼重設的企業原則。註冊後將允許組織管理員變更您的主密碼。" + }, + "selectFolder": { + "message": "選擇資料夾⋯" + }, + "ssoCompleteRegistration": { + "message": "要完成 SSO 登入設定,請設定一組主密碼以存取和保護您的密碼庫。" + }, + "hours": { + "message": "小時" + }, + "minutes": { + "message": "分鐘" + }, + "vaultTimeoutPolicyInEffect": { + "message": "您的組織原則正在影響您的密碼庫逾時時間。密碼庫逾時時間最多可以設定到 $HOURS$ 小時 $MINUTES$ 分鐘。", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "您的密碼庫逾時時間超過組織限制。" + }, + "vaultExportDisabled": { + "message": "密碼庫匯出已停用" + }, + "personalVaultExportPolicyInEffect": { + "message": "一個或多個組織原則禁止您匯出個人密碼庫。" + }, + "copyCustomFieldNameInvalidElement": { + "message": "未能找出有效的表單元件。請試試看改用 HTML 檢查功能。" + }, + "copyCustomFieldNameNotUnique": { + "message": "找不到唯一識別碼。" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ 使用自我裝載金鑰伺服器 SSO。此組織的成員登入時將不再需要主密碼。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "離開組織" + }, + "removeMasterPassword": { + "message": "移除主密碼" + }, + "removedMasterPassword": { + "message": "已移除主密碼。" + }, + "leaveOrganizationConfirmation": { + "message": "您確定要離開這個組織嗎?" + }, + "leftOrganization": { + "message": "您已離開此組織。" + }, + "toggleCharacterCount": { + "message": "切換字元計數" + }, + "sessionTimeout": { + "message": "您的登入階段已逾時,請返回並嘗試重新登入。" + }, + "exportingPersonalVaultTitle": { + "message": "匯出個人密碼庫" + }, + "exportingPersonalVaultDescription": { + "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫。組織密碼庫的項目不包含在內。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "error": { + "message": "錯誤" + }, + "regenerateUsername": { + "message": "重新產生使用者名稱" + }, + "generateUsername": { + "message": "產生使用者名稱" + }, + "usernameType": { + "message": "使用者名稱類型" + }, + "plusAddressedEmail": { + "message": "加號地址電子郵件", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "使用您電子郵件提供者的子地址功能。" + }, + "catchallEmail": { + "message": "Catch-all 電子郵件" + }, + "catchallEmailDesc": { + "message": "使用您網域設定的 Catch-all 收件匣。" + }, + "random": { + "message": "隨機" + }, + "randomWord": { + "message": "隨機單字" + }, + "websiteName": { + "message": "網站名稱" + }, + "whatWouldYouLikeToGenerate": { + "message": "您想要產生什麼?" + }, + "passwordType": { + "message": "密碼類型" + }, + "service": { + "message": "服務" + } +} diff --git a/apps/browser/src/background.html b/apps/browser/src/background.html new file mode 100644 index 0000000000..0cd95f3f02 --- /dev/null +++ b/apps/browser/src/background.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/browser/src/background.ts b/apps/browser/src/background.ts new file mode 100644 index 0000000000..939a481bd5 --- /dev/null +++ b/apps/browser/src/background.ts @@ -0,0 +1,6 @@ +import MainBackground from "./background/main.background"; + +const bitwardenMain = ((window as any).bitwardenMain = new MainBackground()); +bitwardenMain.bootstrap().then(() => { + // Finished bootstrapping +}); diff --git a/apps/browser/src/background/commands.background.ts b/apps/browser/src/background/commands.background.ts new file mode 100644 index 0000000000..97b367e1d4 --- /dev/null +++ b/apps/browser/src/background/commands.background.ts @@ -0,0 +1,115 @@ +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; + +import { BrowserApi } from "../browser/browserApi"; + +import MainBackground from "./main.background"; +import LockedVaultPendingNotificationsItem from "./models/lockedVaultPendingNotificationsItem"; + +export default class CommandsBackground { + private isSafari: boolean; + private isVivaldi: boolean; + + constructor( + private main: MainBackground, + private passwordGenerationService: PasswordGenerationService, + private platformUtilsService: PlatformUtilsService, + private vaultTimeoutService: VaultTimeoutService, + private authService: AuthService + ) { + this.isSafari = this.platformUtilsService.isSafari(); + this.isVivaldi = this.platformUtilsService.isVivaldi(); + } + + async init() { + BrowserApi.messageListener( + "commands.background", + async (msg: any, sender: chrome.runtime.MessageSender, sendResponse: any) => { + if (msg.command === "unlockCompleted" && msg.data.target === "commands.background") { + await this.processCommand( + msg.data.commandToRetry.msg.command, + msg.data.commandToRetry.sender + ); + } + + if (this.isVivaldi && msg.command === "keyboardShortcutTriggered" && msg.shortcut) { + await this.processCommand(msg.shortcut, sender); + } + } + ); + + if (!this.isVivaldi && chrome && chrome.commands) { + chrome.commands.onCommand.addListener(async (command: string) => { + await this.processCommand(command); + }); + } + } + + private async processCommand(command: string, sender?: chrome.runtime.MessageSender) { + switch (command) { + case "generate_password": + await this.generatePasswordToClipboard(); + break; + case "autofill_login": + await this.autoFillLogin(sender ? sender.tab : null); + break; + case "open_popup": + await this.openPopup(); + break; + case "lock_vault": + await this.vaultTimeoutService.lock(true); + break; + default: + break; + } + } + + private async generatePasswordToClipboard() { + const options = (await this.passwordGenerationService.getOptions())[0]; + const password = await this.passwordGenerationService.generatePassword(options); + this.platformUtilsService.copyToClipboard(password, { window: window }); + this.passwordGenerationService.addHistory(password); + } + + private async autoFillLogin(tab?: chrome.tabs.Tab) { + if (!tab) { + tab = await BrowserApi.getTabFromCurrentWindowId(); + } + + if (tab == null) { + return; + } + + if ((await this.authService.getAuthStatus()) < AuthenticationStatus.Unlocked) { + const retryMessage: LockedVaultPendingNotificationsItem = { + commandToRetry: { + msg: { command: "autofill_login" }, + sender: { tab: tab }, + }, + target: "commands.background", + }; + await BrowserApi.tabSendMessageData( + tab, + "addToLockedVaultPendingNotifications", + retryMessage + ); + + BrowserApi.tabSendMessageData(tab, "promptForLogin"); + return; + } + + await this.main.collectPageDetailsForContentScript(tab, "autofill_cmd"); + } + + private async openPopup() { + // Chrome APIs cannot open popup + if (!this.isSafari) { + return; + } + + this.main.openPopup(); + } +} diff --git a/apps/browser/src/background/contextMenus.background.ts b/apps/browser/src/background/contextMenus.background.ts new file mode 100644 index 0000000000..29bc5254d1 --- /dev/null +++ b/apps/browser/src/background/contextMenus.background.ts @@ -0,0 +1,142 @@ +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType"; +import { EventType } from "jslib-common/enums/eventType"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { BrowserApi } from "../browser/browserApi"; + +import MainBackground from "./main.background"; +import LockedVaultPendingNotificationsItem from "./models/lockedVaultPendingNotificationsItem"; + +export default class ContextMenusBackground { + private readonly noopCommandSuffix = "noop"; + private contextMenus: any; + + constructor( + private main: MainBackground, + private cipherService: CipherService, + private passwordGenerationService: PasswordGenerationService, + private platformUtilsService: PlatformUtilsService, + private authService: AuthService, + private eventService: EventService, + private totpService: TotpService + ) { + this.contextMenus = chrome.contextMenus; + } + + async init() { + if (!this.contextMenus) { + return; + } + + this.contextMenus.onClicked.addListener( + async (info: chrome.contextMenus.OnClickData, tab: chrome.tabs.Tab) => { + if (info.menuItemId === "generate-password") { + await this.generatePasswordToClipboard(); + } else if (info.menuItemId === "copy-identifier") { + await this.getClickedElement(tab, info.frameId); + } else if ( + info.parentMenuItemId === "autofill" || + info.parentMenuItemId === "copy-username" || + info.parentMenuItemId === "copy-password" || + info.parentMenuItemId === "copy-totp" + ) { + await this.cipherAction(tab, info); + } + } + ); + + BrowserApi.messageListener( + "contextmenus.background", + async (msg: any, sender: chrome.runtime.MessageSender, sendResponse: any) => { + if (msg.command === "unlockCompleted" && msg.data.target === "contextmenus.background") { + await this.cipherAction( + msg.data.commandToRetry.sender.tab, + msg.data.commandToRetry.msg.data + ); + } + } + ); + } + + private async generatePasswordToClipboard() { + const options = (await this.passwordGenerationService.getOptions())[0]; + const password = await this.passwordGenerationService.generatePassword(options); + this.platformUtilsService.copyToClipboard(password, { window: window }); + this.passwordGenerationService.addHistory(password); + } + + private async getClickedElement(tab: chrome.tabs.Tab, frameId: number) { + if (tab == null) { + return; + } + + BrowserApi.tabSendMessage(tab, { command: "getClickedElement" }, { frameId: frameId }); + } + + private async cipherAction(tab: chrome.tabs.Tab, info: chrome.contextMenus.OnClickData) { + const id = info.menuItemId.split("_")[1]; + + if ((await this.authService.getAuthStatus()) < AuthenticationStatus.Unlocked) { + const retryMessage: LockedVaultPendingNotificationsItem = { + commandToRetry: { + msg: { command: this.noopCommandSuffix, data: info }, + sender: { tab: tab }, + }, + target: "contextmenus.background", + }; + await BrowserApi.tabSendMessageData( + tab, + "addToLockedVaultPendingNotifications", + retryMessage + ); + + BrowserApi.tabSendMessageData(tab, "promptForLogin"); + return; + } + + let cipher: CipherView; + if (id === this.noopCommandSuffix) { + const ciphers = await this.cipherService.getAllDecryptedForUrl(tab.url); + cipher = ciphers.find((c) => c.reprompt === CipherRepromptType.None); + } else { + const ciphers = await this.cipherService.getAllDecrypted(); + cipher = ciphers.find((c) => c.id === id); + } + + if (cipher == null) { + return; + } + + if (info.parentMenuItemId === "autofill") { + await this.startAutofillPage(tab, cipher); + } else if (info.parentMenuItemId === "copy-username") { + this.platformUtilsService.copyToClipboard(cipher.login.username, { window: window }); + } else if (info.parentMenuItemId === "copy-password") { + this.platformUtilsService.copyToClipboard(cipher.login.password, { window: window }); + this.eventService.collect(EventType.Cipher_ClientCopiedPassword, cipher.id); + } else if (info.parentMenuItemId === "copy-totp") { + const totpValue = await this.totpService.getCode(cipher.login.totp); + this.platformUtilsService.copyToClipboard(totpValue, { window: window }); + } + } + + private async startAutofillPage(tab: chrome.tabs.Tab, cipher: CipherView) { + this.main.loginToAutoFill = cipher; + if (tab == null) { + return; + } + + BrowserApi.tabSendMessage(tab, { + command: "collectPageDetails", + tab: tab, + sender: "contextMenu", + }); + } +} diff --git a/apps/browser/src/background/idle.background.ts b/apps/browser/src/background/idle.background.ts new file mode 100644 index 0000000000..fb51968ad4 --- /dev/null +++ b/apps/browser/src/background/idle.background.ts @@ -0,0 +1,72 @@ +import { NotificationsService } from "jslib-common/abstractions/notifications.service"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; + +import { StateService } from "../services/abstractions/state.service"; + +const IdleInterval = 60 * 5; // 5 minutes + +export default class IdleBackground { + private idle: any; + private idleTimer: number = null; + private idleState = "active"; + + constructor( + private vaultTimeoutService: VaultTimeoutService, + private stateService: StateService, + private notificationsService: NotificationsService + ) { + this.idle = chrome.idle || (browser != null ? browser.idle : null); + } + + async init() { + if (!this.idle) { + return; + } + + const idleHandler = (newState: string) => { + if (newState === "active") { + this.notificationsService.reconnectFromActivity(); + } else { + this.notificationsService.disconnectFromInactivity(); + } + }; + if (this.idle.onStateChanged && this.idle.setDetectionInterval) { + this.idle.setDetectionInterval(IdleInterval); + this.idle.onStateChanged.addListener(idleHandler); + } else { + this.pollIdle(idleHandler); + } + + if (this.idle.onStateChanged) { + this.idle.onStateChanged.addListener(async (newState: string) => { + if (newState === "locked") { + // If the screen is locked or the screensaver activates + const timeout = await this.stateService.getVaultTimeout(); + if (timeout === -2) { + // On System Lock vault timeout option + const action = await this.stateService.getVaultTimeoutAction(); + if (action === "logOut") { + await this.vaultTimeoutService.logOut(); + } else { + await this.vaultTimeoutService.lock(true); + } + } + } + }); + } + } + + private pollIdle(handler: (newState: string) => void) { + if (this.idleTimer != null) { + window.clearTimeout(this.idleTimer); + this.idleTimer = null; + } + this.idle.queryState(IdleInterval, (state: string) => { + if (state !== this.idleState) { + this.idleState = state; + handler(state); + } + this.idleTimer = window.setTimeout(() => this.pollIdle(handler), 5000); + }); + } +} diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts new file mode 100644 index 0000000000..b94b93f2a9 --- /dev/null +++ b/apps/browser/src/background/main.background.ts @@ -0,0 +1,1037 @@ +import { ApiService as ApiServiceAbstraction } from "jslib-common/abstractions/api.service"; +import { AppIdService as AppIdServiceAbstraction } from "jslib-common/abstractions/appId.service"; +import { AuditService as AuditServiceAbstraction } from "jslib-common/abstractions/audit.service"; +import { AuthService as AuthServiceAbstraction } from "jslib-common/abstractions/auth.service"; +import { CipherService as CipherServiceAbstraction } from "jslib-common/abstractions/cipher.service"; +import { CollectionService as CollectionServiceAbstraction } from "jslib-common/abstractions/collection.service"; +import { CryptoService as CryptoServiceAbstraction } from "jslib-common/abstractions/crypto.service"; +import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "jslib-common/abstractions/cryptoFunction.service"; +import { EnvironmentService as EnvironmentServiceAbstraction } from "jslib-common/abstractions/environment.service"; +import { EventService as EventServiceAbstraction } from "jslib-common/abstractions/event.service"; +import { ExportService as ExportServiceAbstraction } from "jslib-common/abstractions/export.service"; +import { FileUploadService as FileUploadServiceAbstraction } from "jslib-common/abstractions/fileUpload.service"; +import { FolderService as FolderServiceAbstraction } from "jslib-common/abstractions/folder.service"; +import { I18nService as I18nServiceAbstraction } from "jslib-common/abstractions/i18n.service"; +import { KeyConnectorService as KeyConnectorServiceAbstraction } from "jslib-common/abstractions/keyConnector.service"; +import { LogService as LogServiceAbstraction } from "jslib-common/abstractions/log.service"; +import { MessagingService as MessagingServiceAbstraction } from "jslib-common/abstractions/messaging.service"; +import { NotificationsService as NotificationsServiceAbstraction } from "jslib-common/abstractions/notifications.service"; +import { OrganizationService as OrganizationServiceAbstraction } from "jslib-common/abstractions/organization.service"; +import { PasswordGenerationService as PasswordGenerationServiceAbstraction } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService as PolicyServiceAbstraction } from "jslib-common/abstractions/policy.service"; +import { ProviderService as ProviderServiceAbstraction } from "jslib-common/abstractions/provider.service"; +import { SearchService as SearchServiceAbstraction } from "jslib-common/abstractions/search.service"; +import { SendService as SendServiceAbstraction } from "jslib-common/abstractions/send.service"; +import { SettingsService as SettingsServiceAbstraction } from "jslib-common/abstractions/settings.service"; +import { StorageService as StorageServiceAbstraction } from "jslib-common/abstractions/storage.service"; +import { SyncService as SyncServiceAbstraction } from "jslib-common/abstractions/sync.service"; +import { SystemService as SystemServiceAbstraction } from "jslib-common/abstractions/system.service"; +import { TokenService as TokenServiceAbstraction } from "jslib-common/abstractions/token.service"; +import { TotpService as TotpServiceAbstraction } from "jslib-common/abstractions/totp.service"; +import { TwoFactorService as TwoFactorServiceAbstraction } from "jslib-common/abstractions/twoFactor.service"; +import { UserVerificationService as UserVerificationServiceAbstraction } from "jslib-common/abstractions/userVerification.service"; +import { UsernameGenerationService as UsernameGenerationServiceAbstraction } from "jslib-common/abstractions/usernameGeneration.service"; +import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "jslib-common/abstractions/vaultTimeout.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { StateFactory } from "jslib-common/factories/stateFactory"; +import { GlobalState } from "jslib-common/models/domain/globalState"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { ApiService } from "jslib-common/services/api.service"; +import { AppIdService } from "jslib-common/services/appId.service"; +import { AuditService } from "jslib-common/services/audit.service"; +import { AuthService } from "jslib-common/services/auth.service"; +import { CipherService } from "jslib-common/services/cipher.service"; +import { CollectionService } from "jslib-common/services/collection.service"; +import { ConsoleLogService } from "jslib-common/services/consoleLog.service"; +import { ContainerService } from "jslib-common/services/container.service"; +import { EnvironmentService } from "jslib-common/services/environment.service"; +import { EventService } from "jslib-common/services/event.service"; +import { ExportService } from "jslib-common/services/export.service"; +import { FileUploadService } from "jslib-common/services/fileUpload.service"; +import { FolderService } from "jslib-common/services/folder.service"; +import { KeyConnectorService } from "jslib-common/services/keyConnector.service"; +import { NotificationsService } from "jslib-common/services/notifications.service"; +import { OrganizationService } from "jslib-common/services/organization.service"; +import { PasswordGenerationService } from "jslib-common/services/passwordGeneration.service"; +import { PolicyService } from "jslib-common/services/policy.service"; +import { ProviderService } from "jslib-common/services/provider.service"; +import { SearchService } from "jslib-common/services/search.service"; +import { SendService } from "jslib-common/services/send.service"; +import { SettingsService } from "jslib-common/services/settings.service"; +import { StateMigrationService } from "jslib-common/services/stateMigration.service"; +import { SyncService } from "jslib-common/services/sync.service"; +import { SystemService } from "jslib-common/services/system.service"; +import { TokenService } from "jslib-common/services/token.service"; +import { TotpService } from "jslib-common/services/totp.service"; +import { TwoFactorService } from "jslib-common/services/twoFactor.service"; +import { UserVerificationService } from "jslib-common/services/userVerification.service"; +import { UsernameGenerationService } from "jslib-common/services/usernameGeneration.service"; +import { WebCryptoFunctionService } from "jslib-common/services/webCryptoFunction.service"; + +import { BrowserApi } from "../browser/browserApi"; +import { SafariApp } from "../browser/safariApp"; +import { Account } from "../models/account"; +import { PopupUtilsService } from "../popup/services/popup-utils.service"; +import { AutofillService as AutofillServiceAbstraction } from "../services/abstractions/autofill.service"; +import { StateService as StateServiceAbstraction } from "../services/abstractions/state.service"; +import AutofillService from "../services/autofill.service"; +import { BrowserCryptoService } from "../services/browserCrypto.service"; +import BrowserMessagingService from "../services/browserMessaging.service"; +import BrowserMessagingPrivateModeBackgroundService from "../services/browserMessagingPrivateModeBackground.service"; +import BrowserPlatformUtilsService from "../services/browserPlatformUtils.service"; +import BrowserStorageService from "../services/browserStorage.service"; +import I18nService from "../services/i18n.service"; +import { StateService } from "../services/state.service"; +import { VaultFilterService } from "../services/vaultFilter.service"; +import VaultTimeoutService from "../services/vaultTimeout.service"; + +import CommandsBackground from "./commands.background"; +import ContextMenusBackground from "./contextMenus.background"; +import IdleBackground from "./idle.background"; +import IconDetails from "./models/iconDetails"; +import { NativeMessagingBackground } from "./nativeMessaging.background"; +import NotificationBackground from "./notification.background"; +import RuntimeBackground from "./runtime.background"; +import TabsBackground from "./tabs.background"; +import WebRequestBackground from "./webRequest.background"; + +export default class MainBackground { + messagingService: MessagingServiceAbstraction; + storageService: StorageServiceAbstraction; + secureStorageService: StorageServiceAbstraction; + i18nService: I18nServiceAbstraction; + platformUtilsService: PlatformUtilsServiceAbstraction; + logService: LogServiceAbstraction; + cryptoService: CryptoServiceAbstraction; + cryptoFunctionService: CryptoFunctionServiceAbstraction; + tokenService: TokenServiceAbstraction; + appIdService: AppIdServiceAbstraction; + apiService: ApiServiceAbstraction; + environmentService: EnvironmentServiceAbstraction; + settingsService: SettingsServiceAbstraction; + cipherService: CipherServiceAbstraction; + folderService: FolderServiceAbstraction; + collectionService: CollectionServiceAbstraction; + vaultTimeoutService: VaultTimeoutServiceAbstraction; + syncService: SyncServiceAbstraction; + passwordGenerationService: PasswordGenerationServiceAbstraction; + totpService: TotpServiceAbstraction; + autofillService: AutofillServiceAbstraction; + containerService: ContainerService; + auditService: AuditServiceAbstraction; + authService: AuthServiceAbstraction; + exportService: ExportServiceAbstraction; + searchService: SearchServiceAbstraction; + notificationsService: NotificationsServiceAbstraction; + stateService: StateServiceAbstraction; + stateMigrationService: StateMigrationService; + systemService: SystemServiceAbstraction; + eventService: EventServiceAbstraction; + policyService: PolicyServiceAbstraction; + popupUtilsService: PopupUtilsService; + sendService: SendServiceAbstraction; + fileUploadService: FileUploadServiceAbstraction; + organizationService: OrganizationServiceAbstraction; + providerService: ProviderServiceAbstraction; + keyConnectorService: KeyConnectorServiceAbstraction; + userVerificationService: UserVerificationServiceAbstraction; + twoFactorService: TwoFactorServiceAbstraction; + vaultFilterService: VaultFilterService; + usernameGenerationService: UsernameGenerationServiceAbstraction; + + onUpdatedRan: boolean; + onReplacedRan: boolean; + loginToAutoFill: CipherView = null; + + private commandsBackground: CommandsBackground; + private contextMenusBackground: ContextMenusBackground; + private idleBackground: IdleBackground; + private notificationBackground: NotificationBackground; + private runtimeBackground: RuntimeBackground; + private tabsBackground: TabsBackground; + private webRequestBackground: WebRequestBackground; + + private sidebarAction: any; + private buildingContextMenu: boolean; + private menuOptionsLoaded: any[] = []; + private syncTimeout: any; + private isSafari: boolean; + private nativeMessagingBackground: NativeMessagingBackground; + + constructor(public isPrivateMode: boolean = false) { + // Services + const lockedCallback = async (userId?: string) => { + if (this.notificationsService != null) { + this.notificationsService.updateConnection(false); + } + await this.setIcon(); + await this.refreshBadgeAndMenu(true); + if (this.systemService != null) { + await this.systemService.clearPendingClipboard(); + await this.reloadProcess(); + } + }; + + const logoutCallback = async (expired: boolean, userId?: string) => + await this.logout(expired, userId); + + this.messagingService = isPrivateMode + ? new BrowserMessagingPrivateModeBackgroundService() + : new BrowserMessagingService(); + this.storageService = new BrowserStorageService(); + this.secureStorageService = new BrowserStorageService(); + this.logService = new ConsoleLogService(false); + this.stateMigrationService = new StateMigrationService( + this.storageService, + this.secureStorageService, + new StateFactory(GlobalState, Account) + ); + this.stateService = new StateService( + this.storageService, + this.secureStorageService, + this.logService, + this.stateMigrationService, + new StateFactory(GlobalState, Account) + ); + this.platformUtilsService = new BrowserPlatformUtilsService( + this.messagingService, + this.stateService, + (clipboardValue, clearMs) => { + if (this.systemService != null) { + this.systemService.clearClipboard(clipboardValue, clearMs); + } + }, + async () => { + if (this.nativeMessagingBackground != null) { + const promise = this.nativeMessagingBackground.getResponse(); + + try { + await this.nativeMessagingBackground.send({ command: "biometricUnlock" }); + } catch (e) { + return Promise.reject(e); + } + + return promise.then((result) => result.response === "unlocked"); + } + } + ); + this.i18nService = new I18nService(BrowserApi.getUILanguage(window)); + this.cryptoFunctionService = new WebCryptoFunctionService(window); + this.cryptoService = new BrowserCryptoService( + this.cryptoFunctionService, + this.platformUtilsService, + this.logService, + this.stateService + ); + this.tokenService = new TokenService(this.stateService); + this.appIdService = new AppIdService(this.storageService); + this.environmentService = new EnvironmentService(this.stateService); + this.apiService = new ApiService( + this.tokenService, + this.platformUtilsService, + this.environmentService, + this.appIdService, + (expired: boolean) => this.logout(expired) + ); + this.settingsService = new SettingsService(this.stateService); + this.fileUploadService = new FileUploadService(this.logService, this.apiService); + this.cipherService = new CipherService( + this.cryptoService, + this.settingsService, + this.apiService, + this.fileUploadService, + this.i18nService, + () => this.searchService, + this.logService, + this.stateService + ); + this.folderService = new FolderService( + this.cryptoService, + this.apiService, + this.i18nService, + this.cipherService, + this.stateService + ); + this.collectionService = new CollectionService( + this.cryptoService, + this.i18nService, + this.stateService + ); + this.searchService = new SearchService(this.cipherService, this.logService, this.i18nService); + this.sendService = new SendService( + this.cryptoService, + this.apiService, + this.fileUploadService, + this.i18nService, + this.cryptoFunctionService, + this.stateService + ); + this.organizationService = new OrganizationService(this.stateService); + this.policyService = new PolicyService( + this.stateService, + this.organizationService, + this.apiService + ); + this.keyConnectorService = new KeyConnectorService( + this.stateService, + this.cryptoService, + this.apiService, + this.tokenService, + this.logService, + this.organizationService, + this.cryptoFunctionService, + logoutCallback + ); + this.vaultFilterService = new VaultFilterService( + this.stateService, + this.organizationService, + this.folderService, + this.cipherService, + this.collectionService, + this.policyService + ); + + this.twoFactorService = new TwoFactorService(this.i18nService, this.platformUtilsService); + + // eslint-disable-next-line + const that = this; + const backgroundMessagingService = new (class extends MessagingServiceAbstraction { + // AuthService should send the messages to the background not popup. + send = (subscriber: string, arg: any = {}) => { + const message = Object.assign({}, { command: subscriber }, arg); + that.runtimeBackground.processMessage(message, that, null); + }; + })(); + this.authService = new AuthService( + this.cryptoService, + this.apiService, + this.tokenService, + this.appIdService, + this.platformUtilsService, + backgroundMessagingService, + this.logService, + this.keyConnectorService, + this.environmentService, + this.stateService, + this.twoFactorService, + this.i18nService + ); + + this.vaultTimeoutService = new VaultTimeoutService( + this.cipherService, + this.folderService, + this.collectionService, + this.cryptoService, + this.platformUtilsService, + this.messagingService, + this.searchService, + this.tokenService, + this.policyService, + this.keyConnectorService, + this.stateService, + this.authService, + lockedCallback, + logoutCallback + ); + this.providerService = new ProviderService(this.stateService); + this.syncService = new SyncService( + this.apiService, + this.settingsService, + this.folderService, + this.cipherService, + this.cryptoService, + this.collectionService, + this.messagingService, + this.policyService, + this.sendService, + this.logService, + this.keyConnectorService, + this.stateService, + this.organizationService, + this.providerService, + logoutCallback + ); + this.eventService = new EventService( + this.apiService, + this.cipherService, + this.stateService, + this.logService, + this.organizationService + ); + this.passwordGenerationService = new PasswordGenerationService( + this.cryptoService, + this.policyService, + this.stateService + ); + this.totpService = new TotpService( + this.cryptoFunctionService, + this.logService, + this.stateService + ); + this.autofillService = new AutofillService( + this.cipherService, + this.stateService, + this.totpService, + this.eventService, + this.logService + ); + this.containerService = new ContainerService(this.cryptoService); + this.auditService = new AuditService(this.cryptoFunctionService, this.apiService); + this.exportService = new ExportService( + this.folderService, + this.cipherService, + this.apiService, + this.cryptoService, + this.cryptoFunctionService + ); + this.notificationsService = new NotificationsService( + this.syncService, + this.appIdService, + this.apiService, + this.environmentService, + logoutCallback, + this.logService, + this.stateService, + this.authService + ); + this.popupUtilsService = new PopupUtilsService(isPrivateMode); + + this.userVerificationService = new UserVerificationService( + this.cryptoService, + this.i18nService, + this.apiService + ); + + const systemUtilsServiceReloadCallback = () => { + const forceWindowReload = + this.platformUtilsService.isSafari() || + this.platformUtilsService.isFirefox() || + this.platformUtilsService.isOpera(); + BrowserApi.reloadExtension(forceWindowReload ? window : null); + return Promise.resolve(); + }; + + this.systemService = new SystemService( + this.messagingService, + this.platformUtilsService, + systemUtilsServiceReloadCallback, + this.stateService + ); + + // Other fields + this.isSafari = this.platformUtilsService.isSafari(); + this.sidebarAction = this.isSafari + ? null + : typeof opr !== "undefined" && opr.sidebarAction + ? opr.sidebarAction + : (window as any).chrome.sidebarAction; + + // Background + this.runtimeBackground = new RuntimeBackground( + this, + this.autofillService, + this.platformUtilsService as BrowserPlatformUtilsService, + this.i18nService, + this.notificationsService, + this.systemService, + this.environmentService, + this.messagingService, + this.logService + ); + this.nativeMessagingBackground = new NativeMessagingBackground( + this.cryptoService, + this.cryptoFunctionService, + this.runtimeBackground, + this.i18nService, + this.messagingService, + this.appIdService, + this.platformUtilsService, + this.stateService, + this.logService, + this.authService + ); + this.commandsBackground = new CommandsBackground( + this, + this.passwordGenerationService, + this.platformUtilsService, + this.vaultTimeoutService, + this.authService + ); + this.notificationBackground = new NotificationBackground( + this.autofillService, + this.cipherService, + this.authService, + this.policyService, + this.folderService, + this.stateService + ); + + this.tabsBackground = new TabsBackground(this, this.notificationBackground); + this.contextMenusBackground = new ContextMenusBackground( + this, + this.cipherService, + this.passwordGenerationService, + this.platformUtilsService, + this.authService, + this.eventService, + this.totpService + ); + this.idleBackground = new IdleBackground( + this.vaultTimeoutService, + this.stateService, + this.notificationsService + ); + this.webRequestBackground = new WebRequestBackground( + this.platformUtilsService, + this.cipherService, + this.authService + ); + + this.usernameGenerationService = new UsernameGenerationService( + this.cryptoService, + this.stateService, + this.apiService + ); + } + + async bootstrap() { + this.containerService.attachToWindow(window); + + await this.stateService.init(); + + await (this.vaultTimeoutService as VaultTimeoutService).init(true); + await (this.i18nService as I18nService).init(); + await (this.eventService as EventService).init(true); + await this.runtimeBackground.init(); + await this.notificationBackground.init(); + await this.commandsBackground.init(); + + this.twoFactorService.init(); + + await this.tabsBackground.init(); + await this.contextMenusBackground.init(); + await this.idleBackground.init(); + await this.webRequestBackground.init(); + + if (this.platformUtilsService.isFirefox() && !this.isPrivateMode) { + // Set Private Mode windows to the default icon - they do not share state with the background page + const privateWindows = await BrowserApi.getPrivateModeWindows(); + privateWindows.forEach(async (win) => { + await this.actionSetIcon(chrome.browserAction, "", win.id); + await this.actionSetIcon(this.sidebarAction, "", win.id); + }); + + BrowserApi.onWindowCreated(async (win) => { + if (win.incognito) { + await this.actionSetIcon(chrome.browserAction, "", win.id); + await this.actionSetIcon(this.sidebarAction, "", win.id); + } + }); + } + + return new Promise((resolve) => { + setTimeout(async () => { + await this.environmentService.setUrlsFromStorage(); + await this.setIcon(); + this.fullSync(true); + setTimeout(() => this.notificationsService.init(), 2500); + resolve(); + }, 500); + }); + } + + async setIcon() { + if ((!chrome.browserAction && !this.sidebarAction) || this.isPrivateMode) { + return; + } + + const authStatus = await this.authService.getAuthStatus(); + + let suffix = ""; + if (authStatus === AuthenticationStatus.LoggedOut) { + suffix = "_gray"; + } else if (authStatus === AuthenticationStatus.Locked) { + suffix = "_locked"; + } + + await this.actionSetIcon(chrome.browserAction, suffix); + await this.actionSetIcon(this.sidebarAction, suffix); + } + + async refreshBadgeAndMenu(forLocked = false) { + if (!chrome.windows || !chrome.contextMenus) { + return; + } + + const menuDisabled = await this.stateService.getDisableContextMenuItem(); + if (!menuDisabled) { + await this.buildContextMenu(); + } else { + await this.contextMenusRemoveAll(); + } + + if (forLocked) { + await this.loadMenuAndUpdateBadgeForNoAccessState(!menuDisabled); + this.onUpdatedRan = this.onReplacedRan = false; + return; + } + + const tab = await BrowserApi.getTabFromCurrentWindow(); + if (tab) { + await this.contextMenuReady(tab, !menuDisabled); + } + } + + async logout(expired: boolean, userId?: string) { + await this.eventService.uploadEvents(userId); + + await Promise.all([ + this.eventService.clearEvents(userId), + this.syncService.setLastSync(new Date(0), userId), + this.cryptoService.clearKeys(userId), + this.settingsService.clear(userId), + this.cipherService.clear(userId), + this.folderService.clear(userId), + this.collectionService.clear(userId), + this.policyService.clear(userId), + this.passwordGenerationService.clear(userId), + this.vaultTimeoutService.clear(userId), + this.keyConnectorService.clear(), + this.vaultFilterService.clear(), + ]); + + await this.stateService.clean({ userId: userId }); + + if (userId == null || userId === (await this.stateService.getUserId())) { + this.searchService.clearIndex(); + this.messagingService.send("doneLoggingOut", { expired: expired, userId: userId }); + } + + await this.setIcon(); + await this.refreshBadgeAndMenu(true); + await this.reseedStorage(); + this.notificationsService.updateConnection(false); + await this.systemService.clearPendingClipboard(); + await this.reloadProcess(); + } + + async collectPageDetailsForContentScript(tab: any, sender: string, frameId: number = null) { + if (tab == null || !tab.id) { + return; + } + + const options: any = {}; + if (frameId != null) { + options.frameId = frameId; + } + + BrowserApi.tabSendMessage( + tab, + { + command: "collectPageDetails", + tab: tab, + sender: sender, + }, + options + ); + } + + async openPopup() { + // Chrome APIs cannot open popup + + // TODO: Do we need to open this popup? + if (!this.isSafari) { + return; + } + await SafariApp.sendMessageToApp("showPopover", null, true); + } + + async reseedStorage() { + if ( + !this.platformUtilsService.isChrome() && + !this.platformUtilsService.isVivaldi() && + !this.platformUtilsService.isOpera() + ) { + return; + } + + const currentVaultTimeout = await this.stateService.getVaultTimeout(); + if (currentVaultTimeout == null) { + return; + } + + const getStorage = (): Promise => + new Promise((resolve) => { + chrome.storage.local.get(null, (o: any) => resolve(o)); + }); + + const clearStorage = (): Promise => + new Promise((resolve) => { + chrome.storage.local.clear(() => resolve()); + }); + + const storage = await getStorage(); + await clearStorage(); + + for (const key in storage) { + // eslint-disable-next-line + if (!storage.hasOwnProperty(key)) { + continue; + } + await this.storageService.save(key, storage[key]); + } + } + + private async buildContextMenu() { + if (!chrome.contextMenus || this.buildingContextMenu) { + return; + } + + this.buildingContextMenu = true; + await this.contextMenusRemoveAll(); + + await this.contextMenusCreate({ + type: "normal", + id: "root", + contexts: ["all"], + title: "Bitwarden", + }); + + await this.contextMenusCreate({ + type: "normal", + id: "autofill", + parentId: "root", + contexts: ["all"], + title: this.i18nService.t("autoFill"), + }); + + await this.contextMenusCreate({ + type: "normal", + id: "copy-username", + parentId: "root", + contexts: ["all"], + title: this.i18nService.t("copyUsername"), + }); + + await this.contextMenusCreate({ + type: "normal", + id: "copy-password", + parentId: "root", + contexts: ["all"], + title: this.i18nService.t("copyPassword"), + }); + + if (await this.stateService.getCanAccessPremium()) { + await this.contextMenusCreate({ + type: "normal", + id: "copy-totp", + parentId: "root", + contexts: ["all"], + title: this.i18nService.t("copyVerificationCode"), + }); + } + + await this.contextMenusCreate({ + type: "separator", + parentId: "root", + }); + + await this.contextMenusCreate({ + type: "normal", + id: "generate-password", + parentId: "root", + contexts: ["all"], + title: this.i18nService.t("generatePasswordCopied"), + }); + + await this.contextMenusCreate({ + type: "normal", + id: "copy-identifier", + parentId: "root", + contexts: ["all"], + title: this.i18nService.t("copyElementIdentifier"), + }); + + this.buildingContextMenu = false; + } + + private async contextMenuReady(tab: any, contextMenuEnabled: boolean) { + await this.loadMenuAndUpdateBadge(tab.url, tab.id, contextMenuEnabled); + this.onUpdatedRan = this.onReplacedRan = false; + } + + private async loadMenuAndUpdateBadge(url: string, tabId: number, contextMenuEnabled: boolean) { + if (!url || (!chrome.browserAction && !this.sidebarAction)) { + return; + } + + this.actionSetBadgeBackgroundColor(chrome.browserAction); + this.actionSetBadgeBackgroundColor(this.sidebarAction); + + this.menuOptionsLoaded = []; + const authStatus = await this.authService.getAuthStatus(); + if (authStatus === AuthenticationStatus.Unlocked) { + try { + const ciphers = await this.cipherService.getAllDecryptedForUrl(url); + ciphers.sort((a, b) => this.cipherService.sortCiphersByLastUsedThenName(a, b)); + + if (contextMenuEnabled) { + ciphers.forEach((cipher) => { + this.loadLoginContextMenuOptions(cipher); + }); + } + + const disableBadgeCounter = await this.stateService.getDisableBadgeCounter(); + let theText = ""; + + if (!disableBadgeCounter) { + if (ciphers.length > 0 && ciphers.length <= 9) { + theText = ciphers.length.toString(); + } else if (ciphers.length > 0) { + theText = "9+"; + } + } + + if (contextMenuEnabled && ciphers.length === 0) { + await this.loadNoLoginsContextMenuOptions(this.i18nService.t("noMatchingLogins")); + } + + this.sidebarActionSetBadgeText(theText, tabId); + this.browserActionSetBadgeText(theText, tabId); + + return; + } catch (e) { + this.logService.error(e); + } + } + + await this.loadMenuAndUpdateBadgeForNoAccessState(contextMenuEnabled); + } + + private async loadMenuAndUpdateBadgeForNoAccessState(contextMenuEnabled: boolean) { + if (contextMenuEnabled) { + const authed = await this.stateService.getIsAuthenticated(); + await this.loadNoLoginsContextMenuOptions( + this.i18nService.t(authed ? "unlockVaultMenu" : "loginToVaultMenu") + ); + } + + const tabs = await BrowserApi.getActiveTabs(); + if (tabs != null) { + tabs.forEach((tab) => { + if (tab.id != null) { + this.browserActionSetBadgeText("", tab.id); + this.sidebarActionSetBadgeText("", tab.id); + } + }); + } + } + + private async loadLoginContextMenuOptions(cipher: any) { + if ( + cipher == null || + cipher.type !== CipherType.Login || + cipher.reprompt !== CipherRepromptType.None + ) { + return; + } + + let title = cipher.name; + if (cipher.login.username && cipher.login.username !== "") { + title += " (" + cipher.login.username + ")"; + } + await this.loadContextMenuOptions(title, cipher.id, cipher); + } + + private async loadNoLoginsContextMenuOptions(noLoginsMessage: string) { + await this.loadContextMenuOptions(noLoginsMessage, "noop", null); + } + + private async loadContextMenuOptions(title: string, idSuffix: string, cipher: any) { + if ( + !chrome.contextMenus || + this.menuOptionsLoaded.indexOf(idSuffix) > -1 || + (cipher != null && cipher.type !== CipherType.Login) + ) { + return; + } + + this.menuOptionsLoaded.push(idSuffix); + + if (cipher == null || (cipher.login.password && cipher.login.password !== "")) { + await this.contextMenusCreate({ + type: "normal", + id: "autofill_" + idSuffix, + parentId: "autofill", + contexts: ["all"], + title: this.sanitizeContextMenuTitle(title), + }); + } + + if (cipher == null || (cipher.login.username && cipher.login.username !== "")) { + await this.contextMenusCreate({ + type: "normal", + id: "copy-username_" + idSuffix, + parentId: "copy-username", + contexts: ["all"], + title: this.sanitizeContextMenuTitle(title), + }); + } + + if ( + cipher == null || + (cipher.login.password && cipher.login.password !== "" && cipher.viewPassword) + ) { + await this.contextMenusCreate({ + type: "normal", + id: "copy-password_" + idSuffix, + parentId: "copy-password", + contexts: ["all"], + title: this.sanitizeContextMenuTitle(title), + }); + } + + const canAccessPremium = await this.stateService.getCanAccessPremium(); + if (canAccessPremium && (cipher == null || (cipher.login.totp && cipher.login.totp !== ""))) { + await this.contextMenusCreate({ + type: "normal", + id: "copy-totp_" + idSuffix, + parentId: "copy-totp", + contexts: ["all"], + title: this.sanitizeContextMenuTitle(title), + }); + } + } + + private sanitizeContextMenuTitle(title: string): string { + return title.replace(/&/g, "&&"); + } + + private async fullSync(override = false) { + const syncInternal = 6 * 60 * 60 * 1000; // 6 hours + const lastSync = await this.syncService.getLastSync(); + + let lastSyncAgo = syncInternal + 1; + if (lastSync != null) { + lastSyncAgo = new Date().getTime() - lastSync.getTime(); + } + + if (override || lastSyncAgo >= syncInternal) { + await this.syncService.fullSync(override); + this.scheduleNextSync(); + } else { + this.scheduleNextSync(); + } + } + + private scheduleNextSync() { + if (this.syncTimeout) { + clearTimeout(this.syncTimeout); + } + + this.syncTimeout = setTimeout(async () => await this.fullSync(), 5 * 60 * 1000); // check every 5 minutes + } + + // Browser API Helpers + + private contextMenusRemoveAll() { + return new Promise((resolve) => { + chrome.contextMenus.removeAll(() => { + resolve(); + if (chrome.runtime.lastError) { + return; + } + }); + }); + } + + private contextMenusCreate(options: any) { + return new Promise((resolve) => { + chrome.contextMenus.create(options, () => { + resolve(); + if (chrome.runtime.lastError) { + return; + } + }); + }); + } + + private async actionSetIcon(theAction: any, suffix: string, windowId?: number): Promise { + if (!theAction || !theAction.setIcon) { + return; + } + + const options: IconDetails = { + path: { + 19: "images/icon19" + suffix + ".png", + 38: "images/icon38" + suffix + ".png", + }, + }; + + if (this.platformUtilsService.isFirefox()) { + options.windowId = windowId; + await theAction.setIcon(options); + } else if (this.platformUtilsService.isSafari()) { + // Workaround since Safari 14.0.3 returns a pending promise + // which doesn't resolve within a reasonable time. + theAction.setIcon(options); + } else { + return new Promise((resolve) => { + theAction.setIcon(options, () => resolve()); + }); + } + } + + private actionSetBadgeBackgroundColor(action: any) { + if (action && action.setBadgeBackgroundColor) { + action.setBadgeBackgroundColor({ color: "#294e5f" }); + } + } + + private browserActionSetBadgeText(text: string, tabId: number) { + if (chrome.browserAction && chrome.browserAction.setBadgeText) { + chrome.browserAction.setBadgeText({ + text: text, + tabId: tabId, + }); + } + } + + private sidebarActionSetBadgeText(text: string, tabId: number) { + if (!this.sidebarAction) { + return; + } + + if (this.sidebarAction.setBadgeText) { + this.sidebarAction.setBadgeText({ + text: text, + tabId: tabId, + }); + } else if (this.sidebarAction.setTitle) { + let title = "Bitwarden"; + if (text && text !== "") { + title += " [" + text + "]"; + } + + this.sidebarAction.setTitle({ + title: title, + tabId: tabId, + }); + } + } + + private async reloadProcess(): Promise { + const accounts = this.stateService.accounts.getValue(); + if (accounts != null) { + for (const userId of Object.keys(accounts)) { + if ((await this.authService.getAuthStatus(userId)) === AuthenticationStatus.Unlocked) { + return; + } + } + } + await this.systemService.startProcessReload(); + } +} diff --git a/apps/browser/src/background/models/addChangePasswordQueueMessage.ts b/apps/browser/src/background/models/addChangePasswordQueueMessage.ts new file mode 100644 index 0000000000..51a745643d --- /dev/null +++ b/apps/browser/src/background/models/addChangePasswordQueueMessage.ts @@ -0,0 +1,6 @@ +import NotificationQueueMessage from "./notificationQueueMessage"; + +export default class AddChangePasswordQueueMessage extends NotificationQueueMessage { + cipherId: string; + newPassword: string; +} diff --git a/apps/browser/src/background/models/addLoginQueueMessage.ts b/apps/browser/src/background/models/addLoginQueueMessage.ts new file mode 100644 index 0000000000..ba13071262 --- /dev/null +++ b/apps/browser/src/background/models/addLoginQueueMessage.ts @@ -0,0 +1,7 @@ +import NotificationQueueMessage from "./notificationQueueMessage"; + +export default class AddLoginQueueMessage extends NotificationQueueMessage { + username: string; + password: string; + uri: string; +} diff --git a/apps/browser/src/background/models/addLoginRuntimeMessage.ts b/apps/browser/src/background/models/addLoginRuntimeMessage.ts new file mode 100644 index 0000000000..e234edeb67 --- /dev/null +++ b/apps/browser/src/background/models/addLoginRuntimeMessage.ts @@ -0,0 +1,5 @@ +export default class AddLoginRuntimeMessage { + username: string; + password: string; + url: string; +} diff --git a/apps/browser/src/background/models/changePasswordRuntimeMessage.ts b/apps/browser/src/background/models/changePasswordRuntimeMessage.ts new file mode 100644 index 0000000000..072848226e --- /dev/null +++ b/apps/browser/src/background/models/changePasswordRuntimeMessage.ts @@ -0,0 +1,5 @@ +export default class ChangePasswordRuntimeMessage { + currentPassword: string; + newPassword: string; + url: string; +} diff --git a/apps/browser/src/background/models/iconDetails.ts b/apps/browser/src/background/models/iconDetails.ts new file mode 100644 index 0000000000..3d60a735fc --- /dev/null +++ b/apps/browser/src/background/models/iconDetails.ts @@ -0,0 +1,8 @@ +export default interface IconDetails { + path: { + 19: string; + 38: string; + }; + // Chrome does not support windowId, only Firefox + windowId?: number; +} diff --git a/apps/browser/src/background/models/lockedVaultPendingNotificationsItem.ts b/apps/browser/src/background/models/lockedVaultPendingNotificationsItem.ts new file mode 100644 index 0000000000..ec697b1699 --- /dev/null +++ b/apps/browser/src/background/models/lockedVaultPendingNotificationsItem.ts @@ -0,0 +1,7 @@ +export default class LockedVaultPendingNotificationsItem { + commandToRetry: { + msg: any; + sender: chrome.runtime.MessageSender; + }; + target: string; +} diff --git a/apps/browser/src/background/models/notificationQueueMessage.ts b/apps/browser/src/background/models/notificationQueueMessage.ts new file mode 100644 index 0000000000..f0984133ae --- /dev/null +++ b/apps/browser/src/background/models/notificationQueueMessage.ts @@ -0,0 +1,9 @@ +import { NotificationQueueMessageType } from "./notificationQueueMessageType"; + +export default class NotificationQueueMessage { + type: NotificationQueueMessageType; + domain: string; + tabId: number; + expires: Date; + wasVaultLocked: boolean; +} diff --git a/apps/browser/src/background/models/notificationQueueMessageType.ts b/apps/browser/src/background/models/notificationQueueMessageType.ts new file mode 100644 index 0000000000..f5e4115c4f --- /dev/null +++ b/apps/browser/src/background/models/notificationQueueMessageType.ts @@ -0,0 +1,4 @@ +export enum NotificationQueueMessageType { + AddLogin = 0, + ChangePassword = 1, +} diff --git a/apps/browser/src/background/nativeMessaging.background.ts b/apps/browser/src/background/nativeMessaging.background.ts new file mode 100644 index 0000000000..e48345be11 --- /dev/null +++ b/apps/browser/src/background/nativeMessaging.background.ts @@ -0,0 +1,379 @@ +import { AppIdService } from "jslib-common/abstractions/appId.service"; +import { AuthService } from "jslib-common/abstractions/auth.service"; +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 { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { Utils } from "jslib-common/misc/utils"; +import { EncString } from "jslib-common/models/domain/encString"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; + +import { BrowserApi } from "../browser/browserApi"; + +import RuntimeBackground from "./runtime.background"; + +const MessageValidTimeout = 10 * 1000; +const EncryptionAlgorithm = "sha1"; + +type Message = { + command: string; + + // Filled in by this service + userId?: string; + timestamp?: number; + + // Used for sharing secret + publicKey?: string; +}; + +type OuterMessage = { + message: Message | EncString; + appId: string; +}; + +type ReceiveMessage = { + timestamp: number; + command: string; + response?: any; + + // Unlock key + keyB64?: string; +}; + +type ReceiveMessageOuter = { + command: string; + appId: string; + + // Should only have one of these. + message?: EncString; + sharedSecret?: string; +}; + +export class NativeMessagingBackground { + private connected = false; + private connecting: boolean; + private port: browser.runtime.Port | chrome.runtime.Port; + + private resolver: any = null; + private privateKey: ArrayBuffer = null; + private publicKey: ArrayBuffer = null; + private secureSetupResolve: any = null; + private sharedSecret: SymmetricCryptoKey; + private appId: string; + private validatingFingerprint: boolean; + + constructor( + private cryptoService: CryptoService, + private cryptoFunctionService: CryptoFunctionService, + private runtimeBackground: RuntimeBackground, + private i18nService: I18nService, + private messagingService: MessagingService, + private appIdService: AppIdService, + private platformUtilsService: PlatformUtilsService, + private stateService: StateService, + private logService: LogService, + private authService: AuthService + ) { + this.stateService.setBiometricFingerprintValidated(false); + + if (chrome?.permissions?.onAdded) { + // Reload extension to activate nativeMessaging + chrome.permissions.onAdded.addListener((permissions) => { + BrowserApi.reloadExtension(null); + }); + } + } + + async connect() { + this.appId = await this.appIdService.getAppId(); + this.stateService.setBiometricFingerprintValidated(false); + + return new Promise((resolve, reject) => { + this.port = BrowserApi.connectNative("com.8bit.bitwarden"); + + this.connecting = true; + + const connectedCallback = () => { + this.connected = true; + this.connecting = false; + resolve(); + }; + + // Safari has a bundled native component which is always available, no need to + // check if the desktop app is running. + if (this.platformUtilsService.isSafari()) { + connectedCallback(); + } + + this.port.onMessage.addListener(async (message: ReceiveMessageOuter) => { + switch (message.command) { + case "connected": + connectedCallback(); + break; + case "disconnected": + if (this.connecting) { + reject("startDesktop"); + } + this.connected = false; + this.port.disconnect(); + break; + case "setupEncryption": { + // Ignore since it belongs to another device + if (message.appId !== this.appId) { + return; + } + + const encrypted = Utils.fromB64ToArray(message.sharedSecret); + const decrypted = await this.cryptoFunctionService.rsaDecrypt( + encrypted.buffer, + this.privateKey, + EncryptionAlgorithm + ); + + if (this.validatingFingerprint) { + this.validatingFingerprint = false; + this.stateService.setBiometricFingerprintValidated(true); + } + this.sharedSecret = new SymmetricCryptoKey(decrypted); + this.secureSetupResolve(); + break; + } + case "invalidateEncryption": + // Ignore since it belongs to another device + if (message.appId !== this.appId) { + return; + } + + this.sharedSecret = null; + this.privateKey = null; + this.connected = false; + + this.messagingService.send("showDialog", { + text: this.i18nService.t("nativeMessagingInvalidEncryptionDesc"), + title: this.i18nService.t("nativeMessagingInvalidEncryptionTitle"), + confirmText: this.i18nService.t("ok"), + type: "error", + }); + break; + case "verifyFingerprint": { + if (this.sharedSecret == null) { + this.validatingFingerprint = true; + this.showFingerprintDialog(); + } + break; + } + case "wrongUserId": + this.showWrongUserDialog(); + break; + default: + // Ignore since it belongs to another device + if (!this.platformUtilsService.isSafari() && message.appId !== this.appId) { + return; + } + + this.onMessage(message.message); + } + }); + + this.port.onDisconnect.addListener((p: any) => { + let error; + if (BrowserApi.isWebExtensionsApi) { + error = p.error.message; + } else { + error = chrome.runtime.lastError.message; + } + + this.sharedSecret = null; + this.privateKey = null; + this.connected = false; + + const reason = error != null ? "desktopIntegrationDisabled" : null; + reject(reason); + }); + }); + } + + showWrongUserDialog() { + this.messagingService.send("showDialog", { + text: this.i18nService.t("nativeMessagingWrongUserDesc"), + title: this.i18nService.t("nativeMessagingWrongUserTitle"), + confirmText: this.i18nService.t("ok"), + type: "error", + }); + } + + async send(message: Message) { + if (!this.connected) { + await this.connect(); + } + + message.userId = await this.stateService.getUserId(); + message.timestamp = Date.now(); + + if (this.platformUtilsService.isSafari()) { + this.postMessage(message as any); + } else { + this.postMessage({ appId: this.appId, message: await this.encryptMessage(message) }); + } + } + + async encryptMessage(message: Message) { + if (this.sharedSecret == null) { + await this.secureCommunication(); + } + + return await this.cryptoService.encrypt(JSON.stringify(message), this.sharedSecret); + } + + getResponse(): Promise { + return new Promise((resolve, reject) => { + this.resolver = resolve; + }); + } + + private postMessage(message: OuterMessage) { + // Wrap in try-catch to when the port disconnected without triggering `onDisconnect`. + try { + this.port.postMessage(message); + } catch (e) { + this.logService.error("NativeMessaging port disconnected, disconnecting."); + + this.sharedSecret = null; + this.privateKey = null; + this.connected = false; + + this.messagingService.send("showDialog", { + text: this.i18nService.t("nativeMessagingInvalidEncryptionDesc"), + title: this.i18nService.t("nativeMessagingInvalidEncryptionTitle"), + confirmText: this.i18nService.t("ok"), + type: "error", + }); + } + } + + private async onMessage(rawMessage: ReceiveMessage | EncString) { + let message = rawMessage as ReceiveMessage; + if (!this.platformUtilsService.isSafari()) { + message = JSON.parse( + await this.cryptoService.decryptToUtf8(rawMessage as EncString, this.sharedSecret) + ); + } + + if (Math.abs(message.timestamp - Date.now()) > MessageValidTimeout) { + this.logService.error("NativeMessage is to old, ignoring."); + return; + } + + switch (message.command) { + case "biometricUnlock": { + await this.stateService.setBiometricAwaitingAcceptance(null); + + if (message.response === "not enabled") { + this.messagingService.send("showDialog", { + text: this.i18nService.t("biometricsNotEnabledDesc"), + title: this.i18nService.t("biometricsNotEnabledTitle"), + confirmText: this.i18nService.t("ok"), + type: "error", + }); + break; + } else if (message.response === "not supported") { + this.messagingService.send("showDialog", { + text: this.i18nService.t("biometricsNotSupportedDesc"), + title: this.i18nService.t("biometricsNotSupportedTitle"), + confirmText: this.i18nService.t("ok"), + type: "error", + }); + break; + } + + const enabled = await this.stateService.getBiometricUnlock(); + if (enabled === null || enabled === false) { + if (message.response === "unlocked") { + await this.stateService.setBiometricUnlock(true); + } + break; + } + + // Ignore unlock if already unlocked + if ((await this.authService.getAuthStatus()) === AuthenticationStatus.Unlocked) { + break; + } + + if (message.response === "unlocked") { + await this.cryptoService.setKey( + new SymmetricCryptoKey(Utils.fromB64ToArray(message.keyB64).buffer) + ); + + // Verify key is correct by attempting to decrypt a secret + try { + await this.cryptoService.getFingerprint(await this.stateService.getUserId()); + } catch (e) { + this.logService.error("Unable to verify key: " + e); + await this.cryptoService.clearKey(); + this.showWrongUserDialog(); + + // Exit early + if (this.resolver) { + this.resolver(message); + } + return; + } + + await this.stateService.setBiometricLocked(false); + this.runtimeBackground.processMessage({ command: "unlocked" }, null, null); + } + break; + } + default: + this.logService.error("NativeMessage, got unknown command: " + message.command); + break; + } + + if (this.resolver) { + this.resolver(message); + } + } + + private async secureCommunication() { + const [publicKey, privateKey] = await this.cryptoFunctionService.rsaGenerateKeyPair(2048); + this.publicKey = publicKey; + this.privateKey = privateKey; + + this.sendUnencrypted({ + command: "setupEncryption", + publicKey: Utils.fromBufferToB64(publicKey), + userId: await this.stateService.getUserId(), + }); + + return new Promise((resolve, reject) => (this.secureSetupResolve = resolve)); + } + + private async sendUnencrypted(message: Message) { + if (!this.connected) { + await this.connect(); + } + + message.timestamp = Date.now(); + + this.postMessage({ appId: this.appId, message: message }); + } + + private async showFingerprintDialog() { + const fingerprint = ( + await this.cryptoService.getFingerprint(await this.stateService.getUserId(), this.publicKey) + ).join(" "); + + this.messagingService.send("showDialog", { + html: `${this.i18nService.t( + "desktopIntegrationVerificationText" + )}

${fingerprint}`, + title: this.i18nService.t("desktopSyncVerificationTitle"), + confirmText: this.i18nService.t("ok"), + type: "warning", + }); + } +} diff --git a/apps/browser/src/background/notification.background.ts b/apps/browser/src/background/notification.background.ts new file mode 100644 index 0000000000..366eddc61a --- /dev/null +++ b/apps/browser/src/background/notification.background.ts @@ -0,0 +1,449 @@ +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { Utils } from "jslib-common/misc/utils"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { LoginUriView } from "jslib-common/models/view/loginUriView"; +import { LoginView } from "jslib-common/models/view/loginView"; + +import { BrowserApi } from "../browser/browserApi"; +import { AutofillService } from "../services/abstractions/autofill.service"; +import { StateService } from "../services/abstractions/state.service"; + +import AddChangePasswordQueueMessage from "./models/addChangePasswordQueueMessage"; +import AddLoginQueueMessage from "./models/addLoginQueueMessage"; +import AddLoginRuntimeMessage from "./models/addLoginRuntimeMessage"; +import ChangePasswordRuntimeMessage from "./models/changePasswordRuntimeMessage"; +import LockedVaultPendingNotificationsItem from "./models/lockedVaultPendingNotificationsItem"; +import { NotificationQueueMessageType } from "./models/notificationQueueMessageType"; + +export default class NotificationBackground { + private notificationQueue: (AddLoginQueueMessage | AddChangePasswordQueueMessage)[] = []; + + constructor( + private autofillService: AutofillService, + private cipherService: CipherService, + private authService: AuthService, + private policyService: PolicyService, + private folderService: FolderService, + private stateService: StateService + ) {} + + async init() { + if (chrome.runtime == null) { + return; + } + + BrowserApi.messageListener( + "notification.background", + async (msg: any, sender: chrome.runtime.MessageSender) => { + await this.processMessage(msg, sender); + } + ); + + this.cleanupNotificationQueue(); + } + + async processMessage(msg: any, sender: chrome.runtime.MessageSender) { + switch (msg.command) { + case "unlockCompleted": + if (msg.data.target !== "notification.background") { + return; + } + await this.processMessage(msg.data.commandToRetry.msg, msg.data.commandToRetry.sender); + break; + case "bgGetDataForTab": + await this.getDataForTab(sender.tab, msg.responseCommand); + break; + case "bgCloseNotificationBar": + await BrowserApi.tabSendMessageData(sender.tab, "closeNotificationBar"); + break; + case "bgAdjustNotificationBar": + await BrowserApi.tabSendMessageData(sender.tab, "adjustNotificationBar", msg.data); + break; + case "bgAddLogin": + await this.addLogin(msg.login, sender.tab); + break; + case "bgChangedPassword": + await this.changedPassword(msg.data, sender.tab); + break; + case "bgAddClose": + case "bgChangeClose": + this.removeTabFromNotificationQueue(sender.tab); + break; + case "bgAddSave": + case "bgChangeSave": + if ((await this.authService.getAuthStatus()) < AuthenticationStatus.Unlocked) { + const retryMessage: LockedVaultPendingNotificationsItem = { + commandToRetry: { + msg: msg, + sender: sender, + }, + target: "notification.background", + }; + await BrowserApi.tabSendMessageData( + sender.tab, + "addToLockedVaultPendingNotifications", + retryMessage + ); + await BrowserApi.tabSendMessageData(sender.tab, "promptForLogin"); + return; + } + await this.saveOrUpdateCredentials(sender.tab, msg.folder); + break; + case "bgNeverSave": + await this.saveNever(sender.tab); + break; + case "collectPageDetailsResponse": + switch (msg.sender) { + case "notificationBar": { + const forms = this.autofillService.getFormsWithPasswordFields(msg.details); + await BrowserApi.tabSendMessageData(msg.tab, "notificationBarPageDetails", { + details: msg.details, + forms: forms, + }); + break; + } + default: + break; + } + break; + default: + break; + } + } + + async checkNotificationQueue(tab: chrome.tabs.Tab = null): Promise { + if (this.notificationQueue.length === 0) { + return; + } + + if (tab != null) { + this.doNotificationQueueCheck(tab); + return; + } + + const currentTab = await BrowserApi.getTabFromCurrentWindow(); + if (currentTab != null) { + this.doNotificationQueueCheck(currentTab); + } + } + + private cleanupNotificationQueue() { + for (let i = this.notificationQueue.length - 1; i >= 0; i--) { + if (this.notificationQueue[i].expires < new Date()) { + this.notificationQueue.splice(i, 1); + } + } + setTimeout(() => this.cleanupNotificationQueue(), 2 * 60 * 1000); // check every 2 minutes + } + + private doNotificationQueueCheck(tab: chrome.tabs.Tab): void { + if (tab == null) { + return; + } + + const tabDomain = Utils.getDomain(tab.url); + if (tabDomain == null) { + return; + } + + for (let i = 0; i < this.notificationQueue.length; i++) { + if ( + this.notificationQueue[i].tabId !== tab.id || + this.notificationQueue[i].domain !== tabDomain + ) { + continue; + } + + if (this.notificationQueue[i].type === NotificationQueueMessageType.AddLogin) { + BrowserApi.tabSendMessageData(tab, "openNotificationBar", { + type: "add", + typeData: { + isVaultLocked: this.notificationQueue[i].wasVaultLocked, + }, + }); + } else if (this.notificationQueue[i].type === NotificationQueueMessageType.ChangePassword) { + BrowserApi.tabSendMessageData(tab, "openNotificationBar", { + type: "change", + typeData: { + isVaultLocked: this.notificationQueue[i].wasVaultLocked, + }, + }); + } + break; + } + } + + private removeTabFromNotificationQueue(tab: chrome.tabs.Tab) { + for (let i = this.notificationQueue.length - 1; i >= 0; i--) { + if (this.notificationQueue[i].tabId === tab.id) { + this.notificationQueue.splice(i, 1); + } + } + } + + private async addLogin(loginInfo: AddLoginRuntimeMessage, tab: chrome.tabs.Tab) { + const authStatus = await this.authService.getAuthStatus(); + if (authStatus === AuthenticationStatus.LoggedOut) { + return; + } + + const loginDomain = Utils.getDomain(loginInfo.url); + if (loginDomain == null) { + return; + } + + let normalizedUsername = loginInfo.username; + if (normalizedUsername != null) { + normalizedUsername = normalizedUsername.toLowerCase(); + } + + const disabledAddLogin = await this.stateService.getDisableAddLoginNotification(); + if (authStatus === AuthenticationStatus.Locked) { + if (disabledAddLogin) { + return; + } + + if (!(await this.allowPersonalOwnership())) { + return; + } + + this.pushAddLoginToQueue(loginDomain, loginInfo, tab, true); + return; + } + + const ciphers = await this.cipherService.getAllDecryptedForUrl(loginInfo.url); + const usernameMatches = ciphers.filter( + (c) => c.login.username != null && c.login.username.toLowerCase() === normalizedUsername + ); + if (usernameMatches.length === 0) { + if (disabledAddLogin) { + return; + } + + if (!(await this.allowPersonalOwnership())) { + return; + } + + this.pushAddLoginToQueue(loginDomain, loginInfo, tab); + } else if ( + usernameMatches.length === 1 && + usernameMatches[0].login.password !== loginInfo.password + ) { + const disabledChangePassword = + await this.stateService.getDisableChangedPasswordNotification(); + if (disabledChangePassword) { + return; + } + this.pushChangePasswordToQueue(usernameMatches[0].id, loginDomain, loginInfo.password, tab); + } + } + + private async pushAddLoginToQueue( + loginDomain: string, + loginInfo: AddLoginRuntimeMessage, + tab: chrome.tabs.Tab, + isVaultLocked = false + ) { + // remove any old messages for this tab + this.removeTabFromNotificationQueue(tab); + const message: AddLoginQueueMessage = { + type: NotificationQueueMessageType.AddLogin, + username: loginInfo.username, + password: loginInfo.password, + domain: loginDomain, + uri: loginInfo.url, + tabId: tab.id, + expires: new Date(new Date().getTime() + 5 * 60000), // 5 minutes + wasVaultLocked: isVaultLocked, + }; + this.notificationQueue.push(message); + await this.checkNotificationQueue(tab); + } + + private async changedPassword(changeData: ChangePasswordRuntimeMessage, tab: chrome.tabs.Tab) { + const loginDomain = Utils.getDomain(changeData.url); + if (loginDomain == null) { + return; + } + + if ((await this.authService.getAuthStatus()) < AuthenticationStatus.Unlocked) { + this.pushChangePasswordToQueue(null, loginDomain, changeData.newPassword, tab, true); + return; + } + + let id: string = null; + const ciphers = await this.cipherService.getAllDecryptedForUrl(changeData.url); + if (changeData.currentPassword != null) { + const passwordMatches = ciphers.filter( + (c) => c.login.password === changeData.currentPassword + ); + if (passwordMatches.length === 1) { + id = passwordMatches[0].id; + } + } else if (ciphers.length === 1) { + id = ciphers[0].id; + } + if (id != null) { + this.pushChangePasswordToQueue(id, loginDomain, changeData.newPassword, tab); + } + } + + private async pushChangePasswordToQueue( + cipherId: string, + loginDomain: string, + newPassword: string, + tab: chrome.tabs.Tab, + isVaultLocked = false + ) { + // remove any old messages for this tab + this.removeTabFromNotificationQueue(tab); + const message: AddChangePasswordQueueMessage = { + type: NotificationQueueMessageType.ChangePassword, + cipherId: cipherId, + newPassword: newPassword, + domain: loginDomain, + tabId: tab.id, + expires: new Date(new Date().getTime() + 5 * 60000), // 5 minutes + wasVaultLocked: isVaultLocked, + }; + this.notificationQueue.push(message); + await this.checkNotificationQueue(tab); + } + + private async saveOrUpdateCredentials(tab: chrome.tabs.Tab, folderId?: string) { + for (let i = this.notificationQueue.length - 1; i >= 0; i--) { + const queueMessage = this.notificationQueue[i]; + if ( + queueMessage.tabId !== tab.id || + (queueMessage.type !== NotificationQueueMessageType.AddLogin && + queueMessage.type !== NotificationQueueMessageType.ChangePassword) + ) { + continue; + } + + const tabDomain = Utils.getDomain(tab.url); + if (tabDomain != null && tabDomain !== queueMessage.domain) { + continue; + } + + this.notificationQueue.splice(i, 1); + BrowserApi.tabSendMessageData(tab, "closeNotificationBar"); + + if (queueMessage.type === NotificationQueueMessageType.ChangePassword) { + const changePasswordMessage = queueMessage as AddChangePasswordQueueMessage; + const cipher = await this.getDecryptedCipherById(changePasswordMessage.cipherId); + if (cipher == null) { + return; + } + await this.updateCipher(cipher, changePasswordMessage.newPassword); + return; + } + + if (queueMessage.type === NotificationQueueMessageType.AddLogin) { + if (!queueMessage.wasVaultLocked) { + await this.createNewCipher(queueMessage as AddLoginQueueMessage, folderId); + BrowserApi.tabSendMessageData(tab, "addedCipher"); + return; + } + + // If the vault was locked, check if a cipher needs updating instead of creating a new one + const addLoginMessage = queueMessage as AddLoginQueueMessage; + const ciphers = await this.cipherService.getAllDecryptedForUrl(addLoginMessage.uri); + const usernameMatches = ciphers.filter( + (c) => + c.login.username != null && c.login.username.toLowerCase() === addLoginMessage.username + ); + + if (usernameMatches.length >= 1) { + await this.updateCipher(usernameMatches[0], addLoginMessage.password); + return; + } + + await this.createNewCipher(addLoginMessage, folderId); + BrowserApi.tabSendMessageData(tab, "addedCipher"); + } + } + } + + private async createNewCipher(queueMessage: AddLoginQueueMessage, folderId: string) { + const loginModel = new LoginView(); + const loginUri = new LoginUriView(); + loginUri.uri = queueMessage.uri; + loginModel.uris = [loginUri]; + loginModel.username = queueMessage.username; + loginModel.password = queueMessage.password; + const model = new CipherView(); + model.name = Utils.getHostname(queueMessage.uri) || queueMessage.domain; + model.name = model.name.replace(/^www\./, ""); + model.type = CipherType.Login; + model.login = loginModel; + + if (!Utils.isNullOrWhitespace(folderId)) { + const folders = await this.folderService.getAllDecrypted(); + if (folders.some((x) => x.id === folderId)) { + model.folderId = folderId; + } + } + + const cipher = await this.cipherService.encrypt(model); + await this.cipherService.saveWithServer(cipher); + } + + private async getDecryptedCipherById(cipherId: string) { + const cipher = await this.cipherService.get(cipherId); + if (cipher != null && cipher.type === CipherType.Login) { + return await cipher.decrypt(); + } + return null; + } + + private async updateCipher(cipher: CipherView, newPassword: string) { + if (cipher != null && cipher.type === CipherType.Login) { + cipher.login.password = newPassword; + const newCipher = await this.cipherService.encrypt(cipher); + await this.cipherService.saveWithServer(newCipher); + } + } + + private async saveNever(tab: chrome.tabs.Tab) { + for (let i = this.notificationQueue.length - 1; i >= 0; i--) { + const queueMessage = this.notificationQueue[i]; + if ( + queueMessage.tabId !== tab.id || + queueMessage.type !== NotificationQueueMessageType.AddLogin + ) { + continue; + } + + const tabDomain = Utils.getDomain(tab.url); + if (tabDomain != null && tabDomain !== queueMessage.domain) { + continue; + } + + this.notificationQueue.splice(i, 1); + BrowserApi.tabSendMessageData(tab, "closeNotificationBar"); + + const hostname = Utils.getHostname(tab.url); + await this.cipherService.saveNeverDomain(hostname); + } + } + + private async getDataForTab(tab: chrome.tabs.Tab, responseCommand: string) { + const responseData: any = {}; + if (responseCommand === "notificationBarGetFoldersList") { + responseData.folders = await this.folderService.getAllDecrypted(); + } + + await BrowserApi.tabSendMessageData(tab, responseCommand, responseData); + } + + private async allowPersonalOwnership(): Promise { + return !(await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership)); + } +} diff --git a/apps/browser/src/background/runtime.background.ts b/apps/browser/src/background/runtime.background.ts new file mode 100644 index 0000000000..9c5ce75fac --- /dev/null +++ b/apps/browser/src/background/runtime.background.ts @@ -0,0 +1,235 @@ +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 { NotificationsService } from "jslib-common/abstractions/notifications.service"; +import { SystemService } from "jslib-common/abstractions/system.service"; +import { Utils } from "jslib-common/misc/utils"; + +import { BrowserApi } from "../browser/browserApi"; +import { AutofillService } from "../services/abstractions/autofill.service"; +import BrowserPlatformUtilsService from "../services/browserPlatformUtils.service"; + +import MainBackground from "./main.background"; +import LockedVaultPendingNotificationsItem from "./models/lockedVaultPendingNotificationsItem"; + +export default class RuntimeBackground { + private autofillTimeout: any; + private pageDetailsToAutoFill: any[] = []; + private onInstalledReason: string = null; + private lockedVaultPendingNotifications: LockedVaultPendingNotificationsItem[] = []; + + constructor( + private main: MainBackground, + private autofillService: AutofillService, + private platformUtilsService: BrowserPlatformUtilsService, + private i18nService: I18nService, + private notificationsService: NotificationsService, + private systemService: SystemService, + private environmentService: EnvironmentService, + private messagingService: MessagingService, + private logService: LogService + ) { + // onInstalled listener must be wired up before anything else, so we do it in the ctor + chrome.runtime.onInstalled.addListener((details: any) => { + this.onInstalledReason = details.reason; + }); + } + + async init() { + if (!chrome.runtime) { + return; + } + + await this.checkOnInstalled(); + const backgroundMessageListener = async ( + msg: any, + sender: chrome.runtime.MessageSender, + sendResponse: any + ) => { + await this.processMessage(msg, sender, sendResponse); + }; + + BrowserApi.messageListener("runtime.background", backgroundMessageListener); + if (this.main.isPrivateMode) { + (window as any).bitwardenBackgroundMessageListener = backgroundMessageListener; + } + } + + async processMessage(msg: any, sender: any, sendResponse: any) { + switch (msg.command) { + case "loggedIn": + case "unlocked": { + let item: LockedVaultPendingNotificationsItem; + + if (this.lockedVaultPendingNotifications?.length > 0) { + await BrowserApi.closeLoginTab(); + + item = this.lockedVaultPendingNotifications.pop(); + if (item.commandToRetry.sender?.tab?.id) { + await BrowserApi.focusSpecifiedTab(item.commandToRetry.sender.tab.id); + } + } + + await this.main.setIcon(); + await this.main.refreshBadgeAndMenu(false); + this.notificationsService.updateConnection(msg.command === "unlocked"); + this.systemService.cancelProcessReload(); + + if (item) { + await BrowserApi.tabSendMessageData( + item.commandToRetry.sender.tab, + "unlockCompleted", + item + ); + } + break; + } + case "addToLockedVaultPendingNotifications": + this.lockedVaultPendingNotifications.push(msg.data); + break; + case "logout": + await this.main.logout(msg.expired, msg.userId); + break; + case "syncCompleted": + if (msg.successfully) { + setTimeout(async () => await this.main.refreshBadgeAndMenu(), 2000); + } + break; + case "openPopup": + await this.main.openPopup(); + break; + case "promptForLogin": + await BrowserApi.createNewTab("popup/index.html?uilocation=popout", true, true); + break; + case "showDialogResolve": + this.platformUtilsService.resolveDialogPromise(msg.dialogId, msg.confirmed); + break; + case "bgCollectPageDetails": + await this.main.collectPageDetailsForContentScript(sender.tab, msg.sender, sender.frameId); + break; + case "bgUpdateContextMenu": + case "editedCipher": + case "addedCipher": + case "deletedCipher": + await this.main.refreshBadgeAndMenu(); + break; + case "bgReseedStorage": + await this.main.reseedStorage(); + break; + case "collectPageDetailsResponse": + switch (msg.sender) { + case "autofiller": + case "autofill_cmd": { + const totpCode = await this.autofillService.doAutoFillActiveTab( + [ + { + frameId: sender.frameId, + tab: msg.tab, + details: msg.details, + }, + ], + msg.sender === "autofill_cmd" + ); + if (totpCode != null) { + this.platformUtilsService.copyToClipboard(totpCode, { window: window }); + } + break; + } + case "contextMenu": + clearTimeout(this.autofillTimeout); + this.pageDetailsToAutoFill.push({ + frameId: sender.frameId, + tab: msg.tab, + details: msg.details, + }); + this.autofillTimeout = setTimeout(async () => await this.autofillPage(), 300); + break; + default: + break; + } + break; + case "authResult": { + const vaultUrl = this.environmentService.getWebVaultUrl(); + + if (msg.referrer == null || Utils.getHostname(vaultUrl) !== msg.referrer) { + return; + } + + try { + BrowserApi.createNewTab( + "popup/index.html?uilocation=popout#/sso?code=" + + encodeURIComponent(msg.code) + + "&state=" + + encodeURIComponent(msg.state) + ); + } catch { + this.logService.error("Unable to open sso popout tab"); + } + break; + } + case "webAuthnResult": { + const vaultUrl = this.environmentService.getWebVaultUrl(); + + if (msg.referrer == null || Utils.getHostname(vaultUrl) !== msg.referrer) { + return; + } + + const params = + `webAuthnResponse=${encodeURIComponent(msg.data)};` + + `remember=${encodeURIComponent(msg.remember)}`; + BrowserApi.createNewTab( + `popup/index.html?uilocation=popout#/2fa;${params}`, + undefined, + false + ); + break; + } + case "reloadPopup": + this.messagingService.send("reloadPopup"); + break; + case "emailVerificationRequired": + this.messagingService.send("showDialog", { + dialogId: "emailVerificationRequired", + title: this.i18nService.t("emailVerificationRequired"), + text: this.i18nService.t("emailVerificationRequiredDesc"), + confirmText: this.i18nService.t("ok"), + type: "info", + }); + break; + case "getClickedElementResponse": + this.platformUtilsService.copyToClipboard(msg.identifier, { window: window }); + break; + default: + break; + } + } + + private async autofillPage() { + const totpCode = await this.autofillService.doAutoFill({ + cipher: this.main.loginToAutoFill, + pageDetails: this.pageDetailsToAutoFill, + fillNewPassword: true, + }); + + if (totpCode != null) { + this.platformUtilsService.copyToClipboard(totpCode, { window: window }); + } + + // reset + this.main.loginToAutoFill = null; + this.pageDetailsToAutoFill = []; + } + + private async checkOnInstalled() { + setTimeout(async () => { + if (this.onInstalledReason != null) { + if (this.onInstalledReason === "install") { + BrowserApi.createNewTab("https://bitwarden.com/browser-start/"); + } + + this.onInstalledReason = null; + } + }, 100); + } +} diff --git a/apps/browser/src/background/tabs.background.ts b/apps/browser/src/background/tabs.background.ts new file mode 100644 index 0000000000..ba56d99692 --- /dev/null +++ b/apps/browser/src/background/tabs.background.ts @@ -0,0 +1,63 @@ +import MainBackground from "./main.background"; +import NotificationBackground from "./notification.background"; + +export default class TabsBackground { + constructor( + private main: MainBackground, + private notificationBackground: NotificationBackground + ) {} + + private focusedWindowId: number; + + async init() { + if (!chrome.tabs || !chrome.windows) { + return; + } + + chrome.windows.onFocusChanged.addListener(async (windowId: number) => { + if (windowId === null || windowId < 0) { + return; + } + + this.focusedWindowId = windowId; + this.main.messagingService.send("windowChanged"); + }); + + chrome.tabs.onActivated.addListener(async (activeInfo: chrome.tabs.TabActiveInfo) => { + await this.main.refreshBadgeAndMenu(); + this.main.messagingService.send("tabChanged"); + }); + + chrome.tabs.onReplaced.addListener(async (addedTabId: number, removedTabId: number) => { + if (this.main.onReplacedRan) { + return; + } + this.main.onReplacedRan = true; + + await this.notificationBackground.checkNotificationQueue(); + await this.main.refreshBadgeAndMenu(); + this.main.messagingService.send("tabChanged"); + }); + + chrome.tabs.onUpdated.addListener( + async (tabId: number, changeInfo: chrome.tabs.TabChangeInfo, tab: chrome.tabs.Tab) => { + if (this.focusedWindowId > 0 && tab.windowId != this.focusedWindowId) { + return; + } + + if (!tab.active) { + return; + } + + if (this.main.onUpdatedRan) { + return; + } + this.main.onUpdatedRan = true; + + await this.notificationBackground.checkNotificationQueue(tab); + await this.main.refreshBadgeAndMenu(); + this.main.messagingService.send("tabChanged"); + } + ); + } +} diff --git a/apps/browser/src/background/webRequest.background.ts b/apps/browser/src/background/webRequest.background.ts new file mode 100644 index 0000000000..ad78ae7085 --- /dev/null +++ b/apps/browser/src/background/webRequest.background.ts @@ -0,0 +1,96 @@ +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { UriMatchType } from "jslib-common/enums/uriMatchType"; + +export default class WebRequestBackground { + private pendingAuthRequests: any[] = []; + private webRequest: any; + private isFirefox: boolean; + + constructor( + platformUtilsService: PlatformUtilsService, + private cipherService: CipherService, + private authService: AuthService + ) { + this.webRequest = (window as any).chrome.webRequest; + this.isFirefox = platformUtilsService.isFirefox(); + } + + async init() { + if (!this.webRequest || !this.webRequest.onAuthRequired) { + return; + } + + this.webRequest.onAuthRequired.addListener( + async (details: any, callback: any) => { + if (!details.url || this.pendingAuthRequests.indexOf(details.requestId) !== -1) { + if (callback) { + callback(); + } + return; + } + + this.pendingAuthRequests.push(details.requestId); + + if (this.isFirefox) { + // eslint-disable-next-line + return new Promise(async (resolve, reject) => { + await this.resolveAuthCredentials(details.url, resolve, reject); + }); + } else { + await this.resolveAuthCredentials(details.url, callback, callback); + } + }, + { urls: ["http://*/*", "https://*/*"] }, + [this.isFirefox ? "blocking" : "asyncBlocking"] + ); + + this.webRequest.onCompleted.addListener((details: any) => this.completeAuthRequest(details), { + urls: ["http://*/*"], + }); + this.webRequest.onErrorOccurred.addListener( + (details: any) => this.completeAuthRequest(details), + { + urls: ["http://*/*"], + } + ); + } + + // eslint-disable-next-line + private async resolveAuthCredentials(domain: string, success: Function, error: Function) { + if ((await this.authService.getAuthStatus()) < AuthenticationStatus.Unlocked) { + error(); + return; + } + + try { + const ciphers = await this.cipherService.getAllDecryptedForUrl( + domain, + null, + UriMatchType.Host + ); + if (ciphers == null || ciphers.length !== 1) { + error(); + return; + } + + success({ + authCredentials: { + username: ciphers[0].login.username, + password: ciphers[0].login.password, + }, + }); + } catch { + error(); + } + } + + private completeAuthRequest(details: any) { + const i = this.pendingAuthRequests.indexOf(details.requestId); + if (i > -1) { + this.pendingAuthRequests.splice(i, 1); + } + } +} diff --git a/apps/browser/src/browser/browserApi.ts b/apps/browser/src/browser/browserApi.ts new file mode 100644 index 0000000000..bc421fad4b --- /dev/null +++ b/apps/browser/src/browser/browserApi.ts @@ -0,0 +1,236 @@ +import { Utils } from "jslib-common/misc/utils"; + +import { SafariApp } from "./safariApp"; + +export class BrowserApi { + static isWebExtensionsApi: boolean = typeof browser !== "undefined"; + static isSafariApi: boolean = + navigator.userAgent.indexOf(" Safari/") !== -1 && + navigator.userAgent.indexOf(" Chrome/") === -1 && + navigator.userAgent.indexOf(" Chromium/") === -1; + static isChromeApi: boolean = !BrowserApi.isSafariApi && typeof chrome !== "undefined"; + static isFirefoxOnAndroid: boolean = + navigator.userAgent.indexOf("Firefox/") !== -1 && navigator.userAgent.indexOf("Android") !== -1; + + static async getTabFromCurrentWindowId(): Promise | null { + return await BrowserApi.tabsQueryFirst({ + active: true, + windowId: chrome.windows.WINDOW_ID_CURRENT, + }); + } + + static async getTabFromCurrentWindow(): Promise | null { + return await BrowserApi.tabsQueryFirst({ + active: true, + currentWindow: true, + }); + } + + static async getActiveTabs(): Promise { + return await BrowserApi.tabsQuery({ + active: true, + }); + } + + static async tabsQuery(options: chrome.tabs.QueryInfo): Promise { + return new Promise((resolve) => { + chrome.tabs.query(options, (tabs: any[]) => { + resolve(tabs); + }); + }); + } + + static async tabsQueryFirst(options: chrome.tabs.QueryInfo): Promise | null { + const tabs = await BrowserApi.tabsQuery(options); + if (tabs.length > 0) { + return tabs[0]; + } + + return null; + } + + static tabSendMessageData( + tab: chrome.tabs.Tab, + command: string, + data: any = null + ): Promise { + const obj: any = { + command: command, + }; + + if (data != null) { + obj.data = data; + } + + return BrowserApi.tabSendMessage(tab, obj); + } + + static async tabSendMessage( + tab: chrome.tabs.Tab, + obj: any, + options: chrome.tabs.MessageSendOptions = null + ): Promise { + if (!tab || !tab.id) { + return; + } + + return new Promise((resolve) => { + chrome.tabs.sendMessage(tab.id, obj, options, () => { + if (chrome.runtime.lastError) { + // Some error happened + } + resolve(); + }); + }); + } + + static async getPrivateModeWindows(): Promise { + return (await browser.windows.getAll()).filter((win) => win.incognito); + } + + static async onWindowCreated(callback: (win: chrome.windows.Window) => any) { + return chrome.windows.onCreated.addListener(callback); + } + + static getBackgroundPage(): any { + return chrome.extension.getBackgroundPage(); + } + + static getApplicationVersion(): string { + return chrome.runtime.getManifest().version; + } + + static async isPopupOpen(): Promise { + return Promise.resolve(chrome.extension.getViews({ type: "popup" }).length > 0); + } + + static createNewTab(url: string, extensionPage = false, active = true) { + chrome.tabs.create({ url: url, active: active }); + } + + static messageListener( + name: string, + callback: (message: any, sender: chrome.runtime.MessageSender, response: any) => void + ) { + chrome.runtime.onMessage.addListener( + (msg: any, sender: chrome.runtime.MessageSender, response: any) => { + callback(msg, sender, response); + } + ); + } + + static async closeLoginTab() { + const tabs = await BrowserApi.tabsQuery({ + active: true, + title: "Bitwarden", + windowType: "normal", + currentWindow: true, + }); + + if (tabs.length === 0) { + return; + } + + const tabToClose = tabs[tabs.length - 1].id; + chrome.tabs.remove(tabToClose); + } + + static async focusSpecifiedTab(tabId: number) { + chrome.tabs.update(tabId, { active: true, highlighted: true }); + } + + static closePopup(win: Window) { + if (BrowserApi.isWebExtensionsApi && BrowserApi.isFirefoxOnAndroid) { + // Reactivating the active tab dismisses the popup tab. The promise final + // condition is only called if the popup wasn't already dismissed (future proofing). + // ref: https://bugzilla.mozilla.org/show_bug.cgi?id=1433604 + browser.tabs.update({ active: true }).finally(win.close); + } else { + win.close(); + } + } + + static downloadFile(win: Window, blobData: any, blobOptions: any, fileName: string) { + if (BrowserApi.isSafariApi) { + const type = blobOptions != null ? blobOptions.type : null; + let data: string = null; + if (type === "text/plain" && typeof blobData === "string") { + data = blobData; + } else { + data = Utils.fromBufferToB64(blobData); + } + SafariApp.sendMessageToApp( + "downloadFile", + JSON.stringify({ + blobData: data, + blobOptions: blobOptions, + fileName: fileName, + }), + true + ); + } else { + const blob = new Blob([blobData], blobOptions); + if (navigator.msSaveOrOpenBlob) { + navigator.msSaveBlob(blob, fileName); + } else { + const a = win.document.createElement("a"); + a.href = URL.createObjectURL(blob); + a.download = fileName; + win.document.body.appendChild(a); + a.click(); + win.document.body.removeChild(a); + } + } + } + + static gaFilter() { + return process.env.ENV !== "production"; + } + + static getUILanguage(win: Window) { + return chrome.i18n.getUILanguage(); + } + + static reloadExtension(win: Window) { + if (win != null) { + return win.location.reload(true); + } else { + return chrome.runtime.reload(); + } + } + + static reloadOpenWindows() { + const views = chrome.extension.getViews() as Window[]; + views + .filter((w) => w.location.href != null) + .forEach((w) => { + w.location.reload(); + }); + } + + static connectNative(application: string): browser.runtime.Port | chrome.runtime.Port { + if (BrowserApi.isWebExtensionsApi) { + return browser.runtime.connectNative(application); + } else if (BrowserApi.isChromeApi) { + return chrome.runtime.connectNative(application); + } + } + + static requestPermission(permission: any) { + if (BrowserApi.isWebExtensionsApi) { + return browser.permissions.request(permission); + } + return new Promise((resolve, reject) => { + chrome.permissions.request(permission, resolve); + }); + } + + static getPlatformInfo(): Promise { + if (BrowserApi.isWebExtensionsApi) { + return browser.runtime.getPlatformInfo(); + } + return new Promise((resolve) => { + chrome.runtime.getPlatformInfo(resolve); + }); + } +} diff --git a/apps/browser/src/browser/safariApp.ts b/apps/browser/src/browser/safariApp.ts new file mode 100644 index 0000000000..7a86295df6 --- /dev/null +++ b/apps/browser/src/browser/safariApp.ts @@ -0,0 +1,26 @@ +import { BrowserApi } from "./browserApi"; + +export class SafariApp { + static sendMessageToApp(command: string, data: any = null, resolveNow = false): Promise { + if (!BrowserApi.isSafariApi) { + return Promise.resolve(null); + } + return new Promise((resolve) => { + const now = new Date(); + const messageId = + now.getTime().toString() + "_" + Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); + (browser as any).runtime.sendNativeMessage( + "com.bitwarden.desktop", + { + id: messageId, + command: command, + data: data, + responseData: null, + }, + (response: any) => { + resolve(response); + } + ); + }); + } +} diff --git a/apps/browser/src/content/autofill.css b/apps/browser/src/content/autofill.css new file mode 100644 index 0000000000..e495cbf5c4 --- /dev/null +++ b/apps/browser/src/content/autofill.css @@ -0,0 +1,36 @@ +@-webkit-keyframes bitwardenfill { + 0% { + -webkit-transform: scale(1, 1); + } + + 50% { + -webkit-transform: scale(1.2, 1.2); + } + + 100% { + -webkit-transform: scale(1, 1); + } +} + +@-moz-keyframes bitwardenfill { + 0% { + transform: scale(1, 1); + } + + 50% { + transform: scale(1.2, 1.2); + } + + 100% { + transform: scale(1, 1); + } +} + +span[data-bwautofill].com-bitwarden-browser-animated-fill { + display: inline-block; +} + +.com-bitwarden-browser-animated-fill { + animation: bitwardenfill 200ms ease-in-out 0ms 1; + -webkit-animation: bitwardenfill 200ms ease-in-out 0ms 1; +} diff --git a/apps/browser/src/content/autofill.js b/apps/browser/src/content/autofill.js new file mode 100644 index 0000000000..7b285d4cf4 --- /dev/null +++ b/apps/browser/src/content/autofill.js @@ -0,0 +1,1042 @@ +!(function () { + /* + 1Password Extension + + Lovingly handcrafted by Dave Teare, Michael Fey, Rad Azzouz, and Roustem Karimov. + Copyright (c) 2014 AgileBits. All rights reserved. + + ================================================================================ + + Copyright (c) 2014 AgileBits Inc. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + */ + + /* + MODIFICATIONS FROM ORIGINAL + + 1. Populate isFirefox + 2. Remove isChrome and isSafari since they are not used. + 3. Unminify and format to meet Mozilla review requirements. + 4. Remove unnecessary input types from getFormElements query selector and limit number of elements returned. + 5. Remove fakeTested prop. + 6. Rename com.agilebits.* stuff to com.bitwarden.* + 7. Remove "some useful globals" on window + 8. Add ability to autofill span[data-bwautofill] elements + */ + + function collect(document, undefined) { + // START MODIFICATION + var isFirefox = navigator.userAgent.indexOf('Firefox') !== -1 || navigator.userAgent.indexOf('Gecko/') !== -1; + // END MODIFICATION + + document.elementsByOPID = {}; + document.addEventListener('input', function (inputevent) { + inputevent.a !== false && + inputevent.target.tagName.toLowerCase() === 'input' && + (inputevent.target.dataset['com.bitwarden.browser.userEdited'] = 'yes'); + }, true); + + function getPageDetails(theDoc, oneShotId) { + // start helpers + + // get the value of a dom element's attribute + function getElementAttrValue(el, attrName) { + var attrVal = el[attrName]; + if ('string' == typeof attrVal) { + return attrVal; + } + attrVal = el.getAttribute(attrName); + return 'string' == typeof attrVal ? attrVal : null; + } + + // has the element been fake tested? + function checkIfFakeTested(field, el) { + if (-1 === ['text', 'password'].indexOf(el.type.toLowerCase()) || + !(passwordRegEx.test(field.value) || + passwordRegEx.test(field.htmlID) || passwordRegEx.test(field.htmlName) || + passwordRegEx.test(field.placeholder) || passwordRegEx.test(field['label-tag']) || + passwordRegEx.test(field['label-data']) || passwordRegEx.test(field['label-aria']))) { + return false; + } + + if (!field.visible) { + return true; + } + + if ('password' == el.type.toLowerCase()) { + return false; + } + + var elType = el.type; + focusElement(el, true); + return elType !== el.type; + } + + // get the value of a dom element + function getElementValue(el) { + switch (toLowerString(el.type)) { + case 'checkbox': + return el.checked ? '✓' : ''; + + case 'hidden': + el = el.value; + if (!el || 'number' != typeof el.length) { + return ''; + } + 254 < el.length && (el = el.substr(0, 254) + '...SNIPPED'); + return el; + + default: + // START MODIFICATION + if (!el.type && el.tagName.toLowerCase() === 'span') { + return el.innerText; + } + // END MODIFICATION + return el.value; + } + } + + // get all the options for a "select" element + function getSelectElementOptions(el) { + if (!el.options) { + return null; + } + + var options = Array.prototype.slice.call(el.options).map(function (option) { + var optionText = option.text ? + toLowerString(option.text).replace(/\\s/gm, '').replace(/[~`!@$%^&*()\\-_+=:;'\"\\[\\]|\\\\,<.>\\?]/gm, '') : + null; + + return [optionText ? optionText : null, option.value]; + }) + + return { + options: options + }; + } + + // get the top label + function getLabelTop(el) { + var parent; + for (el = el.parentElement || el.parentNode; el && 'td' != toLowerString(el.tagName);) { + el = el.parentElement || el.parentNode; + } + + if (!el || void 0 === el) { + return null; + } + + parent = el.parentElement || el.parentNode; + if ('tr' != parent.tagName.toLowerCase()) { + return null; + } + + parent = parent.previousElementSibling; + if (!parent || 'tr' != (parent.tagName + '').toLowerCase() || + parent.cells && el.cellIndex >= parent.cells.length) { + return null; + } + + el = parent.cells[el.cellIndex]; + var elText = el.textContent || el.innerText; + return elText = cleanText(elText); + } + + // get all the tags for a given label + function getLabelTag(el) { + var docLabel, + theLabels = []; + + if (el.labels && el.labels.length && 0 < el.labels.length) { + theLabels = Array.prototype.slice.call(el.labels); + } else { + if (el.id) { + theLabels = theLabels.concat(Array.prototype.slice.call( + queryDoc(theDoc, 'label[for=' + JSON.stringify(el.id) + ']'))); + } + + if (el.name) { + docLabel = queryDoc(theDoc, 'label[for=' + JSON.stringify(el.name) + ']'); + + for (var labelIndex = 0; labelIndex < docLabel.length; labelIndex++) { + if (-1 === theLabels.indexOf(docLabel[labelIndex])) { + theLabels.push(docLabel[labelIndex]) + } + } + } + + for (var theEl = el; theEl && theEl != theDoc; theEl = theEl.parentNode) { + if ('label' === toLowerString(theEl.tagName) && -1 === theLabels.indexOf(theEl)) { + theLabels.push(theEl); + } + } + } + + if (0 === theLabels.length) { + theEl = el.parentNode; + if ('dd' === theEl.tagName.toLowerCase() && null !== theEl.previousElementSibling + && 'dt' === theEl.previousElementSibling.tagName.toLowerCase()) { + theLabels.push(theEl.previousElementSibling); + } + } + + if (0 > theLabels.length) { + return null; + } + + return theLabels.map(function (l) { + return (l.textContent || l.innerText) + .replace(/^\\s+/, '').replace(/\\s+$/, '').replace('\\n', '').replace(/\\s{2,}/, ' '); + }).join(''); + } + + // add property and value to the object if there is a value + function addProp(obj, prop, val, d) { + if (0 !== d && d === val || null === val || void 0 === val) { + return; + } + + obj[prop] = val; + } + + // lowercase helper + function toLowerString(s) { + return 'string' === typeof s ? s.toLowerCase() : ('' + s).toLowerCase(); + } + + // query the document helper + function queryDoc(doc, query) { + var els = []; + try { + els = doc.querySelectorAll(query); + } catch (e) { } + return els; + } + + // end helpers + + var theView = theDoc.defaultView ? theDoc.defaultView : window, + passwordRegEx = RegExp('((\\\\b|_|-)pin(\\\\b|_|-)|password|passwort|kennwort|(\\\\b|_|-)passe(\\\\b|_|-)|contraseña|senha|密码|adgangskode|hasło|wachtwoord)', 'i'); + + // get all the docs + var theForms = Array.prototype.slice.call(queryDoc(theDoc, 'form')).map(function (formEl, elIndex) { + var op = {}, + formOpId = '__form__' + elIndex; + + formEl.opid = formOpId; + op.opid = formOpId; + addProp(op, 'htmlName', getElementAttrValue(formEl, 'name')); + addProp(op, 'htmlID', getElementAttrValue(formEl, 'id')); + formOpId = getElementAttrValue(formEl, 'action'); + formOpId = new URL(formOpId, window.location.href); + addProp(op, 'htmlAction', formOpId ? formOpId.href : null); + addProp(op, 'htmlMethod', getElementAttrValue(formEl, 'method')); + + return op; + }); + + // get all the form fields + var theFields = Array.prototype.slice.call(getFormElements(theDoc, 50)).map(function (el, elIndex) { + var field = {}, + opId = '__' + elIndex, + elMaxLen = -1 == el.maxLength ? 999 : el.maxLength; + + if (!elMaxLen || 'number' === typeof elMaxLen && isNaN(elMaxLen)) { + elMaxLen = 999; + } + + theDoc.elementsByOPID[opId] = el; + el.opid = opId; + field.opid = opId; + field.elementNumber = elIndex; + addProp(field, 'maxLength', Math.min(elMaxLen, 999), 999); + field.visible = isElementVisible(el); + field.viewable = isElementViewable(el); + addProp(field, 'htmlID', getElementAttrValue(el, 'id')); + addProp(field, 'htmlName', getElementAttrValue(el, 'name')); + addProp(field, 'htmlClass', getElementAttrValue(el, 'class')); + addProp(field, 'tabindex', getElementAttrValue(el, 'tabindex')); + addProp(field, 'title', getElementAttrValue(el, 'title')); + + // START MODIFICATION + addProp(field, 'userEdited', !!el.dataset['com.browser.browser.userEdited']); + + var elTagName = el.tagName.toLowerCase(); + addProp(field, 'tagName', elTagName); + + if (elTagName === 'span') { + return field; + } + // END MODIFICATION + + if ('hidden' != toLowerString(el.type)) { + addProp(field, 'label-tag', getLabelTag(el)); + addProp(field, 'label-data', getElementAttrValue(el, 'data-label')); + addProp(field, 'label-aria', getElementAttrValue(el, 'aria-label')); + addProp(field, 'label-top', getLabelTop(el)); + var labelArr = []; + for (var sib = el; sib && sib.nextSibling;) { + sib = sib.nextSibling; + if (isKnownTag(sib)) { + break; + } + checkNodeType(labelArr, sib); + } + addProp(field, 'label-right', labelArr.join('')); + labelArr = []; + shiftForLeftLabel(el, labelArr); + labelArr = labelArr.reverse().join(''); + addProp(field, 'label-left', labelArr); + addProp(field, 'placeholder', getElementAttrValue(el, 'placeholder')); + } + + addProp(field, 'rel', getElementAttrValue(el, 'rel')); + addProp(field, 'type', toLowerString(getElementAttrValue(el, 'type'))); + addProp(field, 'value', getElementValue(el)); + addProp(field, 'checked', el.checked, false); + addProp(field, 'autoCompleteType', el.getAttribute('x-autocompletetype') || el.getAttribute('autocompletetype') || el.getAttribute('autocomplete'), 'off'); + addProp(field, 'disabled', el.disabled); + addProp(field, 'readonly', el.b || el.readOnly); + addProp(field, 'selectInfo', getSelectElementOptions(el)); + addProp(field, 'aria-hidden', 'true' == el.getAttribute('aria-hidden'), false); + addProp(field, 'aria-disabled', 'true' == el.getAttribute('aria-disabled'), false); + addProp(field, 'aria-haspopup', 'true' == el.getAttribute('aria-haspopup'), false); + addProp(field, 'data-unmasked', el.dataset.unmasked); + addProp(field, 'data-stripe', getElementAttrValue(el, 'data-stripe')); + addProp(field, 'onepasswordFieldType', el.dataset.onepasswordFieldType || el.type); + addProp(field, 'onepasswordDesignation', el.dataset.onepasswordDesignation); + addProp(field, 'onepasswordSignInUrl', el.dataset.onepasswordSignInUrl); + addProp(field, 'onepasswordSectionTitle', el.dataset.onepasswordSectionTitle); + addProp(field, 'onepasswordSectionFieldKind', el.dataset.onepasswordSectionFieldKind); + addProp(field, 'onepasswordSectionFieldTitle', el.dataset.onepasswordSectionFieldTitle); + addProp(field, 'onepasswordSectionFieldValue', el.dataset.onepasswordSectionFieldValue); + + if (el.form) { + field.form = getElementAttrValue(el.form, 'opid'); + } + + // START MODIFICATION + //addProp(field, 'fakeTested', checkIfFakeTested(field, el), false); + // END MODIFICATION + + return field; + }); + + // test form fields + theFields.filter(function (f) { + return f.fakeTested; + }).forEach(function (f) { + var el = theDoc.elementsByOPID[f.opid]; + el.getBoundingClientRect(); + + var originalValue = el.value; + // click it + !el || el && 'function' !== typeof el.click || el.click(); + focusElement(el, false); + + el.dispatchEvent(doEventOnElement(el, 'keydown')); + el.dispatchEvent(doEventOnElement(el, 'keypress')); + el.dispatchEvent(doEventOnElement(el, 'keyup')); + + el.value !== originalValue && (el.value = originalValue); + + el.click && el.click(); + f.postFakeTestVisible = isElementVisible(el); + f.postFakeTestViewable = isElementViewable(el); + f.postFakeTestType = el.type; + + var elValue = el.value; + + var event1 = el.ownerDocument.createEvent('HTMLEvents'), + event2 = el.ownerDocument.createEvent('HTMLEvents'); + el.dispatchEvent(doEventOnElement(el, 'keydown')); + el.dispatchEvent(doEventOnElement(el, 'keypress')); + el.dispatchEvent(doEventOnElement(el, 'keyup')); + event2.initEvent('input', true, true); + el.dispatchEvent(event2); + event1.initEvent('change', true, true); + el.dispatchEvent(event1); + + el.blur(); + el.value !== elValue && (el.value = elValue); + }); + + // build out the page details object. this is the final result + var pageDetails = { + documentUUID: oneShotId, + title: theDoc.title, + url: theView.location.href, + documentUrl: theDoc.location.href, + tabUrl: theView.location.href, + forms: function (forms) { + var formObj = {}; + forms.forEach(function (f) { + formObj[f.opid] = f; + }); + return formObj; + }(theForms), + fields: theFields, + collectedTimestamp: new Date().getTime() + }; + + // get proper page title. maybe they are using the special meta tag? + var theTitle = document.querySelector('[data-onepassword-title]') + if (theTitle && theTitle.dataset[DISPLAY_TITLE_ATTRIBUE]) { + pageDetails.displayTitle = theTitle.dataset.onepasswordTitle; + } + + return pageDetails; + } + + document.elementForOPID = getElementForOPID; + + function doEventOnElement(kedol, fonor) { + var quebo; + isFirefox ? (quebo = document.createEvent('KeyboardEvent'), quebo.initKeyEvent(fonor, true, false, null, false, false, false, false, 0, 0)) : (quebo = kedol.ownerDocument.createEvent('Events'), + quebo.initEvent(fonor, true, false), quebo.charCode = 0, quebo.keyCode = 0, quebo.which = 0, + quebo.srcElement = kedol, quebo.target = kedol); + return quebo; + } + + // clean up the text + function cleanText(s) { + var sVal = null; + s && (sVal = s.replace(/^\\s+|\\s+$|\\r?\\n.*$/gm, ''), sVal = 0 < sVal.length ? sVal : null); + return sVal; + } + + // check the node type and adjust the array accordingly + function checkNodeType(arr, el) { + var theText = ''; + 3 === el.nodeType ? theText = el.nodeValue : 1 === el.nodeType && (theText = el.textContent || el.innerText); + (theText = cleanText(theText)) && arr.push(theText); + } + + function isKnownTag(el) { + if (el && void 0 !== el) { + var tags = 'select option input form textarea button table iframe body head script'.split(' '); + + if (el) { + var elTag = el ? (el.tagName || '').toLowerCase() : ''; + return tags.constructor == Array ? 0 <= tags.indexOf(elTag) : elTag === tags; + } + else { + return false; + } + } + else { + return true; + } + } + + function shiftForLeftLabel(el, arr, steps) { + var sib; + for (steps || (steps = 0); el && el.previousSibling;) { + el = el.previousSibling; + if (isKnownTag(el)) { + return; + } + + checkNodeType(arr, el); + } + if (el && 0 === arr.length) { + for (sib = null; !sib;) { + el = el.parentElement || el.parentNode; + if (!el) { + return; + } + for (sib = el.previousSibling; sib && !isKnownTag(sib) && sib.lastChild;) { + sib = sib.lastChild; + } + } + + // base case and recurse + isKnownTag(sib) || (checkNodeType(arr, sib), 0 === arr.length && shiftForLeftLabel(sib, arr, steps + 1)); + } + } + + // is a dom element visible on screen? + function isElementVisible(el) { + var theEl = el; + el = (el = el.ownerDocument) ? el.defaultView : {}; + + // walk the dom tree + for (var elStyle; theEl && theEl !== document;) { + elStyle = el.getComputedStyle ? el.getComputedStyle(theEl, null) : theEl.style; + if (!elStyle) { + return true; + } + + if ('none' === elStyle.display || 'hidden' == elStyle.visibility) { + return false; + } + + // walk up + theEl = theEl.parentNode; + } + + return theEl === document; + } + + // is a dom element "viewable" on screen? + function isElementViewable(el) { + var theDoc = el.ownerDocument.documentElement, + rect = el.getBoundingClientRect(), + docScrollWidth = theDoc.scrollWidth, + docScrollHeight = theDoc.scrollHeight, + leftOffset = rect.left - theDoc.clientLeft, + topOffset = rect.top - theDoc.clientTop, + theRect; + + if (!isElementVisible(el) || !el.offsetParent || 10 > el.clientWidth || 10 > el.clientHeight) { + return false; + } + + var rects = el.getClientRects(); + if (0 === rects.length) { + return false; + } + + for (var i = 0; i < rects.length; i++) { + if (theRect = rects[i], theRect.left > docScrollWidth || 0 > theRect.right) { + return false; + } + } + + if (0 > leftOffset || leftOffset > docScrollWidth || 0 > topOffset || topOffset > docScrollHeight) { + return false; + } + + // walk the tree + for (var pointEl = el.ownerDocument.elementFromPoint(leftOffset + (rect.right > window.innerWidth ? (window.innerWidth - leftOffset) / 2 : rect.width / 2), topOffset + (rect.bottom > window.innerHeight ? (window.innerHeight - topOffset) / 2 : rect.height / 2)); pointEl && pointEl !== el && pointEl !== document;) { + if (pointEl.tagName && 'string' === typeof pointEl.tagName && 'label' === pointEl.tagName.toLowerCase() + && el.labels && 0 < el.labels.length) { + return 0 <= Array.prototype.slice.call(el.labels).indexOf(pointEl); + } + + // walk up + pointEl = pointEl.parentNode; + } + + return pointEl === el; + } + + function getElementForOPID(opId) { + var theEl; + if (void 0 === opId || null === opId) { + return null; + } + + try { + var formEls = Array.prototype.slice.call(getFormElements(document)); + var filteredFormEls = formEls.filter(function (el) { + return el.opid == opId; + }); + + if (0 < filteredFormEls.length) { + theEl = filteredFormEls[0], 1 < filteredFormEls.length && console.warn('More than one element found with opid ' + opId); + } else { + var theIndex = parseInt(opId.split('__')[1], 10); + isNaN(theIndex) || (theEl = formEls[theIndex]); + } + } catch (e) { + console.error('An unexpected error occurred: ' + e); + } finally { + return theEl; + } + } + + // get all the form elements that we care about + function getFormElements(theDoc, limit) { + // START MODIFICATION + var els = []; + try { + var elsList = theDoc.querySelectorAll('input:not([type="hidden"]):not([type="submit"]):not([type="reset"])' + + ':not([type="button"]):not([type="image"]):not([type="file"]):not([data-bwignore]), select, ' + + 'span[data-bwautofill]'); + els = Array.prototype.slice.call(elsList); + } catch (e) { } + + if (!limit || els.length <= limit) { + return els; + } + + // non-checkboxes/radios have higher priority + var returnEls = []; + var unimportantEls = []; + for (var i = 0; i < els.length; i++) { + if (returnEls.length >= limit) { + break; + } + + var el = els[i]; + var type = el.type ? el.type.toLowerCase() : el.type; + if (type === 'checkbox' || type === 'radio') { + unimportantEls.push(el); + } + else { + returnEls.push(el); + } + } + + var unimportantElsToAdd = limit - returnEls.length; + if (unimportantElsToAdd > 0) { + returnEls = returnEls.concat(unimportantEls.slice(0, unimportantElsToAdd)); + } + + return returnEls; + // END MODIFICATION + } + + // focus the element and optionally restore its original value + function focusElement(el, setVal) { + if (setVal) { + var initialValue = el.value; + el.focus(); + + if (el.value !== initialValue) { + el.value = initialValue; + } + } else { + el.focus(); + } + } + + return JSON.stringify(getPageDetails(document, 'oneshotUUID')); + } + + function fill(document, fillScript, undefined) { + var isFirefox = navigator.userAgent.indexOf('Firefox') !== -1 || navigator.userAgent.indexOf('Gecko/') !== -1; + + var markTheFilling = true, + animateTheFilling = true; + + // Check if URL is not secure when the original saved one was + function urlNotSecure(savedURL) { + var passwordInputs = null; + if (!savedURL) { + return false; + } + + return 0 === savedURL.indexOf('https://') && 'http:' === document.location.protocol && (passwordInputs = document.querySelectorAll('input[type=password]'), + 0 < passwordInputs.length && (confirmResult = confirm('Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page.\\n\\nDo you still wish to fill this login?'), + 0 == confirmResult)) ? true : false; + } + + function doFill(fillScript) { + var fillScriptOps, + theOpIds = [], + fillScriptProperties = fillScript.properties, + operationDelayMs = 1, + doOperation, + operationsToDo = []; + + fillScriptProperties && + fillScriptProperties.delay_between_operations && + (operationDelayMs = fillScriptProperties.delay_between_operations); + + if (urlNotSecure(fillScript.savedURL)) { + return; + } + + doOperation = function (ops, theOperation) { + var op = ops[0]; + if (void 0 === op) { + theOperation(); + } else { + // should we delay? + if ('delay' === op.operation || 'delay' === op[0]) { + operationDelayMs = op.parameters ? op.parameters[0] : op[1]; + } else { + if (op = normalizeOp(op)) { + for (var opIndex = 0; opIndex < op.length; opIndex++) { + -1 === operationsToDo.indexOf(op[opIndex]) && operationsToDo.push(op[opIndex]); + } + } + theOpIds = theOpIds.concat(operationsToDo.map(function (operationToDo) { + return operationToDo && operationToDo.hasOwnProperty('opid') ? operationToDo.opid : null; + })); + } + setTimeout(function () { + doOperation(ops.slice(1), theOperation); + }, operationDelayMs); + } + }; + + if (fillScriptOps = fillScript.options) { + fillScriptOps.hasOwnProperty('animate') && (animateTheFilling = fillScriptOps.animate), + fillScriptOps.hasOwnProperty('markFilling') && (markTheFilling = fillScriptOps.markFilling); + } + + // don't mark a password filling + fillScript.itemType && 'fillPassword' === fillScript.itemType && (markTheFilling = false); + + if (!fillScript.hasOwnProperty('script')) { + return; + } + + // custom fill script + + fillScriptOps = fillScript.script; + doOperation(fillScriptOps, function () { + // Done now + // Do we have anything to autosubmit? + if (fillScript.hasOwnProperty('autosubmit') && 'function' == typeof autosubmit) { + fillScript.itemType && 'fillLogin' !== fillScript.itemType || (0 < operationsToDo.length ? setTimeout(function () { + autosubmit(fillScript.autosubmit, fillScriptProperties.allow_clicky_autosubmit, operationsToDo); + }, AUTOSUBMIT_DELAY) : DEBUG_AUTOSUBMIT && console.log('[AUTOSUBMIT] Not attempting to submit since no fields were filled: ', operationsToDo)) + } + + // handle protectedGlobalPage + if ('object' == typeof protectedGlobalPage) { + protectedGlobalPage.b('fillItemResults', { + documentUUID: documentUUID, + fillContextIdentifier: fillScript.fillContextIdentifier, + usedOpids: theOpIds + }, function () { + fillingItemType = null; + }) + } + }); + } + + // fill for reference + var thisFill = { + fill_by_opid: doFillByOpId, + fill_by_query: doFillByQuery, + click_on_opid: doClickByOpId, + click_on_query: doClickByQuery, + touch_all_fields: touchAllFields, + simple_set_value_by_query: doSimpleSetByQuery, + focus_by_opid: doFocusByOpId, + delay: null + }; + + // normalize the op versus the reference + function normalizeOp(op) { + var thisOperation; + if (op.hasOwnProperty('operation') && op.hasOwnProperty('parameters')) { + thisOperation = op.operation, op = op.parameters; + } else { + if ('[object Array]' === Object.prototype.toString.call(op)) { + thisOperation = op[0], + op = op.splice(1); + } else { + return null; + } + } + return thisFill.hasOwnProperty(thisOperation) ? thisFill[thisOperation].apply(this, op) : null; + } + + // do a fill by opid operation + function doFillByOpId(opId, op) { + var el = getElementByOpId(opId); + return el ? (fillTheElement(el, op), [el]) : null; + } + + // do a fill by query operation + function doFillByQuery(query, op) { + var elements = selectAllFromDoc(query); + return Array.prototype.map.call(Array.prototype.slice.call(elements), function (el) { + fillTheElement(el, op); + return el; + }, this); + } + + // do a simple set value by query + function doSimpleSetByQuery(query, valueToSet) { + var elements = selectAllFromDoc(query), + arr = []; + Array.prototype.forEach.call(Array.prototype.slice.call(elements), function (el) { + el.disabled || el.a || el.readOnly || void 0 === el.value || (el.value = valueToSet, arr.push(el)); + }); + return arr; + } + + // focus by opid + function doFocusByOpId(opId) { + var el = getElementByOpId(opId) + if (el) { + 'function' === typeof el.click && el.click(), + 'function' === typeof el.focus && doFocusElement(el, true); + } + + return null; + } + + // do a click by opid operation + function doClickByOpId(opId) { + var el = getElementByOpId(opId); + return el ? clickElement(el) ? [el] : null : null; + } + + // do a click by query operation + function doClickByQuery(query) { + query = selectAllFromDoc(query); + return Array.prototype.map.call(Array.prototype.slice.call(query), function (el) { + clickElement(el); + 'function' === typeof el.click && el.click(); + 'function' === typeof el.focus && doFocusElement(el, true); + return [el]; + }, this); + } + + var checkRadioTrueOps = { + 'true': true, + y: true, + 1: true, + yes: true, + '✓': true + }, + styleTimeout = 200; + + // fill an element + function fillTheElement(el, op) { + var shouldCheck; + if (el && null !== op && void 0 !== op && !(el.disabled || el.a || el.readOnly)) { + switch (markTheFilling && el.form && !el.form.opfilled && (el.form.opfilled = true), + el.type ? el.type.toLowerCase() : null) { + case 'checkbox': + shouldCheck = op && 1 <= op.length && checkRadioTrueOps.hasOwnProperty(op.toLowerCase()) && true === checkRadioTrueOps[op.toLowerCase()]; + el.checked === shouldCheck || doAllFillOperations(el, function (theEl) { + theEl.checked = shouldCheck; + }); + break; + case 'radio': + true === checkRadioTrueOps[op.toLowerCase()] && el.click(); + break; + default: + el.value == op || doAllFillOperations(el, function (theEl) { + // START MODIFICATION + if (!theEl.type && theEl.tagName.toLowerCase() === 'span') { + theEl.innerText = op; + return; + } + // END MODIFICATION + theEl.value = op; + }); + } + } + } + + // do all the full operations needed + function doAllFillOperations(el, afterValSetFunc) { + setValueForElement(el); + afterValSetFunc(el); + setValueForElementByEvent(el); + + // START MODIFICATION + if (canSeeElementToStyle(el)) { + el.classList.add('com-bitwarden-browser-animated-fill'); + setTimeout(function () { + if (el) { + el.classList.remove('com-bitwarden-browser-animated-fill'); + } + }, styleTimeout); + } + // END MODIFICATION + } + + document.elementForOPID = getElementByOpId; + + // normalize the event based on API support + function normalizeEvent(el, eventName) { + var ev; + if ('KeyboardEvent' in window) { + ev = new window.KeyboardEvent(eventName, { + bubbles: true, + cancelable: false, + }); + } + else { + ev = el.ownerDocument.createEvent('Events'); + ev.initEvent(eventName, true, false); + ev.charCode = 0; + ev.keyCode = 0; + ev.which = 0; + ev.srcElement = el; + ev.target = el; + } + + return ev; + } + + // set value of the given element + function setValueForElement(el) { + var valueToSet = el.value; + clickElement(el); + doFocusElement(el, false); + el.dispatchEvent(normalizeEvent(el, 'keydown')); + el.dispatchEvent(normalizeEvent(el, 'keypress')); + el.dispatchEvent(normalizeEvent(el, 'keyup')); + el.value !== valueToSet && (el.value = valueToSet); + } + + // set value of the given element by using events + function setValueForElementByEvent(el) { + var valueToSet = el.value, + ev1 = el.ownerDocument.createEvent('HTMLEvents'), + ev2 = el.ownerDocument.createEvent('HTMLEvents'); + + el.dispatchEvent(normalizeEvent(el, 'keydown')); + el.dispatchEvent(normalizeEvent(el, 'keypress')); + el.dispatchEvent(normalizeEvent(el, 'keyup')); + ev2.initEvent('input', true, true); + el.dispatchEvent(ev2); + ev1.initEvent('change', true, true); + el.dispatchEvent(ev1); + el.blur(); + el.value !== valueToSet && (el.value = valueToSet); + } + + // click on an element + function clickElement(el) { + if (!el || el && 'function' !== typeof el.click) { + return false; + } + el.click(); + return true; + } + + // get all fields we care about + function getAllFields() { + var r = RegExp('((\\\\b|_|-)pin(\\\\b|_|-)|password|passwort|kennwort|passe|contraseña|senha|密码|adgangskode|hasło|wachtwoord)', 'i'); + return Array.prototype.slice.call(selectAllFromDoc("input[type='text']")).filter(function (el) { + return el.value && r.test(el.value); + }, this); + } + + // touch all the fields + function touchAllFields() { + getAllFields().forEach(function (el) { + setValueForElement(el); + el.click && el.click(); + setValueForElementByEvent(el); + }); + } + + // can we see the element to apply some styling? + function canSeeElementToStyle(el) { + var currentEl; + if (currentEl = animateTheFilling) { + a: { + currentEl = el; + for (var owner = el.ownerDocument, owner = owner ? owner.defaultView : {}, theStyle; currentEl && currentEl !== document;) { + theStyle = owner.getComputedStyle ? owner.getComputedStyle(currentEl, null) : currentEl.style; + if (!theStyle) { + currentEl = true; + break a; + } + if ('none' === theStyle.display || 'hidden' == theStyle.visibility) { + currentEl = false; + break a; + } + currentEl = currentEl.parentNode; + } + currentEl = currentEl === document; + } + } + // START MODIFICATION + if (el && !el.type && el.tagName.toLowerCase() === 'span') { + return true; + } + // END MODIFICATION + return currentEl ? -1 !== 'email text password number tel url'.split(' ').indexOf(el.type || '') : false; + } + + // find the element for this operation + function getElementByOpId(theOpId) { + var theElement; + if (void 0 === theOpId || null === theOpId) { + return null; + } + try { + // START MODIFICATION + var elements = Array.prototype.slice.call(selectAllFromDoc('input, select, button, ' + + 'span[data-bwautofill]')); + // END MODIFICATION + var filteredElements = elements.filter(function (o) { + return o.opid == theOpId; + }); + if (0 < filteredElements.length) { + theElement = filteredElements[0], + 1 < filteredElements.length && console.warn('More than one element found with opid ' + theOpId); + } else { + var elIndex = parseInt(theOpId.split('__')[1], 10); + isNaN(elIndex) || (theElement = elements[elIndex]); + } + } catch (e) { + console.error('An unexpected error occurred: ' + e); + } finally { + return theElement; + } + } + + // helper for doc.querySelectorAll + function selectAllFromDoc(theSelector) { + var d = document, elements = []; + try { + elements = d.querySelectorAll(theSelector); + } catch (e) { } + return elements; + } + + // focus an element and optionally re-set its value after focusing + function doFocusElement(el, setValue) { + if (setValue) { + var existingValue = el.value; + el.focus(); + el.value !== existingValue && (el.value = existingValue); + } else { + el.focus(); + } + } + + doFill(fillScript); + + return JSON.stringify({ + success: true + }); + } + + /* + End 1Password Extension + */ + + chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { + if (msg.command === 'collectPageDetails') { + var pageDetails = collect(document); + var pageDetailsObj = JSON.parse(pageDetails); + chrome.runtime.sendMessage({ + command: 'collectPageDetailsResponse', + tab: msg.tab, + details: pageDetailsObj, + sender: msg.sender + }); + sendResponse(); + return true; + } + else if (msg.command === 'fillForm') { + fill(document, msg.fillScript); + sendResponse(); + return true; + } + }); +})(); diff --git a/apps/browser/src/content/autofiller.ts b/apps/browser/src/content/autofiller.ts new file mode 100644 index 0000000000..7fe9e5514a --- /dev/null +++ b/apps/browser/src/content/autofiller.ts @@ -0,0 +1,52 @@ +document.addEventListener("DOMContentLoaded", (event) => { + let pageHref: string = null; + let filledThisHref = false; + let delayFillTimeout: number; + + const activeUserIdKey = "activeUserId"; + let activeUserId: string; + + chrome.storage.local.get(activeUserIdKey, (obj: any) => { + if (obj == null || obj[activeUserIdKey] == null) { + return; + } + activeUserId = obj[activeUserIdKey]; + }); + + chrome.storage.local.get(activeUserId, (obj: any) => { + if (obj?.[activeUserId]?.settings?.enableAutoFillOnPageLoad === true) { + setInterval(() => doFillIfNeeded(), 500); + } + }); + chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { + if (msg.command === "fillForm" && pageHref === msg.url) { + filledThisHref = true; + } + }); + + function doFillIfNeeded(force = false) { + if (force || pageHref !== window.location.href) { + if (!force) { + // Some websites are slow and rendering all page content. Try to fill again later + // if we haven't already. + filledThisHref = false; + if (delayFillTimeout != null) { + window.clearTimeout(delayFillTimeout); + } + delayFillTimeout = window.setTimeout(() => { + if (!filledThisHref) { + doFillIfNeeded(true); + } + }, 1500); + } + + pageHref = window.location.href; + const msg: any = { + command: "bgCollectPageDetails", + sender: "autofiller", + }; + + chrome.runtime.sendMessage(msg); + } + } +}); diff --git a/apps/browser/src/content/contextMenuHandler.ts b/apps/browser/src/content/contextMenuHandler.ts new file mode 100644 index 0000000000..b6d0159df0 --- /dev/null +++ b/apps/browser/src/content/contextMenuHandler.ts @@ -0,0 +1,66 @@ +const inputTags = ["input", "textarea", "select"]; +const labelTags = ["label", "span"]; +const attributes = ["id", "name", "label-aria", "placeholder"]; +const invalidElement = chrome.i18n.getMessage("copyCustomFieldNameInvalidElement"); +const noUniqueIdentifier = chrome.i18n.getMessage("copyCustomFieldNameNotUnique"); + +let clickedEl: HTMLElement = null; + +// Find the best attribute to be used as the Name for an element in a custom field. +function getClickedElementIdentifier() { + if (clickedEl == null) { + return invalidElement; + } + + const clickedTag = clickedEl.nodeName.toLowerCase(); + let inputEl = null; + + // Try to identify the input element (which may not be the clicked element) + if (labelTags.includes(clickedTag)) { + let inputId = null; + if (clickedTag === "label") { + inputId = clickedEl.getAttribute("for"); + } else { + inputId = clickedEl.closest("label")?.getAttribute("for"); + } + + inputEl = document.getElementById(inputId); + } else { + inputEl = clickedEl; + } + + if (inputEl == null || !inputTags.includes(inputEl.nodeName.toLowerCase())) { + return invalidElement; + } + + for (const attr of attributes) { + const attributeValue = inputEl.getAttribute(attr); + const selector = "[" + attr + '="' + attributeValue + '"]'; + if (!isNullOrEmpty(attributeValue) && document.querySelectorAll(selector)?.length === 1) { + return attributeValue; + } + } + return noUniqueIdentifier; +} + +function isNullOrEmpty(s: string) { + return s == null || s === ""; +} + +// We only have access to the element that's been clicked when the context menu is first opened. +// Remember it for use later. +document.addEventListener("contextmenu", (event) => { + clickedEl = event.target as HTMLElement; +}); + +// Runs when the 'Copy Custom Field Name' context menu item is actually clicked. +chrome.runtime.onMessage.addListener((event) => { + if (event.command === "getClickedElement") { + const identifier = getClickedElementIdentifier(); + chrome.runtime.sendMessage({ + command: "getClickedElementResponse", + sender: "contextMenuHandler", + identifier: identifier, + }); + } +}); diff --git a/apps/browser/src/content/message_handler.ts b/apps/browser/src/content/message_handler.ts new file mode 100644 index 0000000000..2e90038673 --- /dev/null +++ b/apps/browser/src/content/message_handler.ts @@ -0,0 +1,38 @@ +window.addEventListener( + "message", + (event) => { + if (event.source !== window) return; + + if (event.data.command && event.data.command === "authResult") { + chrome.runtime.sendMessage({ + command: event.data.command, + code: event.data.code, + state: event.data.state, + referrer: event.source.location.hostname, + }); + } + + if (event.data.command && event.data.command === "webAuthnResult") { + chrome.runtime.sendMessage({ + command: event.data.command, + data: event.data.data, + remember: event.data.remember, + referrer: event.source.location.hostname, + }); + } + }, + false +); + +const forwardCommands = [ + "promptForLogin", + "addToLockedVaultPendingNotifications", + "unlockCompleted", + "addedCipher", +]; + +chrome.runtime.onMessage.addListener((event) => { + if (forwardCommands.includes(event.command)) { + chrome.runtime.sendMessage(event); + } +}); diff --git a/apps/browser/src/content/notificationBar.ts b/apps/browser/src/content/notificationBar.ts new file mode 100644 index 0000000000..dcb9ce0453 --- /dev/null +++ b/apps/browser/src/content/notificationBar.ts @@ -0,0 +1,603 @@ +import AddLoginRuntimeMessage from "src/background/models/addLoginRuntimeMessage"; +import ChangePasswordRuntimeMessage from "src/background/models/changePasswordRuntimeMessage"; + +document.addEventListener("DOMContentLoaded", (event) => { + if (window.location.hostname.endsWith("vault.bitwarden.com")) { + return; + } + + const pageDetails: any[] = []; + const formData: any[] = []; + let barType: string = null; + let pageHref: string = null; + let observer: MutationObserver = null; + const observeIgnoredElements = new Set([ + "a", + "i", + "b", + "strong", + "span", + "code", + "br", + "img", + "small", + "em", + "hr", + ]); + let domObservationCollectTimeout: number = null; + let collectIfNeededTimeout: number = null; + let observeDomTimeout: number = null; + const inIframe = isInIframe(); + const cancelButtonNames = new Set(["cancel", "close", "back"]); + const logInButtonNames = new Set([ + "log in", + "sign in", + "login", + "go", + "submit", + "continue", + "next", + ]); + const changePasswordButtonNames = new Set([ + "save password", + "update password", + "change password", + "change", + ]); + const changePasswordButtonContainsNames = new Set(["pass", "change", "contras", "senha"]); + let disabledAddLoginNotification = false; + let disabledChangedPasswordNotification = false; + + const activeUserIdKey = "activeUserId"; + let activeUserId: string; + chrome.storage.local.get(activeUserIdKey, (obj: any) => { + if (obj == null || obj[activeUserIdKey] == null) { + return; + } + activeUserId = obj[activeUserIdKey]; + }); + + chrome.storage.local.get(activeUserId, (obj: any) => { + if (obj?.[activeUserId] == null) { + return; + } + + const domains = obj[activeUserId].settings.neverDomains; + // eslint-disable-next-line + if (domains != null && domains.hasOwnProperty(window.location.hostname)) { + return; + } + + disabledAddLoginNotification = obj[activeUserId].settings.disableAddLoginNotification; + disabledChangedPasswordNotification = + obj[activeUserId].settings.disableChangedPasswordNotification; + + if (!disabledAddLoginNotification || !disabledChangedPasswordNotification) { + collectIfNeededWithTimeout(); + } + }); + + chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { + processMessages(msg, sendResponse); + }); + + function processMessages(msg: any, sendResponse: (response?: any) => void) { + if (msg.command === "openNotificationBar") { + if (inIframe) { + return; + } + closeExistingAndOpenBar(msg.data.type, msg.data.typeData); + sendResponse(); + return true; + } else if (msg.command === "closeNotificationBar") { + if (inIframe) { + return; + } + closeBar(true); + sendResponse(); + return true; + } else if (msg.command === "adjustNotificationBar") { + if (inIframe) { + return; + } + adjustBar(msg.data); + sendResponse(); + return true; + } else if (msg.command === "notificationBarPageDetails") { + pageDetails.push(msg.data.details); + watchForms(msg.data.forms); + sendResponse(); + return true; + } + } + + function isInIframe() { + try { + return window.self !== window.top; + } catch { + return true; + } + } + + function observeDom() { + const bodies = document.querySelectorAll("body"); + if (bodies && bodies.length > 0) { + observer = new MutationObserver((mutations) => { + if (mutations == null || mutations.length === 0 || pageHref !== window.location.href) { + return; + } + + let doCollect = false; + for (let i = 0; i < mutations.length; i++) { + const mutation = mutations[i]; + if (mutation.addedNodes == null || mutation.addedNodes.length === 0) { + continue; + } + + for (let j = 0; j < mutation.addedNodes.length; j++) { + const addedNode: any = mutation.addedNodes[j]; + if (addedNode == null) { + continue; + } + + const tagName = addedNode.tagName != null ? addedNode.tagName.toLowerCase() : null; + if ( + tagName != null && + tagName === "form" && + (addedNode.dataset == null || !addedNode.dataset.bitwardenWatching) + ) { + doCollect = true; + break; + } + + if ( + (tagName != null && observeIgnoredElements.has(tagName)) || + addedNode.querySelectorAll == null + ) { + continue; + } + + const forms = addedNode.querySelectorAll("form:not([data-bitwarden-watching])"); + if (forms != null && forms.length > 0) { + doCollect = true; + break; + } + } + + if (doCollect) { + break; + } + } + + if (doCollect) { + if (domObservationCollectTimeout != null) { + window.clearTimeout(domObservationCollectTimeout); + } + + domObservationCollectTimeout = window.setTimeout(collect, 1000); + } + }); + + observer.observe(bodies[0], { childList: true, subtree: true }); + } + } + + function collectIfNeededWithTimeout() { + if (collectIfNeededTimeout != null) { + window.clearTimeout(collectIfNeededTimeout); + } + collectIfNeededTimeout = window.setTimeout(collectIfNeeded, 1000); + } + + function collectIfNeeded() { + if (pageHref !== window.location.href) { + pageHref = window.location.href; + if (observer) { + observer.disconnect(); + observer = null; + } + + collect(); + + if (observeDomTimeout != null) { + window.clearTimeout(observeDomTimeout); + } + observeDomTimeout = window.setTimeout(observeDom, 1000); + } + + if (collectIfNeededTimeout != null) { + window.clearTimeout(collectIfNeededTimeout); + } + collectIfNeededTimeout = window.setTimeout(collectIfNeeded, 1000); + } + + function collect() { + sendPlatformMessage({ + command: "bgCollectPageDetails", + sender: "notificationBar", + }); + } + + function watchForms(forms: any[]) { + if (forms == null || forms.length === 0) { + return; + } + + forms.forEach((f: any) => { + const formId: string = f.form != null ? f.form.htmlID : null; + let formEl: HTMLFormElement = null; + if (formId != null && formId !== "") { + formEl = document.getElementById(formId) as HTMLFormElement; + } + + if (formEl == null) { + const index = parseInt(f.form.opid.split("__")[2], null); + formEl = document.getElementsByTagName("form")[index]; + } + + if (formEl != null && formEl.dataset.bitwardenWatching !== "1") { + const formDataObj: any = { + data: f, + formEl: formEl, + usernameEl: null, + passwordEl: null, + passwordEls: null, + }; + locateFields(formDataObj); + formData.push(formDataObj); + listen(formEl); + formEl.dataset.bitwardenWatching = "1"; + } + }); + } + + function listen(form: HTMLFormElement) { + form.removeEventListener("submit", formSubmitted, false); + form.addEventListener("submit", formSubmitted, false); + const submitButton = getSubmitButton(form, logInButtonNames); + if (submitButton != null) { + submitButton.removeEventListener("click", formSubmitted, false); + submitButton.addEventListener("click", formSubmitted, false); + } + } + + function locateFields(formDataObj: any) { + const inputs = Array.from(document.getElementsByTagName("input")); + formDataObj.usernameEl = locateField(formDataObj.formEl, formDataObj.data.username, inputs); + if (formDataObj.usernameEl != null && formDataObj.data.password != null) { + formDataObj.passwordEl = locatePassword( + formDataObj.formEl, + formDataObj.data.password, + inputs, + true + ); + } else if (formDataObj.data.passwords != null) { + formDataObj.passwordEls = []; + formDataObj.data.passwords.forEach((pData: any) => { + const el = locatePassword(formDataObj.formEl, pData, inputs, false); + if (el != null) { + formDataObj.passwordEls.push(el); + } + }); + if (formDataObj.passwordEls.length === 0) { + formDataObj.passwordEls = null; + } + } + } + + function locatePassword( + form: HTMLFormElement, + passwordData: any, + inputs: HTMLInputElement[], + doLastFallback: boolean + ) { + let el = locateField(form, passwordData, inputs); + if (el != null && el.type !== "password") { + el = null; + } + if (doLastFallback && el == null) { + el = form.querySelector('input[type="password"]'); + } + return el; + } + + function locateField(form: HTMLFormElement, fieldData: any, inputs: HTMLInputElement[]) { + if (fieldData == null) { + return; + } + let el: HTMLInputElement = null; + if (fieldData.htmlID != null && fieldData.htmlID !== "") { + try { + el = form.querySelector("#" + fieldData.htmlID); + } catch { + // Ignore error, we perform fallbacks below. + } + } + if (el == null && fieldData.htmlName != null && fieldData.htmlName !== "") { + el = form.querySelector('input[name="' + fieldData.htmlName + '"]'); + } + if (el == null && fieldData.elementNumber != null) { + el = inputs[fieldData.elementNumber]; + } + return el; + } + + function formSubmitted(e: Event) { + let form: HTMLFormElement = null; + if (e.type === "click") { + form = (e.target as HTMLElement).closest("form"); + if (form == null) { + const parentModal = (e.target as HTMLElement).closest("div.modal"); + if (parentModal != null) { + const modalForms = parentModal.querySelectorAll("form"); + if (modalForms.length === 1) { + form = modalForms[0]; + } + } + } + } else { + form = e.target as HTMLFormElement; + } + + if (form == null || form.dataset.bitwardenProcessed === "1") { + return; + } + + for (let i = 0; i < formData.length; i++) { + if (formData[i].formEl !== form) { + continue; + } + const disabledBoth = disabledChangedPasswordNotification && disabledAddLoginNotification; + if (!disabledBoth && formData[i].usernameEl != null && formData[i].passwordEl != null) { + const login: AddLoginRuntimeMessage = { + username: formData[i].usernameEl.value, + password: formData[i].passwordEl.value, + url: document.URL, + }; + + if ( + login.username != null && + login.username !== "" && + login.password != null && + login.password !== "" + ) { + processedForm(form); + sendPlatformMessage({ + command: "bgAddLogin", + login: login, + }); + break; + } + } + if (!disabledChangedPasswordNotification && formData[i].passwordEls != null) { + const passwords: string[] = formData[i].passwordEls + .filter((el: HTMLInputElement) => el.value != null && el.value !== "") + .map((el: HTMLInputElement) => el.value); + + let curPass: string = null; + let newPass: string = null; + let newPassOnly = false; + if (formData[i].passwordEls.length === 3 && passwords.length === 3) { + newPass = passwords[1]; + if (passwords[0] !== newPass && newPass === passwords[2]) { + curPass = passwords[0]; + } else if (newPass !== passwords[2] && passwords[0] === newPass) { + curPass = passwords[2]; + } + } else if (formData[i].passwordEls.length === 2 && passwords.length === 2) { + if (passwords[0] === passwords[1]) { + newPassOnly = true; + newPass = passwords[0]; + curPass = null; + } else { + const buttonText = getButtonText(getSubmitButton(form, changePasswordButtonNames)); + const matches = Array.from(changePasswordButtonContainsNames).filter( + (n) => buttonText.indexOf(n) > -1 + ); + if (matches.length > 0) { + curPass = passwords[0]; + newPass = passwords[1]; + } + } + } + + if ((newPass != null && curPass != null) || (newPassOnly && newPass != null)) { + processedForm(form); + + const changePasswordRuntimeMessage: ChangePasswordRuntimeMessage = { + newPassword: newPass, + currentPassword: curPass, + url: document.URL, + }; + sendPlatformMessage({ + command: "bgChangedPassword", + data: changePasswordRuntimeMessage, + }); + break; + } + } + } + } + + function getSubmitButton(wrappingEl: HTMLElement, buttonNames: Set) { + if (wrappingEl == null) { + return null; + } + + const wrappingElIsForm = wrappingEl.tagName.toLowerCase() === "form"; + + let submitButton = wrappingEl.querySelector( + 'input[type="submit"], input[type="image"], ' + 'button[type="submit"]' + ) as HTMLElement; + if (submitButton == null && wrappingElIsForm) { + submitButton = wrappingEl.querySelector("button:not([type])"); + if (submitButton != null) { + const buttonText = getButtonText(submitButton); + if (buttonText != null && cancelButtonNames.has(buttonText.trim().toLowerCase())) { + submitButton = null; + } + } + } + if (submitButton == null) { + const possibleSubmitButtons = Array.from( + wrappingEl.querySelectorAll( + 'a, span, button[type="button"], ' + 'input[type="button"], button:not([type])' + ) + ) as HTMLElement[]; + let typelessButton: HTMLElement = null; + possibleSubmitButtons.forEach((button) => { + if (submitButton != null || button == null || button.tagName == null) { + return; + } + const buttonText = getButtonText(button); + if (buttonText != null) { + if ( + typelessButton != null && + button.tagName.toLowerCase() === "button" && + button.getAttribute("type") == null && + !cancelButtonNames.has(buttonText.trim().toLowerCase()) + ) { + typelessButton = button; + } else if (buttonNames.has(buttonText.trim().toLowerCase())) { + submitButton = button; + } + } + }); + if (submitButton == null && typelessButton != null) { + submitButton = typelessButton; + } + } + if (submitButton == null && wrappingElIsForm) { + // Maybe it's in a modal? + const parentModal = wrappingEl.closest("div.modal") as HTMLElement; + if (parentModal != null) { + const modalForms = parentModal.querySelectorAll("form"); + if (modalForms.length === 1) { + submitButton = getSubmitButton(parentModal, buttonNames); + } + } + } + return submitButton; + } + + function getButtonText(button: HTMLElement) { + let buttonText: string = null; + if (button.tagName.toLowerCase() === "input") { + buttonText = (button as HTMLInputElement).value; + } else { + buttonText = button.innerText; + } + return buttonText; + } + + function processedForm(form: HTMLFormElement) { + form.dataset.bitwardenProcessed = "1"; + window.setTimeout(() => { + form.dataset.bitwardenProcessed = "0"; + }, 500); + } + + function closeExistingAndOpenBar(type: string, typeData: any) { + let barPage = "notification/bar.html"; + switch (type) { + case "add": + barPage = barPage + "?add=1&isVaultLocked=" + typeData.isVaultLocked; + break; + case "change": + barPage = barPage + "?change=1&isVaultLocked=" + typeData.isVaultLocked; + break; + default: + break; + } + + const frame = document.getElementById("bit-notification-bar-iframe") as HTMLIFrameElement; + if (frame != null && frame.src.indexOf(barPage) >= 0) { + return; + } + + closeBar(false); + openBar(type, barPage); + } + + function openBar(type: string, barPage: string) { + barType = type; + + if (document.body == null) { + return; + } + + const barPageUrl: string = chrome.extension.getURL(barPage); + + const iframe = document.createElement("iframe"); + iframe.style.cssText = "height: 42px; width: 100%; border: 0; min-height: initial;"; + iframe.id = "bit-notification-bar-iframe"; + iframe.src = barPageUrl; + + const frameDiv = document.createElement("div"); + frameDiv.setAttribute("aria-live", "polite"); + frameDiv.id = "bit-notification-bar"; + frameDiv.style.cssText = + "height: 42px; width: 100%; top: 0; left: 0; padding: 0; position: fixed; " + + "z-index: 2147483647; visibility: visible;"; + frameDiv.appendChild(iframe); + document.body.appendChild(frameDiv); + + (iframe.contentWindow.location as any) = barPageUrl; + + const spacer = document.createElement("div"); + spacer.id = "bit-notification-bar-spacer"; + spacer.style.cssText = "height: 42px;"; + document.body.insertBefore(spacer, document.body.firstChild); + } + + function closeBar(explicitClose: boolean) { + const barEl = document.getElementById("bit-notification-bar"); + if (barEl != null) { + barEl.parentElement.removeChild(barEl); + } + + const spacerEl = document.getElementById("bit-notification-bar-spacer"); + if (spacerEl) { + spacerEl.parentElement.removeChild(spacerEl); + } + + if (!explicitClose) { + return; + } + + switch (barType) { + case "add": + sendPlatformMessage({ + command: "bgAddClose", + }); + break; + case "change": + sendPlatformMessage({ + command: "bgChangeClose", + }); + break; + default: + break; + } + } + + function adjustBar(data: any) { + if (data != null && data.height !== 42) { + const newHeight = data.height + "px"; + doHeightAdjustment("bit-notification-bar-iframe", newHeight); + doHeightAdjustment("bit-notification-bar", newHeight); + doHeightAdjustment("bit-notification-bar-spacer", newHeight); + } + } + + function doHeightAdjustment(elId: string, heightStyle: string) { + const el = document.getElementById(elId); + if (el != null) { + el.style.height = heightStyle; + } + } + + function sendPlatformMessage(msg: any) { + chrome.runtime.sendMessage(msg); + } +}); diff --git a/apps/browser/src/content/shortcuts.ts b/apps/browser/src/content/shortcuts.ts new file mode 100644 index 0000000000..4832644082 --- /dev/null +++ b/apps/browser/src/content/shortcuts.ts @@ -0,0 +1,52 @@ +import * as Mousetrap from "mousetrap"; + +document.addEventListener("DOMContentLoaded", (event) => { + const isSafari = + typeof safari !== "undefined" && + navigator.userAgent.indexOf(" Safari/") !== -1 && + navigator.userAgent.indexOf("Chrome") === -1; + const isVivaldi = !isSafari && navigator.userAgent.indexOf(" Vivaldi/") !== -1; + + if (!isSafari && !isVivaldi) { + return; + } + + if (isSafari && (window as any).__bitwardenFrameId == null) { + (window as any).__bitwardenFrameId = Math.floor(Math.random() * Math.floor(99999999)); + } + + Mousetrap.prototype.stopCallback = () => { + return false; + }; + + let autofillCommand = ["mod+shift+l"]; + if (isSafari) { + autofillCommand = ["mod+\\", "mod+8", "mod+shift+p"]; + } + Mousetrap.bind(autofillCommand, () => { + sendMessage("autofill_login"); + }); + + if (isSafari) { + Mousetrap.bind("mod+shift+y", () => { + sendMessage("open_popup"); + }); + + Mousetrap.bind("mod+shift+s", () => { + sendMessage("lock_vault"); + }); + } else { + Mousetrap.bind("mod+shift+9", () => { + sendMessage("generate_password"); + }); + } + + function sendMessage(shortcut: string) { + const msg: any = { + command: "keyboardShortcutTriggered", + shortcut: shortcut, + }; + + chrome.runtime.sendMessage(msg); + } +}); diff --git a/apps/browser/src/globals.d.ts b/apps/browser/src/globals.d.ts new file mode 100644 index 0000000000..7307f696ae --- /dev/null +++ b/apps/browser/src/globals.d.ts @@ -0,0 +1,4 @@ +declare function escape(s: string): string; +declare function unescape(s: string): string; +declare let opr: any; +declare let safari: any; diff --git a/apps/browser/src/images/close.png b/apps/browser/src/images/close.png new file mode 100644 index 0000000000..ccbb3b1d5c Binary files /dev/null and b/apps/browser/src/images/close.png differ diff --git a/apps/browser/src/images/icon128.png b/apps/browser/src/images/icon128.png new file mode 100644 index 0000000000..914b3e3899 Binary files /dev/null and b/apps/browser/src/images/icon128.png differ diff --git a/apps/browser/src/images/icon128_gray.png b/apps/browser/src/images/icon128_gray.png new file mode 100644 index 0000000000..4b8fb42683 Binary files /dev/null and b/apps/browser/src/images/icon128_gray.png differ diff --git a/apps/browser/src/images/icon16.png b/apps/browser/src/images/icon16.png new file mode 100644 index 0000000000..3acbfd1435 Binary files /dev/null and b/apps/browser/src/images/icon16.png differ diff --git a/apps/browser/src/images/icon16_gray.png b/apps/browser/src/images/icon16_gray.png new file mode 100644 index 0000000000..ad9da3296f Binary files /dev/null and b/apps/browser/src/images/icon16_gray.png differ diff --git a/apps/browser/src/images/icon18_safari.png b/apps/browser/src/images/icon18_safari.png new file mode 100644 index 0000000000..aaca663c9e Binary files /dev/null and b/apps/browser/src/images/icon18_safari.png differ diff --git a/apps/browser/src/images/icon18_safari@2x.png b/apps/browser/src/images/icon18_safari@2x.png new file mode 100644 index 0000000000..ea812a0859 Binary files /dev/null and b/apps/browser/src/images/icon18_safari@2x.png differ diff --git a/apps/browser/src/images/icon18_safari_locked.png b/apps/browser/src/images/icon18_safari_locked.png new file mode 100644 index 0000000000..164ada8dc6 Binary files /dev/null and b/apps/browser/src/images/icon18_safari_locked.png differ diff --git a/apps/browser/src/images/icon18_safari_locked@2x.png b/apps/browser/src/images/icon18_safari_locked@2x.png new file mode 100644 index 0000000000..afa0173455 Binary files /dev/null and b/apps/browser/src/images/icon18_safari_locked@2x.png differ diff --git a/apps/browser/src/images/icon19.png b/apps/browser/src/images/icon19.png new file mode 100644 index 0000000000..5bf18c7a2a Binary files /dev/null and b/apps/browser/src/images/icon19.png differ diff --git a/apps/browser/src/images/icon19_gray.png b/apps/browser/src/images/icon19_gray.png new file mode 100644 index 0000000000..a6df4d7d5a Binary files /dev/null and b/apps/browser/src/images/icon19_gray.png differ diff --git a/apps/browser/src/images/icon19_locked.png b/apps/browser/src/images/icon19_locked.png new file mode 100644 index 0000000000..4838e6e00c Binary files /dev/null and b/apps/browser/src/images/icon19_locked.png differ diff --git a/apps/browser/src/images/icon32.png b/apps/browser/src/images/icon32.png new file mode 100644 index 0000000000..35008195d9 Binary files /dev/null and b/apps/browser/src/images/icon32.png differ diff --git a/apps/browser/src/images/icon32_gray.png b/apps/browser/src/images/icon32_gray.png new file mode 100644 index 0000000000..6e0c4323b9 Binary files /dev/null and b/apps/browser/src/images/icon32_gray.png differ diff --git a/apps/browser/src/images/icon38.png b/apps/browser/src/images/icon38.png new file mode 100644 index 0000000000..a9a8d3eda9 Binary files /dev/null and b/apps/browser/src/images/icon38.png differ diff --git a/apps/browser/src/images/icon38_gray.png b/apps/browser/src/images/icon38_gray.png new file mode 100644 index 0000000000..c506e6d3d2 Binary files /dev/null and b/apps/browser/src/images/icon38_gray.png differ diff --git a/apps/browser/src/images/icon38_locked.png b/apps/browser/src/images/icon38_locked.png new file mode 100644 index 0000000000..f771defa35 Binary files /dev/null and b/apps/browser/src/images/icon38_locked.png differ diff --git a/apps/browser/src/images/icon48.png b/apps/browser/src/images/icon48.png new file mode 100644 index 0000000000..0de0da04fb Binary files /dev/null and b/apps/browser/src/images/icon48.png differ diff --git a/apps/browser/src/images/icon48_gray.png b/apps/browser/src/images/icon48_gray.png new file mode 100644 index 0000000000..5f694d8c98 Binary files /dev/null and b/apps/browser/src/images/icon48_gray.png differ diff --git a/apps/browser/src/images/icon96.png b/apps/browser/src/images/icon96.png new file mode 100644 index 0000000000..af71804325 Binary files /dev/null and b/apps/browser/src/images/icon96.png differ diff --git a/apps/browser/src/images/icon96_gray.png b/apps/browser/src/images/icon96_gray.png new file mode 100644 index 0000000000..a1b7886752 Binary files /dev/null and b/apps/browser/src/images/icon96_gray.png differ diff --git a/apps/browser/src/manifest.json b/apps/browser/src/manifest.json new file mode 100644 index 0000000000..6c0af31f69 --- /dev/null +++ b/apps/browser/src/manifest.json @@ -0,0 +1,123 @@ +{ + "manifest_version": 2, + "name": "__MSG_extName__", + "short_name": "__MSG_appName__", + "version": "2022.05.0", + "description": "__MSG_extDesc__", + "default_locale": "en", + "author": "Bitwarden Inc.", + "homepage_url": "https://bitwarden.com", + "icons": { + "16": "images/icon16.png", + "32": "images/icon32.png", + "48": "images/icon48.png", + "96": "images/icon96.png", + "128": "images/icon128.png" + }, + "content_scripts": [ + { + "all_frames": true, + "js": [ + "content/autofill.js", + "content/autofiller.js", + "content/notificationBar.js", + "content/contextMenuHandler.js" + ], + "matches": ["http://*/*", "https://*/*", "file:///*"], + "run_at": "document_start" + }, + { + "all_frames": false, + "js": ["content/shortcuts.js"], + "matches": ["http://*/*", "https://*/*", "file:///*"], + "run_at": "document_start" + }, + { + "all_frames": false, + "js": ["content/message_handler.js"], + "matches": ["http://*/*", "https://*/*", "file:///*"], + "run_at": "document_start" + }, + { + "all_frames": true, + "css": ["content/autofill.css"], + "matches": ["http://*/*", "https://*/*", "file:///*"], + "run_at": "document_end" + } + ], + "background": { + "page": "background.html", + "persistent": true + }, + "browser_action": { + "default_icon": { + "19": "images/icon19.png", + "38": "images/icon38.png" + }, + "default_title": "Bitwarden", + "default_popup": "popup/index.html" + }, + "permissions": [ + "tabs", + "contextMenus", + "storage", + "unlimitedStorage", + "clipboardRead", + "clipboardWrite", + "idle", + "http://*/*", + "https://*/*", + "webRequest", + "webRequestBlocking" + ], + "optional_permissions": ["nativeMessaging"], + "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", + "commands": { + "_execute_browser_action": { + "suggested_key": { + "default": "Ctrl+Shift+Y", + "linux": "Ctrl+Shift+U" + }, + "description": "__MSG_commandOpenPopup__" + }, + "_execute_sidebar_action": { + "suggested_key": { + "default": "Alt+Shift+Y", + "linux": "Alt+Shift+U" + }, + "description": "__MSG_commandOpenSidebar__" + }, + "autofill_login": { + "suggested_key": { + "default": "Ctrl+Shift+L" + }, + "description": "__MSG_commandAutofillDesc__" + }, + "generate_password": { + "suggested_key": { + "default": "Ctrl+Shift+9" + }, + "description": "__MSG_commandGeneratePasswordDesc__" + }, + "lock_vault": { + "description": "__MSG_commandLockVaultDesc__" + } + }, + "web_accessible_resources": [ + "notification/bar.html", + "images/icon38.png", + "images/icon38_locked.png", + "images/close.png" + ], + "applications": { + "gecko": { + "id": "{446900e4-71c2-419f-a6a7-df9c091e268b}", + "strict_min_version": "42.0" + } + }, + "sidebar_action": { + "default_title": "Bitwarden", + "default_panel": "popup/index.html?uilocation=sidebar", + "default_icon": "images/icon19.png" + } +} diff --git a/apps/browser/src/models/account.ts b/apps/browser/src/models/account.ts new file mode 100644 index 0000000000..e06f260efb --- /dev/null +++ b/apps/browser/src/models/account.ts @@ -0,0 +1,32 @@ +import { + Account as BaseAccount, + AccountSettings as BaseAccountSettings, +} from "jslib-common/models/domain/account"; + +import { BrowserComponentState } from "./browserComponentState"; +import { BrowserGroupingsComponentState } from "./browserGroupingsComponentState"; +import { BrowserSendComponentState } from "./browserSendComponentState"; + +export class AccountSettings extends BaseAccountSettings { + vaultTimeout = -1; // On Restart +} + +export class Account extends BaseAccount { + settings?: AccountSettings = new AccountSettings(); + groupings?: BrowserGroupingsComponentState; + send?: BrowserSendComponentState; + ciphers?: BrowserComponentState; + sendType?: BrowserComponentState; + + constructor(init: Partial) { + super(init); + Object.assign(this.settings, { + ...new AccountSettings(), + ...this.settings, + }); + this.groupings = init?.groupings ?? new BrowserGroupingsComponentState(); + this.send = init?.send ?? new BrowserSendComponentState(); + this.ciphers = init?.ciphers ?? new BrowserComponentState(); + this.sendType = init?.sendType ?? new BrowserComponentState(); + } +} diff --git a/apps/browser/src/models/autofillField.ts b/apps/browser/src/models/autofillField.ts new file mode 100644 index 0000000000..fa08602a32 --- /dev/null +++ b/apps/browser/src/models/autofillField.ts @@ -0,0 +1,25 @@ +export default class AutofillField { + opid: string; + elementNumber: number; + visible: boolean; + viewable: boolean; + htmlID: string; + htmlName: string; + htmlClass: string; + "label-left": string; + "label-right": string; + "label-top": string; + "label-tag": string; + "label-aria": string; + placeholder: string; + type: string; + value: string; + disabled: boolean; + readonly: boolean; + onePasswordFieldType: string; + form: string; + autoCompleteType: string; + selectInfo: any; + maxLength: number; + tagName: string; +} diff --git a/apps/browser/src/models/autofillForm.ts b/apps/browser/src/models/autofillForm.ts new file mode 100644 index 0000000000..625d886f21 --- /dev/null +++ b/apps/browser/src/models/autofillForm.ts @@ -0,0 +1,7 @@ +export default class AutofillForm { + opid: string; + htmlName: string; + htmlID: string; + htmlAction: string; + htmlMethod: string; +} diff --git a/apps/browser/src/models/autofillPageDetails.ts b/apps/browser/src/models/autofillPageDetails.ts new file mode 100644 index 0000000000..1c91386930 --- /dev/null +++ b/apps/browser/src/models/autofillPageDetails.ts @@ -0,0 +1,13 @@ +import AutofillField from "./autofillField"; +import AutofillForm from "./autofillForm"; + +export default class AutofillPageDetails { + documentUUID: string; + title: string; + url: string; + documentUrl: string; + tabUrl: string; + forms: { [id: string]: AutofillForm }; + fields: AutofillField[]; + collectedTimestamp: number; +} diff --git a/apps/browser/src/models/autofillScript.ts b/apps/browser/src/models/autofillScript.ts new file mode 100644 index 0000000000..509c1da87b --- /dev/null +++ b/apps/browser/src/models/autofillScript.ts @@ -0,0 +1,12 @@ +export default class AutofillScript { + script: string[][] = []; + documentUUID: any = {}; + properties: any = {}; + options: any = {}; + metadata: any = {}; + autosubmit: any = null; + + constructor(documentUUID: string) { + this.documentUUID = documentUUID; + } +} diff --git a/apps/browser/src/models/biometricErrors.ts b/apps/browser/src/models/biometricErrors.ts new file mode 100644 index 0000000000..822a5c16f4 --- /dev/null +++ b/apps/browser/src/models/biometricErrors.ts @@ -0,0 +1,17 @@ +type BiometricError = { + title: string; + description: string; +}; + +export type BiometricErrorTypes = "startDesktop" | "desktopIntegrationDisabled"; + +export const BiometricErrors: Record = { + startDesktop: { + title: "startDesktopTitle", + description: "startDesktopDesc", + }, + desktopIntegrationDisabled: { + title: "desktopIntegrationDisabledTitle", + description: "desktopIntegrationDisabledDesc", + }, +}; diff --git a/apps/browser/src/models/browserComponentState.ts b/apps/browser/src/models/browserComponentState.ts new file mode 100644 index 0000000000..d968726c41 --- /dev/null +++ b/apps/browser/src/models/browserComponentState.ts @@ -0,0 +1,4 @@ +export class BrowserComponentState { + scrollY: number; + searchText: string; +} diff --git a/apps/browser/src/models/browserGroupingsComponentState.ts b/apps/browser/src/models/browserGroupingsComponentState.ts new file mode 100644 index 0000000000..8c539b4144 --- /dev/null +++ b/apps/browser/src/models/browserGroupingsComponentState.ts @@ -0,0 +1,18 @@ +import { CipherType } from "jslib-common/enums/cipherType"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { CollectionView } from "jslib-common/models/view/collectionView"; +import { FolderView } from "jslib-common/models/view/folderView"; + +import { BrowserComponentState } from "./browserComponentState"; + +export class BrowserGroupingsComponentState extends BrowserComponentState { + favoriteCiphers: CipherView[]; + noFolderCiphers: CipherView[]; + ciphers: CipherView[]; + collectionCounts: Map; + folderCounts: Map; + typeCounts: Map; + folders: FolderView[]; + collections: CollectionView[]; + deletedCount: number; +} diff --git a/apps/browser/src/models/browserSendComponentState.ts b/apps/browser/src/models/browserSendComponentState.ts new file mode 100644 index 0000000000..108d4363c3 --- /dev/null +++ b/apps/browser/src/models/browserSendComponentState.ts @@ -0,0 +1,9 @@ +import { SendType } from "jslib-common/enums/sendType"; +import { SendView } from "jslib-common/models/view/sendView"; + +import { BrowserComponentState } from "./browserComponentState"; + +export class BrowserSendComponentState extends BrowserComponentState { + sends: SendView[]; + typeCounts: Map; +} diff --git a/apps/browser/src/notification/bar.html b/apps/browser/src/notification/bar.html new file mode 100644 index 0000000000..101b555df0 --- /dev/null +++ b/apps/browser/src/notification/bar.html @@ -0,0 +1,39 @@ + + + + Bitwarden + + + + +
+ +
+
+ +
+
+ + + diff --git a/apps/browser/src/notification/bar.js b/apps/browser/src/notification/bar.js new file mode 100644 index 0000000000..1c1021ad5f --- /dev/null +++ b/apps/browser/src/notification/bar.js @@ -0,0 +1,161 @@ +// eslint-disable-next-line +require("./bar.scss"); + +document.addEventListener("DOMContentLoaded", () => { + let i18n = {}; + let lang = window.navigator.language; + + i18n.appName = chrome.i18n.getMessage("appName"); + i18n.close = chrome.i18n.getMessage("close"); + i18n.never = chrome.i18n.getMessage("never"); + i18n.folder = chrome.i18n.getMessage("folder"); + i18n.notificationAddSave = chrome.i18n.getMessage("notificationAddSave"); + i18n.notificationAddDesc = chrome.i18n.getMessage("notificationAddDesc"); + i18n.notificationChangeSave = chrome.i18n.getMessage("notificationChangeSave"); + i18n.notificationChangeDesc = chrome.i18n.getMessage("notificationChangeDesc"); + lang = chrome.i18n.getUILanguage(); // eslint-disable-line + + // delay 50ms so that we get proper body dimensions + setTimeout(load, 50); + + function load() { + const isVaultLocked = getQueryVariable("isVaultLocked") == "true"; + document.getElementById("logo").src = isVaultLocked + ? chrome.runtime.getURL("images/icon38_locked.png") + : chrome.runtime.getURL("images/icon38.png"); + + document.getElementById("logo-link").title = i18n.appName; + + var neverButton = document.querySelector("#template-add .never-save"); + neverButton.textContent = i18n.never; + + var selectFolder = document.querySelector("#template-add .select-folder"); + selectFolder.setAttribute("aria-label", i18n.folder); + selectFolder.setAttribute("isVaultLocked", isVaultLocked.toString()); + + var addButton = document.querySelector("#template-add .add-save"); + addButton.textContent = i18n.notificationAddSave; + + var changeButton = document.querySelector("#template-change .change-save"); + changeButton.textContent = i18n.notificationChangeSave; + + var closeIcon = document.getElementById("close"); + closeIcon.src = chrome.runtime.getURL("images/close.png"); + closeIcon.alt = i18n.close; + + var closeButton = document.getElementById("close-button"); + closeButton.title = i18n.close; + closeButton.setAttribute("aria-label", i18n.close); + + document.querySelector("#template-add .add-text").textContent = i18n.notificationAddDesc; + document.querySelector("#template-change .change-text").textContent = + i18n.notificationChangeDesc; + + if (getQueryVariable("add")) { + setContent(document.getElementById("template-add")); + + var addButton = document.querySelector("#template-add-clone .add-save"), // eslint-disable-line + neverButton = document.querySelector("#template-add-clone .never-save"); // eslint-disable-line + + addButton.addEventListener("click", (e) => { + e.preventDefault(); + + const folderId = document.querySelector("#template-add-clone .select-folder").value; + + const bgAddSaveMessage = { + command: "bgAddSave", + folder: folderId, + }; + sendPlatformMessage(bgAddSaveMessage); + }); + + neverButton.addEventListener("click", (e) => { + e.preventDefault(); + sendPlatformMessage({ + command: "bgNeverSave", + }); + }); + + if (!isVaultLocked) { + const responseFoldersCommand = "notificationBarGetFoldersList"; + chrome.runtime.onMessage.addListener((msg) => { + if (msg.command === responseFoldersCommand && msg.data) { + fillSelectorWithFolders(msg.data.folders); + } + }); + sendPlatformMessage({ + command: "bgGetDataForTab", + responseCommand: responseFoldersCommand, + }); + } + } else if (getQueryVariable("change")) { + setContent(document.getElementById("template-change")); + var changeButton = document.querySelector("#template-change-clone .change-save"); // eslint-disable-line + changeButton.addEventListener("click", (e) => { + e.preventDefault(); + + const bgChangeSaveMessage = { + command: "bgChangeSave", + }; + sendPlatformMessage(bgChangeSaveMessage); + }); + } + + closeButton.addEventListener("click", (e) => { + e.preventDefault(); + sendPlatformMessage({ + command: "bgCloseNotificationBar", + }); + }); + + window.addEventListener("resize", adjustHeight); + adjustHeight(); + } + + function getQueryVariable(variable) { + var query = window.location.search.substring(1); + var vars = query.split("&"); + + for (var i = 0; i < vars.length; i++) { + var pair = vars[i].split("="); + if (pair[0] === variable) { + return pair[1]; + } + } + + return null; + } + + function setContent(element) { + const content = document.getElementById("content"); + while (content.firstChild) { + content.removeChild(content.firstChild); + } + + var newElement = element.cloneNode(true); + newElement.id = newElement.id + "-clone"; + content.appendChild(newElement); + } + + function sendPlatformMessage(msg) { + chrome.runtime.sendMessage(msg); + } + + function fillSelectorWithFolders(folders) { + const select = document.querySelector("#template-add-clone .select-folder"); + select.appendChild(new Option(chrome.i18n.getMessage("selectFolder"), null, true)); + folders.forEach((folder) => { + //Select "No Folder" (id=null) folder by default + select.appendChild(new Option(folder.name, folder.id || "", false)); + }); + } + + function adjustHeight() { + sendPlatformMessage({ + command: "bgAdjustNotificationBar", + data: { + height: document.querySelector("body").scrollHeight, + }, + }); + } +}); diff --git a/apps/browser/src/notification/bar.scss b/apps/browser/src/notification/bar.scss new file mode 100644 index 0000000000..8303cb5151 --- /dev/null +++ b/apps/browser/src/notification/bar.scss @@ -0,0 +1,94 @@ +body { + background-color: #ffffff; + padding: 0; + margin: 0; + height: 100%; + font-size: 14px; + line-height: 16px; + color: #333333; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.outer-wrapper { + padding: 0 10px; + border-bottom: 2px solid #175ddc; + display: grid; + grid-template-columns: 24px auto 55px; + grid-column-gap: 10px; + box-sizing: border-box; + min-height: 42px; +} + +.inner-wrapper { + display: grid; + grid-template-columns: auto max-content; +} + +.outer-wrapper > *, +.inner-wrapper > * { + align-self: center; +} + +img { + border: 0; + margin: 0; + padding: 0; +} + +#logo { + width: 24px; + height: 24px; + display: block; +} + +#close { + width: 15px; + height: 15px; + display: block; + padding: 5px 0; + margin-right: 10px; +} + +button:not(.link), +button:not(.neutral) { + background-color: #175ddc; + padding: 5px 15px; + border-radius: 3px; + color: #ffffff; + border: 0; + + &:hover { + cursor: pointer; + background-color: #1751bd; + } +} + +button.link, +button.neutral { + background: none; + padding: 5px 15px; + color: #175ddc; + border: 0; + + &:hover { + cursor: pointer; + background: none; + text-decoration: underline; + } +} + +.select-folder[isVaultLocked="true"] { + display: none; +} + +@media screen and (max-width: 768px) { + .select-folder { + display: none; + } +} + +@media (print) { + body { + display: none; + } +} diff --git a/apps/browser/src/popup/accounts/environment.component.html b/apps/browser/src/popup/accounts/environment.component.html new file mode 100644 index 0000000000..626c5b7b3e --- /dev/null +++ b/apps/browser/src/popup/accounts/environment.component.html @@ -0,0 +1,104 @@ +
+
+ +

+ {{ "appName" | i18n }} +

+
+ +
+
+
+
+

+ {{ "selfHostedEnvironment" | i18n }} +

+
+
+ + +
+
+ +
+
+

+ {{ "customEnvironment" | i18n }} +

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
diff --git a/apps/browser/src/popup/accounts/environment.component.ts b/apps/browser/src/popup/accounts/environment.component.ts new file mode 100644 index 0000000000..615c8e6470 --- /dev/null +++ b/apps/browser/src/popup/accounts/environment.component.ts @@ -0,0 +1,28 @@ +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +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, + private router: Router + ) { + super(platformUtilsService, environmentService, i18nService); + this.showCustom = true; + } + + saved() { + super.saved(); + this.router.navigate([""]); + } +} diff --git a/apps/browser/src/popup/accounts/hint.component.html b/apps/browser/src/popup/accounts/hint.component.html new file mode 100644 index 0000000000..b4fbfdc05a --- /dev/null +++ b/apps/browser/src/popup/accounts/hint.component.html @@ -0,0 +1,38 @@ +
+
+ +

+ {{ "passwordHint" | i18n }} +

+
+ +
+
+
+
+
+
+ + +
+
+ +
+
+
diff --git a/apps/browser/src/popup/accounts/hint.component.ts b/apps/browser/src/popup/accounts/hint.component.ts new file mode 100644 index 0000000000..5bed1b5858 --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/accounts/home.component.html b/apps/browser/src/popup/accounts/home.component.html new file mode 100644 index 0000000000..2fb6907dcc --- /dev/null +++ b/apps/browser/src/popup/accounts/home.component.html @@ -0,0 +1,16 @@ +
+
+
+

{{ "loginOrCreateNewAccount" | i18n }}

+ {{ "login" | i18n }} + + {{ "createAccount" | i18n }} +
+
+ +  {{ "settings" | i18n }} + diff --git a/apps/browser/src/popup/accounts/home.component.ts b/apps/browser/src/popup/accounts/home.component.ts new file mode 100644 index 0000000000..ca74774024 --- /dev/null +++ b/apps/browser/src/popup/accounts/home.component.ts @@ -0,0 +1,63 @@ +import { Component } from "@angular/core"; + +import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.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 { Utils } from "jslib-common/misc/utils"; + +@Component({ + selector: "app-home", + templateUrl: "home.component.html", +}) +export class HomeComponent { + constructor( + protected platformUtilsService: PlatformUtilsService, + private passwordGenerationService: PasswordGenerationService, + private stateService: StateService, + private cryptoFunctionService: CryptoFunctionService, + private environmentService: EnvironmentService + ) {} + + async launchSsoBrowser() { + // Generate necessary sso params + const passwordOptions: any = { + type: "password", + length: 64, + uppercase: true, + lowercase: true, + numbers: true, + special: false, + }; + + const state = + (await this.passwordGenerationService.generatePassword(passwordOptions)) + + ":clientId=browser"; + const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions); + const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, "sha256"); + const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash); + + await this.stateService.setSsoCodeVerifier(codeVerifier); + await this.stateService.setSsoState(state); + + let url = this.environmentService.getWebVaultUrl(); + if (url == null) { + url = "https://vault.bitwarden.com"; + } + + const redirectUri = url + "/sso-connector.html"; + + // Launch browser + this.platformUtilsService.launchUri( + url + + "/#/sso?clientId=browser" + + "&redirectUri=" + + encodeURIComponent(redirectUri) + + "&state=" + + state + + "&codeChallenge=" + + codeChallenge + ); + } +} diff --git a/apps/browser/src/popup/accounts/lock.component.html b/apps/browser/src/popup/accounts/lock.component.html new file mode 100644 index 0000000000..04e6eb1e10 --- /dev/null +++ b/apps/browser/src/popup/accounts/lock.component.html @@ -0,0 +1,85 @@ +
+
+
+

+ {{ "verifyIdentity" | i18n }} +

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

+ +

+ + {{ biometricError }} +

+ {{ "awaitDesktop" | i18n }} +

+
+
diff --git a/apps/browser/src/popup/accounts/lock.component.ts b/apps/browser/src/popup/accounts/lock.component.ts new file mode 100644 index 0000000000..e1bee7fc78 --- /dev/null +++ b/apps/browser/src/popup/accounts/lock.component.ts @@ -0,0 +1,105 @@ +import { Component, NgZone } from "@angular/core"; +import { Router } from "@angular/router"; + +import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuthService } from "jslib-common/abstractions/auth.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"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; + +import { BiometricErrors, BiometricErrorTypes } from "../../models/biometricErrors"; + +@Component({ + selector: "app-lock", + templateUrl: "lock.component.html", +}) +export class LockComponent extends BaseLockComponent { + private isInitialLockScreen: boolean; + + biometricError: string; + pendingBiometric = false; + + constructor( + router: Router, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + messagingService: MessagingService, + cryptoService: CryptoService, + vaultTimeoutService: VaultTimeoutService, + environmentService: EnvironmentService, + stateService: StateService, + apiService: ApiService, + logService: LogService, + keyConnectorService: KeyConnectorService, + ngZone: NgZone, + private authService: AuthService + ) { + super( + router, + i18nService, + platformUtilsService, + messagingService, + cryptoService, + vaultTimeoutService, + environmentService, + stateService, + apiService, + logService, + keyConnectorService, + ngZone + ); + this.successRoute = "/tabs/current"; + this.isInitialLockScreen = (window as any).previousPopupUrl == null; + } + + async ngOnInit() { + await super.ngOnInit(); + const disableAutoBiometricsPrompt = + (await this.stateService.getDisableAutoBiometricsPrompt()) ?? true; + + window.setTimeout(async () => { + document.getElementById(this.pinLock ? "pin" : "masterPassword").focus(); + if ( + this.biometricLock && + !disableAutoBiometricsPrompt && + this.isInitialLockScreen && + (await this.authService.getAuthStatus()) === AuthenticationStatus.Locked + ) { + await this.unlockBiometric(); + } + }, 100); + } + + async unlockBiometric(): Promise { + if (!this.biometricLock) { + return; + } + + this.pendingBiometric = true; + this.biometricError = null; + + let success; + try { + success = await super.unlockBiometric(); + } catch (e) { + const error = BiometricErrors[e as BiometricErrorTypes]; + + if (error == null) { + this.logService.error("Unknown error: " + e); + } + + this.biometricError = this.i18nService.t(error.description); + } + this.pendingBiometric = false; + + return success; + } +} diff --git a/apps/browser/src/popup/accounts/login.component.html b/apps/browser/src/popup/accounts/login.component.html new file mode 100644 index 0000000000..d82d214fb2 --- /dev/null +++ b/apps/browser/src/popup/accounts/login.component.html @@ -0,0 +1,72 @@ +
+
+ +

+ {{ "appName" | i18n }} +

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

+ {{ "getMasterPasswordHint" | i18n }} +

+ +
+
diff --git a/apps/browser/src/popup/accounts/login.component.ts b/apps/browser/src/popup/accounts/login.component.ts new file mode 100644 index 0000000000..cb0567c8d9 --- /dev/null +++ b/apps/browser/src/popup/accounts/login.component.ts @@ -0,0 +1,56 @@ +import { Component, NgZone } from "@angular/core"; +import { Router } from "@angular/router"; + +import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.component"; +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-login", + templateUrl: "login.component.html", +}) +export class LoginComponent extends BaseLoginComponent { + protected alwaysRememberEmail = true; + + constructor( + authService: AuthService, + router: Router, + protected platformUtilsService: PlatformUtilsService, + protected i18nService: I18nService, + protected stateService: StateService, + protected environmentService: EnvironmentService, + protected passwordGenerationService: PasswordGenerationService, + protected cryptoFunctionService: CryptoFunctionService, + syncService: SyncService, + logService: LogService, + ngZone: NgZone + ) { + super( + authService, + router, + platformUtilsService, + i18nService, + stateService, + environmentService, + passwordGenerationService, + cryptoFunctionService, + logService, + ngZone + ); + super.onSuccessfulLogin = async () => { + await syncService.fullSync(true); + }; + super.successRoute = "/tabs/vault"; + } + + settings() { + this.router.navigate(["environment"]); + } +} diff --git a/apps/browser/src/popup/accounts/register.component.html b/apps/browser/src/popup/accounts/register.component.html new file mode 100644 index 0000000000..fc9c4e7990 --- /dev/null +++ b/apps/browser/src/popup/accounts/register.component.html @@ -0,0 +1,160 @@ +
+
+ +

+ {{ "createAccount" | i18n }} +

+
+ +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
+ +
+
+
+ + +
+
+ +
+
+
+
+
+ + +
+
+
+
+
diff --git a/apps/browser/src/popup/accounts/register.component.ts b/apps/browser/src/popup/accounts/register.component.ts new file mode 100644 index 0000000000..98412cd0c9 --- /dev/null +++ b/apps/browser/src/popup/accounts/register.component.ts @@ -0,0 +1,45 @@ +import { Component } 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 { 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"; + +@Component({ + selector: "app-register", + templateUrl: "register.component.html", +}) +export class RegisterComponent extends BaseRegisterComponent { + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + cryptoService: CryptoService, + apiService: ApiService, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + passwordGenerationService: PasswordGenerationService, + environmentService: EnvironmentService, + logService: LogService + ) { + super( + authService, + router, + i18nService, + cryptoService, + apiService, + stateService, + platformUtilsService, + passwordGenerationService, + environmentService, + logService + ); + } +} diff --git a/apps/browser/src/popup/accounts/remove-password.component.html b/apps/browser/src/popup/accounts/remove-password.component.html new file mode 100644 index 0000000000..793bcff3e0 --- /dev/null +++ b/apps/browser/src/popup/accounts/remove-password.component.html @@ -0,0 +1,49 @@ +
+
+
+ {{ "removeMasterPassword" | i18n }} +
+
+
+ +
+
+
+
+

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

+
+
+ +
+
+ +
+
+
+
diff --git a/apps/browser/src/popup/accounts/remove-password.component.ts b/apps/browser/src/popup/accounts/remove-password.component.ts new file mode 100644 index 0000000000..cdb75058ab --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/accounts/set-password.component.html b/apps/browser/src/popup/accounts/set-password.component.html new file mode 100644 index 0000000000..b8e89b7693 --- /dev/null +++ b/apps/browser/src/popup/accounts/set-password.component.html @@ -0,0 +1,148 @@ +
+
+ +

+ {{ "setMasterPassword" | i18n }} +

+
+ +
+
+
+
+ +
+
+
+ {{ "ssoCompleteRegistration" | i18n }} + + {{ "resetPasswordAutoEnrollInviteWarning" | i18n }} + + + +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
diff --git a/apps/browser/src/popup/accounts/set-password.component.ts b/apps/browser/src/popup/accounts/set-password.component.ts new file mode 100644 index 0000000000..668f98bb1b --- /dev/null +++ b/apps/browser/src/popup/accounts/set-password.component.ts @@ -0,0 +1,77 @@ +import { Component } 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 { 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"; + +@Component({ + selector: "app-set-password", + templateUrl: "set-password.component.html", +}) +export class SetPasswordComponent extends BaseSetPasswordComponent { + constructor( + apiService: ApiService, + i18nService: I18nService, + cryptoService: CryptoService, + messagingService: MessagingService, + stateService: StateService, + passwordGenerationService: PasswordGenerationService, + platformUtilsService: PlatformUtilsService, + policyService: PolicyService, + router: Router, + syncService: SyncService, + route: ActivatedRoute + ) { + 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; + } + } +} diff --git a/apps/browser/src/popup/accounts/sso.component.html b/apps/browser/src/popup/accounts/sso.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/browser/src/popup/accounts/sso.component.ts b/apps/browser/src/popup/accounts/sso.component.ts new file mode 100644 index 0000000000..29af3db6ae --- /dev/null +++ b/apps/browser/src/popup/accounts/sso.component.ts @@ -0,0 +1,71 @@ +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"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; + +import { BrowserApi } from "../../browser/browserApi"; + +@Component({ + selector: "app-sso", + templateUrl: "sso.component.html", +}) +export class SsoComponent extends BaseSsoComponent { + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + route: ActivatedRoute, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + cryptoFunctionService: CryptoFunctionService, + passwordGenerationService: PasswordGenerationService, + syncService: SyncService, + environmentService: EnvironmentService, + logService: LogService, + private vaultTimeoutService: VaultTimeoutService + ) { + super( + authService, + router, + i18nService, + route, + stateService, + platformUtilsService, + apiService, + cryptoFunctionService, + environmentService, + passwordGenerationService, + logService + ); + + const url = this.environmentService.getWebVaultUrl(); + + this.redirectUri = url + "/sso-connector.html"; + this.clientId = "browser"; + + super.onSuccessfulLogin = async () => { + await syncService.fullSync(true); + + // If the vault is unlocked then this will clear keys from memory, which we don't want to do + if ((await this.authService.getAuthStatus()) !== AuthenticationStatus.Unlocked) { + BrowserApi.reloadOpenWindows(); + } + + const thisWindow = window.open("", "_self"); + thisWindow.close(); + }; + } +} diff --git a/apps/browser/src/popup/accounts/two-factor-options.component.html b/apps/browser/src/popup/accounts/two-factor-options.component.html new file mode 100644 index 0000000000..e70d6a373c --- /dev/null +++ b/apps/browser/src/popup/accounts/two-factor-options.component.html @@ -0,0 +1,29 @@ +
+ +

+ {{ "twoStepOptions" | i18n }} +

+
+
+
+
+
+ + +
+
+
diff --git a/apps/browser/src/popup/accounts/two-factor-options.component.ts b/apps/browser/src/popup/accounts/two-factor-options.component.ts new file mode 100644 index 0000000000..e08e6e7b90 --- /dev/null +++ b/apps/browser/src/popup/accounts/two-factor-options.component.ts @@ -0,0 +1,28 @@ +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); + } + + choose(p: any) { + super.choose(p); + this.twoFactorService.setSelectedProvider(p.type); + this.router.navigate(["2fa"]); + } +} diff --git a/apps/browser/src/popup/accounts/two-factor.component.html b/apps/browser/src/popup/accounts/two-factor.component.html new file mode 100644 index 0000000000..84ad0cc8bb --- /dev/null +++ b/apps/browser/src/popup/accounts/two-factor.component.html @@ -0,0 +1,144 @@ +
+
+ +

+ {{ title }} +

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

{{ "insertYubiKey" | i18n }}

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

{{ "webAuthnNewTab" | i18n }}

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

{{ "noTwoStepProviders" | i18n }}

+

{{ "noTwoStepProviders2" | i18n }}

+
+
+

+ +

+

+ +

+
+
+
diff --git a/apps/browser/src/popup/accounts/two-factor.component.ts b/apps/browser/src/popup/accounts/two-factor.component.ts new file mode 100644 index 0000000000..d7e2d3771b --- /dev/null +++ b/apps/browser/src/popup/accounts/two-factor.component.ts @@ -0,0 +1,140 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { TwoFactorComponent as BaseTwoFactorComponent } from "jslib-angular/components/two-factor.component"; +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 { 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 { MessagingService } from "jslib-common/abstractions/messaging.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 { BrowserApi } from "../../browser/browserApi"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const BroadcasterSubscriptionId = "TwoFactorComponent"; + +@Component({ + selector: "app-two-factor", + templateUrl: "two-factor.component.html", +}) +export class TwoFactorComponent extends BaseTwoFactorComponent { + showNewWindowMessage = false; + + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + apiService: ApiService, + platformUtilsService: PlatformUtilsService, + private syncService: SyncService, + environmentService: EnvironmentService, + private broadcasterService: BroadcasterService, + private popupUtilsService: PopupUtilsService, + stateService: StateService, + route: ActivatedRoute, + private messagingService: MessagingService, + 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); + }; + super.successRoute = "/tabs/vault"; + this.webAuthnNewTab = + this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari(); + } + + async ngOnInit() { + if (this.route.snapshot.paramMap.has("webAuthnResponse")) { + // WebAuthn fallback response + this.selectedProviderType = TwoFactorProviderType.WebAuthn; + this.token = this.route.snapshot.paramMap.get("webAuthnResponse"); + super.onSuccessfulLogin = async () => { + this.syncService.fullSync(true); + this.messagingService.send("reloadPopup"); + window.close(); + }; + this.remember = this.route.snapshot.paramMap.get("remember") === "true"; + await this.doSubmit(); + return; + } + + await super.ngOnInit(); + if (this.selectedProviderType == null) { + return; + } + + // WebAuthn prompt appears inside the popup on linux, and requires a larger popup width + // than usual to avoid cutting off the dialog. + if (this.selectedProviderType === TwoFactorProviderType.WebAuthn && (await this.isLinux())) { + document.body.classList.add("linux-webauthn"); + } + + if ( + this.selectedProviderType === TwoFactorProviderType.Email && + this.popupUtilsService.inPopup(window) + ) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("popup2faCloseMessage"), + null, + this.i18nService.t("yes"), + this.i18nService.t("no") + ); + if (confirmed) { + this.popupUtilsService.popOut(window); + } + } + + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + if (qParams.sso === "true") { + super.onSuccessfulLogin = () => { + BrowserApi.reloadOpenWindows(); + const thisWindow = window.open("", "_self"); + thisWindow.close(); + return this.syncService.fullSync(true); + }; + } + }); + } + + async ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + + if (this.selectedProviderType === TwoFactorProviderType.WebAuthn && (await this.isLinux())) { + document.body.classList.remove("linux-webauthn"); + } + super.ngOnDestroy(); + } + + anotherMethod() { + this.router.navigate(["2fa-options"]); + } + + async isLinux() { + return (await BrowserApi.getPlatformInfo()).os === "linux"; + } +} diff --git a/apps/browser/src/popup/accounts/update-temp-password.component.html b/apps/browser/src/popup/accounts/update-temp-password.component.html new file mode 100644 index 0000000000..f1836132f7 --- /dev/null +++ b/apps/browser/src/popup/accounts/update-temp-password.component.html @@ -0,0 +1,130 @@ +
+
+ +

+ {{ "updateMasterPassword" | i18n }} +

+
+ +
+
+
+ + {{ "updateMasterPasswordWarning" | i18n }} + + + +
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ + +
+
+ +
+
+
diff --git a/apps/browser/src/popup/accounts/update-temp-password.component.ts b/apps/browser/src/popup/accounts/update-temp-password.component.ts new file mode 100644 index 0000000000..7ffbad1927 --- /dev/null +++ b/apps/browser/src/popup/accounts/update-temp-password.component.ts @@ -0,0 +1,81 @@ +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, + stateService: StateService, + messagingService: MessagingService, + apiService: ApiService, + syncService: SyncService, + logService: LogService + ) { + super( + i18nService, + platformUtilsService, + passwordGenerationService, + policyService, + cryptoService, + messagingService, + apiService, + stateService, + syncService, + logService + ); + } +} diff --git a/apps/browser/src/popup/app-routing.animations.ts b/apps/browser/src/popup/app-routing.animations.ts new file mode 100644 index 0000000000..a37c128c80 --- /dev/null +++ b/apps/browser/src/popup/app-routing.animations.ts @@ -0,0 +1,205 @@ +import { animate, group, query, style, transition, trigger } from "@angular/animations"; + +const queryShown = query( + ":enter, :leave", + [style({ position: "fixed", width: "100%", height: "100%" })], + { + optional: true, + } +); + +// ref: https://github.com/angular/angular/issues/15477 +const queryChildRoute = query("router-outlet ~ *", [style({}), animate(1, style({}))], { + optional: true, +}); + +const speed = "0.4s"; + +export function queryTranslate( + direction: string, + axis: string, + from: number, + to: number, + zIndex = 1000 +) { + return query( + ":" + direction, + [ + style({ + transform: "translate" + axis + "(" + from + "%)", + zIndex: zIndex, + boxShadow: "0 3px 2px -2px gray", + }), + animate(speed + " ease-in-out", style({ transform: "translate" + axis + "(" + to + "%)" })), + ], + { optional: true } + ); +} + +export function queryTranslateX(direction: string, from: number, to: number, zIndex = 1000) { + return queryTranslate(direction, "X", from, to, zIndex); +} + +export function queryTranslateY(direction: string, from: number, to: number, zIndex = 1000) { + return queryTranslate(direction, "Y", from, to, zIndex); +} + +const inSlideLeft = [ + queryShown, + group([queryTranslateX("enter", 100, 0), queryTranslateX("leave", 0, -100), queryChildRoute]), +]; + +const outSlideRight = [ + queryShown, + group([queryTranslateX("enter", -100, 0), queryTranslateX("leave", 0, 100)]), +]; + +const inSlideUp = [ + queryShown, + group([queryTranslateY("enter", 100, 0, 1010), queryTranslateY("leave", 0, 0), queryChildRoute]), +]; + +const outSlideDown = [ + queryShown, + group([queryTranslateY("enter", 0, 0), queryTranslateY("leave", 0, 100, 1010)]), +]; + +const inSlideDown = [ + queryShown, + group([queryTranslateY("enter", -100, 0, 1010), queryTranslateY("leave", 0, 0), queryChildRoute]), +]; + +// eslint-disable-next-line +const outSlideUp = [ + queryShown, + group([queryTranslateY("enter", 0, 0), queryTranslateY("leave", 0, -100, 1010)]), +]; + +export function tabsToCiphers(fromState: string, toState: string) { + if (fromState == null || toState === null || toState.indexOf("ciphers_") === -1) { + return false; + } + return ( + (fromState.indexOf("ciphers_") === 0 && fromState.indexOf("ciphers_direction=b") === -1) || + fromState === "tabs" + ); +} + +export function ciphersToTabs(fromState: string, toState: string) { + if (fromState == null || toState === null || fromState.indexOf("ciphers_") === -1) { + return false; + } + return toState.indexOf("ciphers_direction=b") === 0 || toState === "tabs"; +} + +export function ciphersToView(fromState: string, toState: string) { + if (fromState == null || toState === null) { + return false; + } + return ( + fromState.indexOf("ciphers_") === 0 && + (toState === "view-cipher" || toState === "add-cipher" || toState === "clone-cipher") + ); +} + +export function viewToCiphers(fromState: string, toState: string) { + if (fromState == null || toState === null) { + return false; + } + return ( + (fromState === "view-cipher" || fromState === "add-cipher" || fromState === "clone-cipher") && + toState.indexOf("ciphers_") === 0 + ); +} + +export const routerTransition = trigger("routerTransition", [ + transition("void => home", inSlideLeft), + transition("void => tabs", inSlideLeft), + + transition("home => environment, home => login, home => register", inSlideUp), + + transition("login => home", outSlideDown), + transition("login => hint", inSlideUp), + transition("login => tabs, login => 2fa", inSlideLeft), + + transition("hint => login, register => home, environment => home", outSlideDown), + + transition("2fa => login", outSlideRight), + transition("2fa => 2fa-options", inSlideUp), + transition("2fa-options => 2fa", outSlideDown), + transition("2fa => tabs", inSlideLeft), + + transition(tabsToCiphers, inSlideLeft), + transition(ciphersToTabs, outSlideRight), + + transition(ciphersToView, inSlideUp), + transition(viewToCiphers, outSlideDown), + + transition("tabs => view-cipher", inSlideUp), + transition("view-cipher => tabs", outSlideDown), + + transition("view-cipher => edit-cipher, view-cipher => cipher-password-history", inSlideUp), + transition( + "edit-cipher => view-cipher, cipher-password-history => view-cipher, edit-cipher => tabs", + outSlideDown + ), + + transition("view-cipher => clone-cipher", inSlideUp), + transition("clone-cipher => view-cipher, clone-cipher => tabs", outSlideDown), + + transition("view-cipher => share-cipher", inSlideUp), + transition("share-cipher => view-cipher", outSlideDown), + + transition("tabs => add-cipher", inSlideUp), + transition("add-cipher => tabs", outSlideDown), + + transition("generator => generator-history, tabs => generator-history", inSlideLeft), + transition("generator-history => generator, generator-history => tabs", outSlideRight), + + transition( + "add-cipher => generator, edit-cipher => generator, clone-cipher => generator", + inSlideUp + ), + transition( + "generator => add-cipher, generator => edit-cipher, generator => clone-cipher", + outSlideDown + ), + + transition("edit-cipher => attachments, edit-cipher => collections", inSlideLeft), + transition("attachments => edit-cipher, collections => edit-cipher", outSlideRight), + + transition("clone-cipher => attachments, clone-cipher => collections", inSlideLeft), + transition("attachments => clone-cipher, collections => clone-cipher", outSlideRight), + + transition("tabs => export", inSlideLeft), + transition("export => tabs", outSlideRight), + + transition("tabs => folders", inSlideLeft), + transition("folders => tabs", outSlideRight), + + transition("folders => edit-folder, folders => add-folder", inSlideUp), + transition("edit-folder => folders, add-folder => folders", outSlideDown), + + transition("tabs => sync", inSlideLeft), + transition("sync => tabs", outSlideRight), + + transition("tabs => excluded-domains", inSlideLeft), + transition("excluded-domains => tabs", outSlideRight), + + transition("tabs => options", inSlideLeft), + transition("options => tabs", outSlideRight), + + transition("tabs => premium", inSlideLeft), + transition("premium => tabs", outSlideRight), + + transition("tabs => lock", inSlideDown), + + transition("tabs => send-type", inSlideLeft), + transition("send-type => tabs", outSlideRight), + + transition("tabs => add-send, send-type => add-send", inSlideUp), + transition("add-send => tabs, add-send => send-type", outSlideDown), + + transition("tabs => edit-send, send-type => edit-send", inSlideUp), + transition("edit-send => tabs, edit-send => send-type", outSlideDown), +]); diff --git a/apps/browser/src/popup/app-routing.module.ts b/apps/browser/src/popup/app-routing.module.ts new file mode 100644 index 0000000000..b9d741615a --- /dev/null +++ b/apps/browser/src/popup/app-routing.module.ts @@ -0,0 +1,341 @@ +import { Injectable, NgModule } from "@angular/core"; +import { ActivatedRouteSnapshot, RouteReuseStrategy, RouterModule, Routes } from "@angular/router"; + +import { AuthGuard } from "jslib-angular/guards/auth.guard"; +import { LockGuard } from "jslib-angular/guards/lock.guard"; +import { UnauthGuard } from "jslib-angular/guards/unauth.guard"; + +import { EnvironmentComponent } from "./accounts/environment.component"; +import { HintComponent } from "./accounts/hint.component"; +import { HomeComponent } from "./accounts/home.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 { TwoFactorOptionsComponent } from "./accounts/two-factor-options.component"; +import { TwoFactorComponent } from "./accounts/two-factor.component"; +import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component"; +import { GeneratorComponent } from "./generator/generator.component"; +import { PasswordGeneratorHistoryComponent } from "./generator/password-generator-history.component"; +import { SendAddEditComponent } from "./send/send-add-edit.component"; +import { SendGroupingsComponent } from "./send/send-groupings.component"; +import { SendTypeComponent } from "./send/send-type.component"; +import { DebounceNavigationService } from "./services/debounceNavigationService"; +import { ExcludedDomainsComponent } from "./settings/excluded-domains.component"; +import { ExportComponent } from "./settings/export.component"; +import { FolderAddEditComponent } from "./settings/folder-add-edit.component"; +import { FoldersComponent } from "./settings/folders.component"; +import { OptionsComponent } from "./settings/options.component"; +import { PremiumComponent } from "./settings/premium.component"; +import { SettingsComponent } from "./settings/settings.component"; +import { SyncComponent } from "./settings/sync.component"; +import { TabsComponent } from "./tabs.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 { CurrentTabComponent } from "./vault/current-tab.component"; +import { PasswordHistoryComponent } from "./vault/password-history.component"; +import { ShareComponent } from "./vault/share.component"; +import { VaultFilterComponent } from "./vault/vault-filter.component"; +import { ViewComponent } from "./vault/view.component"; + +const routes: Routes = [ + { + path: "", + redirectTo: "home", + pathMatch: "full", + }, + { + path: "vault", + redirectTo: "/tabs/vault", + pathMatch: "full", + }, + { + path: "home", + component: HomeComponent, + canActivate: [UnauthGuard], + data: { state: "home" }, + }, + { + path: "login", + component: LoginComponent, + canActivate: [UnauthGuard], + data: { state: "login" }, + }, + { + path: "lock", + component: LockComponent, + canActivate: [LockGuard], + data: { state: "lock" }, + }, + { + path: "2fa", + component: TwoFactorComponent, + canActivate: [UnauthGuard], + data: { state: "2fa" }, + }, + { + path: "2fa-options", + component: TwoFactorOptionsComponent, + canActivate: [UnauthGuard], + data: { state: "2fa-options" }, + }, + { + path: "sso", + component: SsoComponent, + canActivate: [UnauthGuard], + data: { state: "sso" }, + }, + { + path: "set-password", + component: SetPasswordComponent, + data: { state: "set-password" }, + }, + { + path: "remove-password", + component: RemovePasswordComponent, + canActivate: [AuthGuard], + data: { state: "remove-password" }, + }, + { + path: "register", + component: RegisterComponent, + canActivate: [UnauthGuard], + data: { state: "register" }, + }, + { + path: "hint", + component: HintComponent, + canActivate: [UnauthGuard], + data: { state: "hint" }, + }, + { + path: "environment", + component: EnvironmentComponent, + canActivate: [UnauthGuard], + data: { state: "environment" }, + }, + { + path: "ciphers", + component: CiphersComponent, + canActivate: [AuthGuard], + data: { state: "ciphers" }, + }, + { + path: "view-cipher", + component: ViewComponent, + canActivate: [AuthGuard], + data: { state: "view-cipher" }, + }, + { + path: "cipher-password-history", + component: PasswordHistoryComponent, + canActivate: [AuthGuard], + data: { state: "cipher-password-history" }, + }, + { + path: "add-cipher", + component: AddEditComponent, + canActivate: [AuthGuard, DebounceNavigationService], + data: { state: "add-cipher" }, + runGuardsAndResolvers: "always", + }, + { + path: "edit-cipher", + component: AddEditComponent, + canActivate: [AuthGuard, DebounceNavigationService], + data: { state: "edit-cipher" }, + runGuardsAndResolvers: "always", + }, + { + path: "share-cipher", + component: ShareComponent, + canActivate: [AuthGuard], + data: { state: "share-cipher" }, + }, + { + path: "collections", + component: CollectionsComponent, + canActivate: [AuthGuard], + data: { state: "collections" }, + }, + { + path: "attachments", + component: AttachmentsComponent, + canActivate: [AuthGuard], + data: { state: "attachments" }, + }, + { + path: "generator", + component: GeneratorComponent, + canActivate: [AuthGuard], + data: { state: "generator" }, + }, + { + path: "generator-history", + component: PasswordGeneratorHistoryComponent, + canActivate: [AuthGuard], + data: { state: "generator-history" }, + }, + { + path: "export", + component: ExportComponent, + canActivate: [AuthGuard], + data: { state: "export" }, + }, + { + path: "folders", + component: FoldersComponent, + canActivate: [AuthGuard], + data: { state: "folders" }, + }, + { + path: "add-folder", + component: FolderAddEditComponent, + canActivate: [AuthGuard], + data: { state: "add-folder" }, + }, + { + path: "edit-folder", + component: FolderAddEditComponent, + canActivate: [AuthGuard], + data: { state: "edit-folder" }, + }, + { + path: "sync", + component: SyncComponent, + canActivate: [AuthGuard], + data: { state: "sync" }, + }, + { + path: "excluded-domains", + component: ExcludedDomainsComponent, + canActivate: [AuthGuard], + data: { state: "excluded-domains" }, + }, + { + path: "premium", + component: PremiumComponent, + canActivate: [AuthGuard], + data: { state: "premium" }, + }, + { + path: "options", + component: OptionsComponent, + canActivate: [AuthGuard], + data: { state: "options" }, + }, + { + path: "clone-cipher", + component: AddEditComponent, + canActivate: [AuthGuard], + data: { state: "clone-cipher" }, + }, + { + path: "send-type", + component: SendTypeComponent, + canActivate: [AuthGuard], + data: { state: "send-type" }, + }, + { + path: "add-send", + component: SendAddEditComponent, + canActivate: [AuthGuard], + data: { state: "add-send" }, + }, + { + path: "edit-send", + component: SendAddEditComponent, + canActivate: [AuthGuard], + data: { state: "edit-send" }, + }, + { + path: "update-temp-password", + component: UpdateTempPasswordComponent, + canActivate: [AuthGuard], + data: { state: "update-temp-password" }, + }, + { + path: "tabs", + component: TabsComponent, + data: { state: "tabs" }, + children: [ + { + path: "", + redirectTo: "/tabs/vault", + pathMatch: "full", + }, + { + path: "current", + component: CurrentTabComponent, + canActivate: [AuthGuard], + data: { state: "tabs_current" }, + runGuardsAndResolvers: "always", + }, + { + path: "vault", + component: VaultFilterComponent, + canActivate: [AuthGuard], + data: { state: "tabs_vault" }, + }, + { + path: "generator", + component: GeneratorComponent, + canActivate: [AuthGuard], + data: { state: "tabs_generator" }, + }, + { + path: "settings", + component: SettingsComponent, + canActivate: [AuthGuard], + data: { state: "tabs_settings" }, + }, + { + path: "send", + component: SendGroupingsComponent, + canActivate: [AuthGuard], + data: { state: "tabs_send" }, + }, + ], + }, +]; + +@Injectable() +export class NoRouteReuseStrategy implements RouteReuseStrategy { + shouldDetach(route: ActivatedRouteSnapshot) { + return false; + } + + // eslint-disable-next-line + store(route: ActivatedRouteSnapshot, handle: {}) { + /* Nothing */ + } + + shouldAttach(route: ActivatedRouteSnapshot) { + return false; + } + + retrieve(route: ActivatedRouteSnapshot): any { + return null; + } + + shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot) { + return false; + } +} + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, { + useHash: true, + onSameUrlNavigation: "reload", + /*enableTracing: true,*/ + }), + ], + exports: [RouterModule], + providers: [{ provide: RouteReuseStrategy, useClass: NoRouteReuseStrategy }], +}) +export class AppRoutingModule {} diff --git a/apps/browser/src/popup/app.component.ts b/apps/browser/src/popup/app.component.ts new file mode 100644 index 0000000000..62872f35b7 --- /dev/null +++ b/apps/browser/src/popup/app.component.ts @@ -0,0 +1,267 @@ +import { ChangeDetectorRef, Component, NgZone, OnInit, SecurityContext } from "@angular/core"; +import { DomSanitizer } from "@angular/platform-browser"; +import { NavigationEnd, Router, RouterOutlet } from "@angular/router"; +import { IndividualConfig, ToastrService } from "ngx-toastr"; +import Swal, { SweetAlertIcon } from "sweetalert2"; + +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.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 { BrowserApi } from "../browser/browserApi"; +import { StateService } from "../services/abstractions/state.service"; + +import { routerTransition } from "./app-routing.animations"; + +@Component({ + selector: "app-root", + styles: [], + animations: [routerTransition], + template: `
+ +
`, +}) +export class AppComponent implements OnInit { + private lastActivity: number = null; + private activeUserId: string; + + constructor( + private toastrService: ToastrService, + private broadcasterService: BroadcasterService, + private authService: AuthService, + private i18nService: I18nService, + private router: Router, + private stateService: StateService, + private messagingService: MessagingService, + private changeDetectorRef: ChangeDetectorRef, + private ngZone: NgZone, + private sanitizer: DomSanitizer, + private platformUtilsService: PlatformUtilsService + ) {} + + async ngOnInit() { + // Component states must not persist between closing and reopening the popup, otherwise they become dead objects + // Clear them aggressively to make sure this doesn't occur + await this.clearComponentStates(); + + this.stateService.activeAccount.subscribe((userId) => { + this.activeUserId = userId; + }); + + this.ngZone.runOutsideAngular(() => { + window.onmousedown = () => this.recordActivity(); + window.ontouchstart = () => this.recordActivity(); + window.onclick = () => this.recordActivity(); + window.onscroll = () => this.recordActivity(); + window.onkeypress = () => this.recordActivity(); + }); + + (window as any).bitwardenPopupMainMessageListener = async ( + msg: any, + sender: any, + sendResponse: any + ) => { + if (msg.command === "doneLoggingOut") { + this.ngZone.run(async () => { + this.authService.logOut(async () => { + if (msg.expired) { + this.showToast({ + type: "warning", + title: this.i18nService.t("loggedOut"), + text: this.i18nService.t("loginExpired"), + }); + } + + if (this.stateService.activeAccount.getValue() == null) { + this.router.navigate(["home"]); + } + }); + this.changeDetectorRef.detectChanges(); + }); + } else if (msg.command === "authBlocked") { + this.ngZone.run(() => { + this.router.navigate(["home"]); + }); + } else if (msg.command === "locked") { + if (msg.userId == null || msg.userId === (await this.stateService.getUserId())) { + this.ngZone.run(() => { + this.router.navigate(["lock"]); + }); + } + } else if (msg.command === "showDialog") { + await this.showDialog(msg); + } else if (msg.command === "showToast") { + this.ngZone.run(() => { + this.showToast(msg); + }); + } else if (msg.command === "reloadProcess") { + const windowReload = + this.platformUtilsService.isSafari() || + this.platformUtilsService.isFirefox() || + this.platformUtilsService.isOpera(); + if (windowReload) { + // Wait to make sure background has reloaded first. + window.setTimeout(() => BrowserApi.reloadExtension(window), 2000); + } + } else if (msg.command === "reloadPopup") { + this.ngZone.run(() => { + this.router.navigate(["/"]); + }); + } else if (msg.command === "convertAccountToKeyConnector") { + this.ngZone.run(async () => { + this.router.navigate(["/remove-password"]); + }); + } else { + msg.webExtSender = sender; + this.broadcasterService.send(msg); + } + }; + + BrowserApi.messageListener("app.component", (window as any).bitwardenPopupMainMessageListener); + + this.router.events.subscribe(async (event) => { + if (event instanceof NavigationEnd) { + const url = event.urlAfterRedirects || event.url || ""; + if ( + url.startsWith("/tabs/") && + (window as any).previousPopupUrl != null && + (window as any).previousPopupUrl.startsWith("/tabs/") + ) { + await this.clearComponentStates(); + } + if (url.startsWith("/tabs/")) { + await this.stateService.setAddEditCipherInfo(null); + } + (window as any).previousPopupUrl = url; + + // Clear route direction after animation (400ms) + if ((window as any).routeDirection != null) { + window.setTimeout(() => { + (window as any).routeDirection = null; + }, 400); + } + } + }); + } + + getState(outlet: RouterOutlet) { + if (outlet.activatedRouteData.state === "ciphers") { + const routeDirection = + (window as any).routeDirection != null ? (window as any).routeDirection : ""; + return ( + "ciphers_direction=" + + routeDirection + + "_" + + (outlet.activatedRoute.queryParams as any).value.folderId + + "_" + + (outlet.activatedRoute.queryParams as any).value.collectionId + ); + } else { + return outlet.activatedRouteData.state; + } + } + + 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 }); + } + + 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 async showDialog(msg: any) { + let iconClasses: string = null; + const type = msg.type; + if (type != null) { + // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed. + switch (type) { + case "success": + iconClasses = "bwi-check text-success"; + break; + case "warning": + iconClasses = "bwi-exclamation-triangle text-warning"; + break; + case "error": + iconClasses = "bwi-error text-danger"; + break; + case "info": + iconClasses = "bwi-info-circle text-info"; + break; + default: + break; + } + } + + const cancelText = msg.cancelText; + const confirmText = msg.confirmText; + const confirmed = await Swal.fire({ + heightAuto: false, + buttonsStyling: false, + icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml. + iconHtml: + iconClasses != null ? `` : undefined, + text: msg.text, + html: msg.html, + titleText: msg.title, + showCancelButton: cancelText != null, + cancelButtonText: cancelText, + showConfirmButton: true, + confirmButtonText: confirmText == null ? this.i18nService.t("ok") : confirmText, + timer: 300000, + }); + + this.messagingService.send("showDialogResolve", { + dialogId: msg.dialogId, + confirmed: confirmed.value, + }); + } + + private async clearComponentStates() { + if (!(await this.stateService.getIsAuthenticated())) { + return; + } + + await Promise.all([ + this.stateService.setBrowserGroupingComponentState(null), + this.stateService.setBrowserCipherComponentState(null), + this.stateService.setBrowserSendComponentState(null), + this.stateService.setBrowserSendTypeComponentState(null), + ]); + } +} diff --git a/apps/browser/src/popup/app.module.ts b/apps/browser/src/popup/app.module.ts new file mode 100644 index 0000000000..8fc728ffcf --- /dev/null +++ b/apps/browser/src/popup/app.module.ts @@ -0,0 +1,244 @@ +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 { CurrencyPipe, DatePipe, registerLocaleData } from "@angular/common"; +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 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 localeLt from "@angular/common/locales/lt"; +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 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 { BitwardenToastModule } from "jslib-angular/components/toastr.component"; +import { JslibModule } from "jslib-angular/jslib.module"; + +import { EnvironmentComponent } from "./accounts/environment.component"; +import { HintComponent } from "./accounts/hint.component"; +import { HomeComponent } from "./accounts/home.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 { TwoFactorOptionsComponent } from "./accounts/two-factor-options.component"; +import { TwoFactorComponent } from "./accounts/two-factor.component"; +import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component"; +import { AppRoutingModule } from "./app-routing.module"; +import { AppComponent } from "./app.component"; +import { ActionButtonsComponent } from "./components/action-buttons.component"; +import { CipherRowComponent } from "./components/cipher-row.component"; +import { PasswordRepromptComponent } from "./components/password-reprompt.component"; +import { PopOutComponent } from "./components/pop-out.component"; +import { PrivateModeWarningComponent } from "./components/private-mode-warning.component"; +import { SendListComponent } from "./components/send-list.component"; +import { SetPinComponent } from "./components/set-pin.component"; +import { UserVerificationComponent } from "./components/user-verification.component"; +import { GeneratorComponent } from "./generator/generator.component"; +import { PasswordGeneratorHistoryComponent } from "./generator/password-generator-history.component"; +import { EffluxDatesComponent as SendEffluxDatesComponent } from "./send/efflux-dates.component"; +import { SendAddEditComponent } from "./send/send-add-edit.component"; +import { SendGroupingsComponent } from "./send/send-groupings.component"; +import { SendTypeComponent } from "./send/send-type.component"; +import { ServicesModule } from "./services/services.module"; +import { ExcludedDomainsComponent } from "./settings/excluded-domains.component"; +import { ExportComponent } from "./settings/export.component"; +import { FolderAddEditComponent } from "./settings/folder-add-edit.component"; +import { FoldersComponent } from "./settings/folders.component"; +import { OptionsComponent } from "./settings/options.component"; +import { PremiumComponent } from "./settings/premium.component"; +import { SettingsComponent } from "./settings/settings.component"; +import { SyncComponent } from "./settings/sync.component"; +import { VaultTimeoutInputComponent } from "./settings/vault-timeout-input.component"; +import { TabsComponent } from "./tabs.component"; +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 { CurrentTabComponent } from "./vault/current-tab.component"; +import { PasswordHistoryComponent } from "./vault/password-history.component"; +import { ShareComponent } from "./vault/share.component"; +import { VaultFilterComponent } from "./vault/vault-filter.component"; +import { VaultSelectComponent } from "./vault/vault-select.component"; +import { ViewCustomFieldsComponent } from "./vault/view-custom-fields.component"; +import { ViewComponent } from "./vault/view.component"; + +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(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(localeLt, "lt"); +registerLocaleData(localeLv, "lv"); +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, + BitwardenToastModule.forRoot({ + maxOpened: 2, + autoDismiss: true, + closeButton: true, + positionClass: "toast-bottom-full-width", + }), + BrowserAnimationsModule, + BrowserModule, + DragDropModule, + FormsModule, + JslibModule, + OverlayModule, + ReactiveFormsModule, + ScrollingModule, + ServicesModule, + ], + declarations: [ + ActionButtonsComponent, + AddEditComponent, + AddEditCustomFieldsComponent, + AppComponent, + AttachmentsComponent, + CipherRowComponent, + CiphersComponent, + CollectionsComponent, + CurrentTabComponent, + EnvironmentComponent, + ExcludedDomainsComponent, + ExportComponent, + FolderAddEditComponent, + FoldersComponent, + VaultFilterComponent, + HintComponent, + HomeComponent, + LockComponent, + LoginComponent, + OptionsComponent, + GeneratorComponent, + PasswordGeneratorHistoryComponent, + PasswordHistoryComponent, + PasswordRepromptComponent, + PopOutComponent, + PremiumComponent, + PrivateModeWarningComponent, + RegisterComponent, + SendAddEditComponent, + SendEffluxDatesComponent, + SendGroupingsComponent, + SendListComponent, + SendTypeComponent, + SetPasswordComponent, + SetPinComponent, + SettingsComponent, + ShareComponent, + SsoComponent, + SyncComponent, + TabsComponent, + TwoFactorComponent, + TwoFactorOptionsComponent, + UpdateTempPasswordComponent, + UserVerificationComponent, + VaultTimeoutInputComponent, + ViewComponent, + ViewCustomFieldsComponent, + RemovePasswordComponent, + VaultSelectComponent, + ], + entryComponents: [], + providers: [CurrencyPipe, DatePipe], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/apps/browser/src/popup/components/action-buttons.component.html b/apps/browser/src/popup/components/action-buttons.component.html new file mode 100644 index 0000000000..f63c1f1ac3 --- /dev/null +++ b/apps/browser/src/popup/components/action-buttons.component.html @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + diff --git a/apps/browser/src/popup/components/action-buttons.component.ts b/apps/browser/src/popup/components/action-buttons.component.ts new file mode 100644 index 0000000000..8568e0b4ff --- /dev/null +++ b/apps/browser/src/popup/components/action-buttons.component.ts @@ -0,0 +1,86 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { EventService } from "jslib-common/abstractions/event.service"; +import { I18nService } from "jslib-common/abstractions/i18n.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 { 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"; + +@Component({ + selector: "app-action-buttons", + templateUrl: "action-buttons.component.html", +}) +export class ActionButtonsComponent { + @Output() onView = new EventEmitter(); + @Output() launchEvent = new EventEmitter(); + @Input() cipher: CipherView; + @Input() showView = false; + + cipherType = CipherType; + userHasPremiumAccess = false; + + constructor( + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private eventService: EventService, + private totpService: TotpService, + private stateService: StateService, + private passwordRepromptService: PasswordRepromptService + ) {} + + async ngOnInit() { + this.userHasPremiumAccess = await this.stateService.getCanAccessPremium(); + } + + launchCipher() { + this.launchEvent.emit(this.cipher); + } + + async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) { + if ( + this.cipher.reprompt !== CipherRepromptType.None && + this.passwordRepromptService.protectedFields().includes(aType) && + !(await this.passwordRepromptService.showPasswordPrompt()) + ) { + return; + } + + if (value == null || (aType === "TOTP" && !this.displayTotpCopyButton(cipher))) { + return; + } else if (aType === "TOTP") { + value = await this.totpService.getCode(value); + } + + if (!cipher.viewPassword) { + return; + } + + this.platformUtilsService.copyToClipboard(value, { window: window }); + this.platformUtilsService.showToast( + "info", + null, + this.i18nService.t("valueCopied", this.i18nService.t(typeI18nKey)) + ); + + if (typeI18nKey === "password" || typeI18nKey === "verificationCodeTotp") { + this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id); + } else if (typeI18nKey === "securityCode") { + this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id); + } + } + + displayTotpCopyButton(cipher: CipherView) { + return ( + (cipher?.login?.hasTotp ?? false) && (cipher.organizationUseTotp || this.userHasPremiumAccess) + ); + } + + view() { + this.onView.emit(this.cipher); + } +} diff --git a/apps/browser/src/popup/components/cipher-row.component.html b/apps/browser/src/popup/components/cipher-row.component.html new file mode 100644 index 0000000000..fc78fd9ccf --- /dev/null +++ b/apps/browser/src/popup/components/cipher-row.component.html @@ -0,0 +1,47 @@ +
+ + + +
diff --git a/apps/browser/src/popup/components/cipher-row.component.ts b/apps/browser/src/popup/components/cipher-row.component.ts new file mode 100644 index 0000000000..fa2b66c1b1 --- /dev/null +++ b/apps/browser/src/popup/components/cipher-row.component.ts @@ -0,0 +1,29 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { CipherView } from "jslib-common/models/view/cipherView"; + +@Component({ + selector: "app-cipher-row", + templateUrl: "cipher-row.component.html", +}) +export class CipherRowComponent { + @Output() onSelected = new EventEmitter(); + @Output() launchEvent = new EventEmitter(); + @Output() onView = new EventEmitter(); + @Input() cipher: CipherView; + @Input() last: boolean; + @Input() showView = false; + @Input() title: string; + + selectCipher(c: CipherView) { + this.onSelected.emit(c); + } + + launchCipher(c: CipherView) { + this.launchEvent.emit(c); + } + + viewCipher(c: CipherView) { + this.onView.emit(c); + } +} diff --git a/apps/browser/src/popup/components/password-reprompt.component.html b/apps/browser/src/popup/components/password-reprompt.component.html new file mode 100644 index 0000000000..e57ad7d178 --- /dev/null +++ b/apps/browser/src/popup/components/password-reprompt.component.html @@ -0,0 +1,55 @@ + diff --git a/apps/browser/src/popup/components/password-reprompt.component.ts b/apps/browser/src/popup/components/password-reprompt.component.ts new file mode 100644 index 0000000000..442a0ab5ee --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/components/pop-out.component.html b/apps/browser/src/popup/components/pop-out.component.html new file mode 100644 index 0000000000..73bf76941d --- /dev/null +++ b/apps/browser/src/popup/components/pop-out.component.html @@ -0,0 +1,5 @@ + + + diff --git a/apps/browser/src/popup/components/pop-out.component.ts b/apps/browser/src/popup/components/pop-out.component.ts new file mode 100644 index 0000000000..94a4b3a8de --- /dev/null +++ b/apps/browser/src/popup/components/pop-out.component.ts @@ -0,0 +1,33 @@ +import { Component, Input, OnInit } from "@angular/core"; + +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +import { PopupUtilsService } from "../services/popup-utils.service"; + +@Component({ + selector: "app-pop-out", + templateUrl: "pop-out.component.html", +}) +export class PopOutComponent implements OnInit { + @Input() show = true; + + constructor( + private platformUtilsService: PlatformUtilsService, + private popupUtilsService: PopupUtilsService + ) {} + + ngOnInit() { + if (this.show) { + if ( + (this.popupUtilsService.inSidebar(window) && this.platformUtilsService.isFirefox()) || + this.popupUtilsService.inPopout(window) + ) { + this.show = false; + } + } + } + + expand() { + this.popupUtilsService.popOut(window); + } +} diff --git a/apps/browser/src/popup/components/private-mode-warning.component.html b/apps/browser/src/popup/components/private-mode-warning.component.html new file mode 100644 index 0000000000..848b69c92d --- /dev/null +++ b/apps/browser/src/popup/components/private-mode-warning.component.html @@ -0,0 +1,6 @@ + + {{ "privateModeWarning" | i18n }} + {{ + "learnMore" | i18n + }} + diff --git a/apps/browser/src/popup/components/private-mode-warning.component.ts b/apps/browser/src/popup/components/private-mode-warning.component.ts new file mode 100644 index 0000000000..4d5587d65f --- /dev/null +++ b/apps/browser/src/popup/components/private-mode-warning.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from "@angular/core"; + +import { PopupUtilsService } from "../services/popup-utils.service"; + +@Component({ + selector: "app-private-mode-warning", + templateUrl: "private-mode-warning.component.html", +}) +export class PrivateModeWarningComponent implements OnInit { + showWarning = false; + + constructor(private popupUtilsService: PopupUtilsService) {} + + ngOnInit() { + this.showWarning = this.popupUtilsService.inPrivateMode(); + } +} diff --git a/apps/browser/src/popup/components/send-list.component.html b/apps/browser/src/popup/components/send-list.component.html new file mode 100644 index 0000000000..05c8e3e375 --- /dev/null +++ b/apps/browser/src/popup/components/send-list.component.html @@ -0,0 +1,98 @@ +
+ +
+ + + +
+
diff --git a/apps/browser/src/popup/components/send-list.component.ts b/apps/browser/src/popup/components/send-list.component.ts new file mode 100644 index 0000000000..60e61edc4b --- /dev/null +++ b/apps/browser/src/popup/components/send-list.component.ts @@ -0,0 +1,36 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { SendType } from "jslib-common/enums/sendType"; +import { SendView } from "jslib-common/models/view/sendView"; + +@Component({ + selector: "app-send-list", + templateUrl: "send-list.component.html", +}) +export class SendListComponent { + @Input() sends: SendView[]; + @Input() title: string; + @Input() disabledByPolicy = false; + @Output() onSelected = new EventEmitter(); + @Output() onCopySendLink = new EventEmitter(); + @Output() onRemovePassword = new EventEmitter(); + @Output() onDeleteSend = new EventEmitter(); + + sendType = SendType; + + selectSend(s: SendView) { + this.onSelected.emit(s); + } + + copySendLink(s: SendView) { + this.onCopySendLink.emit(s); + } + + removePassword(s: SendView) { + this.onRemovePassword.emit(s); + } + + delete(s: SendView) { + this.onDeleteSend.emit(s); + } +} diff --git a/apps/browser/src/popup/components/set-pin.component.html b/apps/browser/src/popup/components/set-pin.component.html new file mode 100644 index 0000000000..095b80fb8c --- /dev/null +++ b/apps/browser/src/popup/components/set-pin.component.html @@ -0,0 +1,65 @@ + diff --git a/apps/browser/src/popup/components/set-pin.component.ts b/apps/browser/src/popup/components/set-pin.component.ts new file mode 100644 index 0000000000..4497f7e774 --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/components/user-verification.component.html b/apps/browser/src/popup/components/user-verification.component.html new file mode 100644 index 0000000000..2fd78bb907 --- /dev/null +++ b/apps/browser/src/popup/components/user-verification.component.html @@ -0,0 +1,46 @@ + +
+ + +
+
+ +
+ + + + + {{ "codeSent" | i18n }} + +
+ +
+ + +
+
diff --git a/apps/browser/src/popup/components/user-verification.component.ts b/apps/browser/src/popup/components/user-verification.component.ts new file mode 100644 index 0000000000..dc12c94a78 --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/generator/generator.component.html b/apps/browser/src/popup/generator/generator.component.html new file mode 100644 index 0000000000..e3a4c51e58 --- /dev/null +++ b/apps/browser/src/popup/generator/generator.component.html @@ -0,0 +1,507 @@ +
+
+ + +
+

+ {{ "generator" | i18n }} +

+
+ +
+
+
+ + {{ "passwordGeneratorPolicyInEffect" | i18n }} + +
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+ +
+ + +
+
+
+
+ +
+

+ {{ "options" | i18n }} +

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

+ {{ "options" | i18n }} +

+
+
+ +
+ + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+ + +
+
+ +
+ + +
+
+ + +
+
+ +
+ + +
+
+
+
+
+
+
+ + +
+
+ +
+ + +
+
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + +
+
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+
+
+
diff --git a/apps/browser/src/popup/generator/generator.component.ts b/apps/browser/src/popup/generator/generator.component.ts new file mode 100644 index 0000000000..4e9f710c5b --- /dev/null +++ b/apps/browser/src/popup/generator/generator.component.ts @@ -0,0 +1,71 @@ +import { Location } from "@angular/common"; +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"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +@Component({ + selector: "app-generator", + templateUrl: "generator.component.html", +}) +export class GeneratorComponent extends BaseGeneratorComponent { + private addEditCipherInfo: any; + private cipherState: CipherView; + + constructor( + passwordGenerationService: PasswordGenerationService, + usernameGenerationService: UsernameGenerationService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + stateService: StateService, + route: ActivatedRoute, + logService: LogService, + private location: Location + ) { + super( + passwordGenerationService, + usernameGenerationService, + platformUtilsService, + stateService, + i18nService, + logService, + route, + window + ); + } + + async ngOnInit() { + this.addEditCipherInfo = await this.stateService.getAddEditCipherInfo(); + if (this.addEditCipherInfo != null) { + this.cipherState = this.addEditCipherInfo.cipher; + } + this.comingFromAddEdit = this.cipherState != null; + if (this.cipherState?.login?.hasUris) { + this.usernameWebsite = this.cipherState.login.uris[0].hostname; + } + await super.ngOnInit(); + } + + select() { + super.select(); + if (this.type === "password") { + this.cipherState.login.password = this.password; + } else if (this.type === "username") { + this.cipherState.login.username = this.username; + } + this.addEditCipherInfo.cipher = this.cipherState; + this.stateService.setAddEditCipherInfo(this.addEditCipherInfo); + this.close(); + } + + close() { + this.location.back(); + } +} diff --git a/apps/browser/src/popup/generator/password-generator-history.component.html b/apps/browser/src/popup/generator/password-generator-history.component.html new file mode 100644 index 0000000000..62e5abd28e --- /dev/null +++ b/apps/browser/src/popup/generator/password-generator-history.component.html @@ -0,0 +1,48 @@ +
+
+ +
+

+ {{ "passwordHistory" | i18n }} +

+
+ +
+
+
+
+
+
+
+
+
+ {{ h.date | date: "medium" }} +
+
+
+ +
+
+
+
+
+

{{ "noPasswordsInList" | i18n }}

+
+
diff --git a/apps/browser/src/popup/generator/password-generator-history.component.ts b/apps/browser/src/popup/generator/password-generator-history.component.ts new file mode 100644 index 0000000000..2de2996bc5 --- /dev/null +++ b/apps/browser/src/popup/generator/password-generator-history.component.ts @@ -0,0 +1,26 @@ +import { Location } from "@angular/common"; +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, + private location: Location + ) { + super(passwordGenerationService, platformUtilsService, i18nService, window); + } + + close() { + this.location.back(); + } +} diff --git a/apps/browser/src/popup/images/bwi-globe.png b/apps/browser/src/popup/images/bwi-globe.png new file mode 100644 index 0000000000..cceeaefbcf Binary files /dev/null and b/apps/browser/src/popup/images/bwi-globe.png differ diff --git a/apps/browser/src/popup/images/loading.svg b/apps/browser/src/popup/images/loading.svg new file mode 100644 index 0000000000..7076310516 --- /dev/null +++ b/apps/browser/src/popup/images/loading.svg @@ -0,0 +1,6 @@ + + + Loading... + + diff --git a/apps/browser/src/popup/images/logo-dark@2x.png b/apps/browser/src/popup/images/logo-dark@2x.png new file mode 100644 index 0000000000..3fc3c6d7a5 Binary files /dev/null and b/apps/browser/src/popup/images/logo-dark@2x.png differ diff --git a/apps/browser/src/popup/images/logo-white@2x.png b/apps/browser/src/popup/images/logo-white@2x.png new file mode 100644 index 0000000000..519cbc75e1 Binary files /dev/null and b/apps/browser/src/popup/images/logo-white@2x.png differ diff --git a/apps/browser/src/popup/images/search-desktop-dark.svg b/apps/browser/src/popup/images/search-desktop-dark.svg new file mode 100644 index 0000000000..029d464afa --- /dev/null +++ b/apps/browser/src/popup/images/search-desktop-dark.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/browser/src/popup/images/search-desktop-light.svg b/apps/browser/src/popup/images/search-desktop-light.svg new file mode 100644 index 0000000000..273bcff401 --- /dev/null +++ b/apps/browser/src/popup/images/search-desktop-light.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/browser/src/popup/images/search-desktop-solarized.svg b/apps/browser/src/popup/images/search-desktop-solarized.svg new file mode 100644 index 0000000000..3676a6bccd --- /dev/null +++ b/apps/browser/src/popup/images/search-desktop-solarized.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/browser/src/popup/images/u2fkey.jpg b/apps/browser/src/popup/images/u2fkey.jpg new file mode 100644 index 0000000000..8013df0e56 Binary files /dev/null and b/apps/browser/src/popup/images/u2fkey.jpg differ diff --git a/apps/browser/src/popup/images/yubikey.jpg b/apps/browser/src/popup/images/yubikey.jpg new file mode 100644 index 0000000000..9ddf755dec Binary files /dev/null and b/apps/browser/src/popup/images/yubikey.jpg differ diff --git a/apps/browser/src/popup/index.html b/apps/browser/src/popup/index.html new file mode 100644 index 0000000000..17f50e0a0e --- /dev/null +++ b/apps/browser/src/popup/index.html @@ -0,0 +1,14 @@ + + + + + + Bitwarden + + + + +
+
+ + diff --git a/apps/browser/src/popup/main.ts b/apps/browser/src/popup/main.ts new file mode 100644 index 0000000000..b550cba86f --- /dev/null +++ b/apps/browser/src/popup/main.ts @@ -0,0 +1,16 @@ +import { enableProdMode } from "@angular/core"; +import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; + +require("./scss/popup.scss"); + +import { AppModule } from "./app.module"; + +if (process.env.ENV === "production") { + enableProdMode(); +} + +function init() { + platformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true }); +} + +init(); diff --git a/apps/browser/src/popup/polyfills.ts b/apps/browser/src/popup/polyfills.ts new file mode 100644 index 0000000000..8d5d8a0e3b --- /dev/null +++ b/apps/browser/src/popup/polyfills.ts @@ -0,0 +1,4 @@ +import "core-js/stable"; +import "date-input-polyfill"; +import "web-animations-js"; +import "zone.js/dist/zone"; diff --git a/apps/browser/src/popup/scss/base.scss b/apps/browser/src/popup/scss/base.scss new file mode 100644 index 0000000000..8465a1ba33 --- /dev/null +++ b/apps/browser/src/popup/scss/base.scss @@ -0,0 +1,535 @@ +@import "variables.scss"; + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +html, +body { + font-family: $font-family-sans-serif; + font-size: $font-size-base; + line-height: $line-height-base; + -webkit-font-smoothing: antialiased; +} + +body { + width: 375px !important; + height: 600px !important; + overflow: hidden; + color: $text-color; + background-color: $background-color; + + @include themify($themes) { + color: themed("textColor"); + background-color: themed("backgroundColor"); + } + + &.body-sm { + width: 375px !important; + height: 500px !important; + } + + &.body-xs { + width: 375px !important; + height: 300px !important; + } + + &.body-full { + width: 100% !important; + height: 100% !important; + } +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: $font-family-sans-serif; + font-size: $font-size-base; + font-weight: normal; +} + +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; +} + +button { + white-space: nowrap; + cursor: pointer; +} + +textarea { + resize: vertical; +} + +app-root > div { + height: 100%; +} + +main::-webkit-scrollbar, +cdk-virtual-scroll-viewport::-webkit-scrollbar, +.vault-select::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +main::-webkit-scrollbar-track, +.vault-select::-webkit-scrollbar-track { + background-color: transparent; +} + +cdk-virtual-scroll-viewport::-webkit-scrollbar-track { + @include themify($themes) { + background-color: themed("backgroundColor"); + } +} + +main::-webkit-scrollbar-thumb, +cdk-virtual-scroll-viewport::-webkit-scrollbar-thumb, +.vault-select::-webkit-scrollbar-thumb { + border-radius: 10px; + margin-right: 1px; + + @include themify($themes) { + background-color: themed("scrollbarColor"); + } + + &:hover { + @include themify($themes) { + background-color: themed("scrollbarHoverColor"); + } + } +} + +header { + min-height: 44px; + max-height: 44px; + display: flex; + border-bottom: 1px solid #000000; + + @include themify($themes) { + color: themed("headerColor"); + background-color: themed("headerBackgroundColor"); + border-bottom-color: themed("headerBorderColor"); + } + + .left, + .right { + flex: 1; + display: flex; + min-width: -webkit-min-content; /* Workaround to Chrome bug */ + .header-icon { + margin-right: 5px; + } + } + + .right { + justify-content: flex-end; + } + + .center { + display: flex; + align-items: center; + text-align: center; + min-width: 0; + } + + app-pop-out > button, + div > button, + div > a { + border: none; + padding: 0 10px; + text-decoration: none; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + + @include themify($themes) { + color: themed("headerColor"); + background-color: themed("headerBackgroundColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + background-color: themed("headerBackgroundHoverColor"); + color: themed("headerColor"); + } + } + + &[disabled] { + opacity: 0.65; + cursor: default !important; + } + + i + span { + margin-left: 5px; + } + } + + app-pop-out { + display: flex; + padding-right: 0.5em; + } + + .title { + font-weight: bold; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .search { + padding: 7px 10px; + width: 100%; + text-align: left; + position: relative; + display: flex; + + .bwi { + position: absolute; + top: 15px; + left: 20px; + + @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"); + } + } + } + } + + .left + .search, + .left + .sr-only + .search { + padding-left: 0; + + .bwi { + left: 10px; + } + } + + .search + .right { + margin-left: -10px; + } +} + +.content { + padding: 15px; +} + +.tabs { + width: 100%; + height: 55px; + border-top: 1px solid #000000; + position: absolute; + bottom: 0; + left: 0; + right: 0; + overflow: hidden; + + @include themify($themes) { + background-color: themed("tabBackgroundColor"); + border-top-color: themed("borderColor"); + } + + ul { + display: flex; + list-style: none; + padding: 0; + margin: 0; + + li { + flex: 1; + display: inline-block; + padding: 0; + margin: 0; + + a, + button { + text-align: center; + display: block; + padding: 7px 0; + text-decoration: none; + font-size: 12px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; + + @include themify($themes) { + color: themed("mutedColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + background-color: themed("tabBackgroundHoverColor"); + } + } + + i { + display: block; + margin-bottom: 2px; + text-align: center; + } + } + + &.active { + a, + button { + @include themify($themes) { + color: themed("primaryColor"); + } + } + } + } + } +} + +app-root { + position: absolute; + width: 100%; + height: 100%; + z-index: 980; + @include themify($themes) { + background-color: themed("backgroundColor"); + } +} + +@media only screen and (min-width: 601px) { + app-login header { + padding: 0 calc((100% - 500px) / 2); + } + + app-login main { + padding: 0 calc((100% - 500px) / 2); + } + + app-two-factor header { + padding: 0 calc((100% - 500px) / 2); + } + + app-two-factor main { + padding: 0 calc((100% - 500px) / 2); + } + + app-lock header { + padding: 0 calc((100% - 500px) / 2); + } + + app-lock main { + padding: 0 calc((100% - 500px) / 2); + } +} + +main { + position: absolute; + top: 44px; + bottom: 0; + left: 0; + right: 0; + overflow-y: auto; + overflow-x: hidden; + + @include themify($themes) { + background-color: themed("backgroundColor"); + } + + &.no-header { + top: 0; + } + + &.flex { + display: flex; + flex-flow: column; + height: calc(100% - 44px); + + &.tab-page { + height: calc(100% - 99px); + } + } +} + +.tab-page { + main { + bottom: 55px; + } +} + +.center-content, +.no-items, +.full-loading-spinner { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + flex-direction: column; + flex-grow: 1; +} + +.no-items, +.full-loading-spinner { + text-align: center; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + + .no-items-image { + @include themify($themes) { + content: url("../images/search-desktop" + themed("svgSuffix")); + } + } + + .bwi { + margin-bottom: 10px; + + @include themify($themes) { + color: themed("disabledIconColor"); + } + } +} + +// cdk-virtual-scroll +.cdk-virtual-scroll-viewport { + width: 100%; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} + +.cdk-virtual-scroll-content-wrapper { + width: 100%; +} + +.org-filter-content { + padding-bottom: 5px; + padding-left: 7px; + .org-filter { + @include themify($themes) { + background-color: themed("backgroundColor"); + } + border: 1px solid; + padding: 7px; + border-radius: $border-radius; + } +} +.vault-select { + overflow-y: auto; + display: flex; + flex-direction: column; + + @include themify($themes) { + background-color: themed("boxBackgroundColor"); + } + margin-right: 5px; + margin-top: 1px; + width: 160px; + @include themify($themes) { + border: 1px solid themed("borderColor"); + } + border-radius: $border-radius; + button { + border: none; + background: transparent; + width: 100%; + padding: 5px 10px; + text-align: start; + @include themify($themes) { + color: themed("textColor"); + } + + a { + @include themify($themes) { + color: themed("textColor"); + } + } + + &:hover { + @include themify($themes) { + background-color: themed("boxBackgroundHoverColor"); + } + } + } + .border { + @include themify($themes) { + background: themed("borderColor"); + } + left: 10px; + width: calc(100% - 20px); + height: 1px; + position: relative; + } +} diff --git a/apps/browser/src/popup/scss/box.scss b/apps/browser/src/popup/scss/box.scss new file mode 100644 index 0000000000..9629ddae6f --- /dev/null +++ b/apps/browser/src/popup/scss/box.scss @@ -0,0 +1,694 @@ +@import "variables.scss"; + +.box { + position: relative; + width: 100%; + margin: 10px 0; + + &.first { + margin-top: 0; + } + + .box-header { + margin: 0 10px 5px 10px; + text-transform: uppercase; + display: flex; + + @include themify($themes) { + color: themed("headingColor"); + } + } + + .box-header-expandable { + padding: 0 10px; + margin-bottom: 5px; + text-transform: uppercase; + display: flex; + width: 100%; + box-sizing: border-box; + align-items: center; + + @include themify($themes) { + color: themed("headingColor"); + } + + &:hover, + &:focus, + &.active { + @include themify($themes) { + background-color: themed("boxBackgroundHoverColor"); + } + } + + .icon { + display: flex; + align-items: center; + margin-left: 5px; + + @include themify($themes) { + color: themed("headingColor"); + } + } + } + + .box-content { + border-top: 1px solid #000000; + border-bottom: 1px solid #000000; + + @include themify($themes) { + background-color: themed("boxBackgroundColor"); + border-color: themed("borderColor"); + } + + &.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 !important; + } + } + } + + .box-footer { + margin: 5px 10px; + font-size: $font-size-small; + + @include themify($themes) { + color: themed("mutedColor"); + } + } + + &.list { + .box-content { + .box-content-row { + padding: 3px 10px; + text-decoration: none; + + @include themify($themes) { + color: themed("textColor"); + } + + &.padded { + padding-top: 10px; + padding-bottom: 10px; + } + + &:hover, + &:focus, + &.active { + @include themify($themes) { + background-color: themed("listItemBackgroundHoverColor"); + } + } + + &:focus { + border-left: 5px solid #000000; + padding-left: 5px; + + @include themify($themes) { + border-left-color: themed("mutedColor"); + } + } + + .action-buttons { + .row-btn { + padding-left: 5px; + padding-right: 5px; + } + } + + .text:not(.no-ellipsis), + .detail { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .row-main { + display: flex; + min-width: 0; + align-items: normal; + + .row-main-content { + min-width: 0; + } + } + } + + &.single-line { + .box-content-row { + display: flex; + padding-top: 10px; + padding-bottom: 10px; + } + } + } + } + + &.only-list { + margin-bottom: 0; + + .box-content { + border-bottom: none; + } + } + + &.full-list { + margin: 0; + + .box-content { + border: none; + } + } +} + +.stacked-boxes { + display: flex; + flex-direction: column; +} + +.box-section-divider { + border-top: 1px solid #000000; + padding-top: 10px; + + @include themify($themes) { + border-color: themed("borderColor"); + } +} + +.box-content-row { + display: block; + padding: 10px 15px; + position: relative; + z-index: 1; + + &: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"); + } + } + + &:last-child { + &:before { + border: none; + height: 0; + } + } + + &.override-last:last-child:before { + border-bottom: 1px solid #000000; + @include themify($themes) { + border-bottom-color: themed("boxBorderColor"); + } + } + + &.last:last-child:before { + border-bottom: 1px solid #000000; + @include themify($themes) { + border-bottom-color: themed("boxBorderColor"); + } + } + + &:after { + content: ""; + display: table; + clear: both; + } + + &:hover, + &:focus, + &.active { + @include themify($themes) { + background-color: themed("boxBackgroundHoverColor"); + } + } + + &.pre { + white-space: pre; + overflow-x: auto; + } + + &.pre-wrap { + white-space: pre-wrap; + overflow-x: auto; + } + + .row-label, + label { + font-size: $font-size-small; + display: block; + width: 100%; + margin-bottom: 5px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + .sub-label { + margin-left: 10px; + } + } + + .flex-label { + font-size: $font-size-small; + display: flex; + flex-grow: 1; + margin-bottom: 5px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + > a { + flex-grow: 0; + } + } + + .text, + .detail { + display: block; + text-align: left; + + @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-all; + + &.box-content-row-word-break { + word-break: normal; + } + } + + &.box-content-row-multi { + width: 100%; + + input:not([type="checkbox"]) { + 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-multi, + &.box-content-row-newmulti { + padding-left: 10px; + } + + &.box-content-row-newmulti { + @include themify($themes) { + color: themed("primaryColor"); + } + } + + &.box-content-row-checkbox, + &.box-content-row-input, + &.box-content-row-slider { + label, + .row-label { + font-size: $font-size-base; + display: block; + 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-checkbox-left { + justify-content: flex-start; + + > input { + margin: 0 15px 0 0; + } + } + + &.box-content-row-input { + label { + white-space: nowrap; + } + + input { + text-align: right; + + &[type="number"] { + max-width: 50px; + } + } + } + + &.box-content-row-slider { + input[type="range"] { + height: 10px; + } + + input[type="number"] { + width: 45px; + } + + label { + white-space: nowrap; + } + } + + input:not([type="checkbox"]):not([type="radio"]), + textarea { + border: none; + width: 100%; + background-color: transparent !important; + + &::-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; + + &.action-buttons-fixed { + align-self: start; + margin-top: 2px; + } + + .row-btn { + cursor: pointer; + padding: 10px 8px; + background: none; + border: none; + + @include themify($themes) { + color: themed("boxRowButtonColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + color: themed("boxRowButtonHoverColor"); + } + } + + &.disabled, + &[disabled] { + @include themify($themes) { + color: themed("disabledIconColor"); + opacity: themed("disabledBoxOpacity"); + } + + &:hover { + @include themify($themes) { + color: themed("disabledIconColor"); + opacity: themed("disabledBoxOpacity"); + } + } + cursor: default !important; + } + } + + &.no-pad .row-btn { + padding-top: 0; + padding-bottom: 0; + } + } + + &:not(.box-draggable-row) { + .action-buttons .row-btn:last-child { + margin-right: -3px; + } + } + + &.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, + .row-sub-label + i.bwi { + @include themify($themes) { + color: themed("disabledIconColor"); + } + } + + .row-sub-label { + margin: 0 15px; + white-space: nowrap; + + @include themify($themes) { + color: themed("mutedColor"); + } + } + + .icon { + display: flex; + justify-content: center; + align-items: center; + min-width: 34px; + margin-left: -5px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + &.icon-small { + min-width: 25px; + } + + img { + border-radius: $border-radius; + max-height: 20px; + max-width: 20px; + } + } + + &.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"); + } + } + } + } + + .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; + } + } + + .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/browser/src/popup/scss/buttons.scss b/apps/browser/src/popup/scss/buttons.scss new file mode 100644 index 0000000000..f4eea2a1cc --- /dev/null +++ b/apps/browser/src/popup/scss/buttons.scss @@ -0,0 +1,101 @@ +@import "variables.scss"; + +.btn { + 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; + outline: 0; + + @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, + &.neutral { + border: none !important; + background: none !important; + + &:focus { + text-decoration: underline; + } + } +} + +.action-buttons { + .btn { + &:focus { + outline: auto; + } + } +} + +button.box-content-row { + display: block; + width: 100%; + text-align: left; +} + +button { + border: none; + background: transparent; + color: inherit; +} diff --git a/apps/browser/src/popup/scss/environment.scss b/apps/browser/src/popup/scss/environment.scss new file mode 100644 index 0000000000..17e7c23d2e --- /dev/null +++ b/apps/browser/src/popup/scss/environment.scss @@ -0,0 +1,39 @@ +@import "variables.scss"; + +html.browser_safari { + body { + height: 360px !important; + + &.body-xs { + height: 300px !important; + } + + &.body-full { + height: 100% !important; + } + } + + header { + .search .bwi { + left: 20px; + } + + .left + .search .bwi { + left: 10px; + } + } + + app-root { + border-width: 1px; + border-style: solid; + border-color: #000000; + } + + &.theme_light app-root { + border-color: #777777; + } + + &.theme_nord app-root { + border-color: #2e3440; + } +} diff --git a/apps/browser/src/popup/scss/grid.scss b/apps/browser/src/popup/scss/grid.scss new file mode 100644 index 0000000000..8cdb29bb52 --- /dev/null +++ b/apps/browser/src/popup/scss/grid.scss @@ -0,0 +1,11 @@ +.row { + display: flex; + margin: 0 -15px; + width: 100%; +} + +.col { + flex-basis: 0; + flex-grow: 1; + padding: 0 15px; +} diff --git a/apps/browser/src/popup/scss/misc.scss b/apps/browser/src/popup/scss/misc.scss new file mode 100644 index 0000000000..8752ad7088 --- /dev/null +++ b/apps/browser/src/popup/scss/misc.scss @@ -0,0 +1,403 @@ +@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-muted { + @include themify($themes) { + color: themed("mutedColor") !important; + } +} + +.text-default { + @include themify($themes) { + color: themed("textColor") !important; + } +} + +.text-danger { + @include themify($themes) { + color: themed("dangerColor") !important; + } +} + +.text-info { + @include themify($themes) { + color: themed("infoColor") !important; + } +} + +.text-warning { + @include themify($themes) { + color: themed("warningColor") !important; + } +} + +.text-center { + text-align: center; +} + +.font-weight-semibold { + font-weight: 600; +} + +p.lead { + font-size: $font-size-large; + margin-bottom: 20px; + font-weight: normal; +} + +.flex-right { + margin-left: auto; +} + +.flex-bottom { + margin-top: auto; +} + +.no-margin { + margin: 0 !important; +} + +.no-vmargin { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.no-vpad { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.display-block { + display: block !important; +} + +.monospaced { + font-family: $font-family-monospace; +} + +.show-whitespace { + white-space: pre-wrap; +} + +.img-responsive { + display: block; + max-width: 100%; + height: auto; +} + +.img-rounded { + border-radius: 6px; +} + +.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; +} + +.password-wrapper { + overflow-wrap: break-word; + white-space: pre-wrap; + min-width: 0; +} + +.password-number { + @include themify($themes) { + color: themed("passwordNumberColor"); + } +} + +.password-special { + @include themify($themes) { + color: themed("passwordSpecialColor"); + } +} + +.password-character { + display: inline-flex; + flex-direction: column; + align-items: center; + width: 30px; + height: 36px; + font-weight: 600; + + &:nth-child(odd) { + @include themify($themes) { + background-color: themed("backgroundColor"); + } + } +} + +.password-count { + white-space: nowrap; + font-size: 8px; + + @include themify($themes) { + color: themed("mutedColor") !important; + } +} + +#duo-frame { + background: url("../images/loading.svg") 0 0 no-repeat; + width: 100%; + height: 470px; + margin-bottom: -10px; + + iframe { + width: 100%; + height: 100%; + border: none; + } +} + +#web-authn-frame { + background: url("../images/loading.svg") 0 0 no-repeat; + width: 100%; + height: 310px; + margin-bottom: -10px; + + iframe { + width: 100%; + height: 100%; + border: none; + } +} + +#hcaptcha_iframe { + width: 100%; + border: none; + transition: height 0.25s linear; +} + +body.linux-webauthn { + width: 485px !important; + #web-authn-frame { + iframe { + width: 375px; + margin: 0 55px; + } + } +} + +app-root > #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"); + } +} + +app-vault-icon, +.app-vault-icon { + display: flex; +} + +.logo-image { + margin: 0 auto; + width: 142px; + height: 21px; + background-size: 142px 21px; + background-repeat: no-repeat; + @include themify($themes) { + background-image: url("../images/logo-" + themed("logoSuffix") + "@2x.png"); + } + @media (min-width: 219px) { + width: 189px; + height: 28px; + background-size: 189px 28px; + } + @media (min-width: 314px) { + width: 284px; + height: 43px; + background-size: 284px 43px; + } +} + +[hidden] { + display: none !important; +} + +.draggable { + cursor: move; +} + +.callout { + padding: 10px; + margin: 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"); + } + } + } + + &.clickable { + &:hover, + &:focus, + &.active { + @include themify($themes) { + background-color: themed("boxBackgroundHoverColor"); + } + } + } + + .enforced-policy-options ul { + padding-left: 30px; + margin: 0; + } +} + +input[type="password"]::-ms-reveal { + display: none; +} + +.flex { + display: flex; + + &.flex-grow { + > * { + flex: 1; + } + } +} + +// Workaround for slow performance on external monitors on Chrome + MacOS +// See: https://bugs.chromium.org/p/chromium/issues/detail?id=971701#c64 +@keyframes redraw { + 0% { + opacity: 0.99; + } + 100% { + opacity: 1; + } +} +html.force_redraw { + animation: redraw 1s linear infinite; +} diff --git a/apps/browser/src/popup/scss/modal.scss b/apps/browser/src/popup/scss/modal.scss new file mode 100644 index 0000000000..1d86b1e880 --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/scss/pages.scss b/apps/browser/src/popup/scss/pages.scss new file mode 100644 index 0000000000..74a2605b75 --- /dev/null +++ b/apps/browser/src/popup/scss/pages.scss @@ -0,0 +1,117 @@ +@import "variables.scss"; + +app-sync { + main { + .btn { + margin-bottom: 10px; + } + } +} + +app-generator .generated-block { + font-size: $font-size-large; + font-family: $font-family-monospace; + margin: 20px; + display: flex; + + .generated-wrapper { + text-align: left; + width: 100%; + min-width: 0; + white-space: pre-wrap; + word-break: break-all; + } + + .action-buttons { + display: flex; + align-self: center; + + button { + padding: 5px; + margin: -5px -5px 5px 5px; + } + } +} + +app-home { + position: fixed; + height: 100%; + width: 100%; + + .center-content { + margin-top: -50px; + height: calc(100% + 50px); + } + + img { + width: 284px; + margin: 0 auto; + } + + p.lead { + margin: 30px 0; + } + + .btn + .btn { + margin-top: 10px; + } + + a.settings-icon { + position: absolute; + top: 10px; + left: 10px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + &:not(:hover):not(:focus) { + span { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; + } + } + + &:hover, + &:focus { + text-decoration: none; + + @include themify($themes) { + color: themed("primaryColor"); + } + } + } +} + +app-private-mode-warning { + display: block; + padding-top: 1rem; +} + +body.body-sm, +body.body-xs { + app-home { + .center-content { + margin-top: 0; + height: 100%; + } + + p.lead { + margin: 15px 0; + } + } +} + +body.body-full { + app-home { + .center-content { + margin-top: -80px; + height: calc(100% + 80px); + } + } +} diff --git a/apps/browser/src/popup/scss/plugins.scss b/apps/browser/src/popup/scss/plugins.scss new file mode 100644 index 0000000000..44a181c0dc --- /dev/null +++ b/apps/browser/src/popup/scss/plugins.scss @@ -0,0 +1,218 @@ +@import "~ngx-toastr/toastr"; +@import "~#sweetalert2"; + +@import "variables.scss"; +@import "buttons.scss"; + +// Toaster + +.toast-container { + .toast-close-button { + @include themify($themes) { + color: themed("toastTextColor"); + } + font-size: 18px; + margin-right: 4px; + } + + .ngx-toastr { + @include themify($themes) { + color: themed("toastTextColor"); + } + 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"); + } + } + } +} + +// SweetAlert + +.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; + } +} + +date-input-polyfill { + &[data-open="true"] { + z-index: 10000 !important; + } +} diff --git a/apps/browser/src/popup/scss/popup.scss b/apps/browser/src/popup/scss/popup.scss new file mode 100644 index 0000000000..8a7b648545 --- /dev/null +++ b/apps/browser/src/popup/scss/popup.scss @@ -0,0 +1,17 @@ +$icomoon-font-path: "../../../../../libs/angular/src/scss/bwicons/fonts/"; +$card-icons-base: "../../../../../libs/angular/src/images/cards/"; + +@import "../../../../../libs/angular/src/scss/webfonts.css"; +@import "../../../../../libs/angular/src/scss/bwicons/styles/style.scss"; +@import "variables.scss"; +@import "../../../../../libs/angular/src/scss/icons.scss"; +@import "base.scss"; +@import "grid.scss"; +@import "box.scss"; +@import "buttons.scss"; +@import "misc.scss"; +@import "modal.scss"; +@import "plugins.scss"; +@import "environment.scss"; +@import "pages.scss"; +@import "~@angular/cdk/overlay-prebuilt.css"; diff --git a/apps/browser/src/popup/scss/variables.scss b/apps/browser/src/popup/scss/variables.scss new file mode 100644 index 0000000000..049954bc33 --- /dev/null +++ b/apps/browser/src/popup/scss/variables.scss @@ -0,0 +1,287 @@ +@import "~nord/src/sass/nord.scss"; + +$dark-icon-themes: "theme_dark", "theme_solarizedDark", "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: #767679; +$disabled-box-opacity: 1; +$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: #f0f0f0; + +$box-background-color: white; +$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%); + +$solarizedDarkBase03: #002b36; +$solarizedDarkBase02: #073642; +$solarizedDarkBase01: #586e75; +$solarizedDarkBase00: #657b83; +$solarizedDarkBase0: #839496; +$solarizedDarkBase1: #93a1a1; +$solarizedDarkBase2: #eee8d5; +$solarizedDarkBase3: #fdf6e3; +$solarizedDarkYellow: #b58900; +$solarizedDarkOrange: #cb4b16; +$solarizedDarkRed: #dc322f; +$solarizedDarkMagenta: #d33682; +$solarizedDarkViolet: #6c71c4; +$solarizedDarkBlue: #268bd2; +$solarizedDarkCyan: #2aa198; +$solarizedDarkGreen: #859900; + +$themes: ( + light: ( + textColor: $text-color, + borderColor: $border-color-dark, + backgroundColor: $background-color, + backgroundColorAlt: #ffffff, + 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, + tabBackgroundColor: #ffffff, + tabBackgroundHoverColor: $list-item-hover, + headerColor: #ffffff, + headerBackgroundColor: $brand-primary, + headerBackgroundHoverColor: rgba(255, 255, 255, 0.1), + headerBorderColor: $brand-primary, + headerInputBackgroundColor: darken($brand-primary, 8%), + headerInputBackgroundFocusColor: darken($brand-primary, 10%), + headerInputColor: #ffffff, + headerInputPlaceholderColor: lighten($brand-primary, 35%), + listItemBackgroundHoverColor: $list-item-hover, + disabledIconColor: $list-icon-color, + disabledBoxOpacity: $disabled-box-opacity, + headingColor: $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: $box-background-color, + toastTextColor: #ffffff, + svgSuffix: "-light.svg", + ), + dark: ( + textColor: #ffffff, + borderColor: #161c26, + backgroundColor: #161c26, + backgroundColorAlt: #2f343d, + scrollbarColor: #6e788a, + scrollbarHoverColor: #8d94a5, + boxBackgroundColor: #2f343d, + boxBackgroundHoverColor: #3c424e, + boxBorderColor: #4c525f, + tabBackgroundColor: #2f343d, + tabBackgroundHoverColor: #3c424e, + headerColor: #ffffff, + headerBackgroundColor: #2f343d, + headerBackgroundHoverColor: #3c424e, + headerBorderColor: #161c26, + headerInputBackgroundColor: #3c424e, + headerInputBackgroundFocusColor: #4c525f, + headerInputColor: #ffffff, + headerInputPlaceholderColor: #bac0ce, + listItemBackgroundHoverColor: #3c424e, + disabledIconColor: #bac0ce, + disabledBoxOpacity: 0.5, + headingColor: #bac0ce, + labelColor: #bac0ce, + mutedColor: #bac0ce, + totpStrokeColor: #4c525f, + boxRowButtonColor: #bac0ce, + boxRowButtonHoverColor: #ffffff, + inputBorderColor: #4c525f, + inputBackgroundColor: #2f343d, + inputPlaceholderColor: #bac0ce, + buttonBackgroundColor: #3c424e, + buttonBorderColor: #4c525f, + buttonColor: #bac0ce, + buttonPrimaryColor: #6f9df1, + buttonDangerColor: #ff8d85, + primaryColor: #6f9df1, + primaryAccentColor: #6f9df1, + dangerColor: #ff8d85, + successColor: #52e07c, + infoColor: #a4b0c6, + warningColor: #ffeb66, + logoSuffix: "white", + passwordNumberColor: #6f9df1, + passwordSpecialColor: #ff8d85, + calloutBorderColor: #4c525f, + calloutBackgroundColor: #3c424e, + toastTextColor: #1f242e, + svgSuffix: "-dark.svg", + ), + nord: ( + textColor: $nord5, + borderColor: $nord0, + backgroundColor: $nord1, + backgroundColorAlt: $nord2, + scrollbarColor: $nord4, + scrollbarHoverColor: $nord6, + boxBackgroundColor: $nord2, + boxBackgroundHoverColor: $nord3, + boxBorderColor: $nord1, + tabBackgroundColor: $nord1, + tabBackgroundHoverColor: $nord2, + headerColor: $nord5, + headerBackgroundColor: $nord1, + headerBackgroundHoverColor: $nord2, + headerBorderColor: $nord0, + headerInputBackgroundColor: $nord6, + headerInputBackgroundFocusColor: $nord5, + headerInputColor: $nord2, + headerInputPlaceholderColor: $nord3, + listItemBackgroundHoverColor: $nord3, + disabledIconColor: $nord4, + disabledBoxOpacity: 0.5, + headingColor: $nord4, + 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: $nord0, + calloutBackgroundColor: $nord2, + toastTextColor: #ffffff, + svgSuffix: "-dark.svg", + ), + solarizedDark: ( + textColor: $solarizedDarkBase2, + borderColor: $solarizedDarkBase03, + backgroundColor: $solarizedDarkBase03, + backgroundColorAlt: $solarizedDarkBase02, + scrollbarColor: $solarizedDarkBase0, + scrollbarHoverColor: $solarizedDarkBase2, + boxBackgroundColor: $solarizedDarkBase03, + boxBackgroundHoverColor: $solarizedDarkBase02, + boxBorderColor: $solarizedDarkBase02, + tabBackgroundColor: $solarizedDarkBase02, + tabBackgroundHoverColor: $solarizedDarkBase01, + headerColor: $solarizedDarkBase1, + headerBackgroundColor: $solarizedDarkBase02, + headerBackgroundHoverColor: $solarizedDarkBase01, + headerBorderColor: $solarizedDarkBase03, + headerInputBackgroundColor: $solarizedDarkBase2, + headerInputBackgroundFocusColor: $solarizedDarkBase1, + headerInputColor: $solarizedDarkBase01, + headerInputPlaceholderColor: $solarizedDarkBase00, + listItemBackgroundHoverColor: $solarizedDarkBase02, + disabledIconColor: $solarizedDarkBase0, + disabledBoxOpacity: 0.5, + headingColor: $solarizedDarkBase0, + labelColor: $solarizedDarkBase0, + mutedColor: $solarizedDarkBase0, + totpStrokeColor: $solarizedDarkBase0, + boxRowButtonColor: $solarizedDarkBase0, + boxRowButtonHoverColor: $solarizedDarkBase2, + inputBorderColor: $solarizedDarkBase03, + inputBackgroundColor: $solarizedDarkBase01, + inputPlaceholderColor: lighten($solarizedDarkBase00, 20%), + buttonBackgroundColor: $solarizedDarkBase00, + buttonBorderColor: $solarizedDarkBase03, + buttonColor: $solarizedDarkBase1, + buttonPrimaryColor: $solarizedDarkCyan, + buttonDangerColor: $solarizedDarkRed, + primaryColor: $solarizedDarkGreen, + primaryAccentColor: $solarizedDarkCyan, + dangerColor: $solarizedDarkRed, + successColor: $solarizedDarkGreen, + infoColor: $solarizedDarkGreen, + warningColor: $solarizedDarkYellow, + logoSuffix: "white", + passwordNumberColor: $solarizedDarkCyan, + passwordSpecialColor: $solarizedDarkYellow, + calloutBorderColor: $solarizedDarkBase03, + calloutBackgroundColor: $solarizedDarkBase01, + toastTextColor: #ffffff, + svgSuffix: "-solarized.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/browser/src/popup/send/efflux-dates.component.html b/apps/browser/src/popup/send/efflux-dates.component.html new file mode 100644 index 0000000000..81fcf8f838 --- /dev/null +++ b/apps/browser/src/popup/send/efflux-dates.component.html @@ -0,0 +1,209 @@ + +
+
+ +
+ + +
+
+ +
+
+
+ + +
+
+ +
+
+
+ +
+ + +
+
+ +
+
+
+
+ + +
+ +
+
+ +
+ + + +
+ + +
+
+ +
+ + +
+
+ + + +
+
+ + + +
+ + +
+
+ +
+ + +
+
+ + + +
+
+
diff --git a/apps/browser/src/popup/send/efflux-dates.component.ts b/apps/browser/src/popup/send/efflux-dates.component.ts new file mode 100644 index 0000000000..2683720bf0 --- /dev/null +++ b/apps/browser/src/popup/send/efflux-dates.component.ts @@ -0,0 +1,25 @@ +import { DatePipe } from "@angular/common"; +import { Component, EventEmitter, Input, Output } 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 { + @Input() readonly inPopout: boolean; + @Output() popOutWindow = new EventEmitter(); + + constructor( + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + protected datePipe: DatePipe + ) { + super(i18nService, platformUtilsService, datePipe); + } +} diff --git a/apps/browser/src/popup/send/send-add-edit.component.html b/apps/browser/src/popup/send/send-add-edit.component.html new file mode 100644 index 0000000000..3fea4094d6 --- /dev/null +++ b/apps/browser/src/popup/send/send-add-edit.component.html @@ -0,0 +1,319 @@ +
+
+
+ +
+

+ {{ title }} +

+
+ +
+
+
+ + + {{ "sendDisabledWarning" | i18n }} + + + {{ "sendOptionsPolicyInEffect" | i18n }} + + + +
{{ "sendLinuxChromiumFileWarning" | i18n }}
+
{{ "sendFirefoxFileWarning" | i18n }}
+
{{ "sendSafariFileWarning" | i18n }}
+
+ +
+
+
+ + +
+
+ +
+ +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +
{{ send.file.fileName }} ({{ send.file.sizeName }})
+
+
+ + +
+
+ +
+ +
+
+
+ + +
+
+ +
+
+ + +
+
+
+ +
+

+ {{ "share" | i18n }} +

+
+ +
+ + +
+
+
+ +
+

+ +

+
+
+ + + +
+
+
+ + +
+
+ +
+ +
+
+
+ + +
+
+
+ +
+
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+
+ + +
+
+ +
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
diff --git a/apps/browser/src/popup/send/send-add-edit.component.ts b/apps/browser/src/popup/send/send-add-edit.component.ts new file mode 100644 index 0000000000..0087b0ba53 --- /dev/null +++ b/apps/browser/src/popup/send/send-add-edit.component.ts @@ -0,0 +1,145 @@ +import { DatePipe, Location } from "@angular/common"; +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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 "../../services/abstractions/state.service"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +@Component({ + selector: "app-send-add-edit", + templateUrl: "send-add-edit.component.html", +}) +export class SendAddEditComponent extends BaseAddEditComponent { + // Options header + showOptions = false; + // File visibility + isFirefox = false; + inPopout = false; + inSidebar = false; + isLinux = false; + isUnsupportedMac = false; + + constructor( + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + stateService: StateService, + messagingService: MessagingService, + policyService: PolicyService, + environmentService: EnvironmentService, + datePipe: DatePipe, + sendService: SendService, + private route: ActivatedRoute, + private router: Router, + private location: Location, + private popupUtilsService: PopupUtilsService, + logService: LogService + ) { + super( + i18nService, + platformUtilsService, + environmentService, + datePipe, + sendService, + messagingService, + policyService, + logService, + stateService + ); + } + + get showFileSelector(): boolean { + return !(this.editMode || this.showFilePopoutMessage); + } + + get showFilePopoutMessage(): boolean { + return ( + !this.editMode && + (this.showFirefoxFileWarning || this.showSafariFileWarning || this.showChromiumFileWarning) + ); + } + + get showFirefoxFileWarning(): boolean { + return this.isFirefox && !(this.inSidebar || this.inPopout); + } + + get showSafariFileWarning(): boolean { + return this.isSafari && !this.inPopout; + } + + // Only show this for Chromium based browsers in Linux and Mac > Big Sur + get showChromiumFileWarning(): boolean { + return ( + (this.isLinux || this.isUnsupportedMac) && + !this.isFirefox && + !(this.inSidebar || this.inPopout) + ); + } + + popOutWindow() { + this.popupUtilsService.popOut(window); + } + + async ngOnInit() { + // File visilibity + this.isFirefox = this.platformUtilsService.isFirefox(); + this.inPopout = this.popupUtilsService.inPopout(window); + this.inSidebar = this.popupUtilsService.inSidebar(window); + this.isLinux = window?.navigator?.userAgent.indexOf("Linux") !== -1; + this.isUnsupportedMac = + this.platformUtilsService.isChrome() && window?.navigator?.appVersion.includes("Mac OS X 11"); + + this.route.queryParams.pipe(first()).subscribe(async (params) => { + if (params.sendId) { + this.sendId = params.sendId; + } + if (params.type) { + const type = parseInt(params.type, null); + this.type = type; + } + await this.load(); + }); + + window.setTimeout(() => { + if (!this.editMode) { + document.getElementById("name").focus(); + } + }, 200); + } + + async submit(): Promise { + if (await super.submit()) { + this.cancel(); + return true; + } + + return false; + } + + async delete(): Promise { + if (await super.delete()) { + this.cancel(); + return true; + } + + return false; + } + + cancel() { + // If true, the window was pop'd out on the add-send page. location.back will not work + if ((window as any).previousPopupUrl.startsWith("/add-send")) { + this.router.navigate(["tabs/send"]); + } else { + this.location.back(); + } + } +} diff --git a/apps/browser/src/popup/send/send-groupings.component.html b/apps/browser/src/popup/send/send-groupings.component.html new file mode 100644 index 0000000000..72c79e7cb7 --- /dev/null +++ b/apps/browser/src/popup/send/send-groupings.component.html @@ -0,0 +1,122 @@ +
+
+ +
+

{{ "send" | i18n }}

+ +
+ +
+
+
+ + {{ "sendDisabledWarning" | i18n }} + +
+ + + +

{{ "noItemsInList" | i18n }}

+ +
+
+ +
+

+ {{ "types" | i18n }} +

+
+ + +
+
+
+

+ {{ "allSends" | i18n }} +
{{ sends.length }}
+

+
+ +
+
+
+ +
+

{{ "noItemsInList" | i18n }}

+
+
+
+ + +
+
+
+
diff --git a/apps/browser/src/popup/send/send-groupings.component.ts b/apps/browser/src/popup/send/send-groupings.component.ts new file mode 100644 index 0000000000..8aebbfcd59 --- /dev/null +++ b/apps/browser/src/popup/send/send-groupings.component.ts @@ -0,0 +1,192 @@ +import { ChangeDetectorRef, Component, NgZone } from "@angular/core"; +import { Router } from "@angular/router"; + +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 { SyncService } from "jslib-common/abstractions/sync.service"; +import { SendType } from "jslib-common/enums/sendType"; +import { SendView } from "jslib-common/models/view/sendView"; + +import { BrowserSendComponentState } from "../../models/browserSendComponentState"; +import { StateService } from "../../services/abstractions/state.service"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const ComponentId = "SendComponent"; + +@Component({ + selector: "app-send-groupings", + templateUrl: "send-groupings.component.html", +}) +export class SendGroupingsComponent extends BaseSendComponent { + // Header + showLeftHeader = true; + // Send Type Calculations + typeCounts = new Map(); + // State Handling + state: BrowserSendComponentState; + private loadedTimeout: number; + + constructor( + sendService: SendService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + environmentService: EnvironmentService, + ngZone: NgZone, + policyService: PolicyService, + searchService: SearchService, + private popupUtils: PopupUtilsService, + private stateService: StateService, + private router: Router, + private syncService: SyncService, + private changeDetectorRef: ChangeDetectorRef, + private broadcasterService: BroadcasterService, + logService: LogService + ) { + super( + sendService, + i18nService, + platformUtilsService, + environmentService, + ngZone, + searchService, + policyService, + logService + ); + super.onSuccessfulLoad = async () => { + this.calculateTypeCounts(); + this.selectAll(); + }; + } + + async ngOnInit() { + // Determine Header details + this.showLeftHeader = !( + this.popupUtils.inSidebar(window) && this.platformUtilsService.isFirefox() + ); + // Clear state of Send Type Component + await this.stateService.setBrowserSendTypeComponentState(null); + // Let super class finish + await super.ngOnInit(); + // Handle State Restore if necessary + const restoredScopeState = await this.restoreState(); + if (this.state?.searchText != null) { + this.searchText = this.state.searchText; + } + + if (!this.syncService.syncInProgress) { + this.load(); + } else { + this.loadedTimeout = window.setTimeout(() => { + if (!this.loaded) { + this.load(); + } + }, 5000); + } + + if (!this.syncService.syncInProgress || restoredScopeState) { + window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state?.scrollY), 0); + } + + // Load all sends if sync completed in background + this.broadcasterService.subscribe(ComponentId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + window.setTimeout(() => { + this.load(); + }, 500); + break; + default: + break; + } + + this.changeDetectorRef.detectChanges(); + }); + }); + } + + ngOnDestroy() { + // Remove timeout + if (this.loadedTimeout != null) { + window.clearTimeout(this.loadedTimeout); + } + // Save state + this.saveState(); + // Unsubscribe + this.broadcasterService.unsubscribe(ComponentId); + } + + async selectType(type: SendType) { + this.router.navigate(["/send-type"], { queryParams: { type: type } }); + } + + async selectSend(s: SendView) { + this.router.navigate(["/edit-send"], { queryParams: { sendId: s.id } }); + } + + async addSend() { + if (this.disableSend) { + return; + } + this.router.navigate(["/add-send"]); + } + + async removePassword(s: SendView): Promise { + if (this.disableSend) { + return; + } + super.removePassword(s); + } + + showSearching() { + return ( + this.hasSearched || (!this.searchPending && this.searchService.isSearchable(this.searchText)) + ); + } + + private calculateTypeCounts() { + // Create type counts + const typeCounts = new Map(); + this.sends.forEach((s) => { + if (typeCounts.has(s.type)) { + typeCounts.set(s.type, typeCounts.get(s.type) + 1); + } else { + typeCounts.set(s.type, 1); + } + }); + this.typeCounts = typeCounts; + } + + private async saveState() { + this.state = { + scrollY: this.popupUtils.getContentScrollY(window), + searchText: this.searchText, + sends: this.sends, + typeCounts: this.typeCounts, + }; + await this.stateService.setBrowserSendComponentState(this.state); + } + + private async restoreState(): Promise { + this.state = await this.stateService.getBrowserSendComponentState(); + if (this.state == null) { + return false; + } + + if (this.state.sends != null) { + this.sends = this.state.sends; + } + if (this.state.typeCounts != null) { + this.typeCounts = this.state.typeCounts; + } + + return true; + } +} diff --git a/apps/browser/src/popup/send/send-type.component.html b/apps/browser/src/popup/send/send-type.component.html new file mode 100644 index 0000000000..1e14dc151b --- /dev/null +++ b/apps/browser/src/popup/send/send-type.component.html @@ -0,0 +1,69 @@ +
+
+ +
+

{{ "send" | i18n }}

+ +
+ +
+
+
+ + {{ "sendDisabledWarning" | i18n }} + +
+ + +

{{ "noItemsInList" | i18n }}

+ +
+
+
+

+ {{ groupingTitle }} + {{ filteredSends.length }} +

+
+ + +
+
+
diff --git a/apps/browser/src/popup/send/send-type.component.ts b/apps/browser/src/popup/send/send-type.component.ts new file mode 100644 index 0000000000..8b4d5039af --- /dev/null +++ b/apps/browser/src/popup/send/send-type.component.ts @@ -0,0 +1,164 @@ +import { Location } from "@angular/common"; +import { ChangeDetectorRef, Component, NgZone } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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 { SendType } from "jslib-common/enums/sendType"; +import { SendView } from "jslib-common/models/view/sendView"; + +import { BrowserComponentState } from "../../models/browserComponentState"; +import { StateService } from "../../services/abstractions/state.service"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const ComponentId = "SendTypeComponent"; + +@Component({ + selector: "app-send-type", + templateUrl: "send-type.component.html", +}) +export class SendTypeComponent extends BaseSendComponent { + groupingTitle: string; + // State Handling + state: BrowserComponentState; + private refreshTimeout: number; + private applySavedState = true; + + constructor( + sendService: SendService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + environmentService: EnvironmentService, + ngZone: NgZone, + policyService: PolicyService, + searchService: SearchService, + private popupUtils: PopupUtilsService, + private stateService: StateService, + private route: ActivatedRoute, + private location: Location, + private changeDetectorRef: ChangeDetectorRef, + private broadcasterService: BroadcasterService, + private router: Router, + logService: LogService + ) { + super( + sendService, + i18nService, + platformUtilsService, + environmentService, + ngZone, + searchService, + policyService, + logService + ); + super.onSuccessfulLoad = async () => { + this.selectType(this.type); + }; + this.applySavedState = + (window as any).previousPopupUrl != null && + !(window as any).previousPopupUrl.startsWith("/send-type"); + } + + async ngOnInit() { + // Let super class finish + await super.ngOnInit(); + this.route.queryParams.pipe(first()).subscribe(async (params) => { + if (this.applySavedState) { + this.state = await this.stateService.getBrowserSendTypeComponentState(); + if (this.state?.searchText != null) { + this.searchText = this.state.searchText; + } + } + + if (params.type != null) { + this.type = parseInt(params.type, null); + switch (this.type) { + case SendType.Text: + this.groupingTitle = this.i18nService.t("sendTypeText"); + break; + case SendType.File: + this.groupingTitle = this.i18nService.t("sendTypeFile"); + break; + default: + break; + } + await this.load((s) => s.type === this.type); + } + + // Restore state and remove reference + if (this.applySavedState && this.state != null) { + window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state?.scrollY), 0); + } + this.stateService.setBrowserSendTypeComponentState(null); + }); + + // Refresh Send list if sync completed in background + this.broadcasterService.subscribe(ComponentId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + if (message.successfully) { + this.refreshTimeout = window.setTimeout(() => { + this.refresh(); + }, 500); + } + break; + default: + break; + } + + this.changeDetectorRef.detectChanges(); + }); + }); + } + + ngOnDestroy() { + // Remove timeout + if (this.refreshTimeout != null) { + window.clearTimeout(this.refreshTimeout); + } + // Save state + this.saveState(); + // Unsubscribe + this.broadcasterService.unsubscribe(ComponentId); + } + + async selectSend(s: SendView) { + this.router.navigate(["/edit-send"], { queryParams: { sendId: s.id } }); + } + + async addSend() { + if (this.disableSend) { + return; + } + this.router.navigate(["/add-send"], { queryParams: { type: this.type } }); + } + + async removePassword(s: SendView): Promise { + if (this.disableSend) { + return; + } + super.removePassword(s); + } + + back() { + (window as any).routeDirection = "b"; + this.location.back(); + } + + private async saveState() { + this.state = { + scrollY: this.popupUtils.getContentScrollY(window), + searchText: this.searchText, + }; + await this.stateService.setBrowserSendTypeComponentState(this.state); + } +} diff --git a/apps/browser/src/popup/services/debounceNavigationService.ts b/apps/browser/src/popup/services/debounceNavigationService.ts new file mode 100644 index 0000000000..bf1e2e83ca --- /dev/null +++ b/apps/browser/src/popup/services/debounceNavigationService.ts @@ -0,0 +1,49 @@ +import { Injectable, OnDestroy } from "@angular/core"; +import { CanActivate, NavigationEnd, NavigationStart, Router } from "@angular/router"; +import { Subscription } from "rxjs"; +import { filter, pairwise } from "rxjs/operators"; + +@Injectable() +export class DebounceNavigationService implements CanActivate, OnDestroy { + navigationStartSub: Subscription; + navigationSuccessSub: Subscription; + + private lastNavigation: NavigationStart; + private thisNavigation: NavigationStart; + private lastNavigationSuccessId: number; + + constructor(private router: Router) { + this.navigationStartSub = this.router.events + .pipe( + filter((event) => event instanceof NavigationStart), + pairwise() + ) + .subscribe( + (events: [NavigationStart, NavigationStart]) => + ([this.lastNavigation, this.thisNavigation] = events) + ); + + this.navigationSuccessSub = this.router.events + .pipe(filter((event) => event instanceof NavigationEnd)) + .subscribe((event: NavigationEnd) => (this.lastNavigationSuccessId = event.id)); + } + + async canActivate() { + return !( + this.thisNavigation?.navigationTrigger === "hashchange" && + this.lastNavigation.navigationTrigger === "popstate" && + this.lastNavigationSuccessId === this.lastNavigation.id && + this.lastNavigation.url === this.thisNavigation?.url + ); + } + + ngOnDestroy() { + if (this.navigationStartSub != null) { + this.navigationStartSub.unsubscribe(); + } + + if (this.navigationSuccessSub != null) { + this.navigationSuccessSub.unsubscribe(); + } + } +} diff --git a/apps/browser/src/popup/services/init.service.ts b/apps/browser/src/popup/services/init.service.ts new file mode 100644 index 0000000000..e128e9c090 --- /dev/null +++ b/apps/browser/src/popup/services/init.service.ts @@ -0,0 +1,62 @@ +import { Injectable } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService as LogServiceAbstraction } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ThemeType } from "jslib-common/enums/themeType"; + +import { StateService as StateServiceAbstraction } from "../../services/abstractions/state.service"; + +import { PopupUtilsService } from "./popup-utils.service"; + +@Injectable() +export class InitService { + constructor( + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private popupUtilsService: PopupUtilsService, + private stateService: StateServiceAbstraction, + private logService: LogServiceAbstraction + ) {} + + init() { + return async () => { + await this.stateService.init(); + + if (!this.popupUtilsService.inPopup(window)) { + window.document.body.classList.add("body-full"); + } else if (window.screen.availHeight < 600) { + window.document.body.classList.add("body-xs"); + } else if (window.screen.availHeight <= 800) { + window.document.body.classList.add("body-sm"); + } + + const htmlEl = window.document.documentElement; + 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); + } + }); + htmlEl.classList.add("locale_" + this.i18nService.translationLocale); + + // Workaround for slow performance on external monitors on Chrome + MacOS + // See: https://bugs.chromium.org/p/chromium/issues/detail?id=971701#c64 + if ( + this.platformUtilsService.isChrome() && + navigator.platform.indexOf("Mac") > -1 && + this.popupUtilsService.inPopup(window) && + (window.screenLeft < 0 || + window.screenTop < 0 || + window.screenLeft > window.screen.width || + window.screenTop > window.screen.height) + ) { + htmlEl.classList.add("force_redraw"); + this.logService.info("Force redraw is on"); + } + }; + } +} diff --git a/apps/browser/src/popup/services/lock-guard.service.ts b/apps/browser/src/popup/services/lock-guard.service.ts new file mode 100644 index 0000000000..ad62951568 --- /dev/null +++ b/apps/browser/src/popup/services/lock-guard.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from "@angular/core"; + +import { LockGuard as BaseLockGuardService } from "jslib-angular/guards/lock.guard"; + +@Injectable() +export class LockGuardService extends BaseLockGuardService { + protected homepage = "tabs/current"; +} diff --git a/apps/browser/src/popup/services/password-reprompt.service.ts b/apps/browser/src/popup/services/password-reprompt.service.ts new file mode 100644 index 0000000000..33b26bfeb8 --- /dev/null +++ b/apps/browser/src/popup/services/password-reprompt.service.ts @@ -0,0 +1,10 @@ +import { Injectable } from "@angular/core"; + +import { PasswordRepromptService as BasePasswordRepromptService } from "jslib-angular/services/passwordReprompt.service"; + +import { PasswordRepromptComponent } from "../components/password-reprompt.component"; + +@Injectable() +export class PasswordRepromptService extends BasePasswordRepromptService { + component = PasswordRepromptComponent; +} diff --git a/apps/browser/src/popup/services/popup-search.service.ts b/apps/browser/src/popup/services/popup-search.service.ts new file mode 100644 index 0000000000..a6745baf0b --- /dev/null +++ b/apps/browser/src/popup/services/popup-search.service.ts @@ -0,0 +1,27 @@ +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { ConsoleLogService } from "jslib-common/services/consoleLog.service"; +import { SearchService } from "jslib-common/services/search.service"; + +export class PopupSearchService extends SearchService { + constructor( + private mainSearchService: SearchService, + cipherService: CipherService, + consoleLogService: ConsoleLogService, + i18nService: I18nService + ) { + super(cipherService, consoleLogService, i18nService); + } + + clearIndex() { + throw new Error("Not available."); + } + + indexCiphers(): Promise { + throw new Error("Not available."); + } + + getIndexForSearch() { + return this.mainSearchService.getIndexForSearch(); + } +} diff --git a/apps/browser/src/popup/services/popup-utils.service.ts b/apps/browser/src/popup/services/popup-utils.service.ts new file mode 100644 index 0000000000..3b2556b99d --- /dev/null +++ b/apps/browser/src/popup/services/popup-utils.service.ts @@ -0,0 +1,83 @@ +import { Injectable } from "@angular/core"; + +import { BrowserApi } from "../../browser/browserApi"; + +@Injectable() +export class PopupUtilsService { + constructor(private privateMode: boolean = false) {} + + inSidebar(win: Window): boolean { + return win.location.search !== "" && win.location.search.indexOf("uilocation=sidebar") > -1; + } + + inTab(win: Window): boolean { + return win.location.search !== "" && win.location.search.indexOf("uilocation=tab") > -1; + } + + inPopout(win: Window): boolean { + return win.location.search !== "" && win.location.search.indexOf("uilocation=popout") > -1; + } + + inPopup(win: Window): boolean { + return ( + win.location.search === "" || + win.location.search.indexOf("uilocation=") === -1 || + win.location.search.indexOf("uilocation=popup") > -1 + ); + } + + inPrivateMode(): boolean { + return this.privateMode; + } + + getContentScrollY(win: Window, scrollingContainer = "content"): number { + const content = win.document.getElementsByTagName(scrollingContainer)[0]; + return content.scrollTop; + } + + setContentScrollY(win: Window, scrollY: number, scrollingContainer = "content"): void { + if (scrollY != null) { + const content = win.document.getElementsByTagName(scrollingContainer)[0]; + content.scrollTop = scrollY; + } + } + + popOut(win: Window, href: string = null): void { + if (href === null) { + href = win.location.href; + } + + if (typeof chrome !== "undefined" && chrome.windows && chrome.windows.create) { + if (href.indexOf("?uilocation=") > -1) { + href = href + .replace("uilocation=popup", "uilocation=popout") + .replace("uilocation=tab", "uilocation=popout") + .replace("uilocation=sidebar", "uilocation=popout"); + } else { + const hrefParts = href.split("#"); + href = + hrefParts[0] + "?uilocation=popout" + (hrefParts.length > 0 ? "#" + hrefParts[1] : ""); + } + + const bodyRect = document.querySelector("body").getBoundingClientRect(); + chrome.windows.create({ + url: href, + type: "popup", + width: Math.round(bodyRect.width ? bodyRect.width + 60 : 375), + height: Math.round(bodyRect.height || 600), + }); + + if (this.inPopup(win)) { + BrowserApi.closePopup(win); + } + } else if (typeof chrome !== "undefined" && chrome.tabs && chrome.tabs.create) { + href = href + .replace("uilocation=popup", "uilocation=tab") + .replace("uilocation=popout", "uilocation=tab") + .replace("uilocation=sidebar", "uilocation=tab"); + chrome.tabs.create({ + url: href, + }); + } + } +} diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts new file mode 100644 index 0000000000..bb38a01e12 --- /dev/null +++ b/apps/browser/src/popup/services/services.module.ts @@ -0,0 +1,269 @@ +import { APP_INITIALIZER, LOCALE_ID, NgModule } from "@angular/core"; + +import { LockGuard as BaseLockGuardService } from "jslib-angular/guards/lock.guard"; +import { UnauthGuard as BaseUnauthGuardService } from "jslib-angular/guards/unauth.guard"; +import { JslibServicesModule, SECURE_STORAGE } from "jslib-angular/services/jslib-services.module"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AppIdService } from "jslib-common/abstractions/appId.service"; +import { AuditService } from "jslib-common/abstractions/audit.service"; +import { AuthService as AuthServiceAbstraction } from "jslib-common/abstractions/auth.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 { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { ExportService } from "jslib-common/abstractions/export.service"; +import { FileUploadService } from "jslib-common/abstractions/fileUpload.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 as LogServiceAbstraction } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { NotificationsService } from "jslib-common/abstractions/notifications.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PasswordRepromptService as PasswordRepromptServiceAbstraction } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { SearchService as SearchServiceAbstraction } from "jslib-common/abstractions/search.service"; +import { SendService } from "jslib-common/abstractions/send.service"; +import { SettingsService } from "jslib-common/abstractions/settings.service"; +import { StateService as BaseStateServiceAbstraction } from "jslib-common/abstractions/state.service"; +import { StorageService as StorageServiceAbstraction } from "jslib-common/abstractions/storage.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { TokenService } from "jslib-common/abstractions/token.service"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { UsernameGenerationService } from "jslib-common/abstractions/usernameGeneration.service"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; +import { AuthService } from "jslib-common/services/auth.service"; +import { ConsoleLogService } from "jslib-common/services/consoleLog.service"; +import { SearchService } from "jslib-common/services/search.service"; + +import MainBackground from "../../background/main.background"; +import { BrowserApi } from "../../browser/browserApi"; +import { AutofillService } from "../../services/abstractions/autofill.service"; +import { StateService as StateServiceAbstraction } from "../../services/abstractions/state.service"; +import BrowserMessagingService from "../../services/browserMessaging.service"; +import BrowserMessagingPrivateModePopupService from "../../services/browserMessagingPrivateModePopup.service"; +import { VaultFilterService } from "../../services/vaultFilter.service"; + +import { DebounceNavigationService } from "./debounceNavigationService"; +import { InitService } from "./init.service"; +import { LockGuardService } from "./lock-guard.service"; +import { PasswordRepromptService } from "./password-reprompt.service"; +import { PopupSearchService } from "./popup-search.service"; +import { PopupUtilsService } from "./popup-utils.service"; +import { UnauthGuardService } from "./unauth-guard.service"; + +const isPrivateMode = BrowserApi.getBackgroundPage() == null; +const mainBackground: MainBackground = isPrivateMode + ? createLocalBgService() + : BrowserApi.getBackgroundPage().bitwardenMain; + +function createLocalBgService() { + const localBgService = new MainBackground(true); + localBgService.bootstrap(); + return localBgService; +} + +function getBgService(service: keyof MainBackground) { + return (): T => { + return mainBackground ? (mainBackground[service] as any as T) : null; + }; +} + +@NgModule({ + imports: [JslibServicesModule], + declarations: [], + providers: [ + InitService, + DebounceNavigationService, + { + provide: LOCALE_ID, + useFactory: () => getBgService("i18nService")().translationLocale, + deps: [], + }, + { + provide: APP_INITIALIZER, + useFactory: (initService: InitService) => initService.init(), + deps: [InitService], + multi: true, + }, + { provide: BaseLockGuardService, useClass: LockGuardService }, + { provide: BaseUnauthGuardService, useClass: UnauthGuardService }, + { provide: PopupUtilsService, useFactory: () => new PopupUtilsService(isPrivateMode) }, + { + provide: MessagingService, + useFactory: () => { + return isPrivateMode + ? new BrowserMessagingPrivateModePopupService() + : new BrowserMessagingService(); + }, + }, + { + provide: TwoFactorService, + useFactory: getBgService("twoFactorService"), + deps: [], + }, + { + provide: AuthServiceAbstraction, + useFactory: getBgService("authService"), + deps: [], + }, + { + provide: SearchServiceAbstraction, + useFactory: ( + cipherService: CipherService, + logService: ConsoleLogService, + i18nService: I18nService + ) => { + return new PopupSearchService( + getBgService("searchService")(), + cipherService, + logService, + i18nService + ); + }, + deps: [CipherService, LogServiceAbstraction, I18nService], + }, + { provide: AuditService, useFactory: getBgService("auditService"), deps: [] }, + { + provide: FileUploadService, + useFactory: getBgService("fileUploadService"), + deps: [], + }, + { provide: CipherService, useFactory: getBgService("cipherService"), deps: [] }, + { + provide: CryptoFunctionService, + useFactory: getBgService("cryptoFunctionService"), + deps: [], + }, + { provide: FolderService, useFactory: getBgService("folderService"), deps: [] }, + { + provide: CollectionService, + useFactory: getBgService("collectionService"), + deps: [], + }, + { + provide: LogServiceAbstraction, + useFactory: getBgService("logService"), + deps: [], + }, + { + provide: EnvironmentService, + useFactory: getBgService("environmentService"), + deps: [], + }, + { provide: TotpService, useFactory: getBgService("totpService"), deps: [] }, + { provide: TokenService, useFactory: getBgService("tokenService"), deps: [] }, + { provide: I18nService, useFactory: getBgService("i18nService"), deps: [] }, + { provide: CryptoService, useFactory: getBgService("cryptoService"), deps: [] }, + { provide: EventService, useFactory: getBgService("eventService"), deps: [] }, + { provide: PolicyService, useFactory: getBgService("policyService"), deps: [] }, + { + provide: PlatformUtilsService, + useFactory: getBgService("platformUtilsService"), + deps: [], + }, + { + provide: PasswordGenerationService, + useFactory: getBgService("passwordGenerationService"), + deps: [], + }, + { provide: ApiService, useFactory: getBgService("apiService"), deps: [] }, + { provide: SyncService, useFactory: getBgService("syncService"), deps: [] }, + { + provide: SettingsService, + useFactory: getBgService("settingsService"), + deps: [], + }, + { + provide: StorageServiceAbstraction, + useFactory: getBgService("storageService"), + deps: [], + }, + { provide: AppIdService, useFactory: getBgService("appIdService"), deps: [] }, + { + provide: AutofillService, + useFactory: getBgService("autofillService"), + deps: [], + }, + { provide: ExportService, useFactory: getBgService("exportService"), deps: [] }, + { provide: SendService, useFactory: getBgService("sendService"), deps: [] }, + { + provide: KeyConnectorService, + useFactory: getBgService("keyConnectorService"), + deps: [], + }, + { + provide: UserVerificationService, + useFactory: getBgService("userVerificationService"), + deps: [], + }, + { + provide: VaultTimeoutService, + useFactory: getBgService("vaultTimeoutService"), + deps: [], + }, + { + provide: NotificationsService, + useFactory: getBgService("notificationsService"), + deps: [], + }, + { + provide: LogServiceAbstraction, + useFactory: getBgService("logService"), + deps: [], + }, + { provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService }, + { + provide: OrganizationService, + useFactory: getBgService("organizationService"), + deps: [], + }, + { + provide: VaultFilterService, + useFactory: () => { + return new VaultFilterService( + getBgService("stateService")(), + getBgService("organizationService")(), + getBgService("folderService")(), + getBgService("cipherService")(), + getBgService("collectionService")(), + getBgService("policyService")() + ); + }, + deps: [], + }, + { + provide: ProviderService, + useFactory: getBgService("providerService"), + deps: [], + }, + { + provide: SECURE_STORAGE, + useFactory: getBgService("secureStorageService"), + deps: [], + }, + { + provide: StateServiceAbstraction, + useFactory: getBgService("stateService"), + deps: [], + }, + { + provide: UsernameGenerationService, + useFactory: getBgService("usernameGenerationService"), + deps: [], + }, + { + provide: BaseStateServiceAbstraction, + useExisting: StateServiceAbstraction, + deps: [], + }, + ], +}) +export class ServicesModule {} diff --git a/apps/browser/src/popup/services/unauth-guard.service.ts b/apps/browser/src/popup/services/unauth-guard.service.ts new file mode 100644 index 0000000000..71a497e03c --- /dev/null +++ b/apps/browser/src/popup/services/unauth-guard.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from "@angular/core"; + +import { UnauthGuard as BaseUnauthGuardService } from "jslib-angular/guards/unauth.guard"; + +@Injectable() +export class UnauthGuardService extends BaseUnauthGuardService { + protected homepage = "tabs/current"; +} diff --git a/apps/browser/src/popup/settings/excluded-domains.component.html b/apps/browser/src/popup/settings/excluded-domains.component.html new file mode 100644 index 0000000000..2d44de3d92 --- /dev/null +++ b/apps/browser/src/popup/settings/excluded-domains.component.html @@ -0,0 +1,88 @@ +
+
+ +

+ {{ "excludedDomains" | i18n }} +

+
+ +
+
+
+
+
+ +
+ +
+ + + + +
+
+ +
+
+
+ +
+ +
+
+
diff --git a/apps/browser/src/popup/settings/excluded-domains.component.ts b/apps/browser/src/popup/settings/excluded-domains.component.ts new file mode 100644 index 0000000000..b6a47932c9 --- /dev/null +++ b/apps/browser/src/popup/settings/excluded-domains.component.ts @@ -0,0 +1,115 @@ +import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { Utils } from "jslib-common/misc/utils"; + +import { BrowserApi } from "../../browser/browserApi"; + +interface ExcludedDomain { + uri: string; + showCurrentUris: boolean; +} + +const BroadcasterSubscriptionId = "excludedDomains"; + +@Component({ + selector: "app-excluded-domains", + templateUrl: "excluded-domains.component.html", +}) +export class ExcludedDomainsComponent implements OnInit, OnDestroy { + excludedDomains: ExcludedDomain[] = []; + currentUris: string[]; + loadCurrentUrisTimeout: number; + + constructor( + private stateService: StateService, + private i18nService: I18nService, + private router: Router, + private broadcasterService: BroadcasterService, + private ngZone: NgZone, + private platformUtilsService: PlatformUtilsService + ) {} + + async ngOnInit() { + const savedDomains = await this.stateService.getNeverDomains(); + if (savedDomains) { + for (const uri of Object.keys(savedDomains)) { + this.excludedDomains.push({ uri: uri, showCurrentUris: false }); + } + } + + await this.loadCurrentUris(); + + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "tabChanged": + case "windowChanged": + if (this.loadCurrentUrisTimeout != null) { + window.clearTimeout(this.loadCurrentUrisTimeout); + } + this.loadCurrentUrisTimeout = window.setTimeout( + async () => await this.loadCurrentUris(), + 500 + ); + break; + default: + break; + } + }); + }); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async addUri() { + this.excludedDomains.push({ uri: "", showCurrentUris: false }); + } + + async removeUri(i: number) { + this.excludedDomains.splice(i, 1); + } + + async submit() { + const savedDomains: { [name: string]: null } = {}; + for (const domain of this.excludedDomains) { + if (domain.uri && domain.uri !== "") { + const validDomain = Utils.getHostname(domain.uri); + if (!validDomain) { + this.platformUtilsService.showToast( + "error", + null, + this.i18nService.t("excludedDomainsInvalidDomain", domain.uri) + ); + return; + } + savedDomains[validDomain] = null; + } + } + await this.stateService.setNeverDomains(savedDomains); + this.router.navigate(["/tabs/settings"]); + } + + trackByFunction(index: number, item: any) { + return index; + } + + toggleUriInput(domain: ExcludedDomain) { + domain.showCurrentUris = !domain.showCurrentUris; + } + + async loadCurrentUris() { + const tabs = await BrowserApi.tabsQuery({ windowType: "normal" }); + if (tabs) { + const uriSet = new Set(tabs.map((tab) => Utils.getHostname(tab.url))); + uriSet.delete(null); + this.currentUris = Array.from(uriSet); + } + } +} diff --git a/apps/browser/src/popup/settings/export.component.html b/apps/browser/src/popup/settings/export.component.html new file mode 100644 index 0000000000..ee74c4f7d9 --- /dev/null +++ b/apps/browser/src/popup/settings/export.component.html @@ -0,0 +1,40 @@ +
+
+ +

+ {{ "exportVault" | i18n }} +

+
+ +
+
+
+ + {{ "personalVaultExportPolicyInEffect" | i18n }} + + + +
+
+
+ + +
+ + +
+ +
+
+
diff --git a/apps/browser/src/popup/settings/export.component.ts b/apps/browser/src/popup/settings/export.component.ts new file mode 100644 index 0000000000..104f298e14 --- /dev/null +++ b/apps/browser/src/popup/settings/export.component.ts @@ -0,0 +1,50 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; +import { Router } from "@angular/router"; + +import { ExportComponent as BaseExportComponent } from "jslib-angular/components/export.component"; +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"; + +@Component({ + selector: "app-export", + templateUrl: "export.component.html", +}) +export class ExportComponent extends BaseExportComponent { + constructor( + cryptoService: CryptoService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + exportService: ExportService, + eventService: EventService, + policyService: PolicyService, + private router: Router, + logService: LogService, + userVerificationService: UserVerificationService, + formBuilder: FormBuilder + ) { + super( + cryptoService, + i18nService, + platformUtilsService, + exportService, + eventService, + policyService, + window, + logService, + userVerificationService, + formBuilder + ); + } + + protected saved() { + super.saved(); + this.router.navigate(["/tabs/settings"]); + } +} diff --git a/apps/browser/src/popup/settings/folder-add-edit.component.html b/apps/browser/src/popup/settings/folder-add-edit.component.html new file mode 100644 index 0000000000..3999f6fb88 --- /dev/null +++ b/apps/browser/src/popup/settings/folder-add-edit.component.html @@ -0,0 +1,53 @@ +
+
+ +

+ {{ title }} +

+
+ +
+
+
+
+
+
+ + +
+
+
+
+
+ +
+
+
+
diff --git a/apps/browser/src/popup/settings/folder-add-edit.component.ts b/apps/browser/src/popup/settings/folder-add-edit.component.ts new file mode 100644 index 0000000000..d00eefcb79 --- /dev/null +++ b/apps/browser/src/popup/settings/folder-add-edit.component.ts @@ -0,0 +1,52 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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, + private router: Router, + private route: ActivatedRoute, + logService: LogService + ) { + super(folderService, i18nService, platformUtilsService, logService); + } + + async ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (params) => { + if (params.folderId) { + this.folderId = params.folderId; + } + await this.init(); + }); + } + + async submit(): Promise { + if (await super.submit()) { + this.router.navigate(["/folders"]); + return true; + } + + return false; + } + + async delete(): Promise { + const confirmed = await super.delete(); + if (confirmed) { + this.router.navigate(["/folders"]); + } + return confirmed; + } +} diff --git a/apps/browser/src/popup/settings/folders.component.html b/apps/browser/src/popup/settings/folders.component.html new file mode 100644 index 0000000000..47b6f78a1d --- /dev/null +++ b/apps/browser/src/popup/settings/folders.component.html @@ -0,0 +1,39 @@ +
+ +

+ {{ "folders" | i18n }} +

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

{{ "noFolders" | i18n }}

+
+
diff --git a/apps/browser/src/popup/settings/folders.component.ts b/apps/browser/src/popup/settings/folders.component.ts new file mode 100644 index 0000000000..dd8e7566a5 --- /dev/null +++ b/apps/browser/src/popup/settings/folders.component.ts @@ -0,0 +1,31 @@ +import { Component, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { FolderView } from "jslib-common/models/view/folderView"; + +@Component({ + selector: "app-folders", + templateUrl: "folders.component.html", +}) +export class FoldersComponent implements OnInit { + folders: FolderView[]; + + constructor(private folderService: FolderService, private router: Router) {} + + async ngOnInit() { + this.folders = await this.folderService.getAllDecrypted(); + // Remove "No Folder" + if (this.folders.length > 0) { + this.folders = this.folders.slice(0, this.folders.length - 1); + } + } + + folderSelected(folder: FolderView) { + this.router.navigate(["/edit-folder"], { queryParams: { folderId: folder.id } }); + } + + addFolder() { + this.router.navigate(["/add-folder"]); + } +} diff --git a/apps/browser/src/popup/settings/options.component.html b/apps/browser/src/popup/settings/options.component.html new file mode 100644 index 0000000000..4281c97e52 --- /dev/null +++ b/apps/browser/src/popup/settings/options.component.html @@ -0,0 +1,258 @@ +
+ +

+ {{ "options" | i18n }} +

+
+
+
+
+

+ +

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

+ +

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

+ +

+
+ +
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+
diff --git a/apps/browser/src/popup/settings/options.component.ts b/apps/browser/src/popup/settings/options.component.ts new file mode 100644 index 0000000000..8c3ea8cdc4 --- /dev/null +++ b/apps/browser/src/popup/settings/options.component.ts @@ -0,0 +1,159 @@ +import { Component, OnInit } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { ThemeType } from "jslib-common/enums/themeType"; +import { UriMatchType } from "jslib-common/enums/uriMatchType"; + +@Component({ + selector: "app-options", + templateUrl: "options.component.html", +}) +export class OptionsComponent implements OnInit { + disableFavicon = false; + disableBadgeCounter = false; + enableAutoFillOnPageLoad = false; + autoFillOnPageLoadDefault = false; + autoFillOnPageLoadOptions: any[]; + disableAutoTotpCopy = false; + disableContextMenuItem = false; + disableAddLoginNotification = false; + disableChangedPasswordNotification = false; + dontShowCards = false; + dontShowIdentities = false; + showClearClipboard = true; + theme: ThemeType; + themeOptions: any[]; + defaultUriMatch = UriMatchType.Domain; + uriMatchOptions: any[]; + clearClipboard: number; + clearClipboardOptions: any[]; + showGeneral = true; + showAutofill = true; + showDisplay = true; + + constructor( + private messagingService: MessagingService, + private stateService: StateService, + private totpService: TotpService, + i18nService: I18nService + ) { + 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 }, + { name: i18nService.t("solarizedDark"), value: ThemeType.SolarizedDark }, + ]; + this.uriMatchOptions = [ + { name: i18nService.t("baseDomain"), value: UriMatchType.Domain }, + { name: i18nService.t("host"), value: UriMatchType.Host }, + { name: i18nService.t("startsWith"), value: UriMatchType.StartsWith }, + { name: i18nService.t("regEx"), value: UriMatchType.RegularExpression }, + { name: i18nService.t("exact"), value: UriMatchType.Exact }, + { name: i18nService.t("never"), value: UriMatchType.Never }, + ]; + 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 }, + ]; + this.autoFillOnPageLoadOptions = [ + { name: i18nService.t("autoFillOnPageLoadYes"), value: true }, + { name: i18nService.t("autoFillOnPageLoadNo"), value: false }, + ]; + } + + async ngOnInit() { + this.enableAutoFillOnPageLoad = await this.stateService.getEnableAutoFillOnPageLoad(); + + this.autoFillOnPageLoadDefault = + (await this.stateService.getAutoFillOnPageLoadDefault()) ?? true; + + this.disableAddLoginNotification = await this.stateService.getDisableAddLoginNotification(); + + this.disableChangedPasswordNotification = + await this.stateService.getDisableChangedPasswordNotification(); + + this.disableContextMenuItem = await this.stateService.getDisableContextMenuItem(); + + this.dontShowCards = await this.stateService.getDontShowCardsCurrentTab(); + this.dontShowIdentities = await this.stateService.getDontShowIdentitiesCurrentTab(); + + this.disableAutoTotpCopy = !(await this.totpService.isAutoCopyEnabled()); + + this.disableFavicon = await this.stateService.getDisableFavicon(); + + this.disableBadgeCounter = await this.stateService.getDisableBadgeCounter(); + + this.theme = await this.stateService.getTheme(); + + const defaultUriMatch = await this.stateService.getDefaultUriMatch(); + this.defaultUriMatch = defaultUriMatch == null ? UriMatchType.Domain : defaultUriMatch; + + this.clearClipboard = await this.stateService.getClearClipboard(); + } + + async updateAddLoginNotification() { + await this.stateService.setDisableAddLoginNotification(this.disableAddLoginNotification); + } + + async updateChangedPasswordNotification() { + await this.stateService.setDisableChangedPasswordNotification( + this.disableChangedPasswordNotification + ); + } + + async updateDisableContextMenuItem() { + await this.stateService.setDisableContextMenuItem(this.disableContextMenuItem); + this.messagingService.send("bgUpdateContextMenu"); + } + + async updateAutoTotpCopy() { + await this.stateService.setDisableAutoTotpCopy(this.disableAutoTotpCopy); + } + + async updateAutoFillOnPageLoad() { + await this.stateService.setEnableAutoFillOnPageLoad(this.enableAutoFillOnPageLoad); + } + + async updateAutoFillOnPageLoadDefault() { + await this.stateService.setAutoFillOnPageLoadDefault(this.autoFillOnPageLoadDefault); + } + + async updateDisableFavicon() { + await this.stateService.setDisableFavicon(this.disableFavicon); + } + + async updateDisableBadgeCounter() { + await this.stateService.setDisableBadgeCounter(this.disableBadgeCounter); + this.messagingService.send("bgUpdateContextMenu"); + } + + async updateShowCards() { + await this.stateService.setDontShowCardsCurrentTab(this.dontShowCards); + } + + async updateShowIdentities() { + await this.stateService.setDontShowIdentitiesCurrentTab(this.dontShowIdentities); + } + + async saveTheme() { + await this.stateService.setTheme(this.theme); + window.setTimeout(() => window.location.reload(), 200); + } + + async saveDefaultUriMatch() { + await this.stateService.setDefaultUriMatch(this.defaultUriMatch); + } + + async saveClearClipboard() { + await this.stateService.setClearClipboard(this.clearClipboard); + } +} diff --git a/apps/browser/src/popup/settings/premium.component.html b/apps/browser/src/popup/settings/premium.component.html new file mode 100644 index 0000000000..a12fd370d2 --- /dev/null +++ b/apps/browser/src/popup/settings/premium.component.html @@ -0,0 +1,73 @@ +
+ +

+ {{ "premiumMembership" | i18n }} +

+
+
+
+
+ +

{{ "premiumNotCurrentMember" | i18n }}

+

{{ "premiumSignUpAndGet" | i18n }}

+
    +
  • + + {{ "ppremiumSignUpStorage" | i18n }} +
  • +
  • + + {{ "ppremiumSignUpTwoStep" | i18n }} +
  • +
  • + + {{ "ppremiumSignUpReports" | i18n }} +
  • +
  • + + {{ "ppremiumSignUpTotp" | i18n }} +
  • +
  • + + {{ "ppremiumSignUpSupport" | i18n }} +
  • +
  • + + {{ "ppremiumSignUpFuture" | i18n }} +
  • +
+

{{ priceString }}

+ + +
+ +

{{ "premiumCurrentMember" | i18n }}

+

{{ "premiumCurrentMemberThanks" | i18n }}

+ +
+
+
diff --git a/apps/browser/src/popup/settings/premium.component.ts b/apps/browser/src/popup/settings/premium.component.ts new file mode 100644 index 0000000000..040d872130 --- /dev/null +++ b/apps/browser/src/popup/settings/premium.component.ts @@ -0,0 +1,35 @@ +import { CurrencyPipe } from "@angular/common"; +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 { + priceString: string; + + constructor( + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + stateService: StateService, + logService: LogService, + private currencyPipe: CurrencyPipe + ) { + super(i18nService, platformUtilsService, apiService, logService, stateService); + + // Support old price string. Can be removed in future once all translations are properly updated. + const thePrice = this.currencyPipe.transform(this.price, "$"); + this.priceString = i18nService.t("premiumPrice", thePrice); + if (this.priceString.indexOf("%price%") > -1) { + this.priceString = this.priceString.replace("%price%", thePrice); + } + } +} diff --git a/apps/browser/src/popup/settings/settings.component.html b/apps/browser/src/popup/settings/settings.component.html new file mode 100644 index 0000000000..3f441835c5 --- /dev/null +++ b/apps/browser/src/popup/settings/settings.component.html @@ -0,0 +1,226 @@ +
+
+ +
+

+ {{ "settings" | i18n }} +

+
+
+
+ +
+

{{ "security" | i18n }}

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

{{ "account" | i18n }}

+
+ +
+
+ +
+ {{ "premiumMembership" | i18n }} +
+ +
+ + + +
+
+
+

{{ "tools" | i18n }}

+
+ + + +
+
+
+

{{ "other" | i18n }}

+
+ +
{{ "options" | i18n }}
+ +
+ + + + +
+ +
+
diff --git a/apps/browser/src/popup/settings/settings.component.ts b/apps/browser/src/popup/settings/settings.component.ts new file mode 100644 index 0000000000..a616b39a41 --- /dev/null +++ b/apps/browser/src/popup/settings/settings.component.ts @@ -0,0 +1,420 @@ +import { Component, ElementRef, OnInit, ViewChild } from "@angular/core"; +import { FormControl } from "@angular/forms"; +import { Router } from "@angular/router"; +import Swal from "sweetalert2"; + +import { ModalService } from "jslib-angular/services/modal.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 { 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 { BrowserApi } from "../../browser/browserApi"; +import { BiometricErrors, BiometricErrorTypes } from "../../models/biometricErrors"; +import { SetPinComponent } from "../components/set-pin.component"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const RateUrls = { + [DeviceType.ChromeExtension]: + "https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb/reviews", + [DeviceType.FirefoxExtension]: + "https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/#reviews", + [DeviceType.OperaExtension]: + "https://addons.opera.com/en/extensions/details/bitwarden-free-password-manager/#feedback-container", + [DeviceType.EdgeExtension]: + "https://microsoftedge.microsoft.com/addons/detail/jbkfoedolllekgbhcbcoahefnbanhhlh", + [DeviceType.VivaldiExtension]: + "https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb/reviews", + [DeviceType.SafariExtension]: "https://apps.apple.com/app/bitwarden/id1352778147", +}; + +@Component({ + selector: "app-settings", + templateUrl: "settings.component.html", +}) +export class SettingsComponent implements OnInit { + @ViewChild("vaultTimeoutActionSelect", { read: ElementRef, static: true }) + vaultTimeoutActionSelectRef: ElementRef; + vaultTimeouts: any[]; + vaultTimeoutActions: any[]; + vaultTimeoutAction: string; + pin: boolean = null; + supportsBiometric: boolean; + biometric = false; + disableAutoBiometricsPrompt = true; + previousVaultTimeout: number = null; + showChangeMasterPass = true; + + vaultTimeout: FormControl = new FormControl(null); + + constructor( + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private vaultTimeoutService: VaultTimeoutService, + public messagingService: MessagingService, + private router: Router, + private environmentService: EnvironmentService, + private cryptoService: CryptoService, + private stateService: StateService, + private popupUtilsService: PopupUtilsService, + private modalService: ModalService, + private keyConnectorService: KeyConnectorService + ) {} + + async ngOnInit() { + const showOnLocked = + !this.platformUtilsService.isFirefox() && !this.platformUtilsService.isSafari(); + + this.vaultTimeouts = [ + { name: this.i18nService.t("immediately"), value: 0 }, + { name: this.i18nService.t("oneMinute"), value: 1 }, + { name: this.i18nService.t("fiveMinutes"), value: 5 }, + { name: this.i18nService.t("fifteenMinutes"), value: 15 }, + { name: this.i18nService.t("thirtyMinutes"), value: 30 }, + { name: this.i18nService.t("oneHour"), value: 60 }, + { name: this.i18nService.t("fourHours"), value: 240 }, + // { name: i18nService.t('onIdle'), value: -4 }, + // { name: i18nService.t('onSleep'), value: -3 }, + ]; + + if (showOnLocked) { + this.vaultTimeouts.push({ name: this.i18nService.t("onLocked"), value: -2 }); + } + + this.vaultTimeouts.push({ name: this.i18nService.t("onRestart"), value: -1 }); + this.vaultTimeouts.push({ name: this.i18nService.t("never"), value: null }); + + this.vaultTimeoutActions = [ + { name: this.i18nService.t("lock"), value: "lock" }, + { name: this.i18nService.t("logOut"), value: "logOut" }, + ]; + + let timeout = await this.vaultTimeoutService.getVaultTimeout(); + if (timeout != null) { + if (timeout === -2 && !showOnLocked) { + timeout = -1; + } + this.vaultTimeout.setValue(timeout); + } + this.previousVaultTimeout = this.vaultTimeout.value; + this.vaultTimeout.valueChanges.subscribe(async (value) => { + await this.saveVaultTimeout(value); + }); + + const action = await this.stateService.getVaultTimeoutAction(); + this.vaultTimeoutAction = action == null ? "lock" : action; + + const pinSet = await this.vaultTimeoutService.isPinLockSet(); + this.pin = pinSet[0] || pinSet[1]; + + this.supportsBiometric = await this.platformUtilsService.supportsBiometric(); + this.biometric = await this.vaultTimeoutService.isBiometricLockSet(); + this.disableAutoBiometricsPrompt = + (await this.stateService.getDisableAutoBiometricsPrompt()) ?? true; + this.showChangeMasterPass = !(await this.keyConnectorService.getUsesKeyConnector()); + } + + async saveVaultTimeout(newValue: number) { + if (newValue == null) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("neverLockWarning"), + null, + this.i18nService.t("yes"), + this.i18nService.t("cancel"), + "warning" + ); + if (!confirmed) { + this.vaultTimeout.setValue(this.previousVaultTimeout); + return; + } + } + + if (!this.vaultTimeout.valid) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("vaultTimeoutToLarge")); + return; + } + + this.previousVaultTimeout = this.vaultTimeout.value; + + await this.vaultTimeoutService.setVaultTimeoutOptions( + this.vaultTimeout.value, + this.vaultTimeoutAction + ); + if (this.previousVaultTimeout == null) { + this.messagingService.send("bgReseedStorage"); + } + } + + async saveVaultTimeoutAction(newValue: string) { + if (newValue === "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.vaultTimeoutActions.forEach((option: any, i) => { + if (option.value === this.vaultTimeoutAction) { + this.vaultTimeoutActionSelectRef.nativeElement.value = + i + ": " + this.vaultTimeoutAction; + } + }); + return; + } + } + + if (!this.vaultTimeout.valid) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("vaultTimeoutToLarge")); + return; + } + + this.vaultTimeoutAction = newValue; + 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(); + } else { + await this.cryptoService.clearPinProtectedKey(); + await this.vaultTimeoutService.clear(); + } + } + + async updateBiometric() { + if (this.biometric && this.supportsBiometric) { + let granted; + try { + granted = await BrowserApi.requestPermission({ permissions: ["nativeMessaging"] }); + } catch (e) { + // eslint-disable-next-line + console.error(e); + + if (this.platformUtilsService.isFirefox() && this.popupUtilsService.inSidebar(window)) { + await this.platformUtilsService.showDialog( + this.i18nService.t("nativeMessaginPermissionSidebarDesc"), + this.i18nService.t("nativeMessaginPermissionSidebarTitle"), + this.i18nService.t("ok"), + null + ); + this.biometric = false; + return; + } + } + + if (!granted) { + await this.platformUtilsService.showDialog( + this.i18nService.t("nativeMessaginPermissionErrorDesc"), + this.i18nService.t("nativeMessaginPermissionErrorTitle"), + this.i18nService.t("ok"), + null + ); + this.biometric = false; + return; + } + + const submitted = Swal.fire({ + heightAuto: false, + buttonsStyling: false, + titleText: this.i18nService.t("awaitDesktop"), + text: this.i18nService.t("awaitDesktopDesc"), + icon: "info", + iconHtml: '', + showCancelButton: true, + cancelButtonText: this.i18nService.t("cancel"), + showConfirmButton: false, + allowOutsideClick: false, + }); + + await this.stateService.setBiometricAwaitingAcceptance(true); + await this.cryptoService.toggleKey(); + + await Promise.race([ + submitted.then(async (result) => { + if (result.dismiss === Swal.DismissReason.cancel) { + this.biometric = false; + await this.stateService.setBiometricAwaitingAcceptance(null); + } + }), + this.platformUtilsService + .authenticateBiometric() + .then((result) => { + this.biometric = result; + + Swal.close(); + if (this.biometric === false) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorEnableBiometricTitle"), + this.i18nService.t("errorEnableBiometricDesc") + ); + } + }) + .catch((e) => { + // Handle connection errors + this.biometric = false; + + const error = BiometricErrors[e as BiometricErrorTypes]; + + this.platformUtilsService.showDialog( + this.i18nService.t(error.description), + this.i18nService.t(error.title), + this.i18nService.t("ok"), + null, + "error" + ); + }), + ]); + } else { + await this.stateService.setBiometricUnlock(null); + await this.stateService.setBiometricLocked(false); + } + } + + async updateAutoBiometricsPrompt() { + await this.stateService.setDisableAutoBiometricsPrompt(this.disableAutoBiometricsPrompt); + } + + async lock() { + await this.vaultTimeoutService.lock(true); + } + + async logOut() { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("logOutConfirmation"), + this.i18nService.t("logOut"), + this.i18nService.t("yes"), + this.i18nService.t("cancel") + ); + if (confirmed) { + this.messagingService.send("logout"); + } + } + + async changePassword() { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("changeMasterPasswordConfirmation"), + this.i18nService.t("changeMasterPassword"), + this.i18nService.t("yes"), + this.i18nService.t("cancel") + ); + if (confirmed) { + BrowserApi.createNewTab( + "https://bitwarden.com/help/master-password/#change-your-master-password" + ); + } + } + + async twoStep() { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("twoStepLoginConfirmation"), + this.i18nService.t("twoStepLogin"), + this.i18nService.t("yes"), + this.i18nService.t("cancel") + ); + if (confirmed) { + BrowserApi.createNewTab("https://bitwarden.com/help/setup-two-step-login/"); + } + } + + async share() { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("learnOrgConfirmation"), + this.i18nService.t("learnOrg"), + this.i18nService.t("yes"), + this.i18nService.t("cancel") + ); + if (confirmed) { + BrowserApi.createNewTab("https://bitwarden.com/help/about-organizations/"); + } + } + + async webVault() { + const url = this.environmentService.getWebVaultUrl(); + BrowserApi.createNewTab(url); + } + + import() { + BrowserApi.createNewTab("https://bitwarden.com/help/import-data/"); + } + + export() { + this.router.navigate(["/export"]); + } + + help() { + BrowserApi.createNewTab("https://bitwarden.com/help/"); + } + + about() { + const year = new Date().getFullYear(); + const versionText = document.createTextNode( + this.i18nService.t("version") + ": " + BrowserApi.getApplicationVersion() + ); + const div = document.createElement("div"); + div.innerHTML = + `

+

Bitwarden
© Bitwarden Inc. 2015-` + + year + + `

`; + div.appendChild(versionText); + + Swal.fire({ + heightAuto: false, + buttonsStyling: false, + html: div, + showConfirmButton: false, + showCancelButton: true, + cancelButtonText: this.i18nService.t("close"), + }); + } + + async fingerprint() { + const fingerprint = await this.cryptoService.getFingerprint( + await this.stateService.getUserId() + ); + const p = document.createElement("p"); + p.innerText = this.i18nService.t("yourAccountsFingerprint") + ":"; + const p2 = document.createElement("p"); + p2.innerText = fingerprint.join("-"); + const div = document.createElement("div"); + div.appendChild(p); + div.appendChild(p2); + + const result = await Swal.fire({ + heightAuto: false, + buttonsStyling: false, + html: div, + showCancelButton: true, + cancelButtonText: this.i18nService.t("close"), + showConfirmButton: true, + confirmButtonText: this.i18nService.t("learnMore"), + }); + + if (result.value) { + this.platformUtilsService.launchUri("https://bitwarden.com/help/fingerprint-phrase/"); + } + } + + rate() { + const deviceType = this.platformUtilsService.getDevice(); + BrowserApi.createNewTab((RateUrls as any)[deviceType]); + } +} diff --git a/apps/browser/src/popup/settings/sync.component.html b/apps/browser/src/popup/settings/sync.component.html new file mode 100644 index 0000000000..74f1c0ea87 --- /dev/null +++ b/apps/browser/src/popup/settings/sync.component.html @@ -0,0 +1,28 @@ +
+ +

+ {{ "sync" | i18n }} +

+
+
+
+
+ +

{{ "lastSync" | i18n }} {{ lastSync }}

+
+
diff --git a/apps/browser/src/popup/settings/sync.component.ts b/apps/browser/src/popup/settings/sync.component.ts new file mode 100644 index 0000000000..c0f9ae7959 --- /dev/null +++ b/apps/browser/src/popup/settings/sync.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; + +@Component({ + selector: "app-sync", + templateUrl: "sync.component.html", +}) +export class SyncComponent implements OnInit { + lastSync = "--"; + syncPromise: Promise; + + constructor( + private syncService: SyncService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService + ) {} + + async ngOnInit() { + await this.setLastSync(); + } + + async sync() { + this.syncPromise = this.syncService.fullSync(true); + const success = await this.syncPromise; + if (success) { + await this.setLastSync(); + this.platformUtilsService.showToast("success", null, this.i18nService.t("syncingComplete")); + } else { + this.platformUtilsService.showToast("error", null, this.i18nService.t("syncingFailed")); + } + } + + async setLastSync() { + const last = await this.syncService.getLastSync(); + if (last != null) { + this.lastSync = last.toLocaleDateString() + " " + last.toLocaleTimeString(); + } else { + this.lastSync = this.i18nService.t("never"); + } + } +} diff --git a/apps/browser/src/popup/settings/vault-timeout-input.component.html b/apps/browser/src/popup/settings/vault-timeout-input.component.html new file mode 100644 index 0000000000..68b5665073 --- /dev/null +++ b/apps/browser/src/popup/settings/vault-timeout-input.component.html @@ -0,0 +1,48 @@ + + {{ "vaultTimeoutPolicyInEffect" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }} + + +
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
diff --git a/apps/browser/src/popup/settings/vault-timeout-input.component.ts b/apps/browser/src/popup/settings/vault-timeout-input.component.ts new file mode 100644 index 0000000000..8eb308b4c0 --- /dev/null +++ b/apps/browser/src/popup/settings/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/browser/src/popup/tabs.component.html b/apps/browser/src/popup/tabs.component.html new file mode 100644 index 0000000000..f64837cc73 --- /dev/null +++ b/apps/browser/src/popup/tabs.component.html @@ -0,0 +1,52 @@ +
+ + +
diff --git a/apps/browser/src/popup/tabs.component.ts b/apps/browser/src/popup/tabs.component.ts new file mode 100644 index 0000000000..856529a0a3 --- /dev/null +++ b/apps/browser/src/popup/tabs.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from "@angular/core"; + +import { PopupUtilsService } from "./services/popup-utils.service"; + +@Component({ + selector: "app-tabs", + templateUrl: "tabs.component.html", +}) +export class TabsComponent implements OnInit { + showCurrentTab = true; + + constructor(private popupUtilsService: PopupUtilsService) {} + + ngOnInit() { + this.showCurrentTab = !this.popupUtilsService.inPopout(window); + } +} diff --git a/apps/browser/src/popup/vault/add-edit-custom-fields.component.html b/apps/browser/src/popup/vault/add-edit-custom-fields.component.html new file mode 100644 index 0000000000..92b8bfe453 --- /dev/null +++ b/apps/browser/src/popup/vault/add-edit-custom-fields.component.html @@ -0,0 +1,121 @@ +
+

+ {{ "customFields" | i18n }} +

+
+ +
+
+ + + +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ +
+ + + +
+
+
diff --git a/apps/browser/src/popup/vault/add-edit-custom-fields.component.ts b/apps/browser/src/popup/vault/add-edit-custom-fields.component.ts new file mode 100644 index 0000000000..5ce773e014 --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/vault/add-edit.component.html b/apps/browser/src/popup/vault/add-edit.component.html new file mode 100644 index 0000000000..9876da114c --- /dev/null +++ b/apps/browser/src/popup/vault/add-edit.component.html @@ -0,0 +1,660 @@ +
+
+
+ +
+

+ {{ title }} +

+
+ +
+
+
+ + {{ "personalOwnershipPolicyInEffect" | i18n }} + +
+

+ {{ "itemInformation" | i18n }} +

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

+ +

+
+
+ +
+
+
+ + +
+

+ {{ "ownership" | i18n }} +

+
+
+ + +
+
+
+
+

+ {{ "collections" | i18n }} +

+
+
+ {{ "noCollectionsInList" | i18n }} +
+
+
+
+ + +
+
+
+
+
+ +
+
+
+
diff --git a/apps/browser/src/popup/vault/add-edit.component.ts b/apps/browser/src/popup/vault/add-edit.component.ts new file mode 100644 index 0000000000..d286b96875 --- /dev/null +++ b/apps/browser/src/popup/vault/add-edit.component.ts @@ -0,0 +1,236 @@ +import { Location } from "@angular/common"; +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/add-edit.component"; +import { AuditService } from "jslib-common/abstractions/audit.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"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { LoginUriView } from "jslib-common/models/view/loginUriView"; + +import { BrowserApi } from "../../browser/browserApi"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +@Component({ + selector: "app-vault-add-edit", + templateUrl: "add-edit.component.html", +}) +export class AddEditComponent extends BaseAddEditComponent { + currentUris: string[]; + showAttachments = true; + openAttachmentsInPopup: boolean; + showAutoFillOnPageLoadOptions: boolean; + + constructor( + cipherService: CipherService, + folderService: FolderService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + auditService: AuditService, + stateService: StateService, + collectionService: CollectionService, + messagingService: MessagingService, + private route: ActivatedRoute, + private router: Router, + private location: Location, + eventService: EventService, + policyService: PolicyService, + private popupUtilsService: PopupUtilsService, + organizationService: OrganizationService, + passwordRepromptService: PasswordRepromptService, + logService: LogService + ) { + super( + cipherService, + folderService, + i18nService, + platformUtilsService, + auditService, + stateService, + collectionService, + messagingService, + eventService, + policyService, + logService, + passwordRepromptService, + organizationService + ); + } + + async ngOnInit() { + await super.ngOnInit(); + + this.route.queryParams.pipe(first()).subscribe(async (params) => { + if (params.cipherId) { + this.cipherId = params.cipherId; + } + if (params.folderId) { + this.folderId = params.folderId; + } + if (params.collectionId) { + const collection = this.writeableCollections.find((c) => c.id === params.collectionId); + if (collection != null) { + this.collectionIds = [collection.id]; + this.organizationId = collection.organizationId; + } + } + if (params.type) { + const type = parseInt(params.type, null); + this.type = type; + } + this.editMode = !params.cipherId; + + if (params.cloneMode != null) { + this.cloneMode = params.cloneMode === "true"; + } + if (params.selectedVault) { + this.organizationId = params.selectedVault; + } + await this.load(); + + if (!this.editMode || this.cloneMode) { + if ( + !this.popupUtilsService.inPopout(window) && + params.name && + (this.cipher.name == null || this.cipher.name === "") + ) { + this.cipher.name = params.name; + } + if ( + !this.popupUtilsService.inPopout(window) && + params.uri && + (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === "") + ) { + this.cipher.login.uris[0].uri = params.uri; + } + } + + this.openAttachmentsInPopup = this.popupUtilsService.inPopup(window); + }); + + if (!this.editMode) { + const tabs = await BrowserApi.tabsQuery({ windowType: "normal" }); + this.currentUris = + tabs == null + ? null + : tabs.filter((tab) => tab.url != null && tab.url !== "").map((tab) => tab.url); + } + + window.setTimeout(() => { + if (!this.editMode) { + if (this.cipher.name != null && this.cipher.name !== "") { + document.getElementById("loginUsername").focus(); + } else { + document.getElementById("name").focus(); + } + } + }, 200); + } + + async load() { + await super.load(); + this.showAutoFillOnPageLoadOptions = + this.cipher.type === CipherType.Login && + (await this.stateService.getEnableAutoFillOnPageLoad()); + } + + async submit(): Promise { + if (await super.submit()) { + if (this.cloneMode) { + this.router.navigate(["/tabs/vault"]); + } else { + this.location.back(); + } + return true; + } + + return false; + } + + attachments() { + super.attachments(); + + if (this.openAttachmentsInPopup) { + const destinationUrl = this.router + .createUrlTree(["/attachments"], { queryParams: { cipherId: this.cipher.id } }) + .toString(); + const currentBaseUrl = window.location.href.replace(this.router.url, ""); + this.popupUtilsService.popOut(window, currentBaseUrl + destinationUrl); + } else { + this.router.navigate(["/attachments"], { queryParams: { cipherId: this.cipher.id } }); + } + } + + editCollections() { + super.editCollections(); + if (this.cipher.organizationId != null) { + this.router.navigate(["/collections"], { queryParams: { cipherId: this.cipher.id } }); + } + } + + cancel() { + super.cancel(); + this.location.back(); + } + + async generateUsername(): Promise { + const confirmed = await super.generateUsername(); + if (confirmed) { + await this.saveCipherState(); + this.router.navigate(["generator"], { queryParams: { type: "username" } }); + } + return confirmed; + } + + async generatePassword(): Promise { + const confirmed = await super.generatePassword(); + if (confirmed) { + await this.saveCipherState(); + this.router.navigate(["generator"], { queryParams: { type: "password" } }); + } + return confirmed; + } + + async delete(): Promise { + const confirmed = await super.delete(); + if (confirmed) { + this.router.navigate(["/tabs/vault"]); + } + return confirmed; + } + + toggleUriInput(uri: LoginUriView) { + const u = uri as any; + u.showCurrentUris = !u.showCurrentUris; + } + + allowOwnershipOptions(): boolean { + return ( + (!this.editMode || this.cloneMode) && + this.ownershipOptions && + (this.ownershipOptions.length > 1 || !this.allowPersonal) + ); + } + + private saveCipherState() { + return this.stateService.setAddEditCipherInfo({ + cipher: this.cipher, + collectionIds: + this.collections == null + ? [] + : this.collections.filter((c) => (c as any).checked).map((c) => c.id), + }); + } +} diff --git a/apps/browser/src/popup/vault/attachments.component.html b/apps/browser/src/popup/vault/attachments.component.html new file mode 100644 index 0000000000..4b687dc10b --- /dev/null +++ b/apps/browser/src/popup/vault/attachments.component.html @@ -0,0 +1,73 @@ +
+
+
+ + +
+

+ {{ "attachments" | i18n }} +

+
+ +
+
+
+
+
+
+
+ {{ a.fileName }} +
+ {{ a.sizeName }} +
+ +
+
+
+
+
+

+ {{ "newAttachment" | i18n }} +

+
+
+ + +
+
+ +
+
+
diff --git a/apps/browser/src/popup/vault/attachments.component.ts b/apps/browser/src/popup/vault/attachments.component.ts new file mode 100644 index 0000000000..bec18333c3 --- /dev/null +++ b/apps/browser/src/popup/vault/attachments.component.ts @@ -0,0 +1,61 @@ +import { Location } from "@angular/common"; +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { first } from "rxjs/operators"; + +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 { + openedAttachmentsInPopup: boolean; + + constructor( + cipherService: CipherService, + i18nService: I18nService, + cryptoService: CryptoService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + private location: Location, + private route: ActivatedRoute, + stateService: StateService, + logService: LogService + ) { + super( + cipherService, + i18nService, + cryptoService, + platformUtilsService, + apiService, + window, + logService, + stateService + ); + } + + async ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (params) => { + this.cipherId = params.cipherId; + await this.init(); + }); + + this.openedAttachmentsInPopup = history.length === 1; + } + + back() { + this.location.back(); + } + + close() { + window.close(); + } +} diff --git a/apps/browser/src/popup/vault/ciphers.component.html b/apps/browser/src/popup/vault/ciphers.component.html new file mode 100644 index 0000000000..d6b8756866 --- /dev/null +++ b/apps/browser/src/popup/vault/ciphers.component.html @@ -0,0 +1,124 @@ +
+
+ +
+

{{ "myVault" | i18n }}

+ +
+ +
+
+
+ + +
+

+ {{ "folders" | i18n }} +

+
+ +
+
+
+

+ {{ "collections" | i18n }} +

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

{{ "noItemsInList" | i18n }}

+ +
+
+
+ +
+

+ {{ groupingTitle }} + {{ isSearching() ? ciphers.length : ciphers.length }} +

+
+ +
+
+
+
+
diff --git a/apps/browser/src/popup/vault/ciphers.component.ts b/apps/browser/src/popup/vault/ciphers.component.ts new file mode 100644 index 0000000000..fd58a8e713 --- /dev/null +++ b/apps/browser/src/popup/vault/ciphers.component.ts @@ -0,0 +1,296 @@ +import { Location } from "@angular/common"; +import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { CiphersComponent as BaseCiphersComponent } from "jslib-angular/components/ciphers.component"; +import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; +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 { FolderService } from "jslib-common/abstractions/folder.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { TreeNode } from "jslib-common/models/domain/treeNode"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { CollectionView } from "jslib-common/models/view/collectionView"; +import { FolderView } from "jslib-common/models/view/folderView"; + +import { BrowserComponentState } from "src/models/browserComponentState"; + +import { BrowserApi } from "../../browser/browserApi"; +import { StateService } from "../../services/abstractions/state.service"; +import { VaultFilterService } from "../../services/vaultFilter.service"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const ComponentId = "CiphersComponent"; + +@Component({ + selector: "app-vault-ciphers", + templateUrl: "ciphers.component.html", +}) +export class CiphersComponent extends BaseCiphersComponent implements OnInit, OnDestroy { + groupingTitle: string; + state: BrowserComponentState; + folderId: string = null; + collectionId: string = null; + type: CipherType = null; + nestedFolders: TreeNode[]; + nestedCollections: TreeNode[]; + searchTypeSearch = false; + showOrganizations = false; + vaultFilter: VaultFilter; + deleted = true; + noneFolder = false; + showVaultFilter = false; + + private selectedTimeout: number; + private preventSelected = false; + private applySavedState = true; + private scrollingContainer = "cdk-virtual-scroll-viewport"; + + constructor( + searchService: SearchService, + private organizationService: OrganizationService, + private route: ActivatedRoute, + private router: Router, + private location: Location, + private ngZone: NgZone, + private broadcasterService: BroadcasterService, + private changeDetectorRef: ChangeDetectorRef, + private stateService: StateService, + private popupUtils: PopupUtilsService, + private i18nService: I18nService, + private folderService: FolderService, + private collectionService: CollectionService, + private platformUtilsService: PlatformUtilsService, + private cipherService: CipherService, + private vaultFilterService: VaultFilterService + ) { + super(searchService); + this.applySavedState = + (window as any).previousPopupUrl != null && + !(window as any).previousPopupUrl.startsWith("/ciphers"); + } + + async ngOnInit() { + this.searchTypeSearch = !this.platformUtilsService.isSafari(); + this.showOrganizations = await this.organizationService.hasOrganizations(); + this.vaultFilter = this.vaultFilterService.getVaultFilter(); + this.route.queryParams.pipe(first()).subscribe(async (params) => { + if (this.applySavedState) { + this.state = await this.stateService.getBrowserCipherComponentState(); + if (this.state?.searchText) { + this.searchText = this.state.searchText; + } + } + + if (params.deleted) { + this.showVaultFilter = true; + this.groupingTitle = this.i18nService.t("trash"); + this.searchPlaceholder = this.i18nService.t("searchTrash"); + await this.load(this.buildFilter(), true); + } else if (params.type) { + this.showVaultFilter = true; + this.searchPlaceholder = this.i18nService.t("searchType"); + this.type = parseInt(params.type, null); + switch (this.type) { + case CipherType.Login: + this.groupingTitle = this.i18nService.t("logins"); + break; + case CipherType.Card: + this.groupingTitle = this.i18nService.t("cards"); + break; + case CipherType.Identity: + this.groupingTitle = this.i18nService.t("identities"); + break; + case CipherType.SecureNote: + this.groupingTitle = this.i18nService.t("secureNotes"); + break; + default: + break; + } + await this.load(this.buildFilter()); + } else if (params.folderId) { + this.showVaultFilter = true; + this.folderId = params.folderId === "none" ? null : params.folderId; + this.searchPlaceholder = this.i18nService.t("searchFolder"); + if (this.folderId != null) { + this.showOrganizations = false; + const folderNode = await this.folderService.getNested(this.folderId); + if (folderNode != null && folderNode.node != null) { + this.groupingTitle = folderNode.node.name; + this.nestedFolders = + folderNode.children != null && folderNode.children.length > 0 + ? folderNode.children + : null; + } + } else { + this.noneFolder = true; + this.groupingTitle = this.i18nService.t("noneFolder"); + } + await this.load(this.buildFilter()); + } else if (params.collectionId) { + this.showVaultFilter = false; + this.collectionId = params.collectionId; + this.searchPlaceholder = this.i18nService.t("searchCollection"); + const collectionNode = await this.collectionService.getNested(this.collectionId); + if (collectionNode != null && collectionNode.node != null) { + this.groupingTitle = collectionNode.node.name; + this.nestedCollections = + collectionNode.children != null && collectionNode.children.length > 0 + ? collectionNode.children + : null; + } + await this.load( + (c) => c.collectionIds != null && c.collectionIds.indexOf(this.collectionId) > -1 + ); + } else { + this.showVaultFilter = true; + this.groupingTitle = this.i18nService.t("allItems"); + await this.load(this.buildFilter()); + } + + if (this.applySavedState && this.state != null) { + window.setTimeout( + () => + this.popupUtils.setContentScrollY(window, this.state.scrollY, this.scrollingContainer), + 0 + ); + } + await this.stateService.setBrowserCipherComponentState(null); + }); + + this.broadcasterService.subscribe(ComponentId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + if (message.successfully) { + window.setTimeout(() => { + this.refresh(); + }, 500); + } + break; + default: + break; + } + + this.changeDetectorRef.detectChanges(); + }); + }); + } + + ngOnDestroy() { + this.saveState(); + this.broadcasterService.unsubscribe(ComponentId); + } + + selectCipher(cipher: CipherView) { + this.selectedTimeout = window.setTimeout(() => { + if (!this.preventSelected) { + super.selectCipher(cipher); + this.router.navigate(["/view-cipher"], { queryParams: { cipherId: cipher.id } }); + } + this.preventSelected = false; + }, 200); + } + + selectFolder(folder: FolderView) { + if (folder.id != null) { + this.router.navigate(["/ciphers"], { queryParams: { folderId: folder.id } }); + } + } + + selectCollection(collection: CollectionView) { + this.router.navigate(["/ciphers"], { queryParams: { collectionId: collection.id } }); + } + + async launchCipher(cipher: CipherView) { + if (cipher.type !== CipherType.Login || !cipher.login.canLaunch) { + return; + } + + if (this.selectedTimeout != null) { + window.clearTimeout(this.selectedTimeout); + } + this.preventSelected = true; + await this.cipherService.updateLastLaunchedDate(cipher.id); + BrowserApi.createNewTab(cipher.login.launchUri); + if (this.popupUtils.inPopup(window)) { + BrowserApi.closePopup(window); + } + } + + addCipher() { + if (this.deleted) { + return false; + } + super.addCipher(); + this.router.navigate(["/add-cipher"], { + queryParams: { + folderId: this.folderId, + type: this.type, + collectionId: this.collectionId, + selectedVault: this.vaultFilter.selectedOrganizationId, + }, + }); + } + + back() { + (window as any).routeDirection = "b"; + this.location.back(); + } + + showGroupings() { + return ( + !this.isSearching() && + ((this.nestedFolders && this.nestedFolders.length) || + (this.nestedCollections && this.nestedCollections.length)) + ); + } + + async changeVaultSelection() { + this.vaultFilter = this.vaultFilterService.getVaultFilter(); + await this.load(this.buildFilter(), this.deleted); + } + + private buildFilter(): (cipher: CipherView) => boolean { + return (cipher) => { + let cipherPassesFilter = true; + if (this.deleted && cipherPassesFilter) { + cipherPassesFilter = cipher.isDeleted; + } + if (this.type != null && cipherPassesFilter) { + cipherPassesFilter = cipher.type === this.type; + } + if (this.folderId != null && this.folderId != "none" && cipherPassesFilter) { + cipherPassesFilter = cipher.folderId === this.folderId; + } + if (this.noneFolder) { + cipherPassesFilter = cipher.folderId == null; + } + if (this.collectionId != null && cipherPassesFilter) { + cipherPassesFilter = + cipher.collectionIds != null && cipher.collectionIds.indexOf(this.collectionId) > -1; + } + if (this.vaultFilter.selectedOrganizationId != null && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === this.vaultFilter.selectedOrganizationId; + } + if (this.vaultFilter.myVaultOnly && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === null; + } + return cipherPassesFilter; + }; + } + + private async saveState() { + this.state = { + scrollY: this.popupUtils.getContentScrollY(window, this.scrollingContainer), + searchText: this.searchText, + }; + await this.stateService.setBrowserCipherComponentState(this.state); + } +} diff --git a/apps/browser/src/popup/vault/collections.component.html b/apps/browser/src/popup/vault/collections.component.html new file mode 100644 index 0000000000..35d7b08261 --- /dev/null +++ b/apps/browser/src/popup/vault/collections.component.html @@ -0,0 +1,43 @@ +
+
+
+ +
+

+ {{ "collections" | i18n }} +

+
+ +
+
+
+
+
+
+ {{ "noCollectionsInList" | i18n }} +
+
+
+
+ + +
+
+
+
+
diff --git a/apps/browser/src/popup/vault/collections.component.ts b/apps/browser/src/popup/vault/collections.component.ts new file mode 100644 index 0000000000..ea01e3f061 --- /dev/null +++ b/apps/browser/src/popup/vault/collections.component.ts @@ -0,0 +1,43 @@ +import { Location } from "@angular/common"; +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { first } from "rxjs/operators"; + +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( + collectionService: CollectionService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + cipherService: CipherService, + private route: ActivatedRoute, + private location: Location, + logService: LogService + ) { + super(collectionService, platformUtilsService, i18nService, cipherService, logService); + } + + async ngOnInit() { + this.onSavedCollections.subscribe(() => { + this.back(); + }); + this.route.queryParams.pipe(first()).subscribe(async (params) => { + this.cipherId = params.cipherId; + await this.load(); + }); + } + + back() { + this.location.back(); + } +} diff --git a/apps/browser/src/popup/vault/current-tab.component.html b/apps/browser/src/popup/vault/current-tab.component.html new file mode 100644 index 0000000000..f4cfd9f4bc --- /dev/null +++ b/apps/browser/src/popup/vault/current-tab.component.html @@ -0,0 +1,95 @@ +
+

{{ "currentTab" | i18n }}

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

+ {{ "typeLogins" | i18n }} + {{ loginCiphers.length }} +

+
+ + +
+

{{ "autoFillInfo" | i18n }}

+ +
+
+
+
+

+ {{ "cards" | i18n }} + {{ cardCiphers.length }} +

+
+ +
+
+
+

+ {{ "identities" | i18n }} + {{ identityCiphers.length }} +

+
+ +
+
+
+
diff --git a/apps/browser/src/popup/vault/current-tab.component.ts b/apps/browser/src/popup/vault/current-tab.component.ts new file mode 100644 index 0000000000..726a291689 --- /dev/null +++ b/apps/browser/src/popup/vault/current-tab.component.ts @@ -0,0 +1,259 @@ +import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { I18nService } from "jslib-common/abstractions/i18n.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 { SearchService } from "jslib-common/abstractions/search.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { Utils } from "jslib-common/misc/utils"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { BrowserApi } from "../../browser/browserApi"; +import { AutofillService } from "../../services/abstractions/autofill.service"; +import { VaultFilterService } from "../../services/vaultFilter.service"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const BroadcasterSubscriptionId = "CurrentTabComponent"; + +@Component({ + selector: "app-current-tab", + templateUrl: "current-tab.component.html", +}) +export class CurrentTabComponent implements OnInit, OnDestroy { + pageDetails: any[] = []; + cardCiphers: CipherView[]; + identityCiphers: CipherView[]; + loginCiphers: CipherView[]; + url: string; + hostname: string; + searchText: string; + inSidebar = false; + searchTypeSearch = false; + loaded = false; + showOrganizations = false; + + private totpCode: string; + private totpTimeout: number; + private loadedTimeout: number; + private searchTimeout: number; + + constructor( + private platformUtilsService: PlatformUtilsService, + private cipherService: CipherService, + private popupUtilsService: PopupUtilsService, + private autofillService: AutofillService, + private i18nService: I18nService, + private router: Router, + private ngZone: NgZone, + private broadcasterService: BroadcasterService, + private changeDetectorRef: ChangeDetectorRef, + private syncService: SyncService, + private searchService: SearchService, + private stateService: StateService, + private passwordRepromptService: PasswordRepromptService, + private organizationService: OrganizationService, + private vaultFilterService: VaultFilterService + ) {} + + async ngOnInit() { + this.searchTypeSearch = !this.platformUtilsService.isSafari(); + this.inSidebar = this.popupUtilsService.inSidebar(window); + + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + if (this.loaded) { + window.setTimeout(() => { + this.load(); + }, 500); + } + break; + case "collectPageDetailsResponse": + if (message.sender === BroadcasterSubscriptionId) { + this.pageDetails.push({ + frameId: message.webExtSender.frameId, + tab: message.tab, + details: message.details, + }); + } + break; + default: + break; + } + + this.changeDetectorRef.detectChanges(); + }); + }); + + if (!this.syncService.syncInProgress) { + await this.load(); + } else { + this.loadedTimeout = window.setTimeout(async () => { + if (!this.loaded) { + await this.load(); + } + }, 5000); + } + + window.setTimeout(() => { + document.getElementById("search").focus(); + }, 100); + } + + ngOnDestroy() { + window.clearTimeout(this.loadedTimeout); + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async refresh() { + await this.load(); + } + + addCipher() { + this.router.navigate(["/add-cipher"], { + queryParams: { + name: this.hostname, + uri: this.url, + selectedVault: this.vaultFilterService.getVaultFilter().selectedOrganizationId, + }, + }); + } + + viewCipher(cipher: CipherView) { + this.router.navigate(["/view-cipher"], { queryParams: { cipherId: cipher.id } }); + } + + async fillCipher(cipher: CipherView) { + if ( + cipher.reprompt !== CipherRepromptType.None && + !(await this.passwordRepromptService.showPasswordPrompt()) + ) { + return; + } + + this.totpCode = null; + if (this.totpTimeout != null) { + window.clearTimeout(this.totpTimeout); + } + + if (this.pageDetails == null || this.pageDetails.length === 0) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("autofillError")); + return; + } + + try { + this.totpCode = await this.autofillService.doAutoFill({ + cipher: cipher, + pageDetails: this.pageDetails, + doc: window.document, + fillNewPassword: true, + }); + if (this.totpCode != null) { + this.platformUtilsService.copyToClipboard(this.totpCode, { window: window }); + } + if (this.popupUtilsService.inPopup(window)) { + if (this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari()) { + BrowserApi.closePopup(window); + } else { + // Slight delay to fix bug in Chromium browsers where popup closes without copying totp to clipboard + setTimeout(() => BrowserApi.closePopup(window), 50); + } + } + } catch { + this.ngZone.run(() => { + this.platformUtilsService.showToast("error", null, this.i18nService.t("autofillError")); + this.changeDetectorRef.detectChanges(); + }); + } + } + + searchVault() { + if (this.searchTimeout != null) { + clearTimeout(this.searchTimeout); + } + if (!this.searchService.isSearchable(this.searchText)) { + return; + } + this.searchTimeout = window.setTimeout(async () => { + this.router.navigate(["/tabs/vault"], { queryParams: { searchText: this.searchText } }); + }, 200); + } + + closeOnEsc(e: KeyboardEvent) { + // If input not empty, use browser default behavior of clearing input instead + if (e.key === "Escape" && (this.searchText == null || this.searchText === "")) { + BrowserApi.closePopup(window); + } + } + + private async load() { + this.loaded = false; + const tab = await BrowserApi.getTabFromCurrentWindow(); + if (tab != null) { + this.url = tab.url; + } else { + this.loginCiphers = []; + this.loaded = true; + return; + } + + this.hostname = Utils.getHostname(this.url); + this.pageDetails = []; + BrowserApi.tabSendMessage(tab, { + command: "collectPageDetails", + tab: tab, + sender: BroadcasterSubscriptionId, + }); + + const otherTypes: CipherType[] = []; + const dontShowCards = await this.stateService.getDontShowCardsCurrentTab(); + const dontShowIdentities = await this.stateService.getDontShowIdentitiesCurrentTab(); + this.showOrganizations = await this.organizationService.hasOrganizations(); + if (!dontShowCards) { + otherTypes.push(CipherType.Card); + } + if (!dontShowIdentities) { + otherTypes.push(CipherType.Identity); + } + + const ciphers = await this.cipherService.getAllDecryptedForUrl( + this.url, + otherTypes.length > 0 ? otherTypes : null + ); + + this.loginCiphers = []; + this.cardCiphers = []; + this.identityCiphers = []; + + ciphers.forEach((c) => { + if (!this.vaultFilterService.filterCipherForSelectedVault(c)) { + switch (c.type) { + case CipherType.Login: + this.loginCiphers.push(c); + break; + case CipherType.Card: + this.cardCiphers.push(c); + break; + case CipherType.Identity: + this.identityCiphers.push(c); + break; + default: + break; + } + } + }); + + this.loginCiphers = this.loginCiphers.sort((a, b) => + this.cipherService.sortCiphersByLastUsedThenName(a, b) + ); + this.loaded = true; + } +} diff --git a/apps/browser/src/popup/vault/password-history.component.html b/apps/browser/src/popup/vault/password-history.component.html new file mode 100644 index 0000000000..009b7089ba --- /dev/null +++ b/apps/browser/src/popup/vault/password-history.component.html @@ -0,0 +1,39 @@ +
+
+ +
+

+ {{ "passwordHistory" | i18n }} +

+
+
+
+
+
+
+
+
+ + {{ h.password }} + + {{ h.lastUsedDate | date: "medium" }} +
+
+
+ +
+
+
+
+
+

{{ "noPasswordsInList" | i18n }}

+
+
diff --git a/apps/browser/src/popup/vault/password-history.component.ts b/apps/browser/src/popup/vault/password-history.component.ts new file mode 100644 index 0000000000..96e3a6c2d1 --- /dev/null +++ b/apps/browser/src/popup/vault/password-history.component.ts @@ -0,0 +1,40 @@ +import { Location } from "@angular/common"; +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { first } from "rxjs/operators"; + +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, + private location: Location, + private route: ActivatedRoute + ) { + super(cipherService, platformUtilsService, i18nService, window); + } + + async ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (params) => { + if (params.cipherId) { + this.cipherId = params.cipherId; + } else { + this.close(); + } + await this.init(); + }); + } + + close() { + this.location.back(); + } +} diff --git a/apps/browser/src/popup/vault/share.component.html b/apps/browser/src/popup/vault/share.component.html new file mode 100644 index 0000000000..7e6d6e38af --- /dev/null +++ b/apps/browser/src/popup/vault/share.component.html @@ -0,0 +1,71 @@ +
+
+
+ +
+

+ {{ "moveToOrganization" | i18n }} +

+
+ +
+
+
+
+
+
+ {{ "noOrganizationsList" | i18n }} +
+
+
+
+ + +
+
+ +
+
+

+ {{ "collections" | i18n }} +

+
+
+ {{ "noCollectionsInList" | i18n }} +
+
+
+
+ + +
+
+
+
+
diff --git a/apps/browser/src/popup/vault/share.component.ts b/apps/browser/src/popup/vault/share.component.ts new file mode 100644 index 0000000000..edd53225be --- /dev/null +++ b/apps/browser/src/popup/vault/share.component.ts @@ -0,0 +1,62 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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( + collectionService: CollectionService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + logService: LogService, + cipherService: CipherService, + private route: ActivatedRoute, + private router: Router, + organizationService: OrganizationService + ) { + super( + collectionService, + platformUtilsService, + i18nService, + cipherService, + logService, + organizationService + ); + } + + async ngOnInit() { + this.onSharedCipher.subscribe(() => { + this.router.navigate(["view-cipher", { cipherId: this.cipherId }]); + }); + this.route.queryParams.pipe(first()).subscribe(async (params) => { + this.cipherId = params.cipherId; + await this.load(); + }); + } + + async submit(): Promise { + const success = await super.submit(); + if (success) { + this.cancel(); + } + return success; + } + + cancel() { + this.router.navigate(["/view-cipher"], { + replaceUrl: true, + queryParams: { cipherId: this.cipher.id }, + }); + } +} diff --git a/apps/browser/src/popup/vault/vault-filter.component.html b/apps/browser/src/popup/vault/vault-filter.component.html new file mode 100644 index 0000000000..4c2ce65f42 --- /dev/null +++ b/apps/browser/src/popup/vault/vault-filter.component.html @@ -0,0 +1,231 @@ +
+
+ +
+

{{ "myVault" | i18n }}

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

{{ "noItemsInList" | i18n }}

+ +
+
+ +
+

+ {{ "favorites" | i18n }} + {{ favoriteCiphers.length }} +

+
+ + +
+
+
+

+ {{ "types" | i18n }} + 4 +

+
+ + + + +
+
+
+

+ {{ "folders" | i18n }} + {{ folderCount }} +

+
+ +
+
+
+

+ {{ "collections" | i18n }} + {{ nestedCollections.length }} +

+
+ +
+
+
+

+ {{ "noneFolder" | i18n }} +
{{ noFolderCiphers.length }}
+

+
+ + +
+
+
+

+ {{ "trash" | i18n }} + {{ deletedCount }} +

+
+ +
+
+
+ +
+

{{ "noItemsInList" | i18n }}

+
+ +
+
+ + +
+
+
+
+
diff --git a/apps/browser/src/popup/vault/vault-filter.component.ts b/apps/browser/src/popup/vault/vault-filter.component.ts new file mode 100644 index 0000000000..9c663d8a91 --- /dev/null +++ b/apps/browser/src/popup/vault/vault-filter.component.ts @@ -0,0 +1,425 @@ +import { Location } from "@angular/common"; +import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { TreeNode } from "jslib-common/models/domain/treeNode"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { CollectionView } from "jslib-common/models/view/collectionView"; +import { FolderView } from "jslib-common/models/view/folderView"; + +import { BrowserGroupingsComponentState } from "src/models/browserGroupingsComponentState"; + +import { BrowserApi } from "../../browser/browserApi"; +import { StateService } from "../../services/abstractions/state.service"; +import { VaultFilterService } from "../../services/vaultFilter.service"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const ComponentId = "VaultComponent"; + +@Component({ + selector: "app-vault-filter", + templateUrl: "vault-filter.component.html", +}) +export class VaultFilterComponent implements OnInit, OnDestroy { + get showNoFolderCiphers(): boolean { + return ( + this.noFolderCiphers != null && + this.noFolderCiphers.length < this.noFolderListSize && + this.collections.length === 0 + ); + } + + get folderCount(): number { + return this.nestedFolders.length - (this.showNoFolderCiphers ? 0 : 1); + } + folders: FolderView[]; + nestedFolders: TreeNode[]; + collections: CollectionView[]; + nestedCollections: TreeNode[]; + loaded = false; + cipherType = CipherType; + ciphers: CipherView[]; + favoriteCiphers: CipherView[]; + noFolderCiphers: CipherView[]; + folderCounts = new Map(); + collectionCounts = new Map(); + typeCounts = new Map(); + searchText: string; + state: BrowserGroupingsComponentState; + showLeftHeader = true; + searchPending = false; + searchTypeSearch = false; + deletedCount = 0; + vaultFilter: VaultFilter; + selectedOrganization: string = null; + showCollections = true; + + private loadedTimeout: number; + private selectedTimeout: number; + private preventSelected = false; + private noFolderListSize = 100; + private searchTimeout: any = null; + private hasSearched = false; + private hasLoadedAllCiphers = false; + private allCiphers: CipherView[] = null; + + constructor( + private cipherService: CipherService, + private router: Router, + private ngZone: NgZone, + private broadcasterService: BroadcasterService, + private changeDetectorRef: ChangeDetectorRef, + private route: ActivatedRoute, + private popupUtils: PopupUtilsService, + private syncService: SyncService, + private platformUtilsService: PlatformUtilsService, + private searchService: SearchService, + private location: Location, + private browserStateService: StateService, + private vaultFilterService: VaultFilterService + ) { + this.noFolderListSize = 100; + } + + async ngOnInit() { + this.searchTypeSearch = !this.platformUtilsService.isSafari(); + this.showLeftHeader = !( + this.popupUtils.inSidebar(window) && this.platformUtilsService.isFirefox() + ); + await this.browserStateService.setBrowserCipherComponentState(null); + + this.broadcasterService.subscribe(ComponentId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + window.setTimeout(() => { + this.load(); + }, 500); + break; + default: + break; + } + + this.changeDetectorRef.detectChanges(); + }); + }); + + const restoredScopeState = await this.restoreState(); + this.route.queryParams.pipe(first()).subscribe(async (params) => { + this.state = await this.browserStateService.getBrowserGroupingComponentState(); + if (this.state?.searchText) { + this.searchText = this.state.searchText; + } else if (params.searchText) { + this.searchText = params.searchText; + this.location.replaceState("vault"); + } + + if (!this.syncService.syncInProgress) { + this.load(); + } else { + this.loadedTimeout = window.setTimeout(() => { + if (!this.loaded) { + this.load(); + } + }, 5000); + } + + if (!this.syncService.syncInProgress || restoredScopeState) { + window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state?.scrollY), 0); + } + }); + } + + ngOnDestroy() { + if (this.loadedTimeout != null) { + window.clearTimeout(this.loadedTimeout); + } + if (this.selectedTimeout != null) { + window.clearTimeout(this.selectedTimeout); + } + this.saveState(); + this.broadcasterService.unsubscribe(ComponentId); + } + + async load() { + this.vaultFilter = this.vaultFilterService.getVaultFilter(); + + this.updateSelectedOrg(); + await this.loadCollectionsAndFolders(); + await this.loadCiphers(); + + if (this.showNoFolderCiphers && this.nestedFolders.length > 0) { + // Remove "No Folder" from folder listing + this.nestedFolders = this.nestedFolders.slice(0, this.nestedFolders.length - 1); + } + + this.loaded = true; + } + + async loadCiphers() { + this.allCiphers = await this.cipherService.getAllDecrypted(); + if (!this.hasLoadedAllCiphers) { + this.hasLoadedAllCiphers = !this.searchService.isSearchable(this.searchText); + } + await this.search(null); + this.getCounts(); + } + + async loadCollections() { + const allCollections = await this.vaultFilterService.buildCollections( + this.selectedOrganization + ); + this.collections = allCollections.fullList; + this.nestedCollections = allCollections.nestedList; + } + + async loadFolders() { + const allFolders = await this.vaultFilterService.buildFolders(this.selectedOrganization); + this.folders = allFolders.fullList; + this.nestedFolders = await allFolders.nestedList; + } + + async search(timeout: number = null) { + this.searchPending = false; + if (this.searchTimeout != null) { + clearTimeout(this.searchTimeout); + } + const filterDeleted = (c: CipherView) => !c.isDeleted; + if (timeout == null) { + this.hasSearched = this.searchService.isSearchable(this.searchText); + this.ciphers = await this.searchService.searchCiphers( + this.searchText, + filterDeleted, + this.allCiphers + ); + this.ciphers = this.ciphers.filter( + (c) => !this.vaultFilterService.filterCipherForSelectedVault(c) + ); + return; + } + this.searchPending = true; + this.searchTimeout = setTimeout(async () => { + this.hasSearched = this.searchService.isSearchable(this.searchText); + if (!this.hasLoadedAllCiphers && !this.hasSearched) { + await this.loadCiphers(); + } else { + this.ciphers = await this.searchService.searchCiphers( + this.searchText, + filterDeleted, + this.allCiphers + ); + } + this.ciphers = this.ciphers.filter( + (c) => !this.vaultFilterService.filterCipherForSelectedVault(c) + ); + this.searchPending = false; + }, timeout); + } + + async selectType(type: CipherType) { + this.router.navigate(["/ciphers"], { queryParams: { type: type } }); + } + + async selectFolder(folder: FolderView) { + this.router.navigate(["/ciphers"], { queryParams: { folderId: folder.id || "none" } }); + } + + async selectCollection(collection: CollectionView) { + this.router.navigate(["/ciphers"], { queryParams: { collectionId: collection.id } }); + } + + async selectTrash() { + this.router.navigate(["/ciphers"], { queryParams: { deleted: true } }); + } + + async selectCipher(cipher: CipherView) { + this.selectedTimeout = window.setTimeout(() => { + if (!this.preventSelected) { + this.router.navigate(["/view-cipher"], { queryParams: { cipherId: cipher.id } }); + } + this.preventSelected = false; + }, 200); + } + + async launchCipher(cipher: CipherView) { + if (cipher.type !== CipherType.Login || !cipher.login.canLaunch) { + return; + } + + if (this.selectedTimeout != null) { + window.clearTimeout(this.selectedTimeout); + } + this.preventSelected = true; + await this.cipherService.updateLastLaunchedDate(cipher.id); + BrowserApi.createNewTab(cipher.login.launchUri); + if (this.popupUtils.inPopup(window)) { + BrowserApi.closePopup(window); + } + } + + async addCipher() { + this.router.navigate(["/add-cipher"], { + queryParams: { selectedVault: this.vaultFilter.selectedOrganizationId }, + }); + } + + async vaultFilterChanged() { + if (this.showSearching) { + await this.search(); + } + this.updateSelectedOrg(); + await this.loadCollectionsAndFolders(); + this.getCounts(); + } + + updateSelectedOrg() { + this.vaultFilter = this.vaultFilterService.getVaultFilter(); + if (this.vaultFilter.selectedOrganizationId != null) { + this.selectedOrganization = this.vaultFilter.selectedOrganizationId; + } else { + this.selectedOrganization = null; + } + } + + getCounts() { + let favoriteCiphers: CipherView[] = null; + let noFolderCiphers: CipherView[] = null; + const folderCounts = new Map(); + const collectionCounts = new Map(); + const typeCounts = new Map(); + + this.deletedCount = this.allCiphers.filter( + (c) => c.isDeleted && !this.vaultFilterService.filterCipherForSelectedVault(c) + ).length; + + this.ciphers?.forEach((c) => { + if (!this.vaultFilterService.filterCipherForSelectedVault(c)) { + if (c.isDeleted) { + return; + } + if (c.favorite) { + if (favoriteCiphers == null) { + favoriteCiphers = []; + } + favoriteCiphers.push(c); + } + + if (c.folderId == null) { + if (noFolderCiphers == null) { + noFolderCiphers = []; + } + noFolderCiphers.push(c); + } + + if (typeCounts.has(c.type)) { + typeCounts.set(c.type, typeCounts.get(c.type) + 1); + } else { + typeCounts.set(c.type, 1); + } + + if (folderCounts.has(c.folderId)) { + folderCounts.set(c.folderId, folderCounts.get(c.folderId) + 1); + } else { + folderCounts.set(c.folderId, 1); + } + + if (c.collectionIds != null) { + c.collectionIds.forEach((colId) => { + if (collectionCounts.has(colId)) { + collectionCounts.set(colId, collectionCounts.get(colId) + 1); + } else { + collectionCounts.set(colId, 1); + } + }); + } + } + }); + + this.favoriteCiphers = favoriteCiphers; + this.noFolderCiphers = noFolderCiphers; + this.typeCounts = typeCounts; + this.folderCounts = folderCounts; + this.collectionCounts = collectionCounts; + } + + showSearching() { + return ( + this.hasSearched || (!this.searchPending && this.searchService.isSearchable(this.searchText)) + ); + } + + closeOnEsc(e: KeyboardEvent) { + // If input not empty, use browser default behavior of clearing input instead + if (e.key === "Escape" && (this.searchText == null || this.searchText === "")) { + BrowserApi.closePopup(window); + } + } + + private async loadCollectionsAndFolders() { + this.showCollections = !this.vaultFilter.myVaultOnly; + await this.loadFolders(); + await this.loadCollections(); + } + + private async saveState() { + this.state = { + scrollY: this.popupUtils.getContentScrollY(window), + searchText: this.searchText, + favoriteCiphers: this.favoriteCiphers, + noFolderCiphers: this.noFolderCiphers, + ciphers: this.ciphers, + collectionCounts: this.collectionCounts, + folderCounts: this.folderCounts, + typeCounts: this.typeCounts, + folders: this.folders, + collections: this.collections, + deletedCount: this.deletedCount, + }; + await this.browserStateService.setBrowserGroupingComponentState(this.state); + } + + private async restoreState(): Promise { + this.state = await this.browserStateService.getBrowserGroupingComponentState(); + if (this.state == null) { + return false; + } + + if (this.state.favoriteCiphers != null) { + this.favoriteCiphers = this.state.favoriteCiphers; + } + if (this.state.noFolderCiphers != null) { + this.noFolderCiphers = this.state.noFolderCiphers; + } + if (this.state.ciphers != null) { + this.ciphers = this.state.ciphers; + } + if (this.state.collectionCounts != null) { + this.collectionCounts = this.state.collectionCounts; + } + if (this.state.folderCounts != null) { + this.folderCounts = this.state.folderCounts; + } + if (this.state.typeCounts != null) { + this.typeCounts = this.state.typeCounts; + } + if (this.state.folders != null) { + this.folders = this.state.folders; + } + if (this.state.collections != null) { + this.collections = this.state.collections; + } + if (this.state.deletedCount != null) { + this.deletedCount = this.state.deletedCount; + } + + return true; + } +} diff --git a/apps/browser/src/popup/vault/vault-select.component.html b/apps/browser/src/popup/vault/vault-select.component.html new file mode 100644 index 0000000000..813fbccf14 --- /dev/null +++ b/apps/browser/src/popup/vault/vault-select.component.html @@ -0,0 +1,65 @@ +
+ + + + +
diff --git a/apps/browser/src/popup/vault/vault-select.component.ts b/apps/browser/src/popup/vault/vault-select.component.ts new file mode 100644 index 0000000000..fb5178cfd4 --- /dev/null +++ b/apps/browser/src/popup/vault/vault-select.component.ts @@ -0,0 +1,191 @@ +import { animate, state, style, transition, trigger } from "@angular/animations"; +import { ConnectedPosition, Overlay, OverlayRef } from "@angular/cdk/overlay"; +import { TemplatePortal } from "@angular/cdk/portal"; +import { + Component, + ElementRef, + EventEmitter, + NgZone, + OnInit, + Output, + TemplateRef, + ViewChild, + ViewContainerRef, +} from "@angular/core"; +import { merge } from "rxjs"; + +import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { Organization } from "jslib-common/models/domain/organization"; + +import { VaultFilterService } from "../../services/vaultFilter.service"; + +@Component({ + selector: "app-vault-select", + templateUrl: "vault-select.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 VaultSelectComponent implements OnInit { + @Output() onVaultSelectionChanged = new EventEmitter(); + + @ViewChild("toggleVaults", { read: ElementRef }) + buttonRef: ElementRef; + @ViewChild("vaultSelectorTemplate", { read: TemplateRef }) templateRef: TemplateRef; + + isOpen = false; + loaded = false; + organizations: Organization[]; + vaultFilter: VaultFilter = new VaultFilter(); + vaultFilterDisplay = ""; + enforcePersonalOwnwership = false; + overlayPostition: ConnectedPosition[] = [ + { + originX: "start", + originY: "bottom", + overlayX: "start", + overlayY: "top", + }, + ]; + + private overlayRef: OverlayRef; + + get show() { + return ( + (this.organizations.length > 0 && !this.enforcePersonalOwnwership) || + (this.organizations.length > 1 && this.enforcePersonalOwnwership) + ); + } + + constructor( + private vaultFilterService: VaultFilterService, + private i18nService: I18nService, + private ngZone: NgZone, + private broadcasterService: BroadcasterService, + private overlay: Overlay, + private viewContainerRef: ViewContainerRef + ) {} + + async ngOnInit() { + await this.load(); + this.broadcasterService.subscribe(this.constructor.name, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + await this.load(); + break; + default: + break; + } + }); + }); + } + + async load() { + this.vaultFilter = this.vaultFilterService.getVaultFilter(); + this.organizations = (await this.vaultFilterService.buildOrganizations()).sort((a, b) => + a.name.localeCompare(b.name) + ); + this.enforcePersonalOwnwership = + await this.vaultFilterService.checkForPersonalOwnershipPolicy(); + + if (this.show) { + if (this.enforcePersonalOwnwership && !this.vaultFilter.myVaultOnly) { + this.vaultFilterService.setVaultFilter(this.organizations[0].id); + this.vaultFilter.selectedOrganizationId = this.organizations[0].id; + this.vaultFilterDisplay = this.organizations.find( + (o) => o.id === this.vaultFilter.selectedOrganizationId + ).name; + } else if (this.vaultFilter.myVaultOnly) { + this.vaultFilterDisplay = this.i18nService.t(this.vaultFilterService.myVault); + } else if (this.vaultFilter.selectedOrganizationId != null) { + this.vaultFilterDisplay = this.organizations.find( + (o) => o.id === this.vaultFilter.selectedOrganizationId + ).name; + } else { + this.vaultFilterDisplay = this.i18nService.t(this.vaultFilterService.allVaults); + } + } + this.loaded = true; + } + + openOverlay() { + const viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + const positionStrategyBuilder = this.overlay.position(); + + const positionStrategy = positionStrategyBuilder + .flexibleConnectedTo(this.buttonRef.nativeElement) + .withFlexibleDimensions(true) + .withPush(true) + .withViewportMargin(10) + .withGrowAfterOpen(true) + .withPositions(this.overlayPostition); + + this.overlayRef = this.overlay.create({ + hasBackdrop: false, + positionStrategy, + maxHeight: viewPortHeight - 160, + backdropClass: "cdk-overlay-transparent-backdrop", + scrollStrategy: this.overlay.scrollStrategies.close(), + }); + + const templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef); + this.overlayRef.attach(templatePortal); + this.isOpen = true; + + // Handle closing + merge( + this.overlayRef.outsidePointerEvents(), + this.overlayRef.backdropClick(), + this.overlayRef.detachments() + ).subscribe(() => { + this.close(); + }); + } + + close() { + if (this.overlayRef) { + this.overlayRef.dispose(); + this.overlayRef = undefined; + } + this.isOpen = false; + } + + selectOrganization(organization: Organization) { + this.vaultFilterDisplay = organization.name; + this.vaultFilterService.setVaultFilter(organization.id); + this.onVaultSelectionChanged.emit(); + this.close(); + } + selectAllVaults() { + this.vaultFilterDisplay = this.i18nService.t(this.vaultFilterService.allVaults); + this.vaultFilterService.setVaultFilter(this.vaultFilterService.allVaults); + this.onVaultSelectionChanged.emit(); + this.close(); + } + selectMyVault() { + this.vaultFilterDisplay = this.i18nService.t(this.vaultFilterService.myVault); + this.vaultFilterService.setVaultFilter(this.vaultFilterService.myVault); + this.onVaultSelectionChanged.emit(); + this.close(); + } +} diff --git a/apps/browser/src/popup/vault/view-custom-fields.component.html b/apps/browser/src/popup/vault/view-custom-fields.component.html new file mode 100644 index 0000000000..ebedd30776 --- /dev/null +++ b/apps/browser/src/popup/vault/view-custom-fields.component.html @@ -0,0 +1,91 @@ + +

+ {{ "customFields" | i18n }} +

+
+
+
+ {{ field.name }} +
+ {{ field.value || " " }} +
+
+ {{ field.maskedValue }} + + +
+
+ + + {{ field.value }} +
+
+
+ + {{ "linkedValue" | i18n }} +
+ {{ cipher.linkedFieldI18nKey(field.linkedId) | i18n }} +
+
+
+ + + +
+
+
+
diff --git a/apps/browser/src/popup/vault/view-custom-fields.component.ts b/apps/browser/src/popup/vault/view-custom-fields.component.ts new file mode 100644 index 0000000000..30046a3110 --- /dev/null +++ b/apps/browser/src/popup/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/browser/src/popup/vault/view.component.html b/apps/browser/src/popup/vault/view.component.html new file mode 100644 index 0000000000..fa69a3c34a --- /dev/null +++ b/apps/browser/src/popup/vault/view.component.html @@ -0,0 +1,528 @@ +
+
+ +
+

+ {{ "viewItem" | i18n }} +

+
+ +
+
+
+
+

+ {{ "itemInformation" | i18n }} +

+
+
+ + +
+ +
+
+
+ + +
+
+ +
+
+
+
+ {{ "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 }}
+
+
+
+
+
+
+
+
+ + + + + +
+
+ + +
+
+
+
+
+

+ +

+
+
+ +
+
+
+
+ +
+
+

+ {{ "attachments" | i18n }} +

+
+ +
+
+
+
+ + + + + + +
+
+
+ +
+
diff --git a/apps/browser/src/popup/vault/view.component.ts b/apps/browser/src/popup/vault/view.component.ts new file mode 100644 index 0000000000..4f08171bf8 --- /dev/null +++ b/apps/browser/src/popup/vault/view.component.ts @@ -0,0 +1,292 @@ +import { Location } from "@angular/common"; +import { ChangeDetectorRef, Component, NgZone } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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 { CipherType } from "jslib-common/enums/cipherType"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { LoginUriView } from "jslib-common/models/view/loginUriView"; + +import { BrowserApi } from "../../browser/browserApi"; +import { AutofillService } from "../../services/abstractions/autofill.service"; +import { PopupUtilsService } from "../services/popup-utils.service"; + +const BroadcasterSubscriptionId = "ChildViewComponent"; + +@Component({ + selector: "app-vault-view", + templateUrl: "view.component.html", +}) +export class ViewComponent extends BaseViewComponent { + showAttachments = true; + pageDetails: any[] = []; + tab: any; + loadPageDetailsTimeout: number; + inPopout = false; + cipherType = CipherType; + + constructor( + cipherService: CipherService, + totpService: TotpService, + tokenService: TokenService, + i18nService: I18nService, + cryptoService: CryptoService, + platformUtilsService: PlatformUtilsService, + auditService: AuditService, + private route: ActivatedRoute, + private router: Router, + private location: Location, + broadcasterService: BroadcasterService, + ngZone: NgZone, + changeDetectorRef: ChangeDetectorRef, + stateService: StateService, + eventService: EventService, + private autofillService: AutofillService, + private messagingService: MessagingService, + private popupUtilsService: PopupUtilsService, + apiService: ApiService, + passwordRepromptService: PasswordRepromptService, + logService: LogService + ) { + super( + cipherService, + totpService, + tokenService, + i18nService, + cryptoService, + platformUtilsService, + auditService, + window, + broadcasterService, + ngZone, + changeDetectorRef, + eventService, + apiService, + passwordRepromptService, + logService, + stateService + ); + } + + ngOnInit() { + this.inPopout = this.popupUtilsService.inPopout(window); + this.route.queryParams.pipe(first()).subscribe(async (params) => { + if (params.cipherId) { + this.cipherId = params.cipherId; + } else { + this.close(); + } + + await this.load(); + }); + + super.ngOnInit(); + + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "collectPageDetailsResponse": + if (message.sender === BroadcasterSubscriptionId) { + this.pageDetails.push({ + frameId: message.webExtSender.frameId, + tab: message.tab, + details: message.details, + }); + } + break; + case "tabChanged": + case "windowChanged": + if (this.loadPageDetailsTimeout != null) { + window.clearTimeout(this.loadPageDetailsTimeout); + } + this.loadPageDetailsTimeout = window.setTimeout(() => this.loadPageDetails(), 500); + break; + default: + break; + } + }); + }); + } + + ngOnDestroy() { + super.ngOnDestroy(); + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async load() { + await super.load(); + await this.loadPageDetails(); + } + + async edit() { + if (this.cipher.isDeleted) { + return false; + } + if (!(await super.edit())) { + return false; + } + + this.router.navigate(["/edit-cipher"], { queryParams: { cipherId: this.cipher.id } }); + return true; + } + + async clone() { + if (this.cipher.isDeleted) { + return false; + } + + if (!(await super.clone())) { + return false; + } + + this.router.navigate(["/clone-cipher"], { + queryParams: { + cloneMode: true, + cipherId: this.cipher.id, + }, + }); + return true; + } + + async share() { + if (!(await super.share())) { + return false; + } + + if (this.cipher.organizationId == null) { + this.router.navigate(["/share-cipher"], { + replaceUrl: true, + queryParams: { cipherId: this.cipher.id }, + }); + } + return true; + } + + async fillCipher() { + const didAutofill = await this.doAutofill(); + if (didAutofill) { + this.platformUtilsService.showToast("success", null, this.i18nService.t("autoFillSuccess")); + } + } + + async fillCipherAndSave() { + const didAutofill = await this.doAutofill(); + + if (didAutofill) { + if (this.tab == null) { + throw new Error("No tab found."); + } + + if (this.cipher.login.uris == null) { + this.cipher.login.uris = []; + } else { + if (this.cipher.login.uris.some((uri) => uri.uri === this.tab.url)) { + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("autoFillSuccessAndSavedUri") + ); + return; + } + } + + const loginUri = new LoginUriView(); + loginUri.uri = this.tab.url; + this.cipher.login.uris.push(loginUri); + + try { + const cipher: Cipher = await this.cipherService.encrypt(this.cipher); + await this.cipherService.saveWithServer(cipher); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("autoFillSuccessAndSavedUri") + ); + this.messagingService.send("editedCipher"); + } catch { + this.platformUtilsService.showToast("error", null, this.i18nService.t("unexpectedError")); + } + } + } + + async restore() { + if (!this.cipher.isDeleted) { + return false; + } + if (await super.restore()) { + this.close(); + return true; + } + return false; + } + + async delete() { + if (await super.delete()) { + this.messagingService.send("deletedCipher"); + this.close(); + return true; + } + return false; + } + + close() { + this.location.back(); + } + + private async loadPageDetails() { + this.pageDetails = []; + this.tab = await BrowserApi.getTabFromCurrentWindow(); + if (this.tab == null) { + return; + } + BrowserApi.tabSendMessage(this.tab, { + command: "collectPageDetails", + tab: this.tab, + sender: BroadcasterSubscriptionId, + }); + } + + private async doAutofill() { + if (!(await this.promptPassword())) { + return false; + } + + if (this.pageDetails == null || this.pageDetails.length === 0) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("autofillError")); + return false; + } + + try { + this.totpCode = await this.autofillService.doAutoFill({ + cipher: this.cipher, + pageDetails: this.pageDetails, + doc: window.document, + fillNewPassword: true, + }); + if (this.totpCode != null) { + this.platformUtilsService.copyToClipboard(this.totpCode, { window: window }); + } + } catch { + this.platformUtilsService.showToast("error", null, this.i18nService.t("autofillError")); + this.changeDetectorRef.detectChanges(); + return false; + } + + return true; + } +} diff --git a/apps/browser/src/safari/desktop.xcodeproj/project.pbxproj b/apps/browser/src/safari/desktop.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..fc05760fc9 --- /dev/null +++ b/apps/browser/src/safari/desktop.xcodeproj/project.pbxproj @@ -0,0 +1,558 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 55E0374D2577FA6B00979016 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E0374C2577FA6B00979016 /* AppDelegate.swift */; }; + 55E037502577FA6B00979016 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 55E0374E2577FA6B00979016 /* Main.storyboard */; }; + 55E037522577FA6B00979016 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E037512577FA6B00979016 /* ViewController.swift */; }; + 55E037542577FA6E00979016 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 55E037532577FA6E00979016 /* Assets.xcassets */; }; + 55E0375B2577FA6F00979016 /* safari.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 55E0375A2577FA6F00979016 /* safari.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 55E037602577FA6F00979016 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55E0375F2577FA6F00979016 /* Cocoa.framework */; }; + 55E037632577FA6F00979016 /* SafariWebExtensionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E037622577FA6F00979016 /* SafariWebExtensionHandler.swift */; }; + 55E037792577FA6F00979016 /* popup in Resources */ = {isa = PBXBuildFile; fileRef = 55E037702577FA6F00979016 /* popup */; }; + 55E0377A2577FA6F00979016 /* background.js in Resources */ = {isa = PBXBuildFile; fileRef = 55E037712577FA6F00979016 /* background.js */; }; + 55E0377B2577FA6F00979016 /* images in Resources */ = {isa = PBXBuildFile; fileRef = 55E037722577FA6F00979016 /* images */; }; + 55E0377C2577FA6F00979016 /* notification in Resources */ = {isa = PBXBuildFile; fileRef = 55E037732577FA6F00979016 /* notification */; }; + 55E0377D2577FA6F00979016 /* content in Resources */ = {isa = PBXBuildFile; fileRef = 55E037742577FA6F00979016 /* content */; }; + 55E0377E2577FA6F00979016 /* vendor.js in Resources */ = {isa = PBXBuildFile; fileRef = 55E037752577FA6F00979016 /* vendor.js */; }; + 55E0377F2577FA6F00979016 /* manifest.json in Resources */ = {isa = PBXBuildFile; fileRef = 55E037762577FA6F00979016 /* manifest.json */; }; + 55E037802577FA6F00979016 /* background.html in Resources */ = {isa = PBXBuildFile; fileRef = 55E037772577FA6F00979016 /* background.html */; }; + 55E037812577FA6F00979016 /* _locales in Resources */ = {isa = PBXBuildFile; fileRef = 55E037782577FA6F00979016 /* _locales */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 55E0375C2577FA6F00979016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55E037402577FA6B00979016 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55E037592577FA6F00979016; + remoteInfo = safari; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 55E0376B2577FA6F00979016 /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 55E0375B2577FA6F00979016 /* safari.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 5508DD7926051B5900A85C58 /* libswiftAppKit.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libswiftAppKit.tbd; path = usr/lib/swift/libswiftAppKit.tbd; sourceTree = SDKROOT; }; + 55E037482577FA6B00979016 /* desktop.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = desktop.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 55E0374B2577FA6B00979016 /* desktop.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = desktop.entitlements; sourceTree = ""; }; + 55E0374C2577FA6B00979016 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 55E0374F2577FA6B00979016 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 55E037512577FA6B00979016 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 55E037532577FA6E00979016 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 55E037552577FA6E00979016 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 55E0375A2577FA6F00979016 /* safari.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = safari.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 55E0375F2577FA6F00979016 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 55E037622577FA6F00979016 /* SafariWebExtensionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariWebExtensionHandler.swift; sourceTree = ""; }; + 55E037642577FA6F00979016 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 55E037652577FA6F00979016 /* safari.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = safari.entitlements; sourceTree = ""; }; + 55E037702577FA6F00979016 /* popup */ = {isa = PBXFileReference; lastKnownFileType = folder; name = popup; path = ../../../build/popup; sourceTree = ""; }; + 55E037712577FA6F00979016 /* background.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = background.js; path = ../../../build/background.js; sourceTree = ""; }; + 55E037722577FA6F00979016 /* images */ = {isa = PBXFileReference; lastKnownFileType = folder; name = images; path = ../../../build/images; sourceTree = ""; }; + 55E037732577FA6F00979016 /* notification */ = {isa = PBXFileReference; lastKnownFileType = folder; name = notification; path = ../../../build/notification; sourceTree = ""; }; + 55E037742577FA6F00979016 /* content */ = {isa = PBXFileReference; lastKnownFileType = folder; name = content; path = ../../../build/content; sourceTree = ""; }; + 55E037752577FA6F00979016 /* vendor.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = vendor.js; path = ../../../build/vendor.js; sourceTree = ""; }; + 55E037762577FA6F00979016 /* manifest.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = manifest.json; path = ../../../build/manifest.json; sourceTree = ""; }; + 55E037772577FA6F00979016 /* background.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = background.html; path = ../../../build/background.html; sourceTree = ""; }; + 55E037782577FA6F00979016 /* _locales */ = {isa = PBXFileReference; lastKnownFileType = folder; name = _locales; path = ../../../build/_locales; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 55E037452577FA6B00979016 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 55E037572577FA6F00979016 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 55E037602577FA6F00979016 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 55E0373F2577FA6B00979016 = { + isa = PBXGroup; + children = ( + 55E0374A2577FA6B00979016 /* desktop */, + 55E037612577FA6F00979016 /* safari */, + 55E0375E2577FA6F00979016 /* Frameworks */, + 55E037492577FA6B00979016 /* Products */, + ); + sourceTree = ""; + }; + 55E037492577FA6B00979016 /* Products */ = { + isa = PBXGroup; + children = ( + 55E037482577FA6B00979016 /* desktop.app */, + 55E0375A2577FA6F00979016 /* safari.appex */, + ); + name = Products; + sourceTree = ""; + }; + 55E0374A2577FA6B00979016 /* desktop */ = { + isa = PBXGroup; + children = ( + 55E0374B2577FA6B00979016 /* desktop.entitlements */, + 55E0374C2577FA6B00979016 /* AppDelegate.swift */, + 55E0374E2577FA6B00979016 /* Main.storyboard */, + 55E037512577FA6B00979016 /* ViewController.swift */, + 55E037532577FA6E00979016 /* Assets.xcassets */, + 55E037552577FA6E00979016 /* Info.plist */, + ); + path = desktop; + sourceTree = ""; + }; + 55E0375E2577FA6F00979016 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5508DD7926051B5900A85C58 /* libswiftAppKit.tbd */, + 55E0375F2577FA6F00979016 /* Cocoa.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 55E037612577FA6F00979016 /* safari */ = { + isa = PBXGroup; + children = ( + 55E0376F2577FA6F00979016 /* Resources */, + 55E037622577FA6F00979016 /* SafariWebExtensionHandler.swift */, + 55E037642577FA6F00979016 /* Info.plist */, + 55E037652577FA6F00979016 /* safari.entitlements */, + ); + path = safari; + sourceTree = ""; + }; + 55E0376F2577FA6F00979016 /* Resources */ = { + isa = PBXGroup; + children = ( + 55E037702577FA6F00979016 /* popup */, + 55E037712577FA6F00979016 /* background.js */, + 55E037722577FA6F00979016 /* images */, + 55E037732577FA6F00979016 /* notification */, + 55E037742577FA6F00979016 /* content */, + 55E037752577FA6F00979016 /* vendor.js */, + 55E037762577FA6F00979016 /* manifest.json */, + 55E037772577FA6F00979016 /* background.html */, + 55E037782577FA6F00979016 /* _locales */, + ); + name = Resources; + path = safari; + sourceTree = SOURCE_ROOT; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 55E037472577FA6B00979016 /* desktop */ = { + isa = PBXNativeTarget; + buildConfigurationList = 55E0376C2577FA6F00979016 /* Build configuration list for PBXNativeTarget "desktop" */; + buildPhases = ( + 55E037442577FA6B00979016 /* Sources */, + 55E037452577FA6B00979016 /* Frameworks */, + 55E037462577FA6B00979016 /* Resources */, + 55E0376B2577FA6F00979016 /* Embed App Extensions */, + ); + buildRules = ( + ); + dependencies = ( + 55E0375D2577FA6F00979016 /* PBXTargetDependency */, + ); + name = desktop; + productName = desktop; + productReference = 55E037482577FA6B00979016 /* desktop.app */; + productType = "com.apple.product-type.application"; + }; + 55E037592577FA6F00979016 /* safari */ = { + isa = PBXNativeTarget; + buildConfigurationList = 55E037682577FA6F00979016 /* Build configuration list for PBXNativeTarget "safari" */; + buildPhases = ( + 55E037562577FA6F00979016 /* Sources */, + 55E037572577FA6F00979016 /* Frameworks */, + 55E037582577FA6F00979016 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = safari; + productName = safari; + productReference = 55E0375A2577FA6F00979016 /* safari.appex */; + productType = "com.apple.product-type.app-extension"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 55E037402577FA6B00979016 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1220; + LastUpgradeCheck = 1220; + ORGANIZATIONNAME = "8bit Solutions LLC"; + TargetAttributes = { + 55E037472577FA6B00979016 = { + CreatedOnToolsVersion = 12.2; + }; + 55E037592577FA6F00979016 = { + CreatedOnToolsVersion = 12.2; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + }; + }; + buildConfigurationList = 55E037432577FA6B00979016 /* Build configuration list for PBXProject "desktop" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 55E0373F2577FA6B00979016; + productRefGroup = 55E037492577FA6B00979016 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 55E037472577FA6B00979016 /* desktop */, + 55E037592577FA6F00979016 /* safari */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 55E037462577FA6B00979016 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 55E037542577FA6E00979016 /* Assets.xcassets in Resources */, + 55E037502577FA6B00979016 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 55E037582577FA6F00979016 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 55E037812577FA6F00979016 /* _locales in Resources */, + 55E0377B2577FA6F00979016 /* images in Resources */, + 55E0377F2577FA6F00979016 /* manifest.json in Resources */, + 55E037802577FA6F00979016 /* background.html in Resources */, + 55E0377A2577FA6F00979016 /* background.js in Resources */, + 55E037792577FA6F00979016 /* popup in Resources */, + 55E0377C2577FA6F00979016 /* notification in Resources */, + 55E0377E2577FA6F00979016 /* vendor.js in Resources */, + 55E0377D2577FA6F00979016 /* content in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 55E037442577FA6B00979016 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 55E037522577FA6B00979016 /* ViewController.swift in Sources */, + 55E0374D2577FA6B00979016 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 55E037562577FA6F00979016 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 55E037632577FA6F00979016 /* SafariWebExtensionHandler.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 55E0375D2577FA6F00979016 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 55E037592577FA6F00979016 /* safari */; + targetProxy = 55E0375C2577FA6F00979016 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 55E0374E2577FA6B00979016 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 55E0374F2577FA6B00979016 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 55E037662577FA6F00979016 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 55E037672577FA6F00979016 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 55E037692577FA6F00979016 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_ENTITLEMENTS = safari/safari.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = LTZ2PFU5D6; + ENABLE_HARDENED_RUNTIME = YES; + INFOPLIST_FILE = safari/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop.safari; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 55E0376A2577FA6F00979016 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_ENTITLEMENTS = safari/safari.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = LTZ2PFU5D6; + ENABLE_HARDENED_RUNTIME = YES; + INFOPLIST_FILE = safari/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop.safari; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 55E0376D2577FA6F00979016 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = desktop/desktop.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = LTZ2PFU5D6; + ENABLE_HARDENED_RUNTIME = YES; + INFOPLIST_FILE = desktop/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 55E0376E2577FA6F00979016 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = desktop/desktop.entitlements; + CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = LTZ2PFU5D6; + ENABLE_HARDENED_RUNTIME = YES; + INFOPLIST_FILE = desktop/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 55E037432577FA6B00979016 /* Build configuration list for PBXProject "desktop" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 55E037662577FA6F00979016 /* Debug */, + 55E037672577FA6F00979016 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 55E037682577FA6F00979016 /* Build configuration list for PBXNativeTarget "safari" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 55E037692577FA6F00979016 /* Debug */, + 55E0376A2577FA6F00979016 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 55E0376C2577FA6F00979016 /* Build configuration list for PBXNativeTarget "desktop" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 55E0376D2577FA6F00979016 /* Debug */, + 55E0376E2577FA6F00979016 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 55E037402577FA6B00979016 /* Project object */; +} diff --git a/apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/apps/browser/src/safari/desktop.xcodeproj/xcshareddata/xcschemes/desktop.xcscheme b/apps/browser/src/safari/desktop.xcodeproj/xcshareddata/xcschemes/desktop.xcscheme new file mode 100644 index 0000000000..7dd13c8dc8 --- /dev/null +++ b/apps/browser/src/safari/desktop.xcodeproj/xcshareddata/xcschemes/desktop.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/browser/src/safari/desktop/AppDelegate.swift b/apps/browser/src/safari/desktop/AppDelegate.swift new file mode 100644 index 0000000000..6222982a6e --- /dev/null +++ b/apps/browser/src/safari/desktop/AppDelegate.swift @@ -0,0 +1,18 @@ +import Cocoa + +@main +class AppDelegate: NSObject, NSApplicationDelegate { + + func applicationDidFinishLaunching(_ notification: Notification) { + // Insert code here to initialize your application + } + + func applicationWillTerminate(_ notification: Notification) { + // Insert code here to tear down your application + } + + func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + +} diff --git a/apps/browser/src/safari/desktop/Assets.xcassets/AccentColor.colorset/Contents.json b/apps/browser/src/safari/desktop/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000000..eb87897008 --- /dev/null +++ b/apps/browser/src/safari/desktop/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/Contents.json b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..6bf9a9b330 --- /dev/null +++ b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,62 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "icon32.png", + "scale" : "1x" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon128.png", + "scale" : "1x" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon128.png b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon128.png new file mode 100644 index 0000000000..7268b7041d Binary files /dev/null and b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon128.png differ diff --git a/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon16.png b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon16.png new file mode 100644 index 0000000000..dadec18fbb Binary files /dev/null and b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon16.png differ diff --git a/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon32.png b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon32.png new file mode 100644 index 0000000000..c1289d156f Binary files /dev/null and b/apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon32.png differ diff --git a/apps/browser/src/safari/desktop/Assets.xcassets/Contents.json b/apps/browser/src/safari/desktop/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/apps/browser/src/safari/desktop/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/apps/browser/src/safari/desktop/Base.lproj/Main.storyboard b/apps/browser/src/safari/desktop/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..5a53dedcec --- /dev/null +++ b/apps/browser/src/safari/desktop/Base.lproj/Main.storyboard @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/browser/src/safari/desktop/Info.plist b/apps/browser/src/safari/desktop/Info.plist new file mode 100644 index 0000000000..30a64ff889 --- /dev/null +++ b/apps/browser/src/safari/desktop/Info.plist @@ -0,0 +1,34 @@ + + + + + LSApplicationCategoryType + public.app-category.productivity + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2015-2022 Bitwarden Inc. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/apps/browser/src/safari/desktop/ViewController.swift b/apps/browser/src/safari/desktop/ViewController.swift new file mode 100644 index 0000000000..fbda5decf8 --- /dev/null +++ b/apps/browser/src/safari/desktop/ViewController.swift @@ -0,0 +1,44 @@ +import Cocoa +import SafariServices.SFSafariApplication +import SafariServices.SFSafariExtensionManager + +let appName = "desktop" +let extensionBundleIdentifier = "com.bitwarden.desktop.Extension" + +class ViewController: NSViewController { + + @IBOutlet var appNameLabel: NSTextField! + + override func viewDidLoad() { + super.viewDidLoad() + self.appNameLabel.stringValue = appName + SFSafariExtensionManager.getStateOfSafariExtension(withIdentifier: extensionBundleIdentifier) { (state, error) in + guard let state = state, error == nil else { + // Insert code to inform the user that something went wrong. + return + } + + DispatchQueue.main.async { + if (state.isEnabled) { + self.appNameLabel.stringValue = "\(appName)'s extension is currently on." + } else { + self.appNameLabel.stringValue = "\(appName)'s extension is currently off. You can turn it on in Safari Extensions preferences." + } + } + } + } + + @IBAction func openSafariExtensionPreferences(_ sender: AnyObject?) { + SFSafariApplication.showPreferencesForExtension(withIdentifier: extensionBundleIdentifier) { error in + guard error == nil else { + // Insert code to inform the user that something went wrong. + return + } + + DispatchQueue.main.async { + NSApplication.shared.terminate(nil) + } + } + } + +} diff --git a/apps/browser/src/safari/desktop/desktop.entitlements b/apps/browser/src/safari/desktop/desktop.entitlements new file mode 100644 index 0000000000..6d968edb4f --- /dev/null +++ b/apps/browser/src/safari/desktop/desktop.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-write + + + diff --git a/apps/browser/src/safari/safari/Info.plist b/apps/browser/src/safari/safari/Info.plist new file mode 100644 index 0000000000..e085116c43 --- /dev/null +++ b/apps/browser/src/safari/safari/Info.plist @@ -0,0 +1,41 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Bitwarden + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 0.0.1 + CFBundleVersion + 0.0.2 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSExtension + + NSExtensionPointIdentifier + com.apple.Safari.web-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).SafariWebExtensionHandler + + NSHumanReadableCopyright + Copyright © 2015-2022 Bitwarden Inc. All rights reserved. + NSHumanReadableDescription + A secure and free password manager for all of your devices. + SFSafariAppExtensionBundleIdentifiersToReplace + + com.bitwarden.desktop.safari + + + diff --git a/apps/browser/src/safari/safari/SafariWebExtensionHandler.swift b/apps/browser/src/safari/safari/SafariWebExtensionHandler.swift new file mode 100644 index 0000000000..5a12da3a02 --- /dev/null +++ b/apps/browser/src/safari/safari/SafariWebExtensionHandler.swift @@ -0,0 +1,200 @@ +import SafariServices +import os.log +import LocalAuthentication + +let SFExtensionMessageKey = "message" +let ServiceName = "Bitwarden" +let ServiceNameBiometric = ServiceName + "_biometric" + +class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { + + func beginRequest(with context: NSExtensionContext) { + let item = context.inputItems[0] as! NSExtensionItem + let message = item.userInfo?[SFExtensionMessageKey] as AnyObject? + os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@", message as! CVarArg) + + let response = NSExtensionItem() + + guard let command = message?["command"] as? String else { + return + } + + switch (command) { + case "readFromClipboard": + let pasteboard = NSPasteboard.general + response.userInfo = [ SFExtensionMessageKey: pasteboard.pasteboardItems?.first?.string(forType: .string) as Any ] + break + case "copyToClipboard": + guard let msg = message?["data"] as? String else { + return + } + let pasteboard = NSPasteboard.general + pasteboard.clearContents() + pasteboard.setString(msg, forType: .string) + case "showPopover": + SFSafariApplication.getActiveWindow { win in + win?.getToolbarItem(completionHandler: { item in + item?.showPopover() + }) + } + break + case "downloadFile": + guard let jsonData = message?["data"] as? String else { + return + } + guard let dlMsg: DownloadFileMessage = jsonDeserialize(json: jsonData) else { + return + } + var blobData: Data? + if dlMsg.blobOptions?.type == "text/plain" { + blobData = dlMsg.blobData?.data(using: .utf8) + } else if let blob = dlMsg.blobData { + blobData = Data(base64Encoded: blob) + } + guard let data = blobData else { + return + } + let panel = NSSavePanel() + panel.isFloatingPanel = true + panel.canCreateDirectories = true + panel.nameFieldStringValue = dlMsg.fileName + panel.begin { response in + if response == NSApplication.ModalResponse.OK { + if let url = panel.url { + do { + let fileManager = FileManager.default + if !fileManager.fileExists(atPath: url.absoluteString) { + fileManager.createFile(atPath: url.absoluteString, contents: Data(), + attributes: nil) + } + try data.write(to: url) + } catch { + print(error) + NSLog("ERROR in downloadFile, \(error)") + } + } + } + } + break + case "sleep": + DispatchQueue.main.asyncAfter(deadline: .now() + 10) { + context.completeRequest(returningItems: [response], completionHandler: nil) + } + return + case "biometricUnlock": + + var error: NSError? + let laContext = LAContext() + + laContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) + + if let e = error, e.code != kLAErrorBiometryLockout { + response.userInfo = [ + SFExtensionMessageKey: [ + "message": [ + "command": "biometricUnlock", + "response": "not supported", + "timestamp": Int64(NSDate().timeIntervalSince1970 * 1000), + ], + ], + ] + break + } + + guard let accessControl = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenUnlockedThisDeviceOnly, [.privateKeyUsage, .userPresence], nil) else { + response.userInfo = [ + SFExtensionMessageKey: [ + "message": [ + "command": "biometricUnlock", + "response": "not supported", + "timestamp": Int64(NSDate().timeIntervalSince1970 * 1000), + ], + ], + ] + break + } + laContext.evaluateAccessControl(accessControl, operation: .useKeySign, localizedReason: "Bitwarden Safari Extension") { (success, error) in + if success { + guard let userId = message?["userId"] as? String else { + return + } + let passwordName = userId + "_masterkey_biometric" + var passwordLength: UInt32 = 0 + var passwordPtr: UnsafeMutableRawPointer? = nil + + var status = SecKeychainFindGenericPassword(nil, UInt32(ServiceNameBiometric.utf8.count), ServiceNameBiometric, UInt32(passwordName.utf8.count), passwordName, &passwordLength, &passwordPtr, nil) + if status != errSecSuccess { + let fallbackName = "key" + status = SecKeychainFindGenericPassword(nil, UInt32(ServiceNameBiometric.utf8.count), ServiceNameBiometric, UInt32(fallbackName.utf8.count), fallbackName, &passwordLength, &passwordPtr, nil) + } + + if status == errSecSuccess { + let result = NSString(bytes: passwordPtr!, length: Int(passwordLength), encoding: String.Encoding.utf8.rawValue) as String? + SecKeychainItemFreeContent(nil, passwordPtr) + + response.userInfo = [ SFExtensionMessageKey: [ + "message": [ + "command": "biometricUnlock", + "response": "unlocked", + "timestamp": Int64(NSDate().timeIntervalSince1970 * 1000), + "keyB64": result!.replacingOccurrences(of: "\"", with: ""), + ], + ]] + } else { + response.userInfo = [ + SFExtensionMessageKey: [ + "message": [ + "command": "biometricUnlock", + "response": "not enabled", + "timestamp": Int64(NSDate().timeIntervalSince1970 * 1000), + ], + ], + ] + } + } + + context.completeRequest(returningItems: [response], completionHandler: nil) + } + + return + default: + return + } + + context.completeRequest(returningItems: [response], completionHandler: nil) + } + +} + +func jsonSerialize(obj: T?) -> String? { + let encoder = JSONEncoder() + do { + let data = try encoder.encode(obj) + return String(data: data, encoding: .utf8) ?? "null" + } catch _ { + return "null" + } +} + +func jsonDeserialize(json: String?) -> T? { + if json == nil { + return nil + } + let decoder = JSONDecoder() + do { + let obj = try decoder.decode(T.self, from: json!.data(using: .utf8)!) + return obj + } catch _ { + return nil + } +} + +class DownloadFileMessage: Decodable, Encodable { + var fileName: String + var blobData: String? + var blobOptions: DownloadFileMessageBlobOptions? +} + +class DownloadFileMessageBlobOptions: Decodable, Encodable { + var type: String? +} diff --git a/apps/browser/src/safari/safari/safari.entitlements b/apps/browser/src/safari/safari/safari.entitlements new file mode 100644 index 0000000000..85c03d7b48 --- /dev/null +++ b/apps/browser/src/safari/safari/safari.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/apps/browser/src/scripts/duo.js b/apps/browser/src/scripts/duo.js new file mode 100644 index 0000000000..8b712dcf25 --- /dev/null +++ b/apps/browser/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/browser/src/services/abstractions/autofill.service.ts b/apps/browser/src/services/abstractions/autofill.service.ts new file mode 100644 index 0000000000..68fb1b8dba --- /dev/null +++ b/apps/browser/src/services/abstractions/autofill.service.ts @@ -0,0 +1,7 @@ +import AutofillPageDetails from "../../models/autofillPageDetails"; + +export abstract class AutofillService { + getFormsWithPasswordFields: (pageDetails: AutofillPageDetails) => any[]; + doAutoFill: (options: any) => Promise; + doAutoFillActiveTab: (pageDetails: any, fromCommand: boolean) => Promise; +} diff --git a/apps/browser/src/services/abstractions/state.service.ts b/apps/browser/src/services/abstractions/state.service.ts new file mode 100644 index 0000000000..4d61cd61cf --- /dev/null +++ b/apps/browser/src/services/abstractions/state.service.ts @@ -0,0 +1,32 @@ +import { StateService as BaseStateServiceAbstraction } from "jslib-common/abstractions/state.service"; +import { StorageOptions } from "jslib-common/models/domain/storageOptions"; + +import { Account } from "src/models/account"; +import { BrowserComponentState } from "src/models/browserComponentState"; +import { BrowserGroupingsComponentState } from "src/models/browserGroupingsComponentState"; +import { BrowserSendComponentState } from "src/models/browserSendComponentState"; + +export abstract class StateService extends BaseStateServiceAbstraction { + getBrowserGroupingComponentState: ( + options?: StorageOptions + ) => Promise; + setBrowserGroupingComponentState: ( + value: BrowserGroupingsComponentState, + options?: StorageOptions + ) => Promise; + getBrowserCipherComponentState: (options?: StorageOptions) => Promise; + setBrowserCipherComponentState: ( + value: BrowserComponentState, + options?: StorageOptions + ) => Promise; + getBrowserSendComponentState: (options?: StorageOptions) => Promise; + setBrowserSendComponentState: ( + value: BrowserSendComponentState, + options?: StorageOptions + ) => Promise; + getBrowserSendTypeComponentState: (options?: StorageOptions) => Promise; + setBrowserSendTypeComponentState: ( + value: BrowserComponentState, + options?: StorageOptions + ) => Promise; +} diff --git a/apps/browser/src/services/autofill.service.ts b/apps/browser/src/services/autofill.service.ts new file mode 100644 index 0000000000..406bc15547 --- /dev/null +++ b/apps/browser/src/services/autofill.service.ts @@ -0,0 +1,1320 @@ +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { LogService } from "jslib-common/abstractions/log.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 { FieldType } from "jslib-common/enums/fieldType"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { FieldView } from "jslib-common/models/view/fieldView"; + +import { BrowserApi } from "../browser/browserApi"; +import AutofillField from "../models/autofillField"; +import AutofillPageDetails from "../models/autofillPageDetails"; +import AutofillScript from "../models/autofillScript"; +import { StateService } from "../services/abstractions/state.service"; + +import { AutofillService as AutofillServiceInterface } from "./abstractions/autofill.service"; +import { + AutoFillConstants, + CreditCardAutoFillConstants, + IdentityAutoFillConstants, +} from "./autofillConstants"; + +export default class AutofillService implements AutofillServiceInterface { + constructor( + private cipherService: CipherService, + private stateService: StateService, + private totpService: TotpService, + private eventService: EventService, + private logService: LogService + ) {} + + getFormsWithPasswordFields(pageDetails: AutofillPageDetails): any[] { + const formData: any[] = []; + + const passwordFields = this.loadPasswordFields(pageDetails, true, true, false, false); + if (passwordFields.length === 0) { + return formData; + } + + for (const formKey in pageDetails.forms) { + // eslint-disable-next-line + if (!pageDetails.forms.hasOwnProperty(formKey)) { + continue; + } + + const formPasswordFields = passwordFields.filter((pf) => formKey === pf.form); + if (formPasswordFields.length > 0) { + let uf = this.findUsernameField(pageDetails, formPasswordFields[0], false, false, false); + if (uf == null) { + // not able to find any viewable username fields. maybe there are some "hidden" ones? + uf = this.findUsernameField(pageDetails, formPasswordFields[0], true, true, false); + } + formData.push({ + form: pageDetails.forms[formKey], + password: formPasswordFields[0], + username: uf, + passwords: formPasswordFields, + }); + } + } + + return formData; + } + + async doAutoFill(options: any) { + let totpPromise: Promise = null; + const tab = await this.getActiveTab(); + if (!tab || !options.cipher || !options.pageDetails || !options.pageDetails.length) { + throw new Error("Nothing to auto-fill."); + } + + const canAccessPremium = await this.stateService.getCanAccessPremium(); + let didAutofill = false; + options.pageDetails.forEach((pd: any) => { + // make sure we're still on correct tab + if (pd.tab.id !== tab.id || pd.tab.url !== tab.url) { + return; + } + + const fillScript = this.generateFillScript(pd.details, { + skipUsernameOnlyFill: options.skipUsernameOnlyFill || false, + onlyEmptyFields: options.onlyEmptyFields || false, + onlyVisibleFields: options.onlyVisibleFields || false, + fillNewPassword: options.fillNewPassword || false, + cipher: options.cipher, + }); + + if (!fillScript || !fillScript.script || !fillScript.script.length) { + return; + } + + // Add a small delay between operations + fillScript.properties.delay_between_operations = 20; + + didAutofill = true; + if (!options.skipLastUsed) { + this.cipherService.updateLastUsedDate(options.cipher.id); + } + + BrowserApi.tabSendMessage( + tab, + { + command: "fillForm", + fillScript: fillScript, + url: tab.url, + }, + { frameId: pd.frameId } + ); + + if ( + options.cipher.type !== CipherType.Login || + totpPromise || + !options.cipher.login.totp || + (!canAccessPremium && !options.cipher.organizationUseTotp) + ) { + return; + } + + totpPromise = this.totpService.isAutoCopyEnabled().then((enabled) => { + if (enabled) { + return this.totpService.getCode(options.cipher.login.totp); + } + return null; + }); + }); + + if (didAutofill) { + this.eventService.collect(EventType.Cipher_ClientAutofilled, options.cipher.id); + if (totpPromise != null) { + return await totpPromise; + } else { + return null; + } + } else { + throw new Error("Did not auto-fill."); + } + } + + async doAutoFillActiveTab(pageDetails: any, fromCommand: boolean) { + const tab = await this.getActiveTab(); + if (!tab || !tab.url) { + return; + } + + let cipher: CipherView; + if (fromCommand) { + cipher = await this.cipherService.getNextCipherForUrl(tab.url); + } else { + const lastLaunchedCipher = await this.cipherService.getLastLaunchedForUrl(tab.url, true); + if ( + lastLaunchedCipher && + Date.now().valueOf() - lastLaunchedCipher.localData?.lastLaunched?.valueOf() < 30000 + ) { + cipher = lastLaunchedCipher; + } else { + cipher = await this.cipherService.getLastUsedForUrl(tab.url, true); + } + + if (cipher == null) { + return null; + } + } + + if (cipher.reprompt !== CipherRepromptType.None) { + return; + } + + const totpCode = await this.doAutoFill({ + cipher: cipher, + pageDetails: pageDetails, + skipLastUsed: !fromCommand, + skipUsernameOnlyFill: !fromCommand, + onlyEmptyFields: !fromCommand, + onlyVisibleFields: !fromCommand, + fillNewPassword: fromCommand, + }); + + // Update last used index as autofill has succeed + if (fromCommand) { + this.cipherService.updateLastUsedIndexForUrl(tab.url); + } + + return totpCode; + } + + // Helpers + + private async getActiveTab(): Promise { + const tab = await BrowserApi.getTabFromCurrentWindow(); + if (!tab) { + throw new Error("No tab found."); + } + + return tab; + } + + private generateFillScript(pageDetails: AutofillPageDetails, options: any): AutofillScript { + if (!pageDetails || !options.cipher) { + return null; + } + + let fillScript = new AutofillScript(pageDetails.documentUUID); + const filledFields: { [id: string]: AutofillField } = {}; + const fields = options.cipher.fields; + + if (fields && fields.length) { + const fieldNames: string[] = []; + + fields.forEach((f: any) => { + if (this.hasValue(f.name)) { + fieldNames.push(f.name.toLowerCase()); + } + }); + + pageDetails.fields.forEach((field: any) => { + // eslint-disable-next-line + if (filledFields.hasOwnProperty(field.opid)) { + return; + } + + if (!field.viewable && field.tagName !== "span") { + return; + } + + const matchingIndex = this.findMatchingFieldIndex(field, fieldNames); + if (matchingIndex > -1) { + const matchingField: FieldView = fields[matchingIndex]; + let val; + if (matchingField.type === FieldType.Linked) { + // Assumption: Linked Field is not being used to autofill a boolean value + val = options.cipher.linkedFieldValue(matchingField.linkedId); + } else { + val = matchingField.value; + if (val == null && matchingField.type === FieldType.Boolean) { + val = "false"; + } + } + + filledFields[field.opid] = field; + this.fillByOpid(fillScript, field, val); + } + }); + } + + switch (options.cipher.type) { + case CipherType.Login: + fillScript = this.generateLoginFillScript(fillScript, pageDetails, filledFields, options); + break; + case CipherType.Card: + fillScript = this.generateCardFillScript(fillScript, pageDetails, filledFields, options); + break; + case CipherType.Identity: + fillScript = this.generateIdentityFillScript( + fillScript, + pageDetails, + filledFields, + options + ); + break; + default: + return null; + } + + return fillScript; + } + + private generateLoginFillScript( + fillScript: AutofillScript, + pageDetails: any, + filledFields: { [id: string]: AutofillField }, + options: any + ): AutofillScript { + if (!options.cipher.login) { + return null; + } + + const passwords: AutofillField[] = []; + const usernames: AutofillField[] = []; + let pf: AutofillField = null; + let username: AutofillField = null; + const login = options.cipher.login; + + if (!login.password || login.password === "") { + // No password for this login. Maybe they just wanted to auto-fill some custom fields? + fillScript = this.setFillScriptForFocus(filledFields, fillScript); + return fillScript; + } + + let passwordFields = this.loadPasswordFields( + pageDetails, + false, + false, + options.onlyEmptyFields, + options.fillNewPassword + ); + if (!passwordFields.length && !options.onlyVisibleFields) { + // not able to find any viewable password fields. maybe there are some "hidden" ones? + passwordFields = this.loadPasswordFields( + pageDetails, + true, + true, + options.onlyEmptyFields, + options.fillNewPassword + ); + } + + for (const formKey in pageDetails.forms) { + // eslint-disable-next-line + if (!pageDetails.forms.hasOwnProperty(formKey)) { + continue; + } + + const passwordFieldsForForm: AutofillField[] = []; + passwordFields.forEach((passField) => { + if (formKey === passField.form) { + passwordFieldsForForm.push(passField); + } + }); + + passwordFields.forEach((passField) => { + pf = passField; + passwords.push(pf); + + if (login.username) { + username = this.findUsernameField(pageDetails, pf, false, false, false); + + if (!username && !options.onlyVisibleFields) { + // not able to find any viewable username fields. maybe there are some "hidden" ones? + username = this.findUsernameField(pageDetails, pf, true, true, false); + } + + if (username) { + usernames.push(username); + } + } + }); + } + + if (passwordFields.length && !passwords.length) { + // The page does not have any forms with password fields. Use the first password field on the page and the + // input field just before it as the username. + + pf = passwordFields[0]; + passwords.push(pf); + + if (login.username && pf.elementNumber > 0) { + username = this.findUsernameField(pageDetails, pf, false, false, true); + + if (!username && !options.onlyVisibleFields) { + // not able to find any viewable username fields. maybe there are some "hidden" ones? + username = this.findUsernameField(pageDetails, pf, true, true, true); + } + + if (username) { + usernames.push(username); + } + } + } + + if (!passwordFields.length && !options.skipUsernameOnlyFill) { + // No password fields on this page. Let's try to just fuzzy fill the username. + pageDetails.fields.forEach((f: any) => { + if ( + f.viewable && + (f.type === "text" || f.type === "email" || f.type === "tel") && + this.fieldIsFuzzyMatch(f, AutoFillConstants.UsernameFieldNames) + ) { + usernames.push(f); + } + }); + } + + usernames.forEach((u) => { + // eslint-disable-next-line + if (filledFields.hasOwnProperty(u.opid)) { + return; + } + + filledFields[u.opid] = u; + this.fillByOpid(fillScript, u, login.username); + }); + + passwords.forEach((p) => { + // eslint-disable-next-line + if (filledFields.hasOwnProperty(p.opid)) { + return; + } + + filledFields[p.opid] = p; + this.fillByOpid(fillScript, p, login.password); + }); + + fillScript = this.setFillScriptForFocus(filledFields, fillScript); + return fillScript; + } + + private generateCardFillScript( + fillScript: AutofillScript, + pageDetails: any, + filledFields: { [id: string]: AutofillField }, + options: any + ): AutofillScript { + if (!options.cipher.card) { + return null; + } + + const fillFields: { [id: string]: AutofillField } = {}; + + pageDetails.fields.forEach((f: any) => { + if (this.forCustomFieldsOnly(f)) { + return; + } + + if (this.isExcludedType(f.type, AutoFillConstants.ExcludedAutofillTypes)) { + return; + } + + for (let i = 0; i < CreditCardAutoFillConstants.CardAttributes.length; i++) { + const attr = CreditCardAutoFillConstants.CardAttributes[i]; + // eslint-disable-next-line + if (!f.hasOwnProperty(attr) || !f[attr] || !f.viewable) { + continue; + } + + // ref https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill + // ref https://developers.google.com/web/fundamentals/design-and-ux/input/forms/ + if ( + !fillFields.cardholderName && + this.isFieldMatch( + f[attr], + CreditCardAutoFillConstants.CardHolderFieldNames, + CreditCardAutoFillConstants.CardHolderFieldNameValues + ) + ) { + fillFields.cardholderName = f; + break; + } else if ( + !fillFields.number && + this.isFieldMatch( + f[attr], + CreditCardAutoFillConstants.CardNumberFieldNames, + CreditCardAutoFillConstants.CardNumberFieldNameValues + ) + ) { + fillFields.number = f; + break; + } else if ( + !fillFields.exp && + this.isFieldMatch( + f[attr], + CreditCardAutoFillConstants.CardExpiryFieldNames, + CreditCardAutoFillConstants.CardExpiryFieldNameValues + ) + ) { + fillFields.exp = f; + break; + } else if ( + !fillFields.expMonth && + this.isFieldMatch(f[attr], CreditCardAutoFillConstants.ExpiryMonthFieldNames) + ) { + fillFields.expMonth = f; + break; + } else if ( + !fillFields.expYear && + this.isFieldMatch(f[attr], CreditCardAutoFillConstants.ExpiryYearFieldNames) + ) { + fillFields.expYear = f; + break; + } else if ( + !fillFields.code && + this.isFieldMatch(f[attr], CreditCardAutoFillConstants.CVVFieldNames) + ) { + fillFields.code = f; + break; + } else if ( + !fillFields.brand && + this.isFieldMatch(f[attr], CreditCardAutoFillConstants.CardBrandFieldNames) + ) { + fillFields.brand = f; + break; + } + } + }); + + const card = options.cipher.card; + this.makeScriptAction(fillScript, card, fillFields, filledFields, "cardholderName"); + this.makeScriptAction(fillScript, card, fillFields, filledFields, "number"); + this.makeScriptAction(fillScript, card, fillFields, filledFields, "code"); + this.makeScriptAction(fillScript, card, fillFields, filledFields, "brand"); + + if (fillFields.expMonth && this.hasValue(card.expMonth)) { + let expMonth: string = card.expMonth; + + if (fillFields.expMonth.selectInfo && fillFields.expMonth.selectInfo.options) { + let index: number = null; + const siOptions = fillFields.expMonth.selectInfo.options; + if (siOptions.length === 12) { + index = parseInt(card.expMonth, null) - 1; + } else if (siOptions.length === 13) { + if ( + siOptions[0][0] != null && + siOptions[0][0] !== "" && + (siOptions[12][0] == null || siOptions[12][0] === "") + ) { + index = parseInt(card.expMonth, null) - 1; + } else { + index = parseInt(card.expMonth, null); + } + } + + if (index != null) { + const option = siOptions[index]; + if (option.length > 1) { + expMonth = option[1]; + } + } + } else if ( + (this.fieldAttrsContain(fillFields.expMonth, "mm") || + fillFields.expMonth.maxLength === 2) && + expMonth.length === 1 + ) { + expMonth = "0" + expMonth; + } + + filledFields[fillFields.expMonth.opid] = fillFields.expMonth; + this.fillByOpid(fillScript, fillFields.expMonth, expMonth); + } + + if (fillFields.expYear && this.hasValue(card.expYear)) { + let expYear: string = card.expYear; + if (fillFields.expYear.selectInfo && fillFields.expYear.selectInfo.options) { + for (let i = 0; i < fillFields.expYear.selectInfo.options.length; i++) { + const o: [string, string] = fillFields.expYear.selectInfo.options[i]; + if (o[0] === card.expYear || o[1] === card.expYear) { + expYear = o[1]; + break; + } + if ( + o[1].length === 2 && + card.expYear.length === 4 && + o[1] === card.expYear.substring(2) + ) { + expYear = o[1]; + break; + } + const colonIndex = o[1].indexOf(":"); + if (colonIndex > -1 && o[1].length > colonIndex + 1) { + const val = o[1].substring(colonIndex + 2); + if (val != null && val.trim() !== "" && val === card.expYear) { + expYear = o[1]; + break; + } + } + } + } else if ( + this.fieldAttrsContain(fillFields.expYear, "yyyy") || + fillFields.expYear.maxLength === 4 + ) { + if (expYear.length === 2) { + expYear = "20" + expYear; + } + } else if ( + this.fieldAttrsContain(fillFields.expYear, "yy") || + fillFields.expYear.maxLength === 2 + ) { + if (expYear.length === 4) { + expYear = expYear.substr(2); + } + } + + filledFields[fillFields.expYear.opid] = fillFields.expYear; + this.fillByOpid(fillScript, fillFields.expYear, expYear); + } + + if (fillFields.exp && this.hasValue(card.expMonth) && this.hasValue(card.expYear)) { + const fullMonth = ("0" + card.expMonth).slice(-2); + + let fullYear: string = card.expYear; + let partYear: string = null; + if (fullYear.length === 2) { + partYear = fullYear; + fullYear = "20" + fullYear; + } else if (fullYear.length === 4) { + partYear = fullYear.substr(2, 2); + } + + let exp: string = null; + for (let i = 0; i < CreditCardAutoFillConstants.MonthAbbr.length; i++) { + if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.MonthAbbr[i] + + "/" + + CreditCardAutoFillConstants.YearAbbrShort[i] + ) && + partYear != null + ) { + exp = fullMonth + "/" + partYear; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.MonthAbbr[i] + + "/" + + CreditCardAutoFillConstants.YearAbbrLong[i] + ) + ) { + exp = fullMonth + "/" + fullYear; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.YearAbbrShort[i] + + "/" + + CreditCardAutoFillConstants.MonthAbbr[i] + ) && + partYear != null + ) { + exp = partYear + "/" + fullMonth; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.YearAbbrLong[i] + + "/" + + CreditCardAutoFillConstants.MonthAbbr[i] + ) + ) { + exp = fullYear + "/" + fullMonth; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.MonthAbbr[i] + + "-" + + CreditCardAutoFillConstants.YearAbbrShort[i] + ) && + partYear != null + ) { + exp = fullMonth + "-" + partYear; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.MonthAbbr[i] + + "-" + + CreditCardAutoFillConstants.YearAbbrLong[i] + ) + ) { + exp = fullMonth + "-" + fullYear; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.YearAbbrShort[i] + + "-" + + CreditCardAutoFillConstants.MonthAbbr[i] + ) && + partYear != null + ) { + exp = partYear + "-" + fullMonth; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.YearAbbrLong[i] + + "-" + + CreditCardAutoFillConstants.MonthAbbr[i] + ) + ) { + exp = fullYear + "-" + fullMonth; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.YearAbbrShort[i] + CreditCardAutoFillConstants.MonthAbbr[i] + ) && + partYear != null + ) { + exp = partYear + fullMonth; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.YearAbbrLong[i] + CreditCardAutoFillConstants.MonthAbbr[i] + ) + ) { + exp = fullYear + fullMonth; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.MonthAbbr[i] + CreditCardAutoFillConstants.YearAbbrShort[i] + ) && + partYear != null + ) { + exp = fullMonth + partYear; + } else if ( + this.fieldAttrsContain( + fillFields.exp, + CreditCardAutoFillConstants.MonthAbbr[i] + CreditCardAutoFillConstants.YearAbbrLong[i] + ) + ) { + exp = fullMonth + fullYear; + } + + if (exp != null) { + break; + } + } + + if (exp == null) { + exp = fullYear + "-" + fullMonth; + } + + this.makeScriptActionWithValue(fillScript, exp, fillFields.exp, filledFields); + } + + return fillScript; + } + + private fieldAttrsContain(field: any, containsVal: string) { + if (!field) { + return false; + } + + let doesContain = false; + CreditCardAutoFillConstants.CardAttributesExtended.forEach((attr) => { + // eslint-disable-next-line + if (doesContain || !field.hasOwnProperty(attr) || !field[attr]) { + return; + } + + let val = field[attr]; + val = val.replace(/ /g, "").toLowerCase(); + doesContain = val.indexOf(containsVal) > -1; + }); + + return doesContain; + } + + private generateIdentityFillScript( + fillScript: AutofillScript, + pageDetails: any, + filledFields: { [id: string]: AutofillField }, + options: any + ): AutofillScript { + if (!options.cipher.identity) { + return null; + } + + const fillFields: { [id: string]: AutofillField } = {}; + + pageDetails.fields.forEach((f: any) => { + if (this.forCustomFieldsOnly(f)) { + return; + } + + if (this.isExcludedType(f.type, AutoFillConstants.ExcludedAutofillTypes)) { + return; + } + + for (let i = 0; i < IdentityAutoFillConstants.IdentityAttributes.length; i++) { + const attr = IdentityAutoFillConstants.IdentityAttributes[i]; + // eslint-disable-next-line + if (!f.hasOwnProperty(attr) || !f[attr] || !f.viewable) { + continue; + } + + // ref https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill + // ref https://developers.google.com/web/fundamentals/design-and-ux/input/forms/ + if ( + !fillFields.name && + this.isFieldMatch( + f[attr], + IdentityAutoFillConstants.FullNameFieldNames, + IdentityAutoFillConstants.FullNameFieldNameValues + ) + ) { + fillFields.name = f; + break; + } else if ( + !fillFields.firstName && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.FirstnameFieldNames) + ) { + fillFields.firstName = f; + break; + } else if ( + !fillFields.middleName && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.MiddlenameFieldNames) + ) { + fillFields.middleName = f; + break; + } else if ( + !fillFields.lastName && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.LastnameFieldNames) + ) { + fillFields.lastName = f; + break; + } else if ( + !fillFields.title && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.TitleFieldNames) + ) { + fillFields.title = f; + break; + } else if ( + !fillFields.email && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.EmailFieldNames) + ) { + fillFields.email = f; + break; + } else if ( + !fillFields.address && + this.isFieldMatch( + f[attr], + IdentityAutoFillConstants.AddressFieldNames, + IdentityAutoFillConstants.AddressFieldNameValues + ) + ) { + fillFields.address = f; + break; + } else if ( + !fillFields.address1 && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.Address1FieldNames) + ) { + fillFields.address1 = f; + break; + } else if ( + !fillFields.address2 && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.Address2FieldNames) + ) { + fillFields.address2 = f; + break; + } else if ( + !fillFields.address3 && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.Address3FieldNames) + ) { + fillFields.address3 = f; + break; + } else if ( + !fillFields.postalCode && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.PostalCodeFieldNames) + ) { + fillFields.postalCode = f; + break; + } else if ( + !fillFields.city && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.CityFieldNames) + ) { + fillFields.city = f; + break; + } else if ( + !fillFields.state && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.StateFieldNames) + ) { + fillFields.state = f; + break; + } else if ( + !fillFields.country && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.CountryFieldNames) + ) { + fillFields.country = f; + break; + } else if ( + !fillFields.phone && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.PhoneFieldNames) + ) { + fillFields.phone = f; + break; + } else if ( + !fillFields.username && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.UserNameFieldNames) + ) { + fillFields.username = f; + break; + } else if ( + !fillFields.company && + this.isFieldMatch(f[attr], IdentityAutoFillConstants.CompanyFieldNames) + ) { + fillFields.company = f; + break; + } + } + }); + + const identity = options.cipher.identity; + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "title"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "firstName"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "middleName"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "lastName"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "address1"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "address2"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "address3"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "city"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "postalCode"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "company"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "email"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "phone"); + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "username"); + + let filledState = false; + if (fillFields.state && identity.state && identity.state.length > 2) { + const stateLower = identity.state.toLowerCase(); + const isoState = + IdentityAutoFillConstants.IsoStates[stateLower] || + IdentityAutoFillConstants.IsoProvinces[stateLower]; + if (isoState) { + filledState = true; + this.makeScriptActionWithValue(fillScript, isoState, fillFields.state, filledFields); + } + } + + if (!filledState) { + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "state"); + } + + let filledCountry = false; + if (fillFields.country && identity.country && identity.country.length > 2) { + const countryLower = identity.country.toLowerCase(); + const isoCountry = IdentityAutoFillConstants.IsoCountries[countryLower]; + if (isoCountry) { + filledCountry = true; + this.makeScriptActionWithValue(fillScript, isoCountry, fillFields.country, filledFields); + } + } + + if (!filledCountry) { + this.makeScriptAction(fillScript, identity, fillFields, filledFields, "country"); + } + + if (fillFields.name && (identity.firstName || identity.lastName)) { + let fullName = ""; + if (this.hasValue(identity.firstName)) { + fullName = identity.firstName; + } + if (this.hasValue(identity.middleName)) { + if (fullName !== "") { + fullName += " "; + } + fullName += identity.middleName; + } + if (this.hasValue(identity.lastName)) { + if (fullName !== "") { + fullName += " "; + } + fullName += identity.lastName; + } + + this.makeScriptActionWithValue(fillScript, fullName, fillFields.name, filledFields); + } + + if (fillFields.address && this.hasValue(identity.address1)) { + let address = ""; + if (this.hasValue(identity.address1)) { + address = identity.address1; + } + if (this.hasValue(identity.address2)) { + if (address !== "") { + address += ", "; + } + address += identity.address2; + } + if (this.hasValue(identity.address3)) { + if (address !== "") { + address += ", "; + } + address += identity.address3; + } + + this.makeScriptActionWithValue(fillScript, address, fillFields.address, filledFields); + } + + return fillScript; + } + + private isExcludedType(type: string, excludedTypes: string[]) { + return excludedTypes.indexOf(type) > -1; + } + + private isFieldMatch(value: string, options: string[], containsOptions?: string[]): boolean { + value = value + .trim() + .toLowerCase() + .replace(/[^a-zA-Z0-9]+/g, ""); + for (let i = 0; i < options.length; i++) { + let option = options[i]; + const checkValueContains = containsOptions == null || containsOptions.indexOf(option) > -1; + option = option.toLowerCase().replace(/-/g, ""); + if (value === option || (checkValueContains && value.indexOf(option) > -1)) { + return true; + } + } + + return false; + } + + private makeScriptAction( + fillScript: AutofillScript, + cipherData: any, + fillFields: { [id: string]: AutofillField }, + filledFields: { [id: string]: AutofillField }, + dataProp: string, + fieldProp?: string + ) { + fieldProp = fieldProp || dataProp; + this.makeScriptActionWithValue( + fillScript, + cipherData[dataProp], + fillFields[fieldProp], + filledFields + ); + } + + private makeScriptActionWithValue( + fillScript: AutofillScript, + dataValue: any, + field: AutofillField, + filledFields: { [id: string]: AutofillField } + ) { + let doFill = false; + if (this.hasValue(dataValue) && field) { + if (field.type === "select-one" && field.selectInfo && field.selectInfo.options) { + for (let i = 0; i < field.selectInfo.options.length; i++) { + const option = field.selectInfo.options[i]; + for (let j = 0; j < option.length; j++) { + if (this.hasValue(option[j]) && option[j].toLowerCase() === dataValue.toLowerCase()) { + doFill = true; + if (option.length > 1) { + dataValue = option[1]; + } + break; + } + } + + if (doFill) { + break; + } + } + } else { + doFill = true; + } + } + + if (doFill) { + filledFields[field.opid] = field; + this.fillByOpid(fillScript, field, dataValue); + } + } + + private loadPasswordFields( + pageDetails: AutofillPageDetails, + canBeHidden: boolean, + canBeReadOnly: boolean, + mustBeEmpty: boolean, + fillNewPassword: boolean + ) { + const arr: AutofillField[] = []; + pageDetails.fields.forEach((f) => { + if (this.forCustomFieldsOnly(f)) { + return; + } + + const isPassword = f.type === "password"; + const valueIsLikePassword = (value: string) => { + if (value == null) { + return false; + } + // Removes all whitespace, _ and - characters + // eslint-disable-next-line + const cleanedValue = value.toLowerCase().replace(/[\s_\-]/g, ""); + + if (cleanedValue.indexOf("password") < 0) { + return false; + } + + if (AutoFillConstants.PasswordFieldIgnoreList.some((i) => cleanedValue.indexOf(i) > -1)) { + return false; + } + + return true; + }; + const isLikePassword = () => { + if (f.type !== "text") { + return false; + } + if (valueIsLikePassword(f.htmlID)) { + return true; + } + if (valueIsLikePassword(f.htmlName)) { + return true; + } + if (valueIsLikePassword(f.placeholder)) { + return true; + } + return false; + }; + if ( + !f.disabled && + (canBeReadOnly || !f.readonly) && + (isPassword || isLikePassword()) && + (canBeHidden || f.viewable) && + (!mustBeEmpty || f.value == null || f.value.trim() === "") && + (fillNewPassword || f.autoCompleteType !== "new-password") + ) { + arr.push(f); + } + }); + return arr; + } + + private findUsernameField( + pageDetails: AutofillPageDetails, + passwordField: AutofillField, + canBeHidden: boolean, + canBeReadOnly: boolean, + withoutForm: boolean + ) { + let usernameField: AutofillField = null; + for (let i = 0; i < pageDetails.fields.length; i++) { + const f = pageDetails.fields[i]; + if (this.forCustomFieldsOnly(f)) { + continue; + } + + if (f.elementNumber >= passwordField.elementNumber) { + break; + } + + if ( + !f.disabled && + (canBeReadOnly || !f.readonly) && + (withoutForm || f.form === passwordField.form) && + (canBeHidden || f.viewable) && + (f.type === "text" || f.type === "email" || f.type === "tel") + ) { + usernameField = f; + + if (this.findMatchingFieldIndex(f, AutoFillConstants.UsernameFieldNames) > -1) { + // We found an exact match. No need to keep looking. + break; + } + } + } + + return usernameField; + } + + private findMatchingFieldIndex(field: AutofillField, names: string[]): number { + for (let i = 0; i < names.length; i++) { + if (names[i].indexOf("=") > -1) { + if (this.fieldPropertyIsPrefixMatch(field, "htmlID", names[i], "id")) { + return i; + } + if (this.fieldPropertyIsPrefixMatch(field, "htmlName", names[i], "name")) { + return i; + } + if (this.fieldPropertyIsPrefixMatch(field, "label-tag", names[i], "label")) { + return i; + } + if (this.fieldPropertyIsPrefixMatch(field, "label-aria", names[i], "label")) { + return i; + } + if (this.fieldPropertyIsPrefixMatch(field, "placeholder", names[i], "placeholder")) { + return i; + } + } + + if (this.fieldPropertyIsMatch(field, "htmlID", names[i])) { + return i; + } + if (this.fieldPropertyIsMatch(field, "htmlName", names[i])) { + return i; + } + if (this.fieldPropertyIsMatch(field, "label-tag", names[i])) { + return i; + } + if (this.fieldPropertyIsMatch(field, "label-aria", names[i])) { + return i; + } + if (this.fieldPropertyIsMatch(field, "placeholder", names[i])) { + return i; + } + } + + return -1; + } + + private fieldPropertyIsPrefixMatch( + field: any, + property: string, + name: string, + prefix: string, + separator = "=" + ): boolean { + if (name.indexOf(prefix + separator) === 0) { + const sepIndex = name.indexOf(separator); + const val = name.substring(sepIndex + 1); + return val != null && this.fieldPropertyIsMatch(field, property, val); + } + return false; + } + + private fieldPropertyIsMatch(field: any, property: string, name: string): boolean { + let fieldVal = field[property] as string; + if (!this.hasValue(fieldVal)) { + return false; + } + + fieldVal = fieldVal.trim().replace(/(?:\r\n|\r|\n)/g, ""); + if (name.startsWith("regex=")) { + try { + const regexParts = name.split("=", 2); + if (regexParts.length === 2) { + const regex = new RegExp(regexParts[1], "i"); + return regex.test(fieldVal); + } + } catch (e) { + this.logService.error(e); + } + } else if (name.startsWith("csv=")) { + const csvParts = name.split("=", 2); + if (csvParts.length === 2) { + const csvVals = csvParts[1].split(","); + for (let i = 0; i < csvVals.length; i++) { + const val = csvVals[i]; + if (val != null && val.trim().toLowerCase() === fieldVal.toLowerCase()) { + return true; + } + } + return false; + } + } + + return fieldVal.toLowerCase() === name; + } + + private fieldIsFuzzyMatch(field: AutofillField, names: string[]): boolean { + if (this.hasValue(field.htmlID) && this.fuzzyMatch(names, field.htmlID)) { + return true; + } + if (this.hasValue(field.htmlName) && this.fuzzyMatch(names, field.htmlName)) { + return true; + } + if (this.hasValue(field["label-tag"]) && this.fuzzyMatch(names, field["label-tag"])) { + return true; + } + if (this.hasValue(field.placeholder) && this.fuzzyMatch(names, field.placeholder)) { + return true; + } + if (this.hasValue(field["label-left"]) && this.fuzzyMatch(names, field["label-left"])) { + return true; + } + if (this.hasValue(field["label-top"]) && this.fuzzyMatch(names, field["label-top"])) { + return true; + } + if (this.hasValue(field["label-aria"]) && this.fuzzyMatch(names, field["label-aria"])) { + return true; + } + + return false; + } + + private fuzzyMatch(options: string[], value: string): boolean { + if (options == null || options.length === 0 || value == null || value === "") { + return false; + } + + value = value + .replace(/(?:\r\n|\r|\n)/g, "") + .trim() + .toLowerCase(); + + for (let i = 0; i < options.length; i++) { + if (value.indexOf(options[i]) > -1) { + return true; + } + } + + return false; + } + + private hasValue(str: string): boolean { + return str && str !== ""; + } + + private setFillScriptForFocus( + filledFields: { [id: string]: AutofillField }, + fillScript: AutofillScript + ): AutofillScript { + let lastField: AutofillField = null; + let lastPasswordField: AutofillField = null; + + for (const opid in filledFields) { + // eslint-disable-next-line + if (filledFields.hasOwnProperty(opid) && filledFields[opid].viewable) { + lastField = filledFields[opid]; + + if (filledFields[opid].type === "password") { + lastPasswordField = filledFields[opid]; + } + } + } + + // Prioritize password field over others. + if (lastPasswordField) { + fillScript.script.push(["focus_by_opid", lastPasswordField.opid]); + } else if (lastField) { + fillScript.script.push(["focus_by_opid", lastField.opid]); + } + + return fillScript; + } + + private fillByOpid(fillScript: AutofillScript, field: AutofillField, value: string): void { + if (field.maxLength && value && value.length > field.maxLength) { + value = value.substr(0, value.length); + } + if (field.tagName !== "span") { + fillScript.script.push(["click_on_opid", field.opid]); + fillScript.script.push(["focus_by_opid", field.opid]); + } + fillScript.script.push(["fill_by_opid", field.opid, value]); + } + + private forCustomFieldsOnly(field: AutofillField): boolean { + return field.tagName === "span"; + } +} diff --git a/apps/browser/src/services/autofillConstants.ts b/apps/browser/src/services/autofillConstants.ts new file mode 100644 index 0000000000..94b54a7150 --- /dev/null +++ b/apps/browser/src/services/autofillConstants.ts @@ -0,0 +1,739 @@ +export class AutoFillConstants { + static readonly UsernameFieldNames: string[] = [ + // English + "username", + "user name", + "email", + "email address", + "e-mail", + "e-mail address", + "userid", + "user id", + "customer id", + "login id", + // German + "benutzername", + "benutzer name", + "email adresse", + "e-mail adresse", + "benutzerid", + "benutzer id", + ]; + + static readonly PasswordFieldIgnoreList: string[] = [ + "onetimepassword", + "captcha", + "findanything", + "forgot", + ]; + + static readonly ExcludedAutofillTypes: string[] = [ + "radio", + "checkbox", + "hidden", + "file", + "button", + "image", + "reset", + "search", + ]; +} + +export class CreditCardAutoFillConstants { + static readonly CardAttributes: string[] = [ + "autoCompleteType", + "data-stripe", + "htmlName", + "htmlID", + "label-tag", + "placeholder", + "label-left", + "label-top", + "data-recurly", + ]; + + static readonly CardAttributesExtended: string[] = [ + ...CreditCardAutoFillConstants.CardAttributes, + "label-right", + ]; + + static readonly CardHolderFieldNames: string[] = [ + "cc-name", + "card-name", + "cardholder-name", + "cardholder", + "name", + "nom", + ]; + + static readonly CardHolderFieldNameValues: string[] = [ + "cc-name", + "card-name", + "cardholder-name", + "cardholder", + "tbName", + ]; + + static readonly CardNumberFieldNames: string[] = [ + "cc-number", + "cc-num", + "card-number", + "card-num", + "number", + "cc", + "cc-no", + "card-no", + "credit-card", + "numero-carte", + "carte", + "carte-credit", + "num-carte", + "cb-num", + ]; + + static readonly CardNumberFieldNameValues: string[] = [ + "cc-number", + "cc-num", + "card-number", + "card-num", + "cc-no", + "card-no", + "numero-carte", + "num-carte", + "cb-num", + ]; + + static readonly CardExpiryFieldNames: string[] = [ + "cc-exp", + "card-exp", + "cc-expiration", + "card-expiration", + "cc-ex", + "card-ex", + "card-expire", + "card-expiry", + "validite", + "expiration", + "expiry", + "mm-yy", + "mm-yyyy", + "yy-mm", + "yyyy-mm", + "expiration-date", + "payment-card-expiration", + "payment-cc-date", + ]; + + static readonly CardExpiryFieldNameValues: string[] = [ + "mm-yy", + "mm-yyyy", + "yy-mm", + "yyyy-mm", + "expiration-date", + "payment-card-expiration", + ]; + + static readonly ExpiryMonthFieldNames: string[] = [ + "exp-month", + "cc-exp-month", + "cc-month", + "card-month", + "cc-mo", + "card-mo", + "exp-mo", + "card-exp-mo", + "cc-exp-mo", + "card-expiration-month", + "expiration-month", + "cc-mm", + "cc-m", + "card-mm", + "card-m", + "card-exp-mm", + "cc-exp-mm", + "exp-mm", + "exp-m", + "expire-month", + "expire-mo", + "expiry-month", + "expiry-mo", + "card-expire-month", + "card-expire-mo", + "card-expiry-month", + "card-expiry-mo", + "mois-validite", + "mois-expiration", + "m-validite", + "m-expiration", + "expiry-date-field-month", + "expiration-date-month", + "expiration-date-mm", + "exp-mon", + "validity-mo", + "exp-date-mo", + "cb-date-mois", + "date-m", + ]; + + static readonly ExpiryYearFieldNames: string[] = [ + "exp-year", + "cc-exp-year", + "cc-year", + "card-year", + "cc-yr", + "card-yr", + "exp-yr", + "card-exp-yr", + "cc-exp-yr", + "card-expiration-year", + "expiration-year", + "cc-yy", + "cc-y", + "card-yy", + "card-y", + "card-exp-yy", + "cc-exp-yy", + "exp-yy", + "exp-y", + "cc-yyyy", + "card-yyyy", + "card-exp-yyyy", + "cc-exp-yyyy", + "expire-year", + "expire-yr", + "expiry-year", + "expiry-yr", + "card-expire-year", + "card-expire-yr", + "card-expiry-year", + "card-expiry-yr", + "an-validite", + "an-expiration", + "annee-validite", + "annee-expiration", + "expiry-date-field-year", + "expiration-date-year", + "cb-date-ann", + "expiration-date-yy", + "expiration-date-yyyy", + "validity-year", + "exp-date-year", + "date-y", + ]; + + static readonly CVVFieldNames: string[] = [ + "cvv", + "cvc", + "cvv2", + "cc-csc", + "cc-cvv", + "card-csc", + "card-cvv", + "cvd", + "cid", + "cvc2", + "cnv", + "cvn2", + "cc-code", + "card-code", + "code-securite", + "security-code", + "crypto", + "card-verif", + "verification-code", + "csc", + "ccv", + ]; + + static readonly CardBrandFieldNames: string[] = [ + "cc-type", + "card-type", + "card-brand", + "cc-brand", + "cb-type", + ]; + + // Each index represents a language. These three arrays should all be the same length. + // 0: English, 1: Danish, 2: German/Dutch, 3: French/Spanish/Italian, 4: Russian, 5: Portuguese + static readonly MonthAbbr = ["mm", "mm", "mm", "mm", "mm", "mm"]; + static readonly YearAbbrShort = ["yy", "åå", "jj", "aa", "гг", "rr"]; + static readonly YearAbbrLong = ["yyyy", "åååå", "jjjj", "aa", "гггг", "rrrr"]; +} + +export class IdentityAutoFillConstants { + static readonly IdentityAttributes: string[] = [ + "autoCompleteType", + "data-stripe", + "htmlName", + "htmlID", + "label-tag", + "placeholder", + "label-left", + "label-top", + "data-recurly", + ]; + + static readonly FullNameFieldNames: string[] = ["name", "full-name", "your-name"]; + + static readonly FullNameFieldNameValues: string[] = ["full-name", "your-name"]; + + static readonly TitleFieldNames: string[] = ["honorific-prefix", "prefix", "title"]; + + static readonly FirstnameFieldNames: string[] = [ + // English + "f-name", + "first-name", + "given-name", + "first-n", + // German + "vorname", + ]; + + static readonly MiddlenameFieldNames: string[] = [ + "m-name", + "middle-name", + "additional-name", + "middle-initial", + "middle-n", + "middle-i", + ]; + + static readonly LastnameFieldNames: string[] = [ + // English + "l-name", + "last-name", + "s-name", + "surname", + "family-name", + "family-n", + "last-n", + // German + "nachname", + "familienname", + ]; + + static readonly EmailFieldNames: string[] = ["e-mail", "email-address"]; + + static readonly AddressFieldNames: string[] = [ + "address", + "street-address", + "addr", + "street", + "mailing-addr", + "billing-addr", + "mail-addr", + "bill-addr", + ]; + + static readonly AddressFieldNameValues: string[] = [ + "mailing-addr", + "billing-addr", + "mail-addr", + "bill-addr", + ]; + + static readonly Address1FieldNames: string[] = [ + "address-1", + "address-line-1", + "addr-1", + "street-1", + ]; + + static readonly Address2FieldNames: string[] = [ + "address-2", + "address-line-2", + "addr-2", + "street-2", + ]; + + static readonly Address3FieldNames: string[] = [ + "address-3", + "address-line-3", + "addr-3", + "street-3", + ]; + + static readonly PostalCodeFieldNames: string[] = [ + "postal", + "zip", + "zip2", + "zip-code", + "postal-code", + "post-code", + "address-zip", + "address-postal", + "address-code", + "address-postal-code", + "address-zip-code", + ]; + + static readonly CityFieldNames: string[] = [ + "city", + "town", + "address-level-2", + "address-city", + "address-town", + ]; + + static readonly StateFieldNames: string[] = [ + "state", + "province", + "provence", + "address-level-1", + "address-state", + "address-province", + ]; + + static readonly CountryFieldNames: string[] = [ + "country", + "country-code", + "country-name", + "address-country", + "address-country-name", + "address-country-code", + ]; + + static readonly PhoneFieldNames: string[] = [ + "phone", + "mobile", + "mobile-phone", + "tel", + "telephone", + "phone-number", + ]; + + static readonly UserNameFieldNames: string[] = ["user-name", "user-id", "screen-name"]; + + static readonly CompanyFieldNames: string[] = [ + "company", + "company-name", + "organization", + "organization-name", + ]; + + static readonly IsoCountries: { [id: string]: string } = { + afghanistan: "AF", + "aland islands": "AX", + albania: "AL", + algeria: "DZ", + "american samoa": "AS", + andorra: "AD", + angola: "AO", + anguilla: "AI", + antarctica: "AQ", + "antigua and barbuda": "AG", + argentina: "AR", + armenia: "AM", + aruba: "AW", + australia: "AU", + austria: "AT", + azerbaijan: "AZ", + bahamas: "BS", + bahrain: "BH", + bangladesh: "BD", + barbados: "BB", + belarus: "BY", + belgium: "BE", + belize: "BZ", + benin: "BJ", + bermuda: "BM", + bhutan: "BT", + bolivia: "BO", + "bosnia and herzegovina": "BA", + botswana: "BW", + "bouvet island": "BV", + brazil: "BR", + "british indian ocean territory": "IO", + "brunei darussalam": "BN", + bulgaria: "BG", + "burkina faso": "BF", + burundi: "BI", + cambodia: "KH", + cameroon: "CM", + canada: "CA", + "cape verde": "CV", + "cayman islands": "KY", + "central african republic": "CF", + chad: "TD", + chile: "CL", + china: "CN", + "christmas island": "CX", + "cocos (keeling) islands": "CC", + colombia: "CO", + comoros: "KM", + congo: "CG", + "congo, democratic republic": "CD", + "cook islands": "CK", + "costa rica": "CR", + "cote d'ivoire": "CI", + croatia: "HR", + cuba: "CU", + cyprus: "CY", + "czech republic": "CZ", + denmark: "DK", + djibouti: "DJ", + dominica: "DM", + "dominican republic": "DO", + ecuador: "EC", + egypt: "EG", + "el salvador": "SV", + "equatorial guinea": "GQ", + eritrea: "ER", + estonia: "EE", + ethiopia: "ET", + "falkland islands": "FK", + "faroe islands": "FO", + fiji: "FJ", + finland: "FI", + france: "FR", + "french guiana": "GF", + "french polynesia": "PF", + "french southern territories": "TF", + gabon: "GA", + gambia: "GM", + georgia: "GE", + germany: "DE", + ghana: "GH", + gibraltar: "GI", + greece: "GR", + greenland: "GL", + grenada: "GD", + guadeloupe: "GP", + guam: "GU", + guatemala: "GT", + guernsey: "GG", + guinea: "GN", + "guinea-bissau": "GW", + guyana: "GY", + haiti: "HT", + "heard island & mcdonald islands": "HM", + "holy see (vatican city state)": "VA", + honduras: "HN", + "hong kong": "HK", + hungary: "HU", + iceland: "IS", + india: "IN", + indonesia: "ID", + "iran, islamic republic of": "IR", + iraq: "IQ", + ireland: "IE", + "isle of man": "IM", + israel: "IL", + italy: "IT", + jamaica: "JM", + japan: "JP", + jersey: "JE", + jordan: "JO", + kazakhstan: "KZ", + kenya: "KE", + kiribati: "KI", + "republic of korea": "KR", + "south korea": "KR", + "democratic people's republic of korea": "KP", + "north korea": "KP", + kuwait: "KW", + kyrgyzstan: "KG", + "lao people's democratic republic": "LA", + latvia: "LV", + lebanon: "LB", + lesotho: "LS", + liberia: "LR", + "libyan arab jamahiriya": "LY", + liechtenstein: "LI", + lithuania: "LT", + luxembourg: "LU", + macao: "MO", + macedonia: "MK", + madagascar: "MG", + malawi: "MW", + malaysia: "MY", + maldives: "MV", + mali: "ML", + malta: "MT", + "marshall islands": "MH", + martinique: "MQ", + mauritania: "MR", + mauritius: "MU", + mayotte: "YT", + mexico: "MX", + "micronesia, federated states of": "FM", + moldova: "MD", + monaco: "MC", + mongolia: "MN", + montenegro: "ME", + montserrat: "MS", + morocco: "MA", + mozambique: "MZ", + myanmar: "MM", + namibia: "NA", + nauru: "NR", + nepal: "NP", + netherlands: "NL", + "netherlands antilles": "AN", + "new caledonia": "NC", + "new zealand": "NZ", + nicaragua: "NI", + niger: "NE", + nigeria: "NG", + niue: "NU", + "norfolk island": "NF", + "northern mariana islands": "MP", + norway: "NO", + oman: "OM", + pakistan: "PK", + palau: "PW", + "palestinian territory, occupied": "PS", + panama: "PA", + "papua new guinea": "PG", + paraguay: "PY", + peru: "PE", + philippines: "PH", + pitcairn: "PN", + poland: "PL", + portugal: "PT", + "puerto rico": "PR", + qatar: "QA", + reunion: "RE", + romania: "RO", + "russian federation": "RU", + rwanda: "RW", + "saint barthelemy": "BL", + "saint helena": "SH", + "saint kitts and nevis": "KN", + "saint lucia": "LC", + "saint martin": "MF", + "saint pierre and miquelon": "PM", + "saint vincent and grenadines": "VC", + samoa: "WS", + "san marino": "SM", + "sao tome and principe": "ST", + "saudi arabia": "SA", + senegal: "SN", + serbia: "RS", + seychelles: "SC", + "sierra leone": "SL", + singapore: "SG", + slovakia: "SK", + slovenia: "SI", + "solomon islands": "SB", + somalia: "SO", + "south africa": "ZA", + "south georgia and sandwich isl.": "GS", + spain: "ES", + "sri lanka": "LK", + sudan: "SD", + suriname: "SR", + "svalbard and jan mayen": "SJ", + swaziland: "SZ", + sweden: "SE", + switzerland: "CH", + "syrian arab republic": "SY", + taiwan: "TW", + tajikistan: "TJ", + tanzania: "TZ", + thailand: "TH", + "timor-leste": "TL", + togo: "TG", + tokelau: "TK", + tonga: "TO", + "trinidad and tobago": "TT", + tunisia: "TN", + turkey: "TR", + turkmenistan: "TM", + "turks and caicos islands": "TC", + tuvalu: "TV", + uganda: "UG", + ukraine: "UA", + "united arab emirates": "AE", + "united kingdom": "GB", + "united states": "US", + "united states outlying islands": "UM", + uruguay: "UY", + uzbekistan: "UZ", + vanuatu: "VU", + venezuela: "VE", + vietnam: "VN", + "virgin islands, british": "VG", + "virgin islands, u.s.": "VI", + "wallis and futuna": "WF", + "western sahara": "EH", + yemen: "YE", + zambia: "ZM", + zimbabwe: "ZW", + }; + + static readonly IsoStates: { [id: string]: string } = { + alabama: "AL", + alaska: "AK", + "american samoa": "AS", + arizona: "AZ", + arkansas: "AR", + california: "CA", + colorado: "CO", + connecticut: "CT", + delaware: "DE", + "district of columbia": "DC", + "federated states of micronesia": "FM", + florida: "FL", + georgia: "GA", + guam: "GU", + hawaii: "HI", + idaho: "ID", + illinois: "IL", + indiana: "IN", + iowa: "IA", + kansas: "KS", + kentucky: "KY", + louisiana: "LA", + maine: "ME", + "marshall islands": "MH", + maryland: "MD", + massachusetts: "MA", + michigan: "MI", + minnesota: "MN", + mississippi: "MS", + missouri: "MO", + montana: "MT", + nebraska: "NE", + nevada: "NV", + "new hampshire": "NH", + "new jersey": "NJ", + "new mexico": "NM", + "new york": "NY", + "north carolina": "NC", + "north dakota": "ND", + "northern mariana islands": "MP", + ohio: "OH", + oklahoma: "OK", + oregon: "OR", + palau: "PW", + pennsylvania: "PA", + "puerto rico": "PR", + "rhode island": "RI", + "south carolina": "SC", + "south dakota": "SD", + tennessee: "TN", + texas: "TX", + utah: "UT", + vermont: "VT", + "virgin islands": "VI", + virginia: "VA", + washington: "WA", + "west virginia": "WV", + wisconsin: "WI", + wyoming: "WY", + }; + + static readonly IsoProvinces: { [id: string]: string } = { + alberta: "AB", + "british columbia": "BC", + manitoba: "MB", + "new brunswick": "NB", + "newfoundland and labrador": "NL", + "nova scotia": "NS", + ontario: "ON", + "prince edward island": "PE", + quebec: "QC", + saskatchewan: "SK", + }; +} diff --git a/apps/browser/src/services/browserCrypto.service.ts b/apps/browser/src/services/browserCrypto.service.ts new file mode 100644 index 0000000000..0eb0f94b17 --- /dev/null +++ b/apps/browser/src/services/browserCrypto.service.ts @@ -0,0 +1,13 @@ +import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions"; +import { CryptoService } from "jslib-common/services/crypto.service"; + +export class BrowserCryptoService extends CryptoService { + protected async retrieveKeyFromStorage(keySuffix: KeySuffixOptions) { + if (keySuffix === "biometric") { + await this.platformUtilService.authenticateBiometric(); + return (await this.getKey())?.keyB64; + } + + return await super.retrieveKeyFromStorage(keySuffix); + } +} diff --git a/apps/browser/src/services/browserMessaging.service.ts b/apps/browser/src/services/browserMessaging.service.ts new file mode 100644 index 0000000000..f59ac88774 --- /dev/null +++ b/apps/browser/src/services/browserMessaging.service.ts @@ -0,0 +1,8 @@ +import { MessagingService } from "jslib-common/abstractions/messaging.service"; + +export default class BrowserMessagingService implements MessagingService { + send(subscriber: string, arg: any = {}) { + const message = Object.assign({}, { command: subscriber }, arg); + chrome.runtime.sendMessage(message); + } +} diff --git a/apps/browser/src/services/browserMessagingPrivateModeBackground.service.ts b/apps/browser/src/services/browserMessagingPrivateModeBackground.service.ts new file mode 100644 index 0000000000..4ffdf763da --- /dev/null +++ b/apps/browser/src/services/browserMessagingPrivateModeBackground.service.ts @@ -0,0 +1,8 @@ +import { MessagingService } from "jslib-common/abstractions/messaging.service"; + +export default class BrowserMessagingPrivateModeBackgroundService implements MessagingService { + send(subscriber: string, arg: any = {}) { + const message = Object.assign({}, { command: subscriber }, arg); + (window as any).bitwardenPopupMainMessageListener(message); + } +} diff --git a/apps/browser/src/services/browserMessagingPrivateModePopup.service.ts b/apps/browser/src/services/browserMessagingPrivateModePopup.service.ts new file mode 100644 index 0000000000..0f3af10d86 --- /dev/null +++ b/apps/browser/src/services/browserMessagingPrivateModePopup.service.ts @@ -0,0 +1,8 @@ +import { MessagingService } from "jslib-common/abstractions/messaging.service"; + +export default class BrowserMessagingPrivateModePopupService implements MessagingService { + send(subscriber: string, arg: any = {}) { + const message = Object.assign({}, { command: subscriber }, arg); + (window as any).bitwardenBackgroundMessageListener(message); + } +} diff --git a/apps/browser/src/services/browserPlatformUtils.service.spec.ts b/apps/browser/src/services/browserPlatformUtils.service.spec.ts new file mode 100644 index 0000000000..8b93e15c21 --- /dev/null +++ b/apps/browser/src/services/browserPlatformUtils.service.spec.ts @@ -0,0 +1,88 @@ +import { DeviceType } from "jslib-common/enums/deviceType"; + +import BrowserPlatformUtilsService from "./browserPlatformUtils.service"; + +describe("Browser Utils Service", () => { + describe("getBrowser", () => { + const originalUserAgent = navigator.userAgent; + + // Reset the userAgent. + afterAll(() => { + Object.defineProperty(navigator, "userAgent", { + value: originalUserAgent, + }); + }); + + let browserPlatformUtilsService: BrowserPlatformUtilsService; + beforeEach(() => { + (window as any).matchMedia = jest.fn().mockReturnValueOnce({}); + browserPlatformUtilsService = new BrowserPlatformUtilsService(null, null, null, null); + }); + + afterEach(() => { + window.matchMedia = undefined; + (window as any).chrome = undefined; + }); + + it("should detect chrome", () => { + Object.defineProperty(navigator, "userAgent", { + configurable: true, + value: + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36", + }); + + (window as any).chrome = {}; + + expect(browserPlatformUtilsService.getDevice()).toBe(DeviceType.ChromeExtension); + }); + + it("should detect firefox", () => { + Object.defineProperty(navigator, "userAgent", { + configurable: true, + value: "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0", + }); + + expect(browserPlatformUtilsService.getDevice()).toBe(DeviceType.FirefoxExtension); + }); + + it("should detect opera", () => { + Object.defineProperty(navigator, "userAgent", { + configurable: true, + value: + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3175.3 Safari/537.36 OPR/49.0.2695.0 (Edition developer)", + }); + + expect(browserPlatformUtilsService.getDevice()).toBe(DeviceType.OperaExtension); + }); + + it("should detect edge", () => { + Object.defineProperty(navigator, "userAgent", { + configurable: true, + value: + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.74 Safari/537.36 Edg/79.0.309.43", + }); + + expect(browserPlatformUtilsService.getDevice()).toBe(DeviceType.EdgeExtension); + }); + + it("should detect safari", () => { + Object.defineProperty(navigator, "userAgent", { + configurable: true, + value: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, like Gecko) Version/10.0.3 Safari/602.4.8", + }); + + expect(browserPlatformUtilsService.getDevice()).toBe(DeviceType.SafariExtension); + }); + + it("should detect vivaldi", () => { + Object.defineProperty(navigator, "userAgent", { + configurable: true, + value: + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.97 Safari/537.36 Vivaldi/1.94.1008.40", + }); + + expect(browserPlatformUtilsService.getDevice()).toBe(DeviceType.VivaldiExtension); + }); + }); +}); diff --git a/apps/browser/src/services/browserPlatformUtils.service.ts b/apps/browser/src/services/browserPlatformUtils.service.ts new file mode 100644 index 0000000000..f641d14950 --- /dev/null +++ b/apps/browser/src/services/browserPlatformUtils.service.ts @@ -0,0 +1,377 @@ +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ClientType } from "jslib-common/enums/clientType"; +import { DeviceType } from "jslib-common/enums/deviceType"; +import { ThemeType } from "jslib-common/enums/themeType"; + +import { BrowserApi } from "../browser/browserApi"; +import { SafariApp } from "../browser/safariApp"; +import { StateService } from "../services/abstractions/state.service"; + +const DialogPromiseExpiration = 600000; // 10 minutes + +export default class BrowserPlatformUtilsService implements PlatformUtilsService { + private showDialogResolves = new Map void; date: Date }>(); + private passwordDialogResolves = new Map< + number, + { tryResolve: (canceled: boolean, password: string) => Promise; date: Date } + >(); + private deviceCache: DeviceType = null; + private prefersColorSchemeDark = window.matchMedia("(prefers-color-scheme: dark)"); + + constructor( + private messagingService: MessagingService, + private stateService: StateService, + private clipboardWriteCallback: (clipboardValue: string, clearMs: number) => void, + private biometricCallback: () => Promise + ) {} + + getDevice(): DeviceType { + if (this.deviceCache) { + return this.deviceCache; + } + + if ( + navigator.userAgent.indexOf(" Firefox/") !== -1 || + navigator.userAgent.indexOf(" Gecko/") !== -1 + ) { + this.deviceCache = DeviceType.FirefoxExtension; + } else if ( + (!!(window as any).opr && !!opr.addons) || + !!(window as any).opera || + navigator.userAgent.indexOf(" OPR/") >= 0 + ) { + this.deviceCache = DeviceType.OperaExtension; + } else if (navigator.userAgent.indexOf(" Edg/") !== -1) { + this.deviceCache = DeviceType.EdgeExtension; + } else if (navigator.userAgent.indexOf(" Vivaldi/") !== -1) { + this.deviceCache = DeviceType.VivaldiExtension; + } else if ((window as any).chrome && navigator.userAgent.indexOf(" Chrome/") !== -1) { + this.deviceCache = DeviceType.ChromeExtension; + } else if (navigator.userAgent.indexOf(" Safari/") !== -1) { + this.deviceCache = DeviceType.SafariExtension; + } + + return this.deviceCache; + } + + getDeviceString(): string { + const device = DeviceType[this.getDevice()].toLowerCase(); + return device.replace("extension", ""); + } + + getClientType(): ClientType { + return ClientType.Browser; + } + + isFirefox(): boolean { + return this.getDevice() === DeviceType.FirefoxExtension; + } + + isChrome(): boolean { + return this.getDevice() === DeviceType.ChromeExtension; + } + + isEdge(): boolean { + return this.getDevice() === DeviceType.EdgeExtension; + } + + isOpera(): boolean { + return this.getDevice() === DeviceType.OperaExtension; + } + + isVivaldi(): boolean { + return this.getDevice() === DeviceType.VivaldiExtension; + } + + isSafari(): boolean { + return this.getDevice() === DeviceType.SafariExtension; + } + + isIE(): boolean { + return false; + } + + isMacAppStore(): boolean { + return false; + } + + async isViewOpen(): Promise { + if (await BrowserApi.isPopupOpen()) { + return true; + } + + if (this.isSafari()) { + return false; + } + + const sidebarView = this.sidebarViewName(); + const sidebarOpen = + sidebarView != null && chrome.extension.getViews({ type: sidebarView }).length > 0; + if (sidebarOpen) { + return true; + } + + const tabOpen = chrome.extension.getViews({ type: "tab" }).length > 0; + return tabOpen; + } + + lockTimeout(): number { + return null; + } + + launchUri(uri: string, options?: any): void { + BrowserApi.createNewTab(uri, options && options.extensionPage === true); + } + + saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void { + BrowserApi.downloadFile(win, blobData, blobOptions, fileName); + } + + getApplicationVersion(): Promise { + return Promise.resolve(BrowserApi.getApplicationVersion()); + } + + supportsWebAuthn(win: Window): boolean { + return typeof PublicKeyCredential !== "undefined"; + } + + supportsDuo(): boolean { + return true; + } + + showToast( + type: "error" | "success" | "warning" | "info", + title: string, + text: string | string[], + options?: any + ): void { + this.messagingService.send("showToast", { + text: text, + title: title, + type: type, + options: options, + }); + } + + showDialog( + body: string, + title?: string, + confirmText?: string, + cancelText?: string, + type?: string, + bodyIsHtml = false + ) { + const dialogId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); + this.messagingService.send("showDialog", { + text: bodyIsHtml ? null : body, + html: bodyIsHtml ? body : null, + title: title, + confirmText: confirmText, + cancelText: cancelText, + type: type, + dialogId: dialogId, + }); + return new Promise((resolve) => { + this.showDialogResolves.set(dialogId, { resolve: resolve, date: new Date() }); + }); + } + + isDev(): boolean { + return process.env.ENV === "development"; + } + + isSelfHost(): boolean { + return false; + } + + copyToClipboard(text: string, options?: any): void { + let win = window; + let doc = window.document; + if (options && (options.window || options.win)) { + win = options.window || options.win; + doc = win.document; + } else if (options && options.doc) { + doc = options.doc; + } + const clearing = options ? !!options.clearing : false; + const clearMs: number = options && options.clearMs ? options.clearMs : null; + + if (this.isSafari()) { + SafariApp.sendMessageToApp("copyToClipboard", text).then(() => { + if (!clearing && this.clipboardWriteCallback != null) { + this.clipboardWriteCallback(text, clearMs); + } + }); + } else if ( + this.isFirefox() && + (win as any).navigator.clipboard && + (win as any).navigator.clipboard.writeText + ) { + (win as any).navigator.clipboard.writeText(text).then(() => { + if (!clearing && this.clipboardWriteCallback != null) { + this.clipboardWriteCallback(text, clearMs); + } + }); + } else if ((win as any).clipboardData && (win as any).clipboardData.setData) { + // IE specific code path to prevent textarea being shown while dialog is visible. + (win as any).clipboardData.setData("Text", text); + if (!clearing && this.clipboardWriteCallback != null) { + this.clipboardWriteCallback(text, clearMs); + } + } else if (doc.queryCommandSupported && doc.queryCommandSupported("copy")) { + if (this.isChrome() && text === "") { + text = "\u0000"; + } + + const textarea = doc.createElement("textarea"); + textarea.textContent = text == null || text === "" ? " " : text; + // Prevent scrolling to bottom of page in MS Edge. + textarea.style.position = "fixed"; + doc.body.appendChild(textarea); + textarea.select(); + + try { + // Security exception may be thrown by some browsers. + if (doc.execCommand("copy") && !clearing && this.clipboardWriteCallback != null) { + this.clipboardWriteCallback(text, clearMs); + } + } catch (e) { + // eslint-disable-next-line + console.warn("Copy to clipboard failed.", e); + } finally { + doc.body.removeChild(textarea); + } + } + } + + async readFromClipboard(options?: any): Promise { + let win = window; + let doc = window.document; + if (options && (options.window || options.win)) { + win = options.window || options.win; + doc = win.document; + } else if (options && options.doc) { + doc = options.doc; + } + + if (this.isSafari()) { + return await SafariApp.sendMessageToApp("readFromClipboard"); + } else if ( + this.isFirefox() && + (win as any).navigator.clipboard && + (win as any).navigator.clipboard.readText + ) { + return await (win as any).navigator.clipboard.readText(); + } else if (doc.queryCommandSupported && doc.queryCommandSupported("paste")) { + const textarea = doc.createElement("textarea"); + // Prevent scrolling to bottom of page in MS Edge. + textarea.style.position = "fixed"; + doc.body.appendChild(textarea); + textarea.focus(); + try { + // Security exception may be thrown by some browsers. + if (doc.execCommand("paste")) { + return textarea.value; + } + } catch (e) { + // eslint-disable-next-line + console.warn("Read from clipboard failed.", e); + } finally { + doc.body.removeChild(textarea); + } + } + return null; + } + + resolveDialogPromise(dialogId: number, confirmed: boolean) { + if (this.showDialogResolves.has(dialogId)) { + const resolveObj = this.showDialogResolves.get(dialogId); + resolveObj.resolve(confirmed); + this.showDialogResolves.delete(dialogId); + } + + // Clean up old promises + this.showDialogResolves.forEach((val, key) => { + const age = new Date().getTime() - val.date.getTime(); + if (age > DialogPromiseExpiration) { + this.showDialogResolves.delete(key); + } + }); + } + + async resolvePasswordDialogPromise( + dialogId: number, + canceled: boolean, + password: string + ): Promise { + let result = false; + if (this.passwordDialogResolves.has(dialogId)) { + const resolveObj = this.passwordDialogResolves.get(dialogId); + if (await resolveObj.tryResolve(canceled, password)) { + this.passwordDialogResolves.delete(dialogId); + result = true; + } + } + + // Clean up old promises + this.passwordDialogResolves.forEach((val, key) => { + const age = new Date().getTime() - val.date.getTime(); + if (age > DialogPromiseExpiration) { + this.passwordDialogResolves.delete(key); + } + }); + + return result; + } + + async supportsBiometric() { + const platformInfo = await BrowserApi.getPlatformInfo(); + if (platformInfo.os === "android") { + return false; + } + + if (this.isFirefox()) { + return parseInt((await browser.runtime.getBrowserInfo()).version.split(".")[0], 10) >= 87; + } + + return true; + } + + authenticateBiometric() { + return this.biometricCallback(); + } + + sidebarViewName(): string { + if ((window as any).chrome.sidebarAction && this.isFirefox()) { + return "sidebar"; + } else if (this.isOpera() && typeof opr !== "undefined" && opr.sidebarAction) { + return "sidebar_panel"; + } + + return null; + } + + supportsSecureStorage(): boolean { + return false; + } + + getDefaultSystemTheme(): Promise { + return Promise.resolve(this.prefersColorSchemeDark.matches ? ThemeType.Dark : ThemeType.Light); + } + + onDefaultSystemThemeChange(callback: (theme: ThemeType.Light | ThemeType.Dark) => unknown) { + this.prefersColorSchemeDark.addEventListener("change", ({ matches }) => { + callback(matches ? ThemeType.Dark : ThemeType.Light); + }); + } + + async getEffectiveTheme() { + const theme = (await this.stateService.getTheme()) as ThemeType; + if (theme == null || theme === ThemeType.System) { + return this.getDefaultSystemTheme(); + } else { + return theme; + } + } +} diff --git a/apps/browser/src/services/browserStorage.service.ts b/apps/browser/src/services/browserStorage.service.ts new file mode 100644 index 0000000000..455d541959 --- /dev/null +++ b/apps/browser/src/services/browserStorage.service.ts @@ -0,0 +1,55 @@ +import { StorageService } from "jslib-common/abstractions/storage.service"; + +export default class BrowserStorageService implements StorageService { + private chromeStorageApi: any; + + constructor() { + this.chromeStorageApi = chrome.storage.local; + } + + async get(key: string): Promise { + return new Promise((resolve) => { + this.chromeStorageApi.get(key, (obj: any) => { + if (obj != null && obj[key] != null) { + resolve(obj[key] as T); + return; + } + resolve(null); + }); + }); + } + + async has(key: string): Promise { + return (await this.get(key)) != null; + } + + async save(key: string, obj: any): Promise { + if (obj == null) { + // Fix safari not liking null in set + return new Promise((resolve) => { + this.chromeStorageApi.remove(key, () => { + resolve(); + }); + }); + } + + if (obj instanceof Set) { + obj = Array.from(obj); + } + + const keyedObj = { [key]: obj }; + return new Promise((resolve) => { + this.chromeStorageApi.set(keyedObj, () => { + resolve(); + }); + }); + } + + async remove(key: string): Promise { + return new Promise((resolve) => { + this.chromeStorageApi.remove(key, () => { + resolve(); + }); + }); + } +} diff --git a/apps/browser/src/services/i18n.service.ts b/apps/browser/src/services/i18n.service.ts new file mode 100644 index 0000000000..eab97affed --- /dev/null +++ b/apps/browser/src/services/i18n.service.ts @@ -0,0 +1,94 @@ +import { I18nService as BaseI18nService } from "jslib-common/services/i18n.service"; + +export default class I18nService extends BaseI18nService { + constructor(systemLanguage: string) { + super(systemLanguage, null, async (formattedLocale: string) => { + // Deprecated + const file = await fetch(this.localesDirectory + formattedLocale + "/messages.json"); + return await file.json(); + }); + + // Please leave 'en' where it is, as it's our fallback language in case no translation can be found + this.supportedTranslationLocales = [ + "en", + "az", + "be", + "bg", + "bn", + "bs", + "ca", + "cs", + "da", + "de", + "el", + "en-GB", + "en-IN", + "es", + "et", + "fa", + "fi", + "fil", + "fr", + "he", + "hi", + "hr", + "hu", + "id", + "it", + "ja", + "ka", + "km", + "kn", + "ko", + "lt", + "lv", + "ml", + "nb", + "nl", + "nn", + "pl", + "pt-BR", + "pt-PT", + "ro", + "ru", + "si", + "sk", + "sl", + "sr", + "sv", + "th", + "tr", + "uk", + "vi", + "zh-CN", + "zh-TW", + ]; + } + + t(id: string, p1?: string, p2?: string, p3?: string): string { + return this.translate(id, p1, p2, p3); + } + + translate(id: string, p1?: string, p2?: string, p3?: string): string { + if (this.localesDirectory == null) { + const placeholders: string[] = []; + if (p1 != null) { + placeholders.push(p1); + } + if (p2 != null) { + placeholders.push(p2); + } + if (p3 != null) { + placeholders.push(p3); + } + + if (placeholders.length) { + return chrome.i18n.getMessage(id, placeholders); + } else { + return chrome.i18n.getMessage(id); + } + } + + return super.translate(id, p1, p2, p3); + } +} diff --git a/apps/browser/src/services/state.service.ts b/apps/browser/src/services/state.service.ts new file mode 100644 index 0000000000..4d632baa43 --- /dev/null +++ b/apps/browser/src/services/state.service.ts @@ -0,0 +1,95 @@ +import { GlobalState } from "jslib-common/models/domain/globalState"; +import { StorageOptions } from "jslib-common/models/domain/storageOptions"; +import { StateService as BaseStateService } from "jslib-common/services/state.service"; + +import { Account } from "../models/account"; +import { BrowserComponentState } from "../models/browserComponentState"; +import { BrowserGroupingsComponentState } from "../models/browserGroupingsComponentState"; +import { BrowserSendComponentState } from "../models/browserSendComponentState"; + +import { StateService as StateServiceAbstraction } from "./abstractions/state.service"; + +export class StateService + extends BaseStateService + implements StateServiceAbstraction +{ + async addAccount(account: Account) { + // Apply browser overrides to default account values + account = new Account(account); + await super.addAccount(account); + } + + async getIsAuthenticated(options?: StorageOptions): Promise { + // Firefox Private Mode can clash with non-Private Mode because they both read from the same onDiskOptions + // Check that there is an account in memory before considering the user authenticated + return ( + (await super.getIsAuthenticated(options)) && + (await this.getAccount(this.defaultInMemoryOptions)) != null + ); + } + + async getBrowserGroupingComponentState( + options?: StorageOptions + ): Promise { + return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions))) + ?.groupings; + } + + async setBrowserGroupingComponentState( + value: BrowserGroupingsComponentState, + options?: StorageOptions + ): Promise { + const account = await this.getAccount( + this.reconcileOptions(options, this.defaultInMemoryOptions) + ); + account.groupings = value; + await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions)); + } + + async getBrowserCipherComponentState(options?: StorageOptions): Promise { + return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions))) + ?.ciphers; + } + + async setBrowserCipherComponentState( + value: BrowserComponentState, + options?: StorageOptions + ): Promise { + const account = await this.getAccount( + this.reconcileOptions(options, this.defaultInMemoryOptions) + ); + account.ciphers = value; + await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions)); + } + + async getBrowserSendComponentState(options?: StorageOptions): Promise { + return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions))) + ?.send; + } + + async setBrowserSendComponentState( + value: BrowserSendComponentState, + options?: StorageOptions + ): Promise { + const account = await this.getAccount( + this.reconcileOptions(options, this.defaultInMemoryOptions) + ); + account.send = value; + await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions)); + } + async getBrowserSendTypeComponentState(options?: StorageOptions): Promise { + return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions))) + ?.sendType; + } + + async setBrowserSendTypeComponentState( + value: BrowserComponentState, + options?: StorageOptions + ): Promise { + const account = await this.getAccount( + this.reconcileOptions(options, this.defaultInMemoryOptions) + ); + account.sendType = value; + await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions)); + } +} diff --git a/apps/browser/src/services/vaultFilter.service.ts b/apps/browser/src/services/vaultFilter.service.ts new file mode 100644 index 0000000000..28ada46ae1 --- /dev/null +++ b/apps/browser/src/services/vaultFilter.service.ts @@ -0,0 +1,73 @@ +import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; +import { VaultFilterService as BaseVaultFilterService } from "jslib-angular/modules/vault-filter/vault-filter.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +export class VaultFilterService extends BaseVaultFilterService { + vaultFilter: VaultFilter = new VaultFilter(); + + allVaults = "allVaults"; + myVault = "myVault"; + + constructor( + stateService: StateService, + organizationService: OrganizationService, + folderService: FolderService, + cipherService: CipherService, + collectionService: CollectionService, + policyService: PolicyService + ) { + super( + stateService, + organizationService, + folderService, + cipherService, + collectionService, + policyService + ); + this.vaultFilter.myVaultOnly = false; + this.vaultFilter.selectedOrganizationId = null; + } + + getVaultFilter() { + return this.vaultFilter; + } + + setVaultFilter(filter: string) { + if (filter === this.allVaults) { + this.vaultFilter.myVaultOnly = false; + this.vaultFilter.selectedOrganizationId = null; + } else if (filter === this.myVault) { + this.vaultFilter.myVaultOnly = true; + this.vaultFilter.selectedOrganizationId = null; + } else { + this.vaultFilter.myVaultOnly = false; + this.vaultFilter.selectedOrganizationId = filter; + } + } + + clear() { + this.setVaultFilter(this.allVaults); + } + + filterCipherForSelectedVault(cipher: CipherView) { + if (!this.vaultFilter.selectedOrganizationId && !this.vaultFilter.myVaultOnly) { + return false; + } + if (this.vaultFilter.selectedOrganizationId) { + if (cipher.organizationId === this.vaultFilter.selectedOrganizationId) { + return false; + } + } else if (this.vaultFilter.myVaultOnly) { + if (!cipher.organizationId) { + return false; + } + } + return true; + } +} diff --git a/apps/browser/src/services/vaultTimeout.service.ts b/apps/browser/src/services/vaultTimeout.service.ts new file mode 100644 index 0000000000..4678a4f522 --- /dev/null +++ b/apps/browser/src/services/vaultTimeout.service.ts @@ -0,0 +1,30 @@ +import { VaultTimeoutService as BaseVaultTimeoutService } from "jslib-common/services/vaultTimeout.service"; + +import { SafariApp } from "../browser/safariApp"; + +export default class VaultTimeoutService extends BaseVaultTimeoutService { + startCheck() { + this.checkVaultTimeout(); + if (this.platformUtilsService.isSafari()) { + this.checkSafari(); + } else { + setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds + } + } + + // This is a work-around to safari adding an arbitary delay to setTimeout and + // setIntervals. It works by calling the native extension which sleeps for 10s, + // efficiently replicating setInterval. + async checkSafari() { + // eslint-disable-next-line + while (true) { + try { + await SafariApp.sendMessageToApp("sleep"); + this.checkVaultTimeout(); + } catch (e) { + // eslint-disable-next-line + console.log("Exception Safari VaultTimeout", e); + } + } + } +} diff --git a/apps/browser/store/icons/chrome-icon128.png b/apps/browser/store/icons/chrome-icon128.png new file mode 100644 index 0000000000..9bce320e73 Binary files /dev/null and b/apps/browser/store/icons/chrome-icon128.png differ diff --git a/apps/browser/store/icons/icon64.png b/apps/browser/store/icons/icon64.png new file mode 100644 index 0000000000..5b9d09d51d Binary files /dev/null and b/apps/browser/store/icons/icon64.png differ diff --git a/apps/browser/store/icons/windows-icon300.png b/apps/browser/store/icons/windows-icon300.png new file mode 100644 index 0000000000..ba18ac07bb Binary files /dev/null and b/apps/browser/store/icons/windows-icon300.png differ diff --git a/apps/browser/store/locales/az/copy.resx b/apps/browser/store/locales/az/copy.resx new file mode 100644 index 0000000000..c6ae1c74cc --- /dev/null +++ b/apps/browser/store/locales/az/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Ödənişsiz Parol Meneceri + + + Bütün cihazlarınız üçün təhlükəsiz və ödənişsiz bir parol meneceri + + + Bitwarden, Inc., 8bit Solutions LLC-nin ana şirkətidir. + +THE VERGE, U.S. NEWS & WORLD REPORT, CNET VƏ BİR ÇOXUNA GÖRƏ ƏN YAXŞI PAROL MENECERİDİR. + +Hər yerdən limitsiz cihazda limitsiz parolu idarə edin, saxlayın, qoruyun və paylaşın. Bitwarden evdə, işdə və ya yolda hər kəsə açıq mənbəli parol idarəetmə həllərini təqdim edir. + +Çox istifadə etdiyiniz hər veb sayt üçün təhlükəsizlik tələblərinə görə güclü, unikal və təsadüfi parollar yaradın. + +Bitwarden Send şifrələnmiş məlumatların (fayl və sadə mətnləri) birbaşa və sürətli göndərilməsini təmin edir. + +Bitwarden, parolları iş yoldaşlarınızla təhlükəsiz paylaşa bilməyiniz üçün şirkətlərə Teams və Enterprise planları təklif edir. + +Nəyə görə Bitwarden-i seçməliyik: + +Yüksək səviyyə şifrələmə +Parollarınız qabaqcıl ucdan-uca şifrələmə (AES-256 bit, salted hashtag və PBKDF2 SHA-256) ilə qorunur, beləcə verilənlərinizin təhlükəsiz və gizli qalmasını təmin edir. + +Daxili parol yaradıcı +Çox istifadə etdiyiniz hər veb sayt üçün təhlükəsizlik tələblərinə görə güclü, unikal və təsadüfi şifrələr yaradın. + +Qlobal tərcümələr +Bitwarden tərcümələri 40 dildə mövcuddur və qlobal cəmiyyətimiz sayəsində böyüməyə davam edir. + +Çarpaz platform tətbiqləri +Bitwarden anbarındakı həssas verilənləri, istənilən səyyahdan, mobil cihazdan və ya masaüstü əməliyyat sistemindən və daha çoxundan qoruyub paylaşın. + + + Bütün cihazlarınız üçün təhlükəsiz və ödənişsiz bir parol meneceri + + + Anbarınıza bir neçə cihazdan eyniləşdirərək müraciət edin + + + Bütün giriş məlumatlarınızı və parollarınızı təhlükəsiz bir anbardan idarə edin + + + Giriş kimlik məlumatlarınızı ziyarət etdiyiniz istənilən veb sayta dərhal avtomatik doldurun + + + Anbarınıza sağ klikləmə menyusundan da asanlıqla müraciət edə bilərsiniz + + + Güclü, təsadüfi və etibarlı parolların avtomatik yaradılması + + + Məlumatlarınız AES-256 bit şifrələmə istifadə edilərək təhlükəsiz şəkildə idarə olunur + + diff --git a/apps/browser/store/locales/be/copy.resx b/apps/browser/store/locales/be/copy.resx new file mode 100644 index 0000000000..76c10a400e --- /dev/null +++ b/apps/browser/store/locales/be/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – бясплатны менеджар пароляў + + + Бяспечны і бясплатны менеджар пароляў для ўсіх вашых прылад + + + Bitwarden - просты і бяспечны спосаб захоўваць усе вашы імёны карыстальніка і паролі, а таксама лёгка іх сінхранізаваць паміж усімі вашымі прыладамі. Пашырэнне праграмы Bitwarden дазваляе хутка ўвайсці на любы вэб-сайт з дапамогай Safari або Chrome і падтрымліваецца сотнямі іншых папулярных праграм. + +Крадзеж пароляў — сур'ёзная праблема. Сайты і праграмы, якія вы выкарыстоўваеце падвяргаюцца нападам кожны дзень. Праблемы ў іх бяспецы могуць прывесці да крадзяжу вашага пароля. Акрамя таго, калі вы выкарыстоўваеце адны і тыя ж паролі на розных сайтах і праграмах, то хакеры могуць лёгка атрымаць доступ да некалькіх вашых уліковых запісаў адразу (да паштовай скрыні, да банкаўскага рахунку ды г. д.). + +Эксперты па бяспецы рэкамендуюць выкарыстоўваць розныя выпадкова знегерыраваныя паролі для кожнага створанага вамі ўліковага запісу. Але як жа кіраваць усімі гэтымі паролямі? Bitwarden дазваляе вам лёгка атрымаць доступ да вашых пароляў, а гэтак жа ствараць і захоўваць іх. + +Bitwarden захоўвае ўсе вашы імёны карыстальніка і паролі ў зашыфраваным сховішчы, якое сінхранізуецца паміж усімі вашымі прыладамі. Да таго, як даныя пакінуць вашу прыладу, яны будуць зашыфраваны і толькі потым адпраўлены. Мы ў Bitwarden не зможам прачытаць вашы даныя, нават калі мы гэтага захочам. Вашы даныя зашыфраваны пры дапамозе алгарытму AES-256 і PBKDF2 SHA-256. + +Bitwarden — гэта праграмнае забеспячэнне з адкрытым на 100% зыходным кодам. Зыходны код Bitwarden размешчаны на GitHub, і кожны можа свабодна праглядаць, правяраць і рабіць унёсак у код Bitwarden. + + + Бяспечны і бясплатны менеджар пароляў для ўсіх вашых прылад + + + Сінхранізацыя і доступ да сховішча з некалькіх прылад + + + Кіруйце ўсімі вашымі імёнамі карыстальніка і паролямі з бяспечнага сховішча + + + Хутка і аўтаматычна запаўняйце свае ўліковыя даныя на любым вэб-сайце + + + У вас ёсць зручны доступ да сховішча з кантэкстнага меню + + + Аўтаматычна генерыруйце моцныя, выпадковыя і бяспечныя паролі + + + Вашыя звесткі надзейна захоўваюцца, дзякуючы шыфраванню AES-256 + + diff --git a/apps/browser/store/locales/bg/copy.resx b/apps/browser/store/locales/bg/copy.resx new file mode 100644 index 0000000000..d632c325ce --- /dev/null +++ b/apps/browser/store/locales/bg/copy.resx @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden — безплатен управител на пароли + + + Сигурен и свободен управител на пароли за всички устройства + + + Bitwarden е най-лесният и надежден начин да съхранявате регистрации и пароли като ги синхронизирате на всички свои устройства. +Кражбата на пароли е тежък проблем. Сайтовете в Интернет, програмите и мобилните приложения биват атакувани всеки ден. Пробивите в сигурността са факт и паролите биват откраднати. Ако използвате една и съща парола в много програми или сайтове, злонамерени лица могат лесно да достъпят вашата е-поща, електронно банкиране и други важни регистрации. +Експертите по сигурността препоръчват да ползвате различна, случайно генерирана парола за всяка отделна регистрация. Как да управлявате всичките тези пароли? Bitwarden ви позволява лесно да ги създавате, съхранявате и ползвате. +Bitwarden съхранява всички данни в шифриран трезор, който се синхронизира на всички устройства, които ползвате. Шифрирането се извършва преди данните да напуснат устройството ви — така само вие имате достъп до тях. Дори и екипът на Bitwarden не може да прочете данните, дори и да се опита. Данните са защитени чрез AES с 256-битов ключ, контролни суми с добавени случайни данни и удължаване на ключа с PBKDF2 SHA-256. +Bitwarden е със 100% отворен код! Изходният код е наличен в сайта GitHub и всеки може да го преглежда, извърши одит и даже да допринесе за Bitwarden. + + + Сигурен и свободен управител на пароли за всички устройства + + + Удобен достъп до трезора, който се синхронизира от всички устройства + + + Управление на всички регистрации и пароли чрез защитен трезор + + + Бързо автоматично попълване на данни и пароли във всички сайтове, които посещавате + + + Трезорът е достъпен и от контекстното меню при щракване с дясното копче на мишката + + + Автоматично създаване на силни, сигурни, случайни пароли + + + Данните ви са управлявани сигурно чрез AES-256 битово шифроване + + diff --git a/apps/browser/store/locales/bn/copy.resx b/apps/browser/store/locales/bn/copy.resx new file mode 100644 index 0000000000..3a40359b33 --- /dev/null +++ b/apps/browser/store/locales/bn/copy.resx @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – বিনামূল্যের পাসওয়ার্ড ব্যবস্থাপক + + + আপনার সমস্ত ডিভাইসের জন্য একটি সুরক্ষিত এবং বিনামূল্যের পাসওয়ার্ড ব্যবস্থাপক + + + বিটওয়ার্ডেন আপনার সমস্ত লগইন এবং পাসওয়ার্ডগুলি সহজেই আপনার সমস্ত ডিভাইসের সাথে সিঙ্ক করার সময় সংরক্ষণ করার সবচেয়ে সহজ এবং নিরাপদ উপায়। +পাসওয়ার্ড চুরি একটি গুরুতর সমস্যা। আপনি যে ওয়েবসাইটগুলি এবং অ্যাপ্লিকেশনগুলি ব্যবহার করেন সেগুলি প্রতিদিন আক্রমণের শিকার হয়। সুরক্ষা লঙ্ঘন ঘটে এবং আপনার পাসওয়ার্ডগুলি চুরি হয়ে যায়। আপনি যখন অ্যাপ্লিকেশন এবং ওয়েবসাইট জুড়ে একই পাসওয়ার্ডগুলি পুনরায় ব্যবহার করেন হ্যাকাররা সহজেই আপনার ইমেল, ব্যাংক এবং অন্যান্য গুরুত্বপূর্ণ অ্যাকাউন্টগুলিতে ব্যাবহার করতে পারে। +সুরক্ষা বিশেষজ্ঞরা আপনার তৈরি প্রতিটি অ্যাকাউন্টের জন্য একটি পৃথক, এলোমেলোভাবে উৎপন্ন পাসওয়ার্ড ব্যবহার করার পরামর্শ দেয়। কিন্তু আপনি কীভাবে এই সমস্ত পাসওয়ার্ড পরিচালনা করবেন? Bitwarden আপনার পাসওয়ার্ডগুলি তৈরি, সঞ্চয় এবং ব্যাবহার করা আপনার পক্ষে সহজ করে তোলে। +Bitwarden আপনার সমস্ত লগইন একটি এনক্রিপ্ট করা ভল্টে সঞ্চয় করে যা আপনার সমস্ত ডিভাইস জুড়ে সিঙ্ক করে। যেহেতু আপনার ডিভাইসটি ছাড়ার আগে এটি সম্পূর্ণরূপে এনক্রিপ্ট করা হয়েছে, শুধুমাত্র আপনারই ডেটাতে ব্যাবহারাধিকার রয়েছে। এমনকি আমরা Bitwarden এর দল চাইলেও আপনার তথ্যগুলি পড়তে পারব না। আপনার ডেটা AES-256 বিট এনক্রিপশন, সল্টেড হ্যাশিং এবং PBKDF2 SHA-256 দিয়ে নামমুদ্রাম্কিত করা হয়েছে। +Bitwarden ১০০% মুক্ত সফ্টওয়্যার। Bitwarden এর উৎস কোডটি গিটহাবটিতে হোস্ট করা হয়েছে এবং Bitwarden কোডবেস সকলের পর্যালোচনা, নিরীক্ষণ এবং অবদানের জন্য মুক্ত। + + + আপনার সমস্ত ডিভাইসের জন্য একটি সুরক্ষিত এবং বিনামূল্যের পাসওয়ার্ড ব্যবস্থাপক + + + একাধিক ডিভাইস থেকে আপনার ভল্ট সিঙ্ক এবং ব্যাবহার করুন + + + সুরক্ষিত ভল্ট থেকে আপনার সমস্ত লগইন এবং পাসওয়ার্ড পরিচালনা করুন + + + যে কোনও ওয়েবসাইটে দ্রুত আপনার লগইন শংসাপত্রগুলি স্বয়ংক্রিয়ভাবে পূরণ করুন + + + আপনার ভল্টটি ডান ক্লিক মেনু থেকে সুবিধামত ব্যাবহারযোগ্য + + + স্বয়ংক্রিয়ভাবে শক্তিশালী, এলোমেলো এবং সুরক্ষিত পাসওয়ার্ড তৈরি করুন + + + আপনার তথ্য AES-256 বিট এনক্রিপশন ব্যবহার করে সুরক্ষিতভাবে পরিচালিত হয় + + diff --git a/apps/browser/store/locales/bs/copy.resx b/apps/browser/store/locales/bs/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/bs/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/ca/copy.resx b/apps/browser/store/locales/ca/copy.resx new file mode 100644 index 0000000000..aaabe81d59 --- /dev/null +++ b/apps/browser/store/locales/ca/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Administrador de contrasenyes gratuït + + + Administrador de contrasenyes segur i gratuït per a tots els vostres dispositius + + + Bitwarden, Inc. és la companyia matriu de solucions de 8 bits LLC. + +Nomenada Millor gestor de contrasenyes per THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Gestioneu, emmagatzemeu, segures i compartiu contrasenyes il·limitades a través de dispositius il·limitats des de qualsevol lloc. Bitwarden lliura solucions de gestió de contrasenyes de codi obert a tothom, ja siga a casa, a la feina o sobre la marxa. + +Genereu contrasenyes fortes, úniques i aleatòries basades en els requisits de seguretat per a cada lloc web que freqüenteu. + +Bitwarden Send transmet ràpidament informació xifrada --- Fitxers i text complet - directament a qualsevol persona. + +Bitwarden ofereix equips i plans empresarials per a empreses perquè pugueu compartir amb seguretat contrasenyes amb els companys. + +Per què triar Bitwarden: + +Xifratge de classe mundial +Les contrasenyes estan protegides amb un xifratge avançat fi-a-fi (AES-256 bit, salted hashtag, and PBKDF2 SHA-256), de manera que les vostres dades es mantenen segures i privades. + +Generador de contrasenyes integrat +Genereu contrasenyes fortes, úniques i aleatòries basades en els requisits de seguretat per a cada lloc web que freqüenteu. + +Traduccions globals +Les traduccions de Bitwarden existeixen en 40 idiomes i creixen, gràcies a la nostra comunitat global. + +Aplicacions de plataforma creuada +Assegureu-vos i compartiu dades sensibles a la vostra caixa forta de Bitwarden des de qualsevol navegador, dispositiu mòbil o S.O. d'escriptori, i molt més. + + + Administrador de contrasenyes segur i gratuït per a tots els vostres dispositius + + + Sincronitzeu i accediu a la vostra caixa forta des de diversos dispositius + + + Administreu tots els inicis de sessió i contrasenyes des d'una caixa forta segura + + + Ompli automàticament les vostres credencials d'inici de sessió a qualsevol lloc web que visiteu + + + La vostra caixa forta també es pot accedir des del menú del botó dret + + + Genera automàticament contrasenyes fortes, aleatòries i segures + + + La vostra informació s'administra amb seguretat utilitzant el xifratge AES-256 bit + + diff --git a/apps/browser/store/locales/cs/copy.resx b/apps/browser/store/locales/cs/copy.resx new file mode 100644 index 0000000000..36a54971d2 --- /dev/null +++ b/apps/browser/store/locales/cs/copy.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Bezplatný správce hesel + + + Bezpečný a bezplatný správce hesel pro všechna vaše zařízení + + + bitwarden je nejjednodušší a nejbezpečnější způsob, jak uchovávat veškeré své přihlašovací údaje a zároveň je mít pohodlně synchronizované mezi všemi svými zařízeními. + +Krádež hesla je velice vážný problém. Stránky a aplikace, které každodenně používáte, jsou často pod útokem a vaše hesla mohou být odcizena. Pokud používáte stejné heslo mezi více aplikacemi nebo stránkami, hackeři se mohou snadno dostat k vaší emailové schránce, bankovnímu účtu či do jiných důležitých účtů. + +Bezpečnostní experti proto doporučují používat různá, silná a náhodně generovaná hesla pro každý účet zvlášť. Ale jak tato všechna hesla spravovat? bitwarden vám ulehčí jejich správu, ale také jejich generování nebo sdílení. + +bitwarden uchovává veškeré vaše přihlašovací údaje v zašifrovaném trezoru, který se synchronizuje mezi všemi vašimi zařízeními. Jelikož jsou zašifrována ještě před opuštěním vašeho zařízení, máte přístup ke svým datům pouze vy. Dokonce ani tým v bitwardenu nemůže číst vaše data a to ani kdybychom chtěli. Vaše data jsou totiž zakódována pomocí šifrovávání AES-256, náhodným hashem a PBKDF2 SHA-256. + + + Bezpečný a bezplatný správce hesel pro všechna vaše zařízení + + + Synchronizujte a přistupujte ke svému trezoru z různých zařízení + + + Spravujte veškeré své přihlašovací údaje z bezpečného trezoru + + + Rychle vyplňte své přihlašovací údaje na webových stránkách + + + Ovládejte svůj trezor pohodlně z kontextové nabídky + + + Vygenerujte si silná, jedinečná a bezpečná hesla + + + Vaše informace jsou bezpečně zašifrovány pomocí AES-256 šifrování + + diff --git a/apps/browser/store/locales/da/copy.resx b/apps/browser/store/locales/da/copy.resx new file mode 100644 index 0000000000..6159bb2d67 --- /dev/null +++ b/apps/browser/store/locales/da/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Gratis adgangskodemanager + + + En sikker og gratis adgangskodemanager til alle dine enheder + + + Bitwarden, Inc. er moderselskab for 8bit Solutions LLC. + +UDNÆVNT BEDSTE PASSWORD MANAGER AF THE VERGE, U.S. NEWS & WORLD REPORT, CNET OG FLERE. + +Administrér, gem, sikr og del adgangskoder ubegrænset på tværs af enheder hvor som helst. Bitwarden leverer open source adgangskodeadministrationsløsninger til alle, hvad enten det er hjemme, på arbejdspladsen eller på farten. + +Generér stærke, unikke og tilfældige adgangskoder baseret på sikkerhedskrav til hvert websted, du besøger. + +Bitwarden Send overfører hurtigt krypterede oplysninger --- filer og almindelig tekst - direkte til enhver. + +Bitwarden tilbyder Teams og Enterprise-planer for virksomheder, så du sikkert kan dele adgangskoder med kolleger. + +Hvorfor vælge Bitwarden: + +Kryptering i verdensklasse +Adgangskoder er beskyttet med avanceret end-to-end-kryptering (AES-256 bit, saltet hashtag og PBKDF2 SHA-256), så dine data forbliver sikre og private. + +Indbygget adgangskodegenerator +Generér stærke, unikke og tilfældige adgangskoder baseret på sikkerhedskrav til hvert websted, du besøger. + +Globale oversættelser +Bitwarden findes på 40 sprog, og flere kommer til, takket være vores globale fællesskab. + +Applikationer på tværs af platforme +Beskyt og del følsomme data i din Bitwarden boks fra enhver browser, mobilenhed eller desktop OS og mere. + + + En sikker og gratis adgangskodemanager til alle dine enheder + + + Synkroniser og få adgang til din boks fra flere enheder + + + Håndtér alle din logins og adgangskoder fra en sikker boks + + + Auto-udfyld hurtigt dine loginoplysninger på enhver hjemmeside, som du besøger + + + Din boks er også bekvemt tilgængelig fra højreklik-menuen + + + Opret automatisk stærke, tilfældige og sikre adgangskoder + + + Dine oplysninger håndteres sikkert ved hjælp af AES-256 bit kryptering + + diff --git a/apps/browser/store/locales/de/copy.resx b/apps/browser/store/locales/de/copy.resx new file mode 100644 index 0000000000..93b0cd99c2 --- /dev/null +++ b/apps/browser/store/locales/de/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Kostenloser Passwort-Manager + + + Ein sicherer und kostenloser Passwort-Manager für all deine Geräte + + + Bitwarden, Inc. ist die Muttergesellschaft von 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER DY THE VERGE, U.S. NEWS & WORLD REPORT, CNET UND MORE. + +Verwalte, speichere, sichere und teile unbegrenzte Passwörter von überall auf unbegrenzten Geräten. Bitwarden liefert Open-Source-Passwort-Management-Lösungen für jedermann, sei es zu Hause, am Arbeitsplatz oder unterwegs. + +Generiere starke, einzigartige und zufällige Passwörter basierend auf Sicherheitsanforderungen für jede Website, die du häufig besuchst. + +Bitwarden Send überträgt schnell verschlüsselte Informationen - Dateien und Klartext - direkt an jeden. + +Bitwarden bietet Teams und Enterprise Pläne für Unternehmen an, damit du Passwörter sicher mit Kollegen teilen kannst. + +Warum Bitwarden: + +Weltklasse Verschlüsselung +Passwörter sind durch erweiterte Ende-zu-Ende-Verschlüsselung (AES-256 Bit, salted hashtag und PBKDF2 SHA-256) so bleiben deine Daten sicher und privat. + +Integrierter Passwortgenerator +Generiere starke, einzigartige und zufällige Passwörter basierend auf Sicherheitsanforderungen für jede Website, die du häufig besuchst. + +Globale Übersetzungen +Bitwarden Übersetzungen existieren in 40 Sprachen und wachsen dank unserer globalen Gemeinschaft. + +Plattformübergreifende Anwendungen +Sichere und teile vertrauliche Daten in deinem Bitwarden Vault von jedem Browser, jedem mobilen Gerät oder Desktop-Betriebssystem und mehr. + + + + Ein sicherer und kostenloser Passwort-Manager für all deine Geräte + + + Synchronisiere und greife auf deinen Tresor von unterschiedlichen Geräten aus zu + + + Verwalte all deine Logins und Passwörter mit einem sicheren Tresor + + + Auto-Vervollständige alle Login-Informationen schnell auf jeder Website, die du besuchst + + + Dein Tresor kann auch über das Kontextmenü einfach erreicht werden + + + Generiere automatisch starke, zufällige und sichere Passwörter + + + Deine Informationen sind sicher dank AES-256-Bit-Verschlüsselung + + diff --git a/apps/browser/store/locales/el/copy.resx b/apps/browser/store/locales/el/copy.resx new file mode 100644 index 0000000000..de4f9e5ff6 --- /dev/null +++ b/apps/browser/store/locales/el/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Δωρεάν Διαχειριστής Κωδικών + + + Ένας ασφαλής και δωρεάν διαχειριστής κωδικών για όλες τις συσκευές σας + + + Το Bitwarden είναι ο ευκολότερος και ασφαλέστερος τρόπος για να αποθηκεύσετε όλες τις συνδέσεις και τους κωδικούς πρόσβασης σας, διατηρώντας παράλληλα το συγχρονισμό μεταξύ όλων των συσκευών σας. Η επέκταση της εφαρμογής Bitwarden σας επιτρέπει να συνδεθείτε γρήγορα σε οποιαδήποτε ιστοσελίδα μέσω του Safari ή του Chrome και υποστηρίζεται από εκατοντάδες άλλες δημοφιλείς εφαρμογές. + +Η κλοπή κωδικού πρόσβασης είναι ένα σοβαρό πρόβλημα. Οι ιστοσελίδες και οι εφαρμογές που χρησιμοποιείτε υποβάλλονται σε επίθεση κάθε μέρα. Παραβιάσεις ασφαλείας συμβαίνουν και οι κωδικοί ίσως κλαπούν. Όταν επαναχρησιμοποιείτε τους ίδιους κωδικούς πρόσβασης σε εφαρμογές και ιστοσελίδες, οι χάκερ μπορούν εύκολα να έχουν πρόσβαση στο ηλεκτρονικό σας ταχυδρομείο, στην τράπεζα σας και σε άλλους σημαντικούς λογαριασμούς. + +Οι ειδικοί ασφαλείας συστήνουν να χρησιμοποιείτε διαφορετικό, τυχαία δημιουργημένο κωδικό πρόσβασης για κάθε λογαριασμό που δημιουργείτε. Αλλά πώς διαχειρίζεστε όλους αυτούς τους κωδικούς πρόσβασης; Το Bitwarden σας διευκολύνει να δημιουργείτε, να αποθηκεύετε και να έχετε πρόσβαση στους κωδικούς πρόσβασης σας. + +Το Bitwarden αποθηκεύει όλες τις συνδέσεις σας σε κρυπτογραφημένη μορφή που συγχρονίζεται σε όλες τις συσκευές σας. Δεδομένου ότι είναι πλήρως κρυπτογραφημένο, μόνο εσείς έχετε πρόσβαση στα δεδομένα σας. Ούτε η ομάδα του Bitwarden μπορεί να διαβάσει τα δεδομένα σας, ακόμα κι αν θέλουμε. Τα δεδομένα σας είναι σφραγισμένα με κρυπτογράφηση AES-256 bit, salted hashing και PBKDF2 SHA-256. + +Το Bitwarden είναι 100% λογισμικό ανοικτού κώδικα. Ο πηγαίος κώδικας για το Bitwarden φιλοξενείται στο GitHub και ο καθένας είναι ελεύθερος να επανεξετάσει, να ελέγξει και να συνεισφέρει στον κώδικα βάσης του Bitwarden. + + + Ένας ασφαλής και δωρεάν διαχειριστής κωδικών για όλες τις συσκευές σας + + + Συγχρονίστε και αποκτήστε πρόσβαση στο vault σας, από πολλές συσκευές + + + Διαχειριστείτε όλες τις συνδέσεις και τους κωδικούς σας με ασφάλεια + + + Συμπληρώστε γρήγορα και αυτόματα, τα διαπιστευτήρια της σύνδεσης σας, σε οποιονδήποτε ιστότοπο επισκέπτεστε + + + Το vault σας είναι επίσης εύκολα προσβάσιμο, με το μενού που ανοίγει με δεξί-κλικ + + + Δημιουργήστε αυτόματα ισχυρούς, τυχαίους και ασφαλείς κωδικούς + + + Οι πληροφορίες σας διαχειρίζονται με ασφάλεια χρησιμοποιώντας κρυπτογράφηση AES-256 bit + + diff --git a/apps/browser/store/locales/en/assets/chrome-tile-large.png b/apps/browser/store/locales/en/assets/chrome-tile-large.png new file mode 100644 index 0000000000..5ebb2d3fcb Binary files /dev/null and b/apps/browser/store/locales/en/assets/chrome-tile-large.png differ diff --git a/apps/browser/store/locales/en/assets/chrome-tile-marquee.png b/apps/browser/store/locales/en/assets/chrome-tile-marquee.png new file mode 100644 index 0000000000..3c12d50a2d Binary files /dev/null and b/apps/browser/store/locales/en/assets/chrome-tile-marquee.png differ diff --git a/apps/browser/store/locales/en/assets/chrome-tile-small.png b/apps/browser/store/locales/en/assets/chrome-tile-small.png new file mode 100644 index 0000000000..19907ed03c Binary files /dev/null and b/apps/browser/store/locales/en/assets/chrome-tile-small.png differ diff --git a/apps/browser/store/locales/en/copy.resx b/apps/browser/store/locales/en/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/en/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/en/screenshots/Chrome/Chrome01.png b/apps/browser/store/locales/en/screenshots/Chrome/Chrome01.png new file mode 100644 index 0000000000..4572dde4e5 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/Chrome01.png differ diff --git a/apps/browser/store/locales/en/screenshots/Chrome/Chrome02.png b/apps/browser/store/locales/en/screenshots/Chrome/Chrome02.png new file mode 100644 index 0000000000..55d8cd32f7 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/Chrome02.png differ diff --git a/apps/browser/store/locales/en/screenshots/Chrome/Chrome03.png b/apps/browser/store/locales/en/screenshots/Chrome/Chrome03.png new file mode 100644 index 0000000000..bdd0fbc415 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/Chrome03.png differ diff --git a/apps/browser/store/locales/en/screenshots/Chrome/Chrome04.png b/apps/browser/store/locales/en/screenshots/Chrome/Chrome04.png new file mode 100644 index 0000000000..736ca65ce2 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/Chrome04.png differ diff --git a/apps/browser/store/locales/en/screenshots/Chrome/Chrome05.png b/apps/browser/store/locales/en/screenshots/Chrome/Chrome05.png new file mode 100644 index 0000000000..d4ff9a184f Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/Chrome05.png differ diff --git a/apps/browser/store/locales/en/screenshots/Chrome/promo_01.png b/apps/browser/store/locales/en/screenshots/Chrome/promo_01.png new file mode 100644 index 0000000000..9478b91d8d Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/promo_01.png differ diff --git a/apps/browser/store/locales/en/screenshots/Chrome/promo_02.png b/apps/browser/store/locales/en/screenshots/Chrome/promo_02.png new file mode 100644 index 0000000000..1041eb177f Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/promo_02.png differ diff --git a/apps/browser/store/locales/en/screenshots/Chrome/promo_03.png b/apps/browser/store/locales/en/screenshots/Chrome/promo_03.png new file mode 100644 index 0000000000..42eb0131cd Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Chrome/promo_03.png differ diff --git a/apps/browser/store/locales/en/screenshots/Firefox/Firefox01.png b/apps/browser/store/locales/en/screenshots/Firefox/Firefox01.png new file mode 100644 index 0000000000..1211da6aab Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Firefox/Firefox01.png differ diff --git a/apps/browser/store/locales/en/screenshots/Firefox/Firefox02.png b/apps/browser/store/locales/en/screenshots/Firefox/Firefox02.png new file mode 100644 index 0000000000..4c9852dccb Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Firefox/Firefox02.png differ diff --git a/apps/browser/store/locales/en/screenshots/Firefox/Firefox03.png b/apps/browser/store/locales/en/screenshots/Firefox/Firefox03.png new file mode 100644 index 0000000000..3eb1075230 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Firefox/Firefox03.png differ diff --git a/apps/browser/store/locales/en/screenshots/Firefox/Firefox04.png b/apps/browser/store/locales/en/screenshots/Firefox/Firefox04.png new file mode 100644 index 0000000000..475d4106df Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Firefox/Firefox04.png differ diff --git a/apps/browser/store/locales/en/screenshots/Firefox/Firefox05.png b/apps/browser/store/locales/en/screenshots/Firefox/Firefox05.png new file mode 100644 index 0000000000..e448ab8f7e Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Firefox/Firefox05.png differ diff --git a/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge01.png b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge01.png new file mode 100644 index 0000000000..79e414a7d5 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge01.png differ diff --git a/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge02.png b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge02.png new file mode 100644 index 0000000000..0ef6da39f8 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge02.png differ diff --git a/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge03.png b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge03.png new file mode 100644 index 0000000000..d2b10f25bc Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge03.png differ diff --git a/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge04.png b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge04.png new file mode 100644 index 0000000000..aa8e9c0a45 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge04.png differ diff --git a/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge05.png b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge05.png new file mode 100644 index 0000000000..dc36bf1033 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge05.png differ diff --git a/apps/browser/store/locales/en/screenshots/Opera/Opera01.png b/apps/browser/store/locales/en/screenshots/Opera/Opera01.png new file mode 100644 index 0000000000..a3b42b006d Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Opera/Opera01.png differ diff --git a/apps/browser/store/locales/en/screenshots/Opera/Opera02.png b/apps/browser/store/locales/en/screenshots/Opera/Opera02.png new file mode 100644 index 0000000000..9f081532fb Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Opera/Opera02.png differ diff --git a/apps/browser/store/locales/en/screenshots/Opera/Opera03.png b/apps/browser/store/locales/en/screenshots/Opera/Opera03.png new file mode 100644 index 0000000000..d42b7a0177 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Opera/Opera03.png differ diff --git a/apps/browser/store/locales/en/screenshots/Opera/Opera04.png b/apps/browser/store/locales/en/screenshots/Opera/Opera04.png new file mode 100644 index 0000000000..2186cb1652 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Opera/Opera04.png differ diff --git a/apps/browser/store/locales/en/screenshots/Opera/Opera05.png b/apps/browser/store/locales/en/screenshots/Opera/Opera05.png new file mode 100644 index 0000000000..41674b0251 Binary files /dev/null and b/apps/browser/store/locales/en/screenshots/Opera/Opera05.png differ diff --git a/apps/browser/store/locales/en_GB/copy.resx b/apps/browser/store/locales/en_GB/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/en_GB/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/en_IN/copy.resx b/apps/browser/store/locales/en_IN/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/en_IN/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/es/copy.resx b/apps/browser/store/locales/es/copy.resx new file mode 100644 index 0000000000..c1b0243221 --- /dev/null +++ b/apps/browser/store/locales/es/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Gestor de contraseñas gratuito + + + Un gestor de contraseñas seguro y gratuito para todos tus dispositivos + + + Bitwarden, Inc. es la compañía matriz de 8bit Solutions LLC. + +NOMBRADO EL MEJOR ADMINITRADOR DE CONTRASEÑAS POR THE VERGE, U.S. NEWS & WORLD REPORT Y CNET, ENTRE OTROS. + +Administra, almacena, protege y comparte contraseñas ilimitadas entre dispositivos ilimitados desde cualquier parte. Bitwarden ofrece soluciones de administración de contraseñas de código abierto para todos, ya sea en casa, en el trabajo o mientras viajas. + +Genera contraseñas fuertes, únicas y aleatorias basadas en los requisitos de seguridad de cada sitio web que frecuentes. + +Bitwarden Send transmite rápidamente información cifrada --- archivos y texto simple -- de forma directa a cualquier persona. + +Bitwarden ofrece los planes Teams y Enterprise para que puedas compartir contraseñas de forma segura entre colegas de la misma empresa. + +Por qué elegir Bitwarden: + +Cifrado de clase mundial +Las contraseñas están protegidas con un cifrado avanzado de extremo a extremo (AES-256 bits, salted hashtag, y PBKDF2 SHA-256) para que tu información permanezca segura y privada. + +Generador de contraseñas incorporado +Genera contraseñas fuertes, únicas y aleatorias basadas en los requisitos de seguridad de cada sitio web que frecuentes. + +Traducciones Globales +Existen traducciones de Bitwarden en 40 idiomas y van en aumento, gracias a nuestra comunidad global. + +Aplicaciones multiplataforma +Protege y comparte información confidencial de tu bóveda Bitwarden desde cualquier navegador, dispositivo móvil, aplicación de escritorio y más. + + + + Un gestor de contraseñas seguro y gratuito para todos tus dispositivos + + + Sincroniza y accede a tu caja fuerte desde múltiples dispositivos + + + Gestiona todos tus usuarios y contraseñas desde una caja fuerte segura + + + Autorellena rápidamente tus datos de acceso en cualquier página web que visites + + + Tu caja fuerte también es fácilmente accesible desde el menú de clic derecho + + + Genera automáticamente contraseñas fuertes, aleatorias y seguras + + + Tu información es gestionada de forma segura con cifrado AES de 256 bits + + diff --git a/apps/browser/store/locales/et/copy.resx b/apps/browser/store/locales/et/copy.resx new file mode 100644 index 0000000000..333b4e0ccd --- /dev/null +++ b/apps/browser/store/locales/et/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bitwarden - Tasuta paroolihaldur + + + Tasuta ja turvaline paroolihaldur kõikidele sinu seadmetele + + + Bitwarden muudab kontoandmete ja teiste isiklike andmete kasutamise erinevate seadmete vahel lihtsaks ja turvaliseks. + +Paroolivargustest on saamas järjest tõsisem probleem. Veebilehed ja rakendused, mida igapäevaselt kasutad, on pidevalt rünnakute all. Muuhulgas toimuvad alalõpmata andmelekked, millega koos saadakse ligipääs ka Sinu paroolidele. Kasutades erinevatel veebilehtedel ühesugust parooli, on häkkeritel lihtne ligi pääseda nii sinu e-postile, pangakontole või teistele tähtsatele kontodele. + +Turvaeksperdid soovitavad kasutada kõikides kasutajakontodes erinevaid, juhuslikult koostatud paroole. Kuidas aga kõiki neid paroole hallata? Bitwarden muudab paroolide loomise, talletamise ja nendele ligipääsu lihtsaks ja turvaliseks. + +Bitwarden talletab kõik Sinu andmed krüpteeritud hoidlas, mis sünkroniseeritakse kõikide Sinu poolt kasutatavate seadmete vahel. Kuna hoidla sisu krüpteeritakse enne selle enne seadmest lahkumist, omad andmetele ligipääsu ainult sina. Ka bitwardeni meeskond ei saa Sinu andmeid vaadata, isegi kui neil selleks tahtmine oleks. Sinu andmed kaitsevad AES-256 bitine krüpteering, salted hashing ja PBKDF2 SHA-256. + +Bitwarden on 100% avatud koodiga tarkvara. Bitwarden lähtekood on saadaval GitHubis ja kõik saavad sellega tasuta tutvuda, seda kontrollida ja Bitwardeni koodibaasi panustada. + + + Tasuta ja turvaline paroolihaldur kõikidele Sinu seadmetele + + + Sünkroniseeri ja halda oma kontot erinevates seadmetes + + + Halda kõiki kontoandmeid turvalises paroolihoidlas + + + Täida külastatavatel veebilehtedel oma kasutajakonto andmeid automaatselt ja lihtsalt + + + Pääsed paroolihaldurile hõlpsasti ligi ka parema kliki menüüst + + + Loo automaatselt tugevaid, erinevaid ja turvalisi paroole + + + Sisestatud andmeid käitatakse turvaliselt, kasutades AES-256 bitist krüpteeringut + + diff --git a/apps/browser/store/locales/fa/copy.resx b/apps/browser/store/locales/fa/copy.resx new file mode 100644 index 0000000000..116e66369c --- /dev/null +++ b/apps/browser/store/locales/fa/copy.resx @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - مدیریت کلمه عبور رایگان + + + یک مدیریت کننده کلمه عبور رایگان برای تمامی دستگاههایتان + + + Bitwarden ساده ترین و امن ترین راه گردآوری تمام داده های ورودی و پسوردها است در حالی که به راحتی آنها را بین تمامی دستگاه ها همگام میکند. + + +سرقت پسورد یک مشکل جدی است. وبسایت ها و اپلیکیشن هایی که شما از آنها استفاده میکنید هر روز تحت حملات قرار دارند. نقص های امنیتی رخ میدهند و پسوردها به سرقت میروند. زمانی که شما مجدداً از همان پسورد برای تمام وبسایت ها و اپلیکیشن ها استفاده میکنید هکرها می‌توانند به راحتی به ایمیل، حساب بانکی، و سایر حسابهای کاربریتان دسترسی داشته باشند. + + +متخصصان امنیتی توصیه میکنند که برای هر حساب کاربری که ایجاد میکنید از پسوردهای متفاوت و تصادفی تولید شده استفاده کنید. اما چطور تمامی این پسورها را مدیریت میکنید؟ بیت واردن ساختن، نگهداری، ودسترسی به پسوردهایتان را آسان میکند. + + +Bitwarden تمامی داده های ورودی شما را در یک گاو صندوق رمزنگاری شده نگهداری میکند که قابل همگام سازی توسط تمامی دستگاه های شماست. از آنجا که این داده ها هر زمان قبل از ترک دستگاهتان کاملا رمزنگاری میشود، فقط شما به اطلاعاتتان دسترسی دارید. حتی اگر تیم ما در بیت واردن هم بخواهند نمیتوانند اطلاعات شما را مشاهده کنند. داده های شما توسط رمزگذاری AES-256 بیتی، هَش خرد شده، و PBKDF2SHA-256 رمزنگاری شده است. + +Bitwarden ۱۰۰٪ یک برنامه متن باز است. کد منبع بیت واردن در GitHub میزبانی میشود و هر کس آزاد است برای بررسی، تفتیش و کمک به کد دسترسی داشته باشد. + + + یک مدیریت کننده کلمه عبور رایگان برای تمامی دستگاههایتان + + + همگام سازی و دسترسی به گاوصندوق خود را از دستگاه های مختلف + + + مدیریت تمام اطلاعات ورود و کلمه های عبورتان از یک گاوصندوق امن + + + پرکردن خودکار معتبر ورودی شما بصورت سریع برای هر وبسایتی که از آن بازدید میکنید + + + گاوصندوق شما نیز به راحتی از منوی راست کلیک قابل دسترسی است + + + به صورت خودکار کلمات عبور قوی، تصادفی و امن ایجاد کنید + + + اطلاعات شما با استفاده از رمزگذاری AES-256 بیتی ایمن مدیریت می شود + + diff --git a/apps/browser/store/locales/fi/copy.resx b/apps/browser/store/locales/fi/copy.resx new file mode 100644 index 0000000000..a27f806bb7 --- /dev/null +++ b/apps/browser/store/locales/fi/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Ilmainen salasanojen hallinta + + + Turvallinen ja ilmainen salasanojen hallinta kaikille laitteillesi + + + Bitwarden, inc. on 8bit Solutions LLC:n emoyhtiö. + +NIMENNYT PARHAAKSI SALASANOJEN HALLINNAKSI MM. THE VERGE, U.S. NEWS & WORLD REPORT JA CNET. + +Hallinnoi, säilytä, suojaa ja jaa rajattomasti salasanoja missä tahansa ja miltä tahansa laitteelta. Bitwarden tarjoaa avoimeen lähdekoodin perustuvan salasanojen hallintaratkaisun kaikille, olitpa sitten kotona, töissä tai liikkeellä. + +Luo usein käyttämillesi sivustoille automaattisesti vahvoja, yksilöllisiä ja satunnaisia salasanoja. + +Bitwarden Send -ominaisuudella lähetät tietoa nopeasti salattuna — tiedostoja ja tekstiä — suoraan kenelle tahansa. + +Yrityksille Bitwarden tarjoaa Teams ja Enterprise -tilaukset, jotta voit jakaa salasanoja kollegoiden kesken turvallisesti. + +Miksi Bitwarden?: + +Maailmanluokan salaus +Salasanat on suojattu tehokkaalla päästä päähän salauksella (AES-256 Bit, suolattu hajautus ja PBKDF2 SHA-256), joten tietosi pysyvät turvassa ja yksityisinä. + +Sisäänrakennettu salasanageneraattori +Luo usein käyttämillesi sivustoille vahvoja, yksilöllisiä ja satunnaisia salasanoja. + +Monikielinen +Bitwardenin sovelluksia on käännetty yli 40 kielelle ja määrä kasvaa jatkuvasti, kiitos kansainvälisen yhteisömme. + +Alustariippumattomaton +Suojaa, käytä ja jaa Bitwarden-holvisi arkaluontoisia tietoja kaikilla selaimilla, mobiililaitteilla, pöytätietokoneilla ja muissa järjestelmissä. + + + Turvallinen ja ilmainen salasanojen hallinta kaikille laitteillesi + + + Synkronoi ja hallitse holviasi useilla laitteilla + + + Hallitse käyttäjätunnuksiasi ja salasanojasi suojatussa holvissa + + + Täytä kirjautumistietosi automaattisesti ja nopeasti kaikilla käyttämilläsi sivustoilla + + + Pääse käsiksi holviisi myös suoraan hiiren kakkospainikkeen pikavalikosta + + + Luo automaattisesti vahvoja, satunnaisia ja turvallisia salasanoja + + + Käsittele 256-bittisellä AES-salauksella suojattuja tietojasi turvallisesti + + diff --git a/apps/browser/store/locales/fil/copy.resx b/apps/browser/store/locales/fil/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/fil/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/fr/copy.resx b/apps/browser/store/locales/fr/copy.resx new file mode 100644 index 0000000000..f8687ca5c4 --- /dev/null +++ b/apps/browser/store/locales/fr/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Gestionnaire de mots de passe gratuit + + + Un gestionnaire de mots de passe sécurisé et gratuit pour tous vos appareils + + + Bitwarden, Inc. est la société mère de 8bit Solutions LLC. + +NOMMÉ MEILLEUR GESTIONNAIRE DE MOTS DE PASSE PAR THE VERGE, U.S. NEWS & WORLD REPORT, CNET, ET PLUS ENCORE. + +Gérez, stockez, sécurisez et partagez un nombre illimité de mots de passe sur un nombre illimité d'appareils, où que vous soyez. Bitwarden fournit des solutions de gestion de mots de passe open source à tout le monde, que ce soit à la maison, au travail ou en déplacement. + +Générez des mots de passe forts, uniques et aléatoires basés sur des exigences de sécurité pour chaque site web que vous fréquentez. + +Bitwarden Send transmet rapidement des informations chiffrées --- fichiers et texte --- directement à quiconque. + +Bitwarden propose les plans Teams et Enterprise pour les entreprises afin que vous puissiez partager des mots de passe en toute sécurité avec vos collègues. + +Pourquoi choisir Bitwarden : + +Un chiffrement de classe internationale +Les mots de passe sont protégés par un chiffrement avancé de bout en bout (AES-256 bit, salted hashtag, et PBKDF2 SHA-256) afin que vos données restent sécurisées et privées. + +Générateur de mots de passe intégré +Générez des mots de passe forts, uniques et aléatoires en fonction des exigences de sécurité pour chaque site web que vous fréquentez. + +Traductions mondiales +Les traductions de Bitwarden existent dans 40 langues et ne cessent de croître, grâce à notre communauté mondiale. + +Applications multiplateformes +Sécurisez et partagez des données sensibles dans votre coffre-fort Bitwarden à partir de n'importe quel navigateur, appareil mobile ou système d'exploitation de bureau, et plus encore. + + + Un gestionnaire de mots de passe sécurisé et gratuit pour tous vos appareils + + + Synchroniser et accéder à votre coffre depuis plusieurs appareils + + + Gérer tous vos identifiants depuis un coffre sécurisé + + + Remplissage automatique et rapide de vos identifiants sur n'importe quel site que vous visitez + + + Votre coffre est également facilement accessible depuis le menu contextuel + + + Générer automatiquement des mots de passe forts, aléatoires et sécurisés + + + Vos informations sont gérées de manière sécurisée grâce à un chiffrement AES-256 bit + + diff --git a/apps/browser/store/locales/he/copy.resx b/apps/browser/store/locales/he/copy.resx new file mode 100644 index 0000000000..3ceccc9b9c --- /dev/null +++ b/apps/browser/store/locales/he/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – מנהל ססמאות חינמי + + + מנהל ססמאות חינמי ומאובטח עבור כל המכשירים שלך + + + תוכנת Bitwarden היא הדרך הקלה והבטוחה לשמירת הסיסמאות שלך ועוזרת לסנכרן את הסיסמאות בין כל המכשירים שברשותך. + +גניבת סיסמאות היא בעיה רצינית. אתרים ואפליקציות מותקפים באופן יום יומי. פירצות אבטחה קורות מדי פעם ומאגרי סיסמאות נחשפים במלואם. כשאתה משתמש באותה סיסמה עבור כמה אתרים או אפליקציות, האקרים יכולים לנצל את אותה הסיסמה עבור אותם האתרים והאפליקציות ויכולים להשיג גישה למייל, לבנק, ולחשבונות חשובים אחרים. + +מומחי אבטחה ממליצים להשתמש בסיסמאות שונות ורנדומליות עבור כל חשבון שאתה יוצר. אבל איך אפשר לנהל את כל הסיסמאות הללו? תוכנת Bitwarden עוזרת לך ליצור, לשמור, ולגשת לכל הסיסמאות שלך. + +תוכנת Bitwarden מאחסנת את כל הפרטים בכספת מוצפנת שמסתנכרנת בין כל המכשירים שלך. מאחר שהמידע מוצפן עוד לפני שהוא יוצא מהמכשיר שלך, רק לך יש גישה למידע. גם הצוות שלנו בBitwarden לא יכול לקרוא את המידע, אפילו אם ירצה. המידע שלך מוגן עם הצפנת AES-256 ביט, salted hashing, וPBKDF2 SHA-256. + +תוכנת Bitwarden היא 100% תוכנת קוד פתוח. קוד המקור של Bitwarden מאוחסן בGitHub וכל מי שרוצה יכול לתת ביקורת, להוסיף הערות, וכמובן לתרום מזמנו לפיתוח הקוד של Bitwarden. + + + מנהל סיסמאות חינמי ומאובטח עבור כל המכשירים שלך + + + סנכרון וגישה לכספת שלך ממגוון מכשירים + + + ניהול כל הססמאות ופרטי הגישה שלך בכספת מאובטחת + + + מילוי אוטומטי של פרטי הגישה שלך במהירות בכל אתר שתבקר + + + גישה נוחה לכספת שלך דרך תפריט לחיצה-ימנית + + + יצירה אוטומטית של סיסמאות חזקות, אקראיות ומאובטחות + + + המידע שלך מנוהל בצורה מאובטחת תוך שימוש בהצפנת AES‏-256 ביט + + diff --git a/apps/browser/store/locales/hi/copy.resx b/apps/browser/store/locales/hi/copy.resx new file mode 100644 index 0000000000..9edb8288ab --- /dev/null +++ b/apps/browser/store/locales/hi/copy.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + बिटवार्डन - मुक्त कूटशब्द प्रबंधक + + + आपके सभी उपकरणों के लिए एक सुरक्षित और नि: शुल्क कूटशब्द प्रबंधक + + + 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. + + + आपके सभी उपकरणों के लिए एक सुरक्षित और नि: शुल्क पासवर्ड प्रबंधक + + + अनेक उपकरणों से अपने तिजोरी सिंक और एक्सेस करें + + + एक सुरक्षित तिजोरी से अपने सभी लॉगिन डाटा और पासवर्ड प्रबंधित करें + + + आप गए हुए किसी भी वेबसाइट में अपने लॉगिन क्रेडेंशियल को जल्दी से ऑटोमैटिक भरें + + + आपका तिजोरी भी राइट-क्लिक मेनू मे सुलभ और आसानी से उपलब्ध है + + + स्वचालित रूप से मजबूत, यादृच्छिक, सुरक्षित पासवर्ड उत्पन्न करते हैं + + + AES-256 बिट एन्क्रिप्शन का उपयोग करके आपकी जानकारी सुरक्षित रूप से प्रबंधित की जाती है + + diff --git a/apps/browser/store/locales/hr/copy.resx b/apps/browser/store/locales/hr/copy.resx new file mode 100644 index 0000000000..5ff2bcbe01 --- /dev/null +++ b/apps/browser/store/locales/hr/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - besplatni upravitelj lozinki + + + Siguran i besplatan upravitelj lozinki za sve vaše uređaje + + + Bitwarden, Inc. je vlasnik tvrtke 8bit Solutions LLC. + +THE VERGE, U.S. NEWS & WORLD REPORT, CNET I DRUGI ODABRALI SU BITWARDEN NAJBOLJIM UPRAVITELJEM LOZINKI. + +Upravljajte, spremajte, osigurajte i dijelite neograničen broj lozinki na neograničenom broju uređaja bilo gdje. Bitwarden omogućuje upravljanje lozinkama, bazirano na otvorenom kodu, svima, bilo kod kuće, na poslu ili u pokretu. + +Generirajte jake, jedinstvene i nasumične lozinke bazirane na sigurnosnim zahtjevima za svaku web stranicu koju često posjećujete. + +Bitwarden Send omoguzćuje jednostavno i brzo slanje šifriranih podataka --- datoteki ili teksta -- direktno, bilo kome. + +Bitwarden nudi Teams i Enterprise planove za tvrtke kako biste sigurno mogli dijeliti lozinke s kolegama na poslu. + +Zašto odabrati Bitwarden? + +Svjetski priznata enkripcija +Lozinke su zaštićene naprednim end-to-end šifriranjem (AES-256 bit, salted hashtag i PBKDF2 SHA-256) kako bi vaši osobni podaci ostali sigurni i samo vaši. + +Ugrađen generator lozinki +Generirajte jake, jedinstvene i nasumične lozinke bazirane na sigurnosnim zahtjevima za svako web mjesto koje često posjećujete. + +Svjetski dostupan +Bitwarden je, zahvaljujući našoj globalnoj zajednici, dostupan na više od 40 jezika. + +Podržani svi OS +Osigurajte i sigurno dijelite osjetljive podatke sadržane u vašem Bitwarden trezoru iz bilo kojeg preglednika, mobilnog uređaja ili stolnog računala s bilo kojim OS. + + + Siguran i besplatan upravitelj lozinki za sve tvoje uređaje + + + Sinkroniziraj i pristupi svojem trezoru s više uređaja + + + Upravljaj svojim korisničkim imenima i lozinkama iz sigurnog trezora + + + Brza auto-ispuna vjerodajnica za prijavu na bilo kojoj web stranici + + + Tvoj trezor je lako dostupan iz izbornika desnim klikom + + + Automatski generiraj jake, nasumične i sigurne lozinke + + + Tvojim se podacima sigurno upravlja AES-256 bitnim šifriranjem + + diff --git a/apps/browser/store/locales/hu/copy.resx b/apps/browser/store/locales/hu/copy.resx new file mode 100644 index 0000000000..0b3761a8ad --- /dev/null +++ b/apps/browser/store/locales/hu/copy.resx @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Ingyenes jelszókezelő + + + Egy biztonságos és ingyenes jelszókezelő az összes eszközre. + + + A Bitwarden, Inc. a 8bit Solutions LLC anyavállalata. + +A VERGE, A US NEWS & WORLD REPORT, a CNET ÉS MÁSOK LEGJOBB JELSZÓKEZELŐJE. + +Korlátlan számú jelszavak kezelése, tárolása, védelme és megosztása korlátlan eszközökön bárhonnan. A Bitwarden nyílt forráskódú jelszókezelési megoldásokat kínál mindenkinek, legyen az otthon, a munkahelyen vagy útközben. + +Hozzunk létre erős, egyedi és véletlenszerű jelszavakat a biztonsági követelmények alapján minden webhelyre, amelyet gyakran látogatunk. + +A Bitwarden Send gyorsan továbbítja a titkosított információkat-fájlokat és egyszerű szöveget közvetlenül bárkinek. + +A Bitwarden csapatokat és vállalati terveket kínál a vállalatok számára, így biztonságosan megoszthatja jelszavait kollégáival. + +Miért válasszuk a Bitwardent: + +Világszínvonalú titkosítási jelszavak fejlett végpontok közötti titkosítással (AES-256 bit, titkosított hashtag és PBKDF2 SHA-256) védettek, így az adatok biztonságban és titokban maradnak. + +Beépített jelszógenerátor A biztonsági követelmények alapján erős, egyedi és véletlenszerű jelszavakat hozhat létre minden gyakran látogatott webhelyen. + +Globális fordítások + +A Bitwarden fordítások 40 nyelven léteznek és globális közösségünknek köszönhetően egyre bővülnek. Többplatformos alkalmazások Biztonságos és megoszthatja az érzékeny adatokat a Bitwarden Széfben bármely böngészőből, mobileszközről vagy asztali operációs rendszerből stb. + + + Egy biztonságos és ingyenes jelszókezelő az összes eszközre + + + A széf szinkronizálása és elérése több eszközön. + + + Az összes bejelentkezés és jelszó kezelése egy biztonságos széfben. + + + A hitelesítő adatok gyors és automatikus kitöltése bármelyik felkeresett webhelyen. + + + A széf kényelmesen elérhető a jobb egérkattintásos menüből. + + + Erős, véletlenszerű és biztonságos jelszavak generálása automatikusan. + + + Az információ biztonsággal kezelhető az AES-256 bit titkosítása. + + diff --git a/apps/browser/store/locales/id/copy.resx b/apps/browser/store/locales/id/copy.resx new file mode 100644 index 0000000000..bf601db1dc --- /dev/null +++ b/apps/browser/store/locales/id/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Pengelola Sandi Gratis + + + Pengelola sandi yang aman dan gratis untuk semua perangkat Anda + + + Bitwarden adalah cara termudah dan teraman untuk menyimpan semua info masuk dan sandi Anda sambil tetap menjaga mereka disinkronkan di antara semua perangkat Anda. + +Pencurian sandi adalah masalah serius. Situs web dan aplikasi yang Anda gunakan diserang setiap hari. Pelanggaran keamanan terjadi dan sandi Anda dicuri. Ketika Anda menggunakan sandi yang sama di aplikasi dan situs web peretas dapat dengan mudah mengakses email, bank, dan akun penting Anda yang lain. + +Pakar keamanan merekomendasikan agar Anda menggunakan sandi yang berbeda dan dibuat secara acak untuk setiap akun yang Anda buat. Tapi bagaimana mengelola semua sandi tersebut? Bitwarden membuatnya menjadi mudah untuk Anda membuat, menyimpan dan mengakses sandi Anda. + +Bitwarden menyimpan semua info masuk Anda di brankas terenkripsi yang disinkronkan di semua perangkat Anda. Karena sepenuhnya dienkripsi sebelum meninggalkan perangkat Anda, hanya Anda yang memiliki akses ke data Anda. Bahkan tim di Bitwarden tidak dapat membaca data Anda, bahkan jika kami mau. Data Anda disegel dengan ekripsi AES-256 bit, hash yang di-salt, dan PBKDF2 SHA-256. + +Bitwarden adalah 100% perangkat lunak sumber terbuka. Kode sumber untuk Bitwarden berada di GitHub dan setiap orang bebas untuk meninjau, mengaudit, dan berkontribusi ke basis kode Bitwarden. + + + Pengelola sandi yang aman dan gratis untuk semua perangkat Anda + + + Sinkronkan dan akses brankas Anda dari beberapa perangkat + + + Kelola semua info masuk dan sandi Anda dari brankas yang aman + + + Mengisi info masuk dengan cepat dan otomatis ke situs web yang Anda kunjungi + + + Brankas Anda juga mudah diakses dari menu klik kanan + + + Secara otomatis menghasilkan sandi yang kuat, acak dan aman + + + Informasi Anda dikelola dengan aman menggunakan enkripsi AES-256 bit + + diff --git a/apps/browser/store/locales/it/copy.resx b/apps/browser/store/locales/it/copy.resx new file mode 100644 index 0000000000..477fd25b55 --- /dev/null +++ b/apps/browser/store/locales/it/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Gestore di password gratuito + + + Un gestore di password sicuro e gratuito per tutti i tuoi dispositivi + + + Bitwarden, Inc. è la società madre di 8bit Solutions LLC. + +NOMINATO MIGLIOR PASSWORD MANAGER DA THE VERGE, US NEWS & WORLD REPORT, CNET E ALTRO. + +Gestisci, archivia, proteggi e condividi password illimitate su dispositivi illimitati da qualsiasi luogo. Bitwarden offre soluzioni di gestione delle password open source a tutti, a casa, al lavoro o in viaggio. + +Genera password complesse, uniche e casuali in base ai requisiti di sicurezza per ogni sito web che frequenti. + +Bitwarden Send trasmette rapidamente informazioni cifrate --- file e testo in chiaro - direttamente a chiunque. + +Bitwarden offre piani Teams ed Enterprise per le aziende in modo da poter condividere le password in modo sicuro con i colleghi. + +Perché scegliere Bitwarden: + +Crittografia di livello mondiale +Le password sono protette con cifratura end-to-end avanzata (AES-256 bit, hashtag con sale e PBKDF2 SHA-256) in modo che i tuoi dati rimangano al sicuro e privati. + +Generatore di password integrato +Genera password complesse, uniche e casuali in base ai requisiti di sicurezza per ogni sito web che frequenti. + +Traduzioni globali +Le traduzioni di Bitwarden esistono in 40 lingue e sono in crescita, grazie alla nostra comunità globale. + +Applicazioni multipiattaforma +Proteggi e condividi i dati sensibili all'interno del tuo Bitwarden Vault da qualsiasi browser, dispositivo mobile o sistema operativo desktop e altro ancora. + + + Un gestore di password sicuro e gratuito per tutti i tuoi dispositivi + + + Sincronizza e accedi alla tua cassaforte da più dispositivi + + + Gestisci tutte le tue password ed i tuoi login da una cassaforte sicura + + + Completa velocemente tutte le tue credenziali di accesso in qualunque sito tu visiti + + + La tua cassaforte è facilmente accessibile dal menu contestuale del tasto destro del mouse + + + Genera automaticamente password complesse, casuali e sicure + + + Le tue informazioni sono salvate in modo sicuro grazie all'algoritmo di cifratura AES-256 + + diff --git a/apps/browser/store/locales/ja/copy.resx b/apps/browser/store/locales/ja/copy.resx new file mode 100644 index 0000000000..660708153d --- /dev/null +++ b/apps/browser/store/locales/ja/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - 無料パスワードマネージャー + + + あらゆる端末で使える、安全な無料パスワードマネージャー + + + Bitwarden は、あらゆる端末間で同期しつつログイン情報やパスワードを保管しておける、最も簡単で安全なサービスです。 + +パスワードの盗難は深刻な問題になっています。ウェブサイトやアプリは毎日攻撃を受けており、もしセキュリティに問題があればパスワードが盗難されてしまいます。 同じパスワードを他のアプリでも再利用していると、攻撃者はメールや銀行口座など大切なアカウントに簡単に侵入できてしまいます。 + +セキュリティの専門家は、アカウント毎に別のランダムに生成したパスワードを使うことを推奨していますが、ランダムなパスワードをすべて覚えていられますか? Bitwarden を使えば、わざわざパスワードを覚えなくても簡単にパスワードの生成、保管や利用ができます。 + +Bitwarden は端末間で同期できる、暗号化された保管庫にログイン情報を保管します。端末から送信される前に暗号化されるので、あなただけがそのデータにアクセスできるのです。Bitwarden の開発者チームですら、あなたに頼まれたとしてもデータを読み取ることはできません。データは AES-256 bit 暗号化、ソルト化ハッシュ、PBKDF2 SHA-256 で保護されます。 + +Bitwarden は100%オープンソースソフトウェアです。Bitwarden のソースコードは GitHub にホストされており、誰でもBitwardenのコードを自由にレビュー、監査、貢献できます。 + + + あらゆる端末で使える、安全な無料パスワードマネージャー + + + 複数の端末で保管庫に同期&アクセス + + + 安全な保管庫でログイン情報やパスワードを管理します + + + 開いたウェブサイトのログイン情報を素早く自動入力します + + + 右クリックメニューから保管庫に簡単にアクセス + + + 強固な、ランダムで安全なパスワードを自動生成 + + + AES-256bit 暗号化を使用して安全に情報が管理されます + + diff --git a/apps/browser/store/locales/ka/copy.resx b/apps/browser/store/locales/ka/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/ka/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/km/copy.resx b/apps/browser/store/locales/km/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/km/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/kn/copy.resx b/apps/browser/store/locales/kn/copy.resx new file mode 100644 index 0000000000..6928f557e4 --- /dev/null +++ b/apps/browser/store/locales/kn/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ಬಿಟ್ವರ್ಡ್ – ಉಚಿತ ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕ + + + ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಸುರಕ್ಷಿತ ಮತ್ತು ಉಚಿತ ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕ + + + ಬಿಟ್ವಾರ್ಡೆನ್, ಇಂಕ್. 8 ಬಿಟ್ ಸೊಲ್ಯೂಷನ್ಸ್ ಎಲ್ಎಲ್ ಸಿ ಯ ಮೂಲ ಕಂಪನಿಯಾಗಿದೆ. + +ವರ್ಜ್, ಯು.ಎಸ್. ನ್ಯೂಸ್ & ವರ್ಲ್ಡ್ ರಿಪೋರ್ಟ್, ಸಿನೆಟ್ ಮತ್ತು ಹೆಚ್ಚಿನದರಿಂದ ಉತ್ತಮ ಪಾಸ್‌ವರ್ಡ್ ವ್ಯವಸ್ಥಾಪಕ ಎಂದು ಹೆಸರಿಸಲಾಗಿದೆ. + +ಎಲ್ಲಿಂದಲಾದರೂ ಅನಿಯಮಿತ ಸಾಧನಗಳಲ್ಲಿ ಅನಿಯಮಿತ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ, ಸಂಗ್ರಹಿಸಿ, ಸುರಕ್ಷಿತಗೊಳಿಸಿ ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಿ. ಮನೆಯಲ್ಲಿ, ಕೆಲಸದಲ್ಲಿ ಅಥವಾ ಪ್ರಯಾಣದಲ್ಲಿರಲಿ ಪ್ರತಿಯೊಬ್ಬರಿಗೂ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಓಪನ್ ಸೋರ್ಸ್ ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಹಣಾ ಪರಿಹಾರಗಳನ್ನು ನೀಡುತ್ತದೆ. + +ನೀವು ಆಗಾಗ್ಗೆ ಪ್ರತಿ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಸುರಕ್ಷತಾ ಅವಶ್ಯಕತೆಗಳನ್ನು ಆಧರಿಸಿ ಬಲವಾದ, ಅನನ್ಯ ಮತ್ತು ಯಾದೃಚ್ pass ಿಕ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ರಚಿಸಿ. + +ಬಿಟ್‌ವಾರ್ಡೆನ್ ಕಳುಹಿಸಿ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಮಾಹಿತಿಯನ್ನು ತ್ವರಿತವಾಗಿ ರವಾನಿಸುತ್ತದೆ --- ಫೈಲ್‌ಗಳು ಮತ್ತು ಸರಳ ಪಠ್ಯ - ನೇರವಾಗಿ ಯಾರಿಗಾದರೂ. + +ಬಿಟ್‌ವಾರ್ಡೆನ್ ಕಂಪೆನಿಗಳಿಗೆ ತಂಡಗಳು ಮತ್ತು ಎಂಟರ್‌ಪ್ರೈಸ್ ಯೋಜನೆಗಳನ್ನು ನೀಡುತ್ತದೆ ಆದ್ದರಿಂದ ನೀವು ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಸಹೋದ್ಯೋಗಿಗಳೊಂದಿಗೆ ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಬಹುದು. + +ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅನ್ನು ಏಕೆ ಆರಿಸಬೇಕು: + +ವಿಶ್ವ ದರ್ಜೆಯ ಗೂ ry ಲಿಪೀಕರಣ +ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಸುಧಾರಿತ ಎಂಡ್-ಟು-ಎಂಡ್ ಎನ್‌ಕ್ರಿಪ್ಶನ್ (ಎಇಎಸ್ -256 ಬಿಟ್, ಉಪ್ಪುಸಹಿತ ಹ್ಯಾಶ್‌ಟ್ಯಾಗ್ ಮತ್ತು ಪಿಬಿಕೆಡಿಎಫ್ 2 ಎಸ್‌ಎಚ್‌ಎ -256) ನೊಂದಿಗೆ ರಕ್ಷಿಸಲಾಗಿದೆ ಆದ್ದರಿಂದ ನಿಮ್ಮ ಡೇಟಾ ಸುರಕ್ಷಿತ ಮತ್ತು ಖಾಸಗಿಯಾಗಿರುತ್ತದೆ. + +ಅಂತರ್ನಿರ್ಮಿತ ಪಾಸ್ವರ್ಡ್ ಜನರೇಟರ್ +ನೀವು ಆಗಾಗ್ಗೆ ಪ್ರತಿ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಸುರಕ್ಷತಾ ಅವಶ್ಯಕತೆಗಳನ್ನು ಆಧರಿಸಿ ಬಲವಾದ, ಅನನ್ಯ ಮತ್ತು ಯಾದೃಚ್ pass ಿಕ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ರಚಿಸಿ. + +ಜಾಗತಿಕ ಅನುವಾದಗಳು +ಬಿಟ್ವಾರ್ಡೆನ್ ಅನುವಾದಗಳು 40 ಭಾಷೆಗಳಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿವೆ ಮತ್ತು ಬೆಳೆಯುತ್ತಿವೆ, ನಮ್ಮ ಜಾಗತಿಕ ಸಮುದಾಯಕ್ಕೆ ಧನ್ಯವಾದಗಳು. + +ಕ್ರಾಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು +ಯಾವುದೇ ಬ್ರೌಸರ್, ಮೊಬೈಲ್ ಸಾಧನ, ಅಥವಾ ಡೆಸ್ಕ್‌ಟಾಪ್ ಓಎಸ್ ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳಿಂದ ನಿಮ್ಮ ಬಿಟ್‌ವಾರ್ಡನ್ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಸೂಕ್ಷ್ಮ ಡೇಟಾವನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸಿ ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಿ. + + + ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಸುರಕ್ಷಿತ ಮತ್ತು ಉಚಿತ ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕ + + + ಅನೇಕ ಸಾಧನಗಳಿಂದ ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಸಿಂಕ್ ಮಾಡಿ ಮತ್ತು ಪ್ರವೇಶಿಸಿ + + + ನಿಮ್ಮ ಎಲ್ಲಾ ಲಾಗಿನ್‌ಗಳು ಮತ್ತು ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಸುರಕ್ಷಿತ ವಾಲ್ಟ್‌ನಿಂದ ನಿರ್ವಹಿಸಿ + + + ನೀವು ಭೇಟಿ ನೀಡುವ ಯಾವುದೇ ವೆಬ್ಸೈಟ್ಗೆ ನಿಮ್ಮ ಲಾಗಿನ್ ರುಜುವಾತುಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಸ್ವಯಂ ತುಂಬಿಸಿ + + + ನಿಮ್ಮ ಚಾವಣಿ ಬಲ-ಕ್ಲಿಕ್ ಮೆನುವಿನಿಂದ ಅನುಕೂಲಕರವಾಗಿ ಪ್ರವೇಶಿಸಬಹುದು + + + ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರಬಲ ಯಾದೃಚ್ಛಿಕ, ಮತ್ತು ಸುರಕ್ಷಿತ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಚಿಸಲು + + + ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು AES-256 ಬಿಟ್ ಗೂಢಲಿಪೀಕರಣವನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ + + diff --git a/apps/browser/store/locales/ko/copy.resx b/apps/browser/store/locales/ko/copy.resx new file mode 100644 index 0000000000..c726ad687d --- /dev/null +++ b/apps/browser/store/locales/ko/copy.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - 무료 비밀번호 관리자 + + + 당신의 모든 기기에서 사용할 수 있는, 안전한 무료 비밀번호 관리자 + + + Bitwarden은 당신의 로그인과 비밀번호를 보관하고 여러 기기에서 동기화할 수 있는 가장 쉽고 안전한 방법입니다. + +계정 도용은 매우 위험한 문제입니다. 당신이 사용하는 앱 및 웹 사이트는 거의 매일 공격을 당하고 있습니다. 보안 결함이 생겨 비밀번호를 탈취당하고, 그 비밀번호를 앱 및 웹 사이트에 다시 사용하게 되면 해커들은 이메일, 은행 계좌 등 사용자의 중요한 계정에 쉽게 접근할 수 있게 됩니다. + +Bitwarden은 사용자의 모든 로그인을 여러 기기에서 동기화할 수 있는 암호화된 보관함에 저장합니다. 보관함은 완벽히 암호화되어 있으므로 오직 사용자 본인만이 데이터에 접근할 수 있습니다. Bitwarden 팀 멤버조차 아무리 읽고자 한다 해도 사용자의 데이터를 읽을 수 없습니다. 사용자의 데이터는 AES-256비트, 솔트 해싱 및 PBKDF2 SHA-256 방식으로 암호화됩니다. + +Bitwarden은 100% 오픈 소스 소프트웨어입니다. Bitwarden의 소스 코드는 GitHub에 공개되어 있어 모든 사람들이 Bitwarden의 코드를 검토하고 기여할 수 있습니다. + + + 당신의 모든 기기에서 사용할 수 있는, 안전한 무료 비밀번호 관리자 + + + 여러 기기에서 보관함에 접근하고 동기화할 수 있습니다. + + + 안전한 보관함에서 모든 로그인과 비밀번호를 관리하세요. + + + 방문하는 모든 웹 사이트에 자동 완성 기능을 통해 빠르게 로그인할 수 있습니다. + + + 오른쪽 클릭 메뉴를 통해 보관함에 간편하게 접근할 수 있습니다. + + + 강하고 안전한 무작위 비밀번호 자동 생성 기능을 제공합니다. + + + 사용자의 정보는 AES-256 비트 암호화를 통하여 안전하게 관리됩니다. + + diff --git a/apps/browser/store/locales/lt/copy.resx b/apps/browser/store/locales/lt/copy.resx new file mode 100644 index 0000000000..d7929c0b51 --- /dev/null +++ b/apps/browser/store/locales/lt/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – nemokamas slaptažodžių tvarkyklė + + + Saugi ir nemokama slaptažodžių tvarkyklė visiems įrenginiams + + + „Bitwarden“ yra paprasčiausias ir saugiausias būdas išsaugoti visus prisijungimus ir slaptažodžius, tuo pačiu patogu juos pasiekti iš visų jūsų įrenginių. + +Slaptažodžių vagystė yra rimta problema. Jūsų naudojamos svetainės ir programos yra atakuojamos kiekvieną dieną. Įvykus saugumo pažeidimų jūsų slaptažodžiai yra pavogiami. Kai pakartotinai naudojate tuos pačius slaptažodžius programose ir svetainėse, įsilaužėliai gali lengvai pasiekti jūsų el. pašto, banko ir kitas svarbias paskiras. + +Saugumo ekspertai rekomenduoja kiekvienai jūsų sukurtai paskyrai naudoti kitą, atsitiktinai sugeneruotą slaptažodį. Bet kaip valdyti visus tuos slaptažodžius? „Bitwarden“ leidžia jums lengvai kurti, saugoti ir pasiekti slaptažodžius. + +„Bitwarden“ visus jūsų prisijungimus saugo šifruotoje saugykloje, kuri pasiekiama visuose jūsų įrenginiuose. Kadangi duomenys visiškai užšifruoti dar neišėjus iš jūsų įrenginio, prieigą prie savo duomenų turite tik jūs. Net „Bitwarden“ komanda negali perskaityti jūsų duomenų, net jei mes to ir norėtume. Jūsų duomenys užklijuojami naudojant AES-256 bitų šifravimą, druskinta maišos funkcija ir PBKDF2 SHA-256. + +„Bitwarden“ yra 100% atvirojo kodo programinė įranga. „Bitwarden“ kodas yra „GitHub“ ir visi gali peržiūrėti, tikrinti ir prisidėti prie „Bitwarden“ kodo bazės. + + + Saugi ir nemokama slaptažodžių tvarkyklė visiems įrenginiams + + + Pasiekite savo saugyklą iš kelių įrenginių + + + Tvarkykite visus prisijungimus ir slaptažodžius iš saugios saugyklos + + + Greitai automatiškai užpildykite prisijungimo duomenis bet kurioje jūsų lankomoje svetainėje + + + Jūsų saugyklą taip pat galima patogiai pasiekti spustelėjus dešiniuoju pelės mygtuku + + + Automatiškai sugeneruokite stiprius, atsitiktinius ir saugius slaptažodžius + + + Jūsų informacija yra saugiai tvarkoma naudojant AES-256 bitų šifravimą + + diff --git a/apps/browser/store/locales/lv/copy.resx b/apps/browser/store/locales/lv/copy.resx new file mode 100644 index 0000000000..252b6f0344 --- /dev/null +++ b/apps/browser/store/locales/lv/copy.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – bezmaksas paroļu pārvaldnieks + + + Drošs bezmaksas paroļu pārvaldnieks visām Tavām ierīcēm + + + Bitwarden ir vieglākais un drošākais veids, kā glabāt visus pierakstīšanās vienumus un paroles, vienlaicīgi ērti uzturot tās sinhronizētas visās ierīcēs. + +Paroļu zagšana ir nopietna nebūšana. Tīmekļa vietnēm un lietotnēm uzbrūk katru dienu. Datu drošības pārkāpumos tiek nozagtas paroles. Kad viena un tā pati parole tiek izmantota lietotnēs un tīmekļa vietnēs, urķi var viegli piekļūt e-pasta, banku un citiem būtiskiem kontiem. + +Drošības lietpratēji iesaka katram izveidotajam kontam izmantot dažādas, nejauši veidotas paroles. Kā tās visas pārvaldīt? Bitwarden atvieglo paroļu izveidošanu, glabāšanu un piekļūšanu tām. + +Bitwarden uzglabā visus pierakstīšanās vienumus šifrētā glabātavā, kas tiek sinhronizēta visās izmantotajās ierīcēs. Tā kā tā dati tiek pilnībā šifrēti, pirms tie tiek izsūtīti no izmantotās ierīces, piekļuve tiem ir tikai glabātavas īpašniekam. Pat Bitwarden izstrādātāji nevar lasīt datus, pat ja to gribētu. Informācija tiek aizsargāta ar AES-256 bitu šifrēšanu, "sālīto" jaukšanu un PBKDF2 SHA-256. + +Bitwarden ir pilnībā atvērtā pirmkoda programmatūra. Bitwarden atvērtais pirmkods ir izvietots GitHub, un ikkatram ir iespēja pārskatīt, pārbaudīt un sniegt ieguldījumu Bitwarden pirmkodā. + + + + Drošs bezmaksas paroļu pārvaldnieks visām Tavām ierīcēm + + + Sinhronizē un piekļūsti savai glabātavai no vairākām ierīcēm + + + Pārvaldi visus savus pierakstīšanās vienumus un paroles no drošas glabātavas + + + Ātra automātiskā aizpilde Taviem pierakstīšanās datiem jebkurā lapā, ko apmeklē + + + Tava glabātava ir arī ērti pieejama labā klikšķa izvēlnē + + + Automātiski veido spēcīgas, sarežģītas un drošas paroles + + + Tava informācija ir droši pārvaldīta, izmantojot AES-256 bitu šifrēšanu + + diff --git a/apps/browser/store/locales/ml/copy.resx b/apps/browser/store/locales/ml/copy.resx new file mode 100644 index 0000000000..78c3eea8dd --- /dev/null +++ b/apps/browser/store/locales/ml/copy.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ബിറ്റ്വാർഡൻ - സൗജന്യമായി പാസ്‌വേഡ് മാനേജർ + + + നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങൾക്കും സുരക്ഷിതവും സൗജന്യവുമായ പാസ്‌വേഡ് മാനേജർ. + + + നിങ്ങളുടെ എല്ലാ ലോഗിനുകളും പാസ്‌വേഡുകളും സംഭരിക്കുന്നതിനുള്ള ഏറ്റവും എളുപ്പവും സുരക്ഷിതവുമായ മാർഗ്ഗമാണ് Bitwarden, ഒപ്പം നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളും തമ്മിൽ സമന്വയിപ്പിക്കുകയും ചെയ്യുന്നു. + +പാസ്‌വേഡ് മോഷണം ഗുരുതരമായ പ്രശ്‌നമാണ്. നിങ്ങൾ ഉപയോഗിക്കുന്ന വെബ്‌സൈറ്റുകളും അപ്ലിക്കേഷനുകളും എല്ലാ ദിവസവും ആക്രമണത്തിലാണ്. സുരക്ഷാ ലംഘനങ്ങൾ സംഭവിക്കുകയും നിങ്ങളുടെ പാസ്‌വേഡുകൾ മോഷ്‌ടിക്കപ്പെടുകയും ചെയ്യുന്നു. അപ്ലിക്കേഷനുകളിലും വെബ്‌സൈറ്റുകളിലും ഉടനീളം സമാന പാസ്‌വേഡുകൾ നിങ്ങൾ വീണ്ടും ഉപയോഗിക്കുമ്പോൾ ഹാക്കർമാർക്ക് നിങ്ങളുടെ ഇമെയിൽ, ബാങ്ക്, മറ്റ് പ്രധാനപ്പെട്ട അക്കൗണ്ടുകൾ എന്നിവ എളുപ്പത്തിൽ ആക്‌സസ്സുചെയ്യാനാകും. + +നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും സമന്വയിപ്പിക്കുന്ന ഒരു എൻ‌ക്രിപ്റ്റ് ചെയ്ത വാൾട്ടിൽ Bitwarden നിങ്ങളുടെ എല്ലാ ലോഗിനുകളും സംഭരിക്കുന്നു. നിങ്ങളുടെ ഉപകരണം വിടുന്നതിനുമുമ്പ് ഇത് പൂർണ്ണമായും എൻ‌ക്രിപ്റ്റ് ചെയ്‌തിരിക്കുന്നതിനാൽ, നിങ്ങളുടെ ഡാറ്റ നിങ്ങൾക്ക് മാത്രമേ ആക്‌സസ് ചെയ്യാൻ കഴിയൂ . Bitwarden ടീമിന് പോലും നിങ്ങളുടെ ഡാറ്റ വായിക്കാൻ കഴിയില്ല. നിങ്ങളുടെ ഡാറ്റ AES-256 ബിറ്റ് എൻ‌ക്രിപ്ഷൻ, സാൾട്ടിങ് ഹാഷിംഗ്, PBKDF2 SHA-256 എന്നിവ ഉപയോഗിച്ച് അടച്ചിരിക്കുന്നു. + +100% ഓപ്പൺ സോഴ്‌സ് സോഫ്റ്റ്വെയറാണ് Bitwarden . Bitwarden സോഴ്‌സ് കോഡ് GitHub- ൽ ഹോസ്റ്റുചെയ്‌തിരിക്കുന്നു, മാത്രമല്ല എല്ലാവർക്കും ഇത് അവലോകനം ചെയ്യാനും ഓഡിറ്റുചെയ്യാനും ബിറ്റ് വാർഡൻ കോഡ്ബേസിലേക്ക് സംഭാവന ചെയ്യാനും സ്വാതന്ത്ര്യമുണ്ട്. + + + + + + + + നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങൾക്കും സുരക്ഷിതവും സൗജന്യവുമായ പാസ്‌വേഡ് മാനേജർ. + + + ഒന്നിലധികം ഉപകരണങ്ങളിൽ നിന്ന് നിങ്ങളുടെ വാൾട് സമന്വയിപ്പിച്ച് ആക്‌സസ്സുചെയ്യുക + + + + നിങ്ങളുടെ എല്ലാ ലോഗിനുകളും പാസ്‌വേഡുകളും സുരക്ഷിത വാൾട്ടിൽ നിന്ന് കൈകാര്യം ചെയ്യുക + + + നിങ്ങൾ സന്ദർശിക്കുന്ന ഏത് വെബ്‌സൈറ്റിലേക്കും നിങ്ങളുടെ ലോഗിൻ ക്രെഡൻഷ്യലുകൾ വേഗത്തിൽ യാന്ത്രികമായി പൂരിപ്പിക്കുക + + + വലത്-ക്ലിക്ക് മെനുവിൽ നിന്ന് നിങ്ങളുടെ നിലവറയും സ access കര്യപ്രദമായി ആക്സസ് ചെയ്യാൻ കഴിയും. + + + ശക്തവും ക്രമരഹിതവും സുരക്ഷിതവുമായ പാസ്‌വേഡുകൾ യാന്ത്രികമായി സൃഷ്‌ടിക്കുക + + + AES-256 ബിറ്റ് എൻ‌ക്രിപ്ഷൻ ഉപയോഗിച്ച് നിങ്ങളുടെ വിവരങ്ങൾ സുരക്ഷിതമായി കൈകാര്യം ചെയ്യുന്നു + + diff --git a/apps/browser/store/locales/nb/copy.resx b/apps/browser/store/locales/nb/copy.resx new file mode 100644 index 0000000000..67d9a80450 --- /dev/null +++ b/apps/browser/store/locales/nb/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden — Fri passordbehandling + + + En sikker og fri passordbehandler for alle dine PCer og mobiler + + + Bitwarden er den enkleste og tryggeste måten å lagre alle dine innlogginger og passord på, samtidig som de blir synkronisert mellom alle dine PCer og mobiler. + +Passordtyveri er et seriøst problem. Nettstedene og appene som du bruker er under angrep hver eneste dag. Sikkerhetsbrudd forekommer, og dine passord blir stjålet. Når du bruker de samme passordene over flere apper og nettsteder, kan hackere lett få tilgang til din e-post, bankkonto, og andre viktige kontoer. + +Sikkerhetseksperter anbefaler at du bruker forskjellig og tilfeldig genererte passord for hver eneste konto du lager. Men hvordan håndterer du alle de passordene? Bitwarden gjør det lett for deg å lage, lagre, og få tilgang til dine passord. + +Bitwarden lagrer alle dine innlogginger i et kryptert hvelv som synkroniseres mellom alle dine PCer og mobiler. Ettersom hvelvet er fullstendig kryptert før det noensinne forlater enheten din, har bare du tilgang til dine dataer. Selv ikke de som jobber hos Bitwarden kan lese dine dataer, om vi så ville det. Dine dataer er forseglet med AES 256-bitkryptering, saltet hashing, og PBKDF2 SHA-256. + +Bitwardens programvare har 100% åpen kildekode. Kildekoden til Bitwarden betjenes på GitHub, og alle har all rett til å undersøke, gjennomgå og bidra til Bitwarden sin kodebase. + + + En sikker og fri passordbehandler for alle dine PCer og mobiler + + + Synkroniser og få tilgang til ditt hvelv fra alle dine enheter + + + Administrer alle dine innlogginger og passord fra et sikkert hvelv + + + Auto-utfyll dine innloggingslegitimasjoner raskt på ethvert nettsted du besøker + + + Ditt hvelv er også praktisk tilgjengelig fra høyreklikkmenyen + + + Automatisk generer sterke, tilfeldige og sikre passord + + + Din informasjon blir trygt håndtert ved bruk av AES 256-bitkryptering + + diff --git a/apps/browser/store/locales/nl/copy.resx b/apps/browser/store/locales/nl/copy.resx new file mode 100644 index 0000000000..e0779ba777 --- /dev/null +++ b/apps/browser/store/locales/nl/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Gratis wachtwoordbeheer + + + Een veilige en gratis oplossing voor wachtwoordbeheer voor al je apparaten + + + Bitwarden, Inc. is het moederbedrijf van 8bit Solutions LLC. + +BESTE WACHTWOORDBEHEERDER VOLGENS THE VERGE, U.S. NEWS & WORLD REPORT, CNET EN ANDEREN. + +Beheer, bewaar, beveilig en deel een onbeperkt aantal wachtwoorden op een onbeperkt aantal apparaten, waar je ook bent. Bitwarden levert open source wachtwoordbeheeroplossingen voor iedereen, of dat nu thuis, op het werk of onderweg is. + +Genereer sterke, unieke en willekeurige wachtwoorden op basis van beveiligingsvereisten voor elke website die je bezoekt. + +Bitwarden Send verzendt snel versleutelde informatie --- bestanden en platte tekst -- rechtstreeks naar iedereen. + +Bitwarden biedt Teams- en Enterprise-abonnementen voor bedrijven, zodat je veilig wachtwoorden kunt delen met collega's. + +Waarom Bitwarden: + +Versleuteling van wereldklasse +Wachtwoorden worden beschermd met geavanceerde end-to-end-codering (AES-256 bit, salted hashtag en PBKDF2 SHA-256) zodat jouw gegevens veilig en privé blijven. + +Ingebouwde wachtwoordgenerator +Genereer sterke, unieke en willekeurige wachtwoorden op basis van beveiligingsvereisten voor elke website die je bezoekt. + +Wereldwijde vertalingen +Bitwarden-vertalingen bestaan ​​in 40 talen en groeien dankzij onze wereldwijde community. + +Platformoverschrijdende toepassingen +Beveilig en deel gevoelige gegevens binnen uw Bitwarden Vault vanuit elke browser, mobiel apparaat of desktop-besturingssysteem, en meer. + + + Een veilige en gratis oplossing voor wachtwoordbeheer voor al uw apparaten + + + Synchroniseer en gebruik je kluis op meerdere apparaten + + + Beheer al je logins en wachtwoorden vanuit een beveiligde kluis + + + Vul snel automatisch je logingegevens in op elke website die je bezoekt + + + Je kluis is ook handig te bereiken vanuit het contextmenu (rechts klikken) + + + Automatische generatie van sterke, willekeurige en veilige wachtwoorden + + + Jouw informatie wordt veilig beheerd met AES-256 bit versleuteling + + diff --git a/apps/browser/store/locales/nn/copy.resx b/apps/browser/store/locales/nn/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/nn/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/pl/copy.resx b/apps/browser/store/locales/pl/copy.resx new file mode 100644 index 0000000000..5b3941cb7e --- /dev/null +++ b/apps/browser/store/locales/pl/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - darmowy menedżer haseł + + + Bezpieczny i darmowy menedżer haseł dla wszystkich Twoich urządzeń + + + Bitwarden, Inc. jest macierzystą firmą 8bit Solutions LLC. + +NAZWANY NAJLEPSZYM MENEDŻEREM HASEŁ PRZEZ THE VERGE, US NEWS & WORLD REPORT, CNET I WIĘCEJ. + +Zarządzaj, przechowuj, zabezpieczaj i udostępniaj nieograniczoną liczbę haseł na nieograniczonej liczbie urządzeń z każdego miejsca. Bitwarden dostarcza rozwiązania do zarządzania hasłami z otwartym kodem źródłowym każdemu, niezależnie od tego, czy jest w domu, w pracy, czy w podróży. + +Generuj silne, unikalne i losowe hasła w oparciu o wymagania bezpieczeństwa dla każdej odwiedzanej strony. + +Funkcja Bitwarden Send szybko przesyła zaszyfrowane informacje --- pliki i zwykły tekst -- bezpośrednio do każdego. + +Bitwarden oferuje plany dla zespołów i firm, dzięki czemu możesz bezpiecznie udostępniać hasła współpracownikom. + +Dlaczego warto wybrać Bitwarden: + +Szyfrowanie światowej klasy +Hasła są chronione za pomocą zaawansowanego szyfrowania typu end-to-end (AES-256 bitów, dodatkowy ciąg zaburzający i PBKDF2 SHA-256), dzięki czemu Twoje dane pozostają bezpieczne i prywatne. + +Wbudowany generator haseł +Generuj silne, unikalne i losowe hasła w oparciu o wymagania bezpieczeństwa dla każdej odwiedzanej strony. + +Przetłumaczone aplikacje +Tłumaczenia Bitwarden są dostępne w 40 językach i rosną dzięki naszej globalnej społeczności. + +Aplikacje wieloplatformowe +Zabezpiecz i udostępniaj poufne dane w swoim sejfie Bitwarden z dowolnej przeglądarki, urządzenia mobilnego, systemu operacyjnego i nie tylko. + + + Bezpieczny i darmowy menedżer haseł dla wszystkich Twoich urządzeń + + + Synchronizacja i dostęp do sejfu z różnych urządzeń + + + Przechowuj wszystkie dane logowania i hasła w bezpiecznym sejfie + + + Szybko, automatycznie uzupełnij dane logowania na każdej odwiedzanej stronie + + + Twój sejf jest także łatwo dostępny z menu kontekstowego + + + Automatycznie wygeneruj silne, losowe i bezpieczne hasło + + + Twoje dane są zabezpieczone z wykorzystaniem szyfrowania AES-256-bit + + diff --git a/apps/browser/store/locales/pt_BR/copy.resx b/apps/browser/store/locales/pt_BR/copy.resx new file mode 100644 index 0000000000..536ad080ec --- /dev/null +++ b/apps/browser/store/locales/pt_BR/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Gerenciador de Senhas Gratuito + + + Um gerenciador de senhas gratuito e seguro para todos os seus dispositivos + + + O Bitwarden é a maneira mais fácil e segura de armazenar todos os seus usuários e senhas mantendo-os convenientemente sincronizados entre todos os seus dispositivos. + +O furto de senhas é um problema sério. Os sites e aplicativos que os utiliza estão sob ataque todos os dias. Brechas de segurança ocorrem e as suas senhas são furtadas. Quando você reutiliza as mesmas senhas entre aplicativos e sites, os hackers podem facilmente acessar o seu e-mail, banco, e outras contas importantes. + +Os especialistas de segurança recomendam que utilize uma senha diferente e aleatoriamente gerada para todas as contas que você cria. Mas como gerenciar todas essas senhas? O Bitwarden torna-lhe fácil criar, armazenar, e acessar as suas senhas. + +O Bitwarden armazena todas as suas credenciais num cofre encriptado que sincroniza entre todos os seus dispositivos. Como são completamente encriptados antes de se quer sair do seu dispositivo, apenas você tem acesso aos seus dados. Nem se quer a equipe do Bitwarden pode ler os seus dados, mesmo se quiséssemos. Os seus dados são selados com encriptação AES-256 bits, salted hashing, e PBKDF2 SHA-256. + +Bitwarden é um software 100% de código aberto. O código-fonte do Bitwarden está hospedado no GitHub e todos são livres para revisar, auditar e contribuir com a base de códigos do Bitwarden. + + + Um gerenciador de senhas gratuito e seguro para todos os seus dispositivos + + + Sincronize e acesse o seu cofre através de múltiplos dispositivos + + + Gerencie todas as suas credenciais a partir de um cofre seguro + + + Autopreencha rapidamente as suas credenciais dentro de qualquer site que visitar + + + O seu cofre é também acessível a partir do menu de contexto pelo clique no botão direito do mouse + + + Gera automaticamente senhas fortes, aleatórias e seguras + + + A sua informação é gerenciada com segurança utilizando encriptação AES-256 bits + + diff --git a/apps/browser/store/locales/pt_PT/copy.resx b/apps/browser/store/locales/pt_PT/copy.resx new file mode 100644 index 0000000000..9f0230000c --- /dev/null +++ b/apps/browser/store/locales/pt_PT/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Gestor de palavras-passe gratuito + + + Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos + + + O Bitwarden é a maneira mais fácil e segura de armazenar todas as suas credenciais e palavras-passe mantendo-as convenientemente sincronizadas entre todos os seus dispositivos. + +O furto de palavras-passe é um problema sério. Os websites e aplicações que utiliza estão sob ataque todos os dias. Quebras de segurança ocorrem e as suas palavras-passe são furtadas. Quando reutiliza as mesmas palavras-passe entre aplicações e websites, os hackers podem facilmente aceder ao seu email, banco, e outras contas importantes. + +Os especialistas de segurança recomendam que utilize uma palavra-passe diferente e aleatoriamente gerada para todas as contas que cria. Mas como é que gere todas essas palavras-passe? O Bitwarden torna-lhe fácil criar, armazenar, e aceder às suas palavras-passe. + +O Bitwarden armazena todas as suas credenciais num cofre encriptado que sincroniza entre todos os seus dispositivos. Como são completamente encriptados antes de se quer sair do seu dispositivo, apenas você tem acesso aos seus dados. Nem se quer a equipa do Bitwarden pode ler os seus dados, mesmo se quiséssemos. Os seus dados são selados com encriptação AES-256 bits, salted hashing, e PBKDF2 SHA-256. + +O Bitwarden é 100% software de código aberto. O código fonte para o Bitwarden está hospedado no GitHub e todos podem revisar, auditar, e contribuir para a base de código do Bitwarden. + + + Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos + + + Sincronize e acesse o seu cofre através de múltiplos dispositivos + + + Gira todas as suas credenciais e palavras-passe a partir de um cofre seguro + + + Rapidamente auto-preencha as suas credenciais dentro de qualquer website que visitar + + + O seu cofre é também convenientemente acessível a partir do menu de contexto de clique de lado direito do rato + + + Gira automaticamente palvras-passe fortes, aleatórias e seguras + + + A sua informação é gerida com segurança utilizando encriptação AES-256 bits + + diff --git a/apps/browser/store/locales/ro/copy.resx b/apps/browser/store/locales/ro/copy.resx new file mode 100644 index 0000000000..d8beda8c80 --- /dev/null +++ b/apps/browser/store/locales/ro/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Manager de parole gratuit + + + Un manager de parole sigur și gratuit pentru toate dispozitivele dvs. + + + Bitwarden, Inc. este compania mamă a 8bit Solutions LLC. + +NUMIT CEL MAI BUN MANAGER DE PAROLE DE CĂTRE THE VERGE, U.S. NEWS & WORLD REPORT, CNET, ȘI MULȚI ALȚII. + +Gestionează, stochează, securizează și partajează parole nelimitate, pe dispozitive nelimitate, de oriunde. Bitwarden oferă soluții de gestionare a parolelor open source pentru toată lumea, fie acasă, la serviciu sau în deplasare. + +Generează parole puternice, unice și aleatorii pe baza cerințelor de securitate a fiecărui site web pe care îl frecventați. + +Bitwarden Send transmite rapid informații criptate --- fișiere și text simplu -- direct către oricine. + +Bitwarden oferă planurile Echipe și Organizație pentru companii, astfel încât să puteți partaja în siguranță parolele cu colegii. + +De ce să alegeți Bitwarden: + +Criptare de clasă mondială +Parolele sunt protejate cu criptare avansată completă (AES-256 bit, hashtag experimentat și PBKDF2 SHA-256), astfel încât datele dvs. să rămână sigure și private. + +Generator de parole încorporat +Generează parole puternice, unice și aleatorii pe baza cerințelor de securitate a fiecărui site web pe care îl frecventați. + +Traducere în mai multe limbi +Bitwarden este deja tradus în 40 de limbi și numărul lor crește, datorită comunității noastre mondiale. + +Aplicații multi-platformă +Asigură și partajează date sensibile din seiful Bitwarden de pe orice browser, dispozitiv mobil sau sistem de operare desktop și multe altele. + + + Un manager de parole sigur și gratuit, pentru toate dispozitivele dvs. + + + Sincronizează și accesează seiful dvs. de pe multiple dispozitive + + + Gestionează toate datele de autentificare și parolele dintr-un seif securizat + + + Completează automat și rapid datele dvs. de autentificare în orice sait web pe care îl vizitați + + + Asigură accesarea seifului dvs., într-un mod convenabil, din meniul contextual + + + Generează automat parole puternice, aleatorii și sigure + + + Gestionează informațiile dvs. în siguranța folosind criptarea AES pe 256 de biți + + diff --git a/apps/browser/store/locales/ru/copy.resx b/apps/browser/store/locales/ru/copy.resx new file mode 100644 index 0000000000..6932fab16d --- /dev/null +++ b/apps/browser/store/locales/ru/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – бесплатный менеджер паролей + + + Защищенный и бесплатный менеджер паролей для всех ваших устройств + + + Bitwarden, Inc. является материнской компанией 8bit Solutions LLC. + +НАЗВАН ЛУЧШИМ ДИСПЕТЧЕРОМ ПАРОЛЕЙ VERGE, US NEWS & WORLD REPORT, CNET И МНОГИМИ ДРУГИМИ. + +Управляйте, храните, защищайте и делитесь неограниченным количеством паролей на неограниченном количестве устройств из любого места. Bitwarden предоставляет решения с открытым исходным кодом по управлению паролями для всех, дома, на работе или в дороге. + +Создавайте надежные, уникальные и случайные пароли на основе требований безопасности для каждого посещаемого вами веб-сайта. + +Bitwarden Send быстро передает зашифрованную информацию - файлы и простой текст - напрямую кому угодно. + +Bitwarden предлагает для компаний планы Teams и Enterprise, чтобы вы могли безопасно делиться паролями с коллегами. + +Почему выбирают Bitwarden: + +Шифрование мирового класса +Пароли защищены передовым сквозным шифрованием (AES-256 bit, соленый хэштег и PBKDF2 SHA-256), поэтому ваши данные остаются в безопасности и конфиденциальности. + +Встроенный генератор паролей +Создавайте надежные, уникальные и случайные пароли на основе требований безопасности для каждого посещаемого вами веб-сайта. + + Глобальные переводы + Переводы Bitwarden существуют на 40 языках и постоянно растут благодаря нашему глобальному сообществу. + + Кросс-платформенные приложения + Защищайте и делитесь конфиденциальными данными в вашем Bitwarden Vault из любого браузера, мобильного устройства, настольной ОС и т. д. + + + Защищенный и бесплатный менеджер паролей для всех ваших устройств + + + Синхронизация и доступ к хранилищу с нескольких устройств + + + Управляйте всеми своими логинами и паролями из защищенного хранилища + + + Быстро и автоматически заполняйте свои учетные данные на любом веб-сайте + + + Предусмотрен удобный доступ к хранилищу из контекстного меню + + + Автоматически генерируйте сильные, случайные и надежные пароли + + + Ваша информация надежно хранится благодаря шифрованию AES-256 + + diff --git a/apps/browser/store/locales/si/copy.resx b/apps/browser/store/locales/si/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/si/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/sk/copy.resx b/apps/browser/store/locales/sk/copy.resx new file mode 100644 index 0000000000..a548d10a60 --- /dev/null +++ b/apps/browser/store/locales/sk/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Bezplatný správca hesiel + + + Bezpečný a bezplatný správca hesiel pre všetky vaše zariadenia + + + Bitwarden, Inc. je materská spoločnosť spoločnosti 8bit Solutions LLC. + +OHODNOTENÝ AKO NAJLEPŠÍ SPRÁVCA HESIEL V THE VERGE, U.S. NEWS & WORLD REPORT, CNET A ĎALŠÍMI. + +Spravujte, ukladajte, zabezpečte a zdieľajte neobmedzený počet hesiel naprieč neobmedzeným počtom zariadení odkiaľkoľvek. Bitwarden ponúka open source riešenie na správu hesiel komukoľvek, kdekoľvek doma, v práci alebo na ceste. + +Vygenerujte si silné, unikátne a náhodné heslá podľa bezpečnostných požiadaviek na každej stránke, ktorú navštevujete. + +Bitwarden Send rýchlo prenesie šifrované informácie -- súbory a text -- priamo komukoľvek. + +Bitwarden ponúka Teams a Enterprise paušály pre firmy, aby ste mohli bezpečne zdieľať hesla s kolegami. + +Prečo si vybrať Bitwarden: + +Svetová trieda v šifrovaní +Heslá sú chránené pokročilým end-to-end šifrovaním (AES-256 bit, salted hashtag a PBKDF2 SHA-256), takže Vaše dáta zostanú bezpečné a súkromné. + +Vstavaný generátor hesiel +Vygenerujte si silné, unikátne a náhodné heslá podľa bezpečnostných požiadaviek na každej stránke, ktorú navštevujete. + +Svetová lokalizácia +Vďaka našej globálnej komunite má Bitwarden neustále rastúcu lokalizáciu už do 40 jazykov. + +Aplikácie pre rôzne platformy +Zabezpečte a zdieľajte súkromné dáta prostredníctvom Bitwarden trezora z ktoréhokoľvek prehliadača, mobilného zariadenia, alebo stolného počítača a ďalších. + + + + Bezpečný a bezplatný správca hesiel pre všetky vaše zariadenia + + + Synchronizujte a pristupujte k vášmu trezoru z viacerých zariadení + + + Spravujte všetky vaše prihlasovacie mená a heslá z bezpečného trezoru + + + Rýchlo automaticky vyplňte vaše prihlasovacie údaje na akejkoľvek stránke, ktorú navštívite + + + Váš trezor je pohodlne dostupný aj z kontextovej ponuky + + + Automaticky generujte silné, náhodné a bezpečné heslá + + + Vaše informácie sú spravované bezpečne, použitím AES-256 bitového šifrovania + + diff --git a/apps/browser/store/locales/sl/copy.resx b/apps/browser/store/locales/sl/copy.resx new file mode 100644 index 0000000000..cfb4c5df10 --- /dev/null +++ b/apps/browser/store/locales/sl/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + diff --git a/apps/browser/store/locales/sr/copy.resx b/apps/browser/store/locales/sr/copy.resx new file mode 100644 index 0000000000..d67314a07c --- /dev/null +++ b/apps/browser/store/locales/sr/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Бесплатни Менаџер Лозинке + + + Сигурни и бесплатни менаџер лозинке за сва Ваша уређаја + + + Bitwarden је најједноставнији и најсигурнији начин за складиштење свих ваших података за пријављивање и лозинки, док их истовремено усклађујете на свим својим уређајима. + +Крађа лозинке је озбиљан проблем. Веб локације и апликације које користите свакодневно су на удару. Дошло је до нарушавања безбедности и крађе лозинки. Када поново користите исте лозинке у апликацијама и на веб локацијама, хакери могу лако да приступе вашој е-пошти, банци и другим важним рачунима. + +Стручњаци за безбедност препоручују употребу различите, насумично генерисане лозинке за сваки налог који креирате. Али како управљате свим тим лозинкама? Bitwarden вам олакшава стварање, чување и приступ вашим лозинкама. + +Bitwarden чува све ваше пријаве у шифрованом сефу који се синхронизује на свим вашим уређајима. Пошто је потпуно шифровано пре него што напусти уређај, само ви имате приступ подацима. Чак ни тим у Bitwarden не може да прочита ваше податке, чак и да то желимо. Ваши подаци су запечаћени са AES-256 битном енкрипцијом, усољеним хеширањем и PBKDF2 SHA-256. + +Bitwardenје софтвер са 100% отвореног кода. Изворни код Bitwarden-а се налази на GitHub и сви могу слободно да прегледају, провере и дају свој допринос за Bitwarden. + + + Сигурни и бесплатни менаџер лозинке за сва Ваша уређаја + + + Синхронизујте и приступите сефу са више уређаја + + + Управљајте свим својим пријавама и лозинкама из сигурног сефа + + + Брзо аутоматски попуните своје податке за пријављивање на било коју веб локацију коју посетите + + + Ваш сеф је такође доступан из менија десним кликом миша + + + Аутоматски генеришите јаке, насумичне и сигурне лозинке + + + Вашим подацима се сигурносно управља помоћу AES-256 битне енкрипције + + diff --git a/apps/browser/store/locales/sv/copy.resx b/apps/browser/store/locales/sv/copy.resx new file mode 100644 index 0000000000..8b3cb2a402 --- /dev/null +++ b/apps/browser/store/locales/sv/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Gratis lösenordshanterare + + + En säker och gratis lösenordshanterare för alla dina enheter + + + Bitwarden, Inc. är moderbolag till 8bit Solutions LLC. + +UTNÄMND TILL DEN BÄSTA LÖSENORDSHANTERAREN AV THE VERGE, U.S. NEWS & WORLD REPORT, CNET MED FLERA. + +Hantera, lagra, säkra och dela ett obegränsat antal lösenord mellan ett obegränsat antal enheter var som helst ifrån. Bitwarden levererar lösningar för lösenordshantering med öppen källkod till alla, vare sig det är hemma, på jobbet eller på språng. + +Generera starka, unika och slumpmässiga lösenord baserat på säkerhetskrav för varje webbplats du besöker. + +Bitwarden Send överför snabbt krypterad information --- filer och klartext -- direkt till vem som helst. + +Bitwarden erbjuder abonnemang för team och företag så att du säkert kan dela lösenord med kollegor. + +Varför välja Bitwarden: + +Kryptering i världsklass +Lösenord skyddas med avancerad end-to-end-kryptering (AES-256 bitar, saltad hashtag och PBKDF2 SHA-256) så att dina data förblir säkra och privata. + +Inbyggd lösenordsgenerator +Generera starka, unika och slumpmässiga lösenord baserat på säkerhetskrav för varje webbplats du besöker. + +Globala översättningar +Översättningar av Bitwarden finns på 40 språk och antalet växer tack vare vår globala gemenskap. + +Plattformsoberoende program +Säkra och dela känsliga data i ditt Bitwardenvalv från alla webbläsare, mobiler och datorer. + + + + En säker och gratis lösenordshanterare för alla dina enheter + + + Synkronisera och kom åt ditt valv från flera enheter + + + Hantera alla dina inloggningar och lösenord från ett säkert valv + + + Fyll snabbt och automatiskt in din inloggningsinformation på alla webbplatser du besöker + + + Ditt valv är bekvämt tillgängligt genom högerklicksmenyn + + + Skapa automatiskt starka, slumpmässiga, och säkra lösenord + + + Din information är säkert hanterad med AES-256 bitars kryptering + + diff --git a/apps/browser/store/locales/th/copy.resx b/apps/browser/store/locales/th/copy.resx new file mode 100644 index 0000000000..9c8965b01f --- /dev/null +++ b/apps/browser/store/locales/th/copy.resx @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – โปรแกรมจัดการรหัสผ่านฟรี + + + โปรแกรมจัดการรหัสผ่านที่ปลอดภัยและฟรี สำหรับอุปกรณ์ทั้งหมดของคุณ + + + Bitwarden, Inc. เป็นบริษัทแม่ของ 8bit Solutions LLC + +ได้รับการระบุชื่อเป็น โปรแกรมจัดการรหัสผ่านที่ดีที่สุด โดย The Verge, U.S. News & World Report, CNET, และที่อื่นๆ + +สามารถจัดการ จัดเก็บ ปกป้อง และแชร์รหัสผ่านไม่จำกัดจำนวนระหว่างอุปกรณ์ต่างๆ โดยไม่จำกัดจำนวนจากที่ไหนก็ได้ Bitwarden เสนอโซลูชันจัดการรหัสผ่านโอเพนซอร์สให้กับทุกคน ไม่ว่าจะอยู่ที่บ้าน ที่ทำงาน หรือนอกสถานที่ + +สามารถส่มสร้างรหัสผ่านที่ปลอดภัยและไม่ซ้ำกัน ตามเงื่อนไขความปลอดภัยที่กำหนดได้ สำหรับเว็บไซต์ทุกแห่งที่คุณใช้งานบ่อย + +Bitwarden Send สามารถส่งข้อมูลที่ถูกเข้ารหัส --- ไฟล์ หรือ ข้อความ -- ตรงไปยังใครก็ได้ได้อย่างรวดเร็ว + +Bitwarden มีแผนแบบ Teams และ Enterprise สำหรับบริษัทต่างๆ ซึางคุณสามารถแชร์รหัสผ่านกับเพื่อนร่วมงานได้อย่างปลอดภัย + +ทำไมควรเลือก Bitwarden: + +การเข้ารหัสมาตรฐานโลก +รหัสผ่านจะได้รับการปกป้องด้วยการเข้ารหัสชั้นสูง (AES-256 บิต, salted hashtag, และ PBKDF2 SHA-256) แบบต้นทางถึงปลายทาง เพื่อให้ข้อมูลของคุณปลอดภัยและเป็นส่วนตัว + +มีตัวช่วยส่มสร้างรหัสผ่าน +สามารถสุ่มสร้างรหัสผ่านที่ปลอดภัยและไม่ซ้ำกัน ตามเงื่อนไขความปลอดภัยที่กำหนดได้ สำหรับเว็บไซต์ทุกแห่งที่คุณใช้งานบ่อย + +แปลเป็นภาษาต่างๆ ทั่วโลก +Bitwarden ได้รับการแปลเป็นภาษาต่างๆ กว่า 40 ภาษา และกำลังเพิ่มขึ้นเรื่อยๆ ด้วยความสนับสนุนจากชุมชนผู้ใช้งานทั่วโลก + +แอปพลิเคชันข้ามแพลตฟอร์ม +ปกป้องและแชร์ข้อมูลอ่อนไหวในตู้เซฟ Bitwarden จากเว็บเบราว์เซอร์ อุปกรณ์มือถือ หรือเดสท็อป หรือช่องทางอื่นๆ + + + + โปรแกรมจัดการรหัสผ่านที่ปลอดภัยและฟรี สำหรับอุปกรณ์ทั้งหมดของคุณ + + + ซิงค์และเข้าถึงตู้นิรภัยของคุณจากหลายอุปกรณ์ + + + จัดการล็อกอินและรหัสผ่านทั้งหมดของคุณจากตู้นิรภัยที่ปลอดภัย + + + กรอกข้อมูลล็อกอินโดยอัตโนมัติบนทุกเว็บไซต์ที่คุณใช้งานได้อย่างรวดเร็ว + + + ตู้เซฟของคุณยังสามารถเข้าถึงได้โดยสะดวกผ่านเมนูคลิกขวา + + + ส่มสร้างรหัสผ่านที่แข็งแกร่งและปลอดภัยโดยอัตโนมัติ + + + ข้อมูลของคุณได้รับการจัดการอย่างปลอดภัยโดยใช้การเข้ารหัส AES 256 บิต + + diff --git a/apps/browser/store/locales/tr/copy.resx b/apps/browser/store/locales/tr/copy.resx new file mode 100644 index 0000000000..2763c3ec91 --- /dev/null +++ b/apps/browser/store/locales/tr/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Ücretsiz Parola Yöneticisi + + + Tüm aygıtlarınız için güvenli ve ücretsiz bir parola yöneticisi + + + Bitwarden, Inc., 8bit Solutions LLC’nin ana şirketidir. + +THE VERGE, U.S. NEWS & WORLD REPORT, CNET VE BİRÇOK MEDYA KURULUŞUNA GÖRE EN İYİ PAROLA YÖNETİCİSİ. + +Sınırsız sayıda parolayı istediğiniz kadar cihazda yönetin, saklayın, koruyun ve paylaşın. Bitwarden; herkesin evde, işte veya yolda kullanabileceği açık kaynaklı parola yönetim çözümleri sunuyor. + +Sık kullandığınız web siteleri için güvenlik gereksinimlerinize uygun, güçlü, benzersiz ve rastgele parolalar oluşturabilirsiniz. + +Bitwarden Send, şifrelenmiş bilgileri (dosyalar ve düz metinler) herkese hızlı bir şekilde iletmenizi sağlıyor. + +Bitwarden, parolaları iş arkadaşlarınızla güvenli bir şekilde paylaşabilmeniz için şirketlere yönelik Teams ve Enterprise paketleri de sunuyor. + +Neden Bitwarden? + +Üst düzey şifreleme +Parolalarınız gelişmiş uçtan uca şifreleme (AES-256 bit, salted hashtag ve PBKDF2 SHA-256) ile korunuyor, böylece verileriniz güvende ve gizli kalıyor. + +Dahili parola oluşturucu +Sık kullandığınız web siteleri için güvenlik gereksinimlerinize uygun, güçlü, benzersiz ve rastgele parolalar oluşturabilirsiniz. + +Çeviriler +Bitwarden 40 dilde kullanılabiliyor ve gönüllü topluluğumuz sayesinde çeviri sayısı giderek artıyor. + +Her platformla uyumlu uygulamalar +Bitwarden kasanızdaki hassas verilere her tarayıcıdan, mobil cihazdan veya masaüstü işletim sisteminden ulaşabilir ve onları paylaşabilirsiniz. + + + Tüm cihazarınız için güvenli ve ücretsiz bir parola yöneticisi + + + Hesabınızı senkronize ederek kasanıza tüm cihazlarınızdan ulaşın + + + Tüm giriş bilgilerinizi ve parolalarınızı güvenli bir kasadan yönetin + + + Ziyaret ettiğiniz web sitelerindeki giriş bilgilerinizi otomatik olarak anında doldurun + + + Kasanıza sağ tıklama menüsünden de rahatlıkla erişebilirsiniz + + + Otomatik olarak güçlü, rastgele ve güvenli parolalar oluşturun + + + Bilgileriniz AES-256 bit şifreleme kullanılarak güvenle yönetilir + + diff --git a/apps/browser/store/locales/uk/copy.resx b/apps/browser/store/locales/uk/copy.resx new file mode 100644 index 0000000000..77f9820d59 --- /dev/null +++ b/apps/browser/store/locales/uk/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Безкоштовний менеджер паролів + + + Захищений і безкоштовний менеджер паролів для всіх ваших пристроїв + + + 8bit Solutions LLC є дочірньою компанією Bitwarden, Inc. + +НАЙКРАЩИЙ МЕНЕДЖЕР ПАРОЛІВ ЗА ВЕРСІЄЮ THE VERGE, U.S. NEWS & WORLD REPORT, CNET, А ТАКОЖ ІНШИХ ВИДАНЬ. + +Зберігайте, захищайте, керуйте і надавайте доступ до паролів на різних пристроях де завгодно. Bitwarden пропонує рішення для керування паролями на основі відкритого програмного коду особистим та корпоративним користувачам на всіх пристроях. + +Генеруйте випадкові, надійні та унікальні паролі, які задовольняють вимоги безпеки, для кожного вебсайту та сервісу. + +Функція Bitwarden Send швидко та безпосередньо передає зашифровану інформацію будь-кому - файли та звичайний текст. + +Bitwarden пропонує командні та корпоративні тарифні плани для компаній, щоб ви могли безпечно обмінюватися паролями з колегами. + +Чому варто обрати Bitwarden: + +Шифрування світового рівня +Паролі захищаються з використанням розширеного наскрізного шифрування (AES-256 bit, salted hashtag, та PBKDF2 SHA-256), тому ваші дані завжди захищені та приватні. + +Вбудований генератор паролів +Генеруйте випадкові, надійні та унікальні паролі, які задовольняють вимоги безпеки, для кожного вебсайту та сервісу. + +Переклад багатьма мовами +Завдяки нашій глобальній спільноті, Bitwarden перекладено 40 мовами, і їх кількість продовжує зростати. + +Програми для різних платформ +Зберігайте і діліться важливими даними, а також користуйтеся іншими можливостями у вашому сховищі Bitwarden в будь-якому браузері, мобільному пристрої, чи комп'ютерній операційній системі. + + + Захищений і безкоштовний менеджер паролів для всіх ваших пристроїв + + + Синхронізуйте й отримуйте доступ до вашого сховища на багатьох пристроях + + + Керуйте всіма своїми записами в захищеному сховищі + + + Швидко й автоматично заповнюйте свої облікові дані на будь-якому веб-сайті + + + Ви також можете зручно отримати доступ до свого сховища з контекстного меню + + + Автоматично генеруйте стійкі, випадкові та надійні паролі + + + Ваша інформація надійно захищена алгоритмом шифрування AES-256 + + diff --git a/apps/browser/store/locales/vi/copy.resx b/apps/browser/store/locales/vi/copy.resx new file mode 100644 index 0000000000..52beeca10b --- /dev/null +++ b/apps/browser/store/locales/vi/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden - Trình quản lý mật khẩu miễn phí + + + Một trình quản lý mật khẩu an toàn và miễn phí cho mọi thiết bị của bạn + + + Bitwarden, Inc là công ty mẹ của 8bit Solutions LLC + +ĐƯỢC ĐÁNH GIÁ LÀ TRÌNH QUẢN LÝ MẬT KHẨU TỐT NHẤT BỞI NHÀ BÁO LỚN NHƯ THE VERGE, CNET, U.S. NEWS & WORLD REPORT VÀ HƠN NỮA + +Quản lý, lưu trữ, bảo mật và chia sẻ mật khẩu không giới hạn trên các thiết bị không giới hạn mọi lúc, mọi nơi. Bitwarden cung cấp các giải pháp quản lý mật khẩu mã nguồn mở cho tất cả mọi người, cho dù ở nhà, tại cơ quan hay khi đang di chuyển . + +Tạo mật khẩu mạnh, không bị trùng và ngẫu nhiên dựa trên các yêu cầu bảo mật cho mọi trang web bạn thường xuyên sử dụng. + +Tính năng 'Bitwarden Send' nhanh chóng truyền thông tin được mã hóa --- tệp và bản rõ - trực tiếp đến bất kỳ ai. + +Bitwarden cung cấp các gói 'Nhóm' và 'Doanh nghiệp' cho các công ty để bạn có thể chia sẻ mật khẩu với đồng nghiệp một cách an toàn. + +Tại sao bạn nên chọn Bitwarden: + +Mã hóa tốt nhất thế giới +Mật khẩu được bảo vệ bằng mã hóa đầu cuối (end-to-end encryption) tiên tiến như AES-256 bit, salted hashtag, và PBKDF2 SHA-256 nên dữ liệu của bạn luôn an toàn và riêng tư. + +Trình tạo mật khẩu tích hợp +Tạo mật khẩu mạnh, không bị trùng và ngẫu nhiên dựa trên các yêu cầu bảo mật cho mọi trang web bạn thường xuyên sử dụng. + +Bản dịch ngôn ngữ từ cộng đồng +Bitwarden đã có bản dịch 40 ngôn ngữ và đang phát triển nhờ vào cộng đồng toàn cầu của chúng tôi. + +Ứng dụng đa nền tảng +Bảo mật và chia sẻ dữ liệu nhạy cảm trong kho lưu trữ Bitwarden của bạn từ bất kỳ trình duyệt, điện thoại thông minh hoặc hệ điều hành máy tính nào, vân vân + + + Một trình quản lý mật khẩu an toàn và miễn phí cho mọi thiết bị của bạn + + + Đồng bộ hóa và truy cập vào kho mật khẩu của bạn từ nhiều thiết bị + + + Quản lý tất cả đăng nhập và mật khẩu của bạn từ một kho mật khẩu an toàn + + + Nhanh chóng tự động điền thông tin đăng nhập của bạn vào bất kỳ trang web nào mà bạn truy cập + + + Dễ dàng truy cập kho mật khẩu của bạn từ menu chuột phải + + + Tự động tạo mật khẩu mạnh, ngẫu nhiên và an toàn + + + Thông tin của bạn được quản lý một cách an toàn bằng cách sử dụng mã hóa AES-256 bit + + diff --git a/apps/browser/store/locales/zh_CN/copy.resx b/apps/browser/store/locales/zh_CN/copy.resx new file mode 100644 index 0000000000..055a736e2a --- /dev/null +++ b/apps/browser/store/locales/zh_CN/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – 免费密码管理器 + + + 安全免费的跨平台密码管理器 + + + Bitwarden, Inc. 是 8bit Solutions LLC 的母公司。 + +被 the verge、U.S. news & world report、cnet 等评为最佳密码管理器。 + +从任何地方,不限制设备,管理、存储、保护和共享无限的密码。Bitwarden 为每个人提供开源的密码管理解决方案,无论是在家里,在工作中,还是在旅途中。 + +基于安全要求,为你经常访问的每个网站生成强大、唯一和随机的密码。 + +Bitwarden Send 快速传输加密的信息---文件和文本---直接给任何人。 + +Bitwarden 为公司提供团队和企业计划,因此你可以安全地与同事共享密码。 + +为何选择 Bitwarden: + +世界级的加密技术 +密码受到先进的端到端加密(AES-256 位、盐化标签和 PBKDF2 SHA-256)的保护,为您的数据保持安全和隐密。 + +内置密码生成器 +基于安全要求,为你经常访问的每个网站生成强大、唯一和随机的密码。 + +全球翻译 +Bitwarden 的翻译有 40 种语言,而且还在不断增加,感谢我们的全球社区。 + +跨平台的应用程序 +从任何浏览器、移动设备或桌面操作系统,以及更多的地方,在您的 Bitwarden 密码库中保护和分享敏感数据。 + + + 安全免费的跨平台密码管理器 + + + 从多台设备同步和访问密码库 + + + 在一个安全的密码库中管理您所有的登录信息和密码 + + + 在您访问的任何网站中快速自动填充登录项目 + + + 您也可以通过右击菜单快捷方便地访问密码库 + + + 自动生成强大、随机和安全的密码 + + + 您的信息使用 AES-256 位加密进行安全管理 + + diff --git a/apps/browser/store/locales/zh_TW/copy.resx b/apps/browser/store/locales/zh_TW/copy.resx new file mode 100644 index 0000000000..96b4f92f17 --- /dev/null +++ b/apps/browser/store/locales/zh_TW/copy.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – 免費密碼管理工具 + + + 安全、免費、跨平台的密碼管理工具 + + + Bitwarden, Inc. 是 8bit Solutions LLC 的母公司。 + +被 THE VERGE、U.S. NEWS & WORLD REPORT、CNET 等評為最佳密碼管理器。 + +從任何地方,不限制設備,管理、存儲、保護和共享無限的密碼。Bitwarden 為每個人提供開源的密碼管理解決方案,無論是在家裡,在工作中,還是在旅途中。 + +基於安全要求,為你經常訪問的每個網站生成強大、唯一和隨機的密碼。 + +Bitwarden Send 快速傳輸加密的信息---文檔和文本---直接給任何人。 + +Bitwarden 為公司提供團隊和企業計劃,因此你可以安全地與同事共享密碼。 + +為何選擇 Bitwarden: + +世界級的加密技術 +密碼受到先進的端到端加密(AES-256 位、鹽化標籤和 PBKDF2 SHA-256)的保護,為您的數據保持安全和隱密。 + +內置密碼生成器 +基於安全要求,為你經常訪問的每個網站生成強大、唯一和隨機的密碼。 + +全球翻譯 +Bitwarden 的翻譯有 40 種語言,而且還在不斷增加,感謝我們的全球社區。 + +跨平台的應用程式 +從任何瀏覽器、行動裝置或桌面作業系統,以及更多的地方,在您的 Bitwarden 密碼庫中保護和分享敏感數據。 + + + 安全、免費、跨平台的密碼管理工具 + + + 在多部裝置上同步和存取密碼庫 + + + 在一個安全的密碼庫中管理密碼 + + + 快速自動填入登入憑據到您造訪的任何網站中 + + + 您可以透過滑鼠右鍵選單快速地存取密碼庫 + + + 自動生成高強度、隨機且安全的密碼 + + + 您的資訊採用 AES-256 位加密安全管理 + + diff --git a/apps/browser/store/windows/AppxManifest.xml b/apps/browser/store/windows/AppxManifest.xml new file mode 100644 index 0000000000..f57b3db988 --- /dev/null +++ b/apps/browser/store/windows/AppxManifest.xml @@ -0,0 +1,50 @@ + + + + + + + Bitwarden Extension - Free Password Manager + 8bit Solutions LLC + Assets/icon_50.png + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/browser/store/windows/Assets/icon_150.png b/apps/browser/store/windows/Assets/icon_150.png new file mode 100644 index 0000000000..cd7fda75d9 Binary files /dev/null and b/apps/browser/store/windows/Assets/icon_150.png differ diff --git a/apps/browser/store/windows/Assets/icon_44.png b/apps/browser/store/windows/Assets/icon_44.png new file mode 100644 index 0000000000..10ab6fe65a Binary files /dev/null and b/apps/browser/store/windows/Assets/icon_44.png differ diff --git a/apps/browser/store/windows/Assets/icon_50.png b/apps/browser/store/windows/Assets/icon_50.png new file mode 100644 index 0000000000..4865f4abe3 Binary files /dev/null and b/apps/browser/store/windows/Assets/icon_50.png differ diff --git a/apps/browser/tsconfig.json b/apps/browser/tsconfig.json new file mode 100644 index 0000000000..17b727079c --- /dev/null +++ b/apps/browser/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "noImplicitAny": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "module": "es6", + "target": "ES2016", + "allowJs": true, + "sourceMap": true, + "baseUrl": ".", + "paths": { + "jslib-common/*": ["../../libs/common/src/*"], + "jslib-angular/*": ["../../libs/angular/src/*"] + } + }, + "angularCompilerOptions": { + "preserveWhitespaces": true + }, + "include": ["src"] +} diff --git a/apps/browser/tsconfig.spec.json b/apps/browser/tsconfig.spec.json new file mode 100644 index 0000000000..fc8520e737 --- /dev/null +++ b/apps/browser/tsconfig.spec.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.json" +} diff --git a/apps/browser/webpack.config.js b/apps/browser/webpack.config.js new file mode 100644 index 0000000000..dc6f512ee6 --- /dev/null +++ b/apps/browser/webpack.config.js @@ -0,0 +1,199 @@ +const path = require("path"); +const webpack = require("webpack"); +const { CleanWebpackPlugin } = require("clean-webpack-plugin"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const CopyWebpackPlugin = require("copy-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const { AngularWebpackPlugin } = require("@ngtools/webpack"); +const TerserPlugin = require("terser-webpack-plugin"); + +if (process.env.NODE_ENV == null) { + process.env.NODE_ENV = "development"; +} +const ENV = (process.env.ENV = process.env.NODE_ENV); + +const moduleRules = [ + { + test: /\.(html)$/, + loader: "html-loader", + }, + { + test: /.(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, + exclude: /loading.svg/, + generator: { + filename: "popup/fonts/[name][ext]", + }, + type: "asset/resource", + }, + { + test: /\.(jpe?g|png|gif|svg)$/i, + exclude: /.*(bwi-font|glyphicons-halflings-regular)\.svg/, + generator: { + filename: "popup/images/[name][ext]", + }, + type: "asset/resource", + }, + { + test: /\.scss$/, + use: [ + { + loader: MiniCssExtractPlugin.loader, + }, + "css-loader", + "sass-loader", + ], + }, + // Hide System.import warnings. ref: https://github.com/angular/angular/issues/21560 + { + test: /[\/\\]@angular[\/\\].+\.js$/, + parser: { system: true }, + }, + { + test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/, + loader: "@ngtools/webpack", + }, +]; + +const plugins = [ + new HtmlWebpackPlugin({ + template: "./src/popup/index.html", + filename: "popup/index.html", + chunks: ["popup/polyfills", "popup/vendor-angular", "popup/vendor", "popup/main"], + }), + new HtmlWebpackPlugin({ + template: "./src/background.html", + filename: "background.html", + chunks: ["vendor", "background"], + }), + new HtmlWebpackPlugin({ + template: "./src/notification/bar.html", + filename: "notification/bar.html", + chunks: ["notification/bar"], + }), + new CopyWebpackPlugin({ + patterns: [ + "./src/manifest.json", + { from: "./src/_locales", to: "_locales" }, + { from: "./src/images", to: "images" }, + { from: "./src/popup/images", to: "popup/images" }, + { from: "./src/content/autofill.css", to: "content" }, + ], + }), + new MiniCssExtractPlugin({ + filename: "[name].css", + chunkFilename: "chunk-[id].css", + }), + new webpack.DefinePlugin({ + "process.env": { + ENV: JSON.stringify(ENV), + }, + }), + new AngularWebpackPlugin({ + tsConfigPath: "tsconfig.json", + entryModule: "src/popup/app.module#AppModule", + sourceMap: true, + }), + new CleanWebpackPlugin({ + cleanAfterEveryBuildPatterns: ["!popup/fonts/**/*"], + }), + new webpack.ProvidePlugin({ + process: "process/browser", + }), + new webpack.SourceMapDevToolPlugin({ + exclude: [/content\/.*/, /notification\/.*/], + filename: "[file].map", + }), +]; + +const config = { + mode: ENV, + devtool: false, + entry: { + "popup/polyfills": "./src/popup/polyfills.ts", + "popup/main": "./src/popup/main.ts", + background: "./src/background.ts", + "content/autofill": "./src/content/autofill.js", + "content/autofiller": "./src/content/autofiller.ts", + "content/notificationBar": "./src/content/notificationBar.ts", + "content/contextMenuHandler": "./src/content/contextMenuHandler.ts", + "content/shortcuts": "./src/content/shortcuts.ts", + "content/message_handler": "./src/content/message_handler.ts", + "notification/bar": "./src/notification/bar.js", + }, + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + exclude: [/content\/.*/, /notification\/.*/], + terserOptions: { + // Replicate Angular CLI behaviour + compress: { + global_defs: { + ngDevMode: false, + ngI18nClosureMode: false, + }, + }, + }, + }), + ], + splitChunks: { + cacheGroups: { + commons: { + test(module, chunks) { + return ( + module.resource != null && + module.resource.includes(`${path.sep}node_modules${path.sep}`) && + !module.resource.includes(`${path.sep}node_modules${path.sep}@angular${path.sep}`) + ); + }, + name: "popup/vendor", + chunks: (chunk) => { + return chunk.name === "popup/main"; + }, + }, + angular: { + test(module, chunks) { + return ( + module.resource != null && + module.resource.includes(`${path.sep}node_modules${path.sep}@angular${path.sep}`) + ); + }, + name: "popup/vendor-angular", + chunks: (chunk) => { + return chunk.name === "popup/main"; + }, + }, + commons2: { + test: /[\\/]node_modules[\\/]/, + name: "vendor", + chunks: (chunk) => { + return chunk.name === "background"; + }, + }, + }, + }, + }, + resolve: { + extensions: [".ts", ".js"], + symlinks: false, + modules: [path.resolve("../../node_modules")], + alias: { + sweetalert2: require.resolve("sweetalert2/dist/sweetalert2.js"), + "#sweetalert2": require.resolve("sweetalert2/src/sweetalert2.scss"), + }, + fallback: { + assert: false, + buffer: require.resolve("buffer/"), + util: require.resolve("util/"), + url: require.resolve("url/"), + }, + }, + output: { + filename: "[name].js", + path: path.resolve(__dirname, "build"), + }, + module: { rules: moduleRules }, + plugins: plugins, +}; + +module.exports = config; diff --git a/apps/cli/.eslintrc.json b/apps/cli/.eslintrc.json new file mode 100644 index 0000000000..10d2238837 --- /dev/null +++ b/apps/cli/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "env": { + "node": true + } +} diff --git a/apps/cli/.gitignore b/apps/cli/.gitignore new file mode 100644 index 0000000000..b6c18808b0 --- /dev/null +++ b/apps/cli/.gitignore @@ -0,0 +1,5 @@ +node_modules +build +dist + +config/local.json diff --git a/apps/cli/.npmignore b/apps/cli/.npmignore new file mode 100644 index 0000000000..6e4ac06144 --- /dev/null +++ b/apps/cli/.npmignore @@ -0,0 +1,3 @@ +* +!/build +!/build/**/* diff --git a/apps/cli/.vscode/launch.json b/apps/cli/.vscode/launch.json new file mode 100644 index 0000000000..ac4d00db2c --- /dev/null +++ b/apps/cli/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "protocol": "inspector", + "cwd": "${workspaceRoot}", + "program": "${workspaceFolder}/build/bw.js", + "env": { + "BW_SESSION": "fPZb0J+1NBzQ+HB512pLhSIIt2aRoOjqs6SrbxbTHVcsZdFk1cthzjBIMqBa2X7fjOOA3VU0bnR42fYeuWj2Vw==" + }, + "sourceMapPathOverrides": { + "meteor://💻app/*": "${workspaceFolder}/*", + "webpack:///./~/*": "${workspaceFolder}/node_modules/*", + "webpack://?:*/*": "${workspaceFolder}/*", + "webpack://@bitwarden/cli/*": "${workspaceFolder}/*" + }, + "smartStep": true, + "console": "integratedTerminal", + "args": ["login", "sdfsd@sdfdf.com", "ddddddd"] + } + ] +} diff --git a/apps/cli/.vscode/settings.json b/apps/cli/.vscode/settings.json new file mode 100644 index 0000000000..4570edf3bc --- /dev/null +++ b/apps/cli/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "debug.javascript.terminalOptions": { + "sourceMapPathOverrides": { + "meteor://💻app/*": "${workspaceFolder}/*", + "webpack:///./~/*": "${workspaceFolder}/node_modules/*", + "webpack://?:*/*": "${workspaceFolder}/*", + "webpack://@bitwarden/cli/*": "${workspaceFolder}/*" + } + } +} diff --git a/apps/cli/README.md b/apps/cli/README.md new file mode 100644 index 0000000000..544b397fdc --- /dev/null +++ b/apps/cli/README.md @@ -0,0 +1,84 @@ +[![Github Workflow build on master](https://github.com/bitwarden/clients/actions/workflows/build-cli.yml/badge.svg?branch=master)](https://github.com/bitwarden/clients/actions/workflows/build-cli.yml?query=branch:master) +[![Join the chat at https://gitter.im/bitwarden/Lobby](https://badges.gitter.im/bitwarden/Lobby.svg)](https://gitter.im/bitwarden/Lobby) + +# Bitwarden Command-line Interface + +[![Platforms](https://imgur.com/AnTLX0S.png "Platforms")](https://help.bitwarden.com/article/cli/#download--install) + +The Bitwarden CLI is a powerful, full-featured command-line interface (CLI) tool to access and manage a Bitwarden vault. The CLI is written with TypeScript and Node.js and can be run on Windows, macOS, and Linux distributions. + +![CLI](https://raw.githubusercontent.com/bitwarden/brand/master/screenshots/cli-macos.png "CLI") + +## Download/Install + +You can install the Bitwarden CLI multiple different ways: + +**NPM** + +If you already have the Node.js runtime installed on your system, you can install the CLI using NPM. NPM makes it easy to keep your installation updated and should be the preferred installation method if you are already using Node.js. + +```bash +npm install -g @bitwarden/cli +``` + +**Native Executable** + +We provide natively packaged versions of the CLI for each platform which have no requirements on installing the Node.js runtime. You can obtain these from the [downloads section](https://help.bitwarden.com/article/cli/#download--install) in the documentation. + +**Other Package Managers** + +- [Chocolatey](https://chocolatey.org/packages/bitwarden-cli) + ```powershell + choco install bitwarden-cli + ``` +- [Homebrew](https://formulae.brew.sh/formula/bitwarden-cli) + ```bash + brew install bitwarden-cli + ``` +- [Snap](https://snapcraft.io/bw) + ```bash + sudo snap install bw + ``` + +## Documentation + +The Bitwarden CLI is self-documented with `--help` content and examples for every command. You should start exploring the CLI by using the global `--help` option: + +```bash +bw --help +``` + +This option will list all available commands that you can use with the CLI. + +Additionally, you can run the `--help` option on a specific command to learn more about it: + +```bash +bw list --help +bw create --help +``` + +**Detailed Documentation** + +We provide detailed documentation and examples for using the CLI in our help center at https://help.bitwarden.com/article/cli/. + +## Build/Run + +**Requirements** + +- [Node.js](https://nodejs.org) v16.13.1. + - Testing is done against Node 16, other versions may work, but are not guaranteed. +- NPM v8 + +**Run the app** + +```bash +npm install +npm run sub:init # initialize the git submodule for jslib +npm run build:watch +``` + +You can then run commands from the `./build` folder: + +```bash +node ./build/bw.js login +``` diff --git a/apps/cli/config/config.js b/apps/cli/config/config.js new file mode 100644 index 0000000000..2b2516e7c2 --- /dev/null +++ b/apps/cli/config/config.js @@ -0,0 +1,31 @@ +/* eslint-disable no-console */ +function load(envName) { + return { + ...loadConfig(envName), + ...loadConfig("local"), + }; +} + +function log(configObj) { + const repeatNum = 50; + console.log(`${"=".repeat(repeatNum)}\nenvConfig`); + console.log(JSON.stringify(configObj, null, 2)); + console.log(`${"=".repeat(repeatNum)}`); +} + +function loadConfig(configName) { + try { + return require(`./${configName}.json`); + } catch (e) { + if (e instanceof Error && e.code === "MODULE_NOT_FOUND") { + return {}; + } else { + throw e; + } + } +} + +module.exports = { + load, + log, +}; diff --git a/apps/cli/config/development.json b/apps/cli/config/development.json new file mode 100644 index 0000000000..d8e5c04e7e --- /dev/null +++ b/apps/cli/config/development.json @@ -0,0 +1,5 @@ +{ + "flags": { + "serve": true + } +} diff --git a/apps/cli/config/production.json b/apps/cli/config/production.json new file mode 100644 index 0000000000..d8e5c04e7e --- /dev/null +++ b/apps/cli/config/production.json @@ -0,0 +1,5 @@ +{ + "flags": { + "serve": true + } +} diff --git a/apps/cli/examples/git-credential-bw.sh b/apps/cli/examples/git-credential-bw.sh new file mode 100644 index 0000000000..9195471bb5 --- /dev/null +++ b/apps/cli/examples/git-credential-bw.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +# bw git-credential helper +# Based on: +# * https://github.com/lastpass/lastpass-cli/blob/master/contrib/examples/git-credential-lastpass +# * https://gist.github.com/mikeboiko/58ab730afd65bca0a125bc12b6f4670d + +# A credential helper for git to retrieve usernames and passwords from bw. +# For general usage, see https://git-scm.com/docs/gitcredentials. +# Here's a quick version: +# 1. Put this somewhere in your path. +# 2. git config --global credential.helper bw + +declare -A params + +if [[ "$1" == "get" ]]; then + read -r line + while [ -n "$line" ]; do + key=${line%%=*} + value=${line#*=} + params[$key]=$value + read -r line + done + + if [[ "${params['protocol']}" != "https" ]]; then + exit + fi + + if [[ -z "${params["host"]}" ]]; then + exit + fi + + if ! bw list items --search "asdf" > /dev/null 2>&1; then + echo "Please login to Bitwarden to use git credential helper" > /dev/stderr + exit + fi + + id=$(bw list items --search "${params["host"]}"|jq ".[] | select(.name == \"${params["host"]}\").id" -r) + + if [[ -z "$id" ]]; then + echo "Couldn't find item id in Bitwarden DB." > /dev/stderr + echo "${params}" + exit + fi + + user=$(bw get username "${id}") + pass=$(bw get password "${id}") + + if [[ -z "$user" ]] || [[ -z "$pass" ]]; then + echo "Couldn't find host in Bitwarden DB." > /dev/stderr + exit + fi + + echo username="$user" + echo password="$pass" +fi diff --git a/apps/cli/jest.config.js b/apps/cli/jest.config.js new file mode 100644 index 0000000000..48c4b61d3a --- /dev/null +++ b/apps/cli/jest.config.js @@ -0,0 +1,15 @@ +const { pathsToModuleNameMapper } = require("ts-jest"); + +const { compilerOptions } = require("./tsconfig"); + +module.exports = { + preset: "ts-jest", + testMatch: ["**/+(*.)+(spec).+(ts)"], + setupFilesAfterEnv: ["/spec/test.ts"], + collectCoverage: true, + coverageReporters: ["html", "lcov"], + coverageDirectory: "coverage", + moduleNameMapper: pathsToModuleNameMapper(compilerOptions?.paths || {}, { + prefix: "/", + }), +}; diff --git a/apps/cli/package.json b/apps/cli/package.json new file mode 100644 index 0000000000..58da0c15fe --- /dev/null +++ b/apps/cli/package.json @@ -0,0 +1,46 @@ +{ + "name": "@bitwarden/cli", + "description": "A secure and free password manager for all of your devices.", + "version": "1.22.1", + "keywords": [ + "bitwarden", + "password", + "vault", + "password manager", + "cli" + ], + "author": "Bitwarden Inc. (https://bitwarden.com)", + "homepage": "https://bitwarden.com", + "repository": { + "type": "git", + "url": "https://github.com/bitwarden/cli" + }, + "license": "GPL-3.0-only", + "scripts": { + "clean": "rimraf dist/**/*", + "build": "webpack", + "build:debug": "npm run build && node --inspect ./build/bw.js", + "build:watch": "webpack --watch", + "build:prod": "cross-env NODE_ENV=production webpack", + "build:prod:watch": "cross-env NODE_ENV=production webpack --watch", + "package": "npm run package:win && npm run package:mac && npm run package:lin", + "package:win": "pkg . --targets win-x64 --output ./dist/windows/bw.exe --build", + "package:mac": "pkg . --targets macos-x64 --output ./dist/macos/bw", + "package:lin": "pkg . --targets linux-x64 --output ./dist/linux/bw", + "debug": "node --inspect ./build/bw.js", + "dist": "npm run build:prod && npm run clean && npm run package", + "dist:win": "npm run build:prod && npm run clean && npm run package:win", + "dist:mac": "npm run build:prod && npm run clean && npm run package:mac", + "dist:lin": "npm run build:prod && npm run clean && npm run package:lin", + "publish:npm": "npm run build:prod && npm publish --access public", + "test": "jest", + "test:watch": "jest --watch", + "test:watch:all": "jest --watchAll" + }, + "bin": { + "bw": "build/bw.js" + }, + "pkg": { + "assets": "./build/**/*" + } +} diff --git a/apps/cli/scripts/brew-update.ps1 b/apps/cli/scripts/brew-update.ps1 new file mode 100644 index 0000000000..f9b7ce6a3d --- /dev/null +++ b/apps/cli/scripts/brew-update.ps1 @@ -0,0 +1,23 @@ +param ( + [Parameter(Mandatory=$true)] + [string] $version +) + +# Dependencies: +# 1. brew cask install powershell +# 2. Environment variables for HOMEBREW_GITHUB_USER and HOMEBREW_GITHUB_API_TOKEN set. +# +# To run: +# pwsh ./brew-update.ps1 -version 1.1.0 + +# Cleaning up +cd $("$(brew --repository)" + "/Library/Taps/homebrew/homebrew-core/Formula") +git checkout master +git reset --hard origin/master +git push $env:HOMEBREW_GITHUB_USER master +git branch -D $("bitwarden-cli-" + $version) +git push $env:HOMEBREW_GITHUB_USER --delete $("bitwarden-cli-" + $version) + +# Bump +$url = 'https://registry.npmjs.org/@bitwarden/cli/-/cli-' + $version + '.tgz'; +brew bump-formula-pr --url="$url" bitwarden-cli diff --git a/apps/cli/scripts/choco-pack.ps1 b/apps/cli/scripts/choco-pack.ps1 new file mode 100644 index 0000000000..a43b4aa4ed --- /dev/null +++ b/apps/cli/scripts/choco-pack.ps1 @@ -0,0 +1,34 @@ +param ( + [switch] $push +) + +# To run: +# .\choco-pack.ps1 + +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path; +$rootDir = $dir + "\.."; +$distDir = $rootDir + "\dist"; +$chocoDir = $rootDir + "\stores\chocolatey"; +$distChocoDir = $distDir + "\chocolatey"; +$distChocoToolsDir = $distDir + "\chocolatey\tools"; + +if(Test-Path -Path $distChocoDir) { + Remove-Item -Recurse -Force $distChocoDir +} + +$exe = $distDir + "\windows\bw.exe"; +$license = $rootDir + "\LICENSE.txt"; +Copy-Item -Path $chocoDir -Destination $distChocoDir –Recurse +Copy-Item $exe -Destination $distChocoToolsDir; +Copy-Item $license -Destination $distChocoToolsDir; + +$srcPackage = $rootDir + "\package.json"; +$srcPackageVersion = (Get-Content -Raw -Path $srcPackage | ConvertFrom-Json).version; +$nuspec = $distChocoDir + "\bitwarden-cli.nuspec"; +choco pack $nuspec --version $srcPackageVersion --out $distChocoDir + +if ($push) { + cd $distChocoDir + choco push + cd $rootDir +} diff --git a/apps/cli/scripts/choco-update.ps1 b/apps/cli/scripts/choco-update.ps1 new file mode 100644 index 0000000000..f1b5e295be --- /dev/null +++ b/apps/cli/scripts/choco-update.ps1 @@ -0,0 +1,26 @@ +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"; +$distChocoDir = $distDir + "\chocolatey"; + +if(Test-Path -Path $distChocoDir) { + Remove-Item -Recurse -Force $distChocoDir +} +New-Item -ItemType directory -Path $distChocoDir | Out-Null + +$nupkg = "bitwarden-cli." + $version + ".nupkg" +$uri = "https://github.com/bitwarden/cli/releases/download/v" + $version + "/" + $nupkg; +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +Invoke-RestMethod -Uri $uri -OutFile $($distChocoDir + "\" + $nupkg) + +cd $distChocoDir +choco push +cd $rootDir diff --git a/apps/cli/scripts/snap-build.ps1 b/apps/cli/scripts/snap-build.ps1 new file mode 100644 index 0000000000..dfae76682d --- /dev/null +++ b/apps/cli/scripts/snap-build.ps1 @@ -0,0 +1,32 @@ +param ( + [Parameter(Mandatory=$true)] + [string] $version +) + +# Dependencies: +# 1. Install powershell, ex `sudo apt-get install -y powershell` +# +# To run: +# ./snap-build.ps1 -version 1.1.0 +# +# and then push to snap with: +# cd ../dist/snap +# snap push bw*.snap +# or, use the ./snap-update.ps1 script + +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path +$rootDir = $dir + "/.." +$distDir = $rootDir + "/dist" +$snapDir = $rootDir + "/stores/snap" +$distSnapDir = $distDir + "/snap" +$snapDistYaml = $distSnapDir + "/snapcraft.yaml" + +if(Test-Path -Path $distSnapDir) { + Remove-Item -Recurse -Force $distSnapDir +} + +Copy-Item -Path $snapDir -Destination $distSnapDir –Recurse +(Get-Content $snapDistYaml).replace('__version__', $version) | Set-Content $snapDistYaml +cd $distSnapDir +snapcraft +cd $rootDir diff --git a/apps/cli/scripts/snap-update.ps1 b/apps/cli/scripts/snap-update.ps1 new file mode 100644 index 0000000000..7c68284579 --- /dev/null +++ b/apps/cli/scripts/snap-update.ps1 @@ -0,0 +1,12 @@ +# Dependencies: +# 1. Install powershell, ex `sudo apt-get install -y powershell` +# +# To run: +# pwsh ./snap-update.ps1 + +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path; +$rootDir = $dir + "/.."; +$distDir = $rootDir + "/dist"; +$distSnap = $distDir + "/snap/bw*.snap"; + +snapcraft push $distSnap --release stable diff --git a/apps/cli/spec/bw.spec.ts b/apps/cli/spec/bw.spec.ts new file mode 100644 index 0000000000..9ce5fc2cd1 --- /dev/null +++ b/apps/cli/spec/bw.spec.ts @@ -0,0 +1,3 @@ +describe("bw", () => { + test.todo("is a placeholder test"); +}); diff --git a/apps/cli/spec/test.ts b/apps/cli/spec/test.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/cli/spec/utils.spec.ts b/apps/cli/spec/utils.spec.ts new file mode 100644 index 0000000000..c7d47075ef --- /dev/null +++ b/apps/cli/spec/utils.spec.ts @@ -0,0 +1,27 @@ +import { FlagName } from "../src/flags"; +import { CliUtils } from "../src/utils"; +describe("flagEnabled", () => { + it("is true if flag is null", () => { + process.env.FLAGS = JSON.stringify({ test: null }); + + expect(CliUtils.flagEnabled("test" as FlagName)).toBe(true); + }); + + it("is true if flag is undefined", () => { + process.env.FLAGS = JSON.stringify({}); + + expect(CliUtils.flagEnabled("test" as FlagName)).toBe(true); + }); + + it("is true if flag is true", () => { + process.env.FLAGS = JSON.stringify({ test: true }); + + expect(CliUtils.flagEnabled("test" as FlagName)).toBe(true); + }); + + it("is false if flag is false", () => { + process.env.FLAGS = JSON.stringify({ test: false }); + + expect(CliUtils.flagEnabled("test" as FlagName)).toBe(false); + }); +}); diff --git a/apps/cli/src/bw.ts b/apps/cli/src/bw.ts new file mode 100644 index 0000000000..7006a18d21 --- /dev/null +++ b/apps/cli/src/bw.ts @@ -0,0 +1,381 @@ +import * as fs from "fs"; +import * as path from "path"; + +import * as program from "commander"; +import * as jsdom from "jsdom"; + +import { ClientType } from "jslib-common/enums/clientType"; +import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions"; +import { LogLevelType } from "jslib-common/enums/logLevelType"; +import { StateFactory } from "jslib-common/factories/stateFactory"; +import { Account } from "jslib-common/models/domain/account"; +import { GlobalState } from "jslib-common/models/domain/globalState"; +import { AppIdService } from "jslib-common/services/appId.service"; +import { AuditService } from "jslib-common/services/audit.service"; +import { AuthService } from "jslib-common/services/auth.service"; +import { CipherService } from "jslib-common/services/cipher.service"; +import { CollectionService } from "jslib-common/services/collection.service"; +import { ContainerService } from "jslib-common/services/container.service"; +import { CryptoService } from "jslib-common/services/crypto.service"; +import { EnvironmentService } from "jslib-common/services/environment.service"; +import { ExportService } from "jslib-common/services/export.service"; +import { FileUploadService } from "jslib-common/services/fileUpload.service"; +import { FolderService } from "jslib-common/services/folder.service"; +import { ImportService } from "jslib-common/services/import.service"; +import { KeyConnectorService } from "jslib-common/services/keyConnector.service"; +import { NoopMessagingService } from "jslib-common/services/noopMessaging.service"; +import { OrganizationService } from "jslib-common/services/organization.service"; +import { PasswordGenerationService } from "jslib-common/services/passwordGeneration.service"; +import { PolicyService } from "jslib-common/services/policy.service"; +import { ProviderService } from "jslib-common/services/provider.service"; +import { SearchService } from "jslib-common/services/search.service"; +import { SendService } from "jslib-common/services/send.service"; +import { SettingsService } from "jslib-common/services/settings.service"; +import { StateService } from "jslib-common/services/state.service"; +import { StateMigrationService } from "jslib-common/services/stateMigration.service"; +import { SyncService } from "jslib-common/services/sync.service"; +import { TokenService } from "jslib-common/services/token.service"; +import { TotpService } from "jslib-common/services/totp.service"; +import { TwoFactorService } from "jslib-common/services/twoFactor.service"; +import { UserVerificationService } from "jslib-common/services/userVerification.service"; +import { VaultTimeoutService } from "jslib-common/services/vaultTimeout.service"; +import { CliPlatformUtilsService } from "jslib-node/cli/services/cliPlatformUtils.service"; +import { ConsoleLogService } from "jslib-node/cli/services/consoleLog.service"; +import { NodeApiService } from "jslib-node/services/nodeApi.service"; +import { NodeCryptoFunctionService } from "jslib-node/services/nodeCryptoFunction.service"; + +import { Program } from "./program"; +import { SendProgram } from "./send.program"; +import { I18nService } from "./services/i18n.service"; +import { LowdbStorageService } from "./services/lowdbStorage.service"; +import { NodeEnvSecureStorageService } from "./services/nodeEnvSecureStorage.service"; +import { VaultProgram } from "./vault.program"; + +// Polyfills +(global as any).DOMParser = new jsdom.JSDOM().window.DOMParser; + +// eslint-disable-next-line +const packageJson = require("../package.json"); + +export class Main { + messagingService: NoopMessagingService; + storageService: LowdbStorageService; + secureStorageService: NodeEnvSecureStorageService; + i18nService: I18nService; + platformUtilsService: CliPlatformUtilsService; + cryptoService: CryptoService; + tokenService: TokenService; + appIdService: AppIdService; + apiService: NodeApiService; + environmentService: EnvironmentService; + settingsService: SettingsService; + cipherService: CipherService; + folderService: FolderService; + collectionService: CollectionService; + vaultTimeoutService: VaultTimeoutService; + syncService: SyncService; + passwordGenerationService: PasswordGenerationService; + totpService: TotpService; + containerService: ContainerService; + auditService: AuditService; + importService: ImportService; + exportService: ExportService; + searchService: SearchService; + cryptoFunctionService: NodeCryptoFunctionService; + authService: AuthService; + policyService: PolicyService; + program: Program; + vaultProgram: VaultProgram; + sendProgram: SendProgram; + logService: ConsoleLogService; + sendService: SendService; + fileUploadService: FileUploadService; + keyConnectorService: KeyConnectorService; + userVerificationService: UserVerificationService; + stateService: StateService; + stateMigrationService: StateMigrationService; + organizationService: OrganizationService; + providerService: ProviderService; + twoFactorService: TwoFactorService; + + constructor() { + let p = null; + const relativeDataDir = path.join(path.dirname(process.execPath), "bw-data"); + if (fs.existsSync(relativeDataDir)) { + p = relativeDataDir; + } else if (process.env.BITWARDENCLI_APPDATA_DIR) { + p = path.resolve(process.env.BITWARDENCLI_APPDATA_DIR); + } else if (process.platform === "darwin") { + p = path.join(process.env.HOME, "Library/Application Support/Bitwarden CLI"); + } else if (process.platform === "win32") { + p = path.join(process.env.APPDATA, "Bitwarden CLI"); + } else if (process.env.XDG_CONFIG_HOME) { + p = path.join(process.env.XDG_CONFIG_HOME, "Bitwarden CLI"); + } else { + p = path.join(process.env.HOME, ".config/Bitwarden CLI"); + } + + this.i18nService = new I18nService("en", "./locales"); + this.platformUtilsService = new CliPlatformUtilsService(ClientType.Cli, packageJson); + this.logService = new ConsoleLogService( + this.platformUtilsService.isDev(), + (level) => process.env.BITWARDENCLI_DEBUG !== "true" && level <= LogLevelType.Info + ); + this.cryptoFunctionService = new NodeCryptoFunctionService(); + this.storageService = new LowdbStorageService(this.logService, null, p, false, true); + this.secureStorageService = new NodeEnvSecureStorageService( + this.storageService, + this.logService, + () => this.cryptoService + ); + + this.stateMigrationService = new StateMigrationService( + this.storageService, + this.secureStorageService, + new StateFactory(GlobalState, Account) + ); + + this.stateService = new StateService( + this.storageService, + this.secureStorageService, + this.logService, + this.stateMigrationService, + new StateFactory(GlobalState, Account) + ); + + this.cryptoService = new CryptoService( + this.cryptoFunctionService, + this.platformUtilsService, + this.logService, + this.stateService + ); + + this.appIdService = new AppIdService(this.storageService); + this.tokenService = new TokenService(this.stateService); + this.messagingService = new NoopMessagingService(); + this.environmentService = new EnvironmentService(this.stateService); + + const customUserAgent = + "Bitwarden_CLI/" + + this.platformUtilsService.getApplicationVersionSync() + + " (" + + this.platformUtilsService.getDeviceString().toUpperCase() + + ")"; + this.apiService = new NodeApiService( + this.tokenService, + this.platformUtilsService, + this.environmentService, + this.appIdService, + async (expired: boolean) => await this.logout(), + customUserAgent + ); + this.containerService = new ContainerService(this.cryptoService); + + this.settingsService = new SettingsService(this.stateService); + + this.fileUploadService = new FileUploadService(this.logService, this.apiService); + + this.cipherService = new CipherService( + this.cryptoService, + this.settingsService, + this.apiService, + this.fileUploadService, + this.i18nService, + null, + this.logService, + this.stateService + ); + + this.folderService = new FolderService( + this.cryptoService, + this.apiService, + this.i18nService, + this.cipherService, + this.stateService + ); + + this.collectionService = new CollectionService( + this.cryptoService, + this.i18nService, + this.stateService + ); + + this.searchService = new SearchService(this.cipherService, this.logService, this.i18nService); + + this.providerService = new ProviderService(this.stateService); + + this.organizationService = new OrganizationService(this.stateService); + + this.policyService = new PolicyService( + this.stateService, + this.organizationService, + this.apiService + ); + + this.sendService = new SendService( + this.cryptoService, + this.apiService, + this.fileUploadService, + this.i18nService, + this.cryptoFunctionService, + this.stateService + ); + + this.keyConnectorService = new KeyConnectorService( + this.stateService, + this.cryptoService, + this.apiService, + this.tokenService, + this.logService, + this.organizationService, + this.cryptoFunctionService, + async (expired: boolean) => await this.logout() + ); + + this.twoFactorService = new TwoFactorService(this.i18nService, this.platformUtilsService); + + this.authService = new AuthService( + this.cryptoService, + this.apiService, + this.tokenService, + this.appIdService, + this.platformUtilsService, + this.messagingService, + this.logService, + this.keyConnectorService, + this.environmentService, + this.stateService, + this.twoFactorService, + this.i18nService + ); + + const lockedCallback = async () => + await this.cryptoService.clearStoredKey(KeySuffixOptions.Auto); + + this.vaultTimeoutService = new VaultTimeoutService( + this.cipherService, + this.folderService, + this.collectionService, + this.cryptoService, + this.platformUtilsService, + this.messagingService, + this.searchService, + this.tokenService, + this.policyService, + this.keyConnectorService, + this.stateService, + this.authService, + lockedCallback, + null + ); + + this.syncService = new SyncService( + this.apiService, + this.settingsService, + this.folderService, + this.cipherService, + this.cryptoService, + this.collectionService, + this.messagingService, + this.policyService, + this.sendService, + this.logService, + this.keyConnectorService, + this.stateService, + this.organizationService, + this.providerService, + async (expired: boolean) => await this.logout() + ); + + this.passwordGenerationService = new PasswordGenerationService( + this.cryptoService, + this.policyService, + this.stateService + ); + + this.totpService = new TotpService( + this.cryptoFunctionService, + this.logService, + this.stateService + ); + + this.importService = new ImportService( + this.cipherService, + this.folderService, + this.apiService, + this.i18nService, + this.collectionService, + this.platformUtilsService, + this.cryptoService + ); + this.exportService = new ExportService( + this.folderService, + this.cipherService, + this.apiService, + this.cryptoService, + this.cryptoFunctionService + ); + + this.auditService = new AuditService(this.cryptoFunctionService, this.apiService); + this.program = new Program(this); + this.vaultProgram = new VaultProgram(this); + this.sendProgram = new SendProgram(this); + this.userVerificationService = new UserVerificationService( + this.cryptoService, + this.i18nService, + this.apiService + ); + } + + async run() { + await this.init(); + + await this.program.register(); + await this.vaultProgram.register(); + await this.sendProgram.register(); + + program.parse(process.argv); + + if (process.argv.slice(2).length === 0) { + program.outputHelp(); + } + } + + async logout() { + this.authService.logOut(() => { + /* Do nothing */ + }); + const userId = await this.stateService.getUserId(); + await Promise.all([ + this.syncService.setLastSync(new Date(0)), + this.cryptoService.clearKeys(), + this.settingsService.clear(userId), + this.cipherService.clear(userId), + this.folderService.clear(userId), + this.collectionService.clear(userId), + this.policyService.clear(userId), + this.passwordGenerationService.clear(), + ]); + await this.stateService.clean(); + process.env.BW_SESSION = null; + } + + private async init() { + await this.storageService.init(); + await this.stateService.init(); + this.containerService.attachToWindow(global); + await this.environmentService.setUrlsFromStorage(); + const locale = await this.stateService.getLocale(); + await this.i18nService.init(locale); + this.twoFactorService.init(); + + const installedVersion = await this.stateService.getInstalledVersion(); + const currentVersion = await this.platformUtilsService.getApplicationVersion(); + if (installedVersion == null || installedVersion !== currentVersion) { + await this.stateService.setInstalledVersion(currentVersion); + } + } +} + +const main = new Main(); +main.run(); diff --git a/apps/cli/src/commands/completion.command.ts b/apps/cli/src/commands/completion.command.ts new file mode 100644 index 0000000000..2deaef4903 --- /dev/null +++ b/apps/cli/src/commands/completion.command.ts @@ -0,0 +1,119 @@ +import * as program from "commander"; + +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +interface IOption { + long?: string; + short?: string; + description: string; +} + +interface ICommand { + commands?: ICommand[]; + options?: IOption[]; + _name: string; + _description: string; +} + +const validShells = ["zsh"]; + +export class CompletionCommand { + async run(options: program.OptionValues) { + const shell: typeof validShells[number] = options.shell; + + if (!shell) { + return Response.badRequest("`shell` option was not provided."); + } + + if (!validShells.includes(shell)) { + return Response.badRequest("Unsupported shell."); + } + + let content = ""; + + if (shell === "zsh") { + content = this.zshCompletion("bw", program as any as ICommand).render(); + } + + const res = new MessageResponse(content, null); + return Response.success(res); + } + + private zshCompletion(rootName: string, rootCommand: ICommand) { + return { + render: () => { + return [ + `#compdef _${rootName} ${rootName}`, + "", + this.renderCommandBlock(rootName, rootCommand), + ].join("\n"); + }, + }; + } + + private renderCommandBlock(name: string, command: ICommand): string { + const { commands = [], options = [] } = command; + const hasOptions = options.length > 0; + const hasCommands = commands.length > 0; + + const args = options + .map(({ long, short, description }) => { + const aliases = [short, long].filter(Boolean); + const opts = aliases.join(","); + const desc = `[${description.replace(`'`, `'"'"'`)}]`; + return aliases.length > 1 + ? `'(${aliases.join(" ")})'{${opts}}'${desc}'` + : `'${opts}${desc}'`; + }) + .concat( + `'(-h --help)'{-h,--help}'[output usage information]'`, + hasCommands ? '"1: :->cmnds"' : null, + '"*::arg:->args"' + ) + .filter(Boolean); + + const commandBlockFunctionParts = []; + + if (hasCommands) { + commandBlockFunctionParts.push("local -a commands"); + } + + if (hasOptions) { + commandBlockFunctionParts.push(`_arguments -C \\\n ${args.join(` \\\n `)}`); + } + + if (hasCommands) { + commandBlockFunctionParts.push( + `case $state in + cmnds) + commands=( + ${commands + .map(({ _name, _description }) => `"${_name}:${_description}"`) + .join("\n ")} + ) + _describe "command" commands + ;; + esac + + case "$words[1]" in + ${commands + .map(({ _name }) => [`${_name})`, `_${name}_${_name}`, ";;"].join("\n ")) + .join("\n ")} + esac` + ); + } + + const commandBlocParts = [ + `function _${name} {\n ${commandBlockFunctionParts.join("\n\n ")}\n}`, + ]; + + if (hasCommands) { + commandBlocParts.push( + commands.map((c) => this.renderCommandBlock(`${name}_${c._name}`, c)).join("\n\n") + ); + } + + return commandBlocParts.join("\n\n"); + } +} diff --git a/apps/cli/src/commands/config.command.ts b/apps/cli/src/commands/config.command.ts new file mode 100644 index 0000000000..89fc81296f --- /dev/null +++ b/apps/cli/src/commands/config.command.ts @@ -0,0 +1,53 @@ +import * as program from "commander"; + +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; +import { StringResponse } from "jslib-node/cli/models/response/stringResponse"; + +export class ConfigCommand { + constructor(private environmentService: EnvironmentService) {} + + async run(setting: string, value: string, options: program.OptionValues): Promise { + setting = setting.toLowerCase(); + switch (setting) { + case "server": + return await this.getOrSetServer(value, options); + default: + return Response.badRequest("Unknown setting."); + } + } + + private async getOrSetServer(url: string, options: program.OptionValues): Promise { + if ( + (url == null || url.trim() === "") && + !options.webVault && + !options.api && + !options.identity && + !options.icons && + !options.notifications && + !options.events + ) { + const stringRes = new StringResponse( + this.environmentService.hasBaseUrl() + ? this.environmentService.getUrls().base + : "https://bitwarden.com" + ); + return Response.success(stringRes); + } + + url = url === "null" || url === "bitwarden.com" || url === "https://bitwarden.com" ? null : url; + await this.environmentService.setUrls({ + base: url, + webVault: options.webVault || null, + api: options.api || null, + identity: options.identity || null, + icons: options.icons || null, + notifications: options.notifications || null, + events: options.events || null, + keyConnector: options.keyConnector || null, + }); + const res = new MessageResponse("Saved setting `config`.", null); + return Response.success(res); + } +} diff --git a/apps/cli/src/commands/confirm.command.ts b/apps/cli/src/commands/confirm.command.ts new file mode 100644 index 0000000000..68c203be5c --- /dev/null +++ b/apps/cli/src/commands/confirm.command.ts @@ -0,0 +1,62 @@ +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { Utils } from "jslib-common/misc/utils"; +import { OrganizationUserConfirmRequest } from "jslib-common/models/request/organizationUserConfirmRequest"; +import { Response } from "jslib-node/cli/models/response"; + +export class ConfirmCommand { + constructor(private apiService: ApiService, private cryptoService: CryptoService) {} + + async run(object: string, id: string, cmdOptions: Record): Promise { + if (id != null) { + id = id.toLowerCase(); + } + + const normalizedOptions = new Options(cmdOptions); + switch (object.toLowerCase()) { + case "org-member": + return await this.confirmOrganizationMember(id, normalizedOptions); + default: + return Response.badRequest("Unknown object."); + } + } + + private async confirmOrganizationMember(id: string, options: Options) { + if (options.organizationId == null || options.organizationId === "") { + return Response.badRequest("--organizationid required."); + } + if (!Utils.isGuid(id)) { + return Response.badRequest("`" + id + "` is not a GUID."); + } + if (!Utils.isGuid(options.organizationId)) { + return Response.badRequest("`" + options.organizationId + "` is not a GUID."); + } + try { + const orgKey = await this.cryptoService.getOrgKey(options.organizationId); + if (orgKey == null) { + throw new Error("No encryption key for this organization."); + } + const orgUser = await this.apiService.getOrganizationUser(options.organizationId, id); + if (orgUser == null) { + throw new Error("Member id does not exist for this organization."); + } + const publicKeyResponse = await this.apiService.getUserPublicKey(orgUser.userId); + const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey); + const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer); + const req = new OrganizationUserConfirmRequest(); + req.key = key.encryptedString; + await this.apiService.postOrganizationUserConfirm(options.organizationId, id, req); + return Response.success(); + } catch (e) { + return Response.error(e); + } + } +} + +class Options { + organizationId: string; + + constructor(passedOptions: Record) { + this.organizationId = passedOptions?.organizationid || passedOptions?.organizationId; + } +} diff --git a/apps/cli/src/commands/convertToKeyConnector.command.ts b/apps/cli/src/commands/convertToKeyConnector.command.ts new file mode 100644 index 0000000000..7774f79a69 --- /dev/null +++ b/apps/cli/src/commands/convertToKeyConnector.command.ts @@ -0,0 +1,84 @@ +import * as inquirer from "inquirer"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +export class ConvertToKeyConnectorCommand { + constructor( + private apiService: ApiService, + private keyConnectorService: KeyConnectorService, + private environmentService: EnvironmentService, + private syncService: SyncService, + private logout: () => Promise + ) {} + + async run(): Promise { + // If no interaction available, alert user to use web vault + const canInteract = process.env.BW_NOINTERACTION !== "true"; + if (!canInteract) { + await this.logout(); + return Response.error( + new MessageResponse( + "An organization you are a member of is using Key Connector. " + + "In order to access the vault, you must opt-in to Key Connector now via the web vault. You have been logged out.", + null + ) + ); + } + + const organization = await this.keyConnectorService.getManagingOrganization(); + + const answer: inquirer.Answers = await inquirer.createPromptModule({ output: process.stderr })({ + type: "list", + name: "convert", + message: + organization.name + + " is using a self-hosted key server. A master password is no longer required to log in for members of this organization. ", + choices: [ + { + name: "Remove master password and unlock", + value: "remove", + }, + { + name: "Leave organization and unlock", + value: "leave", + }, + { + name: "Log out", + value: "exit", + }, + ], + }); + + if (answer.convert === "remove") { + try { + await this.keyConnectorService.migrateUser(); + } catch (e) { + await this.logout(); + throw e; + } + + await this.keyConnectorService.removeConvertAccountRequired(); + await this.keyConnectorService.setUsesKeyConnector(true); + + // Update environment URL - required for api key login + const urls = this.environmentService.getUrls(); + urls.keyConnector = organization.keyConnectorUrl; + await this.environmentService.setUrls(urls); + + return Response.success(); + } else if (answer.convert === "leave") { + await this.apiService.postLeaveOrganization(organization.id); + await this.keyConnectorService.removeConvertAccountRequired(); + await this.syncService.fullSync(true); + return Response.success(); + } else { + await this.logout(); + return Response.error("You have been logged out."); + } + } +} diff --git a/apps/cli/src/commands/create.command.ts b/apps/cli/src/commands/create.command.ts new file mode 100644 index 0000000000..fa80861654 --- /dev/null +++ b/apps/cli/src/commands/create.command.ts @@ -0,0 +1,206 @@ +import * as fs from "fs"; +import * as path from "path"; + +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 { FolderService } from "jslib-common/abstractions/folder.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { Utils } from "jslib-common/misc/utils"; +import { CipherExport } from "jslib-common/models/export/cipherExport"; +import { CollectionExport } from "jslib-common/models/export/collectionExport"; +import { FolderExport } from "jslib-common/models/export/folderExport"; +import { CollectionRequest } from "jslib-common/models/request/collectionRequest"; +import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest"; +import { Response } from "jslib-node/cli/models/response"; + +import { OrganizationCollectionRequest } from "../models/request/organizationCollectionRequest"; +import { CipherResponse } from "../models/response/cipherResponse"; +import { FolderResponse } from "../models/response/folderResponse"; +import { OrganizationCollectionResponse } from "../models/response/organizationCollectionResponse"; +import { CliUtils } from "../utils"; + +export class CreateCommand { + constructor( + private cipherService: CipherService, + private folderService: FolderService, + private stateService: StateService, + private cryptoService: CryptoService, + private apiService: ApiService + ) {} + + async run( + object: string, + requestJson: string, + cmdOptions: Record, + additionalData: any = null + ): Promise { + let req: any = null; + if (object !== "attachment") { + if (process.env.BW_SERVE !== "true" && (requestJson == null || requestJson === "")) { + requestJson = await CliUtils.readStdin(); + } + + if (requestJson == null || requestJson === "") { + return Response.badRequest("`requestJson` was not provided."); + } + + if (typeof requestJson !== "string") { + req = requestJson; + } else { + try { + const reqJson = Buffer.from(requestJson, "base64").toString(); + req = JSON.parse(reqJson); + } catch (e) { + return Response.badRequest("Error parsing the encoded request data."); + } + } + } + + const normalizedOptions = new Options(cmdOptions); + switch (object.toLowerCase()) { + case "item": + return await this.createCipher(req); + case "attachment": + return await this.createAttachment(normalizedOptions, additionalData); + case "folder": + return await this.createFolder(req); + case "org-collection": + return await this.createOrganizationCollection(req, normalizedOptions); + default: + return Response.badRequest("Unknown object."); + } + } + + private async createCipher(req: CipherExport) { + const cipher = await this.cipherService.encrypt(CipherExport.toView(req)); + try { + await this.cipherService.saveWithServer(cipher); + const newCipher = await this.cipherService.get(cipher.id); + const decCipher = await newCipher.decrypt(); + const res = new CipherResponse(decCipher); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async createAttachment(options: Options, additionalData: any) { + if (options.itemId == null || options.itemId === "") { + return Response.badRequest("`itemid` option is required."); + } + let fileBuf: Buffer = null; + let fileName: string = null; + if (process.env.BW_SERVE === "true") { + fileBuf = additionalData.fileBuffer; + fileName = additionalData.fileName; + } else { + if (options.file == null || options.file === "") { + return Response.badRequest("`file` option is required."); + } + const filePath = path.resolve(options.file); + if (!fs.existsSync(options.file)) { + return Response.badRequest("Cannot find file at " + filePath); + } + fileBuf = fs.readFileSync(filePath); + fileName = path.basename(filePath); + } + + if (fileBuf == null) { + return Response.badRequest("File not provided."); + } + if (fileName == null || fileName.trim() === "") { + return Response.badRequest("File name not provided."); + } + + const itemId = options.itemId.toLowerCase(); + const cipher = await this.cipherService.get(itemId); + if (cipher == null) { + return Response.notFound(); + } + + if (cipher.organizationId == null && !(await this.stateService.getCanAccessPremium())) { + return Response.error("Premium status is required to use this feature."); + } + + const encKey = await this.cryptoService.getEncKey(); + if (encKey == null) { + return Response.error( + "You must update your encryption key before you can use this feature. " + + "See https://help.bitwarden.com/article/update-encryption-key/" + ); + } + + try { + await this.cipherService.saveAttachmentRawWithServer( + cipher, + fileName, + new Uint8Array(fileBuf).buffer + ); + const updatedCipher = await this.cipherService.get(cipher.id); + const decCipher = await updatedCipher.decrypt(); + return Response.success(new CipherResponse(decCipher)); + } catch (e) { + return Response.error(e); + } + } + + private async createFolder(req: FolderExport) { + const folder = await this.folderService.encrypt(FolderExport.toView(req)); + try { + await this.folderService.saveWithServer(folder); + const newFolder = await this.folderService.get(folder.id); + const decFolder = await newFolder.decrypt(); + const res = new FolderResponse(decFolder); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async createOrganizationCollection(req: OrganizationCollectionRequest, options: Options) { + if (options.organizationId == null || options.organizationId === "") { + return Response.badRequest("`organizationid` option is required."); + } + if (!Utils.isGuid(options.organizationId)) { + return Response.badRequest("`" + options.organizationId + "` is not a GUID."); + } + if (options.organizationId !== req.organizationId) { + return Response.badRequest("`organizationid` option does not match request object."); + } + try { + const orgKey = await this.cryptoService.getOrgKey(req.organizationId); + if (orgKey == null) { + throw new Error("No encryption key for this organization."); + } + + const groups = + req.groups == null + ? null + : req.groups.map((g) => new SelectionReadOnlyRequest(g.id, g.readOnly, g.hidePasswords)); + const request = new CollectionRequest(); + request.name = (await this.cryptoService.encrypt(req.name, orgKey)).encryptedString; + request.externalId = req.externalId; + request.groups = groups; + const response = await this.apiService.postCollection(req.organizationId, request); + const view = CollectionExport.toView(req); + view.id = response.id; + const res = new OrganizationCollectionResponse(view, groups); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } +} + +class Options { + itemId: string; + organizationId: string; + file: string; + + constructor(passedOptions: Record) { + this.organizationId = passedOptions?.organizationid || passedOptions?.organizationId; + this.itemId = passedOptions?.itemid || passedOptions?.itemId; + this.file = passedOptions?.file; + } +} diff --git a/apps/cli/src/commands/delete.command.ts b/apps/cli/src/commands/delete.command.ts new file mode 100644 index 0000000000..7fee0d485e --- /dev/null +++ b/apps/cli/src/commands/delete.command.ts @@ -0,0 +1,131 @@ +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { Utils } from "jslib-common/misc/utils"; +import { Response } from "jslib-node/cli/models/response"; + +import { CliUtils } from "src/utils"; + +export class DeleteCommand { + constructor( + private cipherService: CipherService, + private folderService: FolderService, + private stateService: StateService, + private apiService: ApiService + ) {} + + async run(object: string, id: string, cmdOptions: Record): Promise { + if (id != null) { + id = id.toLowerCase(); + } + + const normalizedOptions = new Options(cmdOptions); + switch (object.toLowerCase()) { + case "item": + return await this.deleteCipher(id, normalizedOptions); + case "attachment": + return await this.deleteAttachment(id, normalizedOptions); + case "folder": + return await this.deleteFolder(id); + case "org-collection": + return await this.deleteOrganizationCollection(id, normalizedOptions); + default: + return Response.badRequest("Unknown object."); + } + } + + private async deleteCipher(id: string, options: Options) { + const cipher = await this.cipherService.get(id); + if (cipher == null) { + return Response.notFound(); + } + + try { + if (options.permanent) { + await this.cipherService.deleteWithServer(id); + } else { + await this.cipherService.softDeleteWithServer(id); + } + return Response.success(); + } catch (e) { + return Response.error(e); + } + } + + private async deleteAttachment(id: string, options: Options) { + if (options.itemId == null || options.itemId === "") { + return Response.badRequest("`itemid` option is required."); + } + + const itemId = options.itemId.toLowerCase(); + const cipher = await this.cipherService.get(itemId); + if (cipher == null) { + return Response.notFound(); + } + + if (cipher.attachments == null || cipher.attachments.length === 0) { + return Response.error("No attachments available for this item."); + } + + const attachments = cipher.attachments.filter((a) => a.id.toLowerCase() === id); + if (attachments.length === 0) { + return Response.error("Attachment `" + id + "` was not found."); + } + + if (cipher.organizationId == null && !(await this.stateService.getCanAccessPremium())) { + return Response.error("Premium status is required to use this feature."); + } + + try { + await this.cipherService.deleteAttachmentWithServer(cipher.id, attachments[0].id); + return Response.success(); + } catch (e) { + return Response.error(e); + } + } + + private async deleteFolder(id: string) { + const folder = await this.folderService.get(id); + if (folder == null) { + return Response.notFound(); + } + + try { + await this.folderService.deleteWithServer(id); + return Response.success(); + } catch (e) { + return Response.error(e); + } + } + + private async deleteOrganizationCollection(id: string, options: Options) { + if (options.organizationId == null || options.organizationId === "") { + return Response.badRequest("`organizationid` options is required."); + } + if (!Utils.isGuid(id)) { + return Response.badRequest("`" + id + "` is not a GUID."); + } + if (!Utils.isGuid(options.organizationId)) { + return Response.badRequest("`" + options.organizationId + "` is not a GUID."); + } + try { + await this.apiService.deleteCollection(options.organizationId, id); + return Response.success(); + } catch (e) { + return Response.error(e); + } + } +} + +class Options { + itemId: string; + organizationId: string; + permanent: boolean; + + constructor(passedOptions: Record) { + this.organizationId = passedOptions?.organizationid || passedOptions?.organizationId; + this.itemId = passedOptions?.itemid || passedOptions?.itemId; + this.permanent = CliUtils.convertBooleanOption(passedOptions?.permanent); + } +} diff --git a/apps/cli/src/commands/download.command.ts b/apps/cli/src/commands/download.command.ts new file mode 100644 index 0000000000..bf3773a16d --- /dev/null +++ b/apps/cli/src/commands/download.command.ts @@ -0,0 +1,43 @@ +import * as fet from "node-fetch"; + +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { Response } from "jslib-node/cli/models/response"; +import { FileResponse } from "jslib-node/cli/models/response/fileResponse"; + +import { CliUtils } from "../utils"; + +export abstract class DownloadCommand { + constructor(protected cryptoService: CryptoService) {} + + protected async saveAttachmentToFile( + url: string, + key: SymmetricCryptoKey, + fileName: string, + output?: string + ) { + const response = await fet.default(new fet.Request(url, { headers: { cache: "no-cache" } })); + if (response.status !== 200) { + return Response.error( + "A " + response.status + " error occurred while downloading the attachment." + ); + } + + try { + const buf = await response.arrayBuffer(); + const decBuf = await this.cryptoService.decryptFromBytes(buf, key); + if (process.env.BW_SERVE === "true") { + const res = new FileResponse(Buffer.from(decBuf), fileName); + return Response.success(res); + } else { + return await CliUtils.saveResultToFile(Buffer.from(decBuf), output, fileName); + } + } catch (e) { + if (typeof e === "string") { + return Response.error(e); + } else { + return Response.error("An error occurred while saving the attachment."); + } + } + } +} diff --git a/apps/cli/src/commands/edit.command.ts b/apps/cli/src/commands/edit.command.ts new file mode 100644 index 0000000000..17b1c4b58b --- /dev/null +++ b/apps/cli/src/commands/edit.command.ts @@ -0,0 +1,186 @@ +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 { FolderService } from "jslib-common/abstractions/folder.service"; +import { Utils } from "jslib-common/misc/utils"; +import { CipherExport } from "jslib-common/models/export/cipherExport"; +import { CollectionExport } from "jslib-common/models/export/collectionExport"; +import { FolderExport } from "jslib-common/models/export/folderExport"; +import { CollectionRequest } from "jslib-common/models/request/collectionRequest"; +import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest"; +import { Response } from "jslib-node/cli/models/response"; + +import { OrganizationCollectionRequest } from "../models/request/organizationCollectionRequest"; +import { CipherResponse } from "../models/response/cipherResponse"; +import { FolderResponse } from "../models/response/folderResponse"; +import { OrganizationCollectionResponse } from "../models/response/organizationCollectionResponse"; +import { CliUtils } from "../utils"; + +export class EditCommand { + constructor( + private cipherService: CipherService, + private folderService: FolderService, + private cryptoService: CryptoService, + private apiService: ApiService + ) {} + + async run( + object: string, + id: string, + requestJson: any, + cmdOptions: Record + ): Promise { + if (process.env.BW_SERVE !== "true" && (requestJson == null || requestJson === "")) { + requestJson = await CliUtils.readStdin(); + } + + if (requestJson == null || requestJson === "") { + return Response.badRequest("`requestJson` was not provided."); + } + + let req: any = null; + if (typeof requestJson !== "string") { + req = requestJson; + } else { + try { + const reqJson = Buffer.from(requestJson, "base64").toString(); + req = JSON.parse(reqJson); + } catch (e) { + return Response.badRequest("Error parsing the encoded request data."); + } + } + + if (id != null) { + id = id.toLowerCase(); + } + + const normalizedOptions = new Options(cmdOptions); + switch (object.toLowerCase()) { + case "item": + return await this.editCipher(id, req); + case "item-collections": + return await this.editCipherCollections(id, req); + case "folder": + return await this.editFolder(id, req); + case "org-collection": + return await this.editOrganizationCollection(id, req, normalizedOptions); + default: + return Response.badRequest("Unknown object."); + } + } + + private async editCipher(id: string, req: CipherExport) { + const cipher = await this.cipherService.get(id); + if (cipher == null) { + return Response.notFound(); + } + + let cipherView = await cipher.decrypt(); + if (cipherView.isDeleted) { + return Response.badRequest("You may not edit a deleted item. Use the restore command first."); + } + cipherView = CipherExport.toView(req, cipherView); + const encCipher = await this.cipherService.encrypt(cipherView); + try { + await this.cipherService.saveWithServer(encCipher); + const updatedCipher = await this.cipherService.get(cipher.id); + const decCipher = await updatedCipher.decrypt(); + const res = new CipherResponse(decCipher); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async editCipherCollections(id: string, req: string[]) { + const cipher = await this.cipherService.get(id); + if (cipher == null) { + return Response.notFound(); + } + if (cipher.organizationId == null) { + return Response.badRequest( + "Item does not belong to an organization. Consider moving it first." + ); + } + + cipher.collectionIds = req; + try { + await this.cipherService.saveCollectionsWithServer(cipher); + const updatedCipher = await this.cipherService.get(cipher.id); + const decCipher = await updatedCipher.decrypt(); + const res = new CipherResponse(decCipher); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async editFolder(id: string, req: FolderExport) { + const folder = await this.folderService.get(id); + if (folder == null) { + return Response.notFound(); + } + + let folderView = await folder.decrypt(); + folderView = FolderExport.toView(req, folderView); + const encFolder = await this.folderService.encrypt(folderView); + try { + await this.folderService.saveWithServer(encFolder); + const updatedFolder = await this.folderService.get(folder.id); + const decFolder = await updatedFolder.decrypt(); + const res = new FolderResponse(decFolder); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async editOrganizationCollection( + id: string, + req: OrganizationCollectionRequest, + options: Options + ) { + if (options.organizationId == null || options.organizationId === "") { + return Response.badRequest("`organizationid` option is required."); + } + if (!Utils.isGuid(id)) { + return Response.badRequest("`" + id + "` is not a GUID."); + } + if (!Utils.isGuid(options.organizationId)) { + return Response.badRequest("`" + options.organizationId + "` is not a GUID."); + } + if (options.organizationId !== req.organizationId) { + return Response.badRequest("`organizationid` option does not match request object."); + } + try { + const orgKey = await this.cryptoService.getOrgKey(req.organizationId); + if (orgKey == null) { + throw new Error("No encryption key for this organization."); + } + + const groups = + req.groups == null + ? null + : req.groups.map((g) => new SelectionReadOnlyRequest(g.id, g.readOnly, g.hidePasswords)); + const request = new CollectionRequest(); + request.name = (await this.cryptoService.encrypt(req.name, orgKey)).encryptedString; + request.externalId = req.externalId; + request.groups = groups; + const response = await this.apiService.putCollection(req.organizationId, id, request); + const view = CollectionExport.toView(req); + view.id = response.id; + const res = new OrganizationCollectionResponse(view, groups); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } +} + +class Options { + organizationId: string; + + constructor(passedOptions: Record) { + this.organizationId = passedOptions?.organizationid || passedOptions?.organizationId; + } +} diff --git a/apps/cli/src/commands/encode.command.ts b/apps/cli/src/commands/encode.command.ts new file mode 100644 index 0000000000..c7de9a11b3 --- /dev/null +++ b/apps/cli/src/commands/encode.command.ts @@ -0,0 +1,16 @@ +import { Response } from "jslib-node/cli/models/response"; +import { StringResponse } from "jslib-node/cli/models/response/stringResponse"; + +import { CliUtils } from "../utils"; + +export class EncodeCommand { + async run(): Promise { + if (process.stdin.isTTY) { + return Response.badRequest("No stdin was piped in."); + } + const input = await CliUtils.readStdin(); + const b64 = Buffer.from(input, "utf8").toString("base64"); + const res = new StringResponse(b64); + return Response.success(res); + } +} diff --git a/apps/cli/src/commands/export.command.ts b/apps/cli/src/commands/export.command.ts new file mode 100644 index 0000000000..e8ed33423a --- /dev/null +++ b/apps/cli/src/commands/export.command.ts @@ -0,0 +1,97 @@ +import * as program from "commander"; +import * as inquirer from "inquirer"; + +import { ExportFormat, ExportService } from "jslib-common/abstractions/export.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { Utils } from "jslib-common/misc/utils"; +import { Response } from "jslib-node/cli/models/response"; + +import { CliUtils } from "../utils"; + +export class ExportCommand { + constructor(private exportService: ExportService, private policyService: PolicyService) {} + + async run(options: program.OptionValues): Promise { + if ( + options.organizationid == null && + (await this.policyService.policyAppliesToUser(PolicyType.DisablePersonalVaultExport)) + ) { + return Response.badRequest( + "One or more organization policies prevents you from exporting your personal vault." + ); + } + + const format = options.format ?? "csv"; + + if (options.organizationid != null && !Utils.isGuid(options.organizationid)) { + return Response.error("`" + options.organizationid + "` is not a GUID."); + } + + let exportContent: string = null; + try { + exportContent = + format === "encrypted_json" + ? await this.getProtectedExport(options.password, options.organizationid) + : await this.getUnprotectedExport(format, options.organizationid); + } catch (e) { + return Response.error(e); + } + return await this.saveFile(exportContent, options, format); + } + + private async getProtectedExport(passwordOption: string | boolean, organizationId?: string) { + const password = await this.promptPassword(passwordOption); + return password == null + ? await this.exportService.getExport("encrypted_json", organizationId) + : await this.exportService.getPasswordProtectedExport(password, organizationId); + } + + private async getUnprotectedExport(format: ExportFormat, organizationId?: string) { + return this.exportService.getExport(format, organizationId); + } + + private async saveFile( + exportContent: string, + options: program.OptionValues, + format: ExportFormat + ): Promise { + try { + const fileName = this.getFileName(format, options.organizationid != null ? "org" : null); + return await CliUtils.saveResultToFile(exportContent, options.output, fileName); + } catch (e) { + return Response.error(e.toString()); + } + } + + private getFileName(format: ExportFormat, prefix?: string) { + if (format === "encrypted_json") { + if (prefix == null) { + prefix = "encrypted"; + } else { + prefix = "encrypted_" + prefix; + } + format = "json"; + } + return this.exportService.getFileName(prefix, format); + } + + private async promptPassword(password: string | boolean) { + // boolean => flag set with no value, we need to prompt for password + // string => flag set with value, use this value for password + // undefined/null/false => account protect, not password, no password needed + if (typeof password === "string") { + return password; + } else if (password) { + const answer: inquirer.Answers = await inquirer.createPromptModule({ + output: process.stderr, + })({ + type: "password", + name: "password", + message: "Export file password:", + }); + return answer.password as string; + } + return null; + } +} diff --git a/apps/cli/src/commands/generate.command.ts b/apps/cli/src/commands/generate.command.ts new file mode 100644 index 0000000000..d6d0c89819 --- /dev/null +++ b/apps/cli/src/commands/generate.command.ts @@ -0,0 +1,80 @@ +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { Response } from "jslib-node/cli/models/response"; +import { StringResponse } from "jslib-node/cli/models/response/stringResponse"; + +import { CliUtils } from "../utils"; + +export class GenerateCommand { + constructor( + private passwordGenerationService: PasswordGenerationService, + private stateService: StateService + ) {} + + async run(cmdOptions: Record): Promise { + const normalizedOptions = new Options(cmdOptions); + const options = { + uppercase: normalizedOptions.uppercase, + lowercase: normalizedOptions.lowercase, + number: normalizedOptions.number, + special: normalizedOptions.special, + length: normalizedOptions.length, + type: normalizedOptions.type, + wordSeparator: normalizedOptions.separator, + numWords: normalizedOptions.words, + capitalize: normalizedOptions.capitalize, + includeNumber: normalizedOptions.includeNumber, + }; + + const enforcedOptions = (await this.stateService.getIsAuthenticated()) + ? (await this.passwordGenerationService.enforcePasswordGeneratorPoliciesOnOptions(options))[0] + : options; + + const password = await this.passwordGenerationService.generatePassword(enforcedOptions); + const res = new StringResponse(password); + return Response.success(res); + } +} + +class Options { + uppercase: boolean; + lowercase: boolean; + number: boolean; + special: boolean; + length: number; + type: "passphrase" | "password"; + separator: string; + words: number; + capitalize: boolean; + includeNumber: boolean; + + constructor(passedOptions: Record) { + this.uppercase = CliUtils.convertBooleanOption(passedOptions?.uppercase); + this.lowercase = CliUtils.convertBooleanOption(passedOptions?.lowercase); + this.number = CliUtils.convertBooleanOption(passedOptions?.number); + this.special = CliUtils.convertBooleanOption(passedOptions?.special); + this.capitalize = CliUtils.convertBooleanOption(passedOptions?.capitalize); + this.includeNumber = CliUtils.convertBooleanOption(passedOptions?.includeNumber); + this.length = passedOptions?.length != null ? parseInt(passedOptions?.length, null) : 14; + this.type = passedOptions?.passphrase ? "passphrase" : "password"; + this.separator = passedOptions?.separator == null ? "-" : passedOptions.separator + ""; + this.words = passedOptions?.words != null ? parseInt(passedOptions.words, null) : 3; + + if (!this.uppercase && !this.lowercase && !this.special && !this.number) { + this.lowercase = true; + this.uppercase = true; + this.number = true; + } + if (this.length < 5) { + this.length = 5; + } + if (this.words < 3) { + this.words = 3; + } + if (this.separator === "space") { + this.separator = " "; + } else if (this.separator != null && this.separator.length > 1) { + this.separator = this.separator[0]; + } + } +} diff --git a/apps/cli/src/commands/get.command.ts b/apps/cli/src/commands/get.command.ts new file mode 100644 index 0000000000..27ad8a99ea --- /dev/null +++ b/apps/cli/src/commands/get.command.ts @@ -0,0 +1,540 @@ +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuditService } from "jslib-common/abstractions/audit.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 { FolderService } from "jslib-common/abstractions/folder.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { SendType } from "jslib-common/enums/sendType"; +import { Utils } from "jslib-common/misc/utils"; +import { EncString } from "jslib-common/models/domain/encString"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CardExport } from "jslib-common/models/export/cardExport"; +import { CipherExport } from "jslib-common/models/export/cipherExport"; +import { CollectionExport } from "jslib-common/models/export/collectionExport"; +import { FieldExport } from "jslib-common/models/export/fieldExport"; +import { FolderExport } from "jslib-common/models/export/folderExport"; +import { IdentityExport } from "jslib-common/models/export/identityExport"; +import { LoginExport } from "jslib-common/models/export/loginExport"; +import { LoginUriExport } from "jslib-common/models/export/loginUriExport"; +import { SecureNoteExport } from "jslib-common/models/export/secureNoteExport"; +import { ErrorResponse } from "jslib-common/models/response/errorResponse"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { CollectionView } from "jslib-common/models/view/collectionView"; +import { FolderView } from "jslib-common/models/view/folderView"; +import { Response } from "jslib-node/cli/models/response"; +import { StringResponse } from "jslib-node/cli/models/response/stringResponse"; + +import { OrganizationCollectionRequest } from "../models/request/organizationCollectionRequest"; +import { CipherResponse } from "../models/response/cipherResponse"; +import { CollectionResponse } from "../models/response/collectionResponse"; +import { FolderResponse } from "../models/response/folderResponse"; +import { OrganizationCollectionResponse } from "../models/response/organizationCollectionResponse"; +import { OrganizationResponse } from "../models/response/organizationResponse"; +import { SendResponse } from "../models/response/sendResponse"; +import { TemplateResponse } from "../models/response/templateResponse"; +import { SelectionReadOnly } from "../models/selectionReadOnly"; +import { CliUtils } from "../utils"; + +import { DownloadCommand } from "./download.command"; + +export class GetCommand extends DownloadCommand { + constructor( + private cipherService: CipherService, + private folderService: FolderService, + private collectionService: CollectionService, + private totpService: TotpService, + private auditService: AuditService, + cryptoService: CryptoService, + private stateService: StateService, + private searchService: SearchService, + private apiService: ApiService, + private organizationService: OrganizationService + ) { + super(cryptoService); + } + + async run(object: string, id: string, cmdOptions: Record): Promise { + if (id != null) { + id = id.toLowerCase(); + } + + const normalizedOptions = new Options(cmdOptions); + switch (object.toLowerCase()) { + case "item": + return await this.getCipher(id); + case "username": + return await this.getUsername(id); + case "password": + return await this.getPassword(id); + case "uri": + return await this.getUri(id); + case "totp": + return await this.getTotp(id); + case "notes": + return await this.getNotes(id); + case "exposed": + return await this.getExposed(id); + case "attachment": + return await this.getAttachment(id, normalizedOptions); + case "folder": + return await this.getFolder(id); + case "collection": + return await this.getCollection(id); + case "org-collection": + return await this.getOrganizationCollection(id, normalizedOptions); + case "organization": + return await this.getOrganization(id); + case "template": + return await this.getTemplate(id); + case "fingerprint": + return await this.getFingerprint(id); + default: + return Response.badRequest("Unknown object."); + } + } + + private async getCipherView(id: string): Promise { + let decCipher: CipherView = null; + if (Utils.isGuid(id)) { + const cipher = await this.cipherService.get(id); + if (cipher != null) { + decCipher = await cipher.decrypt(); + } + } else if (id.trim() !== "") { + let ciphers = await this.cipherService.getAllDecrypted(); + ciphers = this.searchService.searchCiphersBasic(ciphers, id); + if (ciphers.length > 1) { + return ciphers; + } + if (ciphers.length > 0) { + decCipher = ciphers[0]; + } + } + + return decCipher; + } + + private async getCipher(id: string, filter?: (c: CipherView) => boolean) { + let decCipher = await this.getCipherView(id); + if (decCipher == null) { + return Response.notFound(); + } + if (Array.isArray(decCipher)) { + if (filter != null) { + decCipher = decCipher.filter(filter); + if (decCipher.length === 1) { + decCipher = decCipher[0]; + } + } + if (Array.isArray(decCipher)) { + return Response.multipleResults(decCipher.map((c) => c.id)); + } + } + const res = new CipherResponse(decCipher); + return Response.success(res); + } + + private async getUsername(id: string) { + const cipherResponse = await this.getCipher( + id, + (c) => c.type === CipherType.Login && !Utils.isNullOrWhitespace(c.login.username) + ); + if (!cipherResponse.success) { + return cipherResponse; + } + + const cipher = cipherResponse.data as CipherResponse; + if (cipher.type !== CipherType.Login) { + return Response.badRequest("Not a login."); + } + + if (Utils.isNullOrWhitespace(cipher.login.username)) { + return Response.error("No username available for this login."); + } + + const res = new StringResponse(cipher.login.username); + return Response.success(res); + } + + private async getPassword(id: string) { + const cipherResponse = await this.getCipher( + id, + (c) => c.type === CipherType.Login && !Utils.isNullOrWhitespace(c.login.password) + ); + if (!cipherResponse.success) { + return cipherResponse; + } + + const cipher = cipherResponse.data as CipherResponse; + if (cipher.type !== CipherType.Login) { + return Response.badRequest("Not a login."); + } + + if (Utils.isNullOrWhitespace(cipher.login.password)) { + return Response.error("No password available for this login."); + } + + const res = new StringResponse(cipher.login.password); + return Response.success(res); + } + + private async getUri(id: string) { + const cipherResponse = await this.getCipher( + id, + (c) => + c.type === CipherType.Login && + c.login.uris != null && + c.login.uris.length > 0 && + c.login.uris[0].uri !== "" + ); + if (!cipherResponse.success) { + return cipherResponse; + } + + const cipher = cipherResponse.data as CipherResponse; + if (cipher.type !== CipherType.Login) { + return Response.badRequest("Not a login."); + } + + if ( + cipher.login.uris == null || + cipher.login.uris.length === 0 || + cipher.login.uris[0].uri === "" + ) { + return Response.error("No uri available for this login."); + } + + const res = new StringResponse(cipher.login.uris[0].uri); + return Response.success(res); + } + + private async getTotp(id: string) { + const cipherResponse = await this.getCipher( + id, + (c) => c.type === CipherType.Login && !Utils.isNullOrWhitespace(c.login.totp) + ); + if (!cipherResponse.success) { + return cipherResponse; + } + + const cipher = cipherResponse.data as CipherResponse; + if (cipher.type !== CipherType.Login) { + return Response.badRequest("Not a login."); + } + + if (Utils.isNullOrWhitespace(cipher.login.totp)) { + return Response.error("No TOTP available for this login."); + } + + const totp = await this.totpService.getCode(cipher.login.totp); + if (totp == null) { + return Response.error("Couldn't generate TOTP code."); + } + + const canAccessPremium = await this.stateService.getCanAccessPremium(); + if (!canAccessPremium) { + const originalCipher = await this.cipherService.get(cipher.id); + if ( + originalCipher == null || + originalCipher.organizationId == null || + !originalCipher.organizationUseTotp + ) { + return Response.error("Premium status is required to use this feature."); + } + } + + const res = new StringResponse(totp); + return Response.success(res); + } + + private async getNotes(id: string) { + const cipherResponse = await this.getCipher(id, (c) => !Utils.isNullOrWhitespace(c.notes)); + if (!cipherResponse.success) { + return cipherResponse; + } + + const cipher = cipherResponse.data as CipherResponse; + if (Utils.isNullOrWhitespace(cipher.notes)) { + return Response.error("No notes available for this item."); + } + + const res = new StringResponse(cipher.notes); + return Response.success(res); + } + + private async getExposed(id: string) { + const passwordResponse = await this.getPassword(id); + if (!passwordResponse.success) { + return passwordResponse; + } + + const exposedNumber = await this.auditService.passwordLeaked( + (passwordResponse.data as StringResponse).data + ); + const res = new StringResponse(exposedNumber.toString()); + return Response.success(res); + } + + private async getAttachment(id: string, options: Options) { + if (options.itemId == null || options.itemId === "") { + return Response.badRequest("--itemid required."); + } + + const itemId = options.itemId.toLowerCase(); + const cipherResponse = await this.getCipher(itemId); + if (!cipherResponse.success) { + return cipherResponse; + } + + const cipher = await this.getCipherView(itemId); + if ( + cipher == null || + Array.isArray(cipher) || + cipher.attachments == null || + cipher.attachments.length === 0 + ) { + return Response.error("No attachments available for this item."); + } + + let attachments = cipher.attachments.filter( + (a) => + a.id.toLowerCase() === id || + (a.fileName != null && a.fileName.toLowerCase().indexOf(id) > -1) + ); + if (attachments.length === 0) { + return Response.error("Attachment `" + id + "` was not found."); + } + + const exactMatches = attachments.filter((a) => a.fileName.toLowerCase() === id); + if (exactMatches.length === 1) { + attachments = exactMatches; + } + + if (attachments.length > 1) { + return Response.multipleResults(attachments.map((a) => a.id)); + } + + if (!(await this.stateService.getCanAccessPremium())) { + const originalCipher = await this.cipherService.get(cipher.id); + if (originalCipher == null || originalCipher.organizationId == null) { + return Response.error("Premium status is required to use this feature."); + } + } + + let url: string; + try { + const attachmentDownloadResponse = await this.apiService.getAttachmentData( + cipher.id, + attachments[0].id + ); + url = attachmentDownloadResponse.url; + } catch (e) { + if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) { + url = attachments[0].url; + } else if (e instanceof ErrorResponse) { + throw new Error((e as ErrorResponse).getSingleMessage()); + } else { + throw e; + } + } + + const key = + attachments[0].key != null + ? attachments[0].key + : await this.cryptoService.getOrgKey(cipher.organizationId); + return await this.saveAttachmentToFile(url, key, attachments[0].fileName, options.output); + } + + private async getFolder(id: string) { + let decFolder: FolderView = null; + if (Utils.isGuid(id)) { + const folder = await this.folderService.get(id); + if (folder != null) { + decFolder = await folder.decrypt(); + } + } else if (id.trim() !== "") { + let folders = await this.folderService.getAllDecrypted(); + folders = CliUtils.searchFolders(folders, id); + if (folders.length > 1) { + return Response.multipleResults(folders.map((f) => f.id)); + } + if (folders.length > 0) { + decFolder = folders[0]; + } + } + + if (decFolder == null) { + return Response.notFound(); + } + const res = new FolderResponse(decFolder); + return Response.success(res); + } + + private async getCollection(id: string) { + let decCollection: CollectionView = null; + if (Utils.isGuid(id)) { + const collection = await this.collectionService.get(id); + if (collection != null) { + decCollection = await collection.decrypt(); + } + } else if (id.trim() !== "") { + let collections = await this.collectionService.getAllDecrypted(); + collections = CliUtils.searchCollections(collections, id); + if (collections.length > 1) { + return Response.multipleResults(collections.map((c) => c.id)); + } + if (collections.length > 0) { + decCollection = collections[0]; + } + } + + if (decCollection == null) { + return Response.notFound(); + } + const res = new CollectionResponse(decCollection); + return Response.success(res); + } + + private async getOrganizationCollection(id: string, options: Options) { + if (options.organizationId == null || options.organizationId === "") { + return Response.badRequest("`organizationid` option is required."); + } + if (!Utils.isGuid(id)) { + return Response.badRequest("`" + id + "` is not a GUID."); + } + if (!Utils.isGuid(options.organizationId)) { + return Response.badRequest("`" + options.organizationId + "` is not a GUID."); + } + try { + const orgKey = await this.cryptoService.getOrgKey(options.organizationId); + if (orgKey == null) { + throw new Error("No encryption key for this organization."); + } + + const response = await this.apiService.getCollectionDetails(options.organizationId, id); + const decCollection = new CollectionView(response); + decCollection.name = await this.cryptoService.decryptToUtf8( + new EncString(response.name), + orgKey + ); + const groups = + response.groups == null + ? null + : response.groups.map((g) => new SelectionReadOnly(g.id, g.readOnly, g.hidePasswords)); + const res = new OrganizationCollectionResponse(decCollection, groups); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async getOrganization(id: string) { + let org: Organization = null; + if (Utils.isGuid(id)) { + org = await this.organizationService.get(id); + } else if (id.trim() !== "") { + let orgs = await this.organizationService.getAll(); + orgs = CliUtils.searchOrganizations(orgs, id); + if (orgs.length > 1) { + return Response.multipleResults(orgs.map((c) => c.id)); + } + if (orgs.length > 0) { + org = orgs[0]; + } + } + + if (org == null) { + return Response.notFound(); + } + const res = new OrganizationResponse(org); + return Response.success(res); + } + + private async getTemplate(id: string) { + let template: any = null; + switch (id.toLowerCase()) { + case "item": + template = CipherExport.template(); + break; + case "item.field": + template = FieldExport.template(); + break; + case "item.login": + template = LoginExport.template(); + break; + case "item.login.uri": + template = LoginUriExport.template(); + break; + case "item.card": + template = CardExport.template(); + break; + case "item.identity": + template = IdentityExport.template(); + break; + case "item.securenote": + template = SecureNoteExport.template(); + break; + case "folder": + template = FolderExport.template(); + break; + case "collection": + template = CollectionExport.template(); + break; + case "item-collections": + template = ["collection-id1", "collection-id2"]; + break; + case "org-collection": + template = OrganizationCollectionRequest.template(); + break; + case "send.text": + template = SendResponse.template(SendType.Text); + break; + case "send.file": + template = SendResponse.template(SendType.File); + break; + default: + return Response.badRequest("Unknown template object."); + } + + const res = new TemplateResponse(template); + return Response.success(res); + } + + private async getFingerprint(id: string) { + let fingerprint: string[] = null; + if (id === "me") { + fingerprint = await this.cryptoService.getFingerprint(await this.stateService.getUserId()); + } else if (Utils.isGuid(id)) { + try { + const response = await this.apiService.getUserPublicKey(id); + const pubKey = Utils.fromB64ToArray(response.publicKey); + fingerprint = await this.cryptoService.getFingerprint(id, pubKey.buffer); + } catch { + // eslint-disable-next-line + } + } + + if (fingerprint == null) { + return Response.notFound(); + } + const res = new StringResponse(fingerprint.join("-")); + return Response.success(res); + } +} + +class Options { + itemId: string; + organizationId: string; + output: string; + + constructor(passedOptions: Record) { + this.organizationId = passedOptions?.organizationid || passedOptions?.organizationId; + this.itemId = passedOptions?.itemid || passedOptions?.itemId; + this.output = passedOptions?.output; + } +} diff --git a/apps/cli/src/commands/import.command.ts b/apps/cli/src/commands/import.command.ts new file mode 100644 index 0000000000..23f5ddaa1d --- /dev/null +++ b/apps/cli/src/commands/import.command.ts @@ -0,0 +1,127 @@ +import * as program from "commander"; +import * as inquirer from "inquirer"; + +import { ImportService } from "jslib-common/abstractions/import.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { ImportType } from "jslib-common/enums/importOptions"; +import { Importer } from "jslib-common/importers/importer"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +import { CliUtils } from "../utils"; + +export class ImportCommand { + constructor( + private importService: ImportService, + private organizationService: OrganizationService + ) {} + + async run( + format: ImportType, + filepath: string, + options: program.OptionValues + ): Promise { + const organizationId = options.organizationid; + if (organizationId != null) { + const organization = await this.organizationService.get(organizationId); + + if (organization == null) { + return Response.badRequest( + `You do not belong to an organization with the ID of ${organizationId}. Check the organization ID and sync your vault.` + ); + } + + if (!organization.canAccessImportExport) { + return Response.badRequest( + "You are not authorized to import into the provided organization." + ); + } + } + + if (options.formats || false) { + return await this.list(); + } else { + return await this.import(format, filepath, organizationId); + } + } + + private async import(format: ImportType, filepath: string, organizationId: string) { + if (format == null) { + return Response.badRequest("`format` was not provided."); + } + if (filepath == null || filepath === "") { + return Response.badRequest("`filepath` was not provided."); + } + + const importer = await this.importService.getImporter(format, organizationId); + if (importer === null) { + return Response.badRequest("Proper importer type required."); + } + + try { + let contents; + if (format === "1password1pux") { + contents = await CliUtils.extract1PuxContent(filepath); + } else { + contents = await CliUtils.readFile(filepath); + } + + if (contents === null || contents === "") { + return Response.badRequest("Import file was empty."); + } + + const response = await this.doImport(importer, contents, organizationId); + if (response.success) { + response.data = new MessageResponse("Imported " + filepath, null); + } + return response; + } catch (err) { + return Response.badRequest(err); + } + } + + private async list() { + const options = this.importService + .getImportOptions() + .sort((a, b) => { + return a.id < b.id ? -1 : a.id > b.id ? 1 : 0; + }) + .map((option) => option.id) + .join("\n"); + const res = new MessageResponse("Supported input formats:", options); + res.raw = options; + return Response.success(res); + } + + private async doImport( + importer: Importer, + contents: string, + organizationId?: string + ): Promise { + const err = await this.importService.import(importer, contents, organizationId); + if (err != null) { + if (err.passwordRequired) { + importer = this.importService.getImporter( + "bitwardenpasswordprotected", + organizationId, + await this.promptPassword() + ); + return this.doImport(importer, contents, organizationId); + } + return Response.badRequest(err.message); + } + + return Response.success(); + } + + private async promptPassword() { + const answer: inquirer.Answers = await inquirer.createPromptModule({ + output: process.stderr, + })({ + type: "password", + name: "password", + message: "Import file password:", + }); + return answer.password; + } +} diff --git a/apps/cli/src/commands/list.command.ts b/apps/cli/src/commands/list.command.ts new file mode 100644 index 0000000000..04727a4f45 --- /dev/null +++ b/apps/cli/src/commands/list.command.ts @@ -0,0 +1,252 @@ +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { Utils } from "jslib-common/misc/utils"; +import { CollectionData } from "jslib-common/models/data/collectionData"; +import { Collection } from "jslib-common/models/domain/collection"; +import { + CollectionDetailsResponse as ApiCollectionDetailsResponse, + CollectionResponse as ApiCollectionResponse, +} from "jslib-common/models/response/collectionResponse"; +import { ListResponse as ApiListResponse } from "jslib-common/models/response/listResponse"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { Response } from "jslib-node/cli/models/response"; +import { ListResponse } from "jslib-node/cli/models/response/listResponse"; + +import { CipherResponse } from "../models/response/cipherResponse"; +import { CollectionResponse } from "../models/response/collectionResponse"; +import { FolderResponse } from "../models/response/folderResponse"; +import { OrganizationResponse } from "../models/response/organizationResponse"; +import { OrganizationUserResponse } from "../models/response/organizationUserResponse"; +import { CliUtils } from "../utils"; + +export class ListCommand { + constructor( + private cipherService: CipherService, + private folderService: FolderService, + private collectionService: CollectionService, + private organizationService: OrganizationService, + private searchService: SearchService, + private apiService: ApiService + ) {} + + async run(object: string, cmdOptions: Record): Promise { + const normalizedOptions = new Options(cmdOptions); + switch (object.toLowerCase()) { + case "items": + return await this.listCiphers(normalizedOptions); + case "folders": + return await this.listFolders(normalizedOptions); + case "collections": + return await this.listCollections(normalizedOptions); + case "org-collections": + return await this.listOrganizationCollections(normalizedOptions); + case "org-members": + return await this.listOrganizationMembers(normalizedOptions); + case "organizations": + return await this.listOrganizations(normalizedOptions); + default: + return Response.badRequest("Unknown object."); + } + } + + private async listCiphers(options: Options) { + let ciphers: CipherView[]; + options.trash = options.trash || false; + if (options.url != null && options.url.trim() !== "") { + ciphers = await this.cipherService.getAllDecryptedForUrl(options.url); + } else { + ciphers = await this.cipherService.getAllDecrypted(); + } + + if ( + options.folderId != null || + options.collectionId != null || + options.organizationId != null + ) { + ciphers = ciphers.filter((c) => { + if (options.trash !== c.isDeleted) { + return false; + } + if (options.folderId != null) { + if (options.folderId === "notnull" && c.folderId != null) { + return true; + } + const folderId = options.folderId === "null" ? null : options.folderId; + if (folderId === c.folderId) { + return true; + } + } + + if (options.organizationId != null) { + if (options.organizationId === "notnull" && c.organizationId != null) { + return true; + } + const organizationId = options.organizationId === "null" ? null : options.organizationId; + if (organizationId === c.organizationId) { + return true; + } + } + + if (options.collectionId != null) { + if ( + options.collectionId === "notnull" && + c.collectionIds != null && + c.collectionIds.length > 0 + ) { + return true; + } + const collectionId = options.collectionId === "null" ? null : options.collectionId; + if (collectionId == null && (c.collectionIds == null || c.collectionIds.length === 0)) { + return true; + } + if ( + collectionId != null && + c.collectionIds != null && + c.collectionIds.indexOf(collectionId) > -1 + ) { + return true; + } + } + return false; + }); + } else if (options.search == null || options.search.trim() === "") { + ciphers = ciphers.filter((c) => options.trash === c.isDeleted); + } + + if (options.search != null && options.search.trim() !== "") { + ciphers = this.searchService.searchCiphersBasic(ciphers, options.search, options.trash); + } + + const res = new ListResponse(ciphers.map((o) => new CipherResponse(o))); + return Response.success(res); + } + + private async listFolders(options: Options) { + let folders = await this.folderService.getAllDecrypted(); + + if (options.search != null && options.search.trim() !== "") { + folders = CliUtils.searchFolders(folders, options.search); + } + + const res = new ListResponse(folders.map((o) => new FolderResponse(o))); + return Response.success(res); + } + + private async listCollections(options: Options) { + let collections = await this.collectionService.getAllDecrypted(); + + if (options.organizationId != null) { + collections = collections.filter((c) => { + if (options.organizationId === c.organizationId) { + return true; + } + return false; + }); + } + + if (options.search != null && options.search.trim() !== "") { + collections = CliUtils.searchCollections(collections, options.search); + } + + const res = new ListResponse(collections.map((o) => new CollectionResponse(o))); + return Response.success(res); + } + + private async listOrganizationCollections(options: Options) { + if (options.organizationId == null || options.organizationId === "") { + return Response.badRequest("`organizationid` option is required."); + } + if (!Utils.isGuid(options.organizationId)) { + return Response.badRequest("`" + options.organizationId + "` is not a GUID."); + } + const organization = await this.organizationService.get(options.organizationId); + if (organization == null) { + return Response.error("Organization not found."); + } + + try { + let response: ApiListResponse; + if (organization.canViewAllCollections) { + response = await this.apiService.getCollections(options.organizationId); + } else { + response = await this.apiService.getUserCollections(); + } + const collections = response.data + .filter((c) => c.organizationId === options.organizationId) + .map((r) => new Collection(new CollectionData(r as ApiCollectionDetailsResponse))); + let decCollections = await this.collectionService.decryptMany(collections); + if (options.search != null && options.search.trim() !== "") { + decCollections = CliUtils.searchCollections(decCollections, options.search); + } + const res = new ListResponse(decCollections.map((o) => new CollectionResponse(o))); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async listOrganizationMembers(options: Options) { + if (options.organizationId == null || options.organizationId === "") { + return Response.badRequest("`organizationid` option is required."); + } + if (!Utils.isGuid(options.organizationId)) { + return Response.badRequest("`" + options.organizationId + "` is not a GUID."); + } + const organization = await this.organizationService.get(options.organizationId); + if (organization == null) { + return Response.error("Organization not found."); + } + + try { + const response = await this.apiService.getOrganizationUsers(options.organizationId); + const res = new ListResponse( + response.data.map((r) => { + const u = new OrganizationUserResponse(); + u.email = r.email; + u.name = r.name; + u.id = r.id; + u.status = r.status; + u.type = r.type; + u.twoFactorEnabled = r.twoFactorEnabled; + return u; + }) + ); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } + + private async listOrganizations(options: Options) { + let organizations = await this.organizationService.getAll(); + + if (options.search != null && options.search.trim() !== "") { + organizations = CliUtils.searchOrganizations(organizations, options.search); + } + + const res = new ListResponse(organizations.map((o) => new OrganizationResponse(o))); + return Response.success(res); + } +} + +class Options { + organizationId: string; + collectionId: string; + folderId: string; + search: string; + url: string; + trash: boolean; + + constructor(passedOptions: Record) { + this.organizationId = passedOptions?.organizationid || passedOptions?.organizationId; + this.collectionId = passedOptions?.collectionid || passedOptions?.collectionId; + this.folderId = passedOptions?.folderid || passedOptions?.folderId; + this.search = passedOptions?.search; + this.url = passedOptions?.url; + this.trash = CliUtils.convertBooleanOption(passedOptions?.trash); + } +} diff --git a/apps/cli/src/commands/lock.command.ts b/apps/cli/src/commands/lock.command.ts new file mode 100644 index 0000000000..52f331ab5e --- /dev/null +++ b/apps/cli/src/commands/lock.command.ts @@ -0,0 +1,14 @@ +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +export class LockCommand { + constructor(private vaultTimeoutService: VaultTimeoutService) {} + + async run() { + await this.vaultTimeoutService.lock(); + process.env.BW_SESSION = null; + const res = new MessageResponse("Your vault is locked.", null); + return Response.success(res); + } +} diff --git a/apps/cli/src/commands/login.command.ts b/apps/cli/src/commands/login.command.ts new file mode 100644 index 0000000000..6fa1b12c61 --- /dev/null +++ b/apps/cli/src/commands/login.command.ts @@ -0,0 +1,99 @@ +import * as program from "commander"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.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 { KeyConnectorService } from "jslib-common/abstractions/keyConnector.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"; +import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service"; +import { Utils } from "jslib-common/misc/utils"; +import { LoginCommand as BaseLoginCommand } from "jslib-node/cli/commands/login.command"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +export class LoginCommand extends BaseLoginCommand { + private options: program.OptionValues; + + constructor( + authService: AuthService, + apiService: ApiService, + cryptoFunctionService: CryptoFunctionService, + i18nService: I18nService, + environmentService: EnvironmentService, + passwordGenerationService: PasswordGenerationService, + platformUtilsService: PlatformUtilsService, + stateService: StateService, + cryptoService: CryptoService, + policyService: PolicyService, + twoFactorService: TwoFactorService, + private syncService: SyncService, + private keyConnectorService: KeyConnectorService, + private logoutCallback: () => Promise + ) { + super( + authService, + apiService, + i18nService, + environmentService, + passwordGenerationService, + cryptoFunctionService, + platformUtilsService, + stateService, + cryptoService, + policyService, + twoFactorService, + "cli" + ); + this.logout = this.logoutCallback; + this.validatedParams = async () => { + const key = await cryptoFunctionService.randomBytes(64); + process.env.BW_SESSION = Utils.fromBufferToB64(key); + }; + this.success = async () => { + await this.syncService.fullSync(true); + + const usesKeyConnector = await this.keyConnectorService.getUsesKeyConnector(); + + if ( + (this.options.sso != null || this.options.apikey != null) && + this.canInteract && + !usesKeyConnector + ) { + const res = new MessageResponse( + "You are logged in!", + "\n" + "To unlock your vault, use the `unlock` command. ex:\n" + "$ bw unlock" + ); + return res; + } else { + const res = new MessageResponse( + "You are logged in!", + "\n" + + "To unlock your vault, set your session key to the `BW_SESSION` environment variable. ex:\n" + + '$ export BW_SESSION="' + + process.env.BW_SESSION + + '"\n' + + '> $env:BW_SESSION="' + + process.env.BW_SESSION + + '"\n\n' + + "You can also pass the session key to any command with the `--session` option. ex:\n" + + "$ bw list items --session " + + process.env.BW_SESSION + ); + res.raw = process.env.BW_SESSION; + return res; + } + }; + } + + run(email: string, password: string, options: program.OptionValues) { + this.options = options; + this.email = email; + return super.run(email, password, options); + } +} diff --git a/apps/cli/src/commands/restore.command.ts b/apps/cli/src/commands/restore.command.ts new file mode 100644 index 0000000000..51247698db --- /dev/null +++ b/apps/cli/src/commands/restore.command.ts @@ -0,0 +1,36 @@ +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { Response } from "jslib-node/cli/models/response"; + +export class RestoreCommand { + constructor(private cipherService: CipherService) {} + + async run(object: string, id: string): Promise { + if (id != null) { + id = id.toLowerCase(); + } + + switch (object.toLowerCase()) { + case "item": + return await this.restoreCipher(id); + default: + return Response.badRequest("Unknown object."); + } + } + + private async restoreCipher(id: string) { + const cipher = await this.cipherService.get(id); + if (cipher == null) { + return Response.notFound(); + } + if (cipher.deletedDate == null) { + return Response.badRequest("Cipher is not in trash."); + } + + try { + await this.cipherService.restoreWithServer(id); + return Response.success(); + } catch (e) { + return Response.error(e); + } + } +} diff --git a/apps/cli/src/commands/send/create.command.ts b/apps/cli/src/commands/send/create.command.ts new file mode 100644 index 0000000000..bbf0adc65a --- /dev/null +++ b/apps/cli/src/commands/send/create.command.ts @@ -0,0 +1,149 @@ +import * as fs from "fs"; +import * as path from "path"; + +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { SendService } from "jslib-common/abstractions/send.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SendType } from "jslib-common/enums/sendType"; +import { NodeUtils } from "jslib-common/misc/nodeUtils"; +import { Response } from "jslib-node/cli/models/response"; + +import { SendResponse } from "../../models/response/sendResponse"; +import { SendTextResponse } from "../../models/response/sendTextResponse"; +import { CliUtils } from "../../utils"; + +export class SendCreateCommand { + constructor( + private sendService: SendService, + private stateService: StateService, + private environmentService: EnvironmentService + ) {} + + async run(requestJson: any, cmdOptions: Record) { + let req: any = null; + if (process.env.BW_SERVE !== "true" && (requestJson == null || requestJson === "")) { + requestJson = await CliUtils.readStdin(); + } + + if (requestJson == null || requestJson === "") { + return Response.badRequest("`requestJson` was not provided."); + } + + if (typeof requestJson !== "string") { + req = requestJson; + req.deletionDate = req.deletionDate == null ? null : new Date(req.deletionDate); + req.expirationDate = req.expirationDate == null ? null : new Date(req.expirationDate); + } else { + try { + const reqJson = Buffer.from(requestJson, "base64").toString(); + req = SendResponse.fromJson(reqJson); + + if (req == null) { + throw new Error("Null request"); + } + } catch (e) { + return Response.badRequest("Error parsing the encoded request data."); + } + } + + if ( + req.deletionDate == null || + isNaN(new Date(req.deletionDate).getTime()) || + new Date(req.deletionDate) <= new Date() + ) { + return Response.badRequest("Must specify a valid deletion date after the current time"); + } + + if (req.expirationDate != null && isNaN(new Date(req.expirationDate).getTime())) { + return Response.badRequest("Unable to parse expirationDate: " + req.expirationDate); + } + + const normalizedOptions = new Options(cmdOptions); + return this.createSend(req, normalizedOptions); + } + + private async createSend(req: SendResponse, options: Options) { + const filePath = req.file?.fileName ?? options.file; + const text = req.text?.text ?? options.text; + const hidden = req.text?.hidden ?? options.hidden; + const password = req.password ?? options.password; + const maxAccessCount = req.maxAccessCount ?? options.maxAccessCount; + + req.key = null; + req.maxAccessCount = maxAccessCount; + + switch (req.type) { + case SendType.File: + if (process.env.BW_SERVE === "true") { + return Response.error( + "Creating a file-based Send is unsupported through the `serve` command at this time." + ); + } + + if (!(await this.stateService.getCanAccessPremium())) { + return Response.error("Premium status is required to use this feature."); + } + + if (filePath == null) { + return Response.badRequest( + "Must specify a file to Send either with the --file option or in the request JSON." + ); + } + + req.file.fileName = path.basename(filePath); + break; + case SendType.Text: + if (text == null) { + return Response.badRequest( + "Must specify text content to Send either with the --text option or in the request JSON." + ); + } + req.text = new SendTextResponse(); + req.text.text = text; + req.text.hidden = hidden; + break; + default: + return Response.badRequest( + "Unknown Send type " + SendType[req.type] + ". Valid types are: file, text" + ); + } + + try { + let fileBuffer: ArrayBuffer = null; + if (req.type === SendType.File) { + fileBuffer = NodeUtils.bufferToArrayBuffer(fs.readFileSync(filePath)); + } + + const sendView = SendResponse.toView(req); + const [encSend, fileData] = await this.sendService.encrypt(sendView, fileBuffer, password); + // Add dates from template + encSend.deletionDate = sendView.deletionDate; + encSend.expirationDate = sendView.expirationDate; + + await this.sendService.saveWithServer([encSend, fileData]); + const newSend = await this.sendService.get(encSend.id); + const decSend = await newSend.decrypt(); + const res = new SendResponse(decSend, this.environmentService.getWebVaultUrl()); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } +} + +class Options { + file: string; + text: string; + maxAccessCount: number; + password: string; + hidden: boolean; + + constructor(passedOptions: Record) { + this.file = passedOptions?.file; + this.text = passedOptions?.text; + this.password = passedOptions?.password; + this.hidden = CliUtils.convertBooleanOption(passedOptions?.hidden); + this.maxAccessCount = + passedOptions?.maxAccessCount != null ? parseInt(passedOptions.maxAccessCount, null) : null; + } +} diff --git a/apps/cli/src/commands/send/delete.command.ts b/apps/cli/src/commands/send/delete.command.ts new file mode 100644 index 0000000000..72a9cbf600 --- /dev/null +++ b/apps/cli/src/commands/send/delete.command.ts @@ -0,0 +1,21 @@ +import { SendService } from "jslib-common/abstractions/send.service"; +import { Response } from "jslib-node/cli/models/response"; + +export class SendDeleteCommand { + constructor(private sendService: SendService) {} + + async run(id: string) { + const send = await this.sendService.get(id); + + if (send == null) { + return Response.notFound(); + } + + try { + await this.sendService.deleteWithServer(id); + return Response.success(); + } catch (e) { + return Response.error(e); + } + } +} diff --git a/apps/cli/src/commands/send/edit.command.ts b/apps/cli/src/commands/send/edit.command.ts new file mode 100644 index 0000000000..4aac124079 --- /dev/null +++ b/apps/cli/src/commands/send/edit.command.ts @@ -0,0 +1,90 @@ +import { SendService } from "jslib-common/abstractions/send.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SendType } from "jslib-common/enums/sendType"; +import { Response } from "jslib-node/cli/models/response"; + +import { SendResponse } from "../../models/response/sendResponse"; +import { CliUtils } from "../../utils"; + +import { SendGetCommand } from "./get.command"; + +export class SendEditCommand { + constructor( + private sendService: SendService, + private stateService: StateService, + private getCommand: SendGetCommand + ) {} + + async run(requestJson: string, cmdOptions: Record): Promise { + if (process.env.BW_SERVE !== "true" && (requestJson == null || requestJson === "")) { + requestJson = await CliUtils.readStdin(); + } + + if (requestJson == null || requestJson === "") { + return Response.badRequest("`requestJson` was not provided."); + } + + let req: SendResponse = null; + if (typeof requestJson !== "string") { + req = requestJson; + req.deletionDate = req.deletionDate == null ? null : new Date(req.deletionDate); + req.expirationDate = req.expirationDate == null ? null : new Date(req.expirationDate); + } else { + try { + const reqJson = Buffer.from(requestJson, "base64").toString(); + req = SendResponse.fromJson(reqJson); + } catch (e) { + return Response.badRequest("Error parsing the encoded request data."); + } + } + + const normalizedOptions = new Options(cmdOptions); + req.id = normalizedOptions.itemId || req.id; + + if (req.id != null) { + req.id = req.id.toLowerCase(); + } + + const send = await this.sendService.get(req.id); + + if (send == null) { + return Response.notFound(); + } + + if (send.type !== req.type) { + return Response.badRequest("Cannot change a Send's type"); + } + + if (send.type === SendType.File && !(await this.stateService.getCanAccessPremium())) { + return Response.error("Premium status is required to use this feature."); + } + + let sendView = await send.decrypt(); + sendView = SendResponse.toView(req, sendView); + + if (typeof req.password !== "string" || req.password === "") { + req.password = null; + } + + try { + const [encSend, encFileData] = await this.sendService.encrypt(sendView, null, req.password); + // Add dates from template + encSend.deletionDate = sendView.deletionDate; + encSend.expirationDate = sendView.expirationDate; + + await this.sendService.saveWithServer([encSend, encFileData]); + } catch (e) { + return Response.error(e); + } + + return await this.getCommand.run(send.id, {}); + } +} + +class Options { + itemId: string; + + constructor(passedOptions: Record) { + this.itemId = passedOptions?.itemId || passedOptions?.itemid; + } +} diff --git a/apps/cli/src/commands/send/get.command.ts b/apps/cli/src/commands/send/get.command.ts new file mode 100644 index 0000000000..cef7d66256 --- /dev/null +++ b/apps/cli/src/commands/send/get.command.ts @@ -0,0 +1,83 @@ +import * as program from "commander"; + +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { SendService } from "jslib-common/abstractions/send.service"; +import { Utils } from "jslib-common/misc/utils"; +import { SendView } from "jslib-common/models/view/sendView"; +import { Response } from "jslib-node/cli/models/response"; + +import { SendResponse } from "../../models/response/sendResponse"; +import { DownloadCommand } from "../download.command"; + +export class SendGetCommand extends DownloadCommand { + constructor( + private sendService: SendService, + private environmentService: EnvironmentService, + private searchService: SearchService, + cryptoService: CryptoService + ) { + super(cryptoService); + } + + async run(id: string, options: program.OptionValues) { + const serveCommand = process.env.BW_SERVE === "true"; + if (serveCommand && !Utils.isGuid(id)) { + return Response.badRequest("`" + id + "` is not a GUID."); + } + + let sends = await this.getSendView(id); + if (sends == null) { + return Response.notFound(); + } + + const webVaultUrl = this.environmentService.getWebVaultUrl(); + let filter = (s: SendView) => true; + let selector = async (s: SendView): Promise => + Response.success(new SendResponse(s, webVaultUrl)); + if (!serveCommand && options?.text != null) { + filter = (s) => { + return filter(s) && s.text != null; + }; + selector = async (s) => { + // Write to stdout and response success so we get the text string only to stdout + process.stdout.write(s.text.text); + return Response.success(); + }; + } + + if (Array.isArray(sends)) { + if (filter != null) { + sends = sends.filter(filter); + } + if (sends.length > 1) { + return Response.multipleResults(sends.map((s) => s.id)); + } + if (sends.length > 0) { + return selector(sends[0]); + } else { + return Response.notFound(); + } + } + + return selector(sends); + } + + private async getSendView(id: string): Promise { + if (Utils.isGuid(id)) { + const send = await this.sendService.get(id); + if (send != null) { + return await send.decrypt(); + } + } else if (id.trim() !== "") { + let sends = await this.sendService.getAllDecrypted(); + sends = this.searchService.searchSends(sends, id); + if (sends.length > 1) { + return sends; + } else if (sends.length > 0) { + return sends[0]; + } + } + } +} diff --git a/apps/cli/src/commands/send/list.command.ts b/apps/cli/src/commands/send/list.command.ts new file mode 100644 index 0000000000..3b888d3345 --- /dev/null +++ b/apps/cli/src/commands/send/list.command.ts @@ -0,0 +1,36 @@ +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { SendService } from "jslib-common/abstractions/send.service"; +import { Response } from "jslib-node/cli/models/response"; +import { ListResponse } from "jslib-node/cli/models/response/listResponse"; + +import { SendResponse } from "../..//models/response/sendResponse"; + +export class SendListCommand { + constructor( + private sendService: SendService, + private environmentService: EnvironmentService, + private searchService: SearchService + ) {} + + async run(cmdOptions: Record): Promise { + let sends = await this.sendService.getAllDecrypted(); + + const normalizedOptions = new Options(cmdOptions); + if (normalizedOptions.search != null && normalizedOptions.search.trim() !== "") { + sends = this.searchService.searchSends(sends, normalizedOptions.search); + } + + const webVaultUrl = this.environmentService.getWebVaultUrl(); + const res = new ListResponse(sends.map((s) => new SendResponse(s, webVaultUrl))); + return Response.success(res); + } +} + +class Options { + search: string; + + constructor(passedOptions: Record) { + this.search = passedOptions?.search; + } +} diff --git a/apps/cli/src/commands/send/receive.command.ts b/apps/cli/src/commands/send/receive.command.ts new file mode 100644 index 0000000000..6cab9dfb68 --- /dev/null +++ b/apps/cli/src/commands/send/receive.command.ts @@ -0,0 +1,170 @@ +import * as program from "commander"; +import * as inquirer from "inquirer"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SendType } from "jslib-common/enums/sendType"; +import { NodeUtils } from "jslib-common/misc/nodeUtils"; +import { Utils } from "jslib-common/misc/utils"; +import { SendAccess } from "jslib-common/models/domain/sendAccess"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { SendAccessRequest } from "jslib-common/models/request/sendAccessRequest"; +import { ErrorResponse } from "jslib-common/models/response/errorResponse"; +import { SendAccessView } from "jslib-common/models/view/sendAccessView"; +import { Response } from "jslib-node/cli/models/response"; + +import { SendAccessResponse } from "../../models/response/sendAccessResponse"; +import { DownloadCommand } from "../download.command"; + +export class SendReceiveCommand extends DownloadCommand { + private canInteract: boolean; + private decKey: SymmetricCryptoKey; + private sendAccessRequest: SendAccessRequest; + + constructor( + private apiService: ApiService, + cryptoService: CryptoService, + private cryptoFunctionService: CryptoFunctionService, + private platformUtilsService: PlatformUtilsService, + private environmentService: EnvironmentService + ) { + super(cryptoService); + } + + async run(url: string, options: program.OptionValues): Promise { + this.canInteract = process.env.BW_NOINTERACTION !== "true"; + + let urlObject: URL; + try { + urlObject = new URL(url); + } catch (e) { + return Response.badRequest("Failed to parse the provided Send url"); + } + + const apiUrl = this.getApiUrl(urlObject); + const [id, key] = this.getIdAndKey(urlObject); + + if (Utils.isNullOrWhitespace(id) || Utils.isNullOrWhitespace(key)) { + return Response.badRequest("Failed to parse url, the url provided is not a valid Send url"); + } + + const keyArray = Utils.fromUrlB64ToArray(key); + this.sendAccessRequest = new SendAccessRequest(); + + let password = options.password; + if (password == null || password === "") { + if (options.passwordfile) { + password = await NodeUtils.readFirstLine(options.passwordfile); + } else if (options.passwordenv && process.env[options.passwordenv]) { + password = process.env[options.passwordenv]; + } + } + + if (password != null && password !== "") { + this.sendAccessRequest.password = await this.getUnlockedPassword(password, keyArray); + } + + const response = await this.sendRequest(apiUrl, id, keyArray); + + if (response instanceof Response) { + // Error scenario + return response; + } + + if (options.obj != null) { + return Response.success(new SendAccessResponse(response)); + } + + switch (response.type) { + case SendType.Text: + // Write to stdout and response success so we get the text string only to stdout + process.stdout.write(response?.text?.text); + return Response.success(); + case SendType.File: { + const downloadData = await this.apiService.getSendFileDownloadData( + response, + this.sendAccessRequest, + apiUrl + ); + return await this.saveAttachmentToFile( + downloadData.url, + this.decKey, + response?.file?.fileName, + options.output + ); + } + default: + return Response.success(new SendAccessResponse(response)); + } + } + + private getIdAndKey(url: URL): [string, string] { + const result = url.hash.slice(1).split("/").slice(-2); + return [result[0], result[1]]; + } + + private getApiUrl(url: URL) { + const urls = this.environmentService.getUrls(); + if (url.origin === "https://send.bitwarden.com") { + return "https://vault.bitwarden.com/api"; + } else if (url.origin === urls.api) { + return url.origin; + } else if (this.platformUtilsService.isDev() && url.origin === urls.webVault) { + return urls.api; + } else { + return url.origin + "/api"; + } + } + + private async getUnlockedPassword(password: string, keyArray: ArrayBuffer) { + const passwordHash = await this.cryptoFunctionService.pbkdf2( + password, + keyArray, + "sha256", + 100000 + ); + return Utils.fromBufferToB64(passwordHash); + } + + private async sendRequest( + url: string, + id: string, + key: ArrayBuffer + ): Promise { + try { + const sendResponse = await this.apiService.postSendAccess(id, this.sendAccessRequest, url); + + const sendAccess = new SendAccess(sendResponse); + this.decKey = await this.cryptoService.makeSendKey(key); + return await sendAccess.decrypt(this.decKey); + } catch (e) { + if (e instanceof ErrorResponse) { + if (e.statusCode === 401) { + if (this.canInteract) { + const answer: inquirer.Answers = await inquirer.createPromptModule({ + output: process.stderr, + })({ + type: "password", + name: "password", + message: "Send password:", + }); + + // reattempt with new password + this.sendAccessRequest.password = await this.getUnlockedPassword(answer.password, key); + return await this.sendRequest(url, id, key); + } + + return Response.badRequest("Incorrect or missing password"); + } else if (e.statusCode === 405) { + return Response.badRequest("Bad Request"); + } else if (e.statusCode === 404) { + return Response.notFound(); + } + } + return Response.error(e); + } + } +} diff --git a/apps/cli/src/commands/send/removePassword.command.ts b/apps/cli/src/commands/send/removePassword.command.ts new file mode 100644 index 0000000000..1da6becf28 --- /dev/null +++ b/apps/cli/src/commands/send/removePassword.command.ts @@ -0,0 +1,21 @@ +import { SendService } from "jslib-common/abstractions/send.service"; +import { Response } from "jslib-node/cli/models/response"; + +import { SendResponse } from "../../models/response/sendResponse"; + +export class SendRemovePasswordCommand { + constructor(private sendService: SendService) {} + + async run(id: string) { + try { + await this.sendService.removePasswordWithServer(id); + + const updatedSend = await this.sendService.get(id); + const decSend = await updatedSend.decrypt(); + const res = new SendResponse(decSend); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } +} diff --git a/apps/cli/src/commands/serve.command.ts b/apps/cli/src/commands/serve.command.ts new file mode 100644 index 0000000000..f5685efeac --- /dev/null +++ b/apps/cli/src/commands/serve.command.ts @@ -0,0 +1,394 @@ +import * as koaMulter from "@koa/multer"; +import * as koaRouter from "@koa/router"; +import * as program from "commander"; +import * as koa from "koa"; +import * as koaBodyParser from "koa-bodyparser"; +import * as koaJson from "koa-json"; + +import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions"; +import { Response } from "jslib-node/cli/models/response"; +import { FileResponse } from "jslib-node/cli/models/response/fileResponse"; + +import { Main } from "../bw"; + +import { ConfirmCommand } from "./confirm.command"; +import { CreateCommand } from "./create.command"; +import { DeleteCommand } from "./delete.command"; +import { EditCommand } from "./edit.command"; +import { GenerateCommand } from "./generate.command"; +import { GetCommand } from "./get.command"; +import { ListCommand } from "./list.command"; +import { LockCommand } from "./lock.command"; +import { RestoreCommand } from "./restore.command"; +import { SendCreateCommand } from "./send/create.command"; +import { SendDeleteCommand } from "./send/delete.command"; +import { SendEditCommand } from "./send/edit.command"; +import { SendGetCommand } from "./send/get.command"; +import { SendListCommand } from "./send/list.command"; +import { SendRemovePasswordCommand } from "./send/removePassword.command"; +import { ShareCommand } from "./share.command"; +import { StatusCommand } from "./status.command"; +import { SyncCommand } from "./sync.command"; +import { UnlockCommand } from "./unlock.command"; + +export class ServeCommand { + private listCommand: ListCommand; + private getCommand: GetCommand; + private createCommand: CreateCommand; + private editCommand: EditCommand; + private generateCommand: GenerateCommand; + private shareCommand: ShareCommand; + private statusCommand: StatusCommand; + private syncCommand: SyncCommand; + private deleteCommand: DeleteCommand; + private confirmCommand: ConfirmCommand; + private restoreCommand: RestoreCommand; + private lockCommand: LockCommand; + private unlockCommand: UnlockCommand; + + private sendCreateCommand: SendCreateCommand; + private sendDeleteCommand: SendDeleteCommand; + private sendEditCommand: SendEditCommand; + private sendGetCommand: SendGetCommand; + private sendListCommand: SendListCommand; + private sendRemovePasswordCommand: SendRemovePasswordCommand; + + constructor(protected main: Main) { + this.getCommand = new GetCommand( + this.main.cipherService, + this.main.folderService, + this.main.collectionService, + this.main.totpService, + this.main.auditService, + this.main.cryptoService, + this.main.stateService, + this.main.searchService, + this.main.apiService, + this.main.organizationService + ); + this.listCommand = new ListCommand( + this.main.cipherService, + this.main.folderService, + this.main.collectionService, + this.main.organizationService, + this.main.searchService, + this.main.apiService + ); + this.createCommand = new CreateCommand( + this.main.cipherService, + this.main.folderService, + this.main.stateService, + this.main.cryptoService, + this.main.apiService + ); + this.editCommand = new EditCommand( + this.main.cipherService, + this.main.folderService, + this.main.cryptoService, + this.main.apiService + ); + this.generateCommand = new GenerateCommand( + this.main.passwordGenerationService, + this.main.stateService + ); + this.syncCommand = new SyncCommand(this.main.syncService); + this.statusCommand = new StatusCommand( + this.main.environmentService, + this.main.syncService, + this.main.stateService, + this.main.authService + ); + this.deleteCommand = new DeleteCommand( + this.main.cipherService, + this.main.folderService, + this.main.stateService, + this.main.apiService + ); + this.confirmCommand = new ConfirmCommand(this.main.apiService, this.main.cryptoService); + this.restoreCommand = new RestoreCommand(this.main.cipherService); + this.shareCommand = new ShareCommand(this.main.cipherService); + this.lockCommand = new LockCommand(this.main.vaultTimeoutService); + this.unlockCommand = new UnlockCommand( + this.main.cryptoService, + this.main.stateService, + this.main.cryptoFunctionService, + this.main.apiService, + this.main.logService, + this.main.keyConnectorService, + this.main.environmentService, + this.main.syncService, + async () => await this.main.logout() + ); + + this.sendCreateCommand = new SendCreateCommand( + this.main.sendService, + this.main.stateService, + this.main.environmentService + ); + this.sendDeleteCommand = new SendDeleteCommand(this.main.sendService); + this.sendGetCommand = new SendGetCommand( + this.main.sendService, + this.main.environmentService, + this.main.searchService, + this.main.cryptoService + ); + this.sendEditCommand = new SendEditCommand( + this.main.sendService, + this.main.stateService, + this.sendGetCommand + ); + this.sendListCommand = new SendListCommand( + this.main.sendService, + this.main.environmentService, + this.main.searchService + ); + this.sendRemovePasswordCommand = new SendRemovePasswordCommand(this.main.sendService); + } + + async run(options: program.OptionValues) { + const port = options.port || 8087; + const hostname = options.hostname || "localhost"; + const server = new koa(); + const router = new koaRouter(); + process.env.BW_SERVE = "true"; + process.env.BW_NOINTERACTION = "true"; + + server.use(koaBodyParser()).use(koaJson({ pretty: false, param: "pretty" })); + + router.get("/generate", async (ctx, next) => { + const response = await this.generateCommand.run(ctx.request.query); + this.processResponse(ctx.response, response); + await next(); + }); + + router.get("/status", async (ctx, next) => { + const response = await this.statusCommand.run(); + this.processResponse(ctx.response, response); + await next(); + }); + + router.get("/list/object/:object", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + let response: Response = null; + if (ctx.params.object === "send") { + response = await this.sendListCommand.run(ctx.request.query); + } else { + response = await this.listCommand.run(ctx.params.object, ctx.request.query); + } + this.processResponse(ctx.response, response); + await next(); + }); + + router.get("/send/list", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + const response = await this.sendListCommand.run(ctx.request.query); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/sync", async (ctx, next) => { + const response = await this.syncCommand.run(ctx.request.query); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/lock", async (ctx, next) => { + const response = await this.lockCommand.run(); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/unlock", async (ctx, next) => { + const response = await this.unlockCommand.run( + ctx.request.body.password == null ? null : (ctx.request.body.password as string), + ctx.request.query + ); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/confirm/:object/:id", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + const response = await this.confirmCommand.run( + ctx.params.object, + ctx.params.id, + ctx.request.query + ); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/restore/:object/:id", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + const response = await this.restoreCommand.run(ctx.params.object, ctx.params.id); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/move/:id/:organizationId", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + const response = await this.shareCommand.run( + ctx.params.id, + ctx.params.organizationId, + ctx.request.body // TODO: Check the format of this body for an array of collection ids + ); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/attachment", koaMulter().single("file"), async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + const response = await this.createCommand.run( + "attachment", + ctx.request.body, + ctx.request.query, + { + fileBuffer: ctx.request.file.buffer, + fileName: ctx.request.file.originalname, + } + ); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/send/:id/remove-password", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + const response = await this.sendRemovePasswordCommand.run(ctx.params.id); + this.processResponse(ctx.response, response); + await next(); + }); + + router.post("/object/:object", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + let response: Response = null; + if (ctx.params.object === "send") { + response = await this.sendCreateCommand.run(ctx.request.body, ctx.request.query); + } else { + response = await this.createCommand.run( + ctx.params.object, + ctx.request.body, + ctx.request.query + ); + } + this.processResponse(ctx.response, response); + await next(); + }); + + router.put("/object/:object/:id", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + let response: Response = null; + if (ctx.params.object === "send") { + ctx.request.body.id = ctx.params.id; + response = await this.sendEditCommand.run(ctx.request.body, ctx.request.query); + } else { + response = await this.editCommand.run( + ctx.params.object, + ctx.params.id, + ctx.request.body, + ctx.request.query + ); + } + this.processResponse(ctx.response, response); + await next(); + }); + + router.get("/object/:object/:id", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + let response: Response = null; + if (ctx.params.object === "send") { + response = await this.sendGetCommand.run(ctx.params.id, null); + } else { + response = await this.getCommand.run(ctx.params.object, ctx.params.id, ctx.request.query); + } + this.processResponse(ctx.response, response); + await next(); + }); + + router.delete("/object/:object/:id", async (ctx, next) => { + if (await this.errorIfLocked(ctx.response)) { + await next(); + return; + } + let response: Response = null; + if (ctx.params.object === "send") { + response = await this.sendDeleteCommand.run(ctx.params.id); + } else { + response = await this.deleteCommand.run( + ctx.params.object, + ctx.params.id, + ctx.request.query + ); + } + this.processResponse(ctx.response, response); + await next(); + }); + + server + .use(router.routes()) + .use(router.allowedMethods()) + .listen(port, hostname === "all" ? null : hostname, () => { + this.main.logService.info("Listening on " + hostname + ":" + port); + }); + } + + private processResponse(res: koa.Response, commandResponse: Response) { + if (!commandResponse.success) { + res.status = 400; + } + if (commandResponse.data instanceof FileResponse) { + res.body = commandResponse.data.data; + res.attachment(commandResponse.data.fileName); + res.set("Content-Type", "application/octet-stream"); + res.set("Content-Length", commandResponse.data.data.length.toString()); + } else { + res.body = commandResponse; + } + } + + private async errorIfLocked(res: koa.Response) { + const authed = await this.main.stateService.getIsAuthenticated(); + if (!authed) { + this.processResponse(res, Response.error("You are not logged in.")); + return true; + } + if (await this.main.cryptoService.hasKeyInMemory()) { + return false; + } else if (await this.main.cryptoService.hasKeyStored(KeySuffixOptions.Auto)) { + // load key into memory + await this.main.cryptoService.getKey(); + return false; + } + this.processResponse(res, Response.error("Vault is locked.")); + return true; + } +} diff --git a/apps/cli/src/commands/share.command.ts b/apps/cli/src/commands/share.command.ts new file mode 100644 index 0000000000..924ed01259 --- /dev/null +++ b/apps/cli/src/commands/share.command.ts @@ -0,0 +1,59 @@ +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { Response } from "jslib-node/cli/models/response"; + +import { CipherResponse } from "../models/response/cipherResponse"; +import { CliUtils } from "../utils"; + +export class ShareCommand { + constructor(private cipherService: CipherService) {} + + async run(id: string, organizationId: string, requestJson: string): Promise { + if (process.env.BW_SERVE !== "true" && (requestJson == null || requestJson === "")) { + requestJson = await CliUtils.readStdin(); + } + + if (requestJson == null || requestJson === "") { + return Response.badRequest("`requestJson` was not provided."); + } + + let req: string[] = []; + if (typeof requestJson !== "string") { + req = requestJson; + } else { + try { + const reqJson = Buffer.from(requestJson, "base64").toString(); + req = JSON.parse(reqJson); + if (req == null || req.length === 0) { + return Response.badRequest("You must provide at least one collection id for this item."); + } + } catch (e) { + return Response.badRequest("Error parsing the encoded request data."); + } + } + + if (id != null) { + id = id.toLowerCase(); + } + if (organizationId != null) { + organizationId = organizationId.toLowerCase(); + } + + const cipher = await this.cipherService.get(id); + if (cipher == null) { + return Response.notFound(); + } + if (cipher.organizationId != null) { + return Response.badRequest("This item already belongs to an organization."); + } + const cipherView = await cipher.decrypt(); + try { + await this.cipherService.shareWithServer(cipherView, organizationId, req); + const updatedCipher = await this.cipherService.get(cipher.id); + const decCipher = await updatedCipher.decrypt(); + const res = new CipherResponse(decCipher); + return Response.success(res); + } catch (e) { + return Response.error(e); + } + } +} diff --git a/apps/cli/src/commands/status.command.ts b/apps/cli/src/commands/status.command.ts new file mode 100644 index 0000000000..724b2b03d5 --- /dev/null +++ b/apps/cli/src/commands/status.command.ts @@ -0,0 +1,54 @@ +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { Response } from "jslib-node/cli/models/response"; + +import { TemplateResponse } from "../models/response/templateResponse"; + +export class StatusCommand { + constructor( + private envService: EnvironmentService, + private syncService: SyncService, + private stateService: StateService, + private authService: AuthService + ) {} + + async run(): Promise { + try { + const baseUrl = this.baseUrl(); + const status = await this.status(); + const lastSync = await this.syncService.getLastSync(); + const userId = await this.stateService.getUserId(); + const email = await this.stateService.getEmail(); + + return Response.success( + new TemplateResponse({ + serverUrl: baseUrl, + lastSync: lastSync, + userEmail: email, + userId: userId, + status: status, + }) + ); + } catch (e) { + return Response.error(e); + } + } + + private baseUrl(): string { + return this.envService.getUrls().base; + } + + private async status(): Promise<"unauthenticated" | "locked" | "unlocked"> { + const authStatus = await this.authService.getAuthStatus(); + if (authStatus === AuthenticationStatus.Unlocked) { + return "unlocked"; + } else if (authStatus === AuthenticationStatus.Locked) { + return "locked"; + } else { + return "unauthenticated"; + } + } +} diff --git a/apps/cli/src/commands/sync.command.ts b/apps/cli/src/commands/sync.command.ts new file mode 100644 index 0000000000..7df7510c19 --- /dev/null +++ b/apps/cli/src/commands/sync.command.ts @@ -0,0 +1,41 @@ +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; +import { StringResponse } from "jslib-node/cli/models/response/stringResponse"; + +import { CliUtils } from "src/utils"; + +export class SyncCommand { + constructor(private syncService: SyncService) {} + + async run(cmdOptions: Record): Promise { + const normalizedOptions = new Options(cmdOptions); + if (normalizedOptions.last) { + return await this.getLastSync(); + } + + try { + await this.syncService.fullSync(normalizedOptions.force, true); + const res = new MessageResponse("Syncing complete.", null); + return Response.success(res); + } catch (e) { + return Response.error("Syncing failed: " + e.toString()); + } + } + + private async getLastSync() { + const lastSyncDate = await this.syncService.getLastSync(); + const res = new StringResponse(lastSyncDate == null ? null : lastSyncDate.toISOString()); + return Response.success(res); + } +} + +class Options { + last: boolean; + force: boolean; + + constructor(passedOptions: Record) { + this.last = CliUtils.convertBooleanOption(passedOptions?.last); + this.force = CliUtils.convertBooleanOption(passedOptions?.force); + } +} diff --git a/apps/cli/src/commands/unlock.command.ts b/apps/cli/src/commands/unlock.command.ts new file mode 100644 index 0000000000..9332a2a83c --- /dev/null +++ b/apps/cli/src/commands/unlock.command.ts @@ -0,0 +1,132 @@ +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { HashPurpose } from "jslib-common/enums/hashPurpose"; +import { Utils } from "jslib-common/misc/utils"; +import { SecretVerificationRequest } from "jslib-common/models/request/secretVerificationRequest"; +import { ConsoleLogService } from "jslib-common/services/consoleLog.service"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +import { CliUtils } from "../utils"; + +import { ConvertToKeyConnectorCommand } from "./convertToKeyConnector.command"; + +export class UnlockCommand { + constructor( + private cryptoService: CryptoService, + private stateService: StateService, + private cryptoFunctionService: CryptoFunctionService, + private apiService: ApiService, + private logService: ConsoleLogService, + private keyConnectorService: KeyConnectorService, + private environmentService: EnvironmentService, + private syncService: SyncService, + private logout: () => Promise + ) {} + + async run(password: string, cmdOptions: Record) { + const normalizedOptions = new Options(cmdOptions); + const passwordResult = await CliUtils.getPassword(password, normalizedOptions, this.logService); + + if (passwordResult instanceof Response) { + return passwordResult; + } else { + password = passwordResult; + } + + await this.setNewSessionKey(); + const email = await this.stateService.getEmail(); + const kdf = await this.stateService.getKdfType(); + const kdfIterations = await this.stateService.getKdfIterations(); + const key = await this.cryptoService.makeKey(password, email, kdf, kdfIterations); + const storedKeyHash = await this.cryptoService.getKeyHash(); + + let passwordValid = false; + if (key != null) { + if (storedKeyHash != null) { + passwordValid = await this.cryptoService.compareAndUpdateKeyHash(password, key); + } else { + const serverKeyHash = await this.cryptoService.hashPassword( + password, + key, + HashPurpose.ServerAuthorization + ); + const request = new SecretVerificationRequest(); + request.masterPasswordHash = serverKeyHash; + try { + await this.apiService.postAccountVerifyPassword(request); + passwordValid = true; + const localKeyHash = await this.cryptoService.hashPassword( + password, + key, + HashPurpose.LocalAuthorization + ); + await this.cryptoService.setKeyHash(localKeyHash); + } catch { + // Ignore + } + } + } + + if (passwordValid) { + await this.cryptoService.setKey(key); + + if (await this.keyConnectorService.getConvertAccountRequired()) { + const convertToKeyConnectorCommand = new ConvertToKeyConnectorCommand( + this.apiService, + this.keyConnectorService, + this.environmentService, + this.syncService, + this.logout + ); + const convertResponse = await convertToKeyConnectorCommand.run(); + if (!convertResponse.success) { + return convertResponse; + } + } + + return this.successResponse(); + } else { + return Response.error("Invalid master password."); + } + } + + private async setNewSessionKey() { + const key = await this.cryptoFunctionService.randomBytes(64); + process.env.BW_SESSION = Utils.fromBufferToB64(key); + } + + private async successResponse() { + const res = new MessageResponse( + "Your vault is now unlocked!", + "\n" + + "To unlock your vault, set your session key to the `BW_SESSION` environment variable. ex:\n" + + '$ export BW_SESSION="' + + process.env.BW_SESSION + + '"\n' + + '> $env:BW_SESSION="' + + process.env.BW_SESSION + + '"\n\n' + + "You can also pass the session key to any command with the `--session` option. ex:\n" + + "$ bw list items --session " + + process.env.BW_SESSION + ); + res.raw = process.env.BW_SESSION; + return Response.success(res); + } +} + +class Options { + passwordEnv: string; + passwordFile: string; + + constructor(passedOptions: Record) { + this.passwordEnv = passedOptions?.passwordenv || passedOptions?.passwordEnv; + this.passwordFile = passedOptions?.passwordfile || passedOptions?.passwordFile; + } +} diff --git a/apps/cli/src/flags.ts b/apps/cli/src/flags.ts new file mode 100644 index 0000000000..b0db46132d --- /dev/null +++ b/apps/cli/src/flags.ts @@ -0,0 +1,5 @@ +export type Flags = { + serve?: boolean; +}; + +export type FlagName = keyof Flags; diff --git a/apps/cli/src/locales/en/messages.json b/apps/cli/src/locales/en/messages.json new file mode 100644 index 0000000000..ca1e8317a8 --- /dev/null +++ b/apps/cli/src/locales/en/messages.json @@ -0,0 +1,47 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "emailTitle": { + "message": "Email" + }, + "noneFolder": { + "message": "No Folder" + }, + "importEncKeyError": { + "message": "Invalid file password." + }, + "importPasswordRequired": { + "message": "File is password protected, please provide a decryption password." + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "invalidMasterPassword": { + "message": "Invalid master password." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "ssoKeyConnectorError": { + "message": "Key Connector error: make sure Key Connector is available and working correctly." + } +} diff --git a/apps/cli/src/models/request/organizationCollectionRequest.ts b/apps/cli/src/models/request/organizationCollectionRequest.ts new file mode 100644 index 0000000000..71106ef70b --- /dev/null +++ b/apps/cli/src/models/request/organizationCollectionRequest.ts @@ -0,0 +1,16 @@ +import { CollectionExport } from "jslib-common/models/export/collectionExport"; + +import { SelectionReadOnly } from "../selectionReadOnly"; + +export class OrganizationCollectionRequest extends CollectionExport { + static template(): OrganizationCollectionRequest { + const req = new OrganizationCollectionRequest(); + req.organizationId = "00000000-0000-0000-0000-000000000000"; + req.name = "Collection name"; + req.externalId = null; + req.groups = [SelectionReadOnly.template(), SelectionReadOnly.template()]; + return req; + } + + groups: SelectionReadOnly[]; +} diff --git a/apps/cli/src/models/response/attachmentResponse.ts b/apps/cli/src/models/response/attachmentResponse.ts new file mode 100644 index 0000000000..d67cfc9c2d --- /dev/null +++ b/apps/cli/src/models/response/attachmentResponse.ts @@ -0,0 +1,17 @@ +import { AttachmentView } from "jslib-common/models/view/attachmentView"; + +export class AttachmentResponse { + id: string; + fileName: string; + size: string; + sizeName: string; + url: string; + + constructor(o: AttachmentView) { + this.id = o.id; + this.fileName = o.fileName; + this.size = o.size; + this.sizeName = o.sizeName; + this.url = o.url; + } +} diff --git a/apps/cli/src/models/response/cipherResponse.ts b/apps/cli/src/models/response/cipherResponse.ts new file mode 100644 index 0000000000..3c61a5347b --- /dev/null +++ b/apps/cli/src/models/response/cipherResponse.ts @@ -0,0 +1,33 @@ +import { CipherType } from "jslib-common/enums/cipherType"; +import { CipherWithIdExport } from "jslib-common/models/export/cipherWithIdsExport"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +import { AttachmentResponse } from "./attachmentResponse"; +import { LoginResponse } from "./loginResponse"; +import { PasswordHistoryResponse } from "./passwordHistoryResponse"; + +export class CipherResponse extends CipherWithIdExport implements BaseResponse { + object: string; + attachments: AttachmentResponse[]; + revisionDate: Date; + deletedDate: Date; + passwordHistory: PasswordHistoryResponse[]; + + constructor(o: CipherView) { + super(); + this.object = "item"; + this.build(o); + if (o.attachments != null) { + this.attachments = o.attachments.map((a) => new AttachmentResponse(a)); + } + this.revisionDate = o.revisionDate; + this.deletedDate = o.deletedDate; + if (o.passwordHistory != null) { + this.passwordHistory = o.passwordHistory.map((h) => new PasswordHistoryResponse(h)); + } + if (o.type === CipherType.Login && o.login != null) { + this.login = new LoginResponse(o.login); + } + } +} diff --git a/apps/cli/src/models/response/collectionResponse.ts b/apps/cli/src/models/response/collectionResponse.ts new file mode 100644 index 0000000000..6a7228b237 --- /dev/null +++ b/apps/cli/src/models/response/collectionResponse.ts @@ -0,0 +1,13 @@ +import { CollectionWithIdExport } from "jslib-common/models/export/collectionWithIdExport"; +import { CollectionView } from "jslib-common/models/view/collectionView"; +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +export class CollectionResponse extends CollectionWithIdExport implements BaseResponse { + object: string; + + constructor(o: CollectionView) { + super(); + this.object = "collection"; + this.build(o); + } +} diff --git a/apps/cli/src/models/response/folderResponse.ts b/apps/cli/src/models/response/folderResponse.ts new file mode 100644 index 0000000000..f1bc18eb31 --- /dev/null +++ b/apps/cli/src/models/response/folderResponse.ts @@ -0,0 +1,13 @@ +import { FolderWithIdExport } from "jslib-common/models/export/folderWithIdExport"; +import { FolderView } from "jslib-common/models/view/folderView"; +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +export class FolderResponse extends FolderWithIdExport implements BaseResponse { + object: string; + + constructor(o: FolderView) { + super(); + this.object = "folder"; + this.build(o); + } +} diff --git a/apps/cli/src/models/response/loginResponse.ts b/apps/cli/src/models/response/loginResponse.ts new file mode 100644 index 0000000000..226ca4e8c5 --- /dev/null +++ b/apps/cli/src/models/response/loginResponse.ts @@ -0,0 +1,11 @@ +import { LoginExport } from "jslib-common/models/export/loginExport"; +import { LoginView } from "jslib-common/models/view/loginView"; + +export class LoginResponse extends LoginExport { + passwordRevisionDate: Date; + + constructor(o: LoginView) { + super(o); + this.passwordRevisionDate = o.passwordRevisionDate != null ? o.passwordRevisionDate : null; + } +} diff --git a/apps/cli/src/models/response/organizationCollectionResponse.ts b/apps/cli/src/models/response/organizationCollectionResponse.ts new file mode 100644 index 0000000000..66cb2ab90e --- /dev/null +++ b/apps/cli/src/models/response/organizationCollectionResponse.ts @@ -0,0 +1,15 @@ +import { CollectionView } from "jslib-common/models/view/collectionView"; + +import { SelectionReadOnly } from "../selectionReadOnly"; + +import { CollectionResponse } from "./collectionResponse"; + +export class OrganizationCollectionResponse extends CollectionResponse { + groups: SelectionReadOnly[]; + + constructor(o: CollectionView, groups: SelectionReadOnly[]) { + super(o); + this.object = "org-collection"; + this.groups = groups; + } +} diff --git a/apps/cli/src/models/response/organizationResponse.ts b/apps/cli/src/models/response/organizationResponse.ts new file mode 100644 index 0000000000..7ca1e96234 --- /dev/null +++ b/apps/cli/src/models/response/organizationResponse.ts @@ -0,0 +1,22 @@ +import { OrganizationUserStatusType } from "jslib-common/enums/organizationUserStatusType"; +import { OrganizationUserType } from "jslib-common/enums/organizationUserType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +export class OrganizationResponse implements BaseResponse { + object: string; + id: string; + name: string; + status: OrganizationUserStatusType; + type: OrganizationUserType; + enabled: boolean; + + constructor(o: Organization) { + this.object = "organization"; + this.id = o.id; + this.name = o.name; + this.status = o.status; + this.type = o.type; + this.enabled = o.enabled; + } +} diff --git a/apps/cli/src/models/response/organizationUserResponse.ts b/apps/cli/src/models/response/organizationUserResponse.ts new file mode 100644 index 0000000000..6a200a8735 --- /dev/null +++ b/apps/cli/src/models/response/organizationUserResponse.ts @@ -0,0 +1,17 @@ +import { OrganizationUserStatusType } from "jslib-common/enums/organizationUserStatusType"; +import { OrganizationUserType } from "jslib-common/enums/organizationUserType"; +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +export class OrganizationUserResponse implements BaseResponse { + object: string; + id: string; + email: string; + name: string; + status: OrganizationUserStatusType; + type: OrganizationUserType; + twoFactorEnabled: boolean; + + constructor() { + this.object = "org-member"; + } +} diff --git a/apps/cli/src/models/response/passwordHistoryResponse.ts b/apps/cli/src/models/response/passwordHistoryResponse.ts new file mode 100644 index 0000000000..628ed13f84 --- /dev/null +++ b/apps/cli/src/models/response/passwordHistoryResponse.ts @@ -0,0 +1,11 @@ +import { PasswordHistoryView } from "jslib-common/models/view/passwordHistoryView"; + +export class PasswordHistoryResponse { + lastUsedDate: Date; + password: string; + + constructor(o: PasswordHistoryView) { + this.lastUsedDate = o.lastUsedDate; + this.password = o.password; + } +} diff --git a/apps/cli/src/models/response/sendAccessResponse.ts b/apps/cli/src/models/response/sendAccessResponse.ts new file mode 100644 index 0000000000..40b5d2d7da --- /dev/null +++ b/apps/cli/src/models/response/sendAccessResponse.ts @@ -0,0 +1,40 @@ +import { SendType } from "jslib-common/enums/sendType"; +import { SendAccessView } from "jslib-common/models/view/sendAccessView"; +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +import { SendFileResponse } from "./sendFileResponse"; +import { SendTextResponse } from "./sendTextResponse"; + +export class SendAccessResponse implements BaseResponse { + static template(): SendAccessResponse { + const req = new SendAccessResponse(); + req.name = "Send name"; + req.type = SendType.Text; + req.text = null; + req.file = null; + return req; + } + + object = "send-access"; + id: string; + name: string; + type: SendType; + text: SendTextResponse; + file: SendFileResponse; + + constructor(o?: SendAccessView) { + if (o == null) { + return; + } + this.id = o.id; + this.name = o.name; + this.type = o.type; + + if (o.type === SendType.Text && o.text != null) { + this.text = new SendTextResponse(o.text); + } + if (o.type === SendType.File && o.file != null) { + this.file = new SendFileResponse(o.file); + } + } +} diff --git a/apps/cli/src/models/response/sendFileResponse.ts b/apps/cli/src/models/response/sendFileResponse.ts new file mode 100644 index 0000000000..384646167a --- /dev/null +++ b/apps/cli/src/models/response/sendFileResponse.ts @@ -0,0 +1,36 @@ +import { SendFileView } from "jslib-common/models/view/sendFileView"; + +export class SendFileResponse { + static template(fileName = "file attachment location"): SendFileResponse { + const req = new SendFileResponse(); + req.fileName = fileName; + return req; + } + + static toView(file: SendFileResponse, view = new SendFileView()) { + if (file == null) { + return null; + } + + view.id = file.id; + view.size = file.size; + view.sizeName = file.sizeName; + view.fileName = file.fileName; + return view; + } + + id: string; + size: string; + sizeName: string; + fileName: string; + + constructor(o?: SendFileView) { + if (o == null) { + return; + } + this.id = o.id; + this.size = o.size; + this.sizeName = o.sizeName; + this.fileName = o.fileName; + } +} diff --git a/apps/cli/src/models/response/sendResponse.ts b/apps/cli/src/models/response/sendResponse.ts new file mode 100644 index 0000000000..c41e7aaceb --- /dev/null +++ b/apps/cli/src/models/response/sendResponse.ts @@ -0,0 +1,123 @@ +import { SendType } from "jslib-common/enums/sendType"; +import { Utils } from "jslib-common/misc/utils"; +import { SendView } from "jslib-common/models/view/sendView"; +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +import { SendFileResponse } from "./sendFileResponse"; +import { SendTextResponse } from "./sendTextResponse"; + +const dateProperties: string[] = [ + Utils.nameOf("deletionDate"), + Utils.nameOf("expirationDate"), +]; + +export class SendResponse implements BaseResponse { + static template(sendType?: SendType, deleteInDays = 7): SendResponse { + const req = new SendResponse(); + req.name = "Send name"; + req.notes = "Some notes about this send."; + req.type = sendType === SendType.File ? SendType.File : SendType.Text; + req.text = sendType === SendType.Text ? SendTextResponse.template() : null; + req.file = sendType === SendType.File ? SendFileResponse.template() : null; + req.maxAccessCount = null; + req.deletionDate = this.getStandardDeletionDate(deleteInDays); + req.expirationDate = null; + req.password = null; + req.disabled = false; + req.hideEmail = false; + return req; + } + + static toView(send: SendResponse, view = new SendView()): SendView { + if (send == null) { + return null; + } + + view.id = send.id; + view.accessId = send.accessId; + view.name = send.name; + view.notes = send.notes; + view.key = send.key == null ? null : Utils.fromB64ToArray(send.key); + view.type = send.type; + view.file = SendFileResponse.toView(send.file); + view.text = SendTextResponse.toView(send.text); + view.maxAccessCount = send.maxAccessCount; + view.accessCount = send.accessCount; + view.revisionDate = send.revisionDate; + view.deletionDate = send.deletionDate; + view.expirationDate = send.expirationDate; + view.password = send.password; + view.disabled = send.disabled; + view.hideEmail = send.hideEmail; + return view; + } + + static fromJson(json: string) { + return JSON.parse(json, (key, value) => { + if (dateProperties.includes(key)) { + return value == null ? null : new Date(value); + } + return value; + }); + } + + private static getStandardDeletionDate(days: number) { + const d = new Date(); + d.setTime(d.getTime() + days * 86400000); // ms per day + return d; + } + + object = "send"; + id: string; + accessId: string; + accessUrl: string; + name: string; + notes: string; + key: string; + type: SendType; + text: SendTextResponse; + file: SendFileResponse; + maxAccessCount?: number; + accessCount: number; + revisionDate: Date; + deletionDate: Date; + expirationDate: Date; + password: string; + passwordSet: boolean; + disabled: boolean; + hideEmail: boolean; + + constructor(o?: SendView, webVaultUrl?: string) { + if (o == null) { + return; + } + this.id = o.id; + this.accessId = o.accessId; + let sendLinkBaseUrl = webVaultUrl; + if (sendLinkBaseUrl == null) { + sendLinkBaseUrl = "https://send.bitwarden.com/#"; + } else { + sendLinkBaseUrl += "/#/send/"; + } + this.accessUrl = sendLinkBaseUrl + this.accessId + "/" + o.urlB64Key; + this.name = o.name; + this.notes = o.notes; + this.key = Utils.fromBufferToB64(o.key); + this.type = o.type; + this.maxAccessCount = o.maxAccessCount; + this.accessCount = o.accessCount; + this.revisionDate = o.revisionDate; + this.deletionDate = o.deletionDate; + this.expirationDate = o.expirationDate; + this.passwordSet = o.password != null; + this.disabled = o.disabled; + this.hideEmail = o.hideEmail; + + if (o.type === SendType.Text && o.text != null) { + this.text = new SendTextResponse(o.text); + } + if (o.type === SendType.File && o.file != null) { + this.file = new SendFileResponse(o.file); + } + } +} diff --git a/apps/cli/src/models/response/sendTextResponse.ts b/apps/cli/src/models/response/sendTextResponse.ts new file mode 100644 index 0000000000..68decd9fb7 --- /dev/null +++ b/apps/cli/src/models/response/sendTextResponse.ts @@ -0,0 +1,30 @@ +import { SendTextView } from "jslib-common/models/view/sendTextView"; + +export class SendTextResponse { + static template(text = "Text contained in the send.", hidden = false): SendTextResponse { + const req = new SendTextResponse(); + req.text = text; + req.hidden = hidden; + return req; + } + + static toView(text: SendTextResponse, view = new SendTextView()) { + if (text == null) { + return null; + } + + view.text = text.text; + view.hidden = text.hidden; + return view; + } + text: string; + hidden: boolean; + + constructor(o?: SendTextView) { + if (o == null) { + return; + } + this.text = o.text; + this.hidden = o.hidden; + } +} diff --git a/apps/cli/src/models/response/templateResponse.ts b/apps/cli/src/models/response/templateResponse.ts new file mode 100644 index 0000000000..aa494af342 --- /dev/null +++ b/apps/cli/src/models/response/templateResponse.ts @@ -0,0 +1,11 @@ +import { BaseResponse } from "jslib-node/cli/models/response/baseResponse"; + +export class TemplateResponse implements BaseResponse { + object: string; + template: any; + + constructor(template: any) { + this.object = "template"; + this.template = template; + } +} diff --git a/apps/cli/src/models/selectionReadOnly.ts b/apps/cli/src/models/selectionReadOnly.ts new file mode 100644 index 0000000000..48c4399120 --- /dev/null +++ b/apps/cli/src/models/selectionReadOnly.ts @@ -0,0 +1,15 @@ +export class SelectionReadOnly { + static template(): SelectionReadOnly { + return new SelectionReadOnly("00000000-0000-0000-0000-000000000000", false, false); + } + + id: string; + readOnly: boolean; + hidePasswords: boolean; + + constructor(id: string, readOnly: boolean, hidePasswords: boolean) { + this.id = id; + this.readOnly = readOnly; + this.hidePasswords = hidePasswords || false; + } +} diff --git a/apps/cli/src/program.ts b/apps/cli/src/program.ts new file mode 100644 index 0000000000..4299eb34d3 --- /dev/null +++ b/apps/cli/src/program.ts @@ -0,0 +1,546 @@ +import * as chalk from "chalk"; +import * as program from "commander"; + +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions"; +import { BaseProgram } from "jslib-node/cli/baseProgram"; +import { LogoutCommand } from "jslib-node/cli/commands/logout.command"; +import { UpdateCommand } from "jslib-node/cli/commands/update.command"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +import { Main } from "./bw"; +import { CompletionCommand } from "./commands/completion.command"; +import { ConfigCommand } from "./commands/config.command"; +import { EncodeCommand } from "./commands/encode.command"; +import { GenerateCommand } from "./commands/generate.command"; +import { LockCommand } from "./commands/lock.command"; +import { LoginCommand } from "./commands/login.command"; +import { ServeCommand } from "./commands/serve.command"; +import { StatusCommand } from "./commands/status.command"; +import { SyncCommand } from "./commands/sync.command"; +import { UnlockCommand } from "./commands/unlock.command"; +import { TemplateResponse } from "./models/response/templateResponse"; +import { CliUtils } from "./utils"; + +const writeLn = CliUtils.writeLn; + +export class Program extends BaseProgram { + constructor(protected main: Main) { + super(main.stateService, writeLn); + } + + async register() { + program + .option("--pretty", "Format output. JSON is tabbed with two spaces.") + .option("--raw", "Return raw output instead of a descriptive message.") + .option("--response", "Return a JSON formatted version of response output.") + .option("--cleanexit", "Exit with a success exit code (0) unless an error is thrown.") + .option("--quiet", "Don't return anything to stdout.") + .option("--nointeraction", "Do not prompt for interactive user input.") + .option("--session ", "Pass session key instead of reading from env.") + .version(await this.main.platformUtilsService.getApplicationVersion(), "-v, --version"); + + program.on("option:pretty", () => { + process.env.BW_PRETTY = "true"; + }); + + program.on("option:raw", () => { + process.env.BW_RAW = "true"; + }); + + program.on("option:quiet", () => { + process.env.BW_QUIET = "true"; + }); + + program.on("option:response", () => { + process.env.BW_RESPONSE = "true"; + }); + + program.on("option:cleanexit", () => { + process.env.BW_CLEANEXIT = "true"; + }); + + program.on("option:nointeraction", () => { + process.env.BW_NOINTERACTION = "true"; + }); + + program.on("option:session", (key) => { + process.env.BW_SESSION = key; + }); + + program.on("command:*", () => { + writeLn(chalk.redBright("Invalid command: " + program.args.join(" ")), false, true); + writeLn("See --help for a list of available commands.", true, true); + process.exitCode = 1; + }); + + program.on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw login"); + writeLn(" bw lock"); + writeLn(" bw unlock myPassword321"); + writeLn(" bw list --help"); + writeLn(" bw list items --search google"); + writeLn(" bw get item 99ee88d2-6046-4ea7-92c2-acac464b1412"); + writeLn(" bw get password google.com"); + writeLn(' echo \'{"name":"My Folder"}\' | bw encode'); + writeLn(" bw create folder eyJuYW1lIjoiTXkgRm9sZGVyIn0K"); + writeLn( + " bw edit folder c7c7b60b-9c61-40f2-8ccd-36c49595ed72 eyJuYW1lIjoiTXkgRm9sZGVyMiJ9Cg==" + ); + writeLn(" bw delete item 99ee88d2-6046-4ea7-92c2-acac464b1412"); + writeLn(" bw generate -lusn --length 18"); + writeLn(" bw config server https://bitwarden.example.com"); + writeLn(" bw send -f ./file.ext"); + writeLn(' bw send "text to send"'); + writeLn(' echo "text to send" | bw send'); + writeLn( + " bw receive https://vault.bitwarden.com/#/send/rg3iuoS_Akm2gqy6ADRHmg/Ht7dYjsqjmgqUM3rjzZDSQ" + ); + writeLn("", true); + }); + + program + .command("login [email] [password]") + .description("Log into a user account.") + .option("--method ", "Two-step login method.") + .option("--code ", "Two-step login code.") + .option("--sso", "Log in with Single-Sign On.") + .option("--apikey", "Log in with an Api Key.") + .option("--passwordenv ", "Environment variable storing your password") + .option( + "--passwordfile ", + "Path to a file containing your password as its first line" + ) + .option("--check", "Check login status.", async () => { + const authed = await this.main.stateService.getIsAuthenticated(); + if (authed) { + const res = new MessageResponse("You are logged in!", null); + this.processResponse(Response.success(res), true); + } + this.processResponse(Response.error("You are not logged in."), true); + }) + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" See docs for valid `method` enum values."); + writeLn(""); + writeLn(" Pass `--raw` option to only return the session key."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw login"); + writeLn(" bw login john@example.com myPassword321 --raw"); + writeLn(" bw login john@example.com myPassword321 --method 1 --code 249213"); + writeLn(" bw login --sso"); + writeLn("", true); + }) + .action(async (email: string, password: string, options: program.OptionValues) => { + if (!options.check) { + await this.exitIfAuthed(); + const command = new LoginCommand( + this.main.authService, + this.main.apiService, + this.main.cryptoFunctionService, + this.main.i18nService, + this.main.environmentService, + this.main.passwordGenerationService, + this.main.platformUtilsService, + this.main.stateService, + this.main.cryptoService, + this.main.policyService, + this.main.twoFactorService, + this.main.syncService, + this.main.keyConnectorService, + async () => await this.main.logout() + ); + const response = await command.run(email, password, options); + this.processResponse(response); + } + }); + + program + .command("logout") + .description("Log out of the current user account.") + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw logout"); + writeLn("", true); + }) + .action(async (cmd) => { + await this.exitIfNotAuthed(); + const command = new LogoutCommand( + this.main.authService, + this.main.i18nService, + async () => await this.main.logout() + ); + const response = await command.run(); + this.processResponse(response); + }); + + program + .command("lock") + .description("Lock the vault and destroy active session keys.") + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw lock"); + writeLn("", true); + }) + .action(async (cmd) => { + await this.exitIfNotAuthed(); + + if (await this.main.keyConnectorService.getUsesKeyConnector()) { + const logoutCommand = new LogoutCommand( + this.main.authService, + this.main.i18nService, + async () => await this.main.logout() + ); + await logoutCommand.run(); + this.processResponse( + Response.error( + "You cannot lock your vault because you are using Key Connector. " + + "To protect your vault, you have been logged out." + ), + true + ); + return; + } + + const command = new LockCommand(this.main.vaultTimeoutService); + const response = await command.run(); + this.processResponse(response); + }); + + program + .command("unlock [password]") + .description("Unlock the vault and return a new session key.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" After unlocking, any previous session keys will no longer be valid."); + writeLn(""); + writeLn(" Pass `--raw` option to only return the session key."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw unlock"); + writeLn(" bw unlock myPassword321"); + writeLn(" bw unlock myPassword321 --raw"); + writeLn("", true); + }) + .option("--check", "Check lock status.", async () => { + await this.exitIfNotAuthed(); + + const authStatus = await this.main.authService.getAuthStatus(); + if (authStatus === AuthenticationStatus.Unlocked) { + const res = new MessageResponse("Vault is unlocked!", null); + this.processResponse(Response.success(res), true); + } else { + this.processResponse(Response.error("Vault is locked."), true); + } + }) + .option("--passwordenv ", "Environment variable storing your password") + .option( + "--passwordfile ", + "Path to a file containing your password as its first line" + ) + .action(async (password, cmd) => { + if (!cmd.check) { + await this.exitIfNotAuthed(); + const command = new UnlockCommand( + this.main.cryptoService, + this.main.stateService, + this.main.cryptoFunctionService, + this.main.apiService, + this.main.logService, + this.main.keyConnectorService, + this.main.environmentService, + this.main.syncService, + async () => await this.main.logout() + ); + const response = await command.run(password, cmd); + this.processResponse(response); + } + }); + + program + .command("sync") + .description("Pull the latest vault data from server.") + .option("-f, --force", "Force a full sync.") + .option("--last", "Get the last sync date.") + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw sync"); + writeLn(" bw sync -f"); + writeLn(" bw sync --last"); + writeLn("", true); + }) + .action(async (cmd) => { + await this.exitIfLocked(); + const command = new SyncCommand(this.main.syncService); + const response = await command.run(cmd); + this.processResponse(response); + }); + + program + .command("generate") + .description("Generate a password/passphrase.") + .option("-u, --uppercase", "Include uppercase characters.") + .option("-l, --lowercase", "Include lowercase characters.") + .option("-n, --number", "Include numeric characters.") + .option("-s, --special", "Include special characters.") + .option("-p, --passphrase", "Generate a passphrase.") + .option("--length ", "Length of the password.") + .option("--words ", "Number of words.") + .option("--separator ", "Word separator.") + .option("-c, --capitalize", "Title case passphrase.") + .option("--includeNumber", "Passphrase includes number.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" Default options are `-uln --length 14`."); + writeLn(""); + writeLn(" Minimum `length` is 5."); + writeLn(""); + writeLn(" Minimum `words` is 3."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw generate"); + writeLn(" bw generate -u -l --length 18"); + writeLn(" bw generate -ulns --length 25"); + writeLn(" bw generate -ul"); + writeLn(" bw generate -p --separator _"); + writeLn(" bw generate -p --words 5 --separator space"); + writeLn("", true); + }) + .action(async (options) => { + const command = new GenerateCommand( + this.main.passwordGenerationService, + this.main.stateService + ); + const response = await command.run(options); + this.processResponse(response); + }); + + program + .command("encode") + .description("Base 64 encode stdin.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" Use to create `encodedJson` for `create` and `edit` commands."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(' echo \'{"name":"My Folder"}\' | bw encode'); + writeLn("", true); + }) + .action(async () => { + const command = new EncodeCommand(); + const response = await command.run(); + this.processResponse(response); + }); + + program + .command("config [value]") + .description("Configure CLI settings.") + .option( + "--web-vault ", + "Provides a custom web vault URL that differs from the base URL." + ) + .option("--api ", "Provides a custom API URL that differs from the base URL.") + .option("--identity ", "Provides a custom identity URL that differs from the base URL.") + .option( + "--icons ", + "Provides a custom icons service URL that differs from the base URL." + ) + .option( + "--notifications ", + "Provides a custom notifications URL that differs from the base URL." + ) + .option("--events ", "Provides a custom events URL that differs from the base URL.") + .option("--key-connector ", "Provides the URL for your Key Connector server.") + .on("--help", () => { + writeLn("\n Settings:"); + writeLn(""); + writeLn(" server - On-premises hosted installation URL."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw config server"); + writeLn(" bw config server https://bw.company.com"); + writeLn(" bw config server bitwarden.com"); + writeLn( + " bw config server --api http://localhost:4000 --identity http://localhost:33656" + ); + writeLn("", true); + }) + .action(async (setting, value, options) => { + const command = new ConfigCommand(this.main.environmentService); + const response = await command.run(setting, value, options); + this.processResponse(response); + }); + + program + .command("update") + .description("Check for updates.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" Returns the URL to download the newest version of this CLI tool."); + writeLn(""); + writeLn(" Use the `--raw` option to return only the download URL for the update."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw update"); + writeLn(" bw update --raw"); + writeLn("", true); + }) + .action(async () => { + const command = new UpdateCommand( + this.main.platformUtilsService, + this.main.i18nService, + "cli", + "bw", + true + ); + const response = await command.run(); + this.processResponse(response); + }); + + program + .command("completion") + .description("Generate shell completions.") + .option("--shell ", "Shell to generate completions for.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" Valid shells are `zsh`."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw completion --shell zsh"); + writeLn("", true); + }) + .action(async (options: program.OptionValues, cmd: program.Command) => { + const command = new CompletionCommand(); + const response = await command.run(options); + this.processResponse(response); + }); + + program + .command("status") + .description("Show server, last sync, user information, and vault status.") + .on("--help", () => { + writeLn(""); + writeLn(""); + writeLn(" Example return value:"); + writeLn(""); + writeLn(" {"); + writeLn(' "serverUrl": "https://bitwarden.example.com",'); + writeLn(' "lastSync": "2020-06-16T06:33:51.419Z",'); + writeLn(' "userEmail": "user@example.com,'); + writeLn(' "userId": "00000000-0000-0000-0000-000000000000",'); + writeLn(' "status": "locked"'); + writeLn(" }"); + writeLn(""); + writeLn(" Notes:"); + writeLn(""); + writeLn(" `status` is one of:"); + writeLn(" - `unauthenticated` when you are not logged in"); + writeLn(" - `locked` when you are logged in and the vault is locked"); + writeLn(" - `unlocked` when you are logged in and the vault is unlocked"); + writeLn("", true); + }) + .action(async () => { + const command = new StatusCommand( + this.main.environmentService, + this.main.syncService, + this.main.stateService, + this.main.authService + ); + const response = await command.run(); + this.processResponse(response); + }); + + if (CliUtils.flagEnabled("serve")) { + program + .command("serve") + .description("Start a RESTful API webserver.") + .option("--hostname ", "The hostname to bind your API webserver to.") + .option("--port ", "The port to run your API webserver on.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" Default hostname is `localhost`."); + writeLn(" Use hostname `all` for no hostname binding."); + writeLn(" Default port is `8087`."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw serve"); + writeLn(" bw serve --port 8080"); + writeLn(" bw serve --hostname bwapi.mydomain.com --port 80"); + writeLn("", true); + }) + .action(async (cmd) => { + await this.exitIfNotAuthed(); + const command = new ServeCommand(this.main); + await command.run(cmd); + }); + } + } + + protected processResponse(response: Response, exitImmediately = false) { + super.processResponse(response, exitImmediately, () => { + if (response.data.object === "template") { + return this.getJson((response.data as TemplateResponse).template); + } + return null; + }); + } + + protected async exitIfLocked() { + await this.exitIfNotAuthed(); + if (await this.main.cryptoService.hasKeyInMemory()) { + return; + } else if (await this.main.cryptoService.hasKeyStored(KeySuffixOptions.Auto)) { + // load key into memory + await this.main.cryptoService.getKey(); + } else if (process.env.BW_NOINTERACTION !== "true") { + // must unlock + if (await this.main.keyConnectorService.getUsesKeyConnector()) { + const response = Response.error( + "Your vault is locked. You must unlock your vault using your session key.\n" + + "If you do not have your session key, you can get a new one by logging out and logging in again." + ); + this.processResponse(response, true); + } else { + const command = new UnlockCommand( + this.main.cryptoService, + this.main.stateService, + this.main.cryptoFunctionService, + this.main.apiService, + this.main.logService, + this.main.keyConnectorService, + this.main.environmentService, + this.main.syncService, + this.main.logout + ); + const response = await command.run(null, null); + if (!response.success) { + this.processResponse(response, true); + } + } + } else { + this.processResponse(Response.error("Vault is locked."), true); + } + } +} diff --git a/apps/cli/src/send.program.ts b/apps/cli/src/send.program.ts new file mode 100644 index 0000000000..15d1d766b9 --- /dev/null +++ b/apps/cli/src/send.program.ts @@ -0,0 +1,334 @@ +import * as fs from "fs"; +import * as path from "path"; + +import * as chalk from "chalk"; +import * as program from "commander"; + +import { SendType } from "jslib-common/enums/sendType"; +import { Utils } from "jslib-common/misc/utils"; +import { Response } from "jslib-node/cli/models/response"; + +import { Main } from "./bw"; +import { GetCommand } from "./commands/get.command"; +import { SendCreateCommand } from "./commands/send/create.command"; +import { SendDeleteCommand } from "./commands/send/delete.command"; +import { SendEditCommand } from "./commands/send/edit.command"; +import { SendGetCommand } from "./commands/send/get.command"; +import { SendListCommand } from "./commands/send/list.command"; +import { SendReceiveCommand } from "./commands/send/receive.command"; +import { SendRemovePasswordCommand } from "./commands/send/removePassword.command"; +import { SendFileResponse } from "./models/response/sendFileResponse"; +import { SendResponse } from "./models/response/sendResponse"; +import { SendTextResponse } from "./models/response/sendTextResponse"; +import { Program } from "./program"; +import { CliUtils } from "./utils"; + +const writeLn = CliUtils.writeLn; + +export class SendProgram extends Program { + constructor(main: Main) { + super(main); + } + + async register() { + program.addCommand(this.sendCommand()); + // receive is accessible both at `bw receive` and `bw send receive` + program.addCommand(this.receiveCommand()); + } + + private sendCommand(): program.Command { + return new program.Command("send") + .arguments("") + .description( + "Work with Bitwarden sends. A Send can be quickly created using this command or subcommands can be used to fine-tune the Send", + { + data: "The data to Send. Specify as a filepath with the --file option", + } + ) + .option("-f, --file", "Specifies that is a filepath") + .option( + "-d, --deleteInDays ", + "The number of days in the future to set deletion date, defaults to 7", + "7" + ) + .option("-a, --maxAccessCount ", "The amount of max possible accesses.") + .option("--hidden", "Hide in web by default. Valid only if --file is not set.") + .option( + "-n, --name ", + "The name of the Send. Defaults to a guid for text Sends and the filename for files." + ) + .option("--notes ", "Notes to add to the Send.") + .option( + "--fullObject", + "Specifies that the full Send object should be returned rather than just the access url." + ) + .addCommand(this.listCommand()) + .addCommand(this.templateCommand()) + .addCommand(this.getCommand()) + .addCommand(this.receiveCommand()) + .addCommand(this.createCommand()) + .addCommand(this.editCommand()) + .addCommand(this.removePasswordCommand()) + .addCommand(this.deleteCommand()) + .action(async (data: string, options: program.OptionValues) => { + const encodedJson = this.makeSendJson(data, options); + + let response: Response; + if (encodedJson instanceof Response) { + response = encodedJson; + } else { + response = await this.runCreate(encodedJson, options); + } + + this.processResponse(response); + }); + } + + private receiveCommand(): program.Command { + return new program.Command("receive") + .arguments("") + .description("Access a Bitwarden Send from a url") + .option("--password ", "Password needed to access the Send.") + .option("--passwordenv ", "Environment variable storing the Send's password") + .option( + "--passwordfile ", + "Path to a file containing the Sends password as its first line" + ) + .option("--obj", "Return the Send's json object rather than the Send's content") + .option("--output ", "Specify a file path to save a File-type Send to") + .on("--help", () => { + writeLn(""); + writeLn( + "If a password is required, the provided password is used or the user is prompted." + ); + writeLn("", true); + }) + .action(async (url: string, options: program.OptionValues) => { + const cmd = new SendReceiveCommand( + this.main.apiService, + this.main.cryptoService, + this.main.cryptoFunctionService, + this.main.platformUtilsService, + this.main.environmentService + ); + const response = await cmd.run(url, options); + this.processResponse(response); + }); + } + + private listCommand(): program.Command { + return new program.Command("list") + + .description("List all the Sends owned by you") + .on("--help", () => { + writeLn(chalk("This is in the list command")); + }) + .action(async (options: program.OptionValues) => { + await this.exitIfLocked(); + const cmd = new SendListCommand( + this.main.sendService, + this.main.environmentService, + this.main.searchService + ); + const response = await cmd.run(options); + this.processResponse(response); + }); + } + + private templateCommand(): program.Command { + return new program.Command("template") + .arguments("") + .description("Get json templates for send objects", { + object: "Valid objects are: send, send.text, send.file", + }) + .action(async (object) => { + const cmd = new GetCommand( + this.main.cipherService, + this.main.folderService, + this.main.collectionService, + this.main.totpService, + this.main.auditService, + this.main.cryptoService, + this.main.stateService, + this.main.searchService, + this.main.apiService, + this.main.organizationService + ); + const response = await cmd.run("template", object, null); + this.processResponse(response); + }); + } + + private getCommand(): program.Command { + return new program.Command("get") + .arguments("") + .description("Get Sends owned by you.") + .option("--output ", "Output directory or filename for attachment.") + .option("--text", "Specifies to return the text content of a Send") + .on("--help", () => { + writeLn(""); + writeLn(" Id:"); + writeLn(""); + writeLn(" Search term or Send's globally unique `id`."); + writeLn(""); + writeLn(" If raw output is specified and no output filename or directory is given for"); + writeLn(" an attachment query, the attachment content is written to stdout."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw get send searchText"); + writeLn(" bw get send id"); + writeLn(" bw get send searchText --text"); + writeLn(" bw get send searchText --file"); + writeLn(" bw get send searchText --file --output ../Photos/photo.jpg"); + writeLn(" bw get send searchText --file --raw"); + writeLn("", true); + }) + .action(async (id: string, options: program.OptionValues) => { + await this.exitIfLocked(); + const cmd = new SendGetCommand( + this.main.sendService, + this.main.environmentService, + this.main.searchService, + this.main.cryptoService + ); + const response = await cmd.run(id, options); + this.processResponse(response); + }); + } + + private createCommand(): program.Command { + return new program.Command("create") + .arguments("[encodedJson]") + .description("create a Send", { + encodedJson: "JSON object to upload. Can also be piped in through stdin.", + }) + .option("--file ", "file to Send. Can also be specified in parent's JSON.") + .option("--text ", "text to Send. Can also be specified in parent's JSON.") + .option("--hidden", "text hidden flag. Valid only with the --text option.") + .option( + "--password ", + "optional password to access this Send. Can also be specified in JSON" + ) + .on("--help", () => { + writeLn(""); + writeLn("Note:"); + writeLn(" Options specified in JSON take precedence over command options"); + writeLn("", true); + }) + .action( + async ( + encodedJson: string, + options: program.OptionValues, + args: { parent: program.Command } + ) => { + // Work-around to support `--fullObject` option for `send create --fullObject` + // Calling `option('--fullObject', ...)` above won't work due to Commander doesn't like same option + // to be defind on both parent-command and sub-command + const { fullObject = false } = args.parent.opts(); + const mergedOptions = { + ...options, + fullObject: fullObject, + }; + + const response = await this.runCreate(encodedJson, mergedOptions); + this.processResponse(response); + } + ); + } + + private editCommand(): program.Command { + return new program.Command("edit") + .arguments("[encodedJson]") + .description("edit a Send", { + encodedJson: + "Updated JSON object to save. If not provided, encodedJson is read from stdin.", + }) + .option("--itemid ", "Overrides the itemId provided in [encodedJson]") + .on("--help", () => { + writeLn(""); + writeLn("Note:"); + writeLn(" You cannot update a File-type Send's file. Just delete and remake it"); + writeLn("", true); + }) + .action(async (encodedJson: string, options: program.OptionValues) => { + await this.exitIfLocked(); + const getCmd = new SendGetCommand( + this.main.sendService, + this.main.environmentService, + this.main.searchService, + this.main.cryptoService + ); + const cmd = new SendEditCommand(this.main.sendService, this.main.stateService, getCmd); + const response = await cmd.run(encodedJson, options); + this.processResponse(response); + }); + } + + private deleteCommand(): program.Command { + return new program.Command("delete") + .arguments("") + .description("delete a Send", { + id: "The id of the Send to delete.", + }) + .action(async (id: string) => { + await this.exitIfLocked(); + const cmd = new SendDeleteCommand(this.main.sendService); + const response = await cmd.run(id); + this.processResponse(response); + }); + } + + private removePasswordCommand(): program.Command { + return new program.Command("remove-password") + .arguments("") + .description("removes the saved password from a Send.", { + id: "The id of the Send to alter.", + }) + .action(async (id: string) => { + await this.exitIfLocked(); + const cmd = new SendRemovePasswordCommand(this.main.sendService); + const response = await cmd.run(id); + this.processResponse(response); + }); + } + + private makeSendJson(data: string, options: program.OptionValues) { + let sendFile = null; + let sendText = null; + let name = Utils.newGuid(); + let type = SendType.Text; + if (options.file != null) { + data = path.resolve(data); + if (!fs.existsSync(data)) { + return Response.badRequest("data path does not exist"); + } + + sendFile = SendFileResponse.template(data); + name = path.basename(data); + type = SendType.File; + } else { + sendText = SendTextResponse.template(data, options.hidden); + } + + const template = Utils.assign(SendResponse.template(null, options.deleteInDays), { + name: options.name ?? name, + notes: options.notes, + file: sendFile, + text: sendText, + type: type, + }); + + return Buffer.from(JSON.stringify(template), "utf8").toString("base64"); + } + + private async runCreate(encodedJson: string, options: program.OptionValues) { + await this.exitIfLocked(); + const cmd = new SendCreateCommand( + this.main.sendService, + this.main.stateService, + this.main.environmentService + ); + return await cmd.run(encodedJson, options); + } +} diff --git a/apps/cli/src/services/i18n.service.ts b/apps/cli/src/services/i18n.service.ts new file mode 100644 index 0000000000..d408c4ef6f --- /dev/null +++ b/apps/cli/src/services/i18n.service.ts @@ -0,0 +1,20 @@ +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); + }); + + this.supportedTranslationLocales = ["en"]; + } +} diff --git a/apps/cli/src/services/lowdbStorage.service.ts b/apps/cli/src/services/lowdbStorage.service.ts new file mode 100644 index 0000000000..e46997d529 --- /dev/null +++ b/apps/cli/src/services/lowdbStorage.service.ts @@ -0,0 +1,40 @@ +import * as lock from "proper-lockfile"; +import { OperationOptions } from "retry"; + +import { LogService } from "jslib-common/abstractions/log.service"; +import { Utils } from "jslib-common/misc/utils"; +import { LowdbStorageService as LowdbStorageServiceBase } from "jslib-node/services/lowdbStorage.service"; + +const retries: OperationOptions = { + retries: 50, + minTimeout: 100, + maxTimeout: 250, + factor: 2, +}; + +export class LowdbStorageService extends LowdbStorageServiceBase { + constructor( + logService: LogService, + defaults?: any, + dir?: string, + allowCache = false, + private requireLock = false + ) { + super(logService, defaults, dir, allowCache); + } + + protected async lockDbFile(action: () => T): Promise { + if (this.requireLock && !Utils.isNullOrWhitespace(this.dataFilePath)) { + this.logService.info("acquiring db file lock"); + return await lock.lock(this.dataFilePath, { retries: retries }).then((release) => { + try { + return action(); + } finally { + release(); + } + }); + } else { + return action(); + } + } +} diff --git a/apps/cli/src/services/nodeEnvSecureStorage.service.ts b/apps/cli/src/services/nodeEnvSecureStorage.service.ts new file mode 100644 index 0000000000..facba943fc --- /dev/null +++ b/apps/cli/src/services/nodeEnvSecureStorage.service.ts @@ -0,0 +1,103 @@ +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { StorageService } from "jslib-common/abstractions/storage.service"; +import { Utils } from "jslib-common/misc/utils"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; + +export class NodeEnvSecureStorageService implements StorageService { + constructor( + private storageService: StorageService, + private logService: LogService, + private cryptoService: () => CryptoService + ) {} + + async get(key: string): Promise { + const value = await this.storageService.get(this.makeProtectedStorageKey(key)); + if (value == null) { + return null; + } + const obj = await this.decrypt(value); + return obj as any; + } + + async has(key: string): Promise { + return (await this.get(key)) != null; + } + + async save(key: string, obj: any): Promise { + if (obj == null) { + return this.remove(key); + } + + if (obj !== null && typeof obj !== "string") { + throw new Error("Only string storage is allowed."); + } + const protectedObj = await this.encrypt(obj); + await this.storageService.save(this.makeProtectedStorageKey(key), protectedObj); + } + + remove(key: string): Promise { + return this.storageService.remove(this.makeProtectedStorageKey(key)); + } + + private async encrypt(plainValue: string): Promise { + const sessionKey = this.getSessionKey(); + if (sessionKey == null) { + throw new Error("No session key available."); + } + const encValue = await this.cryptoService().encryptToBytes( + Utils.fromB64ToArray(plainValue).buffer, + sessionKey + ); + if (encValue == null) { + throw new Error("Value didn't encrypt."); + } + + return Utils.fromBufferToB64(encValue.buffer); + } + + private async decrypt(encValue: string): Promise { + try { + const sessionKey = this.getSessionKey(); + if (sessionKey == null) { + return null; + } + + const decValue = await this.cryptoService().decryptFromBytes( + Utils.fromB64ToArray(encValue).buffer, + sessionKey + ); + if (decValue == null) { + this.logService.info("Failed to decrypt."); + return null; + } + + return Utils.fromBufferToB64(decValue); + } catch (e) { + this.logService.info("Decrypt error."); + return null; + } + } + + private getSessionKey() { + try { + if (process.env.BW_SESSION != null) { + const sessionBuffer = Utils.fromB64ToArray(process.env.BW_SESSION).buffer; + if (sessionBuffer != null) { + const sessionKey = new SymmetricCryptoKey(sessionBuffer); + if (sessionBuffer != null) { + return sessionKey; + } + } + } + } catch (e) { + this.logService.info("Session key is invalid."); + } + + return null; + } + + private makeProtectedStorageKey(key: string) { + return "__PROTECTED__" + key; + } +} diff --git a/apps/cli/src/utils.ts b/apps/cli/src/utils.ts new file mode 100644 index 0000000000..deb4085398 --- /dev/null +++ b/apps/cli/src/utils.ts @@ -0,0 +1,270 @@ +import * as fs from "fs"; +import * as path from "path"; + +import * as inquirer from "inquirer"; +import * as JSZip from "jszip"; + +import { LogService } from "jslib-common/abstractions/log.service"; +import { NodeUtils } from "jslib-common/misc/nodeUtils"; +import { Utils } from "jslib-common/misc/utils"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CollectionView } from "jslib-common/models/view/collectionView"; +import { FolderView } from "jslib-common/models/view/folderView"; +import { Response } from "jslib-node/cli/models/response"; +import { MessageResponse } from "jslib-node/cli/models/response/messageResponse"; + +import { FlagName, Flags } from "./flags"; + +export class CliUtils { + static writeLn(s: string, finalLine = false, error = false) { + const stream = error ? process.stderr : process.stdout; + if (finalLine && (process.platform === "win32" || !stream.isTTY)) { + stream.write(s); + } else { + stream.write(s + "\n"); + } + } + + static readFile(input: string): Promise { + return new Promise((resolve, reject) => { + let p: string = null; + if (input != null && input !== "") { + const osInput = path.join(input); + if (osInput.indexOf(path.sep) === -1) { + p = path.join(process.cwd(), osInput); + } else { + p = osInput; + } + } else { + reject("You must specify a file path."); + } + fs.readFile(p, "utf8", (err, data) => { + if (err != null) { + reject(err.message); + } + resolve(data); + }); + }); + } + + static extract1PuxContent(input: string): Promise { + return new Promise((resolve, reject) => { + let p: string = null; + if (input != null && input !== "") { + const osInput = path.join(input); + if (osInput.indexOf(path.sep) === -1) { + p = path.join(process.cwd(), osInput); + } else { + p = osInput; + } + } else { + reject("You must specify a file path."); + } + fs.readFile(p, function (err, data) { + if (err) { + reject(err); + } + JSZip.loadAsync(data).then( + (zip) => { + resolve(zip.file("export.data").async("string")); + }, + (reason) => { + reject(reason); + } + ); + }); + }); + } + /** + * Save the given data to a file and determine the target file if necessary. + * If output is non-empty, it is used as target filename. Otherwise the target filename is + * built from the current working directory and the given defaultFileName. + * + * @param data to be written to the file. + * @param output file to write to or empty to choose automatically. + * @param defaultFileName to use when no explicit output filename is given. + * @return the chosen output file. + */ + static saveFile(data: string | Buffer, output: string, defaultFileName: string) { + let p: string = null; + let mkdir = false; + if (output != null && output !== "") { + const osOutput = path.join(output); + if (osOutput.indexOf(path.sep) === -1) { + p = path.join(process.cwd(), osOutput); + } else { + mkdir = true; + if (osOutput.endsWith(path.sep)) { + p = path.join(osOutput, defaultFileName); + } else { + p = osOutput; + } + } + } else { + p = path.join(process.cwd(), defaultFileName); + } + + p = path.resolve(p); + if (mkdir) { + const dir = p.substring(0, p.lastIndexOf(path.sep)); + if (!fs.existsSync(dir)) { + NodeUtils.mkdirpSync(dir, "700"); + } + } + + return new Promise((resolve, reject) => { + fs.writeFile(p, data, { encoding: "utf8", mode: 0o600 }, (err) => { + if (err != null) { + reject("Cannot save file to " + p); + } + resolve(p); + }); + }); + } + + /** + * Process the given data and write it to a file if possible. If the user requested RAW output and + * no output name is given, the file is directly written to stdout. The resulting Response contains + * an otherwise empty message then to prevent writing other information to stdout. + * + * If an output is given or no RAW output is requested, the rules from [saveFile] apply. + * + * @param data to be written to the file or stdout. + * @param output file to write to or empty to choose automatically. + * @param defaultFileName to use when no explicit output filename is given. + * @return an empty [Response] if written to stdout or a [Response] with the chosen output file otherwise. + */ + static async saveResultToFile(data: string | Buffer, output: string, defaultFileName: string) { + if ((output == null || output === "") && process.env.BW_RAW === "true") { + // No output is given and the user expects raw output. Since the command result is about content, + // we directly return the command result to stdout (and suppress further messages). + process.stdout.write(data); + return Response.success(); + } + + const filePath = await this.saveFile(data, output, defaultFileName); + const res = new MessageResponse("Saved " + filePath, null); + res.raw = filePath; + return Response.success(res); + } + + static readStdin(): Promise { + return new Promise((resolve, reject) => { + let input = ""; + + if (process.stdin.isTTY) { + resolve(input); + return; + } + + process.stdin.setEncoding("utf8"); + process.stdin.on("readable", () => { + // eslint-disable-next-line + while (true) { + const chunk = process.stdin.read(); + if (chunk == null) { + break; + } + input += chunk; + } + }); + + process.stdin.on("end", () => { + resolve(input); + }); + }); + } + + static searchFolders(folders: FolderView[], search: string) { + search = search.toLowerCase(); + return folders.filter((f) => { + if (f.name != null && f.name.toLowerCase().indexOf(search) > -1) { + return true; + } + return false; + }); + } + + static searchCollections(collections: CollectionView[], search: string) { + search = search.toLowerCase(); + return collections.filter((c) => { + if (c.name != null && c.name.toLowerCase().indexOf(search) > -1) { + return true; + } + return false; + }); + } + + static searchOrganizations(organizations: Organization[], search: string) { + search = search.toLowerCase(); + return organizations.filter((o) => { + if (o.name != null && o.name.toLowerCase().indexOf(search) > -1) { + return true; + } + return false; + }); + } + + /** + * Gets a password from all available sources. In order of priority these are: + * * passwordfile + * * passwordenv + * * user interaction + * + * Returns password string if successful, Response if not. + */ + static async getPassword( + password: string, + options: { passwordFile?: string; passwordEnv?: string }, + logService?: LogService + ): Promise { + if (Utils.isNullOrEmpty(password)) { + if (options?.passwordFile) { + password = await NodeUtils.readFirstLine(options.passwordFile); + } else if (options?.passwordEnv) { + if (process.env[options.passwordEnv]) { + password = process.env[options.passwordEnv]; + } else if (logService) { + logService.warning(`Warning: Provided passwordenv ${options.passwordEnv} is not set`); + } + } + } + + if (Utils.isNullOrEmpty(password)) { + if (process.env.BW_NOINTERACTION !== "true") { + const answer: inquirer.Answers = await inquirer.createPromptModule({ + output: process.stderr, + })({ + type: "password", + name: "password", + message: "Master password:", + }); + + password = answer.password; + } else { + return Response.badRequest( + "Master password is required. Try again in interactive mode or provide a password file or environment variable." + ); + } + } + return password; + } + + static convertBooleanOption(optionValue: any) { + return optionValue || optionValue === "" ? true : false; + } + + static flagEnabled(flag: FlagName) { + return this.flags[flag] == null || this.flags[flag]; + } + + private static get flags(): Flags { + const envFlags = process.env.FLAGS; + + if (typeof envFlags === "string") { + return JSON.parse(envFlags) as Flags; + } else { + return envFlags as Flags; + } + } +} diff --git a/apps/cli/src/vault.program.ts b/apps/cli/src/vault.program.ts new file mode 100644 index 0000000000..df909bf8b2 --- /dev/null +++ b/apps/cli/src/vault.program.ts @@ -0,0 +1,486 @@ +import * as program from "commander"; + +import { Response } from "jslib-node/cli/models/response"; + +import { Main } from "./bw"; +import { ConfirmCommand } from "./commands/confirm.command"; +import { CreateCommand } from "./commands/create.command"; +import { DeleteCommand } from "./commands/delete.command"; +import { EditCommand } from "./commands/edit.command"; +import { ExportCommand } from "./commands/export.command"; +import { GetCommand } from "./commands/get.command"; +import { ImportCommand } from "./commands/import.command"; +import { ListCommand } from "./commands/list.command"; +import { RestoreCommand } from "./commands/restore.command"; +import { ShareCommand } from "./commands/share.command"; +import { Program } from "./program"; +import { CliUtils } from "./utils"; + +const writeLn = CliUtils.writeLn; + +export class VaultProgram extends Program { + constructor(protected main: Main) { + super(main); + } + + async register() { + program + .addCommand(this.listCommand()) + .addCommand(this.getCommand()) + .addCommand(this.createCommand()) + .addCommand(this.editCommand()) + .addCommand(this.deleteCommand()) + .addCommand(this.restoreCommand()) + .addCommand(this.shareCommand("move", false)) + .addCommand(this.confirmCommand()) + .addCommand(this.importCommand()) + .addCommand(this.exportCommand()) + .addCommand(this.shareCommand("share", true)); + } + + private validateObject(requestedObject: string, validObjects: string[]): boolean { + let success = true; + if (!validObjects.includes(requestedObject)) { + success = false; + this.processResponse( + Response.badRequest( + 'Unknown object "' + + requestedObject + + '". Allowed objects are ' + + validObjects.join(", ") + + "." + ) + ); + } + return success; + } + + private listCommand(): program.Command { + const listObjects = [ + "items", + "folders", + "collections", + "org-collections", + "org-members", + "organizations", + ]; + + return new program.Command("list") + .arguments("") + .description("List an array of objects from the vault.", { + object: "Valid objects are: " + listObjects.join(", "), + }) + .option("--search ", "Perform a search on the listed objects.") + .option("--url ", "Filter items of type login with a url-match search.") + .option("--folderid ", "Filter items by folder id.") + .option("--collectionid ", "Filter items by collection id.") + .option( + "--organizationid ", + "Filter items or collections by organization id." + ) + .option("--trash", "Filter items that are deleted and in the trash.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn(" Combining search with a filter performs a logical AND operation."); + writeLn(""); + writeLn(" Combining multiple filters performs a logical OR operation."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw list items"); + writeLn(" bw list items --folderid 60556c31-e649-4b5d-8daf-fc1c391a1bf2"); + writeLn( + " bw list items --search google --folderid 60556c31-e649-4b5d-8daf-fc1c391a1bf2" + ); + writeLn(" bw list items --url https://google.com"); + writeLn(" bw list items --folderid null"); + writeLn(" bw list items --organizationid notnull"); + writeLn( + " bw list items --folderid 60556c31-e649-4b5d-8daf-fc1c391a1bf2 --organizationid notnull" + ); + writeLn(" bw list items --trash"); + writeLn(" bw list folders --search email"); + writeLn(" bw list org-members --organizationid 60556c31-e649-4b5d-8daf-fc1c391a1bf2"); + writeLn("", true); + }) + .action(async (object, cmd) => { + if (!this.validateObject(object, listObjects)) { + return; + } + + await this.exitIfLocked(); + const command = new ListCommand( + this.main.cipherService, + this.main.folderService, + this.main.collectionService, + this.main.organizationService, + this.main.searchService, + this.main.apiService + ); + const response = await command.run(object, cmd); + + this.processResponse(response); + }); + } + + private getCommand(): program.Command { + const getObjects = [ + "item", + "username", + "password", + "uri", + "totp", + "notes", + "exposed", + "attachment", + "folder", + "collection", + "org-collection", + "organization", + "template", + "fingerprint", + "send", + ]; + return new program.Command("get") + .arguments(" ") + .description("Get an object from the vault.", { + object: "Valid objects are: " + getObjects.join(", "), + id: "Search term or object's globally unique `id`.", + }) + .option("--itemid ", "Attachment's item id.") + .option("--output ", "Output directory or filename for attachment.") + .option("--organizationid ", "Organization id for an organization object.") + .on("--help", () => { + writeLn("\n If raw output is specified and no output filename or directory is given for"); + writeLn(" an attachment query, the attachment content is written to stdout."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw get item 99ee88d2-6046-4ea7-92c2-acac464b1412"); + writeLn(" bw get password https://google.com"); + writeLn(" bw get totp google.com"); + writeLn(" bw get notes google.com"); + writeLn(" bw get exposed yahoo.com"); + writeLn( + " bw get attachment b857igwl1dzrs2 --itemid 99ee88d2-6046-4ea7-92c2-acac464b1412 " + + "--output ./photo.jpg" + ); + writeLn( + " bw get attachment photo.jpg --itemid 99ee88d2-6046-4ea7-92c2-acac464b1412 --raw" + ); + writeLn(" bw get folder email"); + writeLn(" bw get template folder"); + writeLn("", true); + }) + .action(async (object, id, cmd) => { + if (!this.validateObject(object, getObjects)) { + return; + } + + await this.exitIfLocked(); + const command = new GetCommand( + this.main.cipherService, + this.main.folderService, + this.main.collectionService, + this.main.totpService, + this.main.auditService, + this.main.cryptoService, + this.main.stateService, + this.main.searchService, + this.main.apiService, + this.main.organizationService + ); + const response = await command.run(object, id, cmd); + this.processResponse(response); + }); + } + + private createCommand() { + const createObjects = ["item", "attachment", "folder", "org-collection"]; + return new program.Command("create") + .arguments(" [encodedJson]") + .description("Create an object in the vault.", { + object: "Valid objects are: " + createObjects.join(", "), + encodedJson: "Encoded json of the object to create. Can also be piped into stdin.", + }) + .option("--file ", "Path to file for attachment.") + .option("--itemid ", "Attachment's item id.") + .option("--organizationid ", "Organization id for an organization object.") + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw create folder eyJuYW1lIjoiTXkgRm9sZGVyIn0K"); + writeLn(" echo 'eyJuYW1lIjoiTXkgRm9sZGVyIn0K' | bw create folder"); + writeLn( + " bw create attachment --file ./myfile.csv " + + "--itemid 16b15b89-65b3-4639-ad2a-95052a6d8f66" + ); + writeLn("", true); + }) + .action(async (object, encodedJson, cmd) => { + if (!this.validateObject(object, createObjects)) { + return; + } + + await this.exitIfLocked(); + const command = new CreateCommand( + this.main.cipherService, + this.main.folderService, + this.main.stateService, + this.main.cryptoService, + this.main.apiService + ); + const response = await command.run(object, encodedJson, cmd); + this.processResponse(response); + }); + } + + private editCommand(): program.Command { + const editObjects = ["item", "item-collections", "folder", "org-collection"]; + return new program.Command("edit") + .arguments(" [encodedJson]") + .description("Edit an object from the vault.", { + object: "Valid objects are: " + editObjects.join(", "), + id: "Object's globally unique `id`.", + encodedJson: "Encoded json of the object to create. Can also be piped into stdin.", + }) + .option("--organizationid ", "Organization id for an organization object.") + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn( + " bw edit folder 5cdfbd80-d99f-409b-915b-f4c5d0241b02 eyJuYW1lIjoiTXkgRm9sZGVyMiJ9Cg==" + ); + writeLn( + " echo 'eyJuYW1lIjoiTXkgRm9sZGVyMiJ9Cg==' | " + + "bw edit folder 5cdfbd80-d99f-409b-915b-f4c5d0241b02" + ); + writeLn( + " bw edit item-collections 78307355-fd25-416b-88b8-b33fd0e88c82 " + + "WyI5NzQwNTNkMC0zYjMzLTRiOTgtODg2ZS1mZWNmNWM4ZGJhOTYiXQ==" + ); + writeLn("", true); + }) + .action(async (object, id, encodedJson, cmd) => { + if (!this.validateObject(object, editObjects)) { + return; + } + + await this.exitIfLocked(); + const command = new EditCommand( + this.main.cipherService, + this.main.folderService, + this.main.cryptoService, + this.main.apiService + ); + const response = await command.run(object, id, encodedJson, cmd); + this.processResponse(response); + }); + } + + private deleteCommand(): program.Command { + const deleteObjects = ["item", "attachment", "folder", "org-collection"]; + return new program.Command("delete") + .arguments(" ") + .description("Delete an object from the vault.", { + object: "Valid objects are: " + deleteObjects.join(", "), + id: "Object's globally unique `id`.", + }) + .option("--itemid ", "Attachment's item id.") + .option("--organizationid ", "Organization id for an organization object.") + .option( + "-p, --permanent", + "Permanently deletes the item instead of soft-deleting it (item only)." + ) + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw delete item 7063feab-4b10-472e-b64c-785e2b870b92"); + writeLn(" bw delete item 89c21cd2-fab0-4f69-8c6e-ab8a0168f69a --permanent"); + writeLn(" bw delete folder 5cdfbd80-d99f-409b-915b-f4c5d0241b02"); + writeLn( + " bw delete attachment b857igwl1dzrs2 --itemid 310d5ffd-e9a2-4451-af87-ea054dce0f78" + ); + writeLn("", true); + }) + .action(async (object, id, cmd) => { + if (!this.validateObject(object, deleteObjects)) { + return; + } + + await this.exitIfLocked(); + const command = new DeleteCommand( + this.main.cipherService, + this.main.folderService, + this.main.stateService, + this.main.apiService + ); + const response = await command.run(object, id, cmd); + this.processResponse(response); + }); + } + + private restoreCommand(): program.Command { + const restoreObjects = ["item"]; + return new program.Command("restore") + .arguments(" ") + .description("Restores an object from the trash.", { + object: "Valid objects are: " + restoreObjects.join(", "), + id: "Object's globally unique `id`.", + }) + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw restore item 7063feab-4b10-472e-b64c-785e2b870b92"); + writeLn("", true); + }) + .action(async (object, id, cmd) => { + if (!this.validateObject(object, restoreObjects)) { + return; + } + + await this.exitIfLocked(); + const command = new RestoreCommand(this.main.cipherService); + const response = await command.run(object, id); + this.processResponse(response); + }); + } + + private shareCommand(commandName: string, deprecated: boolean): program.Command { + return new program.Command(commandName) + .arguments(" [encodedJson]") + .description((deprecated ? "--DEPRECATED-- " : "") + "Move an item to an organization.", { + id: "Object's globally unique `id`.", + organizationId: "Organization's globally unique `id`.", + encodedJson: "Encoded json of an array of collection ids. Can also be piped into stdin.", + }) + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn( + " bw " + + commandName + + " 4af958ce-96a7-45d9-beed-1e70fabaa27a " + + "6d82949b-b44d-468a-adae-3f3bacb0ea32 WyI5NzQwNTNkMC0zYjMzLTRiOTgtODg2ZS1mZWNmNWM4ZGJhOTYiXQ==" + ); + writeLn( + " echo '[\"974053d0-3b33-4b98-886e-fecf5c8dba96\"]' | bw encode | " + + "bw " + + commandName + + " 4af958ce-96a7-45d9-beed-1e70fabaa27a 6d82949b-b44d-468a-adae-3f3bacb0ea32" + ); + if (deprecated) { + writeLn(""); + writeLn('--DEPRECATED See "bw move" for the current implementation--'); + } + writeLn("", true); + }) + .action(async (id, organizationId, encodedJson, cmd) => { + await this.exitIfLocked(); + const command = new ShareCommand(this.main.cipherService); + const response = await command.run(id, organizationId, encodedJson); + this.processResponse(response); + }); + } + + private confirmCommand(): program.Command { + const confirmObjects = ["org-member"]; + return new program.Command("confirm") + .arguments(" ") + .description("Confirm an object to the organization.", { + object: "Valid objects are: " + confirmObjects.join(", "), + id: "Object's globally unique `id`.", + }) + .option("--organizationid ", "Organization id for an organization object.") + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn( + " bw confirm org-member 7063feab-4b10-472e-b64c-785e2b870b92 " + + "--organizationid 310d5ffd-e9a2-4451-af87-ea054dce0f78" + ); + writeLn("", true); + }) + .action(async (object, id, cmd) => { + if (!this.validateObject(object, confirmObjects)) { + return; + } + + await this.exitIfLocked(); + const command = new ConfirmCommand(this.main.apiService, this.main.cryptoService); + const response = await command.run(object, id, cmd); + this.processResponse(response); + }); + } + + private importCommand(): program.Command { + return new program.Command("import") + .arguments("[format] [input]") + .description("Import vault data from a file.", { + format: "The format of [input]", + input: "Filepath to data to import", + }) + .option("--formats", "List formats") + .option("--organizationid ", "ID of the organization to import to.") + .on("--help", () => { + writeLn("\n Examples:"); + writeLn(""); + writeLn(" bw import --formats"); + writeLn(" bw import bitwardencsv ./from/source.csv"); + writeLn(" bw import keepass2xml keepass_backup.xml"); + writeLn( + " bw import --organizationid cf14adc3-aca5-4573-890a-f6fa231436d9 keepass2xml keepass_backup.xml" + ); + }) + .action(async (format, filepath, options) => { + await this.exitIfLocked(); + const command = new ImportCommand(this.main.importService, this.main.organizationService); + const response = await command.run(format, filepath, options); + this.processResponse(response); + }); + } + + private exportCommand(): program.Command { + return new program.Command("export") + .description("Export vault data to a CSV or JSON file.", {}) + .option("--output ", "Output directory or filename.") + .option("--format ", "Export file format.") + .option( + "--password [password]", + "Use password to encrypt instead of your Bitwarden account encryption key. Only applies to the encrypted_json format." + ) + .option("--organizationid ", "Organization id for an organization.") + .on("--help", () => { + writeLn("\n Notes:"); + writeLn(""); + writeLn( + " Valid formats are `csv`, `json`, and `encrypted_json`. Default format is `csv`." + ); + writeLn(""); + writeLn( + " If --raw option is specified and no output filename or directory is given, the" + ); + writeLn(" result is written to stdout."); + writeLn(""); + writeLn(" Examples:"); + writeLn(""); + writeLn(" bw export"); + writeLn(" bw --raw export"); + writeLn(" bw export myPassword321"); + writeLn(" bw export myPassword321 --format json"); + writeLn(" bw export --output ./exp/bw.csv"); + writeLn(" bw export myPassword321 --output bw.json --format json"); + writeLn( + " bw export myPassword321 --organizationid 7063feab-4b10-472e-b64c-785e2b870b92" + ); + writeLn("", true); + }) + .action(async (options) => { + await this.exitIfLocked(); + const command = new ExportCommand(this.main.exportService, this.main.policyService); + const response = await command.run(options); + this.processResponse(response); + }); + } +} diff --git a/apps/cli/stores/chocolatey/bitwarden-cli.nuspec b/apps/cli/stores/chocolatey/bitwarden-cli.nuspec new file mode 100644 index 0000000000..30de1c6f43 --- /dev/null +++ b/apps/cli/stores/chocolatey/bitwarden-cli.nuspec @@ -0,0 +1,41 @@ + + + + + bitwarden-cli + 0.0.0 + https://github.com/bitwarden/cli/tree/master/stores/chocolatey + kspearrin + Bitwarden CLI + Bitwarden Inc. + https://bitwarden.com/ + https://cdn.rawgit.com/bitwarden/desktop/51dd1341/resources/icon.png + Copyright © 2015-2022 Bitwarden Inc. + https://github.com/bitwarden/cli/ + https://help.bitwarden.com/article/cli/ + https://github.com/bitwarden/cli/issues + https://github.com/bitwarden/cli/releases + https://github.com/bitwarden/cli/blob/master/LICENSE.txt + false + bitwarden password manager cli + A secure and free password manager for all of your devices. + + For CLI documentation, please visit https://help.bitwarden.com/article/cli/ + + ----------------- + + 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/cli/stores/chocolatey/tools/VERIFICATION.txt b/apps/cli/stores/chocolatey/tools/VERIFICATION.txt new file mode 100644 index 0000000000..67231a84c9 --- /dev/null +++ b/apps/cli/stores/chocolatey/tools/VERIFICATION.txt @@ -0,0 +1,6 @@ +VERIFICATION +Verification is intended to assist the Chocolatey moderators and community +in verifying that this package's contents are trustworthy. + +This package is published by the Bitwarden project itself. Any binaries will +be identical to other package types published by the project. diff --git a/apps/cli/stores/snap/snapcraft.yaml b/apps/cli/stores/snap/snapcraft.yaml new file mode 100644 index 0000000000..b358a58687 --- /dev/null +++ b/apps/cli/stores/snap/snapcraft.yaml @@ -0,0 +1,17 @@ +name: bw +version: __version__ +summary: Bitwarden CLI +description: A secure and free password manager for all of your devices. +confinement: strict +base: core18 +apps: + bw: + command: bw + plugs: [network, home, network-bind] +parts: + bw: + plugin: dump + source: ./bw-linux-$SNAPCRAFT_PROJECT_VERSION.zip + override-build: | + chmod +x bw + snapcraftctl build diff --git a/apps/cli/tsconfig.json b/apps/cli/tsconfig.json new file mode 100644 index 0000000000..a39ab45d7a --- /dev/null +++ b/apps/cli/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "pretty": true, + "moduleResolution": "node", + "target": "ES2016", + "module": "es6", + "noImplicitAny": true, + "allowSyntheticDefaultImports": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowJs": true, + "sourceMap": true, + "baseUrl": ".", + "paths": { + "jslib-common/*": ["../../libs/common/src/*"], + "jslib-node/*": ["../../libs/node/src/*"] + } + }, + "include": ["src"] +} diff --git a/apps/cli/tsconfig.spec.json b/apps/cli/tsconfig.spec.json new file mode 100644 index 0000000000..fc8520e737 --- /dev/null +++ b/apps/cli/tsconfig.spec.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.json" +} diff --git a/apps/cli/webpack.config.js b/apps/cli/webpack.config.js new file mode 100644 index 0000000000..1c0c2e2b08 --- /dev/null +++ b/apps/cli/webpack.config.js @@ -0,0 +1,79 @@ +const path = require("path"); +const webpack = require("webpack"); +const { CleanWebpackPlugin } = require("clean-webpack-plugin"); +const CopyWebpackPlugin = require("copy-webpack-plugin"); +const nodeExternals = require("webpack-node-externals"); +const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin"); +const config = require("./config/config"); + +if (process.env.NODE_ENV == null) { + process.env.NODE_ENV = "development"; +} +const ENV = (process.env.ENV = process.env.NODE_ENV); + +const envConfig = config.load(ENV); +config.log(envConfig); + +const moduleRules = [ + { + test: /\.ts$/, + use: "ts-loader", + exclude: path.resolve(__dirname, "node_modules"), + }, +]; + +const plugins = [ + new CleanWebpackPlugin(), + new CopyWebpackPlugin({ + patterns: [{ from: "./src/locales", to: "locales" }], + }), + new webpack.DefinePlugin({ + "process.env.BWCLI_ENV": JSON.stringify(ENV), + }), + new webpack.BannerPlugin({ + banner: "#!/usr/bin/env node", + raw: true, + }), + new webpack.IgnorePlugin({ + resourceRegExp: /^encoding$/, + contextRegExp: /node-fetch/, + }), + new webpack.EnvironmentPlugin({ + BWCLI_ENV: ENV, + FLAGS: envConfig.flags, + }), + new webpack.IgnorePlugin({ + resourceRegExp: /canvas/, + contextRegExp: /jsdom$/, + }), +]; + +const webpackConfig = { + mode: ENV, + target: "node", + devtool: ENV === "development" ? "eval-source-map" : "source-map", + node: { + __dirname: false, + __filename: false, + }, + entry: { + bw: "./src/bw.ts", + }, + optimization: { + minimize: false, + }, + resolve: { + extensions: [".ts", ".js"], + symlinks: false, + modules: [path.resolve("../../node_modules")], + plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })], + }, + output: { + filename: "[name].js", + path: path.resolve(__dirname, "build"), + }, + module: { rules: moduleRules }, + plugins: plugins, +}; + +module.exports = webpackConfig; diff --git a/apps/desktop/.eslintrc.json b/apps/desktop/.eslintrc.json new file mode 100644 index 0000000000..5d9ea457c3 --- /dev/null +++ b/apps/desktop/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "env": { + "browser": true, + "node": true + } +} 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/.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/README.md b/apps/desktop/README.md new file mode 100644 index 0000000000..eeffe1cef4 --- /dev/null +++ b/apps/desktop/README.md @@ -0,0 +1,41 @@ +[![Github Workflow build on master](https://github.com/bitwarden/clients/actions/workflows/build-desktop.yml/badge.svg?branch=master)](https://github.com/bitwarden/clients/actions/workflows/build-desktop.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) + +# 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. 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..fc9743d760 --- /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..4a45d151bc --- /dev/null +++ b/apps/desktop/electron-builder.json @@ -0,0 +1,122 @@ +{ + "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/**/*"], + "electronVersion": "16.2.7", + "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/package.json b/apps/desktop/package.json new file mode 100644 index 0000000000..c1efa274cb --- /dev/null +++ b/apps/desktop/package.json @@ -0,0 +1,54 @@ +{ + "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": "git+https://github.com/bitwarden/clients.git" + }, + "license": "GPL-3.0", + "scripts": { + "start": "cross-env ELECTRON_IS_DEV=0 ELECTRON_NO_UPDATER=1 electron ./build", + "preinstall": "npm run sub:init", + "postinstall": "electron-rebuild", + "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/*", + "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" + } +} 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/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..78ae76ea29 --- /dev/null +++ b/apps/desktop/src/app/accounts/settings.component.ts @@ -0,0 +1,418 @@ +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("browserIntegrationUnsupportedTitle"), + this.i18nService.t("ok"), + null, + "warning" + ); + + this.enableBrowserIntegration = false; + return; + } else if (isWindowsStore()) { + await this.platformUtilsService.showDialog( + this.i18nService.t("browserIntegrationWindowsStoreDesc"), + this.i18nService.t("browserIntegrationUnsupportedTitle"), + this.i18nService.t("ok"), + null, + "warning" + ); + + this.enableBrowserIntegration = false; + return; + } else if (process.platform == "linux") { + await this.platformUtilsService.showDialog( + this.i18nService.t("browserIntegrationLinuxDesc"), + this.i18nService.t("browserIntegrationUnsupportedTitle"), + 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..38592bf509 --- /dev/null +++ b/apps/desktop/src/app/app-routing.module.ts @@ -0,0 +1,69 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AuthGuard } from "jslib-angular/guards/auth.guard"; +import { LockGuard } from "jslib-angular/guards/lock.guard"; + +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 { LoginGuard } from "./guards/login.guard"; +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: [LockGuard], + }, + { + path: "login", + component: LoginComponent, + canActivate: [LoginGuard], + }, + { path: "2fa", component: TwoFactorComponent }, + { path: "register", component: RegisterComponent }, + { + path: "vault", + component: VaultComponent, + canActivate: [AuthGuard], + }, + { path: "hint", component: HintComponent }, + { path: "set-password", component: SetPasswordComponent }, + { path: "sso", component: SsoComponent }, + { + path: "send", + component: SendComponent, + canActivate: [AuthGuard], + }, + { + path: "update-temp-password", + component: UpdateTempPasswordComponent, + canActivate: [AuthGuard], + }, + { + path: "remove-password", + component: RemovePasswordComponent, + canActivate: [AuthGuard], + 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..9e88eec960 --- /dev/null +++ b/apps/desktop/src/app/app.module.ts @@ -0,0 +1,201 @@ +import "zone.js/dist/zone"; + +import { 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 { 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 { SharedModule } from "./modules/shared.module"; +import { VaultFilterModule } from "./modules/vault-filter/vault-filter.module"; +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 { 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 { 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: [SharedModule, AppRoutingModule, VaultFilterModule], + declarations: [ + AccountSwitcherComponent, + AddEditComponent, + AddEditCustomFieldsComponent, + AppComponent, + AttachmentsComponent, + CiphersComponent, + CollectionsComponent, + EnvironmentComponent, + ExportComponent, + FolderAddEditComponent, + 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, + ], + 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/guards/login.guard.ts b/apps/desktop/src/app/guards/login.guard.ts new file mode 100644 index 0000000000..dcf8bbc3b9 --- /dev/null +++ b/apps/desktop/src/app/guards/login.guard.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 LoginGuard 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/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..9e2bab6565 --- /dev/null +++ b/apps/desktop/src/app/layout/search/search.component.ts @@ -0,0 +1,36 @@ +import { Component, OnDestroy, OnInit } from "@angular/core"; +import { FormControl } from "@angular/forms"; + +import { StateService } from "jslib-common/abstractions/state.service"; + +import { SearchBarService, SearchBarState } from "./search-bar.service"; + +@Component({ + selector: "app-search", + templateUrl: "search.component.html", +}) +export class SearchComponent implements OnInit, OnDestroy { + state: SearchBarState; + searchText: FormControl = new FormControl(null); + + constructor(private searchBarService: SearchBarService, private stateService: StateService) { + this.searchBarService.state.subscribe((state) => { + this.state = state; + }); + + this.searchText.valueChanges.subscribe((value) => { + this.searchBarService.setSearchText(value); + }); + } + + ngOnInit() { + this.stateService.activeAccount.subscribe((value) => { + this.searchBarService.setSearchText(""); + this.searchText.patchValue(""); + }); + } + + ngOnDestroy() { + this.stateService.activeAccount.unsubscribe(); + } +} 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/modules/shared.module.ts b/apps/desktop/src/app/modules/shared.module.ts new file mode 100644 index 0000000000..5108e9b281 --- /dev/null +++ b/apps/desktop/src/app/modules/shared.module.ts @@ -0,0 +1,43 @@ +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 } from "@angular/common"; +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 { ServicesModule } from "../services/services.module"; + +@NgModule({ + imports: [ + A11yModule, + BrowserAnimationsModule, + BrowserModule, + DragDropModule, + FormsModule, + JslibModule, + OverlayModule, + ReactiveFormsModule, + ScrollingModule, + ServicesModule, + ], + exports: [ + A11yModule, + BrowserAnimationsModule, + BrowserModule, + DatePipe, + DragDropModule, + FormsModule, + JslibModule, + OverlayModule, + ReactiveFormsModule, + ScrollingModule, + ServicesModule, + ], + providers: [DatePipe], +}) +export class SharedModule {} diff --git a/apps/desktop/src/app/modules/vault-filter/components/collection-filter.component.html b/apps/desktop/src/app/modules/vault-filter/components/collection-filter.component.html new file mode 100644 index 0000000000..aa0c1887fe --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/collection-filter.component.html @@ -0,0 +1,76 @@ + +
+ +

 {{ collectionsGrouping.name | i18n }}

+
+
    + +
  • + + + + +
      + + +
    +
  • +
    + + +
+
diff --git a/apps/desktop/src/app/modules/vault-filter/components/collection-filter.component.ts b/apps/desktop/src/app/modules/vault-filter/components/collection-filter.component.ts new file mode 100644 index 0000000000..e08c724a5a --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/collection-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { CollectionFilterComponent as BaseCollectionFilterComponent } from "jslib-angular/modules/vault-filter/components/collection-filter.component"; + +@Component({ + selector: "app-collection-filter", + templateUrl: "collection-filter.component.html", +}) +export class CollectionFilterComponent extends BaseCollectionFilterComponent {} diff --git a/apps/desktop/src/app/modules/vault-filter/components/folder-filter.component.html b/apps/desktop/src/app/modules/vault-filter/components/folder-filter.component.html new file mode 100644 index 0000000000..6c91f89d5f --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/folder-filter.component.html @@ -0,0 +1,84 @@ + +
+ +

 {{ foldersGrouping.name | i18n }}

+ +
+
    + +
  • + + + + + +
      + + +
    +
  • +
    + +
+
diff --git a/apps/desktop/src/app/modules/vault-filter/components/folder-filter.component.ts b/apps/desktop/src/app/modules/vault-filter/components/folder-filter.component.ts new file mode 100644 index 0000000000..6205239f77 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/folder-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { FolderFilterComponent as BaseFolderFilterComponent } from "jslib-angular/modules/vault-filter/components/folder-filter.component"; + +@Component({ + selector: "app-folder-filter", + templateUrl: "folder-filter.component.html", +}) +export class FolderFilterComponent extends BaseFolderFilterComponent {} diff --git a/apps/desktop/src/app/modules/vault-filter/components/organization-filter.component.html b/apps/desktop/src/app/modules/vault-filter/components/organization-filter.component.html new file mode 100644 index 0000000000..cc62341758 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/organization-filter.component.html @@ -0,0 +1,102 @@ + + + +
+ + +
+
    +
  • + + + +
  • +
+
+ +
+ + +
+
    +
  • + + + +
  • +
  • + + + +
  • +
+
+
+
+
diff --git a/apps/desktop/src/app/modules/vault-filter/components/organization-filter.component.ts b/apps/desktop/src/app/modules/vault-filter/components/organization-filter.component.ts new file mode 100644 index 0000000000..8703102cf6 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/organization-filter.component.ts @@ -0,0 +1,19 @@ +import { Component } from "@angular/core"; + +import { OrganizationFilterComponent as BaseOrganizationFilterComponent } from "jslib-angular/modules/vault-filter/components/organization-filter.component"; +import { DisplayMode } from "jslib-angular/modules/vault-filter/models/display-mode"; + +@Component({ + selector: "app-organization-filter", + templateUrl: "organization-filter.component.html", +}) +export class OrganizationFilterComponent extends BaseOrganizationFilterComponent { + get show() { + const hiddenDisplayModes: DisplayMode[] = ["singleOrganizationAndPersonalOwnershipPolicies"]; + return ( + !this.hide && + this.organizations.length > 0 && + hiddenDisplayModes.indexOf(this.displayMode) === -1 + ); + } +} diff --git a/apps/desktop/src/app/modules/vault-filter/components/status-filter.component.html b/apps/desktop/src/app/modules/vault-filter/components/status-filter.component.html new file mode 100644 index 0000000000..865f24a759 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/status-filter.component.html @@ -0,0 +1,46 @@ + +

{{ "filters" | i18n }}

+
    +
  • + + + +
  • +
  • + + + +
  • +
  • + + + +
  • +
+
diff --git a/apps/desktop/src/app/modules/vault-filter/components/status-filter.component.ts b/apps/desktop/src/app/modules/vault-filter/components/status-filter.component.ts new file mode 100644 index 0000000000..c7c38aa6aa --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/status-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { StatusFilterComponent as BaseStatusFilterComponent } from "jslib-angular/modules/vault-filter/components/status-filter.component"; + +@Component({ + selector: "app-status-filter", + templateUrl: "status-filter.component.html", +}) +export class StatusFilterComponent extends BaseStatusFilterComponent {} diff --git a/apps/desktop/src/app/modules/vault-filter/components/type-filter.component.html b/apps/desktop/src/app/modules/vault-filter/components/type-filter.component.html new file mode 100644 index 0000000000..19a06646e4 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/type-filter.component.html @@ -0,0 +1,76 @@ +
+ +

 {{ typesNode.name | i18n }}

+
+
    +
  • + + + +
  • +
  • + + + +
  • +
  • + + + +
  • +
  • + + + +
  • +
diff --git a/apps/desktop/src/app/modules/vault-filter/components/type-filter.component.ts b/apps/desktop/src/app/modules/vault-filter/components/type-filter.component.ts new file mode 100644 index 0000000000..794fc49787 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/components/type-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { TypeFilterComponent as BaseTypeFilterComponent } from "jslib-angular/modules/vault-filter/components/type-filter.component"; + +@Component({ + selector: "app-type-filter", + templateUrl: "type-filter.component.html", +}) +export class TypeFilterComponent extends BaseTypeFilterComponent {} diff --git a/apps/desktop/src/app/modules/vault-filter/vault-filter.component.html b/apps/desktop/src/app/modules/vault-filter/vault-filter.component.html new file mode 100644 index 0000000000..62158fd332 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/vault-filter.component.html @@ -0,0 +1,50 @@ +
+ +
+ + + + + + + diff --git a/apps/desktop/src/app/modules/vault-filter/vault-filter.component.ts b/apps/desktop/src/app/modules/vault-filter/vault-filter.component.ts new file mode 100644 index 0000000000..b8a4a3605b --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/vault-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { VaultFilterComponent as BaseVaultFilterComponent } from "jslib-angular/modules/vault-filter/vault-filter.component"; + +@Component({ + selector: "app-vault-filter", + templateUrl: "vault-filter.component.html", +}) +export class VaultFilterComponent extends BaseVaultFilterComponent {} diff --git a/apps/desktop/src/app/modules/vault-filter/vault-filter.module.ts b/apps/desktop/src/app/modules/vault-filter/vault-filter.module.ts new file mode 100644 index 0000000000..9aad2bba52 --- /dev/null +++ b/apps/desktop/src/app/modules/vault-filter/vault-filter.module.ts @@ -0,0 +1,27 @@ +import { NgModule } from "@angular/core"; +import { BrowserModule } from "@angular/platform-browser"; + +import { JslibModule } from "jslib-angular/jslib.module"; +import { VaultFilterService } from "jslib-angular/modules/vault-filter/vault-filter.service"; + +import { CollectionFilterComponent } from "./components/collection-filter.component"; +import { FolderFilterComponent } from "./components/folder-filter.component"; +import { OrganizationFilterComponent } from "./components/organization-filter.component"; +import { StatusFilterComponent } from "./components/status-filter.component"; +import { TypeFilterComponent } from "./components/type-filter.component"; +import { VaultFilterComponent } from "./vault-filter.component"; + +@NgModule({ + imports: [BrowserModule, JslibModule], + declarations: [ + VaultFilterComponent, + CollectionFilterComponent, + FolderFilterComponent, + OrganizationFilterComponent, + StatusFilterComponent, + TypeFilterComponent, + ], + exports: [VaultFilterComponent], + providers: [VaultFilterService], +}) +export class VaultFilterModule {} 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..e4d5dc0d69 --- /dev/null +++ b/apps/desktop/src/app/send/send.component.html @@ -0,0 +1,156 @@ +
+
+
+

{{ "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..e014b165c8 --- /dev/null +++ b/apps/desktop/src/app/services/services.module.ts @@ -0,0 +1,134 @@ +import { APP_INITIALIZER, InjectionToken, NgModule } from "@angular/core"; + +import { + JslibServicesModule, + SECURE_STORAGE, + STATE_FACTORY, + STATE_SERVICE_USE_CACHE, + 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 { NativeMessagingService } from "../../services/nativeMessaging.service"; +import { PasswordRepromptService } from "../../services/passwordReprompt.service"; +import { StateService } from "../../services/state.service"; +import { LoginGuard } from "../guards/login.guard"; +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, + LoginGuard, + { + 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..b2482e8f8d --- /dev/null +++ b/apps/desktop/src/app/vault/ciphers.component.html @@ -0,0 +1,67 @@ +
+ +
+ +
+ +
+ +
+
+
+ +

{{ "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..e1a64ca5d4 --- /dev/null +++ b/apps/desktop/src/app/vault/generator.component.html @@ -0,0 +1,560 @@ + 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/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..bf6773e468 --- /dev/null +++ b/apps/desktop/src/app/vault/vault.component.html @@ -0,0 +1,71 @@ +
+ + + + + + + +
+ + +
+
+ + + + + + 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..13059d158e --- /dev/null +++ b/apps/desktop/src/app/vault/vault.component.ts @@ -0,0 +1,784 @@ +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 { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; +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 { VaultFilterComponent } from "../modules/vault-filter/vault-filter.component"; + +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 { 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("generator", { read: ViewContainerRef, static: true }) + generatorModalRef: ViewContainerRef; + @ViewChild(VaultFilterComponent, { static: true }) vaultFilterComponent: VaultFilterComponent; + @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; + organizationId: string = null; + myVaultOnly = false; + addType: CipherType = null; + addOrganizationId: string = null; + addCollectionIds: string[] = null; + showingModal = false; + deleted = false; + userHasPremiumAccess = false; + activeFilter: VaultFilter = new VaultFilter(); + + 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.ciphersComponent.reload(this.buildFilter()); + await this.vaultFilterComponent.reloadCollectionsAndFolders(this.activeFilter); + await this.vaultFilterComponent.reloadOrganizations(); + 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) => { + 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); + } + + this.activeFilter = new VaultFilter({ + status: params.deleted ? "trash" : params.favorites ? "favorites" : "all", + cipherType: + params.action === "add" || params.type == null ? null : parseInt(params.type, null), + selectedFolderId: params.folderId, + selectedCollectionId: params.selectedCollectionId, + selectedOrganizationId: params.selectedOrganizationId, + myVaultOnly: params.myVaultOnly ?? false, + }); + await this.ciphersComponent.reload(this.buildFilter()); + }); + } + + 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.prefillNewCipherFromFilter(); + 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 applyVaultFilter(vaultFilter: VaultFilter) { + this.searchBarService.setPlaceholderText( + this.i18nService.t(this.calculateSearchBarLocalizationString(vaultFilter)) + ); + this.activeFilter = vaultFilter; + await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === "trash"); + this.go(); + } + + private calculateSearchBarLocalizationString(vaultFilter: VaultFilter): string { + if (vaultFilter.status === "favorites") { + return "searchFavorites"; + } + if (vaultFilter.status === "trash") { + return "searchTrash"; + } + if (vaultFilter.cipherType != null) { + return "searchType"; + } + if (vaultFilter.selectedFolderId != null && vaultFilter.selectedFolderId != "none") { + return "searchFolder"; + } + if (vaultFilter.selectedCollectionId != null) { + return "searchCollection"; + } + if (vaultFilter.selectedOrganizationId != null) { + return "searchOrganization"; + } + if (vaultFilter.myVaultOnly) { + return "searchMyVault"; + } + + return "searchVault"; + } + + private buildFilter(): (cipher: CipherView) => boolean { + return (cipher) => { + let cipherPassesFilter = true; + if (this.activeFilter.status === "favorites" && cipherPassesFilter) { + cipherPassesFilter = cipher.favorite; + } + if (this.activeFilter.status === "trash" && cipherPassesFilter) { + cipherPassesFilter = cipher.isDeleted; + } + if (this.activeFilter.cipherType != null && cipherPassesFilter) { + cipherPassesFilter = cipher.type === this.activeFilter.cipherType; + } + if ( + this.activeFilter.selectedFolderId != null && + this.activeFilter.selectedFolderId != "none" && + cipherPassesFilter + ) { + cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId; + } + if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) { + cipherPassesFilter = + cipher.collectionIds != null && + cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1; + } + if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId; + } + if (this.activeFilter.myVaultOnly && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === null; + } + return cipherPassesFilter; + }; + } + + 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.vaultFilterComponent.reloadCollectionsAndFolders(this.activeFilter); + }); + childComponent.onDeletedFolder.subscribe(async (folder: FolderView) => { + this.modal.close(); + await this.vaultFilterComponent.reloadCollectionsAndFolders(this.activeFilter); + }); + + 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 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, + organizationId: this.organizationId, + myVaultOnly: this.myVaultOnly, + }; + } + + 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 prefillNewCipherFromFilter() { + if (this.activeFilter.selectedCollectionId != null) { + const collection = this.vaultFilterComponent.collections.fullList.filter( + (c) => c.id === this.activeFilter.selectedCollectionId + ); + if (collection.length > 0) { + this.addOrganizationId = collection[0].organizationId; + this.addCollectionIds = [this.activeFilter.selectedCollectionId]; + } + } else if (this.activeFilter.selectedOrganizationId) { + this.addOrganizationId = this.activeFilter.selectedOrganizationId; + } + if (this.activeFilter.selectedFolderId && this.activeFilter.selectedFolder) { + this.folderId = this.activeFilter.selectedFolderId; + } + } + + 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/close-button-white.svg b/apps/desktop/src/images/close-button-white.svg new file mode 100644 index 0000000000..8aea346478 --- /dev/null +++ b/apps/desktop/src/images/close-button-white.svg @@ -0,0 +1 @@ + \ No newline at end of file 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..590e3743f2 --- /dev/null +++ b/apps/desktop/src/locales/en/messages.json @@ -0,0 +1,1930 @@ +{ + "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." + }, + "browserIntegrationUnsupportedTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "browserIntegrationLinuxDesc": { + "message": "Unfortunately browser integration is currently not supported in the linux 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." + }, + "ssoKeyConnectorError": { + "message": "Key Connector error: make sure Key Connector is available and working correctly." + }, + "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" + }, + "allVaults": { + "message": "All Vaults" + }, + "searchOrganization": { + "message": "Search Organization" + }, + "searchMyVault": { + "message": "Search My Vault" + }, + "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..4ac04c490b --- /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/clients/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..58d56b30b2 --- /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": "2022.5.0", + "author": "Bitwarden Inc. (https://bitwarden.com)", + "homepage": "https://bitwarden.com", + "license": "GPL-3.0", + "main": "main.js", + "repository": { + "type": "git", + "url": "git+https://github.com/bitwarden/clients.git" + }, + "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..42cbc3f7ff --- /dev/null +++ b/apps/desktop/src/scss/base.scss @@ -0,0 +1,138 @@ +@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, +.vault-filters::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +div:not(.modal)::-webkit-scrollbar-track, +.cdk-virtual-scroll-viewport::-webkit-scrollbar-track, +.vault-filters::-webkit-scrollbar-track { + background-color: transparent; +} + +div:not(.modal)::-webkit-scrollbar-thumb, +.cdk-virtual-scroll-viewport::-webkit-scrollbar-thumb, +.vault-filters::-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..4f05b873b6 --- /dev/null +++ b/apps/desktop/src/scss/box.scss @@ -0,0 +1,489 @@ +@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; + align-items: center; + + @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..4b6fe81f63 --- /dev/null +++ b/apps/desktop/src/scss/buttons.scss @@ -0,0 +1,182 @@ +@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"); + } + } + } +} + +button.no-btn { + @extend a; + background: transparent; + border: none; + @include themify($themes) { + color: themed("textColor"); + } + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} 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..fdeba451c2 --- /dev/null +++ b/apps/desktop/src/scss/header.scss @@ -0,0 +1,203 @@ +.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%; + + [type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; + appearance: none; + height: 15px; + width: 15px; + background-repeat: no-repeat; + mask-image: url("../images/close-button-white.svg"); + -webkit-mask-image: url("../images/close-button-white.svg"); + background-color: themed("headerInputColor"); + } + } + } + + 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/left-nav.scss b/apps/desktop/src/scss/left-nav.scss new file mode 100644 index 0000000000..bd993c3601 --- /dev/null +++ b/apps/desktop/src/scss/left-nav.scss @@ -0,0 +1,196 @@ +.left-nav { + order: 1; + display: flex; + flex-direction: column; + width: 22%; + min-width: 175px; + max-width: 250px; + border-right: 1px solid #000000; + flex-grow: 1; + justify-content: space-between; + + @include themify($themes) { + background-color: themed("backgroundColorAlt"); + border-right-color: themed("borderColor"); + } +} + +.vault-filters { + user-select: none; + scrollbar-gutter: stable; + padding: 10px 15px; + overflow-x: hidden; + overflow-y: auto; + height: 100%; + + .filter { + hr { + margin: 1em 0 1em 0; + @include themify($themes) { + border-color: themed("hrColor"); + } + } + } +} + +.filter-heading { + display: flex; + text-transform: uppercase; + font-weight: normal; + margin-bottom: 5px; + align-items: center; + padding-top: 5px; + padding-bottom: 5px; + + h2 { + @include themify($themes) { + color: themed("headingColor"); + } + font-size: $font-size-base; + } + + button { + @extend .no-btn; + text-transform: uppercase; + + @include themify($themes) { + color: themed("headingButtonColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + color: themed("headingButtonHoverColor"); + } + } + } + + button.add-button { + margin-left: auto; + margin-right: 5px; + } + + &.active { + .filter-button { + h2 { + @include themify($themes) { + color: themed("primaryColor"); + } + } + } + } + + .filter-button { + &:hover { + h2 { + @include themify($themes) { + color: themed("primaryColor"); + } + } + } + } +} + +.filter-options { + word-break: break-all; + padding: 0; + list-style: none; + width: 100%; + margin: 0 0 15px 0; + .nested-filter-options { + list-style: none; + margin-bottom: 0px; + padding-left: 0.85em; + } +} + +.filter-option { + top: 8px; + width: 100%; + + @include themify($themes) { + color: themed("textColor"); + } + + &.active { + > .filter-buttons { + .filter-button { + @include themify($themes) { + color: themed("primaryColor"); + font-weight: bold; + } + } + + .edit-button { + visibility: visible; + } + } + } +} + +.filter-buttons { + padding: 5px 0; + display: flex; + align-items: center; + width: 100%; + + &:hover, + &:focus { + .filter-button { + @include themify($themes) { + color: themed("primaryColor"); + } + } + } + + button { + @extend .no-btn; + } + + .edit-button, + .toggle-button { + @include themify($themes) { + color: themed("headingButtonColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + color: themed("headingButtonHoverColor"); + } + } + } + + .edit-button { + visibility: hidden; + margin-left: auto; + margin-right: 5px; + } +} + +.nav { + height: 55px; + 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/scss/list.scss b/apps/desktop/src/scss/list.scss new file mode 100644 index 0000000000..343dd550f0 --- /dev/null +++ b/apps/desktop/src/scss/list.scss @@ -0,0 +1,154 @@ +@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; + } + } +} + +.list.full-height { + height: 100%; + overflow-y: auto; +} diff --git a/apps/desktop/src/scss/loading.scss b/apps/desktop/src/scss/loading.scss new file mode 100644 index 0000000000..2562ca4998 --- /dev/null +++ b/apps/desktop/src/scss/loading.scss @@ -0,0 +1,10 @@ +.container { + &.loading-spinner { + display: flex; + height: 100%; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + } +} 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..e0a834c542 --- /dev/null +++ b/apps/desktop/src/scss/styles.scss @@ -0,0 +1,22 @@ +$icomoon-font-path: "../../../../libs/angular/src/scss/bwicons/fonts/"; +$card-icons-base: "../../../../libs/angular/src/images/cards/"; + +@import "../../../../libs/angular/src/scss/webfonts.css"; +@import "../../../../libs/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 "left-nav.scss"; +@import "loading.scss"; +@import "../../../../libs/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..0f13d18c7a --- /dev/null +++ b/apps/desktop/src/scss/variables.scss @@ -0,0 +1,229 @@ +@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", + hrColor: #eeeeee, + ), + 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", + hrColor: #a3a3a3, + ), + 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", + hrColor: $nord4, + ), +); + +@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..f7403ad62d --- /dev/null +++ b/apps/desktop/src/scss/vault.scss @@ -0,0 +1,164 @@ +@import "variables.scss"; + +app-root { + display: flex; + flex-flow: column; + height: 100%; +} + +#container { + height: 100%; + min-height: 0; +} + +.vault { + height: 100%; + display: flex; + + > .items > div, + > .details, + > .logo { + display: flex; + flex-direction: column; + + .inner-content { + padding: 10px 15px; + } + } + + > .items { + order: 2; + 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; + order: 3; + + @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; + order: 3; + + .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; + } + } +} 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/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..5d90b9a2ee --- /dev/null +++ b/apps/desktop/stores/chocolatey/bitwarden.nuspec @@ -0,0 +1,37 @@ + + + + + bitwarden + 0.0.0 + https://github.com/bitwarden/clients/tree/master/apps/desktop/stores/chocolatey + kspearrin + Bitwarden + Bitwarden Inc. + https://bitwarden.com/ + https://raw.githubusercontent.com/bitwarden/brand/master/icons/256x256.png + Copyright © 2015-2022 Bitwarden Inc. + https://github.com/bitwarden/clients/ + https://bitwarden.com/help/ + https://github.com/bitwarden/clients/issues + https://github.com/bitwarden/clients/releases + https://github.com/bitwarden/clients/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..e185cd59e1 --- /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": ["../../libs/common/src/misc/tldjs.noop"], + "jslib-common/*": ["../../libs/common/src/*"], + "jslib-angular/*": ["../../libs/angular/src/*"], + "jslib-electron/*": ["../../libs/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..9a70a18049 --- /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"] +} 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..82a961385c --- /dev/null +++ b/apps/desktop/webpack.renderer.js @@ -0,0 +1,136 @@ +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"], + 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); diff --git a/apps/web/.dockerignore b/apps/web/.dockerignore new file mode 100644 index 0000000000..702e015eef --- /dev/null +++ b/apps/web/.dockerignore @@ -0,0 +1,3 @@ +* +!build/* +!entrypoint.sh diff --git a/apps/web/.eslintrc.json b/apps/web/.eslintrc.json new file mode 100644 index 0000000000..bfdcc55758 --- /dev/null +++ b/apps/web/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "root": true, + "env": { + "browser": true + } +} diff --git a/apps/web/.gitignore b/apps/web/.gitignore new file mode 100644 index 0000000000..f78b6c9983 --- /dev/null +++ b/apps/web/.gitignore @@ -0,0 +1,15 @@ +.vs +.idea +.DS_Store +node_modules +npm-debug.log +vwd.webinfo +css/ +dist/ +*.pem +*.crx +*.zip +*.swp +build/ +!dev-server.shared.pem +config/local.json diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile new file mode 100644 index 0000000000..41be86e584 --- /dev/null +++ b/apps/web/Dockerfile @@ -0,0 +1,20 @@ +FROM bitwarden/server + +LABEL com.bitwarden.product="bitwarden" + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + gosu \ + curl \ +&& rm -rf /var/lib/apt/lists/* + +ENV ASPNETCORE_URLS http://+:5000 +WORKDIR /app +EXPOSE 5000 +COPY ./build . +COPY entrypoint.sh / +RUN chmod +x /entrypoint.sh + +HEALTHCHECK CMD curl -f http://localhost:5000 || exit 1 + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/apps/web/README.md b/apps/web/README.md new file mode 100644 index 0000000000..1b8dfe7726 --- /dev/null +++ b/apps/web/README.md @@ -0,0 +1,98 @@ +> **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. + +

+ +

+

+ The Bitwarden web project is an Angular application that powers the web vault (https://vault.bitwarden.com/). +

+

+ + Github Workflow build on master + + + Crowdin + + + DockerHub + + + gitter chat + +

+ +## Build/Run + +### Requirements + +- [Node.js](https://nodejs.org) v16.13.1 or greater +- NPM v8 + +### Run the app + +For local development, run the app with: + +``` +npm install +npm run build:oss:watch +``` + +You can now access the web vault in your browser at `https://localhost:8080`. + +If you want to point the development web vault to the production APIs, you can run using: + +``` +npm install +ENV=cloud npm run build:oss:watch +``` + +You can also manually adjusting your API endpoint settings by adding `config/local.json` overriding any of the following values: + +```json +{ + "dev": { + "proxyApi": "http://your-api-url", + "proxyIdentity": "http://your-identity-url", + "proxyEvents": "http://your-events-url", + "proxyNotifications": "http://your-notifications-url", + "allowedHosts": ["hostnames-to-allow-in-webpack"] + }, + "urls": {} +} +``` + +Where the `urls` object is defined by the [Urls type in jslib](https://github.com/bitwarden/jslib/blob/master/common/src/abstractions/environment.service.ts). + +## 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 2b0a9d995e0147601ca8ae4778434a19354a60c2` +3. Resolve any merge conflicts, commit. +4. Run `npm run prettier` +5. Commit +6. Run `git merge -Xours 56477eb39cfd8a73c9920577d24d75fed36e2cf5` +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/web/config.js b/apps/web/config.js new file mode 100644 index 0000000000..2bfc929d35 --- /dev/null +++ b/apps/web/config.js @@ -0,0 +1,36 @@ +function load(envName) { + return { + ...require("./config/base.json"), + ...loadConfig(envName), + ...loadConfig("local"), + dev: { + ...require("./config/base.json").dev, + ...loadConfig(envName).dev, + ...loadConfig("local").dev, + }, + }; +} + +function log(configObj) { + const repeatNum = 50; + console.log(`${"=".repeat(repeatNum)}\nenvConfig`); + console.log(JSON.stringify(configObj, null, 2)); + console.log(`${"=".repeat(repeatNum)}`); +} + +function loadConfig(configName) { + try { + return require(`./config/${configName}.json`); + } catch (e) { + if (e instanceof Error && e.code === "MODULE_NOT_FOUND") { + return {}; + } else { + throw e; + } + } +} + +module.exports = { + load, + log, +}; diff --git a/apps/web/config/base.json b/apps/web/config/base.json new file mode 100644 index 0000000000..b6a41c203e --- /dev/null +++ b/apps/web/config/base.json @@ -0,0 +1,13 @@ +{ + "urls": {}, + "stripeKey": "pk_test_KPoCfZXu7mznb9uSCPZ2JpTD", + "braintreeKey": "sandbox_r72q8jq6_9pnxkwm75f87sdc2", + "paypal": { + "businessId": "AD3LAUZSNVPJY", + "buttonAction": "https://www.sandbox.paypal.com/cgi-bin/webscr" + }, + "dev": { + "port": 8080, + "allowedHosts": "auto" + } +} diff --git a/apps/web/config/cloud.json b/apps/web/config/cloud.json new file mode 100644 index 0000000000..51f29a05f9 --- /dev/null +++ b/apps/web/config/cloud.json @@ -0,0 +1,17 @@ +{ + "urls": { + "icons": "https://icons.bitwarden.net", + "notifications": "https://notifications.bitwarden.com" + }, + "stripeKey": "pk_live_bpN0P37nMxrMQkcaHXtAybJk", + "braintreeKey": "production_qfbsv8kc_njj2zjtyngtjmbjd", + "paypal": { + "businessId": "4ZDA7DLUUJGMN", + "buttonAction": "https://www.paypal.com/cgi-bin/webscr" + }, + "dev": { + "proxyApi": "https://api.bitwarden.com", + "proxyIdentity": "https://identity.bitwarden.com", + "proxyEvents": "https://events.bitwarden.com" + } +} diff --git a/apps/web/config/development.json b/apps/web/config/development.json new file mode 100644 index 0000000000..7554af381d --- /dev/null +++ b/apps/web/config/development.json @@ -0,0 +1,11 @@ +{ + "urls": { + "notifications": "http://localhost:61840" + }, + "dev": { + "proxyApi": "http://localhost:4000", + "proxyIdentity": "http://localhost:33656", + "proxyEvents": "http://localhost:46273", + "proxyNotifications": "http://localhost:61840" + } +} diff --git a/apps/web/config/qa.json b/apps/web/config/qa.json new file mode 100644 index 0000000000..189b94d2a3 --- /dev/null +++ b/apps/web/config/qa.json @@ -0,0 +1,11 @@ +{ + "urls": { + "icons": "https://icons.qa.bitwarden.pw", + "notifications": "https://notifications.qa.bitwarden.pw" + }, + "dev": { + "proxyApi": "https://api.qa.bitwarden.pw", + "proxyIdentity": "https://identity.qa.bitwarden.pw", + "proxyEvents": "https://events.qa.bitwarden.pw" + } +} diff --git a/apps/web/config/selfhosted.json b/apps/web/config/selfhosted.json new file mode 100644 index 0000000000..208a355a85 --- /dev/null +++ b/apps/web/config/selfhosted.json @@ -0,0 +1,9 @@ +{ + "dev": { + "proxyApi": "http://localhost:4001", + "proxyIdentity": "http://localhost:33657", + "proxyEvents": "http://localhost:46274", + "proxyNotifications": "http://localhost:61841", + "port": 8081 + } +} diff --git a/apps/web/crowdin.yml b/apps/web/crowdin.yml new file mode 100644 index 0000000000..821f35d2c7 --- /dev/null +++ b/apps/web/crowdin.yml @@ -0,0 +1,18 @@ +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/%file_name%.%file_extension% + 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 + sr-CY: sr_CY + sr-CS: sr_CS diff --git a/apps/web/dev-server.shared.pem b/apps/web/dev-server.shared.pem new file mode 100644 index 0000000000..908853556f --- /dev/null +++ b/apps/web/dev-server.shared.pem @@ -0,0 +1,45 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDaEy1cPw07irjg +4wUgaxshW7oQrgVoNZYRROmdU20K22L+HyG2ahW6usiWw8+6fPgVve7Y1z+/GYsK +DhaDdY1Ket3JvZHxoAJ/+6lYY+05PhtmYnyEZzZlnuYx/tu3vyGpsXqMpzL3ZrX2 +Mh2dWE7ZXKxsyig4wSDJhBPMrW8HKXLrLR/JPFhu/nz5MpRF5LfzWU13FEfmS43s +PEkBCn5ZxhVX4eNclQhTl7oOo5LU+KCWn+C/GPQir7pdmMoYF6D5j3qtbsq9irPe +qR7HsM9z6DnX+L0mF31P2S6OTgLT3kuWJn9vqLUwvQWGFvSSzpw7JgGBK3eX6zE9 +2koGWP9NAgMBAAECggEAIpwCie5TykxU1RQSfzegYaXuHLGRmB1RCMKYFOjlmGCD +EHOeZRXnBvCX3x2KfT1SHhk7q9xVeJ20LE9aEVj5qIVhZ6AXZnKPkwI8uRN61afe +r1wYCOdcgbo7LFoXQs0pqYXKPkJW217IqB8CBjO6p9KGZumago9cBb9ZaRVpVohZ +c6YHeatrna2mPb/EUPHdT0RHHQ5Dz2ToPjCkDtxsNHLZLekR35WIMtCBlp0xY5hb +5h54ZxnaMihvHTLa8L/pgxGEUsP+XFpdXkM1oREzh8tDRFcUL8mUVZq8bGyzALn5 +MxDhdXqxrnyD2cQ/cSqXLs1/2mh5eccU3g5IaNtrAQKBgQD0Q4K2UYXa8jWQu7jI +b37zwr2EypLFjeluqF4fxs+oz3UYEXeBDK0Td19/tze6/XieKibKDtFrOZQwDDKC +AVxD7Dm58T9Jf4LDHNYOfYL3X/E4H+JrVBh94s0B00jVJ6TnEQDMuLi+wMGtvTdW +huxoNefIWKf73ozvxIF+nsyeDQKBgQDkjYoXkBtfNgQR42RVA0/UdLLDWWctMU4F +sJYc1bLL3txbf+fK7QzbU/ggLMW0hv8/IdyirGJhW3G0K0yhpAOlPhe36qv4QyhD +o2nFlRrzfzvGJAgH9b1s+VcL/cSIuv4aCkbv97DAoQGPzAWEKv5gY1iw1DsGgrz5 +svZUvd7WQQKBgQDPrp7yuTngQNP+bT3dXb9JLqjIwRwt0E1LgugUiIuDcnCSuDct +iEOYK4UNKBDAckcd46T7Y8H3MwumFpjTJKj4L1+dk1tF+J6Lmnb99wVlozOLjsCK +lQQF9NJt3OEuKvjwZeqSJfUeavHB8QGeFjXnHP4nwAmEA2M9cYzQxeAf+QKBgCbS +U+6Er+GQT0iqk1RNZ7XyzJqaCQiII3Sb9iOXuPMgO9Xe+ARkF5b5wF/Wuw5bD+gt +XEjVdzCKU9oCsNWUAnqC/Yxj9CoLXj9+9mx1U0qhBgo1/Jc9ipuEDuEejc+b06Wg +sUP5krBlqNpAEX/Nvb+poFsI8a29b1QKrgTe64cBAoGALg92rZBG60N2n8fTokou +f1fui8Ftb+vOVGv9CM6icmNuwXeMF40A33Hvx14XLFk6B5p5dtVyOR660rRv4HRV +cBUm5wwCZjwR5Aj83XGR0PRbTNFNngHbawQiutSo6dw8cNNKCZMywVh2KX29dsLh +0Yj++kb8+G1kzFonR8WWoC8= +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIICwzCCAaugAwIBAgIJAN5sbMfEx05qMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMTCWxvY2FsaG9zdDAeFw0xODA2MDUwMzMxNDhaFw0yODA2MDIwMzMxNDhaMBQx +EjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBANoTLVw/DTuKuODjBSBrGyFbuhCuBWg1lhFE6Z1TbQrbYv4fIbZqFbq6yJbD +z7p8+BW97tjXP78ZiwoOFoN1jUp63cm9kfGgAn/7qVhj7Tk+G2ZifIRnNmWe5jH+ +27e/IamxeoynMvdmtfYyHZ1YTtlcrGzKKDjBIMmEE8ytbwcpcustH8k8WG7+fPky +lEXkt/NZTXcUR+ZLjew8SQEKflnGFVfh41yVCFOXug6jktT4oJaf4L8Y9CKvul2Y +yhgXoPmPeq1uyr2Ks96pHsewz3PoOdf4vSYXfU/ZLo5OAtPeS5Ymf2+otTC9BYYW +9JLOnDsmAYErd5frMT3aSgZY/00CAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxo +b3N0MA0GCSqGSIb3DQEBCwUAA4IBAQCBTn7szrcs+fSs1Q/a2O3ng35zcme6NRhp +T65RP0ooj3tPT9QlTJyKjo9Yb2RW2RGVbQO86mkYe9N9wcZkzurZ6KDqsfBn3FkI +eZA1G/za907Dt/25mOdrsav7NmFBwxo9iuZ/cozgneK1mAXOu4nDI5yYvAlvNA6E +iXgls4WX1LtHL5b9YV7Jz27d5tTmGxEimakMBo+zr10vCtMCsTlDs/ChamnI7ljN +7B4WIVUMI3xOZzqClLnSzFJNReAlapjtGtp1qH6Y+6aZ9OErIwZOjE9CYYvm6MbE +CblXQ9Uifpwrc09TA5S2Y/9+VxUBF9xlxh8hkcGLTzlNFDzVWdmR +-----END CERTIFICATE----- diff --git a/apps/web/entrypoint.sh b/apps/web/entrypoint.sh new file mode 100644 index 0000000000..16d1c78fb7 --- /dev/null +++ b/apps/web/entrypoint.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Setup + +GROUPNAME="bitwarden" +USERNAME="bitwarden" + +LUID=${LOCAL_UID:-0} +LGID=${LOCAL_GID:-0} + +# Step down from host root to well-known nobody/nogroup user + +if [ $LUID -eq 0 ] +then + LUID=65534 +fi +if [ $LGID -eq 0 ] +then + LGID=65534 +fi + +# Create user and group + +groupadd -o -g $LGID $GROUPNAME >/dev/null 2>&1 || +groupmod -o -g $LGID $GROUPNAME >/dev/null 2>&1 +useradd -o -u $LUID -g $GROUPNAME -s /bin/false $USERNAME >/dev/null 2>&1 || +usermod -o -u $LUID -g $GROUPNAME -s /bin/false $USERNAME >/dev/null 2>&1 +mkhomedir_helper $USERNAME + +# The rest... + +chown -R $USERNAME:$GROUPNAME /etc/bitwarden +cp /etc/bitwarden/web/app-id.json /app/app-id.json +chown -R $USERNAME:$GROUPNAME /app +chown -R $USERNAME:$GROUPNAME /bitwarden_server + +exec gosu $USERNAME:$GROUPNAME dotnet /bitwarden_server/Server.dll \ + /contentRoot=/app /webRoot=. /serveUnknown=false /webVault=true diff --git a/apps/web/package.json b/apps/web/package.json new file mode 100644 index 0000000000..17ca5bab1b --- /dev/null +++ b/apps/web/package.json @@ -0,0 +1,22 @@ +{ + "name": "@bitwarden/web-vault", + "version": "2022.05.0", + "scripts": { + "build:oss": "webpack", + "build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js", + "build:oss:watch": "webpack serve", + "build:bit:watch": "webpack serve -c ../../bitwarden_license/bit-web/webpack.config.js", + "build:bit:dev": "cross-env ENV=development npm run build:bit", + "build:bit:dev:watch": "cross-env ENV=development npm run build:bit:watch", + "build:bit:qa": "cross-env NODE_ENV=production ENV=qa npm run build:bit", + "build:bit:cloud": "cross-env NODE_ENV=production ENV=cloud npm run build:bit", + "build:oss:selfhost:watch": "cross-env ENV=selfhosted npm run build:oss:watch", + "build:bit:selfhost:watch": "cross-env ENV=selfhosted npm run build:bit:watch", + "build:oss:selfhost:prod": "cross-env ENV=selfhosted NODE_ENV=production npm run build:oss", + "build:bit:selfhost:prod": "cross-env ENV=selfhosted NODE_ENV=production npm run build:bit", + "clean:l10n": "git push origin --delete l10n_master", + "dist:bit:cloud": "npm run build:bit:cloud", + "dist:oss:selfhost": "npm run build:oss:selfhost:prod", + "dist:bit:selfhost": "npm run build:bit:selfhost:prod" + } +} diff --git a/apps/web/postcss.config.js b/apps/web/postcss.config.js new file mode 100644 index 0000000000..c4513687e8 --- /dev/null +++ b/apps/web/postcss.config.js @@ -0,0 +1,4 @@ +/* eslint-disable no-undef */ +module.exports = { + plugins: [require("tailwindcss"), require("autoprefixer"), require("postcss-nested")], +}; diff --git a/apps/web/scripts/optimize.js b/apps/web/scripts/optimize.js new file mode 100644 index 0000000000..217a91e3db --- /dev/null +++ b/apps/web/scripts/optimize.js @@ -0,0 +1,21 @@ +const child_process = require("child_process"); +const path = require("path"); + +const images = process.argv.slice(2); + +images.forEach((img) => { + switch (img.split(".").pop()) { + case "png": + child_process.execSync( + `npx @squoosh/cli --oxipng {} --output-dir "${path.dirname(img)}" "${img}"` + ); + break; + case "jpg": + child_process.execSync( + `npx @squoosh/cli --mozjpeg {"quality":85,"baseline":false,"arithmetic":false,"progressive":true,"optimize_coding":true,"smoothing":0,"color_space":3,"quant_table":3,"trellis_multipass":false,"trellis_opt_zero":false,"trellis_opt_table":false,"trellis_loops":1,"auto_subsample":true,"chroma_subsample":2,"separate_chroma_quality":false,"chroma_quality":75} --output-dir "${path.dirname( + img + )}" "${img}"` + ); + break; + } +}); diff --git a/apps/web/src/.nojekyll b/apps/web/src/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/web/src/404.html b/apps/web/src/404.html new file mode 100644 index 0000000000..6cf5e363d5 --- /dev/null +++ b/apps/web/src/404.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + Page not found! + + + + + +
+

Page not found!

+

Sorry, but the page you were looking for could not be found.

+

+ + 404 image + +

+

+ You can return to the web vault, check our + status page or + contact us. +

+
+ + + diff --git a/apps/web/src/404/bootstrap.min.css b/apps/web/src/404/bootstrap.min.css new file mode 100644 index 0000000000..282380667e --- /dev/null +++ b/apps/web/src/404/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ diff --git a/apps/web/src/404/styles.css b/apps/web/src/404/styles.css new file mode 100644 index 0000000000..7dec3947a6 --- /dev/null +++ b/apps/web/src/404/styles.css @@ -0,0 +1,151 @@ +@font-face { + font-family: "Open Sans"; + font-style: italic; + font-weight: 300; + src: url(../fonts/Open_Sans-italic-300.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: italic; + font-weight: 400; + src: url(../fonts/Open_Sans-italic-400.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: italic; + font-weight: 600; + src: url(../fonts/Open_Sans-italic-600.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: italic; + font-weight: 700; + src: url(../fonts/Open_Sans-italic-700.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: italic; + font-weight: 800; + src: url(../fonts/Open_Sans-italic-800.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 300; + src: url(../fonts/Open_Sans-normal-300.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 400; + src: url(../fonts/Open_Sans-normal-400.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 600; + src: url(../fonts/Open_Sans-normal-600.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 700; + src: url(../fonts/Open_Sans-normal-700.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 800; + src: url(../fonts/Open_Sans-normal-800.woff) format("woff"); + unicode-range: U+0-10FFFF; +} + +body { + font-family: "Open Sans"; +} + +html, +body, +.row { + height: 100%; + -webkit-font-smoothing: antialiased; +} + +h2 { + font-size: 25px; + margin-bottom: 12.5px; + font-weight: 500; + line-height: 1.1; +} + +.brand { + font-size: 23px; + line-height: 25px; + color: #fff; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.banner { + background-color: #175ddc; + height: 56px; +} + +.content { + padding-top: 20px; + padding-bottom: 20px; + padding-left: 15px; + padding-right: 15px; +} + +.footer { + padding: 40px 0 40px 0; + border-top: 1px solid #dee2e6; +} + +/* Bitwarden icons, manually copied */ + +@font-face { + font-family: "bwi-font"; + src: url(../images/bwi-font.svg) format("svg"), url(../fonts/bwi-font.ttf) format("truetype"), + url(../fonts/bwi-font.woff) format("woff"), url(../fonts/bwi-font.woff2) format("woff2"); + font-weight: normal; + font-style: normal; + font-display: block; +} + +.bwi { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: "bwi-font" !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + display: inline-block; + /* Better Font Rendering */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bwi-shield:before { + content: "\e932"; +} diff --git a/apps/web/src/abstractions/state.service.ts b/apps/web/src/abstractions/state.service.ts new file mode 100644 index 0000000000..f5faf5f7d6 --- /dev/null +++ b/apps/web/src/abstractions/state.service.ts @@ -0,0 +1,9 @@ +import { StateService as BaseStateService } from "jslib-common/abstractions/state.service"; +import { StorageOptions } from "jslib-common/models/domain/storageOptions"; + +import { Account } from "src/models/account"; + +export abstract class StateService extends BaseStateService { + getRememberEmail: (options?: StorageOptions) => Promise; + setRememberEmail: (value: boolean, options?: StorageOptions) => Promise; +} diff --git a/apps/web/src/app-id.json b/apps/web/src/app-id.json new file mode 100644 index 0000000000..2015f662b7 --- /dev/null +++ b/apps/web/src/app-id.json @@ -0,0 +1,15 @@ +{ + "trustedFacets": [ + { + "version": { + "major": 1, + "minor": 0 + }, + "ids": [ + "https://vault.bitwarden.com", + "ios:bundle-id:com.8bit.bitwarden", + "android:apk-key-hash:dUGFzUzf3lmHSLBDBIv+WaFyZMI" + ] + } + ] +} diff --git a/apps/web/src/app/accounts/accept-emergency.component.html b/apps/web/src/app/accounts/accept-emergency.component.html new file mode 100644 index 0000000000..4690a4e63a --- /dev/null +++ b/apps/web/src/app/accounts/accept-emergency.component.html @@ -0,0 +1,45 @@ +
+
+ +

+ + {{ "loading" | i18n }} +

+
+
+
+
+
+

{{ "emergencyAccess" | i18n }}

+
+
+

+ {{ name }} +

+

{{ "acceptEmergencyAccess" | i18n }}

+
+ +
+
+
+
+
diff --git a/apps/web/src/app/accounts/accept-emergency.component.ts b/apps/web/src/app/accounts/accept-emergency.component.ts new file mode 100644 index 0000000000..c790a924be --- /dev/null +++ b/apps/web/src/app/accounts/accept-emergency.component.ts @@ -0,0 +1,55 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { EmergencyAccessAcceptRequest } from "jslib-common/models/request/emergencyAccessAcceptRequest"; + +import { BaseAcceptComponent } from "../common/base.accept.component"; + +@Component({ + selector: "app-accept-emergency", + templateUrl: "accept-emergency.component.html", +}) +export class AcceptEmergencyComponent extends BaseAcceptComponent { + name: string; + + protected requiredParameters: string[] = ["id", "name", "email", "token"]; + protected failedShortMessage = "emergencyInviteAcceptFailedShort"; + protected failedMessage = "emergencyInviteAcceptFailed"; + + constructor( + router: Router, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + route: ActivatedRoute, + private apiService: ApiService, + stateService: StateService + ) { + super(router, platformUtilsService, i18nService, route, stateService); + } + + async authedHandler(qParams: any): Promise { + const request = new EmergencyAccessAcceptRequest(); + request.token = qParams.token; + this.actionPromise = this.apiService.postEmergencyAccessAccept(qParams.id, request); + await this.actionPromise; + this.platformUtilService.showToast( + "success", + this.i18nService.t("inviteAccepted"), + this.i18nService.t("emergencyInviteAcceptedDesc"), + { timeout: 10000 } + ); + this.router.navigate(["/vault"]); + } + + async unauthedHandler(qParams: any): Promise { + this.name = qParams.name; + if (this.name != null) { + // Fix URL encoding of space issue with Angular + this.name = this.name.replace(/\+/g, " "); + } + } +} diff --git a/apps/web/src/app/accounts/accept-organization.component.html b/apps/web/src/app/accounts/accept-organization.component.html new file mode 100644 index 0000000000..25d90d93e0 --- /dev/null +++ b/apps/web/src/app/accounts/accept-organization.component.html @@ -0,0 +1,46 @@ +
+
+ +

+ + {{ "loading" | i18n }} +

+
+
+
+
+
+

{{ "joinOrganization" | i18n }}

+
+
+

+ {{ orgName }} + {{ email }} +

+

{{ "joinOrganizationDesc" | i18n }}

+
+ +
+
+
+
+
diff --git a/apps/web/src/app/accounts/accept-organization.component.ts b/apps/web/src/app/accounts/accept-organization.component.ts new file mode 100644 index 0000000000..0d59562a66 --- /dev/null +++ b/apps/web/src/app/accounts/accept-organization.component.ts @@ -0,0 +1,126 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { Utils } from "jslib-common/misc/utils"; +import { Policy } from "jslib-common/models/domain/policy"; +import { OrganizationUserAcceptRequest } from "jslib-common/models/request/organizationUserAcceptRequest"; +import { OrganizationUserResetPasswordEnrollmentRequest } from "jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest"; + +import { BaseAcceptComponent } from "../common/base.accept.component"; + +@Component({ + selector: "app-accept-organization", + templateUrl: "accept-organization.component.html", +}) +export class AcceptOrganizationComponent extends BaseAcceptComponent { + orgName: string; + + protected requiredParameters: string[] = ["organizationId", "organizationUserId", "token"]; + + constructor( + router: Router, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + route: ActivatedRoute, + private apiService: ApiService, + stateService: StateService, + private cryptoService: CryptoService, + private policyService: PolicyService, + private logService: LogService + ) { + super(router, platformUtilsService, i18nService, route, stateService); + } + + async authedHandler(qParams: any): Promise { + const request = new OrganizationUserAcceptRequest(); + request.token = qParams.token; + if (await this.performResetPasswordAutoEnroll(qParams)) { + this.actionPromise = this.apiService + .postOrganizationUserAccept(qParams.organizationId, qParams.organizationUserId, request) + .then(() => { + // Retrieve Public Key + return this.apiService.getOrganizationKeys(qParams.organizationId); + }) + .then(async (response) => { + if (response == null) { + throw new Error(this.i18nService.t("resetPasswordOrgKeysError")); + } + + const publicKey = Utils.fromB64ToArray(response.publicKey); + + // RSA Encrypt user's encKey.key with organization public key + const encKey = await this.cryptoService.getEncKey(); + const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer); + + // Create request and execute enrollment + const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest(); + resetRequest.resetPasswordKey = encryptedKey.encryptedString; + + return this.apiService.putOrganizationUserResetPasswordEnrollment( + qParams.organizationId, + await this.stateService.getUserId(), + resetRequest + ); + }); + } else { + this.actionPromise = this.apiService.postOrganizationUserAccept( + qParams.organizationId, + qParams.organizationUserId, + request + ); + } + + await this.actionPromise; + this.platformUtilService.showToast( + "success", + this.i18nService.t("inviteAccepted"), + this.i18nService.t("inviteAcceptedDesc"), + { timeout: 10000 } + ); + + await this.stateService.setOrganizationInvitation(null); + this.router.navigate(["/vault"]); + } + + async unauthedHandler(qParams: any): Promise { + this.orgName = qParams.organizationName; + if (this.orgName != null) { + // Fix URL encoding of space issue with Angular + this.orgName = this.orgName.replace(/\+/g, " "); + } + await this.stateService.setOrganizationInvitation(qParams); + } + + private async performResetPasswordAutoEnroll(qParams: any): Promise { + let policyList: Policy[] = null; + try { + const policies = await this.apiService.getPoliciesByToken( + qParams.organizationId, + qParams.token, + qParams.email, + qParams.organizationUserId + ); + policyList = this.policyService.mapPoliciesFromToken(policies); + } catch (e) { + this.logService.error(e); + } + + if (policyList != null) { + const result = this.policyService.getResetPasswordPolicyOptions( + policyList, + qParams.organizationId + ); + // Return true if policy enabled and auto-enroll enabled + return result[1] && result[0].autoEnrollEnabled; + } + + return false; + } +} diff --git a/apps/web/src/app/accounts/hint.component.html b/apps/web/src/app/accounts/hint.component.html new file mode 100644 index 0000000000..786643d947 --- /dev/null +++ b/apps/web/src/app/accounts/hint.component.html @@ -0,0 +1,44 @@ +
+
+
+

{{ "passwordHint" | i18n }}

+
+
+
+ + + {{ "enterEmailToGetHint" | i18n }} +
+
+
+ + + {{ "cancel" | i18n }} + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/hint.component.ts b/apps/web/src/app/accounts/hint.component.ts new file mode 100644 index 0000000000..d47b8b52d7 --- /dev/null +++ b/apps/web/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, + i18nService: I18nService, + apiService: ApiService, + platformUtilsService: PlatformUtilsService, + logService: LogService + ) { + super(router, i18nService, apiService, platformUtilsService, logService); + } +} diff --git a/apps/web/src/app/accounts/lock.component.html b/apps/web/src/app/accounts/lock.component.html new file mode 100644 index 0000000000..a45ef0d5af --- /dev/null +++ b/apps/web/src/app/accounts/lock.component.html @@ -0,0 +1,66 @@ +
+
+
+

+ +

+

{{ "yourVaultIsLocked" | i18n }}

+
+
+
+ +
+ + +
+ + {{ "loggedInAsEmailOn" | i18n: email:webVaultHostname }} + +
+
+
+ + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/lock.component.ts b/apps/web/src/app/accounts/lock.component.ts new file mode 100644 index 0000000000..791481003c --- /dev/null +++ b/apps/web/src/app/accounts/lock.component.ts @@ -0,0 +1,64 @@ +import { Component, NgZone } from "@angular/core"; +import { Router } from "@angular/router"; + +import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component"; +import { ApiService } from "jslib-common/abstractions/api.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"; + +import { RouterService } from "../services/router.service"; + +@Component({ + selector: "app-lock", + templateUrl: "lock.component.html", +}) +export class LockComponent extends BaseLockComponent { + constructor( + router: Router, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + messagingService: MessagingService, + cryptoService: CryptoService, + vaultTimeoutService: VaultTimeoutService, + environmentService: EnvironmentService, + private routerService: RouterService, + stateService: StateService, + apiService: ApiService, + logService: LogService, + keyConnectorService: KeyConnectorService, + ngZone: NgZone + ) { + super( + router, + i18nService, + platformUtilsService, + messagingService, + cryptoService, + vaultTimeoutService, + environmentService, + stateService, + apiService, + logService, + keyConnectorService, + ngZone + ); + } + + async ngOnInit() { + await super.ngOnInit(); + this.onSuccessfulSubmit = async () => { + const previousUrl = this.routerService.getPreviousUrl(); + if (previousUrl && previousUrl !== "/" && previousUrl.indexOf("lock") === -1) { + this.successRoute = previousUrl; + } + this.router.navigateByUrl(this.successRoute); + }; + } +} diff --git a/apps/web/src/app/accounts/login.component.html b/apps/web/src/app/accounts/login.component.html new file mode 100644 index 0000000000..e0c4ef68db --- /dev/null +++ b/apps/web/src/app/accounts/login.component.html @@ -0,0 +1,102 @@ +
+
+
+ +

{{ "loginOrCreateNewAccount" | i18n }}

+
+
+ + {{ "resetPasswordAutoEnrollInviteWarning" | i18n }} + +
+ + +
+
+ +
+ + +
+ + {{ "getMasterPasswordHint" | i18n }} + +
+
+ + +
+
+ +
+
+
+ + + + {{ "createAccount" | i18n }} + +
+ +
+
+
+
+
diff --git a/apps/web/src/app/accounts/login.component.ts b/apps/web/src/app/accounts/login.component.ts new file mode 100644 index 0000000000..524137a680 --- /dev/null +++ b/apps/web/src/app/accounts/login.component.ts @@ -0,0 +1,179 @@ +import { Component, NgZone } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.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 { 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 { PolicyData } from "jslib-common/models/data/policyData"; +import { MasterPasswordPolicyOptions } from "jslib-common/models/domain/masterPasswordPolicyOptions"; +import { Policy } from "jslib-common/models/domain/policy"; +import { ListResponse } from "jslib-common/models/response/listResponse"; +import { PolicyResponse } from "jslib-common/models/response/policyResponse"; + +import { StateService } from "../../abstractions/state.service"; +import { RouterService } from "../services/router.service"; + +@Component({ + selector: "app-login", + templateUrl: "login.component.html", +}) +export class LoginComponent extends BaseLoginComponent { + showResetPasswordAutoEnrollWarning = false; + enforcedPasswordPolicyOptions: MasterPasswordPolicyOptions; + policies: ListResponse; + + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + private route: ActivatedRoute, + platformUtilsService: PlatformUtilsService, + environmentService: EnvironmentService, + passwordGenerationService: PasswordGenerationService, + cryptoFunctionService: CryptoFunctionService, + private apiService: ApiService, + private policyService: PolicyService, + logService: LogService, + ngZone: NgZone, + protected stateService: StateService, + private messagingService: MessagingService, + private routerService: RouterService + ) { + super( + authService, + router, + platformUtilsService, + i18nService, + stateService, + environmentService, + passwordGenerationService, + cryptoFunctionService, + logService, + ngZone + ); + this.onSuccessfulLogin = async () => { + this.messagingService.send("setFullWidth"); + }; + this.onSuccessfulLoginNavigate = this.goAfterLogIn; + } + + async ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + if (qParams.email != null && qParams.email.indexOf("@") > -1) { + this.email = qParams.email; + } + if (qParams.premium != null) { + this.routerService.setPreviousUrl("/settings/premium"); + } else if (qParams.org != null) { + const route = this.router.createUrlTree(["create-organization"], { + queryParams: { plan: qParams.org }, + }); + this.routerService.setPreviousUrl(route.toString()); + } + + // Are they coming from an email for sponsoring a families organization + if (qParams.sponsorshipToken != null) { + const route = this.router.createUrlTree(["setup/families-for-enterprise"], { + queryParams: { token: qParams.sponsorshipToken }, + }); + this.routerService.setPreviousUrl(route.toString()); + } + await super.ngOnInit(); + this.rememberEmail = await this.stateService.getRememberEmail(); + }); + + const invite = await this.stateService.getOrganizationInvitation(); + if (invite != null) { + let policyList: Policy[] = null; + try { + this.policies = await this.apiService.getPoliciesByToken( + invite.organizationId, + invite.token, + invite.email, + invite.organizationUserId + ); + policyList = this.policyService.mapPoliciesFromToken(this.policies); + } catch (e) { + this.logService.error(e); + } + + if (policyList != null) { + const resetPasswordPolicy = this.policyService.getResetPasswordPolicyOptions( + policyList, + invite.organizationId + ); + // Set to true if policy enabled and auto-enroll enabled + this.showResetPasswordAutoEnrollWarning = + resetPasswordPolicy[1] && resetPasswordPolicy[0].autoEnrollEnabled; + + this.enforcedPasswordPolicyOptions = + await this.policyService.getMasterPasswordPolicyOptions(policyList); + } + } + } + + async goAfterLogIn() { + // Check master password against policy + if (this.enforcedPasswordPolicyOptions != null) { + const strengthResult = this.passwordGenerationService.passwordStrength( + this.masterPassword, + this.getPasswordStrengthUserInput() + ); + const masterPasswordScore = strengthResult == null ? null : strengthResult.score; + + // If invalid, save policies and require update + if ( + !this.policyService.evaluateMasterPassword( + masterPasswordScore, + this.masterPassword, + this.enforcedPasswordPolicyOptions + ) + ) { + const policiesData: { [id: string]: PolicyData } = {}; + this.policies.data.map((p) => (policiesData[p.id] = new PolicyData(p))); + await this.policyService.replace(policiesData); + this.router.navigate(["update-password"]); + return; + } + } + + const previousUrl = this.routerService.getPreviousUrl(); + if (previousUrl) { + this.router.navigateByUrl(previousUrl); + } else { + this.router.navigate([this.successRoute]); + } + } + + async submit() { + await this.stateService.setRememberEmail(this.rememberEmail); + if (!this.rememberEmail) { + await this.stateService.setRememberedEmail(null); + } + await super.submit(); + } + + private getPasswordStrengthUserInput() { + let userInput: string[] = []; + const atPosition = this.email.indexOf("@"); + if (atPosition > -1) { + userInput = userInput.concat( + this.email + .substr(0, atPosition) + .trim() + .toLowerCase() + .split(/[^A-Za-z0-9]/) + ); + } + return userInput; + } +} diff --git a/apps/web/src/app/accounts/recover-delete.component.html b/apps/web/src/app/accounts/recover-delete.component.html new file mode 100644 index 0000000000..5b3ba90565 --- /dev/null +++ b/apps/web/src/app/accounts/recover-delete.component.html @@ -0,0 +1,44 @@ +
+
+
+

{{ "deleteAccount" | i18n }}

+
+
+

{{ "deleteRecoverDesc" | i18n }}

+
+ + +
+
+
+ + + {{ "cancel" | i18n }} + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/recover-delete.component.ts b/apps/web/src/app/accounts/recover-delete.component.ts new file mode 100644 index 0000000000..00b69d1248 --- /dev/null +++ b/apps/web/src/app/accounts/recover-delete.component.ts @@ -0,0 +1,42 @@ +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +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 { DeleteRecoverRequest } from "jslib-common/models/request/deleteRecoverRequest"; + +@Component({ + selector: "app-recover-delete", + templateUrl: "recover-delete.component.html", +}) +export class RecoverDeleteComponent { + email: string; + formPromise: Promise; + + constructor( + private router: Router, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private logService: LogService + ) {} + + async submit() { + try { + const request = new DeleteRecoverRequest(); + request.email = this.email.trim().toLowerCase(); + this.formPromise = this.apiService.postAccountRecoverDelete(request); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("deleteRecoverEmailSent") + ); + this.router.navigate(["/"]); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/accounts/recover-two-factor.component.html b/apps/web/src/app/accounts/recover-two-factor.component.html new file mode 100644 index 0000000000..744ce3dae1 --- /dev/null +++ b/apps/web/src/app/accounts/recover-two-factor.component.html @@ -0,0 +1,76 @@ +
+
+
+

{{ "recoverAccountTwoStep" | i18n }}

+
+
+

+ {{ "recoverAccountTwoStepDesc" | i18n }} + {{ "learnMore" | i18n }} +

+
+ + +
+
+ + +
+
+ + +
+
+
+ + + {{ "cancel" | i18n }} + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/recover-two-factor.component.ts b/apps/web/src/app/accounts/recover-two-factor.component.ts new file mode 100644 index 0000000000..b7b219ffee --- /dev/null +++ b/apps/web/src/app/accounts/recover-two-factor.component.ts @@ -0,0 +1,51 @@ +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuthService } from "jslib-common/abstractions/auth.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 { TwoFactorRecoveryRequest } from "jslib-common/models/request/twoFactorRecoveryRequest"; + +@Component({ + selector: "app-recover-two-factor", + templateUrl: "recover-two-factor.component.html", +}) +export class RecoverTwoFactorComponent { + email: string; + masterPassword: string; + recoveryCode: string; + formPromise: Promise; + + constructor( + private router: Router, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private cryptoService: CryptoService, + private authService: AuthService, + private logService: LogService + ) {} + + async submit() { + try { + const request = new TwoFactorRecoveryRequest(); + request.recoveryCode = this.recoveryCode.replace(/\s/g, "").toLowerCase(); + request.email = this.email.trim().toLowerCase(); + const key = await this.authService.makePreloginKey(this.masterPassword, request.email); + request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key); + this.formPromise = this.apiService.postTwoFactorRecover(request); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("twoStepRecoverDisabled") + ); + this.router.navigate(["/"]); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/accounts/register.component.html b/apps/web/src/app/accounts/register.component.html new file mode 100644 index 0000000000..970c2c13de --- /dev/null +++ b/apps/web/src/app/accounts/register.component.html @@ -0,0 +1,355 @@ +
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+

The Bitwarden Password Manager

+

+ Trusted by millions of individuals, teams, and organizations worldwide for secure + password storage and sharing. +

+

Store logins, secure notes, and more

+

Collaborate and share securely

+

Access anywhere on any device

+

Create your account to get started

+
+ + +
+

+ Start Your Teams
Enterprise Free Trial Now +

+

+ Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure + password storage and sharing. +

+

Collaborate and share securely

+

Deploy and manage quickly and easily

+

Access anywhere on any device

+

Create your account to get started

+
+ + +
+

+ Start Your Teams
Enterprise Free Trial Now +

+

+ Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure + password storage and sharing. +

+

Collaborate and share securely

+

Deploy and manage quickly and easily

+

Access anywhere on any device

+

Create your account to get started

+
+ + +
+

Start Your Premium Account Now

+

+ Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure + password storage and sharing. +

+

Store logins, secure notes, and more

+

Secure your account with advanced two-step login

+

Access anywhere on any device

+

Create your account to get started

+
+
+
+
+
+
+

{{ "createAccount" | i18n }}

+
+
+ + {{ "createOrganizationCreatePersonalAccount" | i18n }} + +
+ + + {{ "emailAddressDesc" | i18n }} +
+
+ + + {{ "yourNameDesc" | i18n }} +
+
+ + + +
+
+ + + +
+
+ + +
+
+ {{ "masterPassDesc" | i18n }} +
+
+ +
+ + +
+
+
+ + + {{ "masterPassHintDesc" | i18n }} +
+
+ +
+
+
+ + +
+
+
+
+ + + {{ "cancel" | i18n }} + +
+
+
+
+
+
+
+
+
+
+
+
+ + cnet logo + +
+
+ "No more excuses; start using Bitwarden today. The identity you save could be your + own. The money definitely will be." +
+
+
+ +
+
+
+ + Forbes Logo + +
+
+ “Bitwarden boasts the backing of some of the world's best security experts and an + attractive, easy-to-use interface” +
+
+
+
+
+ US News 360 Reviews Best Password Manager +
+
+ US News 360 Reviews Best Password Manager +
+
+
+
diff --git a/apps/web/src/app/accounts/register.component.ts b/apps/web/src/app/accounts/register.component.ts new file mode 100644 index 0000000000..542bb8e3cb --- /dev/null +++ b/apps/web/src/app/accounts/register.component.ts @@ -0,0 +1,149 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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 { 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 { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { PolicyData } from "jslib-common/models/data/policyData"; +import { MasterPasswordPolicyOptions } from "jslib-common/models/domain/masterPasswordPolicyOptions"; +import { Policy } from "jslib-common/models/domain/policy"; +import { ReferenceEventRequest } from "jslib-common/models/request/referenceEventRequest"; + +import { RouterService } from "../services/router.service"; + +@Component({ + selector: "app-register", + templateUrl: "register.component.html", +}) +export class RegisterComponent extends BaseRegisterComponent { + showCreateOrgMessage = false; + layout = ""; + enforcedPolicyOptions: MasterPasswordPolicyOptions; + + private policies: Policy[]; + + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + cryptoService: CryptoService, + apiService: ApiService, + private route: ActivatedRoute, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + passwordGenerationService: PasswordGenerationService, + private policyService: PolicyService, + environmentService: EnvironmentService, + logService: LogService, + private routerService: RouterService + ) { + super( + authService, + router, + i18nService, + cryptoService, + apiService, + stateService, + platformUtilsService, + passwordGenerationService, + environmentService, + logService + ); + } + + async ngOnInit() { + this.route.queryParams.pipe(first()).subscribe((qParams) => { + this.referenceData = new ReferenceEventRequest(); + if (qParams.email != null && qParams.email.indexOf("@") > -1) { + this.email = qParams.email; + } + if (qParams.premium != null) { + this.routerService.setPreviousUrl("/settings/premium"); + } else if (qParams.org != null) { + this.showCreateOrgMessage = true; + this.referenceData.flow = qParams.org; + const route = this.router.createUrlTree(["create-organization"], { + queryParams: { plan: qParams.org }, + }); + this.routerService.setPreviousUrl(route.toString()); + } + if (qParams.layout != null) { + this.layout = this.referenceData.layout = qParams.layout; + } + if (qParams.reference != null) { + this.referenceData.id = qParams.reference; + } else { + this.referenceData.id = ("; " + document.cookie) + .split("; reference=") + .pop() + .split(";") + .shift(); + } + // Are they coming from an email for sponsoring a families organization + if (qParams.sponsorshipToken != null) { + // After logging in redirect them to setup the families sponsorship + const route = this.router.createUrlTree(["setup/families-for-enterprise"], { + queryParams: { plan: qParams.sponsorshipToken }, + }); + this.routerService.setPreviousUrl(route.toString()); + } + if (this.referenceData.id === "") { + this.referenceData.id = null; + } + }); + const invite = await this.stateService.getOrganizationInvitation(); + if (invite != null) { + try { + const policies = await this.apiService.getPoliciesByToken( + invite.organizationId, + invite.token, + invite.email, + invite.organizationUserId + ); + if (policies.data != null) { + const policiesData = policies.data.map((p) => new PolicyData(p)); + this.policies = policiesData.map((p) => new Policy(p)); + } + } catch (e) { + this.logService.error(e); + } + } + + if (this.policies != null) { + this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions( + this.policies + ); + } + + await super.ngOnInit(); + } + + async submit() { + if ( + this.enforcedPolicyOptions != null && + !this.policyService.evaluateMasterPassword( + this.masterPasswordScore, + this.masterPassword, + this.enforcedPolicyOptions + ) + ) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("masterPasswordPolicyRequirementsNotMet") + ); + return; + } + + await super.submit(); + } +} diff --git a/apps/web/src/app/accounts/remove-password.component.html b/apps/web/src/app/accounts/remove-password.component.html new file mode 100644 index 0000000000..19e0d63572 --- /dev/null +++ b/apps/web/src/app/accounts/remove-password.component.html @@ -0,0 +1,55 @@ +
+
+ +

+ + {{ "loading" | i18n }} +

+
+
+
+
+
+

{{ "removeMasterPassword" | i18n }}

+
+
+
+

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

+ + + +
+
+
+
+
diff --git a/apps/web/src/app/accounts/remove-password.component.ts b/apps/web/src/app/accounts/remove-password.component.ts new file mode 100644 index 0000000000..cdb75058ab --- /dev/null +++ b/apps/web/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/web/src/app/accounts/set-password.component.html b/apps/web/src/app/accounts/set-password.component.html new file mode 100644 index 0000000000..f02eee904b --- /dev/null +++ b/apps/web/src/app/accounts/set-password.component.html @@ -0,0 +1,117 @@ +
+
+
+

{{ "setMasterPassword" | i18n }}

+
+
+ + {{ "loading" | i18n }} +
+
+ {{ "ssoCompleteRegistration" | i18n }} + + {{ "resetPasswordAutoEnrollInviteWarning" | i18n }} + +
+ + + +
+
+ + + +
+
+ + +
+
+ {{ "masterPassDesc" | i18n }} +
+
+ +
+ + +
+
+
+ + + {{ "masterPassHintDesc" | i18n }} +
+
+
+ + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/set-password.component.ts b/apps/web/src/app/accounts/set-password.component.ts new file mode 100644 index 0000000000..604df7d73d --- /dev/null +++ b/apps/web/src/app/accounts/set-password.component.ts @@ -0,0 +1,47 @@ +import { Component } 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 { 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"; + +@Component({ + selector: "app-set-password", + templateUrl: "set-password.component.html", +}) +export class SetPasswordComponent extends BaseSetPasswordComponent { + constructor( + apiService: ApiService, + i18nService: I18nService, + cryptoService: CryptoService, + messagingService: MessagingService, + passwordGenerationService: PasswordGenerationService, + platformUtilsService: PlatformUtilsService, + policyService: PolicyService, + router: Router, + syncService: SyncService, + route: ActivatedRoute, + stateService: StateService + ) { + super( + i18nService, + cryptoService, + messagingService, + passwordGenerationService, + platformUtilsService, + policyService, + router, + apiService, + syncService, + route, + stateService + ); + } +} diff --git a/apps/web/src/app/accounts/sso.component.html b/apps/web/src/app/accounts/sso.component.html new file mode 100644 index 0000000000..f558895398 --- /dev/null +++ b/apps/web/src/app/accounts/sso.component.html @@ -0,0 +1,52 @@ +
+
+
+ +
+
+ + {{ "loading" | i18n }} +
+
+

{{ "ssoLogInWithOrgIdentifier" | i18n }}

+
+ + +
+
+
+ + + {{ "cancel" | i18n }} + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/sso.component.ts b/apps/web/src/app/accounts/sso.component.ts new file mode 100644 index 0000000000..27ee8bcc73 --- /dev/null +++ b/apps/web/src/app/accounts/sso.component.ts @@ -0,0 +1,72 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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"; + +@Component({ + selector: "app-sso", + templateUrl: "sso.component.html", +}) +export class SsoComponent extends BaseSsoComponent { + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + 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 + ); + this.redirectUri = window.location.origin + "/sso-connector.html"; + this.clientId = "web"; + } + + async ngOnInit() { + super.ngOnInit(); + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + if (qParams.identifier != null) { + this.identifier = qParams.identifier; + } else { + const storedIdentifier = await this.stateService.getSsoOrgIdentifier(); + if (storedIdentifier != null) { + this.identifier = storedIdentifier; + } + } + }); + } + + async submit() { + await this.stateService.setSsoOrganizationIdentifier(this.identifier); + if (this.clientId === "browser") { + document.cookie = `ssoHandOffMessage=${this.i18nService.t("ssoHandOff")};SameSite=strict`; + } + super.submit(); + } +} diff --git a/apps/web/src/app/accounts/two-factor-options.component.html b/apps/web/src/app/accounts/two-factor-options.component.html new file mode 100644 index 0000000000..690d0a1d99 --- /dev/null +++ b/apps/web/src/app/accounts/two-factor-options.component.html @@ -0,0 +1,68 @@ + diff --git a/apps/web/src/app/accounts/two-factor-options.component.ts b/apps/web/src/app/accounts/two-factor-options.component.ts new file mode 100644 index 0000000000..892c971bf9 --- /dev/null +++ b/apps/web/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/web/src/app/accounts/two-factor.component.html b/apps/web/src/app/accounts/two-factor.component.html new file mode 100644 index 0000000000..835fd12e78 --- /dev/null +++ b/apps/web/src/app/accounts/two-factor.component.html @@ -0,0 +1,155 @@ +
+
+
+

{{ title }}

+
+
+ +

+ {{ "enterVerificationCodeApp" | i18n }} +

+

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

+
+ + + + + {{ "sendVerificationCodeEmailAgain" | i18n }} + + +
+
+ +

{{ "insertYubiKey" | i18n }}

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

{{ "noTwoStepProviders" | i18n }}

+

{{ "noTwoStepProviders2" | i18n }}

+
+
+
+ +
+
+ + + {{ "cancel" | i18n }} + +
+ +
+
+
+
+
+ diff --git a/apps/web/src/app/accounts/two-factor.component.ts b/apps/web/src/app/accounts/two-factor.component.ts new file mode 100644 index 0000000000..72aa8cf24c --- /dev/null +++ b/apps/web/src/app/accounts/two-factor.component.ts @@ -0,0 +1,90 @@ +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 { TwoFactorService } from "jslib-common/abstractions/twoFactor.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; + +import { RouterService } from "../services/router.service"; + +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; + + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + apiService: ApiService, + platformUtilsService: PlatformUtilsService, + stateService: StateService, + environmentService: EnvironmentService, + private modalService: ModalService, + route: ActivatedRoute, + logService: LogService, + twoFactorService: TwoFactorService, + appIdService: AppIdService, + private routerService: RouterService + ) { + super( + authService, + router, + i18nService, + apiService, + platformUtilsService, + window, + environmentService, + stateService, + route, + logService, + twoFactorService, + appIdService + ); + this.onSuccessfulLoginNavigate = this.goAfterLogIn; + } + + async anotherMethod() { + const [modal] = await this.modalService.openViewRef( + TwoFactorOptionsComponent, + this.twoFactorOptionsModal, + (comp) => { + comp.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => { + modal.close(); + this.selectedProviderType = provider; + await this.init(); + }); + comp.onRecoverSelected.subscribe(() => { + modal.close(); + }); + } + ); + } + + async goAfterLogIn() { + const previousUrl = this.routerService.getPreviousUrl(); + if (previousUrl) { + this.router.navigateByUrl(previousUrl); + } else { + this.router.navigate([this.successRoute], { + queryParams: { + identifier: this.identifier, + }, + }); + } + } +} diff --git a/apps/web/src/app/accounts/update-password.component.html b/apps/web/src/app/accounts/update-password.component.html new file mode 100644 index 0000000000..46bf988d9b --- /dev/null +++ b/apps/web/src/app/accounts/update-password.component.html @@ -0,0 +1,90 @@ +
+
+
+

{{ "updateMasterPassword" | i18n }}

+
+
+ {{ "masterPasswordInvalidWarning" | i18n }} + + + +
+
+
+ + +
+
+
+
+
+
+ + + +
+
+
+
+ + +
+
+
+ + + +
+
+
+
+ diff --git a/apps/web/src/app/accounts/update-password.component.ts b/apps/web/src/app/accounts/update-password.component.ts new file mode 100644 index 0000000000..ec1aa3f515 --- /dev/null +++ b/apps/web/src/app/accounts/update-password.component.ts @@ -0,0 +1,48 @@ +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +import { UpdatePasswordComponent as BaseUpdatePasswordComponent } from "jslib-angular/components/update-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 { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; + +@Component({ + selector: "app-update-password", + templateUrl: "update-password.component.html", +}) +export class UpdatePasswordComponent extends BaseUpdatePasswordComponent { + constructor( + router: Router, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + passwordGenerationService: PasswordGenerationService, + policyService: PolicyService, + cryptoService: CryptoService, + messagingService: MessagingService, + apiService: ApiService, + logService: LogService, + stateService: StateService, + userVerificationService: UserVerificationService + ) { + super( + router, + i18nService, + platformUtilsService, + passwordGenerationService, + policyService, + cryptoService, + messagingService, + apiService, + stateService, + userVerificationService, + logService + ); + } +} diff --git a/apps/web/src/app/accounts/update-temp-password.component.html b/apps/web/src/app/accounts/update-temp-password.component.html new file mode 100644 index 0000000000..27e8a4ec10 --- /dev/null +++ b/apps/web/src/app/accounts/update-temp-password.component.html @@ -0,0 +1,105 @@ +
+
+
+

{{ "updateMasterPassword" | i18n }}

+
+
+ {{ "updateMasterPasswordWarning" | i18n }} +
+ + + +
+
+ + + +
+
+ + +
+
+
+
+ +
+ + +
+
+
+ + + {{ "masterPassHintDesc" | i18n }} +
+
+
+ + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/update-temp-password.component.ts b/apps/web/src/app/accounts/update-temp-password.component.ts new file mode 100644 index 0000000000..53cd46f3d4 --- /dev/null +++ b/apps/web/src/app/accounts/update-temp-password.component.ts @@ -0,0 +1,45 @@ +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"; + +@Component({ + selector: "app-update-temp-password", + templateUrl: "update-temp-password.component.html", +}) +export class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent { + constructor( + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + passwordGenerationService: PasswordGenerationService, + policyService: PolicyService, + cryptoService: CryptoService, + messagingService: MessagingService, + apiService: ApiService, + logService: LogService, + stateService: StateService, + syncService: SyncService + ) { + super( + i18nService, + platformUtilsService, + passwordGenerationService, + policyService, + cryptoService, + messagingService, + apiService, + stateService, + syncService, + logService + ); + } +} diff --git a/apps/web/src/app/accounts/verify-email-token.component.html b/apps/web/src/app/accounts/verify-email-token.component.html new file mode 100644 index 0000000000..9e0aad8b38 --- /dev/null +++ b/apps/web/src/app/accounts/verify-email-token.component.html @@ -0,0 +1,13 @@ +
+
+ +

+ + {{ "loading" | i18n }} +

+
+
diff --git a/apps/web/src/app/accounts/verify-email-token.component.ts b/apps/web/src/app/accounts/verify-email-token.component.ts new file mode 100644 index 0000000000..2517aad132 --- /dev/null +++ b/apps/web/src/app/accounts/verify-email-token.component.ts @@ -0,0 +1,48 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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"; +import { VerifyEmailRequest } from "jslib-common/models/request/verifyEmailRequest"; + +@Component({ + selector: "app-verify-email-token", + templateUrl: "verify-email-token.component.html", +}) +export class VerifyEmailTokenComponent implements OnInit { + constructor( + private router: Router, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private route: ActivatedRoute, + private apiService: ApiService, + private logService: LogService, + private stateService: StateService + ) {} + + ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + if (qParams.userId != null && qParams.token != null) { + try { + await this.apiService.postAccountVerifyEmailToken( + new VerifyEmailRequest(qParams.userId, qParams.token) + ); + if (await this.stateService.getIsAuthenticated()) { + await this.apiService.refreshIdentityToken(); + } + this.platformUtilsService.showToast("success", null, this.i18nService.t("emailVerified")); + this.router.navigate(["/"]); + return; + } catch (e) { + this.logService.error(e); + } + } + this.platformUtilsService.showToast("error", null, this.i18nService.t("emailVerifiedFailed")); + this.router.navigate(["/"]); + }); + } +} diff --git a/apps/web/src/app/accounts/verify-recover-delete.component.html b/apps/web/src/app/accounts/verify-recover-delete.component.html new file mode 100644 index 0000000000..975858ac5e --- /dev/null +++ b/apps/web/src/app/accounts/verify-recover-delete.component.html @@ -0,0 +1,34 @@ +
+
+
+

{{ "deleteAccount" | i18n }}

+
+
+ {{ "deleteAccountWarning" | i18n }} +

+ {{ email }} +

+

{{ "deleteRecoverConfirmDesc" | i18n }}

+
+
+ + + {{ "cancel" | i18n }} + +
+
+
+
+
+
diff --git a/apps/web/src/app/accounts/verify-recover-delete.component.ts b/apps/web/src/app/accounts/verify-recover-delete.component.ts new file mode 100644 index 0000000000..6515569575 --- /dev/null +++ b/apps/web/src/app/accounts/verify-recover-delete.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +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 { VerifyDeleteRecoverRequest } from "jslib-common/models/request/verifyDeleteRecoverRequest"; + +@Component({ + selector: "app-verify-recover-delete", + templateUrl: "verify-recover-delete.component.html", +}) +export class VerifyRecoverDeleteComponent implements OnInit { + email: string; + formPromise: Promise; + + private userId: string; + private token: string; + + constructor( + private router: Router, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private route: ActivatedRoute, + private logService: LogService + ) {} + + ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + if (qParams.userId != null && qParams.token != null && qParams.email != null) { + this.userId = qParams.userId; + this.token = qParams.token; + this.email = qParams.email; + } else { + this.router.navigate(["/"]); + } + }); + } + + async submit() { + try { + const request = new VerifyDeleteRecoverRequest(this.userId, this.token); + this.formPromise = this.apiService.postAccountRecoverDeleteToken(request); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + this.i18nService.t("accountDeleted"), + this.i18nService.t("accountDeletedDesc") + ); + this.router.navigate(["/"]); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/app.component.html b/apps/web/src/app/app.component.html new file mode 100644 index 0000000000..0680b43f9c --- /dev/null +++ b/apps/web/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/apps/web/src/app/app.component.ts b/apps/web/src/app/app.component.ts new file mode 100644 index 0000000000..9e26f68078 --- /dev/null +++ b/apps/web/src/app/app.component.ts @@ -0,0 +1,315 @@ +import { Component, NgZone, OnDestroy, OnInit, SecurityContext } from "@angular/core"; +import { DomSanitizer } from "@angular/platform-browser"; +import { NavigationEnd, Router } from "@angular/router"; +import * as jq from "jquery"; +import { IndividualConfig, ToastrService } from "ngx-toastr"; +import Swal from "sweetalert2"; + +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 { 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 { TokenService } from "jslib-common/abstractions/token.service"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; + +import { DisableSendPolicy } from "./organizations/policies/disable-send.component"; +import { MasterPasswordPolicy } from "./organizations/policies/master-password.component"; +import { PasswordGeneratorPolicy } from "./organizations/policies/password-generator.component"; +import { PersonalOwnershipPolicy } from "./organizations/policies/personal-ownership.component"; +import { RequireSsoPolicy } from "./organizations/policies/require-sso.component"; +import { ResetPasswordPolicy } from "./organizations/policies/reset-password.component"; +import { SendOptionsPolicy } from "./organizations/policies/send-options.component"; +import { SingleOrgPolicy } from "./organizations/policies/single-org.component"; +import { TwoFactorAuthenticationPolicy } from "./organizations/policies/two-factor-authentication.component"; +import { PolicyListService } from "./services/policy-list.service"; +import { RouterService } from "./services/router.service"; + +const BroadcasterSubscriptionId = "AppComponent"; +const IdleTimeout = 60000 * 10; // 10 minutes + +@Component({ + selector: "app-root", + templateUrl: "app.component.html", +}) +export class AppComponent implements OnDestroy, OnInit { + private lastActivity: number = null; + private idleTimer: number = null; + private isIdle = false; + + 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 platformUtilsService: PlatformUtilsService, + private ngZone: NgZone, + private vaultTimeoutService: VaultTimeoutService, + private cryptoService: CryptoService, + private collectionService: CollectionService, + private sanitizer: DomSanitizer, + private searchService: SearchService, + private notificationsService: NotificationsService, + private routerService: RouterService, + private stateService: StateService, + private eventService: EventService, + private policyService: PolicyService, + protected policyListService: PolicyListService, + private keyConnectorService: KeyConnectorService + ) {} + + ngOnInit() { + this.ngZone.runOutsideAngular(() => { + window.onmousemove = () => this.recordActivity(); + window.onmousedown = () => this.recordActivity(); + window.ontouchstart = () => this.recordActivity(); + window.onclick = () => 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": + this.notificationsService.updateConnection(false); + break; + case "loggedOut": + this.routerService.setPreviousUrl(null); + this.notificationsService.updateConnection(false); + break; + case "unlocked": + this.notificationsService.updateConnection(false); + break; + case "authBlocked": + this.routerService.setPreviousUrl(message.url); + this.router.navigate(["/"]); + break; + case "logout": + this.logOut(!!message.expired); + break; + case "lockVault": + await this.vaultTimeoutService.lock(); + break; + case "locked": + this.notificationsService.updateConnection(false); + this.router.navigate(["lock"]); + break; + case "lockedUrl": + this.routerService.setPreviousUrl(message.url); + break; + case "syncStarted": + break; + case "syncCompleted": + break; + case "upgradeOrganization": { + const upgradeConfirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("upgradeOrganizationDesc"), + this.i18nService.t("upgradeOrganization"), + this.i18nService.t("upgradeOrganization"), + this.i18nService.t("cancel") + ); + if (upgradeConfirmed) { + this.router.navigate([ + "organizations", + message.organizationId, + "settings", + "billing", + ]); + } + 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) { + this.router.navigate(["settings/premium"]); + } + 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 "showToast": + this.showToast(message); + break; + case "setFullWidth": + this.setFullWidth(); + break; + case "convertAccountToKeyConnector": + this.router.navigate(["/remove-password"]); + break; + default: + break; + } + }); + }); + + this.router.events.subscribe((event) => { + if (event instanceof NavigationEnd) { + const modals = Array.from(document.querySelectorAll(".modal")); + for (const modal of modals) { + (jq(modal) as any).modal("hide"); + } + + if (document.querySelector(".swal-modal") != null) { + Swal.close(undefined); + } + } + }); + + this.policyListService.addPolicies([ + new TwoFactorAuthenticationPolicy(), + new MasterPasswordPolicy(), + new PasswordGeneratorPolicy(), + new SingleOrgPolicy(), + new RequireSsoPolicy(), + new PersonalOwnershipPolicy(), + new DisableSendPolicy(), + new SendOptionsPolicy(), + new ResetPasswordPolicy(), + ]); + + this.setFullWidth(); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + private async logOut(expired: boolean) { + await this.eventService.uploadEvents(); + const userId = await this.stateService.getUserId(); + await Promise.all([ + this.eventService.clearEvents(), + this.syncService.setLastSync(new Date(0)), + this.cryptoService.clearKeys(), + this.settingsService.clear(userId), + this.cipherService.clear(userId), + this.folderService.clear(userId), + this.collectionService.clear(userId), + this.policyService.clear(userId), + this.passwordGenerationService.clear(), + this.keyConnectorService.clear(), + ]); + + this.searchService.clearIndex(); + this.authService.logOut(async () => { + if (expired) { + this.platformUtilsService.showToast( + "warning", + this.i18nService.t("loggedOut"), + this.i18nService.t("loginExpired") + ); + } + + await this.stateService.clean({ userId: userId }); + Swal.close(); + this.router.navigate(["/"]); + }); + } + + private async recordActivity() { + const now = new Date().getTime(); + if (this.lastActivity != null && now - this.lastActivity < 250) { + return; + } + + this.lastActivity = now; + this.stateService.setLastActive(now); + // 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 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 idleStateChanged() { + if (this.isIdle) { + this.notificationsService.disconnectFromInactivity(); + } else { + this.notificationsService.reconnectFromActivity(); + } + } + + private async setFullWidth() { + const enableFullWidth = await this.stateService.getEnableFullWidth(); + if (enableFullWidth) { + document.body.classList.add("full-width"); + } else { + document.body.classList.remove("full-width"); + } + } +} diff --git a/apps/web/src/app/app.module.ts b/apps/web/src/app/app.module.ts new file mode 100644 index 0000000000..15d5a1900f --- /dev/null +++ b/apps/web/src/app/app.module.ts @@ -0,0 +1,27 @@ +import { DragDropModule } from "@angular/cdk/drag-drop"; +import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; +import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; +import { InfiniteScrollModule } from "ngx-infinite-scroll"; + +import { AppComponent } from "./app.component"; +import { OssRoutingModule } from "./oss-routing.module"; +import { OssModule } from "./oss.module"; +import { ServicesModule } from "./services/services.module"; +import { WildcardRoutingModule } from "./wildcard-routing.module"; + +@NgModule({ + imports: [ + OssModule, + BrowserAnimationsModule, + FormsModule, + ServicesModule, + InfiniteScrollModule, + DragDropModule, + OssRoutingModule, + WildcardRoutingModule, // Needs to be last to catch all non-existing routes + ], + declarations: [AppComponent], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/apps/web/src/app/common/base.accept.component.ts b/apps/web/src/app/common/base.accept.component.ts new file mode 100644 index 0000000000..36375fbd1e --- /dev/null +++ b/apps/web/src/app/common/base.accept.component.ts @@ -0,0 +1,63 @@ +import { Directive, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +@Directive() +export abstract class BaseAcceptComponent implements OnInit { + loading = true; + authed = false; + email: string; + actionPromise: Promise; + + protected requiredParameters: string[] = []; + protected failedShortMessage = "inviteAcceptFailedShort"; + protected failedMessage = "inviteAcceptFailed"; + + constructor( + protected router: Router, + protected platformUtilService: PlatformUtilsService, + protected i18nService: I18nService, + protected route: ActivatedRoute, + protected stateService: StateService + ) {} + + abstract authedHandler(qParams: any): Promise; + abstract unauthedHandler(qParams: any): Promise; + + ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + let error = this.requiredParameters.some((e) => qParams?.[e] == null || qParams[e] === ""); + let errorMessage: string = null; + if (!error) { + this.authed = await this.stateService.getIsAuthenticated(); + + if (this.authed) { + try { + await this.authedHandler(qParams); + } catch (e) { + error = true; + errorMessage = e.message; + } + } else { + this.email = qParams.email; + await this.unauthedHandler(qParams); + } + } + + if (error) { + const message = + errorMessage != null + ? this.i18nService.t(this.failedShortMessage, errorMessage) + : this.i18nService.t(this.failedMessage); + this.platformUtilService.showToast("error", null, message, { timeout: 10000 }); + this.router.navigate(["/"]); + } + + this.loading = false; + }); + } +} diff --git a/apps/web/src/app/common/base.events.component.ts b/apps/web/src/app/common/base.events.component.ts new file mode 100644 index 0000000000..11ad5c453f --- /dev/null +++ b/apps/web/src/app/common/base.events.component.ts @@ -0,0 +1,178 @@ +import { Directive } from "@angular/core"; + +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 { EventResponse } from "jslib-common/models/response/eventResponse"; +import { ListResponse } from "jslib-common/models/response/listResponse"; +import { EventView } from "jslib-common/models/view/eventView"; + +import { EventService } from "src/app/services/event.service"; + +@Directive() +export abstract class BaseEventsComponent { + loading = true; + loaded = false; + events: EventView[]; + start: string; + end: string; + dirtyDates = true; + continuationToken: string; + refreshPromise: Promise; + exportPromise: Promise; + morePromise: Promise; + + abstract readonly exportFileName: string; + + constructor( + protected eventService: EventService, + protected i18nService: I18nService, + protected exportService: ExportService, + protected platformUtilsService: PlatformUtilsService, + protected logService: LogService + ) { + const defaultDates = this.eventService.getDefaultDateFilters(); + this.start = defaultDates[0]; + this.end = defaultDates[1]; + } + + async exportEvents() { + if (this.appApiPromiseUnfulfilled() || this.dirtyDates) { + return; + } + + this.loading = true; + + const dates = this.parseDates(); + if (dates == null) { + return; + } + + try { + this.exportPromise = this.export(dates[0], dates[1]); + + await this.exportPromise; + } catch (e) { + this.logService.error(`Handled exception: ${e}`); + } + + this.exportPromise = null; + this.loading = false; + } + + async loadEvents(clearExisting: boolean) { + if (this.appApiPromiseUnfulfilled()) { + return; + } + + const dates = this.parseDates(); + if (dates == null) { + return; + } + + this.loading = true; + let events: EventView[] = []; + try { + const promise = this.loadAndParseEvents( + dates[0], + dates[1], + clearExisting ? null : this.continuationToken + ); + if (clearExisting) { + this.refreshPromise = promise; + } else { + this.morePromise = promise; + } + const result = await promise; + this.continuationToken = result.continuationToken; + events = result.events; + } catch (e) { + this.logService.error(`Handled exception: ${e}`); + } + + if (!clearExisting && this.events != null && this.events.length > 0) { + this.events = this.events.concat(events); + } else { + this.events = events; + } + + this.dirtyDates = false; + this.loading = false; + this.morePromise = null; + this.refreshPromise = null; + } + + protected abstract requestEvents( + startDate: string, + endDate: string, + continuationToken: string + ): Promise>; + protected abstract getUserName(r: EventResponse, userId: string): { name: string; email: string }; + + protected async loadAndParseEvents( + startDate: string, + endDate: string, + continuationToken: string + ) { + const response = await this.requestEvents(startDate, endDate, continuationToken); + + const events = await Promise.all( + response.data.map(async (r) => { + const userId = r.actingUserId == null ? r.userId : r.actingUserId; + const eventInfo = await this.eventService.getEventInfo(r); + const user = this.getUserName(r, userId); + const userName = user != null ? user.name : this.i18nService.t("unknown"); + + return new EventView({ + message: eventInfo.message, + humanReadableMessage: eventInfo.humanReadableMessage, + appIcon: eventInfo.appIcon, + appName: eventInfo.appName, + userId: userId, + userName: r.installationId != null ? `Installation: ${r.installationId}` : userName, + userEmail: user != null ? user.email : "", + date: r.date, + ip: r.ipAddress, + type: r.type, + installationId: r.installationId, + }); + }) + ); + return { continuationToken: response.continuationToken, events: events }; + } + + protected parseDates() { + let dates: string[] = null; + try { + dates = this.eventService.formatDateFilters(this.start, this.end); + } catch (e) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("invalidDateRange") + ); + return null; + } + return dates; + } + + protected appApiPromiseUnfulfilled() { + return this.refreshPromise != null || this.morePromise != null || this.exportPromise != null; + } + + private async export(start: string, end: string) { + let continuationToken = this.continuationToken; + let events = [].concat(this.events); + + while (continuationToken != null) { + const result = await this.loadAndParseEvents(start, end, continuationToken); + continuationToken = result.continuationToken; + events = events.concat(result.events); + } + + const data = await this.exportService.getEventExport(events); + const fileName = this.exportService.getFileName(this.exportFileName, "csv"); + this.platformUtilsService.saveFile(window, data, { type: "text/plain" }, fileName); + } +} diff --git a/apps/web/src/app/common/base.people.component.ts b/apps/web/src/app/common/base.people.component.ts new file mode 100644 index 0000000000..b93e9482b2 --- /dev/null +++ b/apps/web/src/app/common/base.people.component.ts @@ -0,0 +1,345 @@ +import { Directive, ViewChild, ViewContainerRef } from "@angular/core"; + +import { SearchPipe } from "jslib-angular/pipes/search.pipe"; +import { UserNamePipe } from "jslib-angular/pipes/user-name.pipe"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { ValidationService } from "jslib-angular/services/validation.service"; +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { OrganizationUserStatusType } from "jslib-common/enums/organizationUserStatusType"; +import { OrganizationUserType } from "jslib-common/enums/organizationUserType"; +import { ProviderUserStatusType } from "jslib-common/enums/providerUserStatusType"; +import { ProviderUserType } from "jslib-common/enums/providerUserType"; +import { Utils } from "jslib-common/misc/utils"; +import { ListResponse } from "jslib-common/models/response/listResponse"; +import { OrganizationUserUserDetailsResponse } from "jslib-common/models/response/organizationUserResponse"; +import { ProviderUserUserDetailsResponse } from "jslib-common/models/response/provider/providerUserResponse"; + +import { UserConfirmComponent } from "../organizations/manage/user-confirm.component"; + +type StatusType = OrganizationUserStatusType | ProviderUserStatusType; + +const MaxCheckedCount = 500; + +@Directive() +export abstract class BasePeopleComponent< + UserType extends ProviderUserUserDetailsResponse | OrganizationUserUserDetailsResponse +> { + @ViewChild("confirmTemplate", { read: ViewContainerRef, static: true }) + confirmModalRef: ViewContainerRef; + + get allCount() { + return this.allUsers != null ? this.allUsers.length : 0; + } + + get invitedCount() { + return this.statusMap.has(this.userStatusType.Invited) + ? this.statusMap.get(this.userStatusType.Invited).length + : 0; + } + + get acceptedCount() { + return this.statusMap.has(this.userStatusType.Accepted) + ? this.statusMap.get(this.userStatusType.Accepted).length + : 0; + } + + get confirmedCount() { + return this.statusMap.has(this.userStatusType.Confirmed) + ? this.statusMap.get(this.userStatusType.Confirmed).length + : 0; + } + + get showConfirmUsers(): boolean { + return ( + this.allUsers != null && + this.statusMap != null && + this.allUsers.length > 1 && + this.confirmedCount > 0 && + this.confirmedCount < 3 && + this.acceptedCount > 0 + ); + } + + get showBulkConfirmUsers(): boolean { + return this.acceptedCount > 0; + } + + abstract userType: typeof OrganizationUserType | typeof ProviderUserType; + abstract userStatusType: typeof OrganizationUserStatusType | typeof ProviderUserStatusType; + + loading = true; + statusMap = new Map(); + status: StatusType; + users: UserType[] = []; + pagedUsers: UserType[] = []; + searchText: string; + actionPromise: Promise; + + protected allUsers: UserType[] = []; + + protected didScroll = false; + protected pageSize = 100; + + private pagedUsersCount = 0; + + constructor( + protected apiService: ApiService, + private searchService: SearchService, + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + protected cryptoService: CryptoService, + protected validationService: ValidationService, + protected modalService: ModalService, + private logService: LogService, + private searchPipe: SearchPipe, + protected userNamePipe: UserNamePipe, + protected stateService: StateService + ) {} + + abstract edit(user: UserType): void; + abstract getUsers(): Promise>; + abstract deleteUser(id: string): Promise; + abstract reinviteUser(id: string): Promise; + abstract confirmUser(user: UserType, publicKey: Uint8Array): Promise; + + async load() { + const response = await this.getUsers(); + this.statusMap.clear(); + for (const status of Utils.iterateEnum(this.userStatusType)) { + this.statusMap.set(status, []); + } + + this.allUsers = response.data != null && response.data.length > 0 ? response.data : []; + this.allUsers.sort(Utils.getSortFunction(this.i18nService, "email")); + this.allUsers.forEach((u) => { + if (!this.statusMap.has(u.status)) { + this.statusMap.set(u.status, [u]); + } else { + this.statusMap.get(u.status).push(u); + } + }); + this.filter(this.status); + this.loading = false; + } + + filter(status: StatusType) { + this.status = status; + if (this.status != null) { + this.users = this.statusMap.get(this.status); + } else { + this.users = this.allUsers; + } + // Reset checkbox selecton + this.selectAll(false); + this.resetPaging(); + } + + loadMore() { + if (!this.users || this.users.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedUsers.length; + let pagedSize = this.pageSize; + if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) { + pagedSize = this.pagedUsersCount; + } + if (this.users.length > pagedLength) { + this.pagedUsers = this.pagedUsers.concat( + this.users.slice(pagedLength, pagedLength + pagedSize) + ); + } + this.pagedUsersCount = this.pagedUsers.length; + this.didScroll = this.pagedUsers.length > this.pageSize; + } + + checkUser(user: OrganizationUserUserDetailsResponse, select?: boolean) { + (user as any).checked = select == null ? !(user as any).checked : select; + } + + selectAll(select: boolean) { + if (select) { + this.selectAll(false); + } + + const filteredUsers = this.searchPipe.transform( + this.users, + this.searchText, + "name", + "email", + "id" + ); + + const selectCount = + select && filteredUsers.length > MaxCheckedCount ? MaxCheckedCount : filteredUsers.length; + for (let i = 0; i < selectCount; i++) { + this.checkUser(filteredUsers[i], select); + } + } + + async resetPaging() { + this.pagedUsers = []; + this.loadMore(); + } + + invite() { + this.edit(null); + } + + async remove(user: UserType) { + const confirmed = await this.platformUtilsService.showDialog( + this.deleteWarningMessage(user), + this.userNamePipe.transform(user), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + + if (!confirmed) { + return false; + } + + this.actionPromise = this.deleteUser(user.id); + try { + await this.actionPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("removedUserId", this.userNamePipe.transform(user)) + ); + this.removeUser(user); + } catch (e) { + this.validationService.showError(e); + } + this.actionPromise = null; + } + + async reinvite(user: UserType) { + if (this.actionPromise != null) { + return; + } + + this.actionPromise = this.reinviteUser(user.id); + try { + await this.actionPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("hasBeenReinvited", this.userNamePipe.transform(user)) + ); + } catch (e) { + this.validationService.showError(e); + } + this.actionPromise = null; + } + + async confirm(user: UserType) { + function updateUser(self: BasePeopleComponent) { + user.status = self.userStatusType.Confirmed; + const mapIndex = self.statusMap.get(self.userStatusType.Accepted).indexOf(user); + if (mapIndex > -1) { + self.statusMap.get(self.userStatusType.Accepted).splice(mapIndex, 1); + self.statusMap.get(self.userStatusType.Confirmed).push(user); + } + } + + const confirmUser = async (publicKey: Uint8Array) => { + try { + this.actionPromise = this.confirmUser(user, publicKey); + await this.actionPromise; + updateUser(this); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("hasBeenConfirmed", this.userNamePipe.transform(user)) + ); + } catch (e) { + this.validationService.showError(e); + throw e; + } finally { + this.actionPromise = null; + } + }; + + if (this.actionPromise != null) { + return; + } + + try { + const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId); + const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey); + + const autoConfirm = await this.stateService.getAutoConfirmFingerPrints(); + if (autoConfirm == null || !autoConfirm) { + const [modal] = await this.modalService.openViewRef( + UserConfirmComponent, + this.confirmModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(user); + comp.userId = user != null ? user.userId : null; + comp.publicKey = publicKey; + comp.onConfirmedUser.subscribe(async () => { + try { + comp.formPromise = confirmUser(publicKey); + await comp.formPromise; + modal.close(); + } catch (e) { + this.logService.error(e); + } + }); + } + ); + return; + } + + try { + const fingerprint = await this.cryptoService.getFingerprint(user.userId, publicKey.buffer); + this.logService.info(`User's fingerprint: ${fingerprint.join("-")}`); + } catch (e) { + this.logService.error(e); + } + await confirmUser(publicKey); + } catch (e) { + this.logService.error(`Handled exception: ${e}`); + } + } + + isSearching() { + return this.searchService.isSearchable(this.searchText); + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.users && this.users.length > this.pageSize; + } + + protected deleteWarningMessage(user: UserType): string { + return this.i18nService.t("removeUserConfirmation"); + } + + protected getCheckedUsers() { + return this.users.filter((u) => (u as any).checked); + } + + protected removeUser(user: UserType) { + let index = this.users.indexOf(user); + if (index > -1) { + this.users.splice(index, 1); + this.resetPaging(); + } + if (this.statusMap.has(user.status)) { + index = this.statusMap.get(user.status).indexOf(user); + if (index > -1) { + this.statusMap.get(user.status).splice(index, 1); + } + } + } +} diff --git a/apps/web/src/app/components/nested-checkbox.component.html b/apps/web/src/app/components/nested-checkbox.component.html new file mode 100644 index 0000000000..9f585e6642 --- /dev/null +++ b/apps/web/src/app/components/nested-checkbox.component.html @@ -0,0 +1,30 @@ +
+
+ + +
+
+
+ + +
+
+
diff --git a/apps/web/src/app/components/nested-checkbox.component.ts b/apps/web/src/app/components/nested-checkbox.component.ts new file mode 100644 index 0000000000..32a999a038 --- /dev/null +++ b/apps/web/src/app/components/nested-checkbox.component.ts @@ -0,0 +1,32 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { Utils } from "jslib-common/misc/utils"; + +@Component({ + selector: "app-nested-checkbox", + templateUrl: "nested-checkbox.component.html", +}) +export class NestedCheckboxComponent { + @Input() parentId: string; + @Input() checkboxes: { id: string; get: () => boolean; set: (v: boolean) => void }[]; + @Output() onSavedUser = new EventEmitter(); + @Output() onDeletedUser = new EventEmitter(); + + get parentIndeterminate() { + return !this.parentChecked && this.checkboxes.some((c) => c.get()); + } + + get parentChecked() { + return this.checkboxes.every((c) => c.get()); + } + + set parentChecked(value: boolean) { + this.checkboxes.forEach((c) => { + c.set(value); + }); + } + + pascalize(s: string) { + return Utils.camelToPascalCase(s); + } +} diff --git a/apps/web/src/app/components/organization-switcher.component.html b/apps/web/src/app/components/organization-switcher.component.html new file mode 100644 index 0000000000..221985a6cf --- /dev/null +++ b/apps/web/src/app/components/organization-switcher.component.html @@ -0,0 +1,68 @@ +
+ +
+
+
+ + {{ "organizationIsDisabled" | i18n }} +
+
+
+
+ + {{ "accessingUsingProvider" | i18n: activeOrganization.providerName }} +
+
+
+ + + + +
diff --git a/apps/web/src/app/components/organization-switcher.component.ts b/apps/web/src/app/components/organization-switcher.component.ts new file mode 100644 index 0000000000..a71cf1760d --- /dev/null +++ b/apps/web/src/app/components/organization-switcher.component.ts @@ -0,0 +1,34 @@ +import { Component, Input, OnInit } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { Utils } from "jslib-common/misc/utils"; +import { Organization } from "jslib-common/models/domain/organization"; + +import { NavigationPermissionsService } from "../organizations/services/navigation-permissions.service"; + +@Component({ + selector: "app-organization-switcher", + templateUrl: "organization-switcher.component.html", +}) +export class OrganizationSwitcherComponent implements OnInit { + constructor(private organizationService: OrganizationService, private i18nService: I18nService) {} + + @Input() activeOrganization: Organization = null; + organizations: Organization[] = []; + + loaded = false; + + async ngOnInit() { + await this.load(); + } + + async load() { + const orgs = await this.organizationService.getAll(); + this.organizations = orgs + .filter((org) => NavigationPermissionsService.canAccessAdmin(org)) + .sort(Utils.getSortFunction(this.i18nService, "name")); + + this.loaded = true; + } +} diff --git a/apps/web/src/app/components/password-reprompt.component.html b/apps/web/src/app/components/password-reprompt.component.html new file mode 100644 index 0000000000..b2c068e902 --- /dev/null +++ b/apps/web/src/app/components/password-reprompt.component.html @@ -0,0 +1,53 @@ + diff --git a/apps/web/src/app/components/password-reprompt.component.ts b/apps/web/src/app/components/password-reprompt.component.ts new file mode 100644 index 0000000000..442a0ab5ee --- /dev/null +++ b/apps/web/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/web/src/app/components/password-strength.component.html b/apps/web/src/app/components/password-strength.component.html new file mode 100644 index 0000000000..c9eec73899 --- /dev/null +++ b/apps/web/src/app/components/password-strength.component.html @@ -0,0 +1,14 @@ +
+
+ + {{ text }} + +
+
diff --git a/apps/web/src/app/components/password-strength.component.ts b/apps/web/src/app/components/password-strength.component.ts new file mode 100644 index 0000000000..53233b90f6 --- /dev/null +++ b/apps/web/src/app/components/password-strength.component.ts @@ -0,0 +1,40 @@ +import { Component, Input, OnChanges } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; + +@Component({ + selector: "app-password-strength", + templateUrl: "password-strength.component.html", +}) +export class PasswordStrengthComponent implements OnChanges { + @Input() score?: number; + @Input() showText = false; + + scoreWidth = 0; + color = "bg-danger"; + text: string; + + constructor(private i18nService: I18nService) {} + + ngOnChanges(): void { + this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20; + switch (this.score) { + case 4: + this.color = "bg-success"; + this.text = this.i18nService.t("strong"); + break; + case 3: + this.color = "bg-primary"; + this.text = this.i18nService.t("good"); + break; + case 2: + this.color = "bg-warning"; + this.text = this.i18nService.t("weak"); + break; + default: + this.color = "bg-danger"; + this.text = this.score != null ? this.i18nService.t("weak") : null; + break; + } + } +} diff --git a/apps/web/src/app/components/premium-badge.component.ts b/apps/web/src/app/components/premium-badge.component.ts new file mode 100644 index 0000000000..0628621f17 --- /dev/null +++ b/apps/web/src/app/components/premium-badge.component.ts @@ -0,0 +1,19 @@ +import { Component } from "@angular/core"; + +import { MessagingService } from "jslib-common/abstractions/messaging.service"; + +@Component({ + selector: "app-premium-badge", + template: ` + + `, +}) +export class PremiumBadgeComponent { + constructor(private messagingService: MessagingService) {} + + premiumRequired() { + this.messagingService.send("premiumRequired"); + } +} diff --git a/apps/web/src/app/guards/home.guard.ts b/apps/web/src/app/guards/home.guard.ts new file mode 100644 index 0000000000..5dfed1dba8 --- /dev/null +++ b/apps/web/src/app/guards/home.guard.ts @@ -0,0 +1,22 @@ +import { Injectable } from "@angular/core"; +import { ActivatedRouteSnapshot, CanActivate, Router } from "@angular/router"; + +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; + +@Injectable() +export class HomeGuard implements CanActivate { + constructor(private router: Router, private authService: AuthService) {} + + async canActivate(route: ActivatedRouteSnapshot) { + const authStatus = await this.authService.getAuthStatus(); + + if (authStatus === AuthenticationStatus.LoggedOut) { + return this.router.createUrlTree(["/login"], { queryParams: route.queryParams }); + } + if (authStatus === AuthenticationStatus.Locked) { + return this.router.createUrlTree(["/lock"], { queryParams: route.queryParams }); + } + return this.router.createUrlTree(["/vault"], { queryParams: route.queryParams }); + } +} diff --git a/apps/web/src/app/layouts/footer.component.html b/apps/web/src/app/layouts/footer.component.html new file mode 100644 index 0000000000..98836bfd5d --- /dev/null +++ b/apps/web/src/app/layouts/footer.component.html @@ -0,0 +1,9 @@ + diff --git a/apps/web/src/app/layouts/footer.component.ts b/apps/web/src/app/layouts/footer.component.ts new file mode 100644 index 0000000000..01e079655d --- /dev/null +++ b/apps/web/src/app/layouts/footer.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit } from "@angular/core"; + +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-footer", + templateUrl: "footer.component.html", +}) +export class FooterComponent implements OnInit { + version: string; + year = "2015"; + + constructor(private platformUtilsService: PlatformUtilsService) {} + + async ngOnInit() { + this.year = new Date().getFullYear().toString(); + this.version = await this.platformUtilsService.getApplicationVersion(); + } +} diff --git a/apps/web/src/app/layouts/frontend-layout.component.html b/apps/web/src/app/layouts/frontend-layout.component.html new file mode 100644 index 0000000000..d737bc9f02 --- /dev/null +++ b/apps/web/src/app/layouts/frontend-layout.component.html @@ -0,0 +1,5 @@ + +
+ © {{ year }} Bitwarden Inc.
+ {{ "versionNumber" | i18n: version }} +
diff --git a/apps/web/src/app/layouts/frontend-layout.component.ts b/apps/web/src/app/layouts/frontend-layout.component.ts new file mode 100644 index 0000000000..47580a496a --- /dev/null +++ b/apps/web/src/app/layouts/frontend-layout.component.ts @@ -0,0 +1,24 @@ +import { Component, OnDestroy, OnInit } from "@angular/core"; + +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-frontend-layout", + templateUrl: "frontend-layout.component.html", +}) +export class FrontendLayoutComponent implements OnInit, OnDestroy { + version: string; + year = "2015"; + + constructor(private platformUtilsService: PlatformUtilsService) {} + + async ngOnInit() { + this.year = new Date().getFullYear().toString(); + this.version = await this.platformUtilsService.getApplicationVersion(); + document.body.classList.add("layout_frontend"); + } + + ngOnDestroy() { + document.body.classList.remove("layout_frontend"); + } +} diff --git a/apps/web/src/app/layouts/navbar.component.html b/apps/web/src/app/layouts/navbar.component.html new file mode 100644 index 0000000000..edc5d34d69 --- /dev/null +++ b/apps/web/src/app/layouts/navbar.component.html @@ -0,0 +1,94 @@ + diff --git a/apps/web/src/app/layouts/navbar.component.ts b/apps/web/src/app/layouts/navbar.component.ts new file mode 100644 index 0000000000..d93ec65d27 --- /dev/null +++ b/apps/web/src/app/layouts/navbar.component.ts @@ -0,0 +1,84 @@ +import { Component, NgZone, OnInit } from "@angular/core"; + +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { TokenService } from "jslib-common/abstractions/token.service"; +import { Utils } from "jslib-common/misc/utils"; +import { Organization } from "jslib-common/models/domain/organization"; +import { Provider } from "jslib-common/models/domain/provider"; + +import { NavigationPermissionsService as OrgNavigationPermissionsService } from "../organizations/services/navigation-permissions.service"; + +@Component({ + selector: "app-navbar", + templateUrl: "navbar.component.html", +}) +export class NavbarComponent implements OnInit { + selfHosted = false; + name: string; + email: string; + providers: Provider[] = []; + organizations: Organization[] = []; + + constructor( + private messagingService: MessagingService, + private platformUtilsService: PlatformUtilsService, + private tokenService: TokenService, + private providerService: ProviderService, + private syncService: SyncService, + private organizationService: OrganizationService, + private i18nService: I18nService, + private broadcasterService: BroadcasterService, + private ngZone: NgZone + ) { + this.selfHosted = this.platformUtilsService.isSelfHost(); + } + + async ngOnInit() { + this.name = await this.tokenService.getName(); + this.email = await this.tokenService.getEmail(); + if (this.name == null || this.name.trim() === "") { + this.name = this.email; + } + + // Ensure providers and organizations are loaded + if ((await this.syncService.getLastSync()) == null) { + await this.syncService.fullSync(false); + } + this.providers = await this.providerService.getAll(); + + this.organizations = await this.buildOrganizations(); + + this.broadcasterService.subscribe(this.constructor.name, async (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "organizationCreated": + if (this.organizations.length < 1) { + this.organizations = await this.buildOrganizations(); + } + break; + } + }); + }); + } + + async buildOrganizations() { + const allOrgs = await this.organizationService.getAll(); + return allOrgs + .filter((org) => OrgNavigationPermissionsService.canAccessAdmin(org)) + .sort(Utils.getSortFunction(this.i18nService, "name")); + } + + lock() { + this.messagingService.send("lockVault"); + } + + logOut() { + this.messagingService.send("logout"); + } +} diff --git a/apps/web/src/app/layouts/user-layout.component.html b/apps/web/src/app/layouts/user-layout.component.html new file mode 100644 index 0000000000..28dca81162 --- /dev/null +++ b/apps/web/src/app/layouts/user-layout.component.html @@ -0,0 +1,3 @@ + + + diff --git a/apps/web/src/app/layouts/user-layout.component.ts b/apps/web/src/app/layouts/user-layout.component.ts new file mode 100644 index 0000000000..c35f952ead --- /dev/null +++ b/apps/web/src/app/layouts/user-layout.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from "@angular/core"; + +@Component({ + selector: "app-user-layout", + templateUrl: "user-layout.component.html", +}) +export class UserLayoutComponent implements OnInit { + ngOnInit() { + document.body.classList.remove("layout_frontend"); + } +} diff --git a/apps/web/src/app/main.ts b/apps/web/src/app/main.ts new file mode 100644 index 0000000000..8749ffce34 --- /dev/null +++ b/apps/web/src/app/main.ts @@ -0,0 +1,17 @@ +import { enableProdMode } from "@angular/core"; +import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; + +import "bootstrap"; +import "jquery"; +import "popper.js"; + +require("../scss/styles.scss"); +require("../scss/tailwind.css"); + +import { AppModule } from "./app.module"; + +if (process.env.NODE_ENV === "production") { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true }); diff --git a/apps/web/src/app/modules/loose-components.module.ts b/apps/web/src/app/modules/loose-components.module.ts new file mode 100644 index 0000000000..8f01eb40bd --- /dev/null +++ b/apps/web/src/app/modules/loose-components.module.ts @@ -0,0 +1,493 @@ +import { NgModule } from "@angular/core"; + +import { UserVerificationComponent } from "jslib-angular/components/user-verification.component"; + +import { AcceptEmergencyComponent } from "../accounts/accept-emergency.component"; +import { AcceptOrganizationComponent } from "../accounts/accept-organization.component"; +import { HintComponent } from "../accounts/hint.component"; +import { LockComponent } from "../accounts/lock.component"; +import { LoginComponent } from "../accounts/login.component"; +import { RecoverDeleteComponent } from "../accounts/recover-delete.component"; +import { RecoverTwoFactorComponent } from "../accounts/recover-two-factor.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 { TwoFactorOptionsComponent } from "../accounts/two-factor-options.component"; +import { TwoFactorComponent } from "../accounts/two-factor.component"; +import { UpdatePasswordComponent } from "../accounts/update-password.component"; +import { UpdateTempPasswordComponent } from "../accounts/update-temp-password.component"; +import { VerifyEmailTokenComponent } from "../accounts/verify-email-token.component"; +import { VerifyRecoverDeleteComponent } from "../accounts/verify-recover-delete.component"; +import { NestedCheckboxComponent } from "../components/nested-checkbox.component"; +import { OrganizationSwitcherComponent } from "../components/organization-switcher.component"; +import { PasswordRepromptComponent } from "../components/password-reprompt.component"; +import { PasswordStrengthComponent } from "../components/password-strength.component"; +import { PremiumBadgeComponent } from "../components/premium-badge.component"; +import { FooterComponent } from "../layouts/footer.component"; +import { FrontendLayoutComponent } from "../layouts/frontend-layout.component"; +import { NavbarComponent } from "../layouts/navbar.component"; +import { UserLayoutComponent } from "../layouts/user-layout.component"; +import { OrganizationLayoutComponent } from "../organizations/layouts/organization-layout.component"; +import { BulkConfirmComponent as OrgBulkConfirmComponent } from "../organizations/manage/bulk/bulk-confirm.component"; +import { BulkRemoveComponent as OrgBulkRemoveComponent } from "../organizations/manage/bulk/bulk-remove.component"; +import { BulkStatusComponent as OrgBulkStatusComponent } from "../organizations/manage/bulk/bulk-status.component"; +import { CollectionAddEditComponent as OrgCollectionAddEditComponent } from "../organizations/manage/collection-add-edit.component"; +import { CollectionsComponent as OrgManageCollectionsComponent } from "../organizations/manage/collections.component"; +import { EntityEventsComponent as OrgEntityEventsComponent } from "../organizations/manage/entity-events.component"; +import { EventsComponent as OrgEventsComponent } from "../organizations/manage/events.component"; +import { GroupAddEditComponent as OrgGroupAddEditComponent } from "../organizations/manage/group-add-edit.component"; +import { GroupsComponent as OrgGroupsComponent } from "../organizations/manage/groups.component"; +import { ManageComponent as OrgManageComponent } from "../organizations/manage/manage.component"; +import { PeopleComponent as OrgPeopleComponent } from "../organizations/manage/people.component"; +import { PoliciesComponent as OrgPoliciesComponent } from "../organizations/manage/policies.component"; +import { PolicyEditComponent as OrgPolicyEditComponent } from "../organizations/manage/policy-edit.component"; +import { ResetPasswordComponent as OrgResetPasswordComponent } from "../organizations/manage/reset-password.component"; +import { UserAddEditComponent as OrgUserAddEditComponent } from "../organizations/manage/user-add-edit.component"; +import { UserConfirmComponent as OrgUserConfirmComponent } from "../organizations/manage/user-confirm.component"; +import { UserGroupsComponent as OrgUserGroupsComponent } from "../organizations/manage/user-groups.component"; +import { DisableSendPolicyComponent } from "../organizations/policies/disable-send.component"; +import { MasterPasswordPolicyComponent } from "../organizations/policies/master-password.component"; +import { PasswordGeneratorPolicyComponent } from "../organizations/policies/password-generator.component"; +import { PersonalOwnershipPolicyComponent } from "../organizations/policies/personal-ownership.component"; +import { RequireSsoPolicyComponent } from "../organizations/policies/require-sso.component"; +import { ResetPasswordPolicyComponent } from "../organizations/policies/reset-password.component"; +import { SendOptionsPolicyComponent } from "../organizations/policies/send-options.component"; +import { SingleOrgPolicyComponent } from "../organizations/policies/single-org.component"; +import { TwoFactorAuthenticationPolicyComponent } from "../organizations/policies/two-factor-authentication.component"; +import { AccountComponent as OrgAccountComponent } from "../organizations/settings/account.component"; +import { AdjustSubscription } from "../organizations/settings/adjust-subscription.component"; +import { BillingSyncApiKeyComponent } from "../organizations/settings/billing-sync-api-key.component"; +import { ChangePlanComponent } from "../organizations/settings/change-plan.component"; +import { DeleteOrganizationComponent } from "../organizations/settings/delete-organization.component"; +import { DownloadLicenseComponent } from "../organizations/settings/download-license.component"; +import { ImageSubscriptionHiddenComponent as OrgSubscriptionHiddenComponent } from "../organizations/settings/image-subscription-hidden.component"; +import { OrganizationBillingComponent } from "../organizations/settings/organization-billing.component"; +import { OrganizationSubscriptionComponent } from "../organizations/settings/organization-subscription.component"; +import { SettingsComponent as OrgSettingComponent } from "../organizations/settings/settings.component"; +import { TwoFactorSetupComponent as OrgTwoFactorSetupComponent } from "../organizations/settings/two-factor-setup.component"; +import { AcceptFamilySponsorshipComponent } from "../organizations/sponsorships/accept-family-sponsorship.component"; +import { FamiliesForEnterpriseSetupComponent } from "../organizations/sponsorships/families-for-enterprise-setup.component"; +import { ExportComponent as OrgExportComponent } from "../organizations/tools/export.component"; +import { ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent } from "../organizations/tools/exposed-passwords-report.component"; +import { ImportComponent as OrgImportComponent } from "../organizations/tools/import.component"; +import { InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent } from "../organizations/tools/inactive-two-factor-report.component"; +import { ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent } from "../organizations/tools/reused-passwords-report.component"; +import { ToolsComponent as OrgToolsComponent } from "../organizations/tools/tools.component"; +import { UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent } from "../organizations/tools/unsecured-websites-report.component"; +import { WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent } from "../organizations/tools/weak-passwords-report.component"; +import { AddEditComponent as OrgAddEditComponent } from "../organizations/vault/add-edit.component"; +import { AttachmentsComponent as OrgAttachmentsComponent } from "../organizations/vault/attachments.component"; +import { CiphersComponent as OrgCiphersComponent } from "../organizations/vault/ciphers.component"; +import { CollectionsComponent as OrgCollectionsComponent } from "../organizations/vault/collections.component"; +import { ProvidersComponent } from "../providers/providers.component"; +import { BreachReportComponent } from "../reports/breach-report.component"; +import { ExposedPasswordsReportComponent } from "../reports/exposed-passwords-report.component"; +import { InactiveTwoFactorReportComponent } from "../reports/inactive-two-factor-report.component"; +import { ReportCardComponent } from "../reports/report-card.component"; +import { ReportListComponent } from "../reports/report-list.component"; +import { ReportsComponent } from "../reports/reports.component"; +import { ReusedPasswordsReportComponent } from "../reports/reused-passwords-report.component"; +import { UnsecuredWebsitesReportComponent } from "../reports/unsecured-websites-report.component"; +import { WeakPasswordsReportComponent } from "../reports/weak-passwords-report.component"; +import { AccessComponent } from "../send/access.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 { AccountComponent } from "../settings/account.component"; +import { AddCreditComponent } from "../settings/add-credit.component"; +import { AdjustPaymentComponent } from "../settings/adjust-payment.component"; +import { AdjustStorageComponent } from "../settings/adjust-storage.component"; +import { ApiKeyComponent } from "../settings/api-key.component"; +import { BillingSyncKeyComponent } from "../settings/billing-sync-key.component"; +import { ChangeEmailComponent } from "../settings/change-email.component"; +import { ChangeKdfComponent } from "../settings/change-kdf.component"; +import { ChangePasswordComponent } from "../settings/change-password.component"; +import { CreateOrganizationComponent } from "../settings/create-organization.component"; +import { DeauthorizeSessionsComponent } from "../settings/deauthorize-sessions.component"; +import { DeleteAccountComponent } from "../settings/delete-account.component"; +import { DomainRulesComponent } from "../settings/domain-rules.component"; +import { EmergencyAccessAddEditComponent } from "../settings/emergency-access-add-edit.component"; +import { EmergencyAccessAttachmentsComponent } from "../settings/emergency-access-attachments.component"; +import { EmergencyAccessConfirmComponent } from "../settings/emergency-access-confirm.component"; +import { EmergencyAccessTakeoverComponent } from "../settings/emergency-access-takeover.component"; +import { EmergencyAccessViewComponent } from "../settings/emergency-access-view.component"; +import { EmergencyAccessComponent } from "../settings/emergency-access.component"; +import { EmergencyAddEditComponent } from "../settings/emergency-add-edit.component"; +import { OrganizationPlansComponent } from "../settings/organization-plans.component"; +import { PaymentMethodComponent } from "../settings/payment-method.component"; +import { PaymentComponent } from "../settings/payment.component"; +import { PreferencesComponent } from "../settings/preferences.component"; +import { PremiumComponent } from "../settings/premium.component"; +import { ProfileComponent } from "../settings/profile.component"; +import { PurgeVaultComponent } from "../settings/purge-vault.component"; +import { SecurityKeysComponent } from "../settings/security-keys.component"; +import { SecurityComponent } from "../settings/security.component"; +import { SettingsComponent } from "../settings/settings.component"; +import { SponsoredFamiliesComponent } from "../settings/sponsored-families.component"; +import { SponsoringOrgRowComponent } from "../settings/sponsoring-org-row.component"; +import { SubscriptionComponent } from "../settings/subscription.component"; +import { TaxInfoComponent } from "../settings/tax-info.component"; +import { TwoFactorAuthenticatorComponent } from "../settings/two-factor-authenticator.component"; +import { TwoFactorDuoComponent } from "../settings/two-factor-duo.component"; +import { TwoFactorEmailComponent } from "../settings/two-factor-email.component"; +import { TwoFactorRecoveryComponent } from "../settings/two-factor-recovery.component"; +import { TwoFactorSetupComponent } from "../settings/two-factor-setup.component"; +import { TwoFactorVerifyComponent } from "../settings/two-factor-verify.component"; +import { TwoFactorWebAuthnComponent } from "../settings/two-factor-webauthn.component"; +import { TwoFactorYubiKeyComponent } from "../settings/two-factor-yubikey.component"; +import { UpdateKeyComponent } from "../settings/update-key.component"; +import { UpdateLicenseComponent } from "../settings/update-license.component"; +import { UserBillingHistoryComponent } from "../settings/user-billing-history.component"; +import { UserSubscriptionComponent } from "../settings/user-subscription.component"; +import { VaultTimeoutInputComponent } from "../settings/vault-timeout-input.component"; +import { VerifyEmailComponent } from "../settings/verify-email.component"; +import { ExportComponent } from "../tools/export.component"; +import { GeneratorComponent } from "../tools/generator.component"; +import { ImportComponent } from "../tools/import.component"; +import { PasswordGeneratorHistoryComponent } from "../tools/password-generator-history.component"; +import { ToolsComponent } from "../tools/tools.component"; +import { AddEditCustomFieldsComponent } from "../vault/add-edit-custom-fields.component"; +import { AddEditComponent } from "../vault/add-edit.component"; +import { AttachmentsComponent } from "../vault/attachments.component"; +import { BulkActionsComponent } from "../vault/bulk-actions.component"; +import { BulkDeleteComponent } from "../vault/bulk-delete.component"; +import { BulkMoveComponent } from "../vault/bulk-move.component"; +import { BulkRestoreComponent } from "../vault/bulk-restore.component"; +import { BulkShareComponent } from "../vault/bulk-share.component"; +import { CiphersComponent } from "../vault/ciphers.component"; +import { CollectionsComponent } from "../vault/collections.component"; +import { FolderAddEditComponent } from "../vault/folder-add-edit.component"; +import { ShareComponent } from "../vault/share.component"; + +import { PipesModule } from "./pipes/pipes.module"; +import { SharedModule } from "./shared.module"; +import { VaultFilterModule } from "./vault-filter/vault-filter.module"; +import { OrganizationBadgeModule } from "./vault/modules/organization-badge/organization-badge.module"; + +// Please do not add to this list of declarations - we should refactor these into modules when doing so makes sense until there are none left. +// If you are building new functionality, please create or extend a feature module instead. +@NgModule({ + imports: [SharedModule, VaultFilterModule, OrganizationBadgeModule, PipesModule], + declarations: [ + PremiumBadgeComponent, + AcceptEmergencyComponent, + AcceptFamilySponsorshipComponent, + AcceptOrganizationComponent, + AccessComponent, + AccountComponent, + AddCreditComponent, + AddEditComponent, + AddEditCustomFieldsComponent, + AddEditCustomFieldsComponent, + AdjustPaymentComponent, + AdjustStorageComponent, + AdjustSubscription, + ApiKeyComponent, + AttachmentsComponent, + BillingSyncApiKeyComponent, + BillingSyncKeyComponent, + BreachReportComponent, + BulkActionsComponent, + BulkDeleteComponent, + BulkMoveComponent, + BulkRestoreComponent, + BulkShareComponent, + ChangeEmailComponent, + ChangeKdfComponent, + ChangePasswordComponent, + ChangePlanComponent, + CiphersComponent, + CollectionsComponent, + CreateOrganizationComponent, + DeauthorizeSessionsComponent, + DeleteAccountComponent, + DeleteOrganizationComponent, + DisableSendPolicyComponent, + DomainRulesComponent, + DownloadLicenseComponent, + EmergencyAccessAddEditComponent, + EmergencyAccessAttachmentsComponent, + EmergencyAccessComponent, + EmergencyAccessConfirmComponent, + EmergencyAccessTakeoverComponent, + EmergencyAccessViewComponent, + EmergencyAddEditComponent, + ExportComponent, + ExposedPasswordsReportComponent, + FamiliesForEnterpriseSetupComponent, + FolderAddEditComponent, + FooterComponent, + FrontendLayoutComponent, + HintComponent, + ImportComponent, + InactiveTwoFactorReportComponent, + LockComponent, + LoginComponent, + MasterPasswordPolicyComponent, + NavbarComponent, + NestedCheckboxComponent, + OrganizationSwitcherComponent, + OrgAccountComponent, + OrgAddEditComponent, + OrganizationBillingComponent, + OrganizationLayoutComponent, + OrganizationPlansComponent, + OrganizationSubscriptionComponent, + OrgAttachmentsComponent, + OrgBulkConfirmComponent, + OrgBulkRemoveComponent, + OrgBulkStatusComponent, + OrgCiphersComponent, + OrgCollectionAddEditComponent, + OrgCollectionsComponent, + OrgEntityEventsComponent, + OrgEventsComponent, + OrgExportComponent, + OrgExposedPasswordsReportComponent, + OrgGroupAddEditComponent, + OrgGroupsComponent, + OrgImportComponent, + OrgInactiveTwoFactorReportComponent, + OrgManageCollectionsComponent, + OrgManageComponent, + OrgPeopleComponent, + OrgPoliciesComponent, + OrgPolicyEditComponent, + OrgResetPasswordComponent, + OrgReusedPasswordsReportComponent, + OrgSettingComponent, + OrgToolsComponent, + OrgTwoFactorSetupComponent, + OrgSubscriptionHiddenComponent, + OrgUnsecuredWebsitesReportComponent, + OrgUserAddEditComponent, + OrgUserConfirmComponent, + OrgUserGroupsComponent, + OrgWeakPasswordsReportComponent, + GeneratorComponent, + PasswordGeneratorHistoryComponent, + PasswordGeneratorPolicyComponent, + PasswordRepromptComponent, + PasswordStrengthComponent, + PaymentComponent, + PaymentMethodComponent, + PersonalOwnershipPolicyComponent, + PreferencesComponent, + PremiumBadgeComponent, + PremiumComponent, + ProfileComponent, + ProvidersComponent, + PurgeVaultComponent, + RecoverDeleteComponent, + RecoverTwoFactorComponent, + RegisterComponent, + RemovePasswordComponent, + ReportCardComponent, + ReportListComponent, + ReportsComponent, + RequireSsoPolicyComponent, + ResetPasswordPolicyComponent, + ReusedPasswordsReportComponent, + SecurityComponent, + SecurityKeysComponent, + SendAddEditComponent, + SendComponent, + SendEffluxDatesComponent, + SendOptionsPolicyComponent, + SetPasswordComponent, + SettingsComponent, + ShareComponent, + SingleOrgPolicyComponent, + SponsoredFamiliesComponent, + SponsoringOrgRowComponent, + SsoComponent, + SubscriptionComponent, + TaxInfoComponent, + ToolsComponent, + TwoFactorAuthenticationPolicyComponent, + TwoFactorAuthenticatorComponent, + TwoFactorComponent, + TwoFactorDuoComponent, + TwoFactorEmailComponent, + TwoFactorOptionsComponent, + TwoFactorRecoveryComponent, + TwoFactorSetupComponent, + TwoFactorVerifyComponent, + TwoFactorWebAuthnComponent, + TwoFactorYubiKeyComponent, + UnsecuredWebsitesReportComponent, + UpdateKeyComponent, + UpdateLicenseComponent, + UpdatePasswordComponent, + UpdateTempPasswordComponent, + UserBillingHistoryComponent, + UserLayoutComponent, + UserSubscriptionComponent, + UserVerificationComponent, + VaultTimeoutInputComponent, + VerifyEmailComponent, + VerifyEmailTokenComponent, + VerifyRecoverDeleteComponent, + WeakPasswordsReportComponent, + ], + exports: [ + PremiumBadgeComponent, + AcceptEmergencyComponent, + AcceptOrganizationComponent, + AccessComponent, + AccountComponent, + AddCreditComponent, + AddEditComponent, + AddEditCustomFieldsComponent, + AddEditCustomFieldsComponent, + AdjustPaymentComponent, + AdjustStorageComponent, + AdjustSubscription, + ApiKeyComponent, + AttachmentsComponent, + BreachReportComponent, + BulkActionsComponent, + BulkDeleteComponent, + BulkMoveComponent, + BulkRestoreComponent, + BulkShareComponent, + ChangeEmailComponent, + ChangeKdfComponent, + ChangePasswordComponent, + ChangePlanComponent, + CiphersComponent, + CollectionsComponent, + CreateOrganizationComponent, + DeauthorizeSessionsComponent, + DeleteAccountComponent, + DeleteOrganizationComponent, + DisableSendPolicyComponent, + DomainRulesComponent, + DownloadLicenseComponent, + EmergencyAccessAddEditComponent, + EmergencyAccessAttachmentsComponent, + EmergencyAccessComponent, + EmergencyAccessConfirmComponent, + EmergencyAccessTakeoverComponent, + EmergencyAccessViewComponent, + EmergencyAddEditComponent, + ExportComponent, + ExposedPasswordsReportComponent, + FamiliesForEnterpriseSetupComponent, + FolderAddEditComponent, + FooterComponent, + FrontendLayoutComponent, + HintComponent, + ImportComponent, + InactiveTwoFactorReportComponent, + LockComponent, + LoginComponent, + MasterPasswordPolicyComponent, + NavbarComponent, + NestedCheckboxComponent, + OrganizationSwitcherComponent, + OrgAccountComponent, + OrgAddEditComponent, + OrganizationBillingComponent, + OrganizationLayoutComponent, + OrganizationPlansComponent, + OrganizationSubscriptionComponent, + OrgAttachmentsComponent, + OrgBulkConfirmComponent, + OrgBulkRemoveComponent, + OrgBulkStatusComponent, + OrgCiphersComponent, + OrgCollectionAddEditComponent, + OrgCollectionsComponent, + OrgEntityEventsComponent, + OrgEventsComponent, + OrgExportComponent, + OrgExposedPasswordsReportComponent, + OrgGroupAddEditComponent, + OrgGroupsComponent, + OrgImportComponent, + OrgInactiveTwoFactorReportComponent, + OrgManageCollectionsComponent, + OrgManageComponent, + OrgPeopleComponent, + OrgPoliciesComponent, + OrgPolicyEditComponent, + OrgResetPasswordComponent, + OrgReusedPasswordsReportComponent, + OrgSettingComponent, + OrgToolsComponent, + OrgTwoFactorSetupComponent, + OrgUnsecuredWebsitesReportComponent, + OrgUserAddEditComponent, + OrgUserConfirmComponent, + OrgUserGroupsComponent, + OrgWeakPasswordsReportComponent, + GeneratorComponent, + PasswordGeneratorHistoryComponent, + PasswordGeneratorPolicyComponent, + PasswordRepromptComponent, + PasswordStrengthComponent, + PaymentComponent, + PaymentMethodComponent, + PersonalOwnershipPolicyComponent, + PreferencesComponent, + PremiumBadgeComponent, + PremiumComponent, + ProfileComponent, + ProvidersComponent, + PurgeVaultComponent, + RecoverDeleteComponent, + RecoverTwoFactorComponent, + RegisterComponent, + RemovePasswordComponent, + ReportCardComponent, + ReportListComponent, + ReportsComponent, + RequireSsoPolicyComponent, + ResetPasswordPolicyComponent, + ReusedPasswordsReportComponent, + SecurityComponent, + SecurityKeysComponent, + SendAddEditComponent, + SendComponent, + SendEffluxDatesComponent, + SendOptionsPolicyComponent, + SetPasswordComponent, + SettingsComponent, + ShareComponent, + SingleOrgPolicyComponent, + SponsoredFamiliesComponent, + SponsoringOrgRowComponent, + SsoComponent, + SubscriptionComponent, + TaxInfoComponent, + ToolsComponent, + TwoFactorAuthenticationPolicyComponent, + TwoFactorAuthenticatorComponent, + TwoFactorComponent, + TwoFactorDuoComponent, + TwoFactorEmailComponent, + TwoFactorOptionsComponent, + TwoFactorRecoveryComponent, + TwoFactorSetupComponent, + TwoFactorVerifyComponent, + TwoFactorWebAuthnComponent, + TwoFactorYubiKeyComponent, + UnsecuredWebsitesReportComponent, + UpdateKeyComponent, + UpdateLicenseComponent, + UpdatePasswordComponent, + UpdateTempPasswordComponent, + UserBillingHistoryComponent, + UserLayoutComponent, + UserSubscriptionComponent, + UserVerificationComponent, + VaultTimeoutInputComponent, + VerifyEmailComponent, + VerifyEmailTokenComponent, + VerifyRecoverDeleteComponent, + WeakPasswordsReportComponent, + ], +}) +export class LooseComponentsModule {} diff --git a/apps/web/src/app/modules/organizations/manage/entity-users.component.html b/apps/web/src/app/modules/organizations/manage/entity-users.component.html new file mode 100644 index 0000000000..f4c157a941 --- /dev/null +++ b/apps/web/src/app/modules/organizations/manage/entity-users.component.html @@ -0,0 +1,180 @@ + diff --git a/apps/web/src/app/modules/organizations/manage/entity-users.component.ts b/apps/web/src/app/modules/organizations/manage/entity-users.component.ts new file mode 100644 index 0000000000..5d81f65a64 --- /dev/null +++ b/apps/web/src/app/modules/organizations/manage/entity-users.component.ts @@ -0,0 +1,156 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { SearchPipe } from "jslib-angular/pipes/search.pipe"; +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 { OrganizationUserStatusType } from "jslib-common/enums/organizationUserStatusType"; +import { OrganizationUserType } from "jslib-common/enums/organizationUserType"; +import { Utils } from "jslib-common/misc/utils"; +import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest"; +import { OrganizationUserUserDetailsResponse } from "jslib-common/models/response/organizationUserResponse"; + +@Component({ + selector: "app-entity-users", + templateUrl: "entity-users.component.html", + providers: [SearchPipe], +}) +export class EntityUsersComponent implements OnInit { + @Input() entity: "group" | "collection"; + @Input() entityId: string; + @Input() entityName: string; + @Input() organizationId: string; + @Output() onEditedUsers = new EventEmitter(); + + organizationUserType = OrganizationUserType; + organizationUserStatusType = OrganizationUserStatusType; + + showSelected = false; + loading = true; + formPromise: Promise; + selectedCount = 0; + searchText: string; + + private allUsers: OrganizationUserUserDetailsResponse[] = []; + + constructor( + private search: SearchPipe, + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + await this.loadUsers(); + this.loading = false; + } + + get users() { + if (this.showSelected) { + return this.allUsers.filter((u) => (u as any).checked); + } else { + return this.allUsers; + } + } + + get searchedUsers() { + return this.search.transform(this.users, this.searchText, "name", "email", "id"); + } + + get scrollViewportStyle() { + return `min-height: 120px; height: ${120 + this.searchedUsers.length * 46}px`; + } + + async loadUsers() { + const users = await this.apiService.getOrganizationUsers(this.organizationId); + this.allUsers = users.data.map((r) => r).sort(Utils.getSortFunction(this.i18nService, "email")); + if (this.entity === "group") { + const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId); + if (response != null && users.data.length > 0) { + response.forEach((s) => { + const user = users.data.filter((u) => u.id === s); + if (user != null && user.length > 0) { + (user[0] as any).checked = true; + } + }); + } + } else if (this.entity === "collection") { + const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId); + if (response != null && users.data.length > 0) { + response.forEach((s) => { + const user = users.data.filter((u) => !u.accessAll && u.id === s.id); + if (user != null && user.length > 0) { + (user[0] as any).checked = true; + (user[0] as any).readOnly = s.readOnly; + (user[0] as any).hidePasswords = s.hidePasswords; + } + }); + } + } + + this.allUsers.forEach((u) => { + if (this.entity === "collection" && u.accessAll) { + (u as any).checked = true; + } + if ((u as any).checked) { + this.selectedCount++; + } + }); + } + + check(u: OrganizationUserUserDetailsResponse) { + if (this.entity === "collection" && u.accessAll) { + return; + } + (u as any).checked = !(u as any).checked; + this.selectedChanged(u); + } + + selectedChanged(u: OrganizationUserUserDetailsResponse) { + if ((u as any).checked) { + this.selectedCount++; + } else { + if (this.entity === "collection") { + (u as any).readOnly = false; + (u as any).hidePasswords = false; + } + this.selectedCount--; + } + } + + filterSelected(showSelected: boolean) { + this.showSelected = showSelected; + } + + async submit() { + try { + if (this.entity === "group") { + const selections = this.users.filter((u) => (u as any).checked).map((u) => u.id); + this.formPromise = this.apiService.putGroupUsers( + this.organizationId, + this.entityId, + selections + ); + } else { + const selections = this.users + .filter((u) => (u as any).checked && !u.accessAll) + .map( + (u) => + new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly, !!(u as any).hidePasswords) + ); + this.formPromise = this.apiService.putCollectionUsers( + this.organizationId, + this.entityId, + selections + ); + } + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("updatedUsers")); + this.onEditedUsers.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/modules/organizations/manage/organization-manage.module.ts b/apps/web/src/app/modules/organizations/manage/organization-manage.module.ts new file mode 100644 index 0000000000..263e3a4aff --- /dev/null +++ b/apps/web/src/app/modules/organizations/manage/organization-manage.module.ts @@ -0,0 +1,13 @@ +import { ScrollingModule } from "@angular/cdk/scrolling"; +import { NgModule } from "@angular/core"; + +import { SharedModule } from "../../shared.module"; + +import { EntityUsersComponent } from "./entity-users.component"; + +@NgModule({ + imports: [SharedModule, ScrollingModule], + declarations: [EntityUsersComponent], + exports: [EntityUsersComponent], +}) +export class OrganizationManageModule {} diff --git a/apps/web/src/app/modules/organizations/users/enroll-master-password-reset.component.html b/apps/web/src/app/modules/organizations/users/enroll-master-password-reset.component.html new file mode 100644 index 0000000000..c8d15a3956 --- /dev/null +++ b/apps/web/src/app/modules/organizations/users/enroll-master-password-reset.component.html @@ -0,0 +1,59 @@ + diff --git a/apps/web/src/app/modules/organizations/users/enroll-master-password-reset.component.ts b/apps/web/src/app/modules/organizations/users/enroll-master-password-reset.component.ts new file mode 100644 index 0000000000..b996493d85 --- /dev/null +++ b/apps/web/src/app/modules/organizations/users/enroll-master-password-reset.component.ts @@ -0,0 +1,97 @@ +import { Component } from "@angular/core"; + +import { ModalRef } from "jslib-angular/components/modal/modal.ref"; +import { ModalConfig } from "jslib-angular/services/modal.service"; +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { Utils } from "jslib-common/misc/utils"; +import { Organization } from "jslib-common/models/domain/organization"; +import { OrganizationUserResetPasswordEnrollmentRequest } from "jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest"; +import { Verification } from "jslib-common/types/verification"; + +@Component({ + selector: "app-enroll-master-password-reset", + templateUrl: "enroll-master-password-reset.component.html", +}) +export class EnrollMasterPasswordReset { + organization: Organization; + + verification: Verification; + formPromise: Promise; + + constructor( + private userVerificationService: UserVerificationService, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private cryptoService: CryptoService, + private syncService: SyncService, + private logService: LogService, + private modalRef: ModalRef, + config: ModalConfig + ) { + this.organization = config.data.organization; + } + + async submit() { + let toastStringRef = "withdrawPasswordResetSuccess"; + + this.formPromise = this.userVerificationService + .buildRequest(this.verification, OrganizationUserResetPasswordEnrollmentRequest) + .then(async (request) => { + // Set variables + let keyString: string = null; + + // Enrolling + if (!this.organization.resetPasswordEnrolled) { + // Retrieve Public Key + const orgKeys = await this.apiService.getOrganizationKeys(this.organization.id); + if (orgKeys == null) { + throw new Error(this.i18nService.t("resetPasswordOrgKeysError")); + } + + const publicKey = Utils.fromB64ToArray(orgKeys.publicKey); + + // RSA Encrypt user's encKey.key with organization public key + const encKey = await this.cryptoService.getEncKey(); + const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer); + keyString = encryptedKey.encryptedString; + toastStringRef = "enrollPasswordResetSuccess"; + + // Create request and execute enrollment + request.resetPasswordKey = keyString; + await this.apiService.putOrganizationUserResetPasswordEnrollment( + this.organization.id, + this.organization.userId, + request + ); + } else { + // Withdrawal + request.resetPasswordKey = keyString; + await this.apiService.putOrganizationUserResetPasswordEnrollment( + this.organization.id, + this.organization.userId, + request + ); + } + + await this.syncService.fullSync(true); + }); + try { + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t(toastStringRef)); + this.modalRef.close(); + } catch (e) { + this.logService.error(e); + } + } + + get isEnrolled(): boolean { + return this.organization.resetPasswordEnrolled; + } +} diff --git a/apps/web/src/app/modules/organizations/users/organization-user.module.ts b/apps/web/src/app/modules/organizations/users/organization-user.module.ts new file mode 100644 index 0000000000..aed0ac6629 --- /dev/null +++ b/apps/web/src/app/modules/organizations/users/organization-user.module.ts @@ -0,0 +1,14 @@ +import { ScrollingModule } from "@angular/cdk/scrolling"; +import { NgModule } from "@angular/core"; + +import { LooseComponentsModule } from "../../loose-components.module"; +import { SharedModule } from "../../shared.module"; + +import { EnrollMasterPasswordReset } from "./enroll-master-password-reset.component"; + +@NgModule({ + imports: [SharedModule, ScrollingModule, LooseComponentsModule], + declarations: [EnrollMasterPasswordReset], + exports: [EnrollMasterPasswordReset], +}) +export class OrganizationUserModule {} diff --git a/apps/web/src/app/modules/pipes/get-organization-name.pipe.ts b/apps/web/src/app/modules/pipes/get-organization-name.pipe.ts new file mode 100644 index 0000000000..5745933c3a --- /dev/null +++ b/apps/web/src/app/modules/pipes/get-organization-name.pipe.ts @@ -0,0 +1,14 @@ +import { Pipe, PipeTransform } from "@angular/core"; + +import { Organization } from "jslib-common/models/domain/organization"; + +@Pipe({ + name: "orgNameFromId", + pure: true, +}) +export class GetOrgNameFromIdPipe implements PipeTransform { + transform(value: string, organizations: Organization[]) { + const orgName = organizations.find((o) => o.id === value)?.name; + return orgName; + } +} diff --git a/apps/web/src/app/modules/pipes/pipes.module.ts b/apps/web/src/app/modules/pipes/pipes.module.ts new file mode 100644 index 0000000000..19015baec9 --- /dev/null +++ b/apps/web/src/app/modules/pipes/pipes.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from "@angular/core"; + +import { GetOrgNameFromIdPipe } from "./get-organization-name.pipe"; + +@NgModule({ + imports: [], + declarations: [GetOrgNameFromIdPipe], + exports: [GetOrgNameFromIdPipe], +}) +export class PipesModule {} diff --git a/apps/web/src/app/modules/shared.module.ts b/apps/web/src/app/modules/shared.module.ts new file mode 100644 index 0000000000..2455bd03fc --- /dev/null +++ b/apps/web/src/app/modules/shared.module.ts @@ -0,0 +1,149 @@ +import { DragDropModule } from "@angular/cdk/drag-drop"; +import { DatePipe, registerLocaleData, CommonModule } 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 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 localeSv from "@angular/common/locales/sv"; +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 { RouterModule } from "@angular/router"; +import { BadgeModule, ButtonModule, CalloutModule, MenuModule } from "@bitwarden/components"; +import { InfiniteScrollModule } from "ngx-infinite-scroll"; +import { ToastrModule } from "ngx-toastr"; + +import { JslibModule } from "jslib-angular/jslib.module"; + +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(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(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(localeTr, "tr"); +registerLocaleData(localeUk, "uk"); +registerLocaleData(localeVi, "vi"); +registerLocaleData(localeZhCn, "zh-CN"); +registerLocaleData(localeZhTw, "zh-TW"); + +@NgModule({ + imports: [ + CommonModule, + DragDropModule, + FormsModule, + InfiniteScrollModule, + JslibModule, + ReactiveFormsModule, + RouterModule, + BadgeModule, + ButtonModule, + CalloutModule, + ToastrModule, + BadgeModule, + ButtonModule, + MenuModule, + ], + exports: [ + CommonModule, + DragDropModule, + FormsModule, + InfiniteScrollModule, + JslibModule, + ReactiveFormsModule, + RouterModule, + BadgeModule, + ButtonModule, + CalloutModule, + ToastrModule, + BadgeModule, + ButtonModule, + MenuModule, + ], + providers: [DatePipe], + bootstrap: [], +}) +export class SharedModule {} diff --git a/apps/web/src/app/modules/vault-filter/components/collection-filter.component.html b/apps/web/src/app/modules/vault-filter/components/collection-filter.component.html new file mode 100644 index 0000000000..24463dca19 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/collection-filter.component.html @@ -0,0 +1,74 @@ + +
+ +

 {{ collectionsGrouping.name | i18n }}

+
+
    + +
  • + + + + +
      + + +
    +
  • +
    + + +
+
diff --git a/apps/web/src/app/modules/vault-filter/components/collection-filter.component.ts b/apps/web/src/app/modules/vault-filter/components/collection-filter.component.ts new file mode 100644 index 0000000000..e08c724a5a --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/collection-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { CollectionFilterComponent as BaseCollectionFilterComponent } from "jslib-angular/modules/vault-filter/components/collection-filter.component"; + +@Component({ + selector: "app-collection-filter", + templateUrl: "collection-filter.component.html", +}) +export class CollectionFilterComponent extends BaseCollectionFilterComponent {} diff --git a/apps/web/src/app/modules/vault-filter/components/folder-filter.component.html b/apps/web/src/app/modules/vault-filter/components/folder-filter.component.html new file mode 100644 index 0000000000..9e89e28dcb --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/folder-filter.component.html @@ -0,0 +1,82 @@ + +
+ +

 {{ "folders" | i18n }}

+ +
+
    + +
  • + + + + + +
      + + +
    +
  • +
    + +
+
diff --git a/apps/web/src/app/modules/vault-filter/components/folder-filter.component.ts b/apps/web/src/app/modules/vault-filter/components/folder-filter.component.ts new file mode 100644 index 0000000000..6205239f77 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/folder-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { FolderFilterComponent as BaseFolderFilterComponent } from "jslib-angular/modules/vault-filter/components/folder-filter.component"; + +@Component({ + selector: "app-folder-filter", + templateUrl: "folder-filter.component.html", +}) +export class FolderFilterComponent extends BaseFolderFilterComponent {} diff --git a/apps/web/src/app/modules/vault-filter/components/link-sso.component.html b/apps/web/src/app/modules/vault-filter/components/link-sso.component.html new file mode 100644 index 0000000000..c76d205597 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/link-sso.component.html @@ -0,0 +1,4 @@ + + + {{ "linkSso" | i18n }} + diff --git a/apps/web/src/app/modules/vault-filter/components/link-sso.component.ts b/apps/web/src/app/modules/vault-filter/components/link-sso.component.ts new file mode 100644 index 0000000000..e86eeb7377 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/link-sso.component.ts @@ -0,0 +1,59 @@ +import { AfterContentInit, Component, Input } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { SsoComponent } 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 { Organization } from "jslib-common/models/domain/organization"; + +@Component({ + selector: "app-link-sso", + templateUrl: "link-sso.component.html", +}) +export class LinkSsoComponent extends SsoComponent implements AfterContentInit { + @Input() organization: Organization; + returnUri = "/settings/organizations"; + + constructor( + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + apiService: ApiService, + authService: AuthService, + router: Router, + route: ActivatedRoute, + cryptoFunctionService: CryptoFunctionService, + passwordGenerationService: PasswordGenerationService, + stateService: StateService, + environmentService: EnvironmentService, + logService: LogService + ) { + super( + authService, + router, + i18nService, + route, + stateService, + platformUtilsService, + apiService, + cryptoFunctionService, + environmentService, + passwordGenerationService, + logService + ); + + this.returnUri = "/settings/organizations"; + this.redirectUri = window.location.origin + "/sso-connector.html"; + this.clientId = "web"; + } + + async ngAfterContentInit() { + this.identifier = this.organization.identifier; + } +} diff --git a/apps/web/src/app/modules/vault-filter/components/organization-filter.component.html b/apps/web/src/app/modules/vault-filter/components/organization-filter.component.html new file mode 100644 index 0000000000..0c4bf90eb1 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/organization-filter.component.html @@ -0,0 +1,155 @@ + + + + + + +
+ + +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+
+
+
diff --git a/apps/web/src/app/modules/vault-filter/components/organization-filter.component.ts b/apps/web/src/app/modules/vault-filter/components/organization-filter.component.ts new file mode 100644 index 0000000000..30241acd95 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/organization-filter.component.ts @@ -0,0 +1,11 @@ +import { Component } from "@angular/core"; + +import { OrganizationFilterComponent as BaseOrganizationFilterComponent } from "jslib-angular/modules/vault-filter/components/organization-filter.component"; + +@Component({ + selector: "app-organization-filter", + templateUrl: "organization-filter.component.html", +}) +export class OrganizationFilterComponent extends BaseOrganizationFilterComponent { + displayText = "allVaults"; +} diff --git a/apps/web/src/app/modules/vault-filter/components/organization-options.component.html b/apps/web/src/app/modules/vault-filter/components/organization-options.component.html new file mode 100644 index 0000000000..db95e56ecd --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/organization-options.component.html @@ -0,0 +1,43 @@ + + + {{ "loading" | i18n }} + +
+ + + + + + + + + +
diff --git a/apps/web/src/app/modules/vault-filter/components/organization-options.component.ts b/apps/web/src/app/modules/vault-filter/components/organization-options.component.ts new file mode 100644 index 0000000000..fb256acd58 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/organization-options.component.ts @@ -0,0 +1,123 @@ +import { Component, Input } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +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 { PolicyService } from "jslib-common/abstractions/policy.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { Policy } from "jslib-common/models/domain/policy"; + +import { EnrollMasterPasswordReset } from "../../organizations/users/enroll-master-password-reset.component"; + +@Component({ + selector: "app-organization-options", + templateUrl: "organization-options.component.html", +}) +export class OrganizationOptionsComponent { + actionPromise: Promise; + policies: Policy[]; + loaded = false; + + @Input() organization: Organization; + + constructor( + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private apiService: ApiService, + private syncService: SyncService, + private policyService: PolicyService, + private modalService: ModalService, + private logService: LogService + ) {} + + async ngOnInit() { + await this.load(); + } + + async load() { + this.policies = await this.policyService.getAll(PolicyType.ResetPassword); + this.loaded = true; + } + + allowEnrollmentChanges(org: Organization): boolean { + if (org.usePolicies && org.useResetPassword && org.hasPublicAndPrivateKeys) { + const policy = this.policies.find((p) => p.organizationId === org.id); + if (policy != null && policy.enabled) { + return org.resetPasswordEnrolled && policy.data.autoEnrollEnabled ? false : true; + } + } + + return false; + } + + showEnrolledStatus(org: Organization): boolean { + return ( + org.useResetPassword && + org.resetPasswordEnrolled && + this.policies.some((p) => p.organizationId === org.id && p.enabled) + ); + } + + async unlinkSso(org: Organization) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("unlinkSsoConfirmation"), + org.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.actionPromise = this.apiService.deleteSsoUser(org.id).then(() => { + return this.syncService.fullSync(true); + }); + await this.actionPromise; + this.platformUtilsService.showToast("success", null, "Unlinked SSO"); + await this.load(); + } catch (e) { + this.platformUtilsService.showToast("error", this.i18nService.t("errorOccurred"), e.message); + this.logService.error(e); + } + } + + async leave(org: Organization) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("leaveOrganizationConfirmation"), + org.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => { + return this.syncService.fullSync(true); + }); + await this.actionPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("leftOrganization")); + await this.load(); + } catch (e) { + this.platformUtilsService.showToast("error", this.i18nService.t("errorOccurred"), e.message); + this.logService.error(e); + } + } + + async toggleResetPasswordEnrollment(org: Organization) { + this.modalService.open(EnrollMasterPasswordReset, { + allowMultipleModals: true, + data: { + organization: org, + }, + }); + } +} diff --git a/apps/web/src/app/modules/vault-filter/components/status-filter.component.html b/apps/web/src/app/modules/vault-filter/components/status-filter.component.html new file mode 100644 index 0000000000..28c58c70be --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/status-filter.component.html @@ -0,0 +1,33 @@ + +
    +
  • + + + +
  • +
  • + + + +
  • +
  • + + + +
  • +
+
diff --git a/apps/web/src/app/modules/vault-filter/components/status-filter.component.ts b/apps/web/src/app/modules/vault-filter/components/status-filter.component.ts new file mode 100644 index 0000000000..c7c38aa6aa --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/status-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { StatusFilterComponent as BaseStatusFilterComponent } from "jslib-angular/modules/vault-filter/components/status-filter.component"; + +@Component({ + selector: "app-status-filter", + templateUrl: "status-filter.component.html", +}) +export class StatusFilterComponent extends BaseStatusFilterComponent {} diff --git a/apps/web/src/app/modules/vault-filter/components/type-filter.component.html b/apps/web/src/app/modules/vault-filter/components/type-filter.component.html new file mode 100644 index 0000000000..1149b0e95b --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/type-filter.component.html @@ -0,0 +1,60 @@ +
+ +

 {{ "types" | i18n }}

+
+
    +
  • + + + +
  • +
  • + + + +
  • +
  • + + + +
  • +
  • + + + +
  • +
diff --git a/apps/web/src/app/modules/vault-filter/components/type-filter.component.ts b/apps/web/src/app/modules/vault-filter/components/type-filter.component.ts new file mode 100644 index 0000000000..794fc49787 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/components/type-filter.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { TypeFilterComponent as BaseTypeFilterComponent } from "jslib-angular/modules/vault-filter/components/type-filter.component"; + +@Component({ + selector: "app-type-filter", + templateUrl: "type-filter.component.html", +}) +export class TypeFilterComponent extends BaseTypeFilterComponent {} diff --git a/apps/web/src/app/modules/vault-filter/vault-filter.component.html b/apps/web/src/app/modules/vault-filter/vault-filter.component.html new file mode 100644 index 0000000000..e707474436 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/vault-filter.component.html @@ -0,0 +1,80 @@ +
+
+ +
+
+
+ {{ "filters" | i18n }} + + + +
+
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+
+
diff --git a/apps/web/src/app/modules/vault-filter/vault-filter.component.ts b/apps/web/src/app/modules/vault-filter/vault-filter.component.ts new file mode 100644 index 0000000000..4442e0abc6 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/vault-filter.component.ts @@ -0,0 +1,34 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { VaultFilterComponent as BaseVaultFilterComponent } from "jslib-angular/modules/vault-filter/vault-filter.component"; +import { VaultFilterService } from "jslib-angular/modules/vault-filter/vault-filter.service"; +import { Organization } from "jslib-common/models/domain/organization"; + +@Component({ + selector: "app-vault-filter", + templateUrl: "vault-filter.component.html", +}) +export class VaultFilterComponent extends BaseVaultFilterComponent { + @Input() showOrgFilter = true; + @Input() showFolders = true; + @Input() showFavorites = true; + + @Output() onSearchTextChanged = new EventEmitter(); + + searchPlaceholder: string; + searchText = ""; + + organization: Organization; + + constructor(vaultFilterService: VaultFilterService) { + super(vaultFilterService); + } + + searchTextChanged() { + this.onSearchTextChanged.emit(this.searchText); + } + + async initCollections() { + return await this.vaultFilterService.buildCollections(this.organization?.id); + } +} diff --git a/apps/web/src/app/modules/vault-filter/vault-filter.module.ts b/apps/web/src/app/modules/vault-filter/vault-filter.module.ts new file mode 100644 index 0000000000..bf7cb3d517 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/vault-filter.module.ts @@ -0,0 +1,50 @@ +import { NgModule } from "@angular/core"; + +import { VaultFilterService } from "jslib-angular/modules/vault-filter/vault-filter.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +import { SharedModule } from "../shared.module"; + +import { CollectionFilterComponent } from "./components/collection-filter.component"; +import { FolderFilterComponent } from "./components/folder-filter.component"; +import { LinkSsoComponent } from "./components/link-sso.component"; +import { OrganizationFilterComponent } from "./components/organization-filter.component"; +import { OrganizationOptionsComponent } from "./components/organization-options.component"; +import { StatusFilterComponent } from "./components/status-filter.component"; +import { TypeFilterComponent } from "./components/type-filter.component"; +import { VaultFilterComponent } from "./vault-filter.component"; + +@NgModule({ + imports: [SharedModule], + declarations: [ + VaultFilterComponent, + CollectionFilterComponent, + FolderFilterComponent, + OrganizationFilterComponent, + OrganizationOptionsComponent, + StatusFilterComponent, + TypeFilterComponent, + LinkSsoComponent, + ], + exports: [VaultFilterComponent], + providers: [ + { + provide: VaultFilterService, + useClass: VaultFilterService, + deps: [ + StateService, + OrganizationService, + FolderService, + CipherService, + CollectionService, + PolicyService, + ], + }, + ], +}) +export class VaultFilterModule {} diff --git a/apps/web/src/app/modules/vault-filter/vault-filter.service.ts b/apps/web/src/app/modules/vault-filter/vault-filter.service.ts new file mode 100644 index 0000000000..01b9d50b58 --- /dev/null +++ b/apps/web/src/app/modules/vault-filter/vault-filter.service.ts @@ -0,0 +1,3 @@ +import { VaultFilterService as BaseVaultFilterService } from "jslib-angular/modules/vault-filter/vault-filter.service"; + +export class VaultFilterService extends BaseVaultFilterService {} diff --git a/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault-routing.module.ts b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault-routing.module.ts new file mode 100644 index 0000000000..7891ba3f44 --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { IndividualVaultComponent } from "./individual-vault.component"; +const routes: Routes = [ + { + path: "", + component: IndividualVaultComponent, + data: { titleId: "vaults" }, + }, +]; +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class IndividualVaultRoutingModule {} diff --git a/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.component.html b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.component.html new file mode 100644 index 0000000000..151354e4dc --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.component.html @@ -0,0 +1,121 @@ +
+
+
+
+
+
+ +
+
+
+
+
+ + + {{ trashCleanupWarning }} + + + +
+
+
+
+ + {{ "updateKeyTitle" | i18n }} +
+
+

{{ "updateEncryptionKeyShortDesc" | i18n }}

+ +
+
+ +
+
+ + {{ "updateBrowser" | i18n }} +
+
+

{{ "updateBrowserDesc" | i18n }}

+ + {{ "updateBrowser" | i18n }} + +
+
+
+
+ {{ "goPremium" | i18n }} +
+
+

{{ "premiumUpgradeUnlockFeatures" | i18n }}

+ + {{ "goPremium" | i18n }} + +
+
+
+
+
+ + + + + + diff --git a/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.component.ts b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.component.ts new file mode 100644 index 0000000000..ababbd8a30 --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.component.ts @@ -0,0 +1,415 @@ +import { + ChangeDetectorRef, + Component, + NgZone, + OnDestroy, + OnInit, + ViewChild, + ViewContainerRef, +} from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; +import { ModalService } from "jslib-angular/services/modal.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 { I18nService } from "jslib-common/abstractions/i18n.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 { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { TokenService } from "jslib-common/abstractions/token.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { UpdateKeyComponent } from "../../../../settings/update-key.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 { FolderAddEditComponent } from "../../../../vault/folder-add-edit.component"; +import { ShareComponent } from "../../../../vault/share.component"; +import { VaultFilterComponent } from "../../../vault-filter/vault-filter.component"; +import { VaultService } from "../../vault.service"; + +const BroadcasterSubscriptionId = "VaultComponent"; + +@Component({ + selector: "app-vault", + templateUrl: "individual-vault.component.html", +}) +export class IndividualVaultComponent implements OnInit, OnDestroy { + @ViewChild("vaultFilter", { static: true }) filterComponent: VaultFilterComponent; + @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent; + @ViewChild("attachments", { read: ViewContainerRef, static: true }) + attachmentsModalRef: ViewContainerRef; + @ViewChild("folderAddEdit", { read: ViewContainerRef, static: true }) + folderAddEditModalRef: ViewContainerRef; + @ViewChild("cipherAddEdit", { read: ViewContainerRef, static: true }) + cipherAddEditModalRef: ViewContainerRef; + @ViewChild("share", { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef; + @ViewChild("collections", { read: ViewContainerRef, static: true }) + collectionsModalRef: ViewContainerRef; + @ViewChild("updateKeyTemplate", { read: ViewContainerRef, static: true }) + updateKeyModalRef: ViewContainerRef; + + favorites = false; + folderId: string = null; + collectionId: string = null; + organizationId: string = null; + myVaultOnly = false; + showVerifyEmail = false; + showBrowserOutdated = false; + showUpdateKey = false; + showPremiumCallout = false; + deleted = false; + trashCleanupWarning: string = null; + activeFilter: VaultFilter = new VaultFilter(); + + constructor( + private syncService: SyncService, + private route: ActivatedRoute, + private router: Router, + private changeDetectorRef: ChangeDetectorRef, + private i18nService: I18nService, + private modalService: ModalService, + private tokenService: TokenService, + private cryptoService: CryptoService, + private messagingService: MessagingService, + private platformUtilsService: PlatformUtilsService, + private broadcasterService: BroadcasterService, + private ngZone: NgZone, + private stateService: StateService, + private organizationService: OrganizationService, + private vaultService: VaultService, + private cipherService: CipherService, + private passwordRepromptService: PasswordRepromptService + ) {} + + async ngOnInit() { + this.showVerifyEmail = !(await this.tokenService.getEmailVerified()); + this.showBrowserOutdated = window.navigator.userAgent.indexOf("MSIE") !== -1; + this.trashCleanupWarning = this.i18nService.t( + this.platformUtilsService.isSelfHost() + ? "trashCleanupWarningSelfHosted" + : "trashCleanupWarning" + ); + + this.route.queryParams.pipe(first()).subscribe(async (params) => { + await this.syncService.fullSync(false); + const canAccessPremium = await this.stateService.getCanAccessPremium(); + this.showPremiumCallout = + !this.showVerifyEmail && !canAccessPremium && !this.platformUtilsService.isSelfHost(); + + this.filterComponent.reloadCollectionsAndFolders(this.activeFilter); + this.filterComponent.reloadOrganizations(); + this.showUpdateKey = !(await this.cryptoService.hasEncKey()); + + 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); + } + } + await this.ciphersComponent.reload(); + + this.route.queryParams.subscribe(async (params) => { + if (params.cipherId) { + if ((await this.cipherService.get(params.cipherId)) != null) { + this.editCipherId(params.cipherId); + } else { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("unknownCipher") + ); + this.router.navigate([], { + queryParams: { cipherId: null }, + queryParamsHandling: "merge", + }); + } + } + }); + + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + if (message.successfully) { + await Promise.all([ + this.filterComponent.reloadCollectionsAndFolders(this.activeFilter), + this.filterComponent.reloadOrganizations(), + this.ciphersComponent.load(this.ciphersComponent.filter), + ]); + this.changeDetectorRef.detectChanges(); + } + break; + } + }); + }); + }); + } + + get isShowingCards() { + return ( + this.showBrowserOutdated || + this.showPremiumCallout || + this.showUpdateKey || + this.showVerifyEmail + ); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async applyVaultFilter(vaultFilter: VaultFilter) { + this.ciphersComponent.showAddNew = vaultFilter.status !== "trash"; + this.activeFilter = vaultFilter; + await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === "trash"); + this.filterComponent.searchPlaceholder = this.vaultService.calculateSearchBarLocalizationString( + this.activeFilter + ); + this.go(); + } + + async applyOrganizationFilter(orgId: string) { + if (orgId == null) { + this.activeFilter.resetOrganization(); + this.activeFilter.myVaultOnly = true; + } else { + this.activeFilter.selectedOrganizationId = orgId; + } + await this.applyVaultFilter(this.activeFilter); + } + + filterSearchText(searchText: string) { + this.ciphersComponent.searchText = searchText; + this.ciphersComponent.search(200); + } + + private buildFilter(): (cipher: CipherView) => boolean { + return (cipher) => { + let cipherPassesFilter = true; + if (this.activeFilter.status === "favorites" && cipherPassesFilter) { + cipherPassesFilter = cipher.favorite; + } + if (this.activeFilter.status === "trash" && cipherPassesFilter) { + cipherPassesFilter = cipher.isDeleted; + } + if (this.activeFilter.cipherType != null && cipherPassesFilter) { + cipherPassesFilter = cipher.type === this.activeFilter.cipherType; + } + if ( + this.activeFilter.selectedFolder && + this.activeFilter.selectedFolderId != "none" && + cipherPassesFilter + ) { + cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId; + } + if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) { + cipherPassesFilter = + cipher.collectionIds != null && + cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1; + } + if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId; + } + if (this.activeFilter.myVaultOnly && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === null; + } + return cipherPassesFilter; + }; + } + + async editCipherAttachments(cipher: CipherView) { + const canAccessPremium = await this.stateService.getCanAccessPremium(); + if (cipher.organizationId == null && !canAccessPremium) { + this.messagingService.send("premiumRequired"); + return; + } else if (cipher.organizationId != null) { + const org = await this.organizationService.get(cipher.organizationId); + if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) { + this.messagingService.send("upgradeOrganization", { + organizationId: cipher.organizationId, + }); + return; + } + } + + let madeAttachmentChanges = false; + const [modal] = await this.modalService.openViewRef( + AttachmentsComponent, + this.attachmentsModalRef, + (comp) => { + comp.cipherId = cipher.id; + comp.onUploadedAttachment.subscribe(() => (madeAttachmentChanges = true)); + comp.onDeletedAttachment.subscribe(() => (madeAttachmentChanges = true)); + comp.onReuploadedAttachment.subscribe(() => (madeAttachmentChanges = true)); + } + ); + + modal.onClosed.subscribe(async () => { + if (madeAttachmentChanges) { + await this.ciphersComponent.refresh(); + } + madeAttachmentChanges = false; + }); + } + + async shareCipher(cipher: CipherView) { + const [modal] = await this.modalService.openViewRef( + ShareComponent, + this.shareModalRef, + (comp) => { + comp.cipherId = cipher.id; + comp.onSharedCipher.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + } + + async editCipherCollections(cipher: CipherView) { + const [modal] = await this.modalService.openViewRef( + CollectionsComponent, + this.collectionsModalRef, + (comp) => { + comp.cipherId = cipher.id; + comp.onSavedCollections.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + } + + async addFolder() { + const [modal] = await this.modalService.openViewRef( + FolderAddEditComponent, + this.folderAddEditModalRef, + (comp) => { + comp.folderId = null; + comp.onSavedFolder.subscribe(async () => { + modal.close(); + await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter); + }); + } + ); + } + + async editFolder(folderId: string) { + const [modal] = await this.modalService.openViewRef( + FolderAddEditComponent, + this.folderAddEditModalRef, + (comp) => { + comp.folderId = folderId; + comp.onSavedFolder.subscribe(async () => { + modal.close(); + await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter); + }); + comp.onDeletedFolder.subscribe(async () => { + modal.close(); + await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter); + }); + } + ); + } + + async addCipher() { + const component = await this.editCipher(null); + component.type = this.activeFilter.cipherType; + component.folderId = this.folderId === "none" ? null : this.folderId; + if (this.activeFilter.selectedCollectionId != null) { + const collection = this.filterComponent.collections.fullList.filter( + (c) => c.id === this.activeFilter.selectedCollectionId + ); + if (collection.length > 0) { + component.organizationId = collection[0].organizationId; + component.collectionIds = [this.activeFilter.selectedCollectionId]; + } + } + if (this.activeFilter.selectedFolderId && this.activeFilter.selectedFolder) { + component.folderId = this.activeFilter.selectedFolderId; + } + if (this.activeFilter.selectedOrganizationId) { + component.organizationId = this.activeFilter.selectedOrganizationId; + } + } + + async editCipher(cipher: CipherView) { + return this.editCipherId(cipher?.id); + } + + async editCipherId(id: string) { + const cipher = await this.cipherService.get(id); + if (cipher != null && cipher.reprompt != 0) { + if (!(await this.passwordRepromptService.showPasswordPrompt())) { + this.go({ cipherId: null }); + return; + } + } + + const [modal, childComponent] = await this.modalService.openViewRef( + AddEditComponent, + this.cipherAddEditModalRef, + (comp) => { + comp.cipherId = id; + comp.onSavedCipher.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + comp.onDeletedCipher.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + comp.onRestoredCipher.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + + modal.onClosedPromise().then(() => { + this.go({ cipherId: null }); + }); + + return childComponent; + } + + async cloneCipher(cipher: CipherView) { + const component = await this.editCipher(cipher); + component.cloneMode = true; + } + + async updateKey() { + await this.modalService.openViewRef(UpdateKeyComponent, this.updateKeyModalRef); + } + + private go(queryParams: any = null) { + if (queryParams == null) { + queryParams = { + favorites: this.favorites ? true : null, + type: this.activeFilter.cipherType, + folderId: this.folderId, + collectionId: this.collectionId, + deleted: this.deleted ? true : null, + }; + } + + this.router.navigate([], { + relativeTo: this.route, + queryParams: queryParams, + queryParamsHandling: "merge", + replaceUrl: true, + }); + } +} diff --git a/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.module.ts b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.module.ts new file mode 100644 index 0000000000..44079c233d --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/individual-vault/individual-vault.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from "@angular/core"; + +import { VaultModule } from "../../vault.module"; + +import { IndividualVaultRoutingModule } from "./individual-vault-routing.module"; +import { IndividualVaultComponent } from "./individual-vault.component"; + +@NgModule({ + imports: [VaultModule, IndividualVaultRoutingModule], + declarations: [IndividualVaultComponent], + exports: [IndividualVaultComponent], +}) +export class IndividualVaultModule {} diff --git a/apps/web/src/app/modules/vault/modules/organization-badge/organization-badge.module.ts b/apps/web/src/app/modules/vault/modules/organization-badge/organization-badge.module.ts new file mode 100644 index 0000000000..297b17d565 --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/organization-badge/organization-badge.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from "@angular/core"; + +import { SharedModule } from "../../../shared.module"; + +import { OrganizationNameBadgeComponent } from "./organization-name-badge.component"; + +@NgModule({ + imports: [SharedModule], + declarations: [OrganizationNameBadgeComponent], + exports: [OrganizationNameBadgeComponent], +}) +export class OrganizationBadgeModule {} diff --git a/apps/web/src/app/modules/vault/modules/organization-badge/organization-name-badge.component.html b/apps/web/src/app/modules/vault/modules/organization-badge/organization-name-badge.component.html new file mode 100644 index 0000000000..de4711d617 --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/organization-badge/organization-name-badge.component.html @@ -0,0 +1,9 @@ + diff --git a/apps/web/src/app/modules/vault/modules/organization-badge/organization-name-badge.component.ts b/apps/web/src/app/modules/vault/modules/organization-badge/organization-name-badge.component.ts new file mode 100644 index 0000000000..1d4f90d1fc --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/organization-badge/organization-name-badge.component.ts @@ -0,0 +1,59 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; + +@Component({ + selector: "app-org-badge", + templateUrl: "organization-name-badge.component.html", +}) +export class OrganizationNameBadgeComponent implements OnInit { + @Input() organizationName: string; + @Input() profileName: string; + + @Output() onOrganizationClicked = new EventEmitter(); + + color: string; + textColor: string; + + constructor(private i18nService: I18nService) {} + + ngOnInit(): void { + if (this.organizationName == null || this.organizationName === "") { + this.organizationName = this.i18nService.t("me"); + this.color = this.stringToColor(this.profileName.toUpperCase()); + } + if (this.color == null) { + this.color = this.stringToColor(this.organizationName.toUpperCase()); + } + this.textColor = this.pickTextColorBasedOnBgColor(); + } + + // This value currently isn't stored anywhere, only calculated in the app-avatar component + // Once we are allowing org colors to be changed and saved, change this out + private stringToColor(str: string): string { + let hash = 0; + for (let i = 0; i < str.length; i++) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + let color = "#"; + for (let i = 0; i < 3; i++) { + const value = (hash >> (i * 8)) & 0xff; + color += ("00" + value.toString(16)).substr(-2); + } + return color; + } + + // There are a few ways to calculate text color for contrast, this one seems to fit accessibility guidelines best. + // https://stackoverflow.com/a/3943023/6869691 + private pickTextColorBasedOnBgColor() { + const color = this.color.charAt(0) === "#" ? this.color.substring(1, 7) : this.color; + const r = parseInt(color.substring(0, 2), 16); // hexToR + const g = parseInt(color.substring(2, 4), 16); // hexToG + const b = parseInt(color.substring(4, 6), 16); // hexToB + return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? "black !important" : "white !important"; + } + + emitOnOrganizationClicked() { + this.onOrganizationClicked.emit(); + } +} diff --git a/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault-routing.module.ts b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault-routing.module.ts new file mode 100644 index 0000000000..0658c4dd9c --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { OrganizationVaultComponent } from "./organization-vault.component"; +const routes: Routes = [ + { + path: "", + component: OrganizationVaultComponent, + data: { titleId: "vaults" }, + }, +]; +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class OrganizationVaultRoutingModule {} diff --git a/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.component.html b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.component.html new file mode 100644 index 0000000000..a187d3ba2d --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.component.html @@ -0,0 +1,70 @@ +
+
+
+
+
+
+ +
+
+
+
+
+ + + {{ trashCleanupWarning }} + + + +
+
+
+ + + + diff --git a/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.component.ts b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.component.ts new file mode 100644 index 0000000000..c7edcbe0e3 --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.component.ts @@ -0,0 +1,350 @@ +import { + ChangeDetectorRef, + Component, + NgZone, + OnDestroy, + OnInit, + ViewChild, + ViewContainerRef, +} from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { I18nService } from "jslib-common/abstractions/i18n.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 { SyncService } from "jslib-common/abstractions/sync.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { EntityEventsComponent } from "../../../../organizations/manage/entity-events.component"; +import { AddEditComponent } from "../../../../organizations/vault/add-edit.component"; +import { AttachmentsComponent } from "../../../../organizations/vault/attachments.component"; +import { CiphersComponent } from "../../../../organizations/vault/ciphers.component"; +import { CollectionsComponent } from "../../../../organizations/vault/collections.component"; +import { VaultFilterComponent } from "../../../vault-filter/vault-filter.component"; +import { VaultService } from "../../vault.service"; + +const BroadcasterSubscriptionId = "OrgVaultComponent"; + +@Component({ + selector: "app-org-vault", + templateUrl: "organization-vault.component.html", +}) +export class OrganizationVaultComponent implements OnInit, OnDestroy { + @ViewChild("vaultFilter", { static: true }) vaultFilterComponent: VaultFilterComponent; + @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent; + @ViewChild("attachments", { read: ViewContainerRef, static: true }) + attachmentsModalRef: ViewContainerRef; + @ViewChild("cipherAddEdit", { read: ViewContainerRef, static: true }) + cipherAddEditModalRef: ViewContainerRef; + @ViewChild("collections", { read: ViewContainerRef, static: true }) + collectionsModalRef: ViewContainerRef; + @ViewChild("eventsTemplate", { read: ViewContainerRef, static: true }) + eventsModalRef: ViewContainerRef; + + organization: Organization; + collectionId: string = null; + type: CipherType = null; + deleted = false; + trashCleanupWarning: string = null; + activeFilter: VaultFilter = new VaultFilter(); + + constructor( + private route: ActivatedRoute, + private organizationService: OrganizationService, + private router: Router, + private changeDetectorRef: ChangeDetectorRef, + private syncService: SyncService, + private i18nService: I18nService, + private modalService: ModalService, + private messagingService: MessagingService, + private broadcasterService: BroadcasterService, + private ngZone: NgZone, + private platformUtilsService: PlatformUtilsService, + private vaultService: VaultService, + private cipherService: CipherService, + private passwordRepromptService: PasswordRepromptService + ) {} + + ngOnInit() { + this.trashCleanupWarning = this.i18nService.t( + this.platformUtilsService.isSelfHost() + ? "trashCleanupWarningSelfHosted" + : "trashCleanupWarning" + ); + this.route.parent.params.subscribe(async (params: any) => { + this.organization = await this.organizationService.get(params.organizationId); + this.vaultFilterComponent.organization = this.organization; + this.ciphersComponent.organization = this.organization; + + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + this.ciphersComponent.searchText = this.vaultFilterComponent.searchText = qParams.search; + if (!this.organization.canViewAllCollections) { + await this.syncService.fullSync(false); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + if (message.successfully) { + await Promise.all([ + this.vaultFilterComponent.reloadCollectionsAndFolders( + new VaultFilter({ + selectedOrganizationId: this.organization.id, + } as Partial) + ), + this.ciphersComponent.refresh(), + ]); + this.changeDetectorRef.detectChanges(); + } + break; + } + }); + }); + } + await this.vaultFilterComponent.reloadCollectionsAndFolders( + new VaultFilter({ selectedOrganizationId: this.organization.id } as Partial) + ); + await this.ciphersComponent.reload(); + + if (qParams.viewEvents != null) { + const cipher = this.ciphersComponent.ciphers.filter((c) => c.id === qParams.viewEvents); + if (cipher.length > 0) { + this.viewEvents(cipher[0]); + } + } + + this.route.queryParams.subscribe(async (params) => { + if (params.cipherId) { + if ( + // Handle users with implicit collection access since they use the admin endpoint + this.organization.canEditAnyCollection || + (await this.cipherService.get(params.cipherId)) != null + ) { + this.editCipherId(params.cipherId); + } else { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("unknownCipher") + ); + this.router.navigate([], { + queryParams: { cipherId: null }, + queryParamsHandling: "merge", + }); + } + } + }); + }); + }); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async applyVaultFilter(vaultFilter: VaultFilter) { + this.ciphersComponent.showAddNew = vaultFilter.status !== "trash"; + this.activeFilter = vaultFilter; + await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === "trash"); + this.vaultFilterComponent.searchPlaceholder = + this.vaultService.calculateSearchBarLocalizationString(this.activeFilter); + this.go(); + } + + private buildFilter(): (cipher: CipherView) => boolean { + return (cipher) => { + let cipherPassesFilter = true; + if (this.activeFilter.status === "favorites" && cipherPassesFilter) { + cipherPassesFilter = cipher.favorite; + } + if (this.activeFilter.status === "trash" && cipherPassesFilter) { + cipherPassesFilter = cipher.isDeleted; + } + if (this.activeFilter.cipherType != null && cipherPassesFilter) { + cipherPassesFilter = cipher.type === this.activeFilter.cipherType; + } + if ( + this.activeFilter.selectedFolder != null && + this.activeFilter.selectedFolderId != "none" && + cipherPassesFilter + ) { + cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId; + } + if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) { + cipherPassesFilter = + cipher.collectionIds != null && + cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1; + } + if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId; + } + if (this.activeFilter.myVaultOnly && cipherPassesFilter) { + cipherPassesFilter = cipher.organizationId === null; + } + return cipherPassesFilter; + }; + } + + filterSearchText(searchText: string) { + this.ciphersComponent.searchText = searchText; + this.ciphersComponent.search(200); + } + + async editCipherAttachments(cipher: CipherView) { + if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) { + this.messagingService.send("upgradeOrganization", { organizationId: cipher.organizationId }); + return; + } + + let madeAttachmentChanges = false; + + const [modal] = await this.modalService.openViewRef( + AttachmentsComponent, + this.attachmentsModalRef, + (comp) => { + comp.organization = this.organization; + comp.cipherId = cipher.id; + comp.onUploadedAttachment.subscribe(() => (madeAttachmentChanges = true)); + comp.onDeletedAttachment.subscribe(() => (madeAttachmentChanges = true)); + } + ); + + modal.onClosed.subscribe(async () => { + if (madeAttachmentChanges) { + await this.ciphersComponent.refresh(); + } + madeAttachmentChanges = false; + }); + } + + async editCipherCollections(cipher: CipherView) { + const [modal] = await this.modalService.openViewRef( + CollectionsComponent, + this.collectionsModalRef, + (comp) => { + if (this.organization.canEditAnyCollection) { + comp.collectionIds = cipher.collectionIds; + comp.collections = this.vaultFilterComponent.collections.fullList.filter( + (c) => !c.readOnly + ); + } + comp.organization = this.organization; + comp.cipherId = cipher.id; + comp.onSavedCollections.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + } + + async addCipher() { + const component = await this.editCipher(null); + component.organizationId = this.organization.id; + component.type = this.type; + if (this.organization.canEditAnyCollection) { + component.collections = this.vaultFilterComponent.collections.fullList.filter( + (c) => !c.readOnly + ); + } + if (this.collectionId != null) { + component.collectionIds = [this.collectionId]; + } + } + + async editCipher(cipher: CipherView) { + return this.editCipherId(cipher?.id); + } + + async editCipherId(cipherId: string) { + const cipher = await this.cipherService.get(cipherId); + if (cipher != null && cipher.reprompt != 0) { + if (!(await this.passwordRepromptService.showPasswordPrompt())) { + this.go({ cipherId: null }); + return; + } + } + + const [modal, childComponent] = await this.modalService.openViewRef( + AddEditComponent, + this.cipherAddEditModalRef, + (comp) => { + comp.organization = this.organization; + comp.cipherId = cipherId; + comp.onSavedCipher.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + comp.onDeletedCipher.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + comp.onRestoredCipher.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + + modal.onClosedPromise().then(() => { + this.go({ cipherId: null }); + }); + + return childComponent; + } + + async cloneCipher(cipher: CipherView) { + const component = await this.editCipher(cipher); + component.cloneMode = true; + component.organizationId = this.organization.id; + if (this.organization.canEditAnyCollection) { + component.collections = this.vaultFilterComponent.collections.fullList.filter( + (c) => !c.readOnly + ); + } + // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value + // in the add-edit componenet + component.collectionIds = cipher.collectionIds; + } + + async viewEvents(cipher: CipherView) { + await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => { + comp.name = cipher.name; + comp.organizationId = this.organization.id; + comp.entityId = cipher.id; + comp.showUser = true; + comp.entity = "cipher"; + }); + } + + private clearFilters() { + this.collectionId = null; + this.type = null; + this.deleted = false; + } + + private go(queryParams: any = null) { + if (queryParams == null) { + queryParams = { + type: this.type, + collectionId: this.collectionId, + deleted: this.deleted ? true : null, + }; + } + + this.router.navigate([], { + relativeTo: this.route, + queryParams: queryParams, + queryParamsHandling: "merge", + replaceUrl: true, + }); + } +} diff --git a/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.module.ts b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.module.ts new file mode 100644 index 0000000000..4566efa998 --- /dev/null +++ b/apps/web/src/app/modules/vault/modules/organization-vault/organization-vault.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from "@angular/core"; + +import { VaultModule } from "../../vault.module"; + +import { OrganizationVaultRoutingModule } from "./organization-vault-routing.module"; +import { OrganizationVaultComponent } from "./organization-vault.component"; + +@NgModule({ + imports: [VaultModule, OrganizationVaultRoutingModule], + declarations: [OrganizationVaultComponent], + exports: [OrganizationVaultComponent], +}) +export class OrganizationVaultModule {} diff --git a/apps/web/src/app/modules/vault/vault.module.ts b/apps/web/src/app/modules/vault/vault.module.ts new file mode 100644 index 0000000000..bd4ab0cb51 --- /dev/null +++ b/apps/web/src/app/modules/vault/vault.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from "@angular/core"; + +import { LooseComponentsModule } from "../loose-components.module"; +import { SharedModule } from "../shared.module"; +import { VaultFilterModule } from "../vault-filter/vault-filter.module"; + +import { VaultService } from "./vault.service"; + +@NgModule({ + imports: [SharedModule, VaultFilterModule, LooseComponentsModule], + exports: [SharedModule, VaultFilterModule, LooseComponentsModule], + providers: [ + { + provide: VaultService, + useClass: VaultService, + }, + ], +}) +export class VaultModule {} diff --git a/apps/web/src/app/modules/vault/vault.service.ts b/apps/web/src/app/modules/vault/vault.service.ts new file mode 100644 index 0000000000..3f8cc17c63 --- /dev/null +++ b/apps/web/src/app/modules/vault/vault.service.ts @@ -0,0 +1,29 @@ +import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; + +export class VaultService { + calculateSearchBarLocalizationString(vaultFilter: VaultFilter): string { + if (vaultFilter.status === "favorites") { + return "searchFavorites"; + } + if (vaultFilter.status === "trash") { + return "searchTrash"; + } + if (vaultFilter.cipherType != null) { + return "searchType"; + } + if (vaultFilter.selectedFolderId != null && vaultFilter.selectedFolderId != "none") { + return "searchFolder"; + } + if (vaultFilter.selectedCollectionId != null) { + return "searchCollection"; + } + if (vaultFilter.selectedOrganizationId != null) { + return "searchOrganization"; + } + if (vaultFilter.myVaultOnly) { + return "searchMyVault"; + } + + return "searchVault"; + } +} diff --git a/apps/web/src/app/organizations/guards/permissions.guard.ts b/apps/web/src/app/organizations/guards/permissions.guard.ts new file mode 100644 index 0000000000..2f20355920 --- /dev/null +++ b/apps/web/src/app/organizations/guards/permissions.guard.ts @@ -0,0 +1,58 @@ +import { Injectable } from "@angular/core"; +import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from "@angular/router"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { Permissions } from "jslib-common/enums/permissions"; + +@Injectable() +export class PermissionsGuard implements CanActivate { + constructor( + private router: Router, + private organizationService: OrganizationService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private syncService: SyncService + ) {} + + async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + // TODO: We need to fix this issue once and for all. + if ((await this.syncService.getLastSync()) == null) { + await this.syncService.fullSync(false); + } + + const org = await this.organizationService.get(route.params.organizationId); + if (org == null) { + return this.router.createUrlTree(["/"]); + } + + if (!org.isOwner && !org.enabled) { + this.platformUtilsService.showToast( + "error", + null, + this.i18nService.t("organizationIsDisabled") + ); + return this.router.createUrlTree(["/"]); + } + + const permissions = route.data == null ? [] : (route.data.permissions as Permissions[]); + if (permissions != null && !org.hasAnyPermission(permissions)) { + // Handle linkable ciphers for organizations the user only has view access to + // https://bitwarden.atlassian.net/browse/EC-203 + if (state.root.queryParamMap.has("cipherId")) { + return this.router.createUrlTree(["/vault"], { + queryParams: { + cipherId: state.root.queryParamMap.get("cipherId"), + }, + }); + } + + this.platformUtilsService.showToast("error", null, this.i18nService.t("accessDenied")); + return this.router.createUrlTree(["/"]); + } + + return true; + } +} diff --git a/apps/web/src/app/organizations/layouts/organization-layout.component.html b/apps/web/src/app/organizations/layouts/organization-layout.component.html new file mode 100644 index 0000000000..3834635e18 --- /dev/null +++ b/apps/web/src/app/organizations/layouts/organization-layout.component.html @@ -0,0 +1,39 @@ + + + + diff --git a/apps/web/src/app/organizations/layouts/organization-layout.component.ts b/apps/web/src/app/organizations/layouts/organization-layout.component.ts new file mode 100644 index 0000000000..050e12f492 --- /dev/null +++ b/apps/web/src/app/organizations/layouts/organization-layout.component.ts @@ -0,0 +1,92 @@ +import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { Organization } from "jslib-common/models/domain/organization"; + +import { NavigationPermissionsService } from "../services/navigation-permissions.service"; + +const BroadcasterSubscriptionId = "OrganizationLayoutComponent"; + +@Component({ + selector: "app-organization-layout", + templateUrl: "organization-layout.component.html", +}) +export class OrganizationLayoutComponent implements OnInit, OnDestroy { + organization: Organization; + businessTokenPromise: Promise; + private organizationId: string; + + constructor( + private route: ActivatedRoute, + private organizationService: OrganizationService, + private broadcasterService: BroadcasterService, + private ngZone: NgZone + ) {} + + ngOnInit() { + document.body.classList.remove("layout_frontend"); + this.route.params.subscribe(async (params: any) => { + this.organizationId = params.organizationId; + await this.load(); + }); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "updatedOrgLicense": + await this.load(); + break; + } + }); + }); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async load() { + this.organization = await this.organizationService.get(this.organizationId); + } + + get showManageTab(): boolean { + return NavigationPermissionsService.canAccessManage(this.organization); + } + + get showToolsTab(): boolean { + return NavigationPermissionsService.canAccessTools(this.organization); + } + + get showSettingsTab(): boolean { + return NavigationPermissionsService.canAccessSettings(this.organization); + } + + get toolsRoute(): string { + return this.organization.canAccessImportExport + ? "tools/import" + : "tools/exposed-passwords-report"; + } + + get manageRoute(): string { + let route: string; + switch (true) { + case this.organization.canManageUsers: + route = "manage/people"; + break; + case this.organization.canViewAssignedCollections || this.organization.canViewAllCollections: + route = "manage/collections"; + break; + case this.organization.canManageGroups: + route = "manage/groups"; + break; + case this.organization.canManagePolicies: + route = "manage/policies"; + break; + case this.organization.canAccessEventLogs: + route = "manage/events"; + break; + } + return route; + } +} diff --git a/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html b/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html new file mode 100644 index 0000000000..84f660823f --- /dev/null +++ b/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html @@ -0,0 +1,132 @@ + diff --git a/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.ts b/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.ts new file mode 100644 index 0000000000..e14aa68f82 --- /dev/null +++ b/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.ts @@ -0,0 +1,106 @@ +import { Component, Input, OnInit } from "@angular/core"; + +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 { OrganizationUserStatusType } from "jslib-common/enums/organizationUserStatusType"; +import { Utils } from "jslib-common/misc/utils"; +import { OrganizationUserBulkConfirmRequest } from "jslib-common/models/request/organizationUserBulkConfirmRequest"; +import { OrganizationUserBulkRequest } from "jslib-common/models/request/organizationUserBulkRequest"; + +import { BulkUserDetails } from "./bulk-status.component"; + +@Component({ + selector: "app-bulk-confirm", + templateUrl: "bulk-confirm.component.html", +}) +export class BulkConfirmComponent implements OnInit { + @Input() organizationId: string; + @Input() users: BulkUserDetails[]; + + excludedUsers: BulkUserDetails[]; + filteredUsers: BulkUserDetails[]; + publicKeys: Map = new Map(); + fingerprints: Map = new Map(); + statuses: Map = new Map(); + + loading = true; + done = false; + error: string; + + constructor( + protected cryptoService: CryptoService, + protected apiService: ApiService, + private i18nService: I18nService + ) {} + + async ngOnInit() { + this.excludedUsers = this.users.filter((u) => !this.isAccepted(u)); + this.filteredUsers = this.users.filter((u) => this.isAccepted(u)); + + if (this.filteredUsers.length <= 0) { + this.done = true; + } + + const response = await this.getPublicKeys(); + + for (const entry of response.data) { + const publicKey = Utils.fromB64ToArray(entry.key); + const fingerprint = await this.cryptoService.getFingerprint(entry.userId, publicKey.buffer); + if (fingerprint != null) { + this.publicKeys.set(entry.id, publicKey); + this.fingerprints.set(entry.id, fingerprint.join("-")); + } + } + + this.loading = false; + } + + async submit() { + this.loading = true; + try { + const key = await this.getCryptoKey(); + const userIdsWithKeys: any[] = []; + for (const user of this.filteredUsers) { + const publicKey = this.publicKeys.get(user.id); + if (publicKey == null) { + continue; + } + const encryptedKey = await this.cryptoService.rsaEncrypt(key.key, publicKey.buffer); + userIdsWithKeys.push({ + id: user.id, + key: encryptedKey.encryptedString, + }); + } + const response = await this.postConfirmRequest(userIdsWithKeys); + + response.data.forEach((entry) => { + const error = entry.error !== "" ? entry.error : this.i18nService.t("bulkConfirmMessage"); + this.statuses.set(entry.id, error); + }); + + this.done = true; + } catch (e) { + this.error = e.message; + } + this.loading = false; + } + + protected isAccepted(user: BulkUserDetails) { + return user.status === OrganizationUserStatusType.Accepted; + } + + protected async getPublicKeys() { + const request = new OrganizationUserBulkRequest(this.filteredUsers.map((user) => user.id)); + return await this.apiService.postOrganizationUsersPublicKey(this.organizationId, request); + } + + protected getCryptoKey() { + return this.cryptoService.getOrgKey(this.organizationId); + } + + protected async postConfirmRequest(userIdsWithKeys: any[]) { + const request = new OrganizationUserBulkConfirmRequest(userIdsWithKeys); + return await this.apiService.postOrganizationUserBulkConfirm(this.organizationId, request); + } +} diff --git a/apps/web/src/app/organizations/manage/bulk/bulk-remove.component.html b/apps/web/src/app/organizations/manage/bulk/bulk-remove.component.html new file mode 100644 index 0000000000..993d89533f --- /dev/null +++ b/apps/web/src/app/organizations/manage/bulk/bulk-remove.component.html @@ -0,0 +1,102 @@ + diff --git a/apps/web/src/app/organizations/manage/bulk/bulk-remove.component.ts b/apps/web/src/app/organizations/manage/bulk/bulk-remove.component.ts new file mode 100644 index 0000000000..97097cba13 --- /dev/null +++ b/apps/web/src/app/organizations/manage/bulk/bulk-remove.component.ts @@ -0,0 +1,46 @@ +import { Component, Input } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationUserBulkRequest } from "jslib-common/models/request/organizationUserBulkRequest"; + +import { BulkUserDetails } from "./bulk-status.component"; + +@Component({ + selector: "app-bulk-remove", + templateUrl: "bulk-remove.component.html", +}) +export class BulkRemoveComponent { + @Input() organizationId: string; + @Input() users: BulkUserDetails[]; + + statuses: Map = new Map(); + + loading = false; + done = false; + error: string; + + constructor(protected apiService: ApiService, protected i18nService: I18nService) {} + + async submit() { + this.loading = true; + try { + const response = await this.deleteUsers(); + + response.data.forEach((entry) => { + const error = entry.error !== "" ? entry.error : this.i18nService.t("bulkRemovedMessage"); + this.statuses.set(entry.id, error); + }); + this.done = true; + } catch (e) { + this.error = e.message; + } + + this.loading = false; + } + + protected async deleteUsers() { + const request = new OrganizationUserBulkRequest(this.users.map((user) => user.id)); + return await this.apiService.deleteManyOrganizationUsers(this.organizationId, request); + } +} diff --git a/apps/web/src/app/organizations/manage/bulk/bulk-status.component.html b/apps/web/src/app/organizations/manage/bulk/bulk-status.component.html new file mode 100644 index 0000000000..8d9676781a --- /dev/null +++ b/apps/web/src/app/organizations/manage/bulk/bulk-status.component.html @@ -0,0 +1,59 @@ + diff --git a/apps/web/src/app/organizations/manage/bulk/bulk-status.component.ts b/apps/web/src/app/organizations/manage/bulk/bulk-status.component.ts new file mode 100644 index 0000000000..59f24e1aa9 --- /dev/null +++ b/apps/web/src/app/organizations/manage/bulk/bulk-status.component.ts @@ -0,0 +1,26 @@ +import { Component } from "@angular/core"; + +import { OrganizationUserStatusType } from "jslib-common/enums/organizationUserStatusType"; +import { ProviderUserStatusType } from "jslib-common/enums/providerUserStatusType"; + +export interface BulkUserDetails { + id: string; + name: string; + email: string; + status: OrganizationUserStatusType | ProviderUserStatusType; +} + +type BulkStatusEntry = { + user: BulkUserDetails; + error: boolean; + message: string; +}; + +@Component({ + selector: "app-bulk-status", + templateUrl: "bulk-status.component.html", +}) +export class BulkStatusComponent { + users: BulkStatusEntry[]; + loading = false; +} diff --git a/apps/web/src/app/organizations/manage/collection-add-edit.component.html b/apps/web/src/app/organizations/manage/collection-add-edit.component.html new file mode 100644 index 0000000000..f699e802b5 --- /dev/null +++ b/apps/web/src/app/organizations/manage/collection-add-edit.component.html @@ -0,0 +1,162 @@ + diff --git a/apps/web/src/app/organizations/manage/collection-add-edit.component.ts b/apps/web/src/app/organizations/manage/collection-add-edit.component.ts new file mode 100644 index 0000000000..9ab69152a2 --- /dev/null +++ b/apps/web/src/app/organizations/manage/collection-add-edit.component.ts @@ -0,0 +1,180 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { Utils } from "jslib-common/misc/utils"; +import { EncString } from "jslib-common/models/domain/encString"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { CollectionRequest } from "jslib-common/models/request/collectionRequest"; +import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest"; +import { GroupResponse } from "jslib-common/models/response/groupResponse"; + +@Component({ + selector: "app-collection-add-edit", + templateUrl: "collection-add-edit.component.html", +}) +export class CollectionAddEditComponent implements OnInit { + @Input() collectionId: string; + @Input() organizationId: string; + @Input() canSave: boolean; + @Input() canDelete: boolean; + @Output() onSavedCollection = new EventEmitter(); + @Output() onDeletedCollection = new EventEmitter(); + + loading = true; + editMode = false; + accessGroups = false; + title: string; + name: string; + externalId: string; + groups: GroupResponse[] = []; + formPromise: Promise; + deletePromise: Promise; + + private orgKey: SymmetricCryptoKey; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private logService: LogService, + private organizationService: OrganizationService + ) {} + + async ngOnInit() { + const organization = await this.organizationService.get(this.organizationId); + this.accessGroups = organization.useGroups; + this.editMode = this.loading = this.collectionId != null; + if (this.accessGroups) { + const groupsResponse = await this.apiService.getGroups(this.organizationId); + this.groups = groupsResponse.data + .map((r) => r) + .sort(Utils.getSortFunction(this.i18nService, "name")); + } + this.orgKey = await this.cryptoService.getOrgKey(this.organizationId); + + if (this.editMode) { + this.editMode = true; + this.title = this.i18nService.t("editCollection"); + try { + const collection = await this.apiService.getCollectionDetails( + this.organizationId, + this.collectionId + ); + this.name = await this.cryptoService.decryptToUtf8( + new EncString(collection.name), + this.orgKey + ); + this.externalId = collection.externalId; + if (collection.groups != null && this.groups.length > 0) { + collection.groups.forEach((s) => { + const group = this.groups.filter((g) => !g.accessAll && g.id === s.id); + if (group != null && group.length > 0) { + (group[0] as any).checked = true; + (group[0] as any).readOnly = s.readOnly; + (group[0] as any).hidePasswords = s.hidePasswords; + } + }); + } + } catch (e) { + this.logService.error(e); + } + } else { + this.title = this.i18nService.t("addCollection"); + } + + this.groups.forEach((g) => { + if (g.accessAll) { + (g as any).checked = true; + } + }); + + this.loading = false; + } + + check(g: GroupResponse, select?: boolean) { + if (g.accessAll) { + return; + } + (g as any).checked = select == null ? !(g as any).checked : select; + if (!(g as any).checked) { + (g as any).readOnly = false; + (g as any).hidePasswords = false; + } + } + + selectAll(select: boolean) { + this.groups.forEach((g) => this.check(g, select)); + } + + async submit() { + if (this.orgKey == null) { + throw new Error("No encryption key for this organization."); + } + + const request = new CollectionRequest(); + request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString; + request.externalId = this.externalId; + request.groups = this.groups + .filter((g) => (g as any).checked && !g.accessAll) + .map( + (g) => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly, !!(g as any).hidePasswords) + ); + + try { + if (this.editMode) { + this.formPromise = this.apiService.putCollection( + this.organizationId, + this.collectionId, + request + ); + } else { + this.formPromise = this.apiService.postCollection(this.organizationId, request); + } + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t(this.editMode ? "editedCollectionId" : "createdCollectionId", this.name) + ); + this.onSavedCollection.emit(); + } catch (e) { + this.logService.error(e); + } + } + + async delete() { + if (!this.editMode) { + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("deleteCollectionConfirmation"), + this.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId); + await this.deletePromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("deletedCollectionId", this.name) + ); + this.onDeletedCollection.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/organizations/manage/collections.component.html b/apps/web/src/app/organizations/manage/collections.component.html new file mode 100644 index 0000000000..976a63fe6d --- /dev/null +++ b/apps/web/src/app/organizations/manage/collections.component.html @@ -0,0 +1,96 @@ + + + + {{ "loading" | i18n }} + + +

{{ "noCollectionsInList" | i18n }}

+ + + + + + + +
+ {{ c.name }} + + +
+
+ + diff --git a/apps/web/src/app/organizations/manage/collections.component.ts b/apps/web/src/app/organizations/manage/collections.component.ts new file mode 100644 index 0000000000..f20a4cf5c6 --- /dev/null +++ b/apps/web/src/app/organizations/manage/collections.component.ts @@ -0,0 +1,247 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { ApiService } from "jslib-common/abstractions/api.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"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { CollectionData } from "jslib-common/models/data/collectionData"; +import { Collection } from "jslib-common/models/domain/collection"; +import { Organization } from "jslib-common/models/domain/organization"; +import { + CollectionDetailsResponse, + CollectionResponse, +} from "jslib-common/models/response/collectionResponse"; +import { ListResponse } from "jslib-common/models/response/listResponse"; +import { CollectionView } from "jslib-common/models/view/collectionView"; + +import { EntityUsersComponent } from "../../modules/organizations/manage/entity-users.component"; + +import { CollectionAddEditComponent } from "./collection-add-edit.component"; + +@Component({ + selector: "app-org-manage-collections", + templateUrl: "collections.component.html", +}) +export class CollectionsComponent implements OnInit { + @ViewChild("addEdit", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef; + @ViewChild("usersTemplate", { read: ViewContainerRef, static: true }) + usersModalRef: ViewContainerRef; + + loading = true; + organization: Organization; + canCreate = false; + organizationId: string; + collections: CollectionView[]; + assignedCollections: CollectionView[]; + pagedCollections: CollectionView[]; + searchText: string; + + protected didScroll = false; + protected pageSize = 100; + + private pagedCollectionsCount = 0; + + constructor( + private apiService: ApiService, + private route: ActivatedRoute, + private collectionService: CollectionService, + private modalService: ModalService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private searchService: SearchService, + private logService: LogService, + private organizationService: OrganizationService + ) {} + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + await this.load(); + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + this.searchText = qParams.search; + }); + }); + } + + async load() { + this.organization = await this.organizationService.get(this.organizationId); + this.canCreate = this.organization.canCreateNewCollections; + + const decryptCollections = async (r: ListResponse) => { + const collections = r.data + .filter((c) => c.organizationId === this.organizationId) + .map((d) => new Collection(new CollectionData(d as CollectionDetailsResponse))); + return await this.collectionService.decryptMany(collections); + }; + + if (this.organization.canViewAssignedCollections) { + const response = await this.apiService.getUserCollections(); + this.assignedCollections = await decryptCollections(response); + } + + if (this.organization.canViewAllCollections) { + const response = await this.apiService.getCollections(this.organizationId); + this.collections = await decryptCollections(response); + } else { + this.collections = this.assignedCollections; + } + + this.resetPaging(); + this.loading = false; + } + + loadMore() { + if (!this.collections || this.collections.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedCollections.length; + let pagedSize = this.pageSize; + if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) { + pagedSize = this.pagedCollectionsCount; + } + if (this.collections.length > pagedLength) { + this.pagedCollections = this.pagedCollections.concat( + this.collections.slice(pagedLength, pagedLength + pagedSize) + ); + } + this.pagedCollectionsCount = this.pagedCollections.length; + this.didScroll = this.pagedCollections.length > this.pageSize; + } + + async edit(collection: CollectionView) { + const canCreate = collection == null && this.canCreate; + const canEdit = collection != null && this.canEdit(collection); + const canDelete = collection != null && this.canDelete(collection); + + if (!(canCreate || canEdit || canDelete)) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("missingPermissions")); + return; + } + + const [modal] = await this.modalService.openViewRef( + CollectionAddEditComponent, + this.addEditModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.collectionId = collection != null ? collection.id : null; + comp.canSave = canCreate || canEdit; + comp.canDelete = canDelete; + comp.onSavedCollection.subscribe(() => { + modal.close(); + this.load(); + }); + comp.onDeletedCollection.subscribe(() => { + modal.close(); + this.removeCollection(collection); + }); + } + ); + } + + add() { + this.edit(null); + } + + async delete(collection: CollectionView) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("deleteCollectionConfirmation"), + collection.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + await this.apiService.deleteCollection(this.organizationId, collection.id); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("deletedCollectionId", collection.name) + ); + this.removeCollection(collection); + } catch (e) { + this.logService.error(e); + this.platformUtilsService.showToast("error", null, this.i18nService.t("missingPermissions")); + } + } + + async users(collection: CollectionView) { + const [modal] = await this.modalService.openViewRef( + EntityUsersComponent, + this.usersModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.entity = "collection"; + comp.entityId = collection.id; + comp.entityName = collection.name; + + comp.onEditedUsers.subscribe(() => { + this.load(); + modal.close(); + }); + } + ); + } + + async resetPaging() { + this.pagedCollections = []; + this.loadMore(); + } + + isSearching() { + return this.searchService.isSearchable(this.searchText); + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.collections && this.collections.length > this.pageSize; + } + + canEdit(collection: CollectionView) { + if (this.organization.canEditAnyCollection) { + return true; + } + + if ( + this.organization.canEditAssignedCollections && + this.assignedCollections.some((c) => c.id === collection.id) + ) { + return true; + } + return false; + } + + canDelete(collection: CollectionView) { + if (this.organization.canDeleteAnyCollection) { + return true; + } + + if ( + this.organization.canDeleteAssignedCollections && + this.assignedCollections.some((c) => c.id === collection.id) + ) { + return true; + } + return false; + } + + private removeCollection(collection: CollectionView) { + const index = this.collections.indexOf(collection); + if (index > -1) { + this.collections.splice(index, 1); + this.resetPaging(); + } + } +} diff --git a/apps/web/src/app/organizations/manage/entity-events.component.html b/apps/web/src/app/organizations/manage/entity-events.component.html new file mode 100644 index 0000000000..29f266cf04 --- /dev/null +++ b/apps/web/src/app/organizations/manage/entity-events.component.html @@ -0,0 +1,118 @@ + diff --git a/apps/web/src/app/organizations/manage/entity-events.component.ts b/apps/web/src/app/organizations/manage/entity-events.component.ts new file mode 100644 index 0000000000..62a9ee69a8 --- /dev/null +++ b/apps/web/src/app/organizations/manage/entity-events.component.ts @@ -0,0 +1,154 @@ +import { Component, Input, OnInit } from "@angular/core"; + +import { UserNamePipe } from "jslib-angular/pipes/user-name.pipe"; +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 { EventResponse } from "jslib-common/models/response/eventResponse"; +import { ListResponse } from "jslib-common/models/response/listResponse"; + +import { EventService } from "../../services/event.service"; + +@Component({ + selector: "app-entity-events", + templateUrl: "entity-events.component.html", +}) +export class EntityEventsComponent implements OnInit { + @Input() name: string; + @Input() entity: "user" | "cipher"; + @Input() entityId: string; + @Input() organizationId: string; + @Input() providerId: string; + @Input() showUser = false; + + loading = true; + loaded = false; + events: any[]; + start: string; + end: string; + continuationToken: string; + refreshPromise: Promise; + morePromise: Promise; + + private orgUsersUserIdMap = new Map(); + private orgUsersIdMap = new Map(); + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private eventService: EventService, + private platformUtilsService: PlatformUtilsService, + private userNamePipe: UserNamePipe, + private logService: LogService + ) {} + + async ngOnInit() { + const defaultDates = this.eventService.getDefaultDateFilters(); + this.start = defaultDates[0]; + this.end = defaultDates[1]; + await this.load(); + } + + async load() { + if (this.showUser) { + const response = await this.apiService.getOrganizationUsers(this.organizationId); + response.data.forEach((u) => { + const name = this.userNamePipe.transform(u); + this.orgUsersIdMap.set(u.id, { name: name, email: u.email }); + this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email }); + }); + } + await this.loadEvents(true); + this.loaded = true; + } + + async loadEvents(clearExisting: boolean) { + if (this.refreshPromise != null || this.morePromise != null) { + return; + } + + let dates: string[] = null; + try { + dates = this.eventService.formatDateFilters(this.start, this.end); + } catch (e) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("invalidDateRange") + ); + return; + } + + this.loading = true; + let response: ListResponse; + try { + let promise: Promise; + if (this.entity === "user" && this.providerId) { + promise = this.apiService.getEventsProviderUser( + this.providerId, + this.entityId, + dates[0], + dates[1], + clearExisting ? null : this.continuationToken + ); + } else if (this.entity === "user") { + promise = this.apiService.getEventsOrganizationUser( + this.organizationId, + this.entityId, + dates[0], + dates[1], + clearExisting ? null : this.continuationToken + ); + } else { + promise = this.apiService.getEventsCipher( + this.entityId, + dates[0], + dates[1], + clearExisting ? null : this.continuationToken + ); + } + if (clearExisting) { + this.refreshPromise = promise; + } else { + this.morePromise = promise; + } + response = await promise; + } catch (e) { + this.logService.error(e); + } + + this.continuationToken = response.continuationToken; + const events = await Promise.all( + response.data.map(async (r) => { + const userId = r.actingUserId == null ? r.userId : r.actingUserId; + const eventInfo = await this.eventService.getEventInfo(r); + const user = + this.showUser && userId != null && this.orgUsersUserIdMap.has(userId) + ? this.orgUsersUserIdMap.get(userId) + : null; + return { + message: eventInfo.message, + appIcon: eventInfo.appIcon, + appName: eventInfo.appName, + userId: userId, + userName: user != null ? user.name : this.showUser ? this.i18nService.t("unknown") : null, + userEmail: user != null ? user.email : this.showUser ? "" : null, + date: r.date, + ip: r.ipAddress, + type: r.type, + }; + }) + ); + + if (!clearExisting && this.events != null && this.events.length > 0) { + this.events = this.events.concat(events); + } else { + this.events = events; + } + + this.loading = false; + this.morePromise = null; + this.refreshPromise = null; + } +} diff --git a/apps/web/src/app/organizations/manage/events.component.html b/apps/web/src/app/organizations/manage/events.component.html new file mode 100644 index 0000000000..d27b53e8d9 --- /dev/null +++ b/apps/web/src/app/organizations/manage/events.component.html @@ -0,0 +1,107 @@ + + + + {{ "loading" | i18n }} + + +

{{ "noEventsInList" | i18n }}

+ + + + + + + + + + + + + + + + + +
{{ "timestamp" | i18n }} + {{ "device" | i18n }} + {{ "user" | i18n }}{{ "event" | i18n }}
{{ e.date | date: "medium" }} + + {{ e.appName }}, {{ e.ip }} + + {{ e.userName }} +
+ +
diff --git a/apps/web/src/app/organizations/manage/events.component.ts b/apps/web/src/app/organizations/manage/events.component.ts new file mode 100644 index 0000000000..d1eb48c084 --- /dev/null +++ b/apps/web/src/app/organizations/manage/events.component.ts @@ -0,0 +1,118 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { UserNamePipe } from "jslib-angular/pipes/user-name.pipe"; +import { ApiService } from "jslib-common/abstractions/api.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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { Organization } from "jslib-common/models/domain/organization"; +import { EventResponse } from "jslib-common/models/response/eventResponse"; + +import { BaseEventsComponent } from "../../common/base.events.component"; +import { EventService } from "../../services/event.service"; + +@Component({ + selector: "app-org-events", + templateUrl: "events.component.html", +}) +export class EventsComponent extends BaseEventsComponent implements OnInit { + exportFileName = "org-events"; + organizationId: string; + organization: Organization; + + private orgUsersUserIdMap = new Map(); + + constructor( + private apiService: ApiService, + private route: ActivatedRoute, + eventService: EventService, + i18nService: I18nService, + exportService: ExportService, + platformUtilsService: PlatformUtilsService, + private router: Router, + logService: LogService, + private userNamePipe: UserNamePipe, + private organizationService: OrganizationService, + private providerService: ProviderService + ) { + super(eventService, i18nService, exportService, platformUtilsService, logService); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + this.organization = await this.organizationService.get(this.organizationId); + if (this.organization == null || !this.organization.useEvents) { + this.router.navigate(["/organizations", this.organizationId]); + return; + } + + await this.load(); + }); + } + + async load() { + const response = await this.apiService.getOrganizationUsers(this.organizationId); + response.data.forEach((u) => { + const name = this.userNamePipe.transform(u); + this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email }); + }); + + if (this.organization.providerId != null) { + try { + const provider = await this.providerService.get(this.organization.providerId); + if ( + provider != null && + (await this.providerService.get(this.organization.providerId)).canManageUsers + ) { + const providerUsersResponse = await this.apiService.getProviderUsers( + this.organization.providerId + ); + providerUsersResponse.data.forEach((u) => { + const name = this.userNamePipe.transform(u); + this.orgUsersUserIdMap.set(u.userId, { + name: `${name} (${this.organization.providerName})`, + email: u.email, + }); + }); + } + } catch (e) { + this.logService.warning(e); + } + } + + await this.loadEvents(true); + this.loaded = true; + } + + protected requestEvents(startDate: string, endDate: string, continuationToken: string) { + return this.apiService.getEventsOrganization( + this.organizationId, + startDate, + endDate, + continuationToken + ); + } + + protected getUserName(r: EventResponse, userId: string) { + if (userId == null) { + return null; + } + + if (this.orgUsersUserIdMap.has(userId)) { + return this.orgUsersUserIdMap.get(userId); + } + + if (r.providerId != null && r.providerId === this.organization.providerId) { + return { + name: this.organization.providerName, + }; + } + + return null; + } +} diff --git a/apps/web/src/app/organizations/manage/group-add-edit.component.html b/apps/web/src/app/organizations/manage/group-add-edit.component.html new file mode 100644 index 0000000000..8bb58656b1 --- /dev/null +++ b/apps/web/src/app/organizations/manage/group-add-edit.component.html @@ -0,0 +1,186 @@ + diff --git a/apps/web/src/app/organizations/manage/group-add-edit.component.ts b/apps/web/src/app/organizations/manage/group-add-edit.component.ts new file mode 100644 index 0000000000..5b19508359 --- /dev/null +++ b/apps/web/src/app/organizations/manage/group-add-edit.component.ts @@ -0,0 +1,152 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.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"; +import { CollectionData } from "jslib-common/models/data/collectionData"; +import { Collection } from "jslib-common/models/domain/collection"; +import { GroupRequest } from "jslib-common/models/request/groupRequest"; +import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest"; +import { CollectionDetailsResponse } from "jslib-common/models/response/collectionResponse"; +import { CollectionView } from "jslib-common/models/view/collectionView"; + +@Component({ + selector: "app-group-add-edit", + templateUrl: "group-add-edit.component.html", +}) +export class GroupAddEditComponent implements OnInit { + @Input() groupId: string; + @Input() organizationId: string; + @Output() onSavedGroup = new EventEmitter(); + @Output() onDeletedGroup = new EventEmitter(); + + loading = true; + editMode = false; + title: string; + name: string; + externalId: string; + access: "all" | "selected" = "selected"; + collections: CollectionView[] = []; + formPromise: Promise; + deletePromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private collectionService: CollectionService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + this.editMode = this.loading = this.groupId != null; + await this.loadCollections(); + + if (this.editMode) { + this.editMode = true; + this.title = this.i18nService.t("editGroup"); + try { + const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId); + this.access = group.accessAll ? "all" : "selected"; + this.name = group.name; + this.externalId = group.externalId; + if (group.collections != null && this.collections != null) { + group.collections.forEach((s) => { + const collection = this.collections.filter((c) => c.id === s.id); + if (collection != null && collection.length > 0) { + (collection[0] as any).checked = true; + collection[0].readOnly = s.readOnly; + collection[0].hidePasswords = s.hidePasswords; + } + }); + } + } catch (e) { + this.logService.error(e); + } + } else { + this.title = this.i18nService.t("addGroup"); + } + + this.loading = false; + } + + async loadCollections() { + const response = await this.apiService.getCollections(this.organizationId); + const collections = response.data.map( + (r) => new Collection(new CollectionData(r as CollectionDetailsResponse)) + ); + this.collections = await this.collectionService.decryptMany(collections); + } + + check(c: CollectionView, select?: boolean) { + (c as any).checked = select == null ? !(c as any).checked : select; + if (!(c as any).checked) { + c.readOnly = false; + } + } + + selectAll(select: boolean) { + this.collections.forEach((c) => this.check(c, select)); + } + + async submit() { + const request = new GroupRequest(); + request.name = this.name; + request.externalId = this.externalId; + request.accessAll = this.access === "all"; + if (!request.accessAll) { + request.collections = this.collections + .filter((c) => (c as any).checked) + .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords)); + } + + try { + if (this.editMode) { + this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request); + } else { + this.formPromise = this.apiService.postGroup(this.organizationId, request); + } + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t(this.editMode ? "editedGroupId" : "createdGroupId", this.name) + ); + this.onSavedGroup.emit(); + } catch (e) { + this.logService.error(e); + } + } + + async delete() { + if (!this.editMode) { + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("deleteGroupConfirmation"), + this.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId); + await this.deletePromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("deletedGroupId", this.name) + ); + this.onDeletedGroup.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/organizations/manage/groups.component.html b/apps/web/src/app/organizations/manage/groups.component.html new file mode 100644 index 0000000000..050307b853 --- /dev/null +++ b/apps/web/src/app/organizations/manage/groups.component.html @@ -0,0 +1,77 @@ + + + + {{ "loading" | i18n }} + + +

{{ "noGroupsInList" | i18n }}

+ + + + + + + +
+ {{ g.name }} + + +
+
+ + diff --git a/apps/web/src/app/organizations/manage/groups.component.ts b/apps/web/src/app/organizations/manage/groups.component.ts new file mode 100644 index 0000000000..bc8bbd3c09 --- /dev/null +++ b/apps/web/src/app/organizations/manage/groups.component.ts @@ -0,0 +1,182 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { ModalService } from "jslib-angular/services/modal.service"; +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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { Utils } from "jslib-common/misc/utils"; +import { GroupResponse } from "jslib-common/models/response/groupResponse"; + +import { EntityUsersComponent } from "../../modules/organizations/manage/entity-users.component"; + +import { GroupAddEditComponent } from "./group-add-edit.component"; + +@Component({ + selector: "app-org-groups", + templateUrl: "groups.component.html", +}) +export class GroupsComponent implements OnInit { + @ViewChild("addEdit", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef; + @ViewChild("usersTemplate", { read: ViewContainerRef, static: true }) + usersModalRef: ViewContainerRef; + + loading = true; + organizationId: string; + groups: GroupResponse[]; + pagedGroups: GroupResponse[]; + searchText: string; + + protected didScroll = false; + protected pageSize = 100; + + private pagedGroupsCount = 0; + + constructor( + private apiService: ApiService, + private route: ActivatedRoute, + private i18nService: I18nService, + private modalService: ModalService, + private platformUtilsService: PlatformUtilsService, + private router: Router, + private searchService: SearchService, + private logService: LogService, + private organizationService: OrganizationService + ) {} + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + const organization = await this.organizationService.get(this.organizationId); + if (organization == null || !organization.useGroups) { + this.router.navigate(["/organizations", this.organizationId]); + return; + } + await this.load(); + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + this.searchText = qParams.search; + }); + }); + } + + async load() { + const response = await this.apiService.getGroups(this.organizationId); + const groups = response.data != null && response.data.length > 0 ? response.data : []; + groups.sort(Utils.getSortFunction(this.i18nService, "name")); + this.groups = groups; + this.resetPaging(); + this.loading = false; + } + + loadMore() { + if (!this.groups || this.groups.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedGroups.length; + let pagedSize = this.pageSize; + if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) { + pagedSize = this.pagedGroupsCount; + } + if (this.groups.length > pagedLength) { + this.pagedGroups = this.pagedGroups.concat( + this.groups.slice(pagedLength, pagedLength + pagedSize) + ); + } + this.pagedGroupsCount = this.pagedGroups.length; + this.didScroll = this.pagedGroups.length > this.pageSize; + } + + async edit(group: GroupResponse) { + const [modal] = await this.modalService.openViewRef( + GroupAddEditComponent, + this.addEditModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.groupId = group != null ? group.id : null; + comp.onSavedGroup.subscribe(() => { + modal.close(); + this.load(); + }); + comp.onDeletedGroup.subscribe(() => { + modal.close(); + this.removeGroup(group); + }); + } + ); + } + + add() { + this.edit(null); + } + + async delete(group: GroupResponse) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("deleteGroupConfirmation"), + group.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + await this.apiService.deleteGroup(this.organizationId, group.id); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("deletedGroupId", group.name) + ); + this.removeGroup(group); + } catch (e) { + this.logService.error(e); + } + } + + async users(group: GroupResponse) { + const [modal] = await this.modalService.openViewRef( + EntityUsersComponent, + this.usersModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.entity = "group"; + comp.entityId = group.id; + comp.entityName = group.name; + + comp.onEditedUsers.subscribe(() => { + modal.close(); + }); + } + ); + } + + async resetPaging() { + this.pagedGroups = []; + this.loadMore(); + } + + isSearching() { + return this.searchService.isSearchable(this.searchText); + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.groups && this.groups.length > this.pageSize; + } + + private removeGroup(group: GroupResponse) { + const index = this.groups.indexOf(group); + if (index > -1) { + this.groups.splice(index, 1); + this.resetPaging(); + } + } +} diff --git a/apps/web/src/app/organizations/manage/manage.component.html b/apps/web/src/app/organizations/manage/manage.component.html new file mode 100644 index 0000000000..63718db432 --- /dev/null +++ b/apps/web/src/app/organizations/manage/manage.component.html @@ -0,0 +1,62 @@ + diff --git a/apps/web/src/app/organizations/manage/manage.component.ts b/apps/web/src/app/organizations/manage/manage.component.ts new file mode 100644 index 0000000000..ee04d5621f --- /dev/null +++ b/apps/web/src/app/organizations/manage/manage.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { Organization } from "jslib-common/models/domain/organization"; + +@Component({ + selector: "app-org-manage", + templateUrl: "manage.component.html", +}) +export class ManageComponent implements OnInit { + organization: Organization; + accessPolicies = false; + accessGroups = false; + accessEvents = false; + accessSso = false; + + constructor(private route: ActivatedRoute, private organizationService: OrganizationService) {} + + ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + this.organization = await this.organizationService.get(params.organizationId); + this.accessPolicies = this.organization.usePolicies; + this.accessSso = this.organization.useSso; + this.accessEvents = this.organization.useEvents; + this.accessGroups = this.organization.useGroups; + }); + } +} diff --git a/apps/web/src/app/organizations/manage/people.component.html b/apps/web/src/app/organizations/manage/people.component.html new file mode 100644 index 0000000000..49be829e5f --- /dev/null +++ b/apps/web/src/app/organizations/manage/people.component.html @@ -0,0 +1,255 @@ + + + + {{ "loading" | i18n }} + + +

{{ "noUsersInList" | i18n }}

+ + + {{ "usersNeedConfirmed" | i18n }} + + + + + + + + + + + + +
+ + + + + + {{ u.email }} + {{ + "invited" | i18n + }} + {{ + "accepted" | i18n + }} + {{ u.name }} + + + + {{ "userUsingTwoStep" | i18n }} + + + + {{ "enrolledPasswordReset" | i18n }} + + + {{ "owner" | i18n }} + {{ "admin" | i18n }} + {{ "manager" | i18n }} + {{ "user" | i18n }} + {{ "custom" | i18n }} + + +
+
+
+ + + + + + + + diff --git a/apps/web/src/app/organizations/manage/people.component.ts b/apps/web/src/app/organizations/manage/people.component.ts new file mode 100644 index 0000000000..f26be7f5ad --- /dev/null +++ b/apps/web/src/app/organizations/manage/people.component.ts @@ -0,0 +1,416 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { SearchPipe } from "jslib-angular/pipes/search.pipe"; +import { UserNamePipe } from "jslib-angular/pipes/user-name.pipe"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { ValidationService } from "jslib-angular/services/validation.service"; +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 { OrganizationService } from "jslib-common/abstractions/organization.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 { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { OrganizationUserStatusType } from "jslib-common/enums/organizationUserStatusType"; +import { OrganizationUserType } from "jslib-common/enums/organizationUserType"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { OrganizationKeysRequest } from "jslib-common/models/request/organizationKeysRequest"; +import { OrganizationUserBulkRequest } from "jslib-common/models/request/organizationUserBulkRequest"; +import { OrganizationUserConfirmRequest } from "jslib-common/models/request/organizationUserConfirmRequest"; +import { ListResponse } from "jslib-common/models/response/listResponse"; +import { OrganizationUserBulkResponse } from "jslib-common/models/response/organizationUserBulkResponse"; +import { OrganizationUserUserDetailsResponse } from "jslib-common/models/response/organizationUserResponse"; + +import { BasePeopleComponent } from "../../common/base.people.component"; + +import { BulkConfirmComponent } from "./bulk/bulk-confirm.component"; +import { BulkRemoveComponent } from "./bulk/bulk-remove.component"; +import { BulkStatusComponent } from "./bulk/bulk-status.component"; +import { EntityEventsComponent } from "./entity-events.component"; +import { ResetPasswordComponent } from "./reset-password.component"; +import { UserAddEditComponent } from "./user-add-edit.component"; +import { UserGroupsComponent } from "./user-groups.component"; + +@Component({ + selector: "app-org-people", + templateUrl: "people.component.html", +}) +export class PeopleComponent + extends BasePeopleComponent + implements OnInit +{ + @ViewChild("addEdit", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef; + @ViewChild("groupsTemplate", { read: ViewContainerRef, static: true }) + groupsModalRef: ViewContainerRef; + @ViewChild("eventsTemplate", { read: ViewContainerRef, static: true }) + eventsModalRef: ViewContainerRef; + @ViewChild("confirmTemplate", { read: ViewContainerRef, static: true }) + confirmModalRef: ViewContainerRef; + @ViewChild("resetPasswordTemplate", { read: ViewContainerRef, static: true }) + resetPasswordModalRef: ViewContainerRef; + @ViewChild("bulkStatusTemplate", { read: ViewContainerRef, static: true }) + bulkStatusModalRef: ViewContainerRef; + @ViewChild("bulkConfirmTemplate", { read: ViewContainerRef, static: true }) + bulkConfirmModalRef: ViewContainerRef; + @ViewChild("bulkRemoveTemplate", { read: ViewContainerRef, static: true }) + bulkRemoveModalRef: ViewContainerRef; + + userType = OrganizationUserType; + userStatusType = OrganizationUserStatusType; + + organizationId: string; + status: OrganizationUserStatusType = null; + accessEvents = false; + accessGroups = false; + canResetPassword = false; // User permission (admin/custom) + orgUseResetPassword = false; // Org plan ability + orgHasKeys = false; // Org public/private keys + orgResetPasswordPolicyEnabled = false; + callingUserType: OrganizationUserType = null; + + constructor( + apiService: ApiService, + private route: ActivatedRoute, + i18nService: I18nService, + modalService: ModalService, + platformUtilsService: PlatformUtilsService, + cryptoService: CryptoService, + private router: Router, + searchService: SearchService, + validationService: ValidationService, + private policyService: PolicyService, + logService: LogService, + searchPipe: SearchPipe, + userNamePipe: UserNamePipe, + private syncService: SyncService, + stateService: StateService, + private organizationService: OrganizationService + ) { + super( + apiService, + searchService, + i18nService, + platformUtilsService, + cryptoService, + validationService, + modalService, + logService, + searchPipe, + userNamePipe, + stateService + ); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + const organization = await this.organizationService.get(this.organizationId); + if (!organization.canManageUsers) { + this.router.navigate(["../collections"], { relativeTo: this.route }); + return; + } + this.accessEvents = organization.useEvents; + this.accessGroups = organization.useGroups; + this.canResetPassword = organization.canManageUsersPassword; + this.orgUseResetPassword = organization.useResetPassword; + this.callingUserType = organization.type; + this.orgHasKeys = organization.hasPublicAndPrivateKeys; + + // Backfill pub/priv key if necessary + if (this.canResetPassword && !this.orgHasKeys) { + const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId); + const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey); + const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); + const response = await this.apiService.postOrganizationKeys(this.organizationId, request); + if (response != null) { + this.orgHasKeys = response.publicKey != null && response.privateKey != null; + await this.syncService.fullSync(true); // Replace oganizations with new data + } else { + throw new Error(this.i18nService.t("resetPasswordOrgKeysError")); + } + } + + await this.load(); + + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + this.searchText = qParams.search; + if (qParams.viewEvents != null) { + const user = this.users.filter((u) => u.id === qParams.viewEvents); + if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) { + this.events(user[0]); + } + } + }); + }); + } + + async load() { + const resetPasswordPolicy = await this.policyService.getPolicyForOrganization( + PolicyType.ResetPassword, + this.organizationId + ); + this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled; + super.load(); + } + + getUsers(): Promise> { + return this.apiService.getOrganizationUsers(this.organizationId); + } + + deleteUser(id: string): Promise { + return this.apiService.deleteOrganizationUser(this.organizationId, id); + } + + reinviteUser(id: string): Promise { + return this.apiService.postOrganizationUserReinvite(this.organizationId, id); + } + + async confirmUser( + user: OrganizationUserUserDetailsResponse, + publicKey: Uint8Array + ): Promise { + const orgKey = await this.cryptoService.getOrgKey(this.organizationId); + const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer); + const request = new OrganizationUserConfirmRequest(); + request.key = key.encryptedString; + await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request); + } + + allowResetPassword(orgUser: OrganizationUserUserDetailsResponse): boolean { + // Hierarchy check + let callingUserHasPermission = false; + + switch (this.callingUserType) { + case OrganizationUserType.Owner: + callingUserHasPermission = true; + break; + case OrganizationUserType.Admin: + callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner; + break; + case OrganizationUserType.Custom: + callingUserHasPermission = + orgUser.type !== OrganizationUserType.Owner && + orgUser.type !== OrganizationUserType.Admin; + break; + } + + // Final + return ( + this.canResetPassword && + callingUserHasPermission && + this.orgUseResetPassword && + this.orgHasKeys && + orgUser.resetPasswordEnrolled && + this.orgResetPasswordPolicyEnabled && + orgUser.status === OrganizationUserStatusType.Confirmed + ); + } + + showEnrolledStatus(orgUser: OrganizationUserUserDetailsResponse): boolean { + return ( + this.orgUseResetPassword && + orgUser.resetPasswordEnrolled && + this.orgResetPasswordPolicyEnabled + ); + } + + async edit(user: OrganizationUserUserDetailsResponse) { + const [modal] = await this.modalService.openViewRef( + UserAddEditComponent, + this.addEditModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(user); + comp.organizationId = this.organizationId; + comp.organizationUserId = user != null ? user.id : null; + comp.usesKeyConnector = user?.usesKeyConnector; + comp.onSavedUser.subscribe(() => { + modal.close(); + this.load(); + }); + comp.onDeletedUser.subscribe(() => { + modal.close(); + this.removeUser(user); + }); + } + ); + } + + async groups(user: OrganizationUserUserDetailsResponse) { + const [modal] = await this.modalService.openViewRef( + UserGroupsComponent, + this.groupsModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(user); + comp.organizationId = this.organizationId; + comp.organizationUserId = user != null ? user.id : null; + comp.onSavedUser.subscribe(() => { + modal.close(); + }); + } + ); + } + + async bulkRemove() { + if (this.actionPromise != null) { + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkRemoveComponent, + this.bulkRemoveModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.users = this.getCheckedUsers(); + } + ); + + await modal.onClosedPromise(); + await this.load(); + } + + async bulkReinvite() { + if (this.actionPromise != null) { + return; + } + + const users = this.getCheckedUsers(); + const filteredUsers = users.filter((u) => u.status === OrganizationUserStatusType.Invited); + + if (filteredUsers.length <= 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("noSelectedUsersApplicable") + ); + return; + } + + try { + const request = new OrganizationUserBulkRequest(filteredUsers.map((user) => user.id)); + const response = this.apiService.postManyOrganizationUserReinvite( + this.organizationId, + request + ); + this.showBulkStatus( + users, + filteredUsers, + response, + this.i18nService.t("bulkReinviteMessage") + ); + } catch (e) { + this.validationService.showError(e); + } + this.actionPromise = null; + } + + async bulkConfirm() { + if (this.actionPromise != null) { + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkConfirmComponent, + this.bulkConfirmModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.users = this.getCheckedUsers(); + } + ); + + await modal.onClosedPromise(); + await this.load(); + } + + async events(user: OrganizationUserUserDetailsResponse) { + await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => { + comp.name = this.userNamePipe.transform(user); + comp.organizationId = this.organizationId; + comp.entityId = user.id; + comp.showUser = false; + comp.entity = "user"; + }); + } + + async resetPassword(user: OrganizationUserUserDetailsResponse) { + const [modal] = await this.modalService.openViewRef( + ResetPasswordComponent, + this.resetPasswordModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(user); + comp.email = user != null ? user.email : null; + comp.organizationId = this.organizationId; + comp.id = user != null ? user.id : null; + + comp.onPasswordReset.subscribe(() => { + modal.close(); + this.load(); + }); + } + ); + } + + protected deleteWarningMessage(user: OrganizationUserUserDetailsResponse): string { + if (user.usesKeyConnector) { + return this.i18nService.t("removeUserConfirmationKeyConnector"); + } + + return super.deleteWarningMessage(user); + } + + private async showBulkStatus( + users: OrganizationUserUserDetailsResponse[], + filteredUsers: OrganizationUserUserDetailsResponse[], + request: Promise>, + successfullMessage: string + ) { + const [modal, childComponent] = await this.modalService.openViewRef( + BulkStatusComponent, + this.bulkStatusModalRef, + (comp) => { + comp.loading = true; + } + ); + + // Workaround to handle closing the modal shortly after it has been opened + let close = false; + modal.onShown.subscribe(() => { + if (close) { + modal.close(); + } + }); + + try { + const response = await request; + + if (modal) { + const keyedErrors: any = response.data + .filter((r) => r.error !== "") + .reduce((a, x) => ({ ...a, [x.id]: x.error }), {}); + const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {}); + + childComponent.users = users.map((user) => { + let message = keyedErrors[user.id] ?? successfullMessage; + // eslint-disable-next-line + if (!keyedFilteredUsers.hasOwnProperty(user.id)) { + message = this.i18nService.t("bulkFilteredMessage"); + } + + return { + user: user, + error: keyedErrors.hasOwnProperty(user.id), // eslint-disable-line + message: message, + }; + }); + childComponent.loading = false; + } + } catch { + close = true; + modal.close(); + } + } +} diff --git a/apps/web/src/app/organizations/manage/policies.component.html b/apps/web/src/app/organizations/manage/policies.component.html new file mode 100644 index 0000000000..0f8b890c8f --- /dev/null +++ b/apps/web/src/app/organizations/manage/policies.component.html @@ -0,0 +1,25 @@ + + + + {{ "loading" | i18n }} + + + + + + + +
+ {{ p.name | i18n }} + {{ + "enabled" | i18n + }} + {{ p.description | i18n }} +
+ diff --git a/apps/web/src/app/organizations/manage/policies.component.ts b/apps/web/src/app/organizations/manage/policies.component.ts new file mode 100644 index 0000000000..f62c8bf2e3 --- /dev/null +++ b/apps/web/src/app/organizations/manage/policies.component.ts @@ -0,0 +1,100 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { PolicyResponse } from "jslib-common/models/response/policyResponse"; + +import { PolicyListService } from "../../services/policy-list.service"; +import { BasePolicy } from "../policies/base-policy.component"; + +import { PolicyEditComponent } from "./policy-edit.component"; + +@Component({ + selector: "app-org-policies", + templateUrl: "policies.component.html", +}) +export class PoliciesComponent implements OnInit { + @ViewChild("editTemplate", { read: ViewContainerRef, static: true }) + editModalRef: ViewContainerRef; + + loading = true; + organizationId: string; + policies: BasePolicy[]; + organization: Organization; + + private orgPolicies: PolicyResponse[]; + private policiesEnabledMap: Map = new Map(); + + constructor( + private apiService: ApiService, + private route: ActivatedRoute, + private modalService: ModalService, + private organizationService: OrganizationService, + private policyListService: PolicyListService, + private router: Router + ) {} + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + this.organization = await this.organizationService.get(this.organizationId); + if (this.organization == null || !this.organization.usePolicies) { + this.router.navigate(["/organizations", this.organizationId]); + return; + } + + this.policies = this.policyListService.getPolicies(); + + await this.load(); + + // Handle policies component launch from Event message + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + if (qParams.policyId != null) { + const policyIdFromEvents: string = qParams.policyId; + for (const orgPolicy of this.orgPolicies) { + if (orgPolicy.id === policyIdFromEvents) { + for (let i = 0; i < this.policies.length; i++) { + if (this.policies[i].type === orgPolicy.type) { + this.edit(this.policies[i]); + break; + } + } + break; + } + } + } + }); + }); + } + + async load() { + const response = await this.apiService.getPolicies(this.organizationId); + this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : []; + this.orgPolicies.forEach((op) => { + this.policiesEnabledMap.set(op.type, op.enabled); + }); + + this.loading = false; + } + + async edit(policy: BasePolicy) { + const [modal] = await this.modalService.openViewRef( + PolicyEditComponent, + this.editModalRef, + (comp) => { + comp.policy = policy; + comp.organizationId = this.organizationId; + comp.policiesEnabledMap = this.policiesEnabledMap; + comp.onSavedPolicy.subscribe(() => { + modal.close(); + this.load(); + }); + } + ); + } +} diff --git a/apps/web/src/app/organizations/manage/policy-edit.component.html b/apps/web/src/app/organizations/manage/policy-edit.component.html new file mode 100644 index 0000000000..90f1de8190 --- /dev/null +++ b/apps/web/src/app/organizations/manage/policy-edit.component.html @@ -0,0 +1,49 @@ + diff --git a/apps/web/src/app/organizations/manage/policy-edit.component.ts b/apps/web/src/app/organizations/manage/policy-edit.component.ts new file mode 100644 index 0000000000..93f3de37ff --- /dev/null +++ b/apps/web/src/app/organizations/manage/policy-edit.component.ts @@ -0,0 +1,100 @@ +import { + ChangeDetectorRef, + Component, + ComponentFactoryResolver, + EventEmitter, + Input, + Output, + ViewChild, + ViewContainerRef, +} from "@angular/core"; + +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 { PolicyType } from "jslib-common/enums/policyType"; +import { PolicyRequest } from "jslib-common/models/request/policyRequest"; +import { PolicyResponse } from "jslib-common/models/response/policyResponse"; + +import { BasePolicy, BasePolicyComponent } from "../policies/base-policy.component"; + +@Component({ + selector: "app-policy-edit", + templateUrl: "policy-edit.component.html", +}) +export class PolicyEditComponent { + @Input() policy: BasePolicy; + @Input() organizationId: string; + @Input() policiesEnabledMap: Map = new Map(); + @Output() onSavedPolicy = new EventEmitter(); + + @ViewChild("policyForm", { read: ViewContainerRef, static: true }) + policyFormRef: ViewContainerRef; + + policyType = PolicyType; + loading = true; + enabled = false; + formPromise: Promise; + defaultTypes: any[]; + policyComponent: BasePolicyComponent; + + private policyResponse: PolicyResponse; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private componentFactoryResolver: ComponentFactoryResolver, + private cdr: ChangeDetectorRef, + private logService: LogService + ) {} + + async ngAfterViewInit() { + await this.load(); + this.loading = false; + + const factory = this.componentFactoryResolver.resolveComponentFactory(this.policy.component); + this.policyComponent = this.policyFormRef.createComponent(factory) + .instance as BasePolicyComponent; + this.policyComponent.policy = this.policy; + this.policyComponent.policyResponse = this.policyResponse; + + this.cdr.detectChanges(); + } + + async load() { + try { + this.policyResponse = await this.apiService.getPolicy(this.organizationId, this.policy.type); + } catch (e) { + if (e.statusCode === 404) { + this.policyResponse = new PolicyResponse({ Enabled: false }); + } else { + throw e; + } + } + } + + async submit() { + let request: PolicyRequest; + try { + request = await this.policyComponent.buildRequest(this.policiesEnabledMap); + } catch (e) { + this.platformUtilsService.showToast("error", null, e.message); + return; + } + + try { + this.formPromise = this.apiService.putPolicy(this.organizationId, this.policy.type, request); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("editedPolicyId", this.i18nService.t(this.policy.name)) + ); + this.onSavedPolicy.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/organizations/manage/reset-password.component.html b/apps/web/src/app/organizations/manage/reset-password.component.html new file mode 100644 index 0000000000..137720dc72 --- /dev/null +++ b/apps/web/src/app/organizations/manage/reset-password.component.html @@ -0,0 +1,97 @@ + diff --git a/apps/web/src/app/organizations/manage/reset-password.component.ts b/apps/web/src/app/organizations/manage/reset-password.component.ts new file mode 100644 index 0000000000..3c3aab7ad8 --- /dev/null +++ b/apps/web/src/app/organizations/manage/reset-password.component.ts @@ -0,0 +1,217 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +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 { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { EncString } from "jslib-common/models/domain/encString"; +import { MasterPasswordPolicyOptions } from "jslib-common/models/domain/masterPasswordPolicyOptions"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { OrganizationUserResetPasswordRequest } from "jslib-common/models/request/organizationUserResetPasswordRequest"; + +@Component({ + selector: "app-reset-password", + templateUrl: "reset-password.component.html", +}) +export class ResetPasswordComponent implements OnInit { + @Input() name: string; + @Input() email: string; + @Input() id: string; + @Input() organizationId: string; + @Output() onPasswordReset = new EventEmitter(); + + enforcedPolicyOptions: MasterPasswordPolicyOptions; + newPassword: string = null; + showPassword = false; + masterPasswordScore: number; + formPromise: Promise; + private newPasswordStrengthTimeout: any; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private passwordGenerationService: PasswordGenerationService, + private policyService: PolicyService, + private cryptoService: CryptoService, + private logService: LogService + ) {} + + async ngOnInit() { + // Get Enforced Policy Options + this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(); + } + + get loggedOutWarningName() { + return this.name != null ? this.name : this.i18nService.t("thisUser"); + } + + async generatePassword() { + const options = (await this.passwordGenerationService.getOptions())[0]; + this.newPassword = await this.passwordGenerationService.generatePassword(options); + this.updatePasswordStrength(); + } + + togglePassword() { + this.showPassword = !this.showPassword; + document.getElementById("newPassword").focus(); + } + + copy(value: string) { + if (value == null) { + return; + } + + this.platformUtilsService.copyToClipboard(value, { window: window }); + this.platformUtilsService.showToast( + "info", + null, + this.i18nService.t("valueCopied", this.i18nService.t("password")) + ); + } + + async submit() { + // Validation + if (this.newPassword == null || this.newPassword === "") { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("masterPassRequired") + ); + return false; + } + + if (this.newPassword.length < 8) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("masterPassLength") + ); + return false; + } + + if ( + this.enforcedPolicyOptions != null && + !this.policyService.evaluateMasterPassword( + this.masterPasswordScore, + this.newPassword, + this.enforcedPolicyOptions + ) + ) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("masterPasswordPolicyRequirementsNotMet") + ); + return; + } + + if (this.masterPasswordScore < 3) { + const result = await this.platformUtilsService.showDialog( + this.i18nService.t("weakMasterPasswordDesc"), + this.i18nService.t("weakMasterPassword"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!result) { + return false; + } + } + + // Get user Information (kdf type, kdf iterations, resetPasswordKey, private key) and change password + try { + this.formPromise = this.apiService + .getOrganizationUserResetPasswordDetails(this.organizationId, this.id) + .then(async (response) => { + if (response == null) { + throw new Error(this.i18nService.t("resetPasswordDetailsError")); + } + + const kdfType = response.kdf; + const kdfIterations = response.kdfIterations; + const resetPasswordKey = response.resetPasswordKey; + const encryptedPrivateKey = response.encryptedPrivateKey; + + // Decrypt Organization's encrypted Private Key with org key + const orgSymKey = await this.cryptoService.getOrgKey(this.organizationId); + const decPrivateKey = await this.cryptoService.decryptToBytes( + new EncString(encryptedPrivateKey), + orgSymKey + ); + + // Decrypt User's Reset Password Key to get EncKey + const decValue = await this.cryptoService.rsaDecrypt(resetPasswordKey, decPrivateKey); + const userEncKey = new SymmetricCryptoKey(decValue); + + // Create new key and hash new password + const newKey = await this.cryptoService.makeKey( + this.newPassword, + this.email.trim().toLowerCase(), + kdfType, + kdfIterations + ); + const newPasswordHash = await this.cryptoService.hashPassword(this.newPassword, newKey); + + // Create new encKey for the User + const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey); + + // Create request + const request = new OrganizationUserResetPasswordRequest(); + request.key = newEncKey[1].encryptedString; + request.newMasterPasswordHash = newPasswordHash; + + // Change user's password + return this.apiService.putOrganizationUserResetPassword( + this.organizationId, + this.id, + request + ); + }); + + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("resetPasswordSuccess") + ); + this.onPasswordReset.emit(); + } catch (e) { + this.logService.error(e); + } + } + + updatePasswordStrength() { + if (this.newPasswordStrengthTimeout != null) { + clearTimeout(this.newPasswordStrengthTimeout); + } + this.newPasswordStrengthTimeout = setTimeout(() => { + const strengthResult = this.passwordGenerationService.passwordStrength( + this.newPassword, + this.getPasswordStrengthUserInput() + ); + this.masterPasswordScore = strengthResult == null ? null : strengthResult.score; + }, 300); + } + + private getPasswordStrengthUserInput() { + let userInput: string[] = []; + const atPosition = this.email.indexOf("@"); + if (atPosition > -1) { + userInput = userInput.concat( + this.email + .substr(0, atPosition) + .trim() + .toLowerCase() + .split(/[^A-Za-z0-9]/) + ); + } + if (this.name != null && this.name !== "") { + userInput = userInput.concat(this.name.trim().toLowerCase().split(" ")); + } + return userInput; + } +} diff --git a/apps/web/src/app/organizations/manage/user-add-edit.component.html b/apps/web/src/app/organizations/manage/user-add-edit.component.html new file mode 100644 index 0000000000..c9047b7e2d --- /dev/null +++ b/apps/web/src/app/organizations/manage/user-add-edit.component.html @@ -0,0 +1,407 @@ + diff --git a/apps/web/src/app/organizations/manage/user-add-edit.component.ts b/apps/web/src/app/organizations/manage/user-add-edit.component.ts new file mode 100644 index 0000000000..cebf022657 --- /dev/null +++ b/apps/web/src/app/organizations/manage/user-add-edit.component.ts @@ -0,0 +1,242 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.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"; +import { OrganizationUserType } from "jslib-common/enums/organizationUserType"; +import { PermissionsApi } from "jslib-common/models/api/permissionsApi"; +import { CollectionData } from "jslib-common/models/data/collectionData"; +import { Collection } from "jslib-common/models/domain/collection"; +import { OrganizationUserInviteRequest } from "jslib-common/models/request/organizationUserInviteRequest"; +import { OrganizationUserUpdateRequest } from "jslib-common/models/request/organizationUserUpdateRequest"; +import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest"; +import { CollectionDetailsResponse } from "jslib-common/models/response/collectionResponse"; +import { CollectionView } from "jslib-common/models/view/collectionView"; + +@Component({ + selector: "app-user-add-edit", + templateUrl: "user-add-edit.component.html", +}) +export class UserAddEditComponent implements OnInit { + @Input() name: string; + @Input() organizationUserId: string; + @Input() organizationId: string; + @Input() usesKeyConnector = false; + @Output() onSavedUser = new EventEmitter(); + @Output() onDeletedUser = new EventEmitter(); + + loading = true; + editMode = false; + title: string; + emails: string; + type: OrganizationUserType = OrganizationUserType.User; + permissions = new PermissionsApi(); + showCustom = false; + access: "all" | "selected" = "selected"; + collections: CollectionView[] = []; + formPromise: Promise; + deletePromise: Promise; + organizationUserType = OrganizationUserType; + + manageAllCollectionsCheckboxes = [ + { + id: "createNewCollections", + get: () => this.permissions.createNewCollections, + set: (v: boolean) => (this.permissions.createNewCollections = v), + }, + { + id: "editAnyCollection", + get: () => this.permissions.editAnyCollection, + set: (v: boolean) => (this.permissions.editAnyCollection = v), + }, + { + id: "deleteAnyCollection", + get: () => this.permissions.deleteAnyCollection, + set: (v: boolean) => (this.permissions.deleteAnyCollection = v), + }, + ]; + + manageAssignedCollectionsCheckboxes = [ + { + id: "editAssignedCollections", + get: () => this.permissions.editAssignedCollections, + set: (v: boolean) => (this.permissions.editAssignedCollections = v), + }, + { + id: "deleteAssignedCollections", + get: () => this.permissions.deleteAssignedCollections, + set: (v: boolean) => (this.permissions.deleteAssignedCollections = v), + }, + ]; + + get customUserTypeSelected(): boolean { + return this.type === OrganizationUserType.Custom; + } + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private collectionService: CollectionService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + this.editMode = this.loading = this.organizationUserId != null; + await this.loadCollections(); + + if (this.editMode) { + this.editMode = true; + this.title = this.i18nService.t("editUser"); + try { + const user = await this.apiService.getOrganizationUser( + this.organizationId, + this.organizationUserId + ); + this.access = user.accessAll ? "all" : "selected"; + this.type = user.type; + if (user.type === OrganizationUserType.Custom) { + this.permissions = user.permissions; + } + if (user.collections != null && this.collections != null) { + user.collections.forEach((s) => { + const collection = this.collections.filter((c) => c.id === s.id); + if (collection != null && collection.length > 0) { + (collection[0] as any).checked = true; + collection[0].readOnly = s.readOnly; + collection[0].hidePasswords = s.hidePasswords; + } + }); + } + } catch (e) { + this.logService.error(e); + } + } else { + this.title = this.i18nService.t("inviteUser"); + } + + this.loading = false; + } + + async loadCollections() { + const response = await this.apiService.getCollections(this.organizationId); + const collections = response.data.map( + (r) => new Collection(new CollectionData(r as CollectionDetailsResponse)) + ); + this.collections = await this.collectionService.decryptMany(collections); + } + + check(c: CollectionView, select?: boolean) { + (c as any).checked = select == null ? !(c as any).checked : select; + if (!(c as any).checked) { + c.readOnly = false; + } + } + + selectAll(select: boolean) { + this.collections.forEach((c) => this.check(c, select)); + } + + setRequestPermissions(p: PermissionsApi, clearPermissions: boolean) { + Object.assign(p, clearPermissions ? new PermissionsApi() : this.permissions); + return p; + } + + handleDependentPermissions() { + // Manage Password Reset must have Manage Users enabled + if (this.permissions.manageResetPassword && !this.permissions.manageUsers) { + this.permissions.manageUsers = true; + (document.getElementById("manageUsers") as HTMLInputElement).checked = true; + this.platformUtilsService.showToast( + "info", + null, + this.i18nService.t("resetPasswordManageUsers") + ); + } + } + + async submit() { + let collections: SelectionReadOnlyRequest[] = null; + if (this.access !== "all") { + collections = this.collections + .filter((c) => (c as any).checked) + .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords)); + } + + try { + if (this.editMode) { + const request = new OrganizationUserUpdateRequest(); + request.accessAll = this.access === "all"; + request.type = this.type; + request.collections = collections; + request.permissions = this.setRequestPermissions( + request.permissions ?? new PermissionsApi(), + request.type !== OrganizationUserType.Custom + ); + this.formPromise = this.apiService.putOrganizationUser( + this.organizationId, + this.organizationUserId, + request + ); + } else { + const request = new OrganizationUserInviteRequest(); + request.emails = this.emails.trim().split(/\s*,\s*/); + request.accessAll = this.access === "all"; + request.type = this.type; + request.permissions = this.setRequestPermissions( + request.permissions ?? new PermissionsApi(), + request.type !== OrganizationUserType.Custom + ); + request.collections = collections; + this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request); + } + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t(this.editMode ? "editedUserId" : "invitedUsers", this.name) + ); + this.onSavedUser.emit(); + } catch (e) { + this.logService.error(e); + } + } + + async delete() { + if (!this.editMode) { + return; + } + + const message = this.usesKeyConnector + ? "removeUserConfirmationKeyConnector" + : "removeUserConfirmation"; + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t(message), + this.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.deletePromise = this.apiService.deleteOrganizationUser( + this.organizationId, + this.organizationUserId + ); + await this.deletePromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("removedUserId", this.name) + ); + this.onDeletedUser.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/organizations/manage/user-confirm.component.html b/apps/web/src/app/organizations/manage/user-confirm.component.html new file mode 100644 index 0000000000..87cc0d970a --- /dev/null +++ b/apps/web/src/app/organizations/manage/user-confirm.component.html @@ -0,0 +1,52 @@ + diff --git a/apps/web/src/app/organizations/manage/user-confirm.component.ts b/apps/web/src/app/organizations/manage/user-confirm.component.ts new file mode 100644 index 0000000000..ec10d51386 --- /dev/null +++ b/apps/web/src/app/organizations/manage/user-confirm.component.ts @@ -0,0 +1,56 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +@Component({ + selector: "app-user-confirm", + templateUrl: "user-confirm.component.html", +}) +export class UserConfirmComponent implements OnInit { + @Input() name: string; + @Input() userId: string; + @Input() publicKey: Uint8Array; + @Output() onConfirmedUser = new EventEmitter(); + + dontAskAgain = false; + loading = true; + fingerprint: string; + formPromise: Promise; + + constructor( + private cryptoService: CryptoService, + private logService: LogService, + private stateService: StateService + ) {} + + async ngOnInit() { + try { + if (this.publicKey != null) { + const fingerprint = await this.cryptoService.getFingerprint( + this.userId, + this.publicKey.buffer + ); + if (fingerprint != null) { + this.fingerprint = fingerprint.join("-"); + } + } + } catch (e) { + this.logService.error(e); + } + this.loading = false; + } + + async submit() { + if (this.loading) { + return; + } + + if (this.dontAskAgain) { + await this.stateService.setAutoConfirmFingerprints(true); + } + + this.onConfirmedUser.emit(); + } +} diff --git a/apps/web/src/app/organizations/manage/user-groups.component.html b/apps/web/src/app/organizations/manage/user-groups.component.html new file mode 100644 index 0000000000..4853125b78 --- /dev/null +++ b/apps/web/src/app/organizations/manage/user-groups.component.html @@ -0,0 +1,60 @@ + diff --git a/apps/web/src/app/organizations/manage/user-groups.component.ts b/apps/web/src/app/organizations/manage/user-groups.component.ts new file mode 100644 index 0000000000..b572c11681 --- /dev/null +++ b/apps/web/src/app/organizations/manage/user-groups.component.ts @@ -0,0 +1,90 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +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 { Utils } from "jslib-common/misc/utils"; +import { OrganizationUserUpdateGroupsRequest } from "jslib-common/models/request/organizationUserUpdateGroupsRequest"; +import { GroupResponse } from "jslib-common/models/response/groupResponse"; + +@Component({ + selector: "app-user-groups", + templateUrl: "user-groups.component.html", +}) +export class UserGroupsComponent implements OnInit { + @Input() name: string; + @Input() organizationUserId: string; + @Input() organizationId: string; + @Output() onSavedUser = new EventEmitter(); + + loading = true; + groups: GroupResponse[] = []; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + const groupsResponse = await this.apiService.getGroups(this.organizationId); + const groups = groupsResponse.data.map((r) => r); + groups.sort(Utils.getSortFunction(this.i18nService, "name")); + this.groups = groups; + + try { + const userGroups = await this.apiService.getOrganizationUserGroups( + this.organizationId, + this.organizationUserId + ); + if (userGroups != null && this.groups != null) { + userGroups.forEach((ug) => { + const group = this.groups.filter((g) => g.id === ug); + if (group != null && group.length > 0) { + (group[0] as any).checked = true; + } + }); + } + } catch (e) { + this.logService.error(e); + } + + this.loading = false; + } + + check(g: GroupResponse, select?: boolean) { + (g as any).checked = select == null ? !(g as any).checked : select; + if (!(g as any).checked) { + (g as any).readOnly = false; + } + } + + selectAll(select: boolean) { + this.groups.forEach((g) => this.check(g, select)); + } + + async submit() { + const request = new OrganizationUserUpdateGroupsRequest(); + request.groupIds = this.groups.filter((g) => (g as any).checked).map((g) => g.id); + + try { + this.formPromise = this.apiService.putOrganizationUserGroups( + this.organizationId, + this.organizationUserId, + request + ); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("editedGroupsForUser", this.name) + ); + this.onSavedUser.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/organizations/organization-routing.module.ts b/apps/web/src/app/organizations/organization-routing.module.ts new file mode 100644 index 0000000000..cae00bec56 --- /dev/null +++ b/apps/web/src/app/organizations/organization-routing.module.ts @@ -0,0 +1,222 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AuthGuard } from "jslib-angular/guards/auth.guard"; +import { Permissions } from "jslib-common/enums/permissions"; + +import { PermissionsGuard } from "./guards/permissions.guard"; +import { OrganizationLayoutComponent } from "./layouts/organization-layout.component"; +import { CollectionsComponent } from "./manage/collections.component"; +import { EventsComponent } from "./manage/events.component"; +import { GroupsComponent } from "./manage/groups.component"; +import { ManageComponent } from "./manage/manage.component"; +import { PeopleComponent } from "./manage/people.component"; +import { PoliciesComponent } from "./manage/policies.component"; +import { NavigationPermissionsService } from "./services/navigation-permissions.service"; +import { AccountComponent } from "./settings/account.component"; +import { OrganizationBillingComponent } from "./settings/organization-billing.component"; +import { OrganizationSubscriptionComponent } from "./settings/organization-subscription.component"; +import { SettingsComponent } from "./settings/settings.component"; +import { TwoFactorSetupComponent } from "./settings/two-factor-setup.component"; +import { ExportComponent } from "./tools/export.component"; +import { ExposedPasswordsReportComponent } from "./tools/exposed-passwords-report.component"; +import { ImportComponent } from "./tools/import.component"; +import { InactiveTwoFactorReportComponent } from "./tools/inactive-two-factor-report.component"; +import { ReusedPasswordsReportComponent } from "./tools/reused-passwords-report.component"; +import { ToolsComponent } from "./tools/tools.component"; +import { UnsecuredWebsitesReportComponent } from "./tools/unsecured-websites-report.component"; +import { WeakPasswordsReportComponent } from "./tools/weak-passwords-report.component"; + +const routes: Routes = [ + { + path: ":organizationId", + component: OrganizationLayoutComponent, + canActivate: [AuthGuard, PermissionsGuard], + data: { + permissions: NavigationPermissionsService.getPermissions("admin"), + }, + children: [ + { path: "", pathMatch: "full", redirectTo: "vault" }, + { + path: "vault", + loadChildren: async () => + (await import("../modules/vault/modules/organization-vault/organization-vault.module")) + .OrganizationVaultModule, + }, + { + path: "tools", + component: ToolsComponent, + canActivate: [PermissionsGuard], + data: { permissions: NavigationPermissionsService.getPermissions("tools") }, + children: [ + { + path: "", + pathMatch: "full", + redirectTo: "import", + }, + { + path: "import", + component: ImportComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "importData", + permissions: [Permissions.AccessImportExport], + }, + }, + { + path: "export", + component: ExportComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "exportVault", + permissions: [Permissions.AccessImportExport], + }, + }, + { + path: "exposed-passwords-report", + component: ExposedPasswordsReportComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "exposedPasswordsReport", + permissions: [Permissions.AccessReports], + }, + }, + { + path: "inactive-two-factor-report", + component: InactiveTwoFactorReportComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "inactive2faReport", + permissions: [Permissions.AccessReports], + }, + }, + { + path: "reused-passwords-report", + component: ReusedPasswordsReportComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "reusedPasswordsReport", + permissions: [Permissions.AccessReports], + }, + }, + { + path: "unsecured-websites-report", + component: UnsecuredWebsitesReportComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "unsecuredWebsitesReport", + permissions: [Permissions.AccessReports], + }, + }, + { + path: "weak-passwords-report", + component: WeakPasswordsReportComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "weakPasswordsReport", + permissions: [Permissions.AccessReports], + }, + }, + ], + }, + { + path: "manage", + component: ManageComponent, + canActivate: [PermissionsGuard], + data: { + permissions: NavigationPermissionsService.getPermissions("manage"), + }, + children: [ + { + path: "", + pathMatch: "full", + redirectTo: "people", + }, + { + path: "collections", + component: CollectionsComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "collections", + permissions: [ + Permissions.CreateNewCollections, + Permissions.EditAnyCollection, + Permissions.DeleteAnyCollection, + Permissions.EditAssignedCollections, + Permissions.DeleteAssignedCollections, + ], + }, + }, + { + path: "events", + component: EventsComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "eventLogs", + permissions: [Permissions.AccessEventLogs], + }, + }, + { + path: "groups", + component: GroupsComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "groups", + permissions: [Permissions.ManageGroups], + }, + }, + { + path: "people", + component: PeopleComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "people", + permissions: [Permissions.ManageUsers, Permissions.ManageUsersPassword], + }, + }, + { + path: "policies", + component: PoliciesComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "policies", + permissions: [Permissions.ManagePolicies], + }, + }, + ], + }, + { + path: "settings", + component: SettingsComponent, + canActivate: [PermissionsGuard], + data: { permissions: NavigationPermissionsService.getPermissions("settings") }, + children: [ + { path: "", pathMatch: "full", redirectTo: "account" }, + { path: "account", component: AccountComponent, data: { titleId: "myOrganization" } }, + { + path: "two-factor", + component: TwoFactorSetupComponent, + data: { titleId: "twoStepLogin" }, + }, + { + path: "billing", + component: OrganizationBillingComponent, + canActivate: [PermissionsGuard], + data: { titleId: "billing", permissions: [Permissions.ManageBilling] }, + }, + { + path: "subscription", + component: OrganizationSubscriptionComponent, + data: { titleId: "subscription" }, + }, + ], + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class OrganizationsRoutingModule {} diff --git a/apps/web/src/app/organizations/policies/base-policy.component.ts b/apps/web/src/app/organizations/policies/base-policy.component.ts new file mode 100644 index 0000000000..d93337c7c0 --- /dev/null +++ b/apps/web/src/app/organizations/policies/base-policy.component.ts @@ -0,0 +1,56 @@ +import { Directive, Input, OnInit } from "@angular/core"; +import { FormControl, FormGroup } from "@angular/forms"; + +import { PolicyType } from "jslib-common/enums/policyType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { PolicyRequest } from "jslib-common/models/request/policyRequest"; +import { PolicyResponse } from "jslib-common/models/response/policyResponse"; + +export abstract class BasePolicy { + abstract name: string; + abstract description: string; + abstract type: PolicyType; + abstract component: any; + + display(organization: Organization) { + return true; + } +} + +@Directive() +export abstract class BasePolicyComponent implements OnInit { + @Input() policyResponse: PolicyResponse; + @Input() policy: BasePolicy; + + enabled = new FormControl(false); + data: FormGroup = null; + + ngOnInit(): void { + this.enabled.setValue(this.policyResponse.enabled); + + if (this.policyResponse.data != null) { + this.loadData(); + } + } + + loadData() { + this.data.patchValue(this.policyResponse.data ?? {}); + } + + buildRequestData() { + if (this.data != null) { + return this.data.value; + } + + return null; + } + + buildRequest(policiesEnabledMap: Map) { + const request = new PolicyRequest(); + request.enabled = this.enabled.value; + request.type = this.policy.type; + request.data = this.buildRequestData(); + + return Promise.resolve(request); + } +} diff --git a/apps/web/src/app/organizations/policies/disable-send.component.html b/apps/web/src/app/organizations/policies/disable-send.component.html new file mode 100644 index 0000000000..a93b79b6dc --- /dev/null +++ b/apps/web/src/app/organizations/policies/disable-send.component.html @@ -0,0 +1,16 @@ + + {{ "disableSendExemption" | i18n }} + + +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/disable-send.component.ts b/apps/web/src/app/organizations/policies/disable-send.component.ts new file mode 100644 index 0000000000..326a5e098f --- /dev/null +++ b/apps/web/src/app/organizations/policies/disable-send.component.ts @@ -0,0 +1,18 @@ +import { Component } from "@angular/core"; + +import { PolicyType } from "jslib-common/enums/policyType"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class DisableSendPolicy extends BasePolicy { + name = "disableSend"; + description = "disableSendPolicyDesc"; + type = PolicyType.DisableSend; + component = DisableSendPolicyComponent; +} + +@Component({ + selector: "policy-disable-send", + templateUrl: "disable-send.component.html", +}) +export class DisableSendPolicyComponent extends BasePolicyComponent {} diff --git a/apps/web/src/app/organizations/policies/master-password.component.html b/apps/web/src/app/organizations/policies/master-password.component.html new file mode 100644 index 0000000000..5fdb105332 --- /dev/null +++ b/apps/web/src/app/organizations/policies/master-password.component.html @@ -0,0 +1,83 @@ + + {{ "keyConnectorPolicyRestriction" | i18n }} + + +
+
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/master-password.component.ts b/apps/web/src/app/organizations/policies/master-password.component.ts new file mode 100644 index 0000000000..de33c84531 --- /dev/null +++ b/apps/web/src/app/organizations/policies/master-password.component.ts @@ -0,0 +1,56 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PolicyType } from "jslib-common/enums/policyType"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class MasterPasswordPolicy extends BasePolicy { + name = "masterPass"; + description = "masterPassPolicyDesc"; + type = PolicyType.MasterPassword; + component = MasterPasswordPolicyComponent; +} + +@Component({ + selector: "policy-master-password", + templateUrl: "master-password.component.html", +}) +export class MasterPasswordPolicyComponent extends BasePolicyComponent { + data = this.formBuilder.group({ + minComplexity: [null], + minLength: [null], + requireUpper: [null], + requireLower: [null], + requireNumbers: [null], + requireSpecial: [null], + }); + + passwordScores: { name: string; value: number }[]; + showKeyConnectorInfo = false; + + constructor( + private formBuilder: FormBuilder, + i18nService: I18nService, + private organizationService: OrganizationService + ) { + super(); + + this.passwordScores = [ + { name: "-- " + i18nService.t("select") + " --", value: null }, + { name: i18nService.t("weak") + " (0)", value: 0 }, + { name: i18nService.t("weak") + " (1)", value: 1 }, + { name: i18nService.t("weak") + " (2)", value: 2 }, + { name: i18nService.t("good") + " (3)", value: 3 }, + { name: i18nService.t("strong") + " (4)", value: 4 }, + ]; + } + + async ngOnInit() { + super.ngOnInit(); + const organization = await this.organizationService.get(this.policyResponse.organizationId); + this.showKeyConnectorInfo = organization.keyConnectorEnabled; + } +} diff --git a/apps/web/src/app/organizations/policies/password-generator.component.html b/apps/web/src/app/organizations/policies/password-generator.component.html new file mode 100644 index 0000000000..2d9fa14f00 --- /dev/null +++ b/apps/web/src/app/organizations/policies/password-generator.component.html @@ -0,0 +1,144 @@ +
+
+
+ + +
+
+ +
+
+ + +
+
+

{{ "password" | i18n }}

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

{{ "passphrase" | i18n }}

+
+
+ + +
+
+
+ + +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/password-generator.component.ts b/apps/web/src/app/organizations/policies/password-generator.component.ts new file mode 100644 index 0000000000..fd474b1f0d --- /dev/null +++ b/apps/web/src/app/organizations/policies/password-generator.component.ts @@ -0,0 +1,46 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PolicyType } from "jslib-common/enums/policyType"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class PasswordGeneratorPolicy extends BasePolicy { + name = "passwordGenerator"; + description = "passwordGeneratorPolicyDesc"; + type = PolicyType.PasswordGenerator; + component = PasswordGeneratorPolicyComponent; +} + +@Component({ + selector: "policy-password-generator", + templateUrl: "password-generator.component.html", +}) +export class PasswordGeneratorPolicyComponent extends BasePolicyComponent { + data = this.formBuilder.group({ + defaultType: [null], + minLength: [null], + useUpper: [null], + useLower: [null], + useNumbers: [null], + useSpecial: [null], + minNumbers: [null], + minSpecial: [null], + minNumberWords: [null], + capitalize: [null], + includeNumber: [null], + }); + + defaultTypes: { name: string; value: string }[]; + + constructor(private formBuilder: FormBuilder, i18nService: I18nService) { + super(); + + this.defaultTypes = [ + { name: i18nService.t("userPreference"), value: null }, + { name: i18nService.t("password"), value: "password" }, + { name: i18nService.t("passphrase"), value: "passphrase" }, + ]; + } +} diff --git a/apps/web/src/app/organizations/policies/personal-ownership.component.html b/apps/web/src/app/organizations/policies/personal-ownership.component.html new file mode 100644 index 0000000000..add197df9a --- /dev/null +++ b/apps/web/src/app/organizations/policies/personal-ownership.component.html @@ -0,0 +1,18 @@ + + {{ "personalOwnershipExemption" | i18n }} + + +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/personal-ownership.component.ts b/apps/web/src/app/organizations/policies/personal-ownership.component.ts new file mode 100644 index 0000000000..eb737102e9 --- /dev/null +++ b/apps/web/src/app/organizations/policies/personal-ownership.component.ts @@ -0,0 +1,18 @@ +import { Component } from "@angular/core"; + +import { PolicyType } from "jslib-common/enums/policyType"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class PersonalOwnershipPolicy extends BasePolicy { + name = "personalOwnership"; + description = "personalOwnershipPolicyDesc"; + type = PolicyType.PersonalOwnership; + component = PersonalOwnershipPolicyComponent; +} + +@Component({ + selector: "policy-personal-ownership", + templateUrl: "personal-ownership.component.html", +}) +export class PersonalOwnershipPolicyComponent extends BasePolicyComponent {} diff --git a/apps/web/src/app/organizations/policies/require-sso.component.html b/apps/web/src/app/organizations/policies/require-sso.component.html new file mode 100644 index 0000000000..85d60f41b6 --- /dev/null +++ b/apps/web/src/app/organizations/policies/require-sso.component.html @@ -0,0 +1,19 @@ + + {{ "requireSsoPolicyReq" | i18n }} + + + {{ "requireSsoExemption" | i18n }} + + +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/require-sso.component.ts b/apps/web/src/app/organizations/policies/require-sso.component.ts new file mode 100644 index 0000000000..06f30d0ddf --- /dev/null +++ b/apps/web/src/app/organizations/policies/require-sso.component.ts @@ -0,0 +1,38 @@ +import { Component } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { PolicyRequest } from "jslib-common/models/request/policyRequest"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class RequireSsoPolicy extends BasePolicy { + name = "requireSso"; + description = "requireSsoPolicyDesc"; + type = PolicyType.RequireSso; + component = RequireSsoPolicyComponent; + + display(organization: Organization) { + return organization.useSso; + } +} + +@Component({ + selector: "policy-require-sso", + templateUrl: "require-sso.component.html", +}) +export class RequireSsoPolicyComponent extends BasePolicyComponent { + constructor(private i18nService: I18nService) { + super(); + } + + buildRequest(policiesEnabledMap: Map): Promise { + const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false; + if (this.enabled.value && !singleOrgEnabled) { + throw new Error(this.i18nService.t("requireSsoPolicyReqError")); + } + + return super.buildRequest(policiesEnabledMap); + } +} diff --git a/apps/web/src/app/organizations/policies/reset-password.component.html b/apps/web/src/app/organizations/policies/reset-password.component.html new file mode 100644 index 0000000000..5e911deb0b --- /dev/null +++ b/apps/web/src/app/organizations/policies/reset-password.component.html @@ -0,0 +1,40 @@ + + {{ "keyConnectorPolicyRestriction" | i18n }} + + + + {{ "resetPasswordPolicyWarning" | i18n }} + + +
+
+ + +
+
+ +
+

{{ "resetPasswordPolicyAutoEnroll" | i18n }}

+

{{ "resetPasswordPolicyAutoEnrollDescription" | i18n }}

+ + {{ "resetPasswordPolicyAutoEnrollWarning" | i18n }} + +
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/reset-password.component.ts b/apps/web/src/app/organizations/policies/reset-password.component.ts new file mode 100644 index 0000000000..c4db4a6d0b --- /dev/null +++ b/apps/web/src/app/organizations/policies/reset-password.component.ts @@ -0,0 +1,42 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; + +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { Organization } from "jslib-common/models/domain/organization"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class ResetPasswordPolicy extends BasePolicy { + name = "resetPasswordPolicy"; + description = "resetPasswordPolicyDescription"; + type = PolicyType.ResetPassword; + component = ResetPasswordPolicyComponent; + + display(organization: Organization) { + return organization.useResetPassword; + } +} + +@Component({ + selector: "policy-reset-password", + templateUrl: "reset-password.component.html", +}) +export class ResetPasswordPolicyComponent extends BasePolicyComponent { + data = this.formBuilder.group({ + autoEnrollEnabled: false, + }); + + defaultTypes: { name: string; value: string }[]; + showKeyConnectorInfo = false; + + constructor(private formBuilder: FormBuilder, private organizationService: OrganizationService) { + super(); + } + + async ngOnInit() { + super.ngOnInit(); + const organization = await this.organizationService.get(this.policyResponse.organizationId); + this.showKeyConnectorInfo = organization.keyConnectorEnabled; + } +} diff --git a/apps/web/src/app/organizations/policies/send-options.component.html b/apps/web/src/app/organizations/policies/send-options.component.html new file mode 100644 index 0000000000..f204cc8e57 --- /dev/null +++ b/apps/web/src/app/organizations/policies/send-options.component.html @@ -0,0 +1,30 @@ + + {{ "sendOptionsExemption" | i18n }} + + +
+
+ + +
+
+ +
+

{{ "options" | i18n }}

+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/send-options.component.ts b/apps/web/src/app/organizations/policies/send-options.component.ts new file mode 100644 index 0000000000..f789fb5ba1 --- /dev/null +++ b/apps/web/src/app/organizations/policies/send-options.component.ts @@ -0,0 +1,27 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; + +import { PolicyType } from "jslib-common/enums/policyType"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class SendOptionsPolicy extends BasePolicy { + name = "sendOptions"; + description = "sendOptionsPolicyDesc"; + type = PolicyType.SendOptions; + component = SendOptionsPolicyComponent; +} + +@Component({ + selector: "policy-send-options", + templateUrl: "send-options.component.html", +}) +export class SendOptionsPolicyComponent extends BasePolicyComponent { + data = this.formBuilder.group({ + disableHideEmail: false, + }); + + constructor(private formBuilder: FormBuilder) { + super(); + } +} diff --git a/apps/web/src/app/organizations/policies/single-org.component.html b/apps/web/src/app/organizations/policies/single-org.component.html new file mode 100644 index 0000000000..e11ac3f057 --- /dev/null +++ b/apps/web/src/app/organizations/policies/single-org.component.html @@ -0,0 +1,16 @@ + + {{ "singleOrgPolicyWarning" | i18n }} + + +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/single-org.component.ts b/apps/web/src/app/organizations/policies/single-org.component.ts new file mode 100644 index 0000000000..0308c28268 --- /dev/null +++ b/apps/web/src/app/organizations/policies/single-org.component.ts @@ -0,0 +1,42 @@ +import { Component } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { PolicyRequest } from "jslib-common/models/request/policyRequest"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class SingleOrgPolicy extends BasePolicy { + name = "singleOrg"; + description = "singleOrgDesc"; + type = PolicyType.SingleOrg; + component = SingleOrgPolicyComponent; +} + +@Component({ + selector: "policy-single-org", + templateUrl: "single-org.component.html", +}) +export class SingleOrgPolicyComponent extends BasePolicyComponent { + constructor(private i18nService: I18nService) { + super(); + } + + buildRequest(policiesEnabledMap: Map): Promise { + if (!this.enabled.value) { + if (policiesEnabledMap.get(PolicyType.RequireSso) ?? false) { + throw new Error( + this.i18nService.t("disableRequiredError", this.i18nService.t("requireSso")) + ); + } + + if (policiesEnabledMap.get(PolicyType.MaximumVaultTimeout) ?? false) { + throw new Error( + this.i18nService.t("disableRequiredError", this.i18nService.t("maximumVaultTimeoutLabel")) + ); + } + } + + return super.buildRequest(policiesEnabledMap); + } +} diff --git a/apps/web/src/app/organizations/policies/two-factor-authentication.component.html b/apps/web/src/app/organizations/policies/two-factor-authentication.component.html new file mode 100644 index 0000000000..1b97ab3616 --- /dev/null +++ b/apps/web/src/app/organizations/policies/two-factor-authentication.component.html @@ -0,0 +1,16 @@ + + {{ "twoStepLoginPolicyWarning" | i18n }} + + +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/policies/two-factor-authentication.component.ts b/apps/web/src/app/organizations/policies/two-factor-authentication.component.ts new file mode 100644 index 0000000000..140c099f21 --- /dev/null +++ b/apps/web/src/app/organizations/policies/two-factor-authentication.component.ts @@ -0,0 +1,18 @@ +import { Component } from "@angular/core"; + +import { PolicyType } from "jslib-common/enums/policyType"; + +import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; + +export class TwoFactorAuthenticationPolicy extends BasePolicy { + name = "twoStepLogin"; + description = "twoStepLoginPolicyDesc"; + type = PolicyType.TwoFactorAuthentication; + component = TwoFactorAuthenticationPolicyComponent; +} + +@Component({ + selector: "policy-two-factor-authentication", + templateUrl: "two-factor-authentication.component.html", +}) +export class TwoFactorAuthenticationPolicyComponent extends BasePolicyComponent {} diff --git a/apps/web/src/app/organizations/services/navigation-permissions.service.ts b/apps/web/src/app/organizations/services/navigation-permissions.service.ts new file mode 100644 index 0000000000..dd47d2c52e --- /dev/null +++ b/apps/web/src/app/organizations/services/navigation-permissions.service.ts @@ -0,0 +1,48 @@ +import { Permissions } from "jslib-common/enums/permissions"; +import { Organization } from "jslib-common/models/domain/organization"; + +const permissions = { + manage: [ + Permissions.CreateNewCollections, + Permissions.EditAnyCollection, + Permissions.DeleteAnyCollection, + Permissions.EditAssignedCollections, + Permissions.DeleteAssignedCollections, + Permissions.AccessEventLogs, + Permissions.ManageGroups, + Permissions.ManageUsers, + Permissions.ManagePolicies, + ], + tools: [Permissions.AccessImportExport, Permissions.AccessReports], + settings: [Permissions.ManageOrganization], +}; + +export class NavigationPermissionsService { + static getPermissions(route: keyof typeof permissions | "admin") { + if (route === "admin") { + return Object.values(permissions).reduce((previous, current) => previous.concat(current), []); + } + + return permissions[route]; + } + + static canAccessAdmin(organization: Organization): boolean { + return ( + this.canAccessTools(organization) || + this.canAccessSettings(organization) || + this.canAccessManage(organization) + ); + } + + static canAccessTools(organization: Organization): boolean { + return organization.hasAnyPermission(NavigationPermissionsService.getPermissions("tools")); + } + + static canAccessSettings(organization: Organization): boolean { + return organization.hasAnyPermission(NavigationPermissionsService.getPermissions("settings")); + } + + static canAccessManage(organization: Organization): boolean { + return organization.hasAnyPermission(NavigationPermissionsService.getPermissions("manage")); + } +} diff --git a/apps/web/src/app/organizations/settings/account.component.html b/apps/web/src/app/organizations/settings/account.component.html new file mode 100644 index 0000000000..7f237203d8 --- /dev/null +++ b/apps/web/src/app/organizations/settings/account.component.html @@ -0,0 +1,133 @@ + +
+ + {{ "loading" | i18n }} +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+ +
+ +
+

{{ "apiKey" | i18n }}

+
+

+ {{ "apiKeyDesc" | i18n }} + + {{ "learnMore" | i18n }} + +

+ + +
+
+

{{ "taxInformation" | i18n }}

+
+

{{ "taxInformationDesc" | i18n }}

+
+ + {{ "loading" | i18n }} +
+
+ + +
+
+

{{ "dangerZone" | i18n }}

+
+
+
+

{{ "dangerZoneDesc" | i18n }}

+ + +
+
+ + + + diff --git a/apps/web/src/app/organizations/settings/account.component.ts b/apps/web/src/app/organizations/settings/account.component.ts new file mode 100644 index 0000000000..291c8f9e49 --- /dev/null +++ b/apps/web/src/app/organizations/settings/account.component.ts @@ -0,0 +1,158 @@ +import { Component, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { OrganizationKeysRequest } from "jslib-common/models/request/organizationKeysRequest"; +import { OrganizationUpdateRequest } from "jslib-common/models/request/organizationUpdateRequest"; +import { OrganizationResponse } from "jslib-common/models/response/organizationResponse"; + +import { ApiKeyComponent } from "../../settings/api-key.component"; +import { PurgeVaultComponent } from "../../settings/purge-vault.component"; +import { TaxInfoComponent } from "../../settings/tax-info.component"; + +import { DeleteOrganizationComponent } from "./delete-organization.component"; + +@Component({ + selector: "app-org-account", + templateUrl: "account.component.html", +}) +export class AccountComponent { + @ViewChild("deleteOrganizationTemplate", { read: ViewContainerRef, static: true }) + deleteModalRef: ViewContainerRef; + @ViewChild("purgeOrganizationTemplate", { read: ViewContainerRef, static: true }) + purgeModalRef: ViewContainerRef; + @ViewChild("apiKeyTemplate", { read: ViewContainerRef, static: true }) + apiKeyModalRef: ViewContainerRef; + @ViewChild("rotateApiKeyTemplate", { read: ViewContainerRef, static: true }) + rotateApiKeyModalRef: ViewContainerRef; + @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent; + + selfHosted = false; + canManageBilling = true; + loading = true; + canUseApi = false; + org: OrganizationResponse; + formPromise: Promise; + taxFormPromise: Promise; + + private organizationId: string; + + constructor( + private modalService: ModalService, + private apiService: ApiService, + private i18nService: I18nService, + private route: ActivatedRoute, + private syncService: SyncService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private logService: LogService, + private router: Router, + private organizationService: OrganizationService + ) {} + + async ngOnInit() { + this.selfHosted = this.platformUtilsService.isSelfHost(); + + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + this.canManageBilling = ( + await this.organizationService.get(this.organizationId) + ).canManageBilling; + try { + this.org = await this.apiService.getOrganization(this.organizationId); + this.canUseApi = this.org.useApi; + } catch (e) { + this.logService.error(e); + } + }); + this.loading = false; + } + + async submit() { + try { + const request = new OrganizationUpdateRequest(); + request.name = this.org.name; + request.businessName = this.org.businessName; + request.billingEmail = this.org.billingEmail; + request.identifier = this.org.identifier; + + // Backfill pub/priv key if necessary + if (!this.org.hasPublicAndPrivateKeys) { + const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId); + const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey); + request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); + } + + this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => { + return this.syncService.fullSync(true); + }); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("organizationUpdated") + ); + } catch (e) { + this.logService.error(e); + } + } + + async submitTaxInfo() { + this.taxFormPromise = this.taxInfo.submitTaxInfo(); + await this.taxFormPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("taxInfoUpdated")); + } + + async deleteOrganization() { + await this.modalService.openViewRef( + DeleteOrganizationComponent, + this.deleteModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.onSuccess.subscribe(() => { + this.router.navigate(["/"]); + }); + } + ); + } + + async purgeVault() { + await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef, (comp) => { + comp.organizationId = this.organizationId; + }); + } + + async viewApiKey() { + await this.modalService.openViewRef(ApiKeyComponent, this.apiKeyModalRef, (comp) => { + comp.keyType = "organization"; + comp.entityId = this.organizationId; + comp.postKey = this.apiService.postOrganizationApiKey.bind(this.apiService); + comp.scope = "api.organization"; + comp.grantType = "client_credentials"; + comp.apiKeyTitle = "apiKey"; + comp.apiKeyWarning = "apiKeyWarning"; + comp.apiKeyDescription = "apiKeyDesc"; + }); + } + + async rotateApiKey() { + await this.modalService.openViewRef(ApiKeyComponent, this.rotateApiKeyModalRef, (comp) => { + comp.keyType = "organization"; + comp.isRotation = true; + comp.entityId = this.organizationId; + comp.postKey = this.apiService.postOrganizationRotateApiKey.bind(this.apiService); + comp.scope = "api.organization"; + comp.grantType = "client_credentials"; + comp.apiKeyTitle = "apiKey"; + comp.apiKeyWarning = "apiKeyWarning"; + comp.apiKeyDescription = "apiKeyRotateDesc"; + }); + } +} diff --git a/apps/web/src/app/organizations/settings/adjust-subscription.component.html b/apps/web/src/app/organizations/settings/adjust-subscription.component.html new file mode 100644 index 0000000000..bbe1e3cb51 --- /dev/null +++ b/apps/web/src/app/organizations/settings/adjust-subscription.component.html @@ -0,0 +1,65 @@ +
+
+
+
+ + + + {{ "total" | i18n }}: {{ newSeatCount || 0 }} × + {{ seatPrice | currency: "$" }} = {{ adjustedSeatTotal | currency: "$" }} / + {{ interval | i18n }} + +
+
+
+
+
+ + +
+ {{ "limitSubscriptionDesc" | i18n }} +
+
+
+
+ + + + {{ "maxSeatCost" | i18n }}: {{ newMaxSeats || 0 }} × + {{ seatPrice | currency: "$" }} = {{ maxSeatTotal | currency: "$" }} / + {{ interval | i18n }} + +
+
+ +
+
+ diff --git a/apps/web/src/app/organizations/settings/adjust-subscription.component.ts b/apps/web/src/app/organizations/settings/adjust-subscription.component.ts new file mode 100644 index 0000000000..bbbeff7906 --- /dev/null +++ b/apps/web/src/app/organizations/settings/adjust-subscription.component.ts @@ -0,0 +1,74 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +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 { OrganizationSubscriptionUpdateRequest } from "jslib-common/models/request/organizationSubscriptionUpdateRequest"; + +@Component({ + selector: "app-adjust-subscription", + templateUrl: "adjust-subscription.component.html", +}) +export class AdjustSubscription { + @Input() organizationId: string; + @Input() maxAutoscaleSeats: number; + @Input() currentSeatCount: number; + @Input() seatPrice = 0; + @Input() interval = "year"; + @Output() onAdjusted = new EventEmitter(); + + formPromise: Promise; + limitSubscription: boolean; + newSeatCount: number; + newMaxSeats: number; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + ngOnInit() { + this.limitSubscription = this.maxAutoscaleSeats != null; + this.newSeatCount = this.currentSeatCount; + this.newMaxSeats = this.maxAutoscaleSeats; + } + + async submit() { + try { + const seatAdjustment = this.newSeatCount - this.currentSeatCount; + const request = new OrganizationSubscriptionUpdateRequest(seatAdjustment, this.newMaxSeats); + this.formPromise = this.apiService.postOrganizationUpdateSubscription( + this.organizationId, + request + ); + + await this.formPromise; + + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("subscriptionUpdated") + ); + } catch (e) { + this.logService.error(e); + } + this.onAdjusted.emit(); + } + + limitSubscriptionChanged() { + if (!this.limitSubscription) { + this.newMaxSeats = null; + } + } + + get adjustedSeatTotal(): number { + return this.newSeatCount * this.seatPrice; + } + + get maxSeatTotal(): number { + return this.newMaxSeats * this.seatPrice; + } +} diff --git a/apps/web/src/app/organizations/settings/billing-sync-api-key.component.html b/apps/web/src/app/organizations/settings/billing-sync-api-key.component.html new file mode 100644 index 0000000000..2319fe6302 --- /dev/null +++ b/apps/web/src/app/organizations/settings/billing-sync-api-key.component.html @@ -0,0 +1,117 @@ + diff --git a/apps/web/src/app/organizations/settings/billing-sync-api-key.component.ts b/apps/web/src/app/organizations/settings/billing-sync-api-key.component.ts new file mode 100644 index 0000000000..47e70c7563 --- /dev/null +++ b/apps/web/src/app/organizations/settings/billing-sync-api-key.component.ts @@ -0,0 +1,108 @@ +import { Component } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { OrganizationApiKeyType } from "jslib-common/enums/organizationApiKeyType"; +import { OrganizationApiKeyRequest } from "jslib-common/models/request/organizationApiKeyRequest"; +import { ApiKeyResponse } from "jslib-common/models/response/apiKeyResponse"; +import { Verification } from "jslib-common/types/verification"; + +@Component({ + selector: "app-billing-sync-api-key", + templateUrl: "billing-sync-api-key.component.html", +}) +export class BillingSyncApiKeyComponent { + organizationId: string; + hasBillingToken: boolean; + + showRotateScreen: boolean; + masterPassword: Verification; + formPromise: Promise; + clientSecret?: string; + keyRevisionDate?: Date; + lastSyncDate?: Date = null; + + constructor( + private userVerificationService: UserVerificationService, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService + ) {} + + copy() { + this.platformUtilsService.copyToClipboard(this.clientSecret); + } + + async submit() { + if (this.showRotateScreen) { + this.formPromise = this.userVerificationService + .buildRequest(this.masterPassword, OrganizationApiKeyRequest) + .then((request) => { + request.type = OrganizationApiKeyType.BillingSync; + return this.apiService.postOrganizationRotateApiKey(this.organizationId, request); + }); + const response = await this.formPromise; + await this.load(response); + this.showRotateScreen = false; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("billingSyncApiKeyRotated") + ); + } else { + this.formPromise = this.userVerificationService + .buildRequest(this.masterPassword, OrganizationApiKeyRequest) + .then((request) => { + request.type = OrganizationApiKeyType.BillingSync; + return this.apiService.postOrganizationApiKey(this.organizationId, request); + }); + const response = await this.formPromise; + await this.load(response); + } + } + + async load(response: ApiKeyResponse) { + this.clientSecret = response.apiKey; + this.keyRevisionDate = response.revisionDate; + this.hasBillingToken = true; + const syncStatus = await this.apiService.getSponsorshipSyncStatus(this.organizationId); + this.lastSyncDate = syncStatus.lastSyncDate; + } + + cancelRotate() { + this.showRotateScreen = false; + } + + rotateToken() { + this.showRotateScreen = true; + } + + private dayDiff(date1: Date, date2: Date): number { + const diffTime = Math.abs(date2.getTime() - date1.getTime()); + return Math.round(diffTime / (1000 * 60 * 60 * 24)); + } + + get submitButtonText(): string { + if (this.showRotateScreen) { + return this.i18nService.t("rotateToken"); + } + + return this.i18nService.t(this.hasBillingToken ? "continue" : "generateToken"); + } + + get showLastSyncText(): boolean { + // If the keyRevisionDate is later than the lastSyncDate we need to show + // a warning that they need to put the billing sync key in their self hosted install + return this.lastSyncDate && this.lastSyncDate > this.keyRevisionDate; + } + + get showAwaitingSyncText(): boolean { + return this.lastSyncDate && this.lastSyncDate <= this.keyRevisionDate; + } + + get daysBetween(): number { + return this.dayDiff(this.keyRevisionDate, new Date()); + } +} diff --git a/apps/web/src/app/organizations/settings/change-plan.component.html b/apps/web/src/app/organizations/settings/change-plan.component.html new file mode 100644 index 0000000000..0861c51643 --- /dev/null +++ b/apps/web/src/app/organizations/settings/change-plan.component.html @@ -0,0 +1,18 @@ +
+
+ +

{{ "changeBillingPlan" | i18n }}

+

{{ "changeBillingPlanUpgrade" | i18n }}

+ + +
+
diff --git a/apps/web/src/app/organizations/settings/change-plan.component.ts b/apps/web/src/app/organizations/settings/change-plan.component.ts new file mode 100644 index 0000000000..1ed62739b2 --- /dev/null +++ b/apps/web/src/app/organizations/settings/change-plan.component.ts @@ -0,0 +1,33 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlanType } from "jslib-common/enums/planType"; +import { ProductType } from "jslib-common/enums/productType"; + +@Component({ + selector: "app-change-plan", + templateUrl: "change-plan.component.html", +}) +export class ChangePlanComponent { + @Input() organizationId: string; + @Output() onChanged = new EventEmitter(); + @Output() onCanceled = new EventEmitter(); + + formPromise: Promise; + defaultUpgradePlan: PlanType = PlanType.FamiliesAnnually; + defaultUpgradeProduct: ProductType = ProductType.Families; + + constructor(private logService: LogService) {} + + async submit() { + try { + this.onChanged.emit(); + } catch (e) { + this.logService.error(e); + } + } + + cancel() { + this.onCanceled.emit(); + } +} diff --git a/apps/web/src/app/organizations/settings/delete-organization.component.html b/apps/web/src/app/organizations/settings/delete-organization.component.html new file mode 100644 index 0000000000..80d8ae0f79 --- /dev/null +++ b/apps/web/src/app/organizations/settings/delete-organization.component.html @@ -0,0 +1,61 @@ + diff --git a/apps/web/src/app/organizations/settings/delete-organization.component.ts b/apps/web/src/app/organizations/settings/delete-organization.component.ts new file mode 100644 index 0000000000..799d916a8b --- /dev/null +++ b/apps/web/src/app/organizations/settings/delete-organization.component.ts @@ -0,0 +1,131 @@ +import { Component, EventEmitter, OnInit, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CipherService } from "jslib-common/abstractions/cipher.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"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { Utils } from "jslib-common/misc/utils"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { Verification } from "jslib-common/types/verification"; + +class CountBasedLocalizationKey { + singular: string; + plural: string; + + getKey(count: number) { + return count == 1 ? this.singular : this.plural; + } + + constructor(singular: string, plural: string) { + this.singular = singular; + this.plural = plural; + } +} + +class OrganizationContentSummaryItem { + count: number; + get localizationKey(): string { + return this.localizationKeyOptions.getKey(this.count); + } + private localizationKeyOptions: CountBasedLocalizationKey; + constructor(count: number, localizationKeyOptions: CountBasedLocalizationKey) { + this.count = count; + this.localizationKeyOptions = localizationKeyOptions; + } +} + +class OrganizationContentSummary { + totalItemCount = 0; + itemCountByType: OrganizationContentSummaryItem[] = []; +} + +@Component({ + selector: "app-delete-organization", + templateUrl: "delete-organization.component.html", +}) +export class DeleteOrganizationComponent implements OnInit { + organizationId: string; + loaded: boolean; + deleteOrganizationRequestType: "InvalidFamiliesForEnterprise" | "RegularDelete" = "RegularDelete"; + organizationName: string; + organizationContentSummary: OrganizationContentSummary = new OrganizationContentSummary(); + @Output() onSuccess: EventEmitter = new EventEmitter(); + + masterPassword: Verification; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private userVerificationService: UserVerificationService, + private logService: LogService, + private cipherService: CipherService, + private organizationService: OrganizationService + ) {} + + async ngOnInit(): Promise { + await this.load(); + } + + async submit() { + try { + this.formPromise = this.userVerificationService + .buildRequest(this.masterPassword) + .then((request) => this.apiService.deleteOrganization(this.organizationId, request)); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + this.i18nService.t("organizationDeleted"), + this.i18nService.t("organizationDeletedDesc") + ); + this.onSuccess.emit(); + } catch (e) { + this.logService.error(e); + } + } + + private async load() { + this.organizationName = (await this.organizationService.get(this.organizationId)).name; + this.organizationContentSummary = await this.buildOrganizationContentSummary(); + this.loaded = true; + } + + private async buildOrganizationContentSummary(): Promise { + const organizationContentSummary = new OrganizationContentSummary(); + const organizationItems = ( + await this.cipherService.getAllFromApiForOrganization(this.organizationId) + ).filter((item) => item.deletedDate == null); + + if (organizationItems.length < 1) { + return organizationContentSummary; + } + + organizationContentSummary.totalItemCount = organizationItems.length; + for (const cipherType of Utils.iterateEnum(CipherType)) { + const count = this.getOrganizationItemCountByType(organizationItems, cipherType); + if (count > 0) { + organizationContentSummary.itemCountByType.push( + new OrganizationContentSummaryItem( + count, + this.getOrganizationItemLocalizationKeysByType(CipherType[cipherType]) + ) + ); + } + } + + return organizationContentSummary; + } + + private getOrganizationItemCountByType(items: CipherView[], type: CipherType) { + return items.filter((item) => item.type == type).length; + } + + private getOrganizationItemLocalizationKeysByType(type: string): CountBasedLocalizationKey { + return new CountBasedLocalizationKey(`type${type}`, `type${type}Plural`); + } +} diff --git a/apps/web/src/app/organizations/settings/download-license.component.html b/apps/web/src/app/organizations/settings/download-license.component.html new file mode 100644 index 0000000000..c082a3ab5e --- /dev/null +++ b/apps/web/src/app/organizations/settings/download-license.component.html @@ -0,0 +1,39 @@ +
+
+ +

{{ "downloadLicense" | i18n }}

+
+
+
+ + + + +
+ +
+
+ + +
+
diff --git a/apps/web/src/app/organizations/settings/download-license.component.ts b/apps/web/src/app/organizations/settings/download-license.component.ts new file mode 100644 index 0000000000..fdc79a648f --- /dev/null +++ b/apps/web/src/app/organizations/settings/download-license.component.ts @@ -0,0 +1,52 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-download-license", + templateUrl: "download-license.component.html", +}) +export class DownloadLicenseComponent { + @Input() organizationId: string; + @Output() onDownloaded = new EventEmitter(); + @Output() onCanceled = new EventEmitter(); + + installationId: string; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async submit() { + if (this.installationId == null || this.installationId === "") { + return; + } + + try { + this.formPromise = this.apiService.getOrganizationLicense( + this.organizationId, + this.installationId + ); + const license = await this.formPromise; + const licenseString = JSON.stringify(license, null, 2); + this.platformUtilsService.saveFile( + window, + licenseString, + null, + "bitwarden_organization_license.json" + ); + this.onDownloaded.emit(); + } catch (e) { + this.logService.error(e); + } + } + + cancel() { + this.onCanceled.emit(); + } +} diff --git a/apps/web/src/app/organizations/settings/image-subscription-hidden.component.svg b/apps/web/src/app/organizations/settings/image-subscription-hidden.component.svg new file mode 100644 index 0000000000..a45a3decce --- /dev/null +++ b/apps/web/src/app/organizations/settings/image-subscription-hidden.component.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/src/app/organizations/settings/image-subscription-hidden.component.ts b/apps/web/src/app/organizations/settings/image-subscription-hidden.component.ts new file mode 100644 index 0000000000..ff2a639e39 --- /dev/null +++ b/apps/web/src/app/organizations/settings/image-subscription-hidden.component.ts @@ -0,0 +1,8 @@ +import { Component } from "@angular/core"; + +// Component is used so that the SVG can embed CSS color variables +@Component({ + selector: "app-image-org-subscription-hidden", + templateUrl: "image-subscription-hidden.component.svg", +}) +export class ImageSubscriptionHiddenComponent {} diff --git a/apps/web/src/app/organizations/settings/organization-billing.component.html b/apps/web/src/app/organizations/settings/organization-billing.component.html new file mode 100644 index 0000000000..ce13772296 --- /dev/null +++ b/apps/web/src/app/organizations/settings/organization-billing.component.html @@ -0,0 +1,212 @@ + + + + {{ "loading" | i18n }} + + +

{{ (isCreditBalance ? "accountCredit" : "accountBalance") | i18n }}

+

+ {{ creditOrBalance | currency: "$" }} +

+

{{ "creditAppliedDesc" | i18n }}

+ + + +

{{ "paymentMethod" | i18n }}

+

{{ "noPaymentMethod" | i18n }}

+ + +

{{ "verifyBankAccountDesc" | i18n }} {{ "verifyBankAccountFailureWarning" | i18n }}

+
+ +
+
+
$0.
+
+ +
+ +
+
+
$0.
+
+ +
+ +
+
+

+ + {{ "inAppPurchase" | i18n }} + {{ paymentSource.description }} +

+
+ + + +

{{ "invoices" | i18n }}

+

{{ "noInvoices" | i18n }}

+ + + + + + + + + +
{{ i.date | date: "mediumDate" }} + + + + {{ "invoiceNumber" | i18n: i.number }} + {{ i.amount | currency: "$" }} + + + {{ "paid" | i18n }} + + + + {{ "unpaid" | i18n }} + +
+

{{ "transactions" | i18n }}

+

{{ "noTransactions" | i18n }}

+ + + + + + + + + +
{{ t.createdDate | date: "mediumDate" }} + + {{ "chargeNoun" | i18n }} + + {{ "refundNoun" | i18n }} + + + {{ t.details }} + + {{ t.amount | currency: "$" }} +
+ * {{ "chargesStatement" | i18n: "BITWARDEN" }} +
diff --git a/apps/web/src/app/organizations/settings/organization-billing.component.ts b/apps/web/src/app/organizations/settings/organization-billing.component.ts new file mode 100644 index 0000000000..49ed6a0e69 --- /dev/null +++ b/apps/web/src/app/organizations/settings/organization-billing.component.ts @@ -0,0 +1,154 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +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 { PaymentMethodType } from "jslib-common/enums/paymentMethodType"; +import { TransactionType } from "jslib-common/enums/transactionType"; +import { VerifyBankRequest } from "jslib-common/models/request/verifyBankRequest"; +import { BillingResponse } from "jslib-common/models/response/billingResponse"; + +@Component({ + selector: "app-org-billing", + templateUrl: "./organization-billing.component.html", +}) +export class OrganizationBillingComponent implements OnInit { + loading = false; + firstLoaded = false; + showAdjustPayment = false; + showAddCredit = false; + billing: BillingResponse; + paymentMethodType = PaymentMethodType; + transactionType = TransactionType; + organizationId: string; + verifyAmount1: number; + verifyAmount2: number; + + verifyBankPromise: Promise; + + // TODO - Make sure to properly split out the billing/invoice and payment method/account during org admin refresh + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private route: ActivatedRoute, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + await this.load(); + this.firstLoaded = true; + }); + } + + async load() { + if (this.loading) { + return; + } + this.loading = true; + if (this.organizationId != null) { + this.billing = await this.apiService.getOrganizationBilling(this.organizationId); + } + this.loading = false; + } + + async verifyBank() { + if (this.loading) { + return; + } + + try { + const request = new VerifyBankRequest(); + request.amount1 = this.verifyAmount1; + request.amount2 = this.verifyAmount2; + this.verifyBankPromise = this.apiService.postOrganizationVerifyBank( + this.organizationId, + request + ); + await this.verifyBankPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("verifiedBankAccount") + ); + this.load(); + } catch (e) { + this.logService.error(e); + } + } + + addCredit() { + if (this.paymentSourceInApp) { + this.platformUtilsService.showDialog( + this.i18nService.t("cannotPerformInAppPurchase"), + this.i18nService.t("addCredit"), + null, + null, + "warning" + ); + return; + } + this.showAddCredit = true; + } + + closeAddCredit(load: boolean) { + this.showAddCredit = false; + if (load) { + this.load(); + } + } + + changePayment() { + if (this.paymentSourceInApp) { + this.platformUtilsService.showDialog( + this.i18nService.t("cannotPerformInAppPurchase"), + this.i18nService.t("changePaymentMethod"), + null, + null, + "warning" + ); + return; + } + this.showAdjustPayment = true; + } + + closePayment(load: boolean) { + this.showAdjustPayment = false; + if (load) { + this.load(); + } + } + + get isCreditBalance() { + return this.billing == null || this.billing.balance <= 0; + } + + get creditOrBalance() { + return Math.abs(this.billing != null ? this.billing.balance : 0); + } + + get paymentSource() { + return this.billing != null ? this.billing.paymentSource : null; + } + + get paymentSourceInApp() { + return ( + this.paymentSource != null && + (this.paymentSource.type === PaymentMethodType.AppleInApp || + this.paymentSource.type === PaymentMethodType.GoogleInApp) + ); + } + + get invoices() { + return this.billing != null ? this.billing.invoices : null; + } + + get transactions() { + return this.billing != null ? this.billing.transactions : null; + } +} diff --git a/apps/web/src/app/organizations/settings/organization-subscription.component.html b/apps/web/src/app/organizations/settings/organization-subscription.component.html new file mode 100644 index 0000000000..60e1341475 --- /dev/null +++ b/apps/web/src/app/organizations/settings/organization-subscription.component.html @@ -0,0 +1,313 @@ + + + + {{ "loading" | i18n }} + + + +
+ +

{{ "billingManagedByProvider" | i18n: this.userOrg.providerName }}

+

{{ "billingContactProviderForAssistance" | i18n }}

+
+
+ + + + {{ "subscriptionCanceled" | i18n }} + +

{{ "subscriptionPendingCanceled" | i18n }}

+ +
+ +
+
+
+
{{ "billingPlan" | i18n }}
+
{{ sub.plan.name }}
+ +
{{ "status" | i18n }}
+
+ {{ + isSponsoredSubscription ? "sponsored" : subscription.status || "-" + }} + {{ + "pendingCancellation" | i18n + }} +
+
{{ "nextCharge" | i18n }}
+
+ {{ + nextInvoice + ? (nextInvoice.date | date: "mediumDate") + + ", " + + (nextInvoice.amount | currency: "$") + : "-" + }} +
+
+
+
+
+ {{ "details" | i18n }} + + + + + + + +
+ {{ i.name }} {{ i.quantity > 1 ? "×" + i.quantity : "" }} @ + {{ i.amount | currency: "$" }} + {{ i.quantity * i.amount | currency: "$" }} /{{ i.interval | i18n }}
+
+ +
+
+
{{ "provider" | i18n }}
+
{{ "yourProviderIs" | i18n: userOrg.providerName }}
+
+
+
+
+ + + + +

{{ "manageSubscription" | i18n }}

+

{{ subscriptionDesc }}

+ +
+ + +
+
+ +

{{ "storage" | i18n }}

+

{{ "subscriptionStorage" | i18n: sub.maxStorageGb || 0:sub.storageName || "0 MB" }}

+
+
+ {{ storagePercentage / 100 | percent }} +
+
+ +
+
+ + +
+ +
+
+ +

{{ "selfHostingTitle" | i18n }}

+

+ {{ "selfHostingEnterpriseOrganizationSectionCopy" | i18n }} +

+
+ + +
+
+ +
+

{{ "additionalOptions" | i18n }}

+

+ {{ "additionalOptionsDesc" | i18n }} +

+
+ +
+
+ +
+
{{ "billingPlan" | i18n }}
+
{{ sub.plan.name }}
+
{{ "expiration" | i18n }}
+
+ {{ sub.expiration | date: "mediumDate" }} + + + {{ "licenseIsExpired" | i18n }} + +
+
{{ "neverExpires" | i18n }}
+
+
+ + + {{ "manageSubscription" | i18n }} + +
+
+
+ +

{{ "updateLicense" | i18n }}

+ +
+
+
+

+ {{ "billingSync" | i18n }} +

+

+ {{ "billingSyncDesc" | i18n }} +

+ + + {{ "lastSync" | i18n }}: + + {{ userOrg.familySponsorshipLastSyncDate | date: "medium" }} + + + {{ "never" | i18n | lowercase }} + + +
+
+
+ + diff --git a/apps/web/src/app/organizations/settings/organization-subscription.component.ts b/apps/web/src/app/organizations/settings/organization-subscription.component.ts new file mode 100644 index 0000000000..e829e82081 --- /dev/null +++ b/apps/web/src/app/organizations/settings/organization-subscription.component.ts @@ -0,0 +1,380 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ModalRef } from "jslib-angular/components/modal/modal.ref"; +import { ModalService } from "jslib-angular/services/modal.service"; +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 { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { OrganizationApiKeyType } from "jslib-common/enums/organizationApiKeyType"; +import { OrganizationConnectionType } from "jslib-common/enums/organizationConnectionType"; +import { PlanType } from "jslib-common/enums/planType"; +import { BillingSyncConfigApi } from "jslib-common/models/api/billingSyncConfigApi"; +import { Organization } from "jslib-common/models/domain/organization"; +import { OrganizationConnectionResponse } from "jslib-common/models/response/organizationConnectionResponse"; +import { OrganizationSubscriptionResponse } from "jslib-common/models/response/organizationSubscriptionResponse"; + +import { BillingSyncKeyComponent } from "src/app/settings/billing-sync-key.component"; + +import { BillingSyncApiKeyComponent } from "./billing-sync-api-key.component"; + +@Component({ + selector: "app-org-subscription", + templateUrl: "organization-subscription.component.html", +}) +export class OrganizationSubscriptionComponent implements OnInit { + @ViewChild("setupBillingSyncTemplate", { read: ViewContainerRef, static: true }) + setupBillingSyncModalRef: ViewContainerRef; + + loading = false; + firstLoaded = false; + organizationId: string; + adjustSeatsAdd = true; + showAdjustSeats = false; + showAdjustSeatAutoscale = false; + adjustStorageAdd = true; + showAdjustStorage = false; + showUpdateLicense = false; + showBillingSyncKey = false; + showDownloadLicense = false; + showChangePlan = false; + sub: OrganizationSubscriptionResponse; + selfHosted = false; + hasBillingSyncToken: boolean; + + userOrg: Organization; + existingBillingSyncConnection: OrganizationConnectionResponse; + + removeSponsorshipPromise: Promise; + cancelPromise: Promise; + reinstatePromise: Promise; + + @ViewChild("rotateBillingSyncKeyTemplate", { read: ViewContainerRef, static: true }) + billingSyncKeyViewContainerRef: ViewContainerRef; + billingSyncKeyRef: [ModalRef, BillingSyncKeyComponent]; + + constructor( + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private messagingService: MessagingService, + private route: ActivatedRoute, + private organizationService: OrganizationService, + private logService: LogService, + private modalService: ModalService + ) { + this.selfHosted = platformUtilsService.isSelfHost(); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + await this.load(); + this.firstLoaded = true; + }); + } + + async load() { + if (this.loading) { + return; + } + + this.loading = true; + this.userOrg = await this.organizationService.get(this.organizationId); + if (this.userOrg.canManageBilling) { + this.sub = await this.apiService.getOrganizationSubscription(this.organizationId); + } + const apiKeyResponse = await this.apiService.getOrganizationApiKeyInformation( + this.organizationId + ); + this.hasBillingSyncToken = apiKeyResponse.data.some( + (i) => i.keyType === OrganizationApiKeyType.BillingSync + ); + + if (this.selfHosted) { + this.showBillingSyncKey = await this.apiService.getCloudCommunicationsEnabled(); + } + + if (this.showBillingSyncKey) { + this.existingBillingSyncConnection = await this.apiService.getOrganizationConnection( + this.organizationId, + OrganizationConnectionType.CloudBillingSync, + BillingSyncConfigApi + ); + } + + this.loading = false; + } + + async reinstate() { + if (this.loading) { + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("reinstateConfirmation"), + this.i18nService.t("reinstateSubscription"), + this.i18nService.t("yes"), + this.i18nService.t("cancel") + ); + if (!confirmed) { + return; + } + + try { + this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId); + await this.reinstatePromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("reinstated")); + this.load(); + } catch (e) { + this.logService.error(e); + } + } + + async cancel() { + if (this.loading) { + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("cancelConfirmation"), + this.i18nService.t("cancelSubscription"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return; + } + + try { + this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId); + await this.cancelPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("canceledSubscription") + ); + this.load(); + } catch (e) { + this.logService.error(e); + } + } + + async changePlan() { + this.showChangePlan = !this.showChangePlan; + } + + closeChangePlan(changed: boolean) { + this.showChangePlan = false; + } + + downloadLicense() { + this.showDownloadLicense = !this.showDownloadLicense; + } + + async manageBillingSync() { + const [ref] = await this.modalService.openViewRef( + BillingSyncApiKeyComponent, + this.setupBillingSyncModalRef, + (comp) => { + comp.organizationId = this.organizationId; + comp.hasBillingToken = this.hasBillingSyncToken; + } + ); + ref.onClosed.subscribe(async () => { + await this.load(); + }); + } + + closeDownloadLicense() { + this.showDownloadLicense = false; + } + + updateLicense() { + if (this.loading) { + return; + } + this.showUpdateLicense = true; + } + + closeUpdateLicense(updated: boolean) { + this.showUpdateLicense = false; + if (updated) { + this.load(); + this.messagingService.send("updatedOrgLicense"); + } + } + + subscriptionAdjusted() { + this.load(); + } + + adjustStorage(add: boolean) { + this.adjustStorageAdd = add; + this.showAdjustStorage = true; + } + + closeStorage(load: boolean) { + this.showAdjustStorage = false; + if (load) { + this.load(); + } + } + + async removeSponsorship() { + const isConfirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("removeSponsorshipConfirmation"), + this.i18nService.t("removeSponsorship"), + this.i18nService.t("remove"), + this.i18nService.t("cancel"), + "warning" + ); + + if (!isConfirmed) { + return; + } + + try { + this.removeSponsorshipPromise = this.apiService.deleteRemoveSponsorship(this.organizationId); + await this.removeSponsorshipPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("removeSponsorshipSuccess") + ); + await this.load(); + } catch (e) { + this.logService.error(e); + } + } + + async manageBillingSyncSelfHosted() { + this.billingSyncKeyRef = await this.modalService.openViewRef( + BillingSyncKeyComponent, + this.billingSyncKeyViewContainerRef, + (comp) => { + comp.entityId = this.organizationId; + comp.existingConnectionId = this.existingBillingSyncConnection?.id; + comp.billingSyncKey = this.existingBillingSyncConnection?.config?.billingSyncKey; + comp.setParentConnection = ( + connection: OrganizationConnectionResponse + ) => { + this.existingBillingSyncConnection = connection; + this.billingSyncKeyRef[0].close(); + }; + } + ); + } + + get isExpired() { + return ( + this.sub != null && this.sub.expiration != null && new Date(this.sub.expiration) < new Date() + ); + } + + get subscriptionMarkedForCancel() { + return ( + this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate + ); + } + + get subscription() { + return this.sub != null ? this.sub.subscription : null; + } + + get nextInvoice() { + return this.sub != null ? this.sub.upcomingInvoice : null; + } + + get storagePercentage() { + return this.sub != null && this.sub.maxStorageGb + ? +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) + : 0; + } + + get storageProgressWidth() { + return this.storagePercentage < 5 ? 5 : 0; + } + + get billingInterval() { + const monthly = !this.sub.plan.isAnnual; + return monthly ? "month" : "year"; + } + + get storageGbPrice() { + return this.sub.plan.additionalStoragePricePerGb; + } + + get seatPrice() { + return this.sub.plan.seatPrice; + } + + get seats() { + return this.sub.seats; + } + + get maxAutoscaleSeats() { + return this.sub.maxAutoscaleSeats; + } + + get canAdjustSeats() { + return this.sub.plan.hasAdditionalSeatsOption; + } + + get isSponsoredSubscription(): boolean { + return this.sub.subscription?.items.some((i) => i.sponsoredSubscriptionItem); + } + + get canDownloadLicense() { + return ( + (this.sub.planType !== PlanType.Free && this.subscription == null) || + (this.subscription != null && !this.subscription.cancelled) + ); + } + + get canManageBillingSync() { + return ( + !this.selfHosted && + (this.sub.planType === PlanType.EnterpriseAnnually || + this.sub.planType === PlanType.EnterpriseMonthly || + this.sub.planType === PlanType.EnterpriseAnnually2019 || + this.sub.planType === PlanType.EnterpriseMonthly2019) + ); + } + + get subscriptionDesc() { + if (this.sub.planType === PlanType.Free) { + return this.i18nService.t("subscriptionFreePlan", this.sub.seats.toString()); + } else if ( + this.sub.planType === PlanType.FamiliesAnnually || + this.sub.planType === PlanType.FamiliesAnnually2019 + ) { + if (this.isSponsoredSubscription) { + return this.i18nService.t("subscriptionSponsoredFamiliesPlan", this.sub.seats.toString()); + } else { + return this.i18nService.t("subscriptionFamiliesPlan", this.sub.seats.toString()); + } + } else if (this.sub.maxAutoscaleSeats === this.sub.seats && this.sub.seats != null) { + return this.i18nService.t("subscriptionMaxReached", this.sub.seats.toString()); + } else if (this.sub.maxAutoscaleSeats == null) { + return this.i18nService.t("subscriptionUserSeatsUnlimitedAutoscale"); + } else { + return this.i18nService.t( + "subscriptionUserSeatsLimitedAutoscale", + this.sub.maxAutoscaleSeats.toString() + ); + } + } + + get showChangePlanButton() { + return this.subscription == null && this.sub.planType === PlanType.Free && !this.showChangePlan; + } + + get billingSyncSetUp() { + return this.existingBillingSyncConnection?.id != null; + } +} diff --git a/apps/web/src/app/organizations/settings/settings.component.html b/apps/web/src/app/organizations/settings/settings.component.html new file mode 100644 index 0000000000..ad9824ef73 --- /dev/null +++ b/apps/web/src/app/organizations/settings/settings.component.html @@ -0,0 +1,36 @@ + diff --git a/apps/web/src/app/organizations/settings/settings.component.ts b/apps/web/src/app/organizations/settings/settings.component.ts new file mode 100644 index 0000000000..d75790944d --- /dev/null +++ b/apps/web/src/app/organizations/settings/settings.component.ts @@ -0,0 +1,28 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-org-settings", + templateUrl: "settings.component.html", +}) +export class SettingsComponent { + access2fa = false; + showBilling: boolean; + + constructor( + private route: ActivatedRoute, + private organizationService: OrganizationService, + private platformUtilsService: PlatformUtilsService + ) {} + + ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + const organization = await this.organizationService.get(params.organizationId); + this.showBilling = !this.platformUtilsService.isSelfHost() && organization.canManageBilling; + this.access2fa = organization.use2fa; + }); + } +} diff --git a/apps/web/src/app/organizations/settings/two-factor-setup.component.ts b/apps/web/src/app/organizations/settings/two-factor-setup.component.ts new file mode 100644 index 0000000000..12675fcf52 --- /dev/null +++ b/apps/web/src/app/organizations/settings/two-factor-setup.component.ts @@ -0,0 +1,60 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; + +import { TwoFactorDuoComponent } from "../../settings/two-factor-duo.component"; +import { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from "../../settings/two-factor-setup.component"; + +@Component({ + selector: "app-two-factor-setup", + templateUrl: "../../settings/two-factor-setup.component.html", +}) +export class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent { + constructor( + apiService: ApiService, + modalService: ModalService, + messagingService: MessagingService, + policyService: PolicyService, + private route: ActivatedRoute, + stateService: StateService + ) { + super(apiService, modalService, messagingService, policyService, stateService); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + await super.ngOnInit(); + }); + } + + async manage(type: TwoFactorProviderType) { + switch (type) { + case TwoFactorProviderType.OrganizationDuo: { + const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent); + duoComp.type = TwoFactorProviderType.OrganizationDuo; + duoComp.organizationId = this.organizationId; + duoComp.onUpdated.subscribe((enabled: boolean) => { + this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo); + }); + break; + } + default: + break; + } + } + + protected getTwoFactorProviders() { + return this.apiService.getTwoFactorOrganizationProviders(this.organizationId); + } + + protected filterProvider(type: TwoFactorProviderType) { + return type !== TwoFactorProviderType.OrganizationDuo; + } +} diff --git a/apps/web/src/app/organizations/sponsorships/accept-family-sponsorship.component.html b/apps/web/src/app/organizations/sponsorships/accept-family-sponsorship.component.html new file mode 100644 index 0000000000..e7eb29a3ac --- /dev/null +++ b/apps/web/src/app/organizations/sponsorships/accept-family-sponsorship.component.html @@ -0,0 +1,13 @@ +
+
+ +

+ + {{ "loading" | i18n }} +

+
+
diff --git a/apps/web/src/app/organizations/sponsorships/accept-family-sponsorship.component.ts b/apps/web/src/app/organizations/sponsorships/accept-family-sponsorship.component.ts new file mode 100644 index 0000000000..acbcaa85e5 --- /dev/null +++ b/apps/web/src/app/organizations/sponsorships/accept-family-sponsorship.component.ts @@ -0,0 +1,26 @@ +import { Component } from "@angular/core"; + +import { BaseAcceptComponent } from "src/app/common/base.accept.component"; + +@Component({ + selector: "app-accept-family-sponsorship", + templateUrl: "accept-family-sponsorship.component.html", +}) +export class AcceptFamilySponsorshipComponent extends BaseAcceptComponent { + failedShortMessage = "inviteAcceptFailedShort"; + failedMessage = "inviteAcceptFailed"; + + requiredParameters = ["email", "token"]; + + async authedHandler(qParams: any) { + this.router.navigate(["/setup/families-for-enterprise"], { queryParams: qParams }); + } + + async unauthedHandler(qParams: any) { + if (!qParams.register) { + this.router.navigate(["/login"], { queryParams: { email: qParams.email } }); + } else { + this.router.navigate(["/register"], { queryParams: { email: qParams.email } }); + } + } +} diff --git a/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.html b/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.html new file mode 100644 index 0000000000..caa2260f52 --- /dev/null +++ b/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.html @@ -0,0 +1,51 @@ +
+ +
+ + {{ "loading" | i18n }} +
+
+ {{ "badToken" | i18n }} +
+
+

+ {{ "acceptBitwardenFamiliesHelp" | i18n }} +

+
+ + +
+
+ +
+
+ +
+
+
+ diff --git a/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts b/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts new file mode 100644 index 0000000000..ee99d19eed --- /dev/null +++ b/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts @@ -0,0 +1,147 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { ValidationService } from "jslib-angular/services/validation.service"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { PlanSponsorshipType } from "jslib-common/enums/planSponsorshipType"; +import { PlanType } from "jslib-common/enums/planType"; +import { ProductType } from "jslib-common/enums/productType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { OrganizationSponsorshipRedeemRequest } from "jslib-common/models/request/organization/organizationSponsorshipRedeemRequest"; + +import { DeleteOrganizationComponent } from "src/app/organizations/settings/delete-organization.component"; +import { OrganizationPlansComponent } from "src/app/settings/organization-plans.component"; + +@Component({ + selector: "families-for-enterprise-setup", + templateUrl: "families-for-enterprise-setup.component.html", +}) +export class FamiliesForEnterpriseSetupComponent implements OnInit { + @ViewChild(OrganizationPlansComponent, { static: false }) + set organizationPlansComponent(value: OrganizationPlansComponent) { + if (!value) { + return; + } + + value.plan = PlanType.FamiliesAnnually; + value.product = ProductType.Families; + value.acceptingSponsorship = true; + value.onSuccess.subscribe(this.onOrganizationCreateSuccess.bind(this)); + } + + @ViewChild("deleteOrganizationTemplate", { read: ViewContainerRef, static: true }) + deleteModalRef: ViewContainerRef; + + loading = true; + badToken = false; + formPromise: Promise; + + token: string; + existingFamilyOrganizations: Organization[]; + + showNewOrganization = false; + _organizationPlansComponent: OrganizationPlansComponent; + _selectedFamilyOrganizationId = ""; + + constructor( + private router: Router, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private route: ActivatedRoute, + private apiService: ApiService, + private syncService: SyncService, + private validationService: ValidationService, + private organizationService: OrganizationService, + private modalService: ModalService + ) {} + + async ngOnInit() { + document.body.classList.remove("layout_frontend"); + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + const error = qParams.token == null; + if (error) { + this.platformUtilsService.showToast( + "error", + null, + this.i18nService.t("sponsoredFamiliesAcceptFailed"), + { timeout: 10000 } + ); + this.router.navigate(["/"]); + return; + } + + this.token = qParams.token; + + await this.syncService.fullSync(true); + this.badToken = !(await this.apiService.postPreValidateSponsorshipToken(this.token)); + this.loading = false; + + this.existingFamilyOrganizations = (await this.organizationService.getAll()).filter( + (o) => o.planProductType === ProductType.Families + ); + + if (this.existingFamilyOrganizations.length === 0) { + this.selectedFamilyOrganizationId = "createNew"; + } + }); + } + + async submit() { + this.formPromise = this.doSubmit(this._selectedFamilyOrganizationId); + await this.formPromise; + this.formPromise = null; + } + + get selectedFamilyOrganizationId() { + return this._selectedFamilyOrganizationId; + } + + set selectedFamilyOrganizationId(value: string) { + this._selectedFamilyOrganizationId = value; + this.showNewOrganization = value === "createNew"; + } + + private async doSubmit(organizationId: string) { + try { + const request = new OrganizationSponsorshipRedeemRequest(); + request.planSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise; + request.sponsoredOrganizationId = organizationId; + + await this.apiService.postRedeemSponsorship(this.token, request); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("sponsoredFamiliesOfferRedeemed") + ); + await this.syncService.fullSync(true); + + this.router.navigate(["/"]); + } catch (e) { + if (this.showNewOrganization) { + await this.modalService.openViewRef( + DeleteOrganizationComponent, + this.deleteModalRef, + (comp) => { + comp.organizationId = organizationId; + comp.deleteOrganizationRequestType = "InvalidFamiliesForEnterprise"; + comp.onSuccess.subscribe(() => { + this.router.navigate(["/"]); + }); + } + ); + } + this.validationService.showError(this.i18nService.t("sponsorshipTokenHasExpired")); + } + } + + private async onOrganizationCreateSuccess(value: any) { + // Use newly created organization id + await this.doSubmit(value.organizationId); + } +} diff --git a/apps/web/src/app/organizations/tools/export.component.ts b/apps/web/src/app/organizations/tools/export.component.ts new file mode 100644 index 0000000000..0601d6b370 --- /dev/null +++ b/apps/web/src/app/organizations/tools/export.component.ts @@ -0,0 +1,69 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; +import { ActivatedRoute } from "@angular/router"; + +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"; + +import { ExportComponent as BaseExportComponent } from "../../tools/export.component"; + +@Component({ + selector: "app-org-export", + templateUrl: "../../tools/export.component.html", +}) +export class ExportComponent extends BaseExportComponent { + constructor( + cryptoService: CryptoService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + exportService: ExportService, + eventService: EventService, + private route: ActivatedRoute, + policyService: PolicyService, + logService: LogService, + userVerificationService: UserVerificationService, + formBuilder: FormBuilder + ) { + super( + cryptoService, + i18nService, + platformUtilsService, + exportService, + eventService, + policyService, + logService, + userVerificationService, + formBuilder + ); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + }); + await super.ngOnInit(); + } + + async checkExportDisabled() { + return; + } + + getExportData() { + return this.exportService.getOrganizationExport(this.organizationId, this.format); + } + + getFileName() { + return super.getFileName("org"); + } + + async collectEvent(): Promise { + // TODO + // await this.eventService.collect(EventType.Organization_ClientExportedVault); + } +} diff --git a/apps/web/src/app/organizations/tools/exposed-passwords-report.component.ts b/apps/web/src/app/organizations/tools/exposed-passwords-report.component.ts new file mode 100644 index 0000000000..e3b8f5521e --- /dev/null +++ b/apps/web/src/app/organizations/tools/exposed-passwords-report.component.ts @@ -0,0 +1,58 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { AuditService } from "jslib-common/abstractions/audit.service"; +import { CipherService } from "jslib-common/abstractions/cipher.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 { StateService } from "jslib-common/abstractions/state.service"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent } from "../../reports/exposed-passwords-report.component"; + +@Component({ + selector: "app-org-exposed-passwords-report", + templateUrl: "../../reports/exposed-passwords-report.component.html", +}) +export class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent { + manageableCiphers: Cipher[]; + + constructor( + cipherService: CipherService, + auditService: AuditService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + private organizationService: OrganizationService, + private route: ActivatedRoute, + passwordRepromptService: PasswordRepromptService + ) { + super( + cipherService, + auditService, + modalService, + messagingService, + stateService, + passwordRepromptService + ); + } + + ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organization = await this.organizationService.get(params.organizationId); + this.manageableCiphers = await this.cipherService.getAll(); + await this.checkAccess(); + }); + } + + getAllCiphers(): Promise { + return this.cipherService.getAllFromApiForOrganization(this.organization.id); + } + + canManageCipher(c: CipherView): boolean { + return this.manageableCiphers.some((x) => x.id === c.id); + } +} diff --git a/apps/web/src/app/organizations/tools/import.component.ts b/apps/web/src/app/organizations/tools/import.component.ts new file mode 100644 index 0000000000..6dce498808 --- /dev/null +++ b/apps/web/src/app/organizations/tools/import.component.ts @@ -0,0 +1,57 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { ImportService } from "jslib-common/abstractions/import.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"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; + +import { ImportComponent as BaseImportComponent } from "../../tools/import.component"; + +@Component({ + selector: "app-org-import", + templateUrl: "../../tools/import.component.html", +}) +export class ImportComponent extends BaseImportComponent { + organizationName: string; + + constructor( + i18nService: I18nService, + importService: ImportService, + router: Router, + private route: ActivatedRoute, + platformUtilsService: PlatformUtilsService, + policyService: PolicyService, + private organizationService: OrganizationService, + logService: LogService + ) { + super(i18nService, importService, router, platformUtilsService, policyService, logService); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + this.successNavigate = ["organizations", this.organizationId, "vault"]; + await super.ngOnInit(); + this.importBlockedByPolicy = false; + }); + const organization = await this.organizationService.get(this.organizationId); + this.organizationName = organization.name; + } + + async submit() { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("importWarning", this.organizationName), + this.i18nService.t("warning"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return; + } + super.submit(); + } +} diff --git a/apps/web/src/app/organizations/tools/inactive-two-factor-report.component.ts b/apps/web/src/app/organizations/tools/inactive-two-factor-report.component.ts new file mode 100644 index 0000000000..5aec67d5f2 --- /dev/null +++ b/apps/web/src/app/organizations/tools/inactive-two-factor-report.component.ts @@ -0,0 +1,50 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.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 { StateService } from "jslib-common/abstractions/state.service"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent } from "../../reports/inactive-two-factor-report.component"; + +@Component({ + selector: "app-inactive-two-factor-report", + templateUrl: "../../reports/inactive-two-factor-report.component.html", +}) +export class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent { + constructor( + cipherService: CipherService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + private route: ActivatedRoute, + logService: LogService, + passwordRepromptService: PasswordRepromptService, + private organizationService: OrganizationService + ) { + super( + cipherService, + modalService, + messagingService, + stateService, + logService, + passwordRepromptService + ); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organization = await this.organizationService.get(params.organizationId); + await super.ngOnInit(); + }); + } + + getAllCiphers(): Promise { + return this.cipherService.getAllFromApiForOrganization(this.organization.id); + } +} diff --git a/apps/web/src/app/organizations/tools/reused-passwords-report.component.ts b/apps/web/src/app/organizations/tools/reused-passwords-report.component.ts new file mode 100644 index 0000000000..4aa8ab706a --- /dev/null +++ b/apps/web/src/app/organizations/tools/reused-passwords-report.component.ts @@ -0,0 +1,49 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.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 { StateService } from "jslib-common/abstractions/state.service"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent } from "../../reports/reused-passwords-report.component"; + +@Component({ + selector: "app-reused-passwords-report", + templateUrl: "../../reports/reused-passwords-report.component.html", +}) +export class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent { + manageableCiphers: Cipher[]; + + constructor( + cipherService: CipherService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + private route: ActivatedRoute, + private organizationService: OrganizationService, + passwordRepromptService: PasswordRepromptService + ) { + super(cipherService, modalService, messagingService, stateService, passwordRepromptService); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organization = await this.organizationService.get(params.organizationId); + this.manageableCiphers = await this.cipherService.getAll(); + await super.ngOnInit(); + }); + } + + getAllCiphers(): Promise { + return this.cipherService.getAllFromApiForOrganization(this.organization.id); + } + + canManageCipher(c: CipherView): boolean { + return this.manageableCiphers.some((x) => x.id === c.id); + } +} diff --git a/apps/web/src/app/organizations/tools/tools.component.html b/apps/web/src/app/organizations/tools/tools.component.html new file mode 100644 index 0000000000..1cc93bff8c --- /dev/null +++ b/apps/web/src/app/organizations/tools/tools.component.html @@ -0,0 +1,79 @@ + diff --git a/apps/web/src/app/organizations/tools/tools.component.ts b/apps/web/src/app/organizations/tools/tools.component.ts new file mode 100644 index 0000000000..da23f2e9d7 --- /dev/null +++ b/apps/web/src/app/organizations/tools/tools.component.ts @@ -0,0 +1,36 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { Organization } from "jslib-common/models/domain/organization"; + +@Component({ + selector: "app-org-tools", + templateUrl: "tools.component.html", +}) +export class ToolsComponent { + organization: Organization; + accessReports = false; + loading = true; + + constructor( + private route: ActivatedRoute, + private organizationService: OrganizationService, + private messagingService: MessagingService + ) {} + + ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + this.organization = await this.organizationService.get(params.organizationId); + // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now + // since all paid plans include useTotp + this.accessReports = this.organization.useTotp; + this.loading = false; + }); + } + + upgradeOrganization() { + this.messagingService.send("upgradeOrganization", { organizationId: this.organization.id }); + } +} diff --git a/apps/web/src/app/organizations/tools/unsecured-websites-report.component.ts b/apps/web/src/app/organizations/tools/unsecured-websites-report.component.ts new file mode 100644 index 0000000000..9091146234 --- /dev/null +++ b/apps/web/src/app/organizations/tools/unsecured-websites-report.component.ts @@ -0,0 +1,41 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.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 { StateService } from "jslib-common/abstractions/state.service"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent } from "../../reports/unsecured-websites-report.component"; + +@Component({ + selector: "app-unsecured-websites-report", + templateUrl: "../../reports/unsecured-websites-report.component.html", +}) +export class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent { + constructor( + cipherService: CipherService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + private route: ActivatedRoute, + private organizationService: OrganizationService, + passwordRepromptService: PasswordRepromptService + ) { + super(cipherService, modalService, messagingService, stateService, passwordRepromptService); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organization = await this.organizationService.get(params.organizationId); + await super.ngOnInit(); + }); + } + + getAllCiphers(): Promise { + return this.cipherService.getAllFromApiForOrganization(this.organization.id); + } +} diff --git a/apps/web/src/app/organizations/tools/weak-passwords-report.component.ts b/apps/web/src/app/organizations/tools/weak-passwords-report.component.ts new file mode 100644 index 0000000000..b79b73b021 --- /dev/null +++ b/apps/web/src/app/organizations/tools/weak-passwords-report.component.ts @@ -0,0 +1,58 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent } from "../../reports/weak-passwords-report.component"; + +@Component({ + selector: "app-weak-passwords-report", + templateUrl: "../../reports/weak-passwords-report.component.html", +}) +export class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent { + manageableCiphers: Cipher[]; + + constructor( + cipherService: CipherService, + passwordGenerationService: PasswordGenerationService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + private route: ActivatedRoute, + private organizationService: OrganizationService, + passwordRepromptService: PasswordRepromptService + ) { + super( + cipherService, + passwordGenerationService, + modalService, + messagingService, + stateService, + passwordRepromptService + ); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organization = await this.organizationService.get(params.organizationId); + this.manageableCiphers = await this.cipherService.getAll(); + await super.ngOnInit(); + }); + } + + getAllCiphers(): Promise { + return this.cipherService.getAllFromApiForOrganization(this.organization.id); + } + + canManageCipher(c: CipherView): boolean { + return this.manageableCiphers.some((x) => x.id === c.id); + } +} diff --git a/apps/web/src/app/organizations/vault/add-edit.component.ts b/apps/web/src/app/organizations/vault/add-edit.component.ts new file mode 100644 index 0000000000..2f86ce4ece --- /dev/null +++ b/apps/web/src/app/organizations/vault/add-edit.component.ts @@ -0,0 +1,131 @@ +import { Component } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuditService } from "jslib-common/abstractions/audit.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 { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.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"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { CipherData } from "jslib-common/models/data/cipherData"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CipherCreateRequest } from "jslib-common/models/request/cipherCreateRequest"; +import { CipherRequest } from "jslib-common/models/request/cipherRequest"; + +import { AddEditComponent as BaseAddEditComponent } from "../../vault/add-edit.component"; + +@Component({ + selector: "app-org-vault-add-edit", + templateUrl: "../../vault/add-edit.component.html", +}) +export class AddEditComponent extends BaseAddEditComponent { + organization: Organization; + originalCipher: Cipher = null; + + constructor( + cipherService: CipherService, + folderService: FolderService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + auditService: AuditService, + stateService: StateService, + collectionService: CollectionService, + totpService: TotpService, + passwordGenerationService: PasswordGenerationService, + private apiService: ApiService, + messagingService: MessagingService, + eventService: EventService, + policyService: PolicyService, + logService: LogService, + passwordRepromptService: PasswordRepromptService, + organizationService: OrganizationService + ) { + super( + cipherService, + folderService, + i18nService, + platformUtilsService, + auditService, + stateService, + collectionService, + totpService, + passwordGenerationService, + messagingService, + eventService, + policyService, + organizationService, + logService, + passwordRepromptService + ); + } + + protected allowOwnershipAssignment() { + if ( + this.ownershipOptions != null && + (this.ownershipOptions.length > 1 || !this.allowPersonal) + ) { + if (this.organization != null) { + return this.cloneMode && this.organization.canEditAnyCollection; + } else { + return !this.editMode || this.cloneMode; + } + } + return false; + } + + protected loadCollections() { + if (!this.organization.canEditAnyCollection) { + return super.loadCollections(); + } + return Promise.resolve(this.collections); + } + + protected async loadCipher() { + if (!this.organization.canEditAnyCollection) { + return await super.loadCipher(); + } + const response = await this.apiService.getCipherAdmin(this.cipherId); + const data = new CipherData(response); + this.originalCipher = new Cipher(data); + return new Cipher(data); + } + + protected encryptCipher() { + if (!this.organization.canEditAnyCollection) { + return super.encryptCipher(); + } + return this.cipherService.encrypt(this.cipher, null, this.originalCipher); + } + + protected async saveCipher(cipher: Cipher) { + if (!this.organization.canEditAnyCollection || cipher.organizationId == null) { + return super.saveCipher(cipher); + } + if (this.editMode && !this.cloneMode) { + const request = new CipherRequest(cipher); + return this.apiService.putCipherAdmin(this.cipherId, request); + } else { + const request = new CipherCreateRequest(cipher); + return this.apiService.postCipherAdmin(request); + } + } + + protected async deleteCipher() { + if (!this.organization.canEditAnyCollection) { + return super.deleteCipher(); + } + return this.cipher.isDeleted + ? this.apiService.deleteCipherAdmin(this.cipherId) + : this.apiService.putDeleteCipherAdmin(this.cipherId); + } +} diff --git a/apps/web/src/app/organizations/vault/attachments.component.ts b/apps/web/src/app/organizations/vault/attachments.component.ts new file mode 100644 index 0000000000..fb4b46c7fa --- /dev/null +++ b/apps/web/src/app/organizations/vault/attachments.component.ts @@ -0,0 +1,77 @@ +import { Component } from "@angular/core"; + +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"; +import { CipherData } from "jslib-common/models/data/cipherData"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { Organization } from "jslib-common/models/domain/organization"; +import { AttachmentView } from "jslib-common/models/view/attachmentView"; + +import { AttachmentsComponent as BaseAttachmentsComponent } from "../../vault/attachments.component"; + +@Component({ + selector: "app-org-vault-attachments", + templateUrl: "../../vault/attachments.component.html", +}) +export class AttachmentsComponent extends BaseAttachmentsComponent { + viewOnly = false; + organization: Organization; + + constructor( + cipherService: CipherService, + i18nService: I18nService, + cryptoService: CryptoService, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + logService: LogService + ) { + super( + cipherService, + i18nService, + cryptoService, + stateService, + platformUtilsService, + apiService, + logService + ); + } + + protected async reupload(attachment: AttachmentView) { + if (this.organization.canEditAnyCollection && this.showFixOldAttachments(attachment)) { + await super.reuploadCipherAttachment(attachment, true); + } + } + + protected async loadCipher() { + if (!this.organization.canEditAnyCollection) { + return await super.loadCipher(); + } + const response = await this.apiService.getCipherAdmin(this.cipherId); + return new Cipher(new CipherData(response)); + } + + protected saveCipherAttachment(file: File) { + return this.cipherService.saveAttachmentWithServer( + this.cipherDomain, + file, + this.organization.canEditAnyCollection + ); + } + + protected deleteCipherAttachment(attachmentId: string) { + if (!this.organization.canEditAnyCollection) { + return super.deleteCipherAttachment(attachmentId); + } + return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId); + } + + protected showFixOldAttachments(attachment: AttachmentView) { + return attachment.key == null && this.organization.canEditAnyCollection; + } +} diff --git a/apps/web/src/app/organizations/vault/ciphers.component.ts b/apps/web/src/app/organizations/vault/ciphers.component.ts new file mode 100644 index 0000000000..2960b9ae99 --- /dev/null +++ b/apps/web/src/app/organizations/vault/ciphers.component.ts @@ -0,0 +1,105 @@ +import { Component, EventEmitter, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CipherService } from "jslib-common/abstractions/cipher.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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SearchService } from "jslib-common/abstractions/search.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 { Organization } from "jslib-common/models/domain/organization"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { CiphersComponent as BaseCiphersComponent } from "../../vault/ciphers.component"; + +@Component({ + selector: "app-org-vault-ciphers", + templateUrl: "../../vault/ciphers.component.html", +}) +export class CiphersComponent extends BaseCiphersComponent { + @Output() onEventsClicked = new EventEmitter(); + + organization: Organization; + accessEvents = false; + + protected allCiphers: CipherView[] = []; + + constructor( + searchService: SearchService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + cipherService: CipherService, + eventService: EventService, + totpService: TotpService, + passwordRepromptService: PasswordRepromptService, + logService: LogService, + stateService: StateService, + organizationService: OrganizationService, + tokenService: TokenService, + private apiService: ApiService + ) { + super( + searchService, + i18nService, + platformUtilsService, + cipherService, + eventService, + totpService, + stateService, + passwordRepromptService, + logService, + organizationService, + tokenService + ); + } + + async load(filter: (cipher: CipherView) => boolean = null, deleted = false) { + this.deleted = deleted || false; + if (this.organization.canEditAnyCollection) { + this.accessEvents = this.organization.useEvents; + this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id); + } else { + this.allCiphers = (await this.cipherService.getAllDecrypted()).filter( + (c) => c.organizationId === this.organization.id + ); + } + await this.searchService.indexCiphers(this.organization.id, this.allCiphers); + await this.applyFilter(filter); + this.loaded = true; + } + + async applyFilter(filter: (cipher: CipherView) => boolean = null) { + if (this.organization.canViewAllCollections) { + await super.applyFilter(filter); + } else { + const f = (c: CipherView) => + c.organizationId === this.organization.id && (filter == null || filter(c)); + await super.applyFilter(f); + } + } + + async search(timeout: number = null) { + await super.search(timeout, this.allCiphers); + } + events(c: CipherView) { + this.onEventsClicked.emit(c); + } + + protected deleteCipher(id: string) { + if (!this.organization.canEditAnyCollection) { + return super.deleteCipher(id, this.deleted); + } + return this.deleted + ? this.apiService.deleteCipherAdmin(id) + : this.apiService.putDeleteCipherAdmin(id); + } + + protected showFixOldAttachments(c: CipherView) { + return this.organization.canEditAnyCollection && c.hasOldAttachments; + } +} diff --git a/apps/web/src/app/organizations/vault/collections.component.ts b/apps/web/src/app/organizations/vault/collections.component.ts new file mode 100644 index 0000000000..deeaa7c7e6 --- /dev/null +++ b/apps/web/src/app/organizations/vault/collections.component.ts @@ -0,0 +1,65 @@ +import { Component } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +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"; +import { CipherData } from "jslib-common/models/data/cipherData"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CipherCollectionsRequest } from "jslib-common/models/request/cipherCollectionsRequest"; + +import { CollectionsComponent as BaseCollectionsComponent } from "../../vault/collections.component"; + +@Component({ + selector: "app-org-vault-collections", + templateUrl: "../../vault/collections.component.html", +}) +export class CollectionsComponent extends BaseCollectionsComponent { + organization: Organization; + + constructor( + collectionService: CollectionService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + cipherService: CipherService, + private apiService: ApiService, + logService: LogService + ) { + super(collectionService, platformUtilsService, i18nService, cipherService, logService); + this.allowSelectNone = true; + } + + protected async loadCipher() { + if (!this.organization.canViewAllCollections) { + return await super.loadCipher(); + } + const response = await this.apiService.getCipherAdmin(this.cipherId); + return new Cipher(new CipherData(response)); + } + + protected loadCipherCollections() { + if (!this.organization.canViewAllCollections) { + return super.loadCipherCollections(); + } + return this.collectionIds; + } + + protected loadCollections() { + if (!this.organization.canViewAllCollections) { + return super.loadCollections(); + } + return Promise.resolve(this.collections); + } + + protected saveCollections() { + if (this.organization.canEditAnyCollection) { + const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds); + return this.apiService.putCipherCollectionsAdmin(this.cipherId, request); + } else { + return super.saveCollections(); + } + } +} diff --git a/apps/web/src/app/oss-routing.module.ts b/apps/web/src/app/oss-routing.module.ts new file mode 100644 index 0000000000..77547813f8 --- /dev/null +++ b/apps/web/src/app/oss-routing.module.ts @@ -0,0 +1,253 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AuthGuard } from "jslib-angular/guards/auth.guard"; +import { LockGuard } from "jslib-angular/guards/lock.guard"; +import { UnauthGuard } from "jslib-angular/guards/unauth.guard"; + +import { AcceptEmergencyComponent } from "./accounts/accept-emergency.component"; +import { AcceptOrganizationComponent } from "./accounts/accept-organization.component"; +import { HintComponent } from "./accounts/hint.component"; +import { LockComponent } from "./accounts/lock.component"; +import { LoginComponent } from "./accounts/login.component"; +import { RecoverDeleteComponent } from "./accounts/recover-delete.component"; +import { RecoverTwoFactorComponent } from "./accounts/recover-two-factor.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 { UpdatePasswordComponent } from "./accounts/update-password.component"; +import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component"; +import { VerifyEmailTokenComponent } from "./accounts/verify-email-token.component"; +import { VerifyRecoverDeleteComponent } from "./accounts/verify-recover-delete.component"; +import { HomeGuard } from "./guards/home.guard"; +import { FrontendLayoutComponent } from "./layouts/frontend-layout.component"; +import { UserLayoutComponent } from "./layouts/user-layout.component"; +import { AcceptFamilySponsorshipComponent } from "./organizations/sponsorships/accept-family-sponsorship.component"; +import { FamiliesForEnterpriseSetupComponent } from "./organizations/sponsorships/families-for-enterprise-setup.component"; +import { AccessComponent } from "./send/access.component"; +import { SendComponent } from "./send/send.component"; +import { AccountComponent } from "./settings/account.component"; +import { CreateOrganizationComponent } from "./settings/create-organization.component"; +import { DomainRulesComponent } from "./settings/domain-rules.component"; +import { EmergencyAccessViewComponent } from "./settings/emergency-access-view.component"; +import { EmergencyAccessComponent } from "./settings/emergency-access.component"; +import { PreferencesComponent } from "./settings/preferences.component"; +import { SettingsComponent } from "./settings/settings.component"; +import { SponsoredFamiliesComponent } from "./settings/sponsored-families.component"; +import { ExportComponent } from "./tools/export.component"; +import { GeneratorComponent } from "./tools/generator.component"; +import { ImportComponent } from "./tools/import.component"; +import { ToolsComponent } from "./tools/tools.component"; + +const routes: Routes = [ + { + path: "", + component: FrontendLayoutComponent, + data: { doNotSaveUrl: true }, + children: [ + { + path: "", + pathMatch: "full", + children: [], // Children lets us have an empty component. + canActivate: [HomeGuard], // Redirects either to vault, login or lock page. + }, + { path: "login", component: LoginComponent, canActivate: [UnauthGuard] }, + { path: "2fa", component: TwoFactorComponent, canActivate: [UnauthGuard] }, + { + path: "register", + component: RegisterComponent, + canActivate: [UnauthGuard], + data: { titleId: "createAccount" }, + }, + { + path: "sso", + component: SsoComponent, + canActivate: [UnauthGuard], + data: { titleId: "enterpriseSingleSignOn" }, + }, + { + path: "set-password", + component: SetPasswordComponent, + data: { titleId: "setMasterPassword" }, + }, + { + path: "hint", + component: HintComponent, + canActivate: [UnauthGuard], + data: { titleId: "passwordHint" }, + }, + { + path: "lock", + component: LockComponent, + canActivate: [LockGuard], + }, + { path: "verify-email", component: VerifyEmailTokenComponent }, + { + path: "accept-organization", + component: AcceptOrganizationComponent, + data: { titleId: "joinOrganization", doNotSaveUrl: false }, + }, + { + path: "accept-emergency", + component: AcceptEmergencyComponent, + data: { titleId: "acceptEmergency", doNotSaveUrl: false }, + }, + { + path: "accept-families-for-enterprise", + component: AcceptFamilySponsorshipComponent, + data: { titleId: "acceptFamilySponsorship", doNotSaveUrl: false }, + }, + { path: "recover", pathMatch: "full", redirectTo: "recover-2fa" }, + { + path: "recover-2fa", + component: RecoverTwoFactorComponent, + canActivate: [UnauthGuard], + data: { titleId: "recoverAccountTwoStep" }, + }, + { + path: "recover-delete", + component: RecoverDeleteComponent, + canActivate: [UnauthGuard], + data: { titleId: "deleteAccount" }, + }, + { + path: "verify-recover-delete", + component: VerifyRecoverDeleteComponent, + canActivate: [UnauthGuard], + data: { titleId: "deleteAccount" }, + }, + { + path: "send/:sendId/:key", + component: AccessComponent, + data: { title: "Bitwarden Send" }, + }, + { + path: "update-temp-password", + component: UpdateTempPasswordComponent, + canActivate: [AuthGuard], + data: { titleId: "updateTempPassword" }, + }, + { + path: "update-password", + component: UpdatePasswordComponent, + canActivate: [AuthGuard], + data: { titleId: "updatePassword" }, + }, + { + path: "remove-password", + component: RemovePasswordComponent, + canActivate: [AuthGuard], + data: { titleId: "removeMasterPassword" }, + }, + ], + }, + { + path: "", + component: UserLayoutComponent, + canActivate: [AuthGuard], + children: [ + { + path: "vault", + loadChildren: async () => + (await import("./modules/vault/modules/individual-vault/individual-vault.module")) + .IndividualVaultModule, + }, + { path: "sends", component: SendComponent, data: { title: "Send" } }, + { + path: "create-organization", + component: CreateOrganizationComponent, + data: { titleId: "newOrganization" }, + }, + { + path: "settings", + component: SettingsComponent, + children: [ + { path: "", pathMatch: "full", redirectTo: "account" }, + { path: "account", component: AccountComponent, data: { titleId: "myAccount" } }, + { + path: "preferences", + component: PreferencesComponent, + data: { titleId: "preferences" }, + }, + { + path: "security", + loadChildren: async () => + (await import("./settings/security-routing.module")).SecurityRoutingModule, + }, + { + path: "domain-rules", + component: DomainRulesComponent, + data: { titleId: "domainRules" }, + }, + { + path: "subscription", + loadChildren: async () => + (await import("./settings/subscription-routing.module")).SubscriptionRoutingModule, + }, + { + path: "emergency-access", + children: [ + { + path: "", + component: EmergencyAccessComponent, + data: { titleId: "emergencyAccess" }, + }, + { + path: ":id", + component: EmergencyAccessViewComponent, + data: { titleId: "emergencyAccess" }, + }, + ], + }, + { + path: "sponsored-families", + component: SponsoredFamiliesComponent, + data: { titleId: "sponsoredFamilies" }, + }, + ], + }, + { + path: "tools", + component: ToolsComponent, + canActivate: [AuthGuard], + children: [ + { path: "", pathMatch: "full", redirectTo: "generator" }, + { path: "import", component: ImportComponent, data: { titleId: "importData" } }, + { path: "export", component: ExportComponent, data: { titleId: "exportVault" } }, + { + path: "generator", + component: GeneratorComponent, + data: { titleId: "generator" }, + }, + ], + }, + { + path: "reports", + loadChildren: async () => + (await import("./reports/reports-routing.module")).ReportsRoutingModule, + }, + { path: "setup/families-for-enterprise", component: FamiliesForEnterpriseSetupComponent }, + ], + }, + { + path: "organizations", + loadChildren: () => + import("./organizations/organization-routing.module").then( + (m) => m.OrganizationsRoutingModule + ), + }, +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, { + useHash: true, + paramsInheritanceStrategy: "always", + // enableTracing: true, + }), + ], + exports: [RouterModule], +}) +export class OssRoutingModule {} diff --git a/apps/web/src/app/oss.module.ts b/apps/web/src/app/oss.module.ts new file mode 100644 index 0000000000..cd4d3d9d05 --- /dev/null +++ b/apps/web/src/app/oss.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from "@angular/core"; + +import { LooseComponentsModule } from "./modules/loose-components.module"; +import { OrganizationManageModule } from "./modules/organizations/manage/organization-manage.module"; +import { OrganizationUserModule } from "./modules/organizations/users/organization-user.module"; +import { PipesModule } from "./modules/pipes/pipes.module"; +import { SharedModule } from "./modules/shared.module"; +import { VaultFilterModule } from "./modules/vault-filter/vault-filter.module"; +import { OrganizationBadgeModule } from "./modules/vault/modules/organization-badge/organization-badge.module"; + +@NgModule({ + imports: [ + SharedModule, + LooseComponentsModule, + VaultFilterModule, + OrganizationBadgeModule, + PipesModule, + OrganizationManageModule, + OrganizationUserModule, + ], + exports: [LooseComponentsModule, VaultFilterModule, OrganizationBadgeModule, PipesModule], + bootstrap: [], +}) +export class OssModule {} diff --git a/apps/web/src/app/polyfills.ts b/apps/web/src/app/polyfills.ts new file mode 100644 index 0000000000..0691f05659 --- /dev/null +++ b/apps/web/src/app/polyfills.ts @@ -0,0 +1,15 @@ +import "core-js/stable"; +require("zone.js/dist/zone"); + +if (process.env.NODE_ENV === "production") { + // Production +} else { + // Development and test + Error["stackTraceLimit"] = Infinity; + require("zone.js/dist/long-stack-trace-zone"); +} + +// Other polyfills +require("whatwg-fetch"); +require("webcrypto-shim"); +require("date-input-polyfill"); diff --git a/apps/web/src/app/providers/providers.component.html b/apps/web/src/app/providers/providers.component.html new file mode 100644 index 0000000000..e91b7cb44e --- /dev/null +++ b/apps/web/src/app/providers/providers.component.html @@ -0,0 +1,33 @@ + +
+ +

+ + {{ "loading" | i18n }} +

+ + + + + + + + +
+ + + {{ p.name }} + + + {{ "providerIsDisabled" | i18n }} + +
+
+
+ diff --git a/apps/web/src/app/providers/providers.component.ts b/apps/web/src/app/providers/providers.component.ts new file mode 100644 index 0000000000..ca80ef46ff --- /dev/null +++ b/apps/web/src/app/providers/providers.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { Utils } from "jslib-common/misc/utils"; +import { Provider } from "jslib-common/models/domain/provider"; + +@Component({ + selector: "app-providers", + templateUrl: "providers.component.html", +}) +export class ProvidersComponent implements OnInit { + providers: Provider[]; + loaded = false; + actionPromise: Promise; + + constructor(private providerService: ProviderService, private i18nService: I18nService) {} + + async ngOnInit() { + document.body.classList.remove("layout_frontend"); + await this.load(); + } + + async load() { + const providers = await this.providerService.getAll(); + providers.sort(Utils.getSortFunction(this.i18nService, "name")); + this.providers = providers; + this.loaded = true; + } +} diff --git a/apps/web/src/app/reports/breach-report.component.html b/apps/web/src/app/reports/breach-report.component.html new file mode 100644 index 0000000000..6d7c0401f0 --- /dev/null +++ b/apps/web/src/app/reports/breach-report.component.html @@ -0,0 +1,64 @@ + +

{{ "breachDesc" | i18n }}

+
+
+
+ + + {{ "breachCheckUsernameEmail" | i18n }} +
+
+ +
+
+

{{ "reportError" | i18n }}...

+ + + {{ "breachUsernameNotFound" | i18n: checkedUsername }} + + + {{ "breachUsernameFound" | i18n: checkedUsername:breachedAccounts.length }} + +
    +
  • +
    +
    + +
    +
    +

    {{ a.title }}

    +

    +

    {{ "compromisedData" | i18n }}:

    +
      +
    • {{ d }}
    • +
    +
    +
    +
    +
    {{ "website" | i18n }}
    +
    {{ a.domain }}
    +
    {{ "affectedUsers" | i18n }}
    +
    {{ a.pwnCount | number }}
    +
    {{ "breachOccurred" | i18n }}
    +
    {{ a.breachDate | date: "mediumDate" }}
    +
    {{ "breachReported" | i18n }}
    +
    {{ a.addedDate | date: "mediumDate" }}
    +
    +
    +
    +
  • +
+
+
diff --git a/apps/web/src/app/reports/breach-report.component.ts b/apps/web/src/app/reports/breach-report.component.ts new file mode 100644 index 0000000000..0c7da7af51 --- /dev/null +++ b/apps/web/src/app/reports/breach-report.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from "@angular/core"; + +import { AuditService } from "jslib-common/abstractions/audit.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { BreachAccountResponse } from "jslib-common/models/response/breachAccountResponse"; + +@Component({ + selector: "app-breach-report", + templateUrl: "breach-report.component.html", +}) +export class BreachReportComponent implements OnInit { + error = false; + username: string; + checkedUsername: string; + breachedAccounts: BreachAccountResponse[] = []; + formPromise: Promise; + + constructor(private auditService: AuditService, private stateService: StateService) {} + + async ngOnInit() { + this.username = await this.stateService.getEmail(); + } + + async submit() { + this.error = false; + this.username = this.username.toLowerCase(); + try { + this.formPromise = this.auditService.breachedAccounts(this.username); + this.breachedAccounts = await this.formPromise; + } catch { + this.error = true; + } + this.checkedUsername = this.username; + } +} diff --git a/apps/web/src/app/reports/cipher-report.component.ts b/apps/web/src/app/reports/cipher-report.component.ts new file mode 100644 index 0000000000..ebc7121eb9 --- /dev/null +++ b/apps/web/src/app/reports/cipher-report.component.ts @@ -0,0 +1,103 @@ +import { Directive, ViewChild, ViewContainerRef } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { AddEditComponent as OrgAddEditComponent } from "../organizations/vault/add-edit.component"; +import { AddEditComponent } from "../vault/add-edit.component"; + +@Directive() +export class CipherReportComponent { + @ViewChild("cipherAddEdit", { read: ViewContainerRef, static: true }) + cipherAddEditModalRef: ViewContainerRef; + + loading = false; + hasLoaded = false; + ciphers: CipherView[] = []; + organization: Organization; + + constructor( + private modalService: ModalService, + protected messagingService: MessagingService, + public requiresPaid: boolean, + private stateService: StateService, + protected passwordRepromptService: PasswordRepromptService + ) {} + + async load() { + this.loading = true; + await this.setCiphers(); + this.loading = false; + this.hasLoaded = true; + } + + async selectCipher(cipher: CipherView) { + if (!(await this.repromptCipher(cipher))) { + return; + } + + const type = this.organization != null ? OrgAddEditComponent : AddEditComponent; + + const [modal, childComponent] = await this.modalService.openViewRef( + type, + this.cipherAddEditModalRef, + (comp: OrgAddEditComponent | AddEditComponent) => { + if (this.organization != null) { + (comp as OrgAddEditComponent).organization = this.organization; + comp.organizationId = this.organization.id; + } + + comp.cipherId = cipher == null ? null : cipher.id; + comp.onSavedCipher.subscribe(async () => { + modal.close(); + await this.load(); + }); + comp.onDeletedCipher.subscribe(async () => { + modal.close(); + await this.load(); + }); + comp.onRestoredCipher.subscribe(async () => { + modal.close(); + await this.load(); + }); + } + ); + + return childComponent; + } + + protected async checkAccess(): Promise { + if (this.organization != null) { + // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now + // since all paid plans include useTotp + if (this.requiresPaid && !this.organization.useTotp) { + this.messagingService.send("upgradeOrganization", { organizationId: this.organization.id }); + return false; + } + } else { + const accessPremium = await this.stateService.getCanAccessPremium(); + if (this.requiresPaid && !accessPremium) { + this.messagingService.send("premiumRequired"); + this.loading = false; + return false; + } + } + return true; + } + + protected async setCiphers() { + this.ciphers = []; + } + + protected async repromptCipher(c: CipherView) { + return ( + c.reprompt === CipherRepromptType.None || + (await this.passwordRepromptService.showPasswordPrompt()) + ); + } +} diff --git a/apps/web/src/app/reports/exposed-passwords-report.component.html b/apps/web/src/app/reports/exposed-passwords-report.component.html new file mode 100644 index 0000000000..f0a882f793 --- /dev/null +++ b/apps/web/src/app/reports/exposed-passwords-report.component.html @@ -0,0 +1,70 @@ + +

{{ "exposedPasswordsReportDesc" | i18n }}

+ +
+ + {{ "noExposedPasswords" | i18n }} + + + + {{ "exposedPasswordsFoundDesc" | i18n: (ciphers.length | number) }} + + + + + + + + + +
+ + + + {{ + c.name + }} + + + {{ c.name }} + + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + +
+ {{ c.subTitle }} +
+ + {{ "exposedXTimes" | i18n: (exposedPasswordMap.get(c.id) | number) }} + +
+
+
+ diff --git a/apps/web/src/app/reports/exposed-passwords-report.component.ts b/apps/web/src/app/reports/exposed-passwords-report.component.ts new file mode 100644 index 0000000000..4a08964bc7 --- /dev/null +++ b/apps/web/src/app/reports/exposed-passwords-report.component.ts @@ -0,0 +1,75 @@ +import { Component, OnInit } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { AuditService } from "jslib-common/abstractions/audit.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { CipherReportComponent } from "./cipher-report.component"; + +@Component({ + selector: "app-exposed-passwords-report", + templateUrl: "exposed-passwords-report.component.html", +}) +export class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit { + exposedPasswordMap = new Map(); + + constructor( + protected cipherService: CipherService, + protected auditService: AuditService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + passwordRepromptService: PasswordRepromptService + ) { + super(modalService, messagingService, true, stateService, passwordRepromptService); + } + + ngOnInit() { + this.checkAccess(); + } + + async load() { + if (await this.checkAccess()) { + super.load(); + } + } + + async setCiphers() { + const allCiphers = await this.getAllCiphers(); + const exposedPasswordCiphers: CipherView[] = []; + const promises: Promise[] = []; + allCiphers.forEach((c) => { + if ( + c.type !== CipherType.Login || + c.login.password == null || + c.login.password === "" || + c.isDeleted + ) { + return; + } + const promise = this.auditService.passwordLeaked(c.login.password).then((exposedCount) => { + if (exposedCount > 0) { + exposedPasswordCiphers.push(c); + this.exposedPasswordMap.set(c.id, exposedCount); + } + }); + promises.push(promise); + }); + await Promise.all(promises); + this.ciphers = exposedPasswordCiphers; + } + + protected getAllCiphers(): Promise { + return this.cipherService.getAllDecrypted(); + } + + protected canManageCipher(c: CipherView): boolean { + // this will only ever be false from the org view; + return true; + } +} diff --git a/apps/web/src/app/reports/inactive-two-factor-report.component.html b/apps/web/src/app/reports/inactive-two-factor-report.component.html new file mode 100644 index 0000000000..b472498093 --- /dev/null +++ b/apps/web/src/app/reports/inactive-two-factor-report.component.html @@ -0,0 +1,78 @@ + +

{{ "inactive2faReportDesc" | i18n }}

+
+ + {{ "loading" | i18n }} +
+
+ + {{ "noInactive2fa" | i18n }} + + + + {{ "inactive2faFoundDesc" | i18n: (ciphers.length | number) }} + + + + + + + + + +
+ + + {{ + c.name + }} + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + +
+ {{ c.subTitle }} +
+ + {{ "instructions" | i18n }} +
+
+
+ diff --git a/apps/web/src/app/reports/inactive-two-factor-report.component.ts b/apps/web/src/app/reports/inactive-two-factor-report.component.ts new file mode 100644 index 0000000000..9dd438e307 --- /dev/null +++ b/apps/web/src/app/reports/inactive-two-factor-report.component.ts @@ -0,0 +1,110 @@ +import { Component, OnInit } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.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 { StateService } from "jslib-common/abstractions/state.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { Utils } from "jslib-common/misc/utils"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { CipherReportComponent } from "./cipher-report.component"; + +@Component({ + selector: "app-inactive-two-factor-report", + templateUrl: "inactive-two-factor-report.component.html", +}) +export class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit { + services = new Map(); + cipherDocs = new Map(); + + constructor( + protected cipherService: CipherService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + private logService: LogService, + passwordRepromptService: PasswordRepromptService + ) { + super(modalService, messagingService, true, stateService, passwordRepromptService); + } + + async ngOnInit() { + if (await this.checkAccess()) { + await super.load(); + } + } + + async setCiphers() { + try { + await this.load2fa(); + } catch (e) { + this.logService.error(e); + } + + if (this.services.size > 0) { + const allCiphers = await this.getAllCiphers(); + const inactive2faCiphers: CipherView[] = []; + const promises: Promise[] = []; + const docs = new Map(); + allCiphers.forEach((c) => { + if ( + c.type !== CipherType.Login || + (c.login.totp != null && c.login.totp !== "") || + !c.login.hasUris || + c.isDeleted + ) { + return; + } + for (let i = 0; i < c.login.uris.length; i++) { + const u = c.login.uris[i]; + if (u.uri != null && u.uri !== "") { + const uri = u.uri.replace("www.", ""); + const domain = Utils.getDomain(uri); + if (domain != null && this.services.has(domain)) { + if (this.services.get(domain) != null) { + docs.set(c.id, this.services.get(domain)); + } + inactive2faCiphers.push(c); + } + } + } + }); + await Promise.all(promises); + this.ciphers = inactive2faCiphers; + this.cipherDocs = docs; + } + } + + protected getAllCiphers(): Promise { + return this.cipherService.getAllDecrypted(); + } + + private async load2fa() { + if (this.services.size > 0) { + return; + } + const response = await fetch(new Request("https://2fa.directory/api/v3/totp.json")); + if (response.status !== 200) { + throw new Error(); + } + const responseJson = await response.json(); + for (const service of responseJson) { + const serviceData = service[1]; + if (serviceData.domain == null) { + continue; + } + if (serviceData.documentation == null) { + continue; + } + if (serviceData["additional-domains"] != null) { + for (const additionalDomain of serviceData["additional-domains"]) { + this.services.set(additionalDomain, serviceData.documentation); + } + } + this.services.set(serviceData.domain, serviceData.documentation); + } + } +} diff --git a/apps/web/src/app/reports/report-card.component.html b/apps/web/src/app/reports/report-card.component.html new file mode 100644 index 0000000000..7882e27906 --- /dev/null +++ b/apps/web/src/app/reports/report-card.component.html @@ -0,0 +1,25 @@ + +
+
+
+
+
+

{{ report.title | i18n }}

+

{{ report.description | i18n }}

+
+ {{ "premium" | i18n }} +
+
diff --git a/apps/web/src/app/reports/report-card.component.ts b/apps/web/src/app/reports/report-card.component.ts new file mode 100644 index 0000000000..d6a9470c66 --- /dev/null +++ b/apps/web/src/app/reports/report-card.component.ts @@ -0,0 +1,166 @@ +import { Component, Input, OnInit } from "@angular/core"; +import { DomSanitizer } from "@angular/platform-browser"; + +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +export enum ReportTypes { + "exposedPasswords" = "exposedPasswords", + "reusedPasswords" = "reusedPasswords", + "weakPasswords" = "weakPasswords", + "unsecuredWebsites" = "unsecuredWebsites", + "inactive2fa" = "inactive2fa", + "dataBreach" = "dataBreach", +} + +type ReportEntry = { + title: string; + description: string; + route: string; + icon: string; + requiresPremium: boolean; +}; + +const reports: Record = { + exposedPasswords: { + title: "exposedPasswordsReport", + description: "exposedPasswordsReportDesc", + route: "exposed-passwords-report", + icon: ` + + + + + + + + + + + + + `, + requiresPremium: true, + }, + reusedPasswords: { + title: "reusedPasswordsReport", + description: "reusedPasswordsReportDesc", + route: "reused-passwords-report", + icon: ` + + + + + + `, + requiresPremium: true, + }, + weakPasswords: { + title: "weakPasswordsReport", + description: "weakPasswordsReportDesc", + route: "weak-passwords-report", + icon: ` + + + + + + + `, + requiresPremium: true, + }, + unsecuredWebsites: { + title: "unsecuredWebsitesReport", + description: "unsecuredWebsitesReportDesc", + route: "unsecured-websites-report", + icon: ` + + + + + + + + + `, + requiresPremium: true, + }, + inactive2fa: { + title: "inactive2faReport", + description: "inactive2faReportDesc", + route: "inactive-two-factor-report", + icon: ` + + + + + + + `, + requiresPremium: true, + }, + dataBreach: { + title: "dataBreachReport", + description: "breachDesc", + route: "breach-report", + icon: ` + + + + + + + + + + + `, + requiresPremium: false, + }, +}; + +@Component({ + selector: "app-report-card", + templateUrl: "report-card.component.html", +}) +export class ReportCardComponent implements OnInit { + @Input() type: ReportTypes; + + report: ReportEntry; + + hasPremium: boolean; + + constructor( + private stateService: StateService, + private messagingService: MessagingService, + private sanitizer: DomSanitizer + ) {} + + async ngOnInit() { + this.report = reports[this.type]; + + this.hasPremium = await this.stateService.getCanAccessPremium(); + } + + get premium() { + return this.report.requiresPremium && !this.hasPremium; + } + + get route() { + if (this.premium) { + return null; + } + + return this.report.route; + } + + get icon() { + return this.sanitizer.bypassSecurityTrustHtml(this.report.icon); + } + + click() { + if (this.premium) { + this.messagingService.send("premiumRequired"); + } + } +} diff --git a/apps/web/src/app/reports/report-list.component.html b/apps/web/src/app/reports/report-list.component.html new file mode 100644 index 0000000000..e302873119 --- /dev/null +++ b/apps/web/src/app/reports/report-list.component.html @@ -0,0 +1,11 @@ + + +

{{ "reportsDesc" | i18n }}

+ +
+
+ +
+
diff --git a/apps/web/src/app/reports/report-list.component.ts b/apps/web/src/app/reports/report-list.component.ts new file mode 100644 index 0000000000..488949842d --- /dev/null +++ b/apps/web/src/app/reports/report-list.component.ts @@ -0,0 +1,18 @@ +import { Component } from "@angular/core"; + +import { ReportTypes } from "./report-card.component"; + +@Component({ + selector: "app-report-list", + templateUrl: "report-list.component.html", +}) +export class ReportListComponent { + reports = [ + ReportTypes.exposedPasswords, + ReportTypes.reusedPasswords, + ReportTypes.weakPasswords, + ReportTypes.unsecuredWebsites, + ReportTypes.inactive2fa, + ReportTypes.dataBreach, + ]; +} diff --git a/apps/web/src/app/reports/reports-routing.module.ts b/apps/web/src/app/reports/reports-routing.module.ts new file mode 100644 index 0000000000..d97d20550b --- /dev/null +++ b/apps/web/src/app/reports/reports-routing.module.ts @@ -0,0 +1,60 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AuthGuard } from "jslib-angular/guards/auth.guard"; + +import { BreachReportComponent } from "./breach-report.component"; +import { ExposedPasswordsReportComponent } from "./exposed-passwords-report.component"; +import { InactiveTwoFactorReportComponent } from "./inactive-two-factor-report.component"; +import { ReportListComponent } from "./report-list.component"; +import { ReportsComponent } from "./reports.component"; +import { ReusedPasswordsReportComponent } from "./reused-passwords-report.component"; +import { UnsecuredWebsitesReportComponent } from "./unsecured-websites-report.component"; +import { WeakPasswordsReportComponent } from "./weak-passwords-report.component"; + +const routes: Routes = [ + { + path: "", + component: ReportsComponent, + canActivate: [AuthGuard], + children: [ + { path: "", pathMatch: "full", component: ReportListComponent, data: { homepage: true } }, + { + path: "breach-report", + component: BreachReportComponent, + data: { titleId: "dataBreachReport" }, + }, + { + path: "reused-passwords-report", + component: ReusedPasswordsReportComponent, + data: { titleId: "reusedPasswordsReport" }, + }, + { + path: "unsecured-websites-report", + component: UnsecuredWebsitesReportComponent, + data: { titleId: "unsecuredWebsitesReport" }, + }, + { + path: "weak-passwords-report", + component: WeakPasswordsReportComponent, + data: { titleId: "weakPasswordsReport" }, + }, + { + path: "exposed-passwords-report", + component: ExposedPasswordsReportComponent, + data: { titleId: "exposedPasswordsReport" }, + }, + { + path: "inactive-two-factor-report", + component: InactiveTwoFactorReportComponent, + data: { titleId: "inactive2faReport" }, + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ReportsRoutingModule {} diff --git a/apps/web/src/app/reports/reports.component.html b/apps/web/src/app/reports/reports.component.html new file mode 100644 index 0000000000..3c6bd313c4 --- /dev/null +++ b/apps/web/src/app/reports/reports.component.html @@ -0,0 +1,12 @@ + diff --git a/apps/web/src/app/reports/reports.component.ts b/apps/web/src/app/reports/reports.component.ts new file mode 100644 index 0000000000..c0e67ac5ea --- /dev/null +++ b/apps/web/src/app/reports/reports.component.ts @@ -0,0 +1,25 @@ +import { Component, OnDestroy } from "@angular/core"; +import { NavigationEnd, Router } from "@angular/router"; +import { Subscription } from "rxjs"; +import { filter } from "rxjs/operators"; + +@Component({ + selector: "app-reports", + templateUrl: "reports.component.html", +}) +export class ReportsComponent implements OnDestroy { + homepage = true; + subscription: Subscription; + + constructor(router: Router) { + this.subscription = router.events + .pipe(filter((event) => event instanceof NavigationEnd)) + .subscribe((event) => { + this.homepage = (event as NavigationEnd).url == "/reports"; + }); + } + + ngOnDestroy(): void { + this.subscription?.unsubscribe(); + } +} diff --git a/apps/web/src/app/reports/reused-passwords-report.component.html b/apps/web/src/app/reports/reused-passwords-report.component.html new file mode 100644 index 0000000000..e4e1c41bd4 --- /dev/null +++ b/apps/web/src/app/reports/reused-passwords-report.component.html @@ -0,0 +1,77 @@ + +

{{ "reusedPasswordsReportDesc" | i18n }}

+
+ + {{ "loading" | i18n }} +
+
+ + {{ "noReusedPasswords" | i18n }} + + + + {{ "reusedPasswordsFoundDesc" | i18n: (ciphers.length | number) }} + + + + + + + + + +
+ + + + {{ + c.name + }} + + + {{ c.name }} + + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + +
+ {{ c.subTitle }} +
+ + {{ "reusedXTimes" | i18n: passwordUseMap.get(c.login.password) }} + +
+
+
+ diff --git a/apps/web/src/app/reports/reused-passwords-report.component.ts b/apps/web/src/app/reports/reused-passwords-report.component.ts new file mode 100644 index 0000000000..68ce3c8527 --- /dev/null +++ b/apps/web/src/app/reports/reused-passwords-report.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { CipherReportComponent } from "./cipher-report.component"; + +@Component({ + selector: "app-reused-passwords-report", + templateUrl: "reused-passwords-report.component.html", +}) +export class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit { + passwordUseMap: Map; + + constructor( + protected cipherService: CipherService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + passwordRepromptService: PasswordRepromptService + ) { + super(modalService, messagingService, true, stateService, passwordRepromptService); + } + + async ngOnInit() { + if (await this.checkAccess()) { + await super.load(); + } + } + + async setCiphers() { + const allCiphers = await this.getAllCiphers(); + const ciphersWithPasswords: CipherView[] = []; + this.passwordUseMap = new Map(); + allCiphers.forEach((c) => { + if ( + c.type !== CipherType.Login || + c.login.password == null || + c.login.password === "" || + c.isDeleted + ) { + return; + } + ciphersWithPasswords.push(c); + if (this.passwordUseMap.has(c.login.password)) { + this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1); + } else { + this.passwordUseMap.set(c.login.password, 1); + } + }); + const reusedPasswordCiphers = ciphersWithPasswords.filter( + (c) => + this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1 + ); + this.ciphers = reusedPasswordCiphers; + } + + protected getAllCiphers(): Promise { + return this.cipherService.getAllDecrypted(); + } + + protected canManageCipher(c: CipherView): boolean { + // this will only ever be false from an organization view + return true; + } +} diff --git a/apps/web/src/app/reports/unsecured-websites-report.component.html b/apps/web/src/app/reports/unsecured-websites-report.component.html new file mode 100644 index 0000000000..775d36d434 --- /dev/null +++ b/apps/web/src/app/reports/unsecured-websites-report.component.html @@ -0,0 +1,67 @@ + +

{{ "unsecuredWebsitesReportDesc" | i18n }}

+
+ + {{ "loading" | i18n }} +
+
+ + {{ "noUnsecuredWebsites" | i18n }} + + + + {{ "unsecuredWebsitesFoundDesc" | i18n: (ciphers.length | number) }} + + + + + + + + +
+ + + {{ + c.name + }} + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + +
+ {{ c.subTitle }} +
+
+
+ diff --git a/apps/web/src/app/reports/unsecured-websites-report.component.ts b/apps/web/src/app/reports/unsecured-websites-report.component.ts new file mode 100644 index 0000000000..e029002bf0 --- /dev/null +++ b/apps/web/src/app/reports/unsecured-websites-report.component.ts @@ -0,0 +1,48 @@ +import { Component, OnInit } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { CipherReportComponent } from "./cipher-report.component"; + +@Component({ + selector: "app-unsecured-websites-report", + templateUrl: "unsecured-websites-report.component.html", +}) +export class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit { + constructor( + protected cipherService: CipherService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + passwordRepromptService: PasswordRepromptService + ) { + super(modalService, messagingService, true, stateService, passwordRepromptService); + } + + async ngOnInit() { + if (await this.checkAccess()) { + await super.load(); + } + } + + async setCiphers() { + const allCiphers = await this.getAllCiphers(); + const unsecuredCiphers = allCiphers.filter((c) => { + if (c.type !== CipherType.Login || !c.login.hasUris || c.isDeleted) { + return false; + } + return c.login.uris.some((u) => u.uri != null && u.uri.indexOf("http://") === 0); + }); + this.ciphers = unsecuredCiphers; + } + + protected getAllCiphers(): Promise { + return this.cipherService.getAllDecrypted(); + } +} diff --git a/apps/web/src/app/reports/weak-passwords-report.component.html b/apps/web/src/app/reports/weak-passwords-report.component.html new file mode 100644 index 0000000000..15315b5c2d --- /dev/null +++ b/apps/web/src/app/reports/weak-passwords-report.component.html @@ -0,0 +1,77 @@ + +

{{ "weakPasswordsReportDesc" | i18n }}

+
+ + {{ "loading" | i18n }} +
+
+ + {{ "noWeakPasswords" | i18n }} + + + + {{ "weakPasswordsFoundDesc" | i18n: (ciphers.length | number) }} + + + + + + + + + +
+ + + + {{ + c.name + }} + + + {{ c.name }} + + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + +
+ {{ c.subTitle }} +
+ + {{ passwordStrengthMap.get(c.id)[0] | i18n }} + +
+
+
+ diff --git a/apps/web/src/app/reports/weak-passwords-report.component.ts b/apps/web/src/app/reports/weak-passwords-report.component.ts new file mode 100644 index 0000000000..e84ffa1f03 --- /dev/null +++ b/apps/web/src/app/reports/weak-passwords-report.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { CipherReportComponent } from "./cipher-report.component"; + +@Component({ + selector: "app-weak-passwords-report", + templateUrl: "weak-passwords-report.component.html", +}) +export class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit { + passwordStrengthMap = new Map(); + + private passwordStrengthCache = new Map(); + + constructor( + protected cipherService: CipherService, + protected passwordGenerationService: PasswordGenerationService, + modalService: ModalService, + messagingService: MessagingService, + stateService: StateService, + passwordRepromptService: PasswordRepromptService + ) { + super(modalService, messagingService, true, stateService, passwordRepromptService); + } + + async ngOnInit() { + if (await this.checkAccess()) { + await super.load(); + } + } + + async setCiphers() { + const allCiphers = await this.getAllCiphers(); + const weakPasswordCiphers: CipherView[] = []; + const isUserNameNotEmpty = (c: CipherView): boolean => { + return c.login.username != null && c.login.username.trim() !== ""; + }; + const getCacheKey = (c: CipherView): string => { + return c.login.password + "_____" + (isUserNameNotEmpty(c) ? c.login.username : ""); + }; + + allCiphers.forEach((c) => { + if ( + c.type !== CipherType.Login || + c.login.password == null || + c.login.password === "" || + c.isDeleted + ) { + return; + } + const hasUserName = isUserNameNotEmpty(c); + const cacheKey = getCacheKey(c); + if (!this.passwordStrengthCache.has(cacheKey)) { + let userInput: string[] = []; + if (hasUserName) { + const atPosition = c.login.username.indexOf("@"); + if (atPosition > -1) { + userInput = userInput + .concat( + c.login.username + .substr(0, atPosition) + .trim() + .toLowerCase() + .split(/[^A-Za-z0-9]/) + ) + .filter((i) => i.length >= 3); + } else { + userInput = c.login.username + .trim() + .toLowerCase() + .split(/[^A-Za-z0-9]/) + .filter((i) => i.length >= 3); + } + } + const result = this.passwordGenerationService.passwordStrength( + c.login.password, + userInput.length > 0 ? userInput : null + ); + this.passwordStrengthCache.set(cacheKey, result.score); + } + const score = this.passwordStrengthCache.get(cacheKey); + if (score != null && score <= 2) { + this.passwordStrengthMap.set(c.id, this.scoreKey(score)); + weakPasswordCiphers.push(c); + } + }); + weakPasswordCiphers.sort((a, b) => { + return ( + this.passwordStrengthCache.get(getCacheKey(a)) - + this.passwordStrengthCache.get(getCacheKey(b)) + ); + }); + this.ciphers = weakPasswordCiphers; + } + + protected getAllCiphers(): Promise { + return this.cipherService.getAllDecrypted(); + } + + protected canManageCipher(c: CipherView): boolean { + // this will only ever be false from the org view; + return true; + } + + private scoreKey(score: number): [string, string] { + switch (score) { + case 4: + return ["strong", "success"]; + case 3: + return ["good", "primary"]; + case 2: + return ["weak", "warning"]; + default: + return ["veryWeak", "danger"]; + } + } +} diff --git a/apps/web/src/app/send/access.component.html b/apps/web/src/app/send/access.component.html new file mode 100644 index 0000000000..b581861020 --- /dev/null +++ b/apps/web/src/app/send/access.component.html @@ -0,0 +1,152 @@ +
+
+
+

Bitwarden Send

+
+
+

{{ "sendCreatorIdentifier" | i18n: creatorIdentifier }}

+
+
+ + {{ "viewSendHiddenEmailWarning" | i18n }} + {{ + "learnMore" | i18n + }}. + +
+
+
+
+
+
+ + {{ "loading" | i18n }} +
+
+

{{ "sendProtectedPassword" | i18n }}

+

{{ "sendProtectedPasswordDontKnow" | i18n }}

+
+ + +
+
+ +
+
+
+ {{ "sendAccessUnavailable" | i18n }} +
+
+ {{ "unexpectedError" | i18n }} +
+
+

+ {{ send.name }} +

+
+ + + {{ + "sendHiddenByDefault" | i18n + }} +
+ +
+ + +
+ + +

{{ send.file.fileName }}

+ + +
+

+ Expires: {{ expirationDate | date: "medium" }} +

+
+
+
+
+

+ {{ "sendAccessTaglineProductDesc" | i18n }}
+ {{ "sendAccessTaglineLearnMore" | i18n }} + Bitwarden Send + {{ "sendAccessTaglineOr" | i18n }} + {{ + "sendAccessTaglineSignUp" | i18n + }} + {{ "sendAccessTaglineTryToday" | i18n }} +

+
+
+
diff --git a/apps/web/src/app/send/access.component.ts b/apps/web/src/app/send/access.component.ts new file mode 100644 index 0000000000..2665f28bf9 --- /dev/null +++ b/apps/web/src/app/send/access.component.ts @@ -0,0 +1,179 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SEND_KDF_ITERATIONS } from "jslib-common/enums/kdfType"; +import { SendType } from "jslib-common/enums/sendType"; +import { Utils } from "jslib-common/misc/utils"; +import { SendAccess } from "jslib-common/models/domain/sendAccess"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { SendAccessRequest } from "jslib-common/models/request/sendAccessRequest"; +import { ErrorResponse } from "jslib-common/models/response/errorResponse"; +import { SendAccessResponse } from "jslib-common/models/response/sendAccessResponse"; +import { SendAccessView } from "jslib-common/models/view/sendAccessView"; + +@Component({ + selector: "app-send-access", + templateUrl: "access.component.html", +}) +export class AccessComponent implements OnInit { + send: SendAccessView; + sendType = SendType; + downloading = false; + loading = true; + passwordRequired = false; + formPromise: Promise; + password: string; + showText = false; + unavailable = false; + error = false; + hideEmail = false; + + private id: string; + private key: string; + private decKey: SymmetricCryptoKey; + private accessRequest: SendAccessRequest; + + constructor( + private i18nService: I18nService, + private cryptoFunctionService: CryptoFunctionService, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private route: ActivatedRoute, + private cryptoService: CryptoService + ) {} + + get sendText() { + if (this.send == null || this.send.text == null) { + return null; + } + return this.showText ? this.send.text.text : this.send.text.maskedText; + } + + get expirationDate() { + if (this.send == null || this.send.expirationDate == null) { + return null; + } + return this.send.expirationDate; + } + + get creatorIdentifier() { + if (this.send == null || this.send.creatorIdentifier == null) { + return null; + } + return this.send.creatorIdentifier; + } + + ngOnInit() { + this.route.params.subscribe(async (params) => { + this.id = params.sendId; + this.key = params.key; + if (this.key == null || this.id == null) { + return; + } + await this.load(); + }); + } + + async download() { + if (this.send == null || this.decKey == null) { + return; + } + + if (this.downloading) { + return; + } + + const downloadData = await this.apiService.getSendFileDownloadData( + this.send, + this.accessRequest + ); + + if (Utils.isNullOrWhitespace(downloadData.url)) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("missingSendFile")); + return; + } + + this.downloading = true; + const response = await fetch(new Request(downloadData.url, { cache: "no-store" })); + if (response.status !== 200) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("errorOccurred")); + this.downloading = false; + return; + } + + try { + const buf = await response.arrayBuffer(); + const decBuf = await this.cryptoService.decryptFromBytes(buf, this.decKey); + this.platformUtilsService.saveFile(window, decBuf, null, this.send.file.fileName); + } catch (e) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("errorOccurred")); + } + + this.downloading = false; + } + + copyText() { + this.platformUtilsService.copyToClipboard(this.send.text.text); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("valueCopied", this.i18nService.t("sendTypeText")) + ); + } + + toggleText() { + this.showText = !this.showText; + } + + async load() { + this.unavailable = false; + this.error = false; + this.hideEmail = false; + const keyArray = Utils.fromUrlB64ToArray(this.key); + this.accessRequest = new SendAccessRequest(); + if (this.password != null) { + const passwordHash = await this.cryptoFunctionService.pbkdf2( + this.password, + keyArray, + "sha256", + SEND_KDF_ITERATIONS + ); + this.accessRequest.password = Utils.fromBufferToB64(passwordHash); + } + try { + let sendResponse: SendAccessResponse = null; + if (this.loading) { + sendResponse = await this.apiService.postSendAccess(this.id, this.accessRequest); + } else { + this.formPromise = this.apiService.postSendAccess(this.id, this.accessRequest); + sendResponse = await this.formPromise; + } + this.passwordRequired = false; + const sendAccess = new SendAccess(sendResponse); + this.decKey = await this.cryptoService.makeSendKey(keyArray); + this.send = await sendAccess.decrypt(this.decKey); + this.showText = this.send.text != null ? !this.send.text.hidden : true; + } catch (e) { + if (e instanceof ErrorResponse) { + if (e.statusCode === 401) { + this.passwordRequired = true; + } else if (e.statusCode === 404) { + this.unavailable = true; + } else { + this.error = true; + } + } + } + this.loading = false; + this.hideEmail = + this.creatorIdentifier == null && + !this.passwordRequired && + !this.loading && + !this.unavailable; + } +} diff --git a/apps/web/src/app/send/add-edit.component.html b/apps/web/src/app/send/add-edit.component.html new file mode 100644 index 0000000000..8d6c066bab --- /dev/null +++ b/apps/web/src/app/send/add-edit.component.html @@ -0,0 +1,308 @@ + diff --git a/apps/web/src/app/send/add-edit.component.ts b/apps/web/src/app/send/add-edit.component.ts new file mode 100644 index 0000000000..6a2aacead1 --- /dev/null +++ b/apps/web/src/app/send/add-edit.component.ts @@ -0,0 +1,50 @@ +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 copyLinkToClipboard(link: string): Promise { + // Copy function on web depends on the modal being open or not. Since this event occurs during a transition + // of the modal closing we need to add a small delay to make sure state of the DOM is consistent. + return new Promise((resolve) => { + window.setTimeout(() => resolve(super.copyLinkToClipboard(link)), 500); + }); + } +} diff --git a/apps/web/src/app/send/efflux-dates.component.html b/apps/web/src/app/send/efflux-dates.component.html new file mode 100644 index 0000000000..f8974e00c4 --- /dev/null +++ b/apps/web/src/app/send/efflux-dates.component.html @@ -0,0 +1,191 @@ +
+
+ + + + +
+ + +
+
+ +
+ + +
+
+ + + +
+
+
+ + + + +
+
+ +
+
{{ "deletionDateDesc" | i18n }}
+
+
+
+ + + {{ "clear" | i18n }} + +
+ + +
+ + +
+ +
+ + +
+ + + +
+
+
+ + + + +
+
+ +
+
{{ "expirationDateDesc" | i18n }}
+
+
diff --git a/apps/web/src/app/send/efflux-dates.component.ts b/apps/web/src/app/send/efflux-dates.component.ts new file mode 100644 index 0000000000..27bb1fb110 --- /dev/null +++ b/apps/web/src/app/send/efflux-dates.component.ts @@ -0,0 +1,22 @@ +import { DatePipe } from "@angular/common"; +import { Component } 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 { + constructor( + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + protected datePipe: DatePipe + ) { + super(i18nService, platformUtilsService, datePipe); + } +} diff --git a/apps/web/src/app/send/send.component.html b/apps/web/src/app/send/send.component.html new file mode 100644 index 0000000000..eed3cdfa56 --- /dev/null +++ b/apps/web/src/app/send/send.component.html @@ -0,0 +1,201 @@ +
+ + {{ "sendDisabledWarning" | i18n }} + +
+
+
+
+ {{ "filters" | i18n }} +
+
+ +
+
    +
  • + + + +
  • +
+
+
+
+

{{ "types" | i18n }}

+
+
    +
  • + + + +
  • +
  • + + + +
  • +
+
+
+
+
+
+ + + + + + + + + + +
+ + + {{ s.name }} + + + {{ "disabled" | i18n }} + + + + {{ "password" | i18n }} + + + + {{ "maxAccessCountReached" | i18n }} + + + + {{ "expired" | i18n }} + + + + {{ "pendingDeletion" | i18n }} + +
+ {{ s.deletionDate | date: "medium" }} +
+ + + + + + +
+
+ + + {{ "loading" | i18n }} + + +

{{ "noSendsInList" | i18n }}

+ +
+
+
+
+
+ diff --git a/apps/web/src/app/send/send.component.ts b/apps/web/src/app/send/send.component.ts new file mode 100644 index 0000000000..fc8bbb623a --- /dev/null +++ b/apps/web/src/app/send/send.component.ts @@ -0,0 +1,101 @@ +import { Component, NgZone, ViewChild, ViewContainerRef } from "@angular/core"; + +import { SendComponent as BaseSendComponent } from "jslib-angular/components/send/send.component"; +import { ModalService } from "jslib-angular/services/modal.service"; +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 { AddEditComponent } from "./add-edit.component"; + +const BroadcasterSubscriptionId = "SendComponent"; + +@Component({ + selector: "app-send", + templateUrl: "send.component.html", +}) +export class SendComponent extends BaseSendComponent { + @ViewChild("sendAddEdit", { read: ViewContainerRef, static: true }) + sendAddEditModalRef: ViewContainerRef; + + constructor( + sendService: SendService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + environmentService: EnvironmentService, + ngZone: NgZone, + searchService: SearchService, + policyService: PolicyService, + private modalService: ModalService, + private broadcasterService: BroadcasterService, + logService: LogService + ) { + super( + sendService, + i18nService, + platformUtilsService, + environmentService, + ngZone, + searchService, + policyService, + logService + ); + } + + async ngOnInit() { + await super.ngOnInit(); + await this.load(); + + // Broadcaster subscription - load if sync completes in the background + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + if (message.successfully) { + await this.load(); + } + break; + } + }); + }); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async addSend() { + if (this.disableSend) { + return; + } + + const component = await this.editSend(null); + component.type = this.type; + } + + async editSend(send: SendView) { + const [modal, childComponent] = await this.modalService.openViewRef( + AddEditComponent, + this.sendAddEditModalRef, + (comp) => { + comp.sendId = send == null ? null : send.id; + comp.onSavedSend.subscribe(async () => { + modal.close(); + await this.load(); + }); + comp.onDeletedSend.subscribe(async () => { + modal.close(); + await this.load(); + }); + } + ); + + return childComponent; + } +} diff --git a/apps/web/src/app/services/event.service.ts b/apps/web/src/app/services/event.service.ts new file mode 100644 index 0000000000..02f50cf7b3 --- /dev/null +++ b/apps/web/src/app/services/event.service.ts @@ -0,0 +1,559 @@ +import { Injectable } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { DeviceType } from "jslib-common/enums/deviceType"; +import { EventType } from "jslib-common/enums/eventType"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { EventResponse } from "jslib-common/models/response/eventResponse"; + +@Injectable() +export class EventService { + constructor(private i18nService: I18nService, private policyService: PolicyService) {} + + getDefaultDateFilters() { + const d = new Date(); + const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59); + d.setDate(d.getDate() - 30); + const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0); + return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)]; + } + + formatDateFilters(filterStart: string, filterEnd: string) { + const start: Date = new Date(filterStart); + const end: Date = new Date(filterEnd + ":59.999"); + if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) { + throw new Error("Invalid date range."); + } + return [start.toISOString(), end.toISOString()]; + } + + async getEventInfo(ev: EventResponse, options = new EventOptions()): Promise { + const appInfo = this.getAppInfo(ev.deviceType); + const { message, humanReadableMessage } = await this.getEventMessage(ev, options); + return { + message: message, + humanReadableMessage: humanReadableMessage, + appIcon: appInfo[0], + appName: appInfo[1], + }; + } + + private async getEventMessage(ev: EventResponse, options: EventOptions) { + let msg = ""; + let humanReadableMsg = ""; + switch (ev.type) { + // User + case EventType.User_LoggedIn: + msg = humanReadableMsg = this.i18nService.t("loggedIn"); + break; + case EventType.User_ChangedPassword: + msg = humanReadableMsg = this.i18nService.t("changedPassword"); + break; + case EventType.User_Updated2fa: + msg = humanReadableMsg = this.i18nService.t("enabledUpdated2fa"); + break; + case EventType.User_Disabled2fa: + msg = humanReadableMsg = this.i18nService.t("disabled2fa"); + break; + case EventType.User_Recovered2fa: + msg = humanReadableMsg = this.i18nService.t("recovered2fa"); + break; + case EventType.User_FailedLogIn: + msg = humanReadableMsg = this.i18nService.t("failedLogin"); + break; + case EventType.User_FailedLogIn2fa: + msg = humanReadableMsg = this.i18nService.t("failedLogin2fa"); + break; + case EventType.User_ClientExportedVault: + msg = humanReadableMsg = this.i18nService.t("exportedVault"); + break; + case EventType.User_UpdatedTempPassword: + msg = humanReadableMsg = this.i18nService.t("updatedMasterPassword"); + break; + case EventType.User_MigratedKeyToKeyConnector: + msg = humanReadableMsg = this.i18nService.t("migratedKeyConnector"); + break; + // Cipher + case EventType.Cipher_Created: + msg = this.i18nService.t("createdItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("createdItemId", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_Updated: + msg = this.i18nService.t("editedItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("editedItemId", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_Deleted: + msg = this.i18nService.t("permanentlyDeletedItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "permanentlyDeletedItemId", + this.getShortId(ev.cipherId) + ); + break; + case EventType.Cipher_SoftDeleted: + msg = this.i18nService.t("deletedItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("deletedItemId", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_Restored: + msg = this.i18nService.t("restoredItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("restoredItemId", this.formatCipherId(ev, options)); + break; + case EventType.Cipher_AttachmentCreated: + msg = this.i18nService.t("createdAttachmentForItem", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "createdAttachmentForItem", + this.getShortId(ev.cipherId) + ); + break; + case EventType.Cipher_AttachmentDeleted: + msg = this.i18nService.t("deletedAttachmentForItem", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "deletedAttachmentForItem", + this.getShortId(ev.cipherId) + ); + break; + case EventType.Cipher_Shared: + msg = this.i18nService.t("movedItemIdToOrg", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("movedItemIdToOrg", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_ClientViewed: + msg = this.i18nService.t("viewedItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("viewedItemId", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_ClientToggledPasswordVisible: + msg = this.i18nService.t("viewedPasswordItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("viewedPasswordItemId", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_ClientToggledHiddenFieldVisible: + msg = this.i18nService.t("viewedHiddenFieldItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "viewedHiddenFieldItemId", + this.getShortId(ev.cipherId) + ); + break; + case EventType.Cipher_ClientToggledCardCodeVisible: + msg = this.i18nService.t("viewedSecurityCodeItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "viewedSecurityCodeItemId", + this.getShortId(ev.cipherId) + ); + break; + case EventType.Cipher_ClientCopiedHiddenField: + msg = this.i18nService.t("copiedHiddenFieldItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "copiedHiddenFieldItemId", + this.getShortId(ev.cipherId) + ); + break; + case EventType.Cipher_ClientCopiedPassword: + msg = this.i18nService.t("copiedPasswordItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("copiedPasswordItemId", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_ClientCopiedCardCode: + msg = this.i18nService.t("copiedSecurityCodeItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "copiedSecurityCodeItemId", + this.getShortId(ev.cipherId) + ); + break; + case EventType.Cipher_ClientAutofilled: + msg = this.i18nService.t("autofilledItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t("autofilledItemId", this.getShortId(ev.cipherId)); + break; + case EventType.Cipher_UpdatedCollections: + msg = this.i18nService.t("editedCollectionsForItem", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "editedCollectionsForItem", + this.getShortId(ev.cipherId) + ); + break; + // Collection + case EventType.Collection_Created: + msg = this.i18nService.t("createdCollectionId", this.formatCollectionId(ev)); + humanReadableMsg = this.i18nService.t( + "createdCollectionId", + this.getShortId(ev.collectionId) + ); + break; + case EventType.Collection_Updated: + msg = this.i18nService.t("editedCollectionId", this.formatCollectionId(ev)); + humanReadableMsg = this.i18nService.t( + "editedCollectionId", + this.getShortId(ev.collectionId) + ); + break; + case EventType.Collection_Deleted: + msg = this.i18nService.t("deletedCollectionId", this.formatCollectionId(ev)); + humanReadableMsg = this.i18nService.t( + "deletedCollectionId", + this.getShortId(ev.collectionId) + ); + break; + // Group + case EventType.Group_Created: + msg = this.i18nService.t("createdGroupId", this.formatGroupId(ev)); + humanReadableMsg = this.i18nService.t("createdGroupId", this.getShortId(ev.groupId)); + break; + case EventType.Group_Updated: + msg = this.i18nService.t("editedGroupId", this.formatGroupId(ev)); + humanReadableMsg = this.i18nService.t("editedGroupId", this.getShortId(ev.groupId)); + break; + case EventType.Group_Deleted: + msg = this.i18nService.t("deletedGroupId", this.formatGroupId(ev)); + humanReadableMsg = this.i18nService.t("deletedGroupId", this.getShortId(ev.groupId)); + break; + // Org user + case EventType.OrganizationUser_Invited: + msg = this.i18nService.t("invitedUserId", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "invitedUserId", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_Confirmed: + msg = this.i18nService.t("confirmedUserId", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "confirmedUserId", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_Updated: + msg = this.i18nService.t("editedUserId", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "editedUserId", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_Removed: + msg = this.i18nService.t("removedUserId", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "removedUserId", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_UpdatedGroups: + msg = this.i18nService.t("editedGroupsForUser", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "editedGroupsForUser", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_UnlinkedSso: + msg = this.i18nService.t("unlinkedSsoUser", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "unlinkedSsoUser", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_ResetPassword_Enroll: + msg = this.i18nService.t("eventEnrollPasswordReset", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "eventEnrollPasswordReset", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_ResetPassword_Withdraw: + msg = this.i18nService.t("eventWithdrawPasswordReset", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "eventWithdrawPasswordReset", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_AdminResetPassword: + msg = this.i18nService.t("eventAdminPasswordReset", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "eventAdminPasswordReset", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_ResetSsoLink: + msg = this.i18nService.t("eventResetSsoLink", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "eventResetSsoLink", + this.getShortId(ev.organizationUserId) + ); + break; + case EventType.OrganizationUser_FirstSsoLogin: + msg = this.i18nService.t("firstSsoLogin", this.formatOrgUserId(ev)); + humanReadableMsg = this.i18nService.t( + "firstSsoLogin", + this.getShortId(ev.organizationUserId) + ); + break; + // Org + case EventType.Organization_Updated: + msg = humanReadableMsg = this.i18nService.t("editedOrgSettings"); + break; + case EventType.Organization_PurgedVault: + msg = humanReadableMsg = this.i18nService.t("purgedOrganizationVault"); + break; + /* + case EventType.Organization_ClientExportedVault: + msg = this.i18nService.t('exportedOrganizationVault'); + break; + */ + case EventType.Organization_VaultAccessed: + msg = humanReadableMsg = this.i18nService.t("vaultAccessedByProvider"); + break; + case EventType.Organization_EnabledSso: + msg = humanReadableMsg = this.i18nService.t("enabledSso"); + break; + case EventType.Organization_DisabledSso: + msg = humanReadableMsg = this.i18nService.t("disabledSso"); + break; + case EventType.Organization_EnabledKeyConnector: + msg = humanReadableMsg = this.i18nService.t("enabledKeyConnector"); + break; + case EventType.Organization_DisabledKeyConnector: + msg = humanReadableMsg = this.i18nService.t("disabledKeyConnector"); + break; + case EventType.Organization_SponsorshipsSynced: + msg = humanReadableMsg = this.i18nService.t("sponsorshipsSynced"); + break; + // Policies + case EventType.Policy_Updated: { + msg = this.i18nService.t("modifiedPolicyId", this.formatPolicyId(ev)); + + const policies = await this.policyService.getAll(); + const policy = policies.filter((p) => p.id === ev.policyId)[0]; + let p1 = this.getShortId(ev.policyId); + if (policy != null) { + p1 = PolicyType[policy.type]; + } + + humanReadableMsg = this.i18nService.t("modifiedPolicyId", p1); + break; + } + // Provider users: + case EventType.ProviderUser_Invited: + msg = this.i18nService.t("invitedUserId", this.formatProviderUserId(ev)); + humanReadableMsg = this.i18nService.t("invitedUserId", this.getShortId(ev.providerUserId)); + break; + case EventType.ProviderUser_Confirmed: + msg = this.i18nService.t("confirmedUserId", this.formatProviderUserId(ev)); + humanReadableMsg = this.i18nService.t( + "confirmedUserId", + this.getShortId(ev.providerUserId) + ); + break; + case EventType.ProviderUser_Updated: + msg = this.i18nService.t("editedUserId", this.formatProviderUserId(ev)); + humanReadableMsg = this.i18nService.t("editedUserId", this.getShortId(ev.providerUserId)); + break; + case EventType.ProviderUser_Removed: + msg = this.i18nService.t("removedUserId", this.formatProviderUserId(ev)); + humanReadableMsg = this.i18nService.t("removedUserId", this.getShortId(ev.providerUserId)); + break; + case EventType.ProviderOrganization_Created: + msg = this.i18nService.t("createdOrganizationId", this.formatProviderOrganizationId(ev)); + humanReadableMsg = this.i18nService.t( + "createdOrganizationId", + this.getShortId(ev.providerOrganizationId) + ); + break; + case EventType.ProviderOrganization_Added: + msg = this.i18nService.t("addedOrganizationId", this.formatProviderOrganizationId(ev)); + humanReadableMsg = this.i18nService.t( + "addedOrganizationId", + this.getShortId(ev.providerOrganizationId) + ); + break; + case EventType.ProviderOrganization_Removed: + msg = this.i18nService.t("removedOrganizationId", this.formatProviderOrganizationId(ev)); + humanReadableMsg = this.i18nService.t( + "removedOrganizationId", + this.getShortId(ev.providerOrganizationId) + ); + break; + case EventType.ProviderOrganization_VaultAccessed: + msg = this.i18nService.t("accessedClientVault", this.formatProviderOrganizationId(ev)); + humanReadableMsg = this.i18nService.t( + "accessedClientVault", + this.getShortId(ev.providerOrganizationId) + ); + break; + default: + break; + } + return { + message: msg === "" ? null : msg, + humanReadableMessage: humanReadableMsg === "" ? null : humanReadableMsg, + }; + } + + private getAppInfo(deviceType: DeviceType): [string, string] { + switch (deviceType) { + case DeviceType.Android: + return ["bwi-android", this.i18nService.t("mobile") + " - Android"]; + case DeviceType.iOS: + return ["bwi-apple", this.i18nService.t("mobile") + " - iOS"]; + case DeviceType.UWP: + return ["bwi-windows", this.i18nService.t("mobile") + " - Windows"]; + case DeviceType.ChromeExtension: + return ["bwi-chrome", this.i18nService.t("extension") + " - Chrome"]; + case DeviceType.FirefoxExtension: + return ["bwi-firefox", this.i18nService.t("extension") + " - Firefox"]; + case DeviceType.OperaExtension: + return ["bwi-opera", this.i18nService.t("extension") + " - Opera"]; + case DeviceType.EdgeExtension: + return ["bwi-edge", this.i18nService.t("extension") + " - Edge"]; + case DeviceType.VivaldiExtension: + return ["bwi-puzzle", this.i18nService.t("extension") + " - Vivaldi"]; + case DeviceType.SafariExtension: + return ["bwi-safari", this.i18nService.t("extension") + " - Safari"]; + case DeviceType.WindowsDesktop: + return ["bwi-windows", this.i18nService.t("desktop") + " - Windows"]; + case DeviceType.MacOsDesktop: + return ["bwi-apple", this.i18nService.t("desktop") + " - macOS"]; + case DeviceType.LinuxDesktop: + return ["bwi-linux", this.i18nService.t("desktop") + " - Linux"]; + case DeviceType.ChromeBrowser: + return ["bwi-globe", this.i18nService.t("webVault") + " - Chrome"]; + case DeviceType.FirefoxBrowser: + return ["bwi-globe", this.i18nService.t("webVault") + " - Firefox"]; + case DeviceType.OperaBrowser: + return ["bwi-globe", this.i18nService.t("webVault") + " - Opera"]; + case DeviceType.SafariBrowser: + return ["bwi-globe", this.i18nService.t("webVault") + " - Safari"]; + case DeviceType.VivaldiBrowser: + return ["bwi-globe", this.i18nService.t("webVault") + " - Vivaldi"]; + case DeviceType.EdgeBrowser: + return ["bwi-globe", this.i18nService.t("webVault") + " - Edge"]; + case DeviceType.IEBrowser: + return ["bwi-globe", this.i18nService.t("webVault") + " - IE"]; + case DeviceType.UnknownBrowser: + return [ + "bwi-globe", + this.i18nService.t("webVault") + " - " + this.i18nService.t("unknown"), + ]; + default: + return ["bwi-globe", this.i18nService.t("unknown")]; + } + } + + private formatCipherId(ev: EventResponse, options: EventOptions) { + const shortId = this.getShortId(ev.cipherId); + if (ev.organizationId == null || !options.cipherInfo) { + return "" + shortId + ""; + } + const a = this.makeAnchor(shortId); + a.setAttribute( + "href", + "#/organizations/" + + ev.organizationId + + "/vault?search=" + + shortId + + "&viewEvents=" + + ev.cipherId + ); + return a.outerHTML; + } + + private formatGroupId(ev: EventResponse) { + const shortId = this.getShortId(ev.groupId); + const a = this.makeAnchor(shortId); + a.setAttribute( + "href", + "#/organizations/" + ev.organizationId + "/manage/groups?search=" + shortId + ); + return a.outerHTML; + } + + private formatCollectionId(ev: EventResponse) { + const shortId = this.getShortId(ev.collectionId); + const a = this.makeAnchor(shortId); + a.setAttribute( + "href", + "#/organizations/" + ev.organizationId + "/manage/collections?search=" + shortId + ); + return a.outerHTML; + } + + private formatOrgUserId(ev: EventResponse) { + const shortId = this.getShortId(ev.organizationUserId); + const a = this.makeAnchor(shortId); + a.setAttribute( + "href", + "#/organizations/" + + ev.organizationId + + "/manage/people?search=" + + shortId + + "&viewEvents=" + + ev.organizationUserId + ); + return a.outerHTML; + } + + private formatProviderUserId(ev: EventResponse) { + const shortId = this.getShortId(ev.providerUserId); + const a = this.makeAnchor(shortId); + a.setAttribute( + "href", + "#/providers/" + + ev.providerId + + "/manage/people?search=" + + shortId + + "&viewEvents=" + + ev.providerUserId + ); + return a.outerHTML; + } + + private formatProviderOrganizationId(ev: EventResponse) { + const shortId = this.getShortId(ev.providerOrganizationId); + const a = this.makeAnchor(shortId); + a.setAttribute("href", "#/providers/" + ev.providerId + "/clients?search=" + shortId); + return a.outerHTML; + } + + private formatPolicyId(ev: EventResponse) { + const shortId = this.getShortId(ev.policyId); + const a = this.makeAnchor(shortId); + a.setAttribute( + "href", + "#/organizations/" + ev.organizationId + "/manage/policies?policyId=" + ev.policyId + ); + return a.outerHTML; + } + + private makeAnchor(shortId: string) { + const a = document.createElement("a"); + a.title = this.i18nService.t("view"); + a.innerHTML = "" + shortId + ""; + return a; + } + + private getShortId(id: string) { + return id?.substring(0, 8); + } + + private toDateTimeLocalString(date: Date) { + return ( + date.getFullYear() + + "-" + + this.pad(date.getMonth() + 1) + + "-" + + this.pad(date.getDate()) + + "T" + + this.pad(date.getHours()) + + ":" + + this.pad(date.getMinutes()) + ); + } + + private pad(num: number) { + const norm = Math.floor(Math.abs(num)); + return (norm < 10 ? "0" : "") + norm; + } +} + +export class EventInfo { + message: string; + humanReadableMessage: string; + appIcon: string; + appName: string; +} + +export class EventOptions { + cipherInfo = true; +} diff --git a/apps/web/src/app/services/init.service.ts b/apps/web/src/app/services/init.service.ts new file mode 100644 index 0000000000..eacfea9773 --- /dev/null +++ b/apps/web/src/app/services/init.service.ts @@ -0,0 +1,69 @@ +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, + Urls, +} from "jslib-common/abstractions/environment.service"; +import { EventService as EventLoggingServiceAbstraction } 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 { 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 as EventLoggingService } from "jslib-common/services/event.service"; +import { VaultTimeoutService as VaultTimeoutService } from "jslib-common/services/vaultTimeout.service"; + +import { I18nService as I18nService } from "../../services/i18n.service"; + +@Injectable() +export class InitService { + constructor( + @Inject(WINDOW) private win: Window, + private environmentService: EnvironmentServiceAbstraction, + private notificationsService: NotificationsServiceAbstraction, + private vaultTimeoutService: VaultTimeoutServiceAbstraction, + private i18nService: I18nServiceAbstraction, + private eventLoggingService: EventLoggingServiceAbstraction, + private twoFactorService: TwoFactorServiceAbstraction, + private stateService: StateServiceAbstraction, + private platformUtilsService: PlatformUtilsServiceAbstraction, + private cryptoService: CryptoServiceAbstraction + ) {} + + init() { + return async () => { + await this.stateService.init(); + + const urls = process.env.URLS as Urls; + urls.base ??= this.win.location.origin; + this.environmentService.setUrls(urls); + + setTimeout(() => this.notificationsService.init(), 3000); + + (this.vaultTimeoutService as VaultTimeoutService).init(true); + const locale = await this.stateService.getLocale(); + await (this.i18nService as I18nService).init(locale); + (this.eventLoggingService as EventLoggingService).init(true); + this.twoFactorService.init(); + const htmlEl = this.win.document.documentElement; + htmlEl.classList.add("locale_" + this.i18nService.translationLocale); + + // Initial theme is set in index.html which must be updated if there are any changes to theming logic + this.platformUtilsService.onDefaultSystemThemeChange(async (sysTheme) => { + const bwTheme = await this.stateService.getTheme(); + if (bwTheme === ThemeType.System) { + htmlEl.classList.remove("theme_" + ThemeType.Light, "theme_" + ThemeType.Dark); + htmlEl.classList.add("theme_" + sysTheme); + } + }); + + const containerService = new ContainerService(this.cryptoService); + containerService.attachToWindow(this.win); + }; + } +} diff --git a/apps/web/src/app/services/modal.service.ts b/apps/web/src/app/services/modal.service.ts new file mode 100644 index 0000000000..760796fe17 --- /dev/null +++ b/apps/web/src/app/services/modal.service.ts @@ -0,0 +1,58 @@ +import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector } from "@angular/core"; +import * as jq from "jquery"; +import { first } from "rxjs/operators"; + +import { ModalRef } from "jslib-angular/components/modal/modal.ref"; +import { ModalService as BaseModalService } from "jslib-angular/services/modal.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { Utils } from "jslib-common/misc/utils"; + +@Injectable() +export class ModalService extends BaseModalService { + el: any = null; + modalOpen = false; + + constructor( + componentFactoryResolver: ComponentFactoryResolver, + applicationRef: ApplicationRef, + injector: Injector, + private messagingService: MessagingService + ) { + super(componentFactoryResolver, applicationRef, injector); + } + + protected setupHandlers(modalRef: ModalRef) { + modalRef.onCreated.pipe(first()).subscribe(() => { + const modals = Array.from(document.querySelectorAll(".modal")); + if (modals.length > 0) { + this.el = jq(modals[0]); + this.el.modal("show"); + + this.el.on("show.bs.modal", () => { + modalRef.show(); + this.messagingService.send("modalShow"); + }); + this.el.on("shown.bs.modal", () => { + modalRef.shown(); + this.messagingService.send("modalShown"); + if (!Utils.isMobileBrowser) { + this.el.find("*[appAutoFocus]").focus(); + } + }); + this.el.on("hide.bs.modal", () => { + this.messagingService.send("modalClose"); + }); + this.el.on("hidden.bs.modal", () => { + modalRef.closed(); + this.messagingService.send("modalClosed"); + }); + } + }); + + modalRef.onClose.pipe(first()).subscribe(() => { + if (this.el != null) { + this.el.modal("hide"); + } + }); + } +} diff --git a/apps/web/src/app/services/policy-list.service.ts b/apps/web/src/app/services/policy-list.service.ts new file mode 100644 index 0000000000..70857ef819 --- /dev/null +++ b/apps/web/src/app/services/policy-list.service.ts @@ -0,0 +1,13 @@ +import { BasePolicy } from "../organizations/policies/base-policy.component"; + +export class PolicyListService { + private policies: BasePolicy[] = []; + + addPolicies(policies: BasePolicy[]) { + this.policies.push(...policies); + } + + getPolicies(): BasePolicy[] { + return this.policies; + } +} diff --git a/apps/web/src/app/services/router.service.ts b/apps/web/src/app/services/router.service.ts new file mode 100644 index 0000000000..7493e2cb5a --- /dev/null +++ b/apps/web/src/app/services/router.service.ts @@ -0,0 +1,56 @@ +import { Injectable } from "@angular/core"; +import { Title } from "@angular/platform-browser"; +import { ActivatedRoute, NavigationEnd, Router } from "@angular/router"; +import { filter } from "rxjs"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; + +@Injectable() +export class RouterService { + private previousUrl: string = undefined; + private currentUrl: string = undefined; + + constructor( + private router: Router, + private activatedRoute: ActivatedRoute, + private titleService: Title, + i18nService: I18nService + ) { + this.currentUrl = this.router.url; + + router.events + .pipe(filter((e) => e instanceof NavigationEnd)) + .subscribe((event: NavigationEnd) => { + this.currentUrl = event.url; + + let title = i18nService.t("pageTitle", "Bitwarden"); + let child = this.activatedRoute.firstChild; + while (child.firstChild) { + child = child.firstChild; + } + + const titleId: string = child?.snapshot?.data?.titleId; + const rawTitle: string = child?.snapshot?.data?.title; + const updateUrl = !child?.snapshot?.data?.doNotSaveUrl ?? true; + + if (titleId != null || rawTitle != null) { + const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId); + if (newTitle != null && newTitle !== "") { + title = newTitle + " | " + title; + } + } + this.titleService.setTitle(title); + if (updateUrl) { + this.setPreviousUrl(this.currentUrl); + } + }); + } + + getPreviousUrl() { + return this.previousUrl; + } + + setPreviousUrl(url: string) { + this.previousUrl = url; + } +} diff --git a/apps/web/src/app/services/services.module.ts b/apps/web/src/app/services/services.module.ts new file mode 100644 index 0000000000..b99eda72d2 --- /dev/null +++ b/apps/web/src/app/services/services.module.ts @@ -0,0 +1,134 @@ +import { APP_INITIALIZER, NgModule } from "@angular/core"; +import { ToastrModule } from "ngx-toastr"; + +import { + JslibServicesModule, + SECURE_STORAGE, + STATE_FACTORY, + STATE_SERVICE_USE_CACHE, + LOCALES_DIRECTORY, + SYSTEM_LANGUAGE, +} from "jslib-angular/services/jslib-services.module"; +import { ModalService as ModalServiceAbstraction } from "jslib-angular/services/modal.service"; +import { ApiService as ApiServiceAbstraction } from "jslib-common/abstractions/api.service"; +import { CipherService as CipherServiceAbstraction } from "jslib-common/abstractions/cipher.service"; +import { CollectionService as CollectionServiceAbstraction } from "jslib-common/abstractions/collection.service"; +import { CryptoService as CryptoServiceAbstraction } from "jslib-common/abstractions/crypto.service"; +import { FolderService as FolderServiceAbstraction } from "jslib-common/abstractions/folder.service"; +import { I18nService as I18nServiceAbstraction } from "jslib-common/abstractions/i18n.service"; +import { ImportService as ImportServiceAbstraction } from "jslib-common/abstractions/import.service"; +import { LogService } 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 BaseStateServiceAbstraction } 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 { StateFactory } from "jslib-common/factories/stateFactory"; +import { ImportService } from "jslib-common/services/import.service"; + +import { StateService as StateServiceAbstraction } from "../../abstractions/state.service"; +import { Account } from "../../models/account"; +import { GlobalState } from "../../models/globalState"; +import { BroadcasterMessagingService } from "../../services/broadcasterMessaging.service"; +import { HtmlStorageService } from "../../services/htmlStorage.service"; +import { I18nService } from "../../services/i18n.service"; +import { MemoryStorageService } from "../../services/memoryStorage.service"; +import { PasswordRepromptService } from "../../services/passwordReprompt.service"; +import { StateService } from "../../services/state.service"; +import { StateMigrationService } from "../../services/stateMigration.service"; +import { WebPlatformUtilsService } from "../../services/webPlatformUtils.service"; +import { HomeGuard } from "../guards/home.guard"; +import { PermissionsGuard as OrgPermissionsGuard } from "../organizations/guards/permissions.guard"; +import { NavigationPermissionsService as OrgPermissionsService } from "../organizations/services/navigation-permissions.service"; + +import { EventService } from "./event.service"; +import { InitService } from "./init.service"; +import { ModalService } from "./modal.service"; +import { PolicyListService } from "./policy-list.service"; +import { RouterService } from "./router.service"; + +@NgModule({ + imports: [ToastrModule, JslibServicesModule], + declarations: [], + providers: [ + OrgPermissionsService, + OrgPermissionsGuard, + InitService, + RouterService, + EventService, + PolicyListService, + { + provide: APP_INITIALIZER, + useFactory: (initService: InitService) => initService.init(), + deps: [InitService], + multi: true, + }, + { + provide: STATE_FACTORY, + useValue: new StateFactory(GlobalState, Account), + }, + { + provide: STATE_SERVICE_USE_CACHE, + useValue: false, + }, + { + provide: I18nServiceAbstraction, + useClass: I18nService, + deps: [SYSTEM_LANGUAGE, LOCALES_DIRECTORY], + }, + { provide: StorageServiceAbstraction, useClass: HtmlStorageService }, + { + provide: SECURE_STORAGE, + // TODO: platformUtilsService.isDev has a helper for this, but using that service here results in a circular dependency. + // We have a tech debt item in the backlog to break up platformUtilsService, but in the meantime simply checking the environement here is less cumbersome. + useClass: process.env.NODE_ENV === "development" ? HtmlStorageService : MemoryStorageService, + }, + { + provide: PlatformUtilsServiceAbstraction, + useClass: WebPlatformUtilsService, + }, + { provide: MessagingServiceAbstraction, useClass: BroadcasterMessagingService }, + { provide: ModalServiceAbstraction, useClass: ModalService }, + { + provide: ImportServiceAbstraction, + useClass: ImportService, + deps: [ + CipherServiceAbstraction, + FolderServiceAbstraction, + ApiServiceAbstraction, + I18nServiceAbstraction, + CollectionServiceAbstraction, + PlatformUtilsServiceAbstraction, + CryptoServiceAbstraction, + ], + }, + { + provide: StateMigrationServiceAbstraction, + useClass: StateMigrationService, + deps: [StorageServiceAbstraction, SECURE_STORAGE, STATE_FACTORY], + }, + { + provide: StateServiceAbstraction, + useClass: StateService, + deps: [ + StorageServiceAbstraction, + SECURE_STORAGE, + LogService, + StateMigrationServiceAbstraction, + STATE_FACTORY, + STATE_SERVICE_USE_CACHE, + ], + }, + { + provide: BaseStateServiceAbstraction, + useExisting: StateServiceAbstraction, + }, + { + provide: PasswordRepromptServiceAbstraction, + useClass: PasswordRepromptService, + }, + HomeGuard, + ], +}) +export class ServicesModule {} diff --git a/apps/web/src/app/settings/account.component.html b/apps/web/src/app/settings/account.component.html new file mode 100644 index 0000000000..c88fc1ece0 --- /dev/null +++ b/apps/web/src/app/settings/account.component.html @@ -0,0 +1,32 @@ + + + +
+

{{ "changeEmail" | i18n }}

+
+ +
+
+

{{ "dangerZone" | i18n }}

+
+
+
+

{{ "dangerZoneDesc" | i18n }}

+ + + +
+
+ + + + + diff --git a/apps/web/src/app/settings/account.component.ts b/apps/web/src/app/settings/account.component.ts new file mode 100644 index 0000000000..aa13eb4544 --- /dev/null +++ b/apps/web/src/app/settings/account.component.ts @@ -0,0 +1,48 @@ +import { Component, ViewChild, ViewContainerRef } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +import { DeauthorizeSessionsComponent } from "./deauthorize-sessions.component"; +import { DeleteAccountComponent } from "./delete-account.component"; +import { PurgeVaultComponent } from "./purge-vault.component"; + +@Component({ + selector: "app-account", + templateUrl: "account.component.html", +}) +export class AccountComponent { + @ViewChild("deauthorizeSessionsTemplate", { read: ViewContainerRef, static: true }) + deauthModalRef: ViewContainerRef; + @ViewChild("purgeVaultTemplate", { read: ViewContainerRef, static: true }) + purgeModalRef: ViewContainerRef; + @ViewChild("deleteAccountTemplate", { read: ViewContainerRef, static: true }) + deleteModalRef: ViewContainerRef; + + showChangeEmail = true; + + constructor( + private modalService: ModalService, + private apiService: ApiService, + private keyConnectorService: KeyConnectorService, + private stateService: StateService + ) {} + + async ngOnInit() { + this.showChangeEmail = !(await this.keyConnectorService.getUsesKeyConnector()); + } + + async deauthorizeSessions() { + await this.modalService.openViewRef(DeauthorizeSessionsComponent, this.deauthModalRef); + } + + async purgeVault() { + await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef); + } + + async deleteAccount() { + await this.modalService.openViewRef(DeleteAccountComponent, this.deleteModalRef); + } +} diff --git a/apps/web/src/app/settings/add-credit.component.html b/apps/web/src/app/settings/add-credit.component.html new file mode 100644 index 0000000000..73c71812be --- /dev/null +++ b/apps/web/src/app/settings/add-credit.component.html @@ -0,0 +1,80 @@ +
+
+ +

{{ "addCredit" | i18n }}

+
+
+ + +
+
+ + +
+
+
+
+
+ +
+
$USD
+ +
+
+
+ {{ "creditDelayed" | i18n }} +
+ + +
+
+
+ + + + + + + + + + + + + + + +
diff --git a/apps/web/src/app/settings/add-credit.component.ts b/apps/web/src/app/settings/add-credit.component.ts new file mode 100644 index 0000000000..4d646990ac --- /dev/null +++ b/apps/web/src/app/settings/add-credit.component.ts @@ -0,0 +1,149 @@ +import { + Component, + ElementRef, + EventEmitter, + Input, + OnInit, + Output, + ViewChild, +} from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { PayPalConfig } from "jslib-common/abstractions/environment.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"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { PaymentMethodType } from "jslib-common/enums/paymentMethodType"; +import { BitPayInvoiceRequest } from "jslib-common/models/request/bitPayInvoiceRequest"; + +@Component({ + selector: "app-add-credit", + templateUrl: "add-credit.component.html", +}) +export class AddCreditComponent implements OnInit { + @Input() creditAmount: string; + @Input() showOptions = true; + @Input() method = PaymentMethodType.PayPal; + @Input() organizationId: string; + @Output() onAdded = new EventEmitter(); + @Output() onCanceled = new EventEmitter(); + + @ViewChild("ppButtonForm", { read: ElementRef, static: true }) ppButtonFormRef: ElementRef; + + paymentMethodType = PaymentMethodType; + ppButtonFormAction: string; + ppButtonBusinessId: string; + ppButtonCustomField: string; + ppLoading = false; + subject: string; + returnUrl: string; + formPromise: Promise; + + private userId: string; + private name: string; + private email: string; + + constructor( + private stateService: StateService, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private organizationService: OrganizationService, + private logService: LogService + ) { + const payPalConfig = process.env.PAYPAL_CONFIG as PayPalConfig; + this.ppButtonFormAction = payPalConfig.buttonAction; + this.ppButtonBusinessId = payPalConfig.businessId; + } + + async ngOnInit() { + if (this.organizationId != null) { + if (this.creditAmount == null) { + this.creditAmount = "20.00"; + } + this.ppButtonCustomField = "organization_id:" + this.organizationId; + const org = await this.organizationService.get(this.organizationId); + if (org != null) { + this.subject = org.name; + this.name = org.name; + } + } else { + if (this.creditAmount == null) { + this.creditAmount = "10.00"; + } + this.userId = await this.stateService.getUserId(); + this.subject = await this.stateService.getEmail(); + this.email = this.subject; + this.ppButtonCustomField = "user_id:" + this.userId; + } + this.ppButtonCustomField += ",account_credit:1"; + this.returnUrl = window.location.href; + } + + async submit() { + if (this.creditAmount == null || this.creditAmount === "") { + return; + } + + if (this.method === PaymentMethodType.PayPal) { + this.ppButtonFormRef.nativeElement.submit(); + this.ppLoading = true; + return; + } + if (this.method === PaymentMethodType.BitPay) { + try { + const req = new BitPayInvoiceRequest(); + req.email = this.email; + req.name = this.name; + req.credit = true; + req.amount = this.creditAmountNumber; + req.organizationId = this.organizationId; + req.userId = this.userId; + req.returnUrl = this.returnUrl; + this.formPromise = this.apiService.postBitPayInvoice(req); + const bitPayUrl: string = await this.formPromise; + this.platformUtilsService.launchUri(bitPayUrl); + } catch (e) { + this.logService.error(e); + } + return; + } + try { + this.onAdded.emit(); + } catch (e) { + this.logService.error(e); + } + } + + cancel() { + this.onCanceled.emit(); + } + + formatAmount() { + try { + if (this.creditAmount != null && this.creditAmount !== "") { + const floatAmount = Math.abs(parseFloat(this.creditAmount)); + if (floatAmount > 0) { + this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString()) + .toFixed(2) + .toString(); + return; + } + } + } catch (e) { + this.logService.error(e); + } + this.creditAmount = ""; + } + + get creditAmountNumber(): number { + if (this.creditAmount != null && this.creditAmount !== "") { + try { + return parseFloat(this.creditAmount); + } catch (e) { + this.logService.error(e); + } + } + return null; + } +} diff --git a/apps/web/src/app/settings/adjust-payment.component.html b/apps/web/src/app/settings/adjust-payment.component.html new file mode 100644 index 0000000000..724e7a44c2 --- /dev/null +++ b/apps/web/src/app/settings/adjust-payment.component.html @@ -0,0 +1,19 @@ +
+
+ +

+ {{ (currentType != null ? "changePaymentMethod" : "addPaymentMethod") | i18n }} +

+ + + + +
+
diff --git a/apps/web/src/app/settings/adjust-payment.component.ts b/apps/web/src/app/settings/adjust-payment.component.ts new file mode 100644 index 0000000000..bfa89fef4b --- /dev/null +++ b/apps/web/src/app/settings/adjust-payment.component.ts @@ -0,0 +1,83 @@ +import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core"; + +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 { PaymentMethodType } from "jslib-common/enums/paymentMethodType"; +import { PaymentRequest } from "jslib-common/models/request/paymentRequest"; + +import { PaymentComponent } from "./payment.component"; +import { TaxInfoComponent } from "./tax-info.component"; + +@Component({ + selector: "app-adjust-payment", + templateUrl: "adjust-payment.component.html", +}) +export class AdjustPaymentComponent { + @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent; + @ViewChild(TaxInfoComponent, { static: true }) taxInfoComponent: TaxInfoComponent; + + @Input() currentType?: PaymentMethodType; + @Input() organizationId: string; + @Output() onAdjusted = new EventEmitter(); + @Output() onCanceled = new EventEmitter(); + + paymentMethodType = PaymentMethodType; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async submit() { + try { + const request = new PaymentRequest(); + this.formPromise = this.paymentComponent.createPaymentToken().then((result) => { + request.paymentToken = result[0]; + request.paymentMethodType = result[1]; + request.postalCode = this.taxInfoComponent.taxInfo.postalCode; + request.country = this.taxInfoComponent.taxInfo.country; + if (this.organizationId == null) { + return this.apiService.postAccountPayment(request); + } else { + request.taxId = this.taxInfoComponent.taxInfo.taxId; + request.state = this.taxInfoComponent.taxInfo.state; + request.line1 = this.taxInfoComponent.taxInfo.line1; + request.line2 = this.taxInfoComponent.taxInfo.line2; + request.city = this.taxInfoComponent.taxInfo.city; + request.state = this.taxInfoComponent.taxInfo.state; + return this.apiService.postOrganizationPayment(this.organizationId, request); + } + }); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("updatedPaymentMethod") + ); + this.onAdjusted.emit(); + } catch (e) { + this.logService.error(e); + } + } + + cancel() { + this.onCanceled.emit(); + } + + changeCountry() { + if (this.taxInfoComponent.taxInfo.country === "US") { + this.paymentComponent.hideBank = !this.organizationId; + } else { + this.paymentComponent.hideBank = true; + if (this.paymentComponent.method === PaymentMethodType.BankAccount) { + this.paymentComponent.method = PaymentMethodType.Card; + this.paymentComponent.changeMethod(); + } + } + } +} diff --git a/apps/web/src/app/settings/adjust-storage.component.html b/apps/web/src/app/settings/adjust-storage.component.html new file mode 100644 index 0000000000..8e26cee3aa --- /dev/null +++ b/apps/web/src/app/settings/adjust-storage.component.html @@ -0,0 +1,43 @@ +
+
+ +

{{ (add ? "addStorage" : "removeStorage") | i18n }}

+
+
+ + +
+
+
+ {{ "total" | i18n }}: {{ storageAdjustment || 0 }} GB × + {{ storageGbPrice | currency: "$" }} = {{ adjustedStorageTotal | currency: "$" }} /{{ + interval | i18n + }} +
+ + + + {{ (add ? "storageAddNote" : "storageRemoveNote") | i18n }} + +
+
+ diff --git a/apps/web/src/app/settings/adjust-storage.component.ts b/apps/web/src/app/settings/adjust-storage.component.ts new file mode 100644 index 0000000000..d3cf0669ca --- /dev/null +++ b/apps/web/src/app/settings/adjust-storage.component.ts @@ -0,0 +1,100 @@ +import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +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 { StorageRequest } from "jslib-common/models/request/storageRequest"; +import { PaymentResponse } from "jslib-common/models/response/paymentResponse"; + +import { PaymentComponent } from "./payment.component"; + +@Component({ + selector: "app-adjust-storage", + templateUrl: "adjust-storage.component.html", +}) +export class AdjustStorageComponent { + @Input() storageGbPrice = 0; + @Input() add = true; + @Input() organizationId: string; + @Input() interval = "year"; + @Output() onAdjusted = new EventEmitter(); + @Output() onCanceled = new EventEmitter(); + + @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent; + + storageAdjustment = 0; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private router: Router, + private activatedRoute: ActivatedRoute, + private logService: LogService + ) {} + + async submit() { + try { + const request = new StorageRequest(); + request.storageGbAdjustment = this.storageAdjustment; + if (!this.add) { + request.storageGbAdjustment *= -1; + } + + let paymentFailed = false; + const action = async () => { + let response: Promise; + if (this.organizationId == null) { + response = this.formPromise = this.apiService.postAccountStorage(request); + } else { + response = this.formPromise = this.apiService.postOrganizationStorage( + this.organizationId, + request + ); + } + const result = await response; + if (result != null && result.paymentIntentClientSecret != null) { + try { + await this.paymentComponent.handleStripeCardPayment( + result.paymentIntentClientSecret, + null + ); + } catch { + paymentFailed = true; + } + } + }; + this.formPromise = action(); + await this.formPromise; + this.onAdjusted.emit(this.storageAdjustment); + if (paymentFailed) { + this.platformUtilsService.showToast( + "warning", + null, + this.i18nService.t("couldNotChargeCardPayInvoice"), + { timeout: 10000 } + ); + this.router.navigate(["../billing"], { relativeTo: this.activatedRoute }); + } else { + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("adjustedStorage", request.storageGbAdjustment.toString()) + ); + } + } catch (e) { + this.logService.error(e); + } + } + + cancel() { + this.onCanceled.emit(); + } + + get adjustedStorageTotal(): number { + return this.storageGbPrice * this.storageAdjustment; + } +} diff --git a/apps/web/src/app/settings/api-key.component.html b/apps/web/src/app/settings/api-key.component.html new file mode 100644 index 0000000000..8e042aa6e4 --- /dev/null +++ b/apps/web/src/app/settings/api-key.component.html @@ -0,0 +1,72 @@ + diff --git a/apps/web/src/app/settings/api-key.component.ts b/apps/web/src/app/settings/api-key.component.ts new file mode 100644 index 0000000000..fd1eec7e45 --- /dev/null +++ b/apps/web/src/app/settings/api-key.component.ts @@ -0,0 +1,46 @@ +import { Component } from "@angular/core"; + +import { LogService } from "jslib-common/abstractions/log.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { SecretVerificationRequest } from "jslib-common/models/request/secretVerificationRequest"; +import { ApiKeyResponse } from "jslib-common/models/response/apiKeyResponse"; +import { Verification } from "jslib-common/types/verification"; + +@Component({ + selector: "app-api-key", + templateUrl: "api-key.component.html", +}) +export class ApiKeyComponent { + keyType: string; + isRotation: boolean; + postKey: (entityId: string, request: SecretVerificationRequest) => Promise; + entityId: string; + scope: string; + grantType: string; + apiKeyTitle: string; + apiKeyWarning: string; + apiKeyDescription: string; + + masterPassword: Verification; + formPromise: Promise; + clientId: string; + clientSecret: string; + + constructor( + private userVerificationService: UserVerificationService, + private logService: LogService + ) {} + + async submit() { + try { + this.formPromise = this.userVerificationService + .buildRequest(this.masterPassword) + .then((request) => this.postKey(this.entityId, request)); + const response = await this.formPromise; + this.clientSecret = response.apiKey; + this.clientId = `${this.keyType}.${this.entityId}`; + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/billing-sync-key.component.html b/apps/web/src/app/settings/billing-sync-key.component.html new file mode 100644 index 0000000000..e7e46e637c --- /dev/null +++ b/apps/web/src/app/settings/billing-sync-key.component.html @@ -0,0 +1,69 @@ + diff --git a/apps/web/src/app/settings/billing-sync-key.component.ts b/apps/web/src/app/settings/billing-sync-key.component.ts new file mode 100644 index 0000000000..9b80037c2d --- /dev/null +++ b/apps/web/src/app/settings/billing-sync-key.component.ts @@ -0,0 +1,61 @@ +import { Component } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { OrganizationConnectionType } from "jslib-common/enums/organizationConnectionType"; +import { Utils } from "jslib-common/misc/utils"; +import { BillingSyncConfigApi } from "jslib-common/models/api/billingSyncConfigApi"; +import { BillingSyncConfigRequest } from "jslib-common/models/request/billingSyncConfigRequest"; +import { OrganizationConnectionRequest } from "jslib-common/models/request/organizationConnectionRequest"; +import { OrganizationConnectionResponse } from "jslib-common/models/response/organizationConnectionResponse"; + +@Component({ + selector: "app-billing-sync-key", + templateUrl: "billing-sync-key.component.html", +}) +export class BillingSyncKeyComponent { + entityId: string; + existingConnectionId: string; + billingSyncKey: string; + setParentConnection: (connection: OrganizationConnectionResponse) => void; + + formPromise: Promise> | Promise; + + constructor(private apiService: ApiService, private logService: LogService) {} + + async submit() { + try { + const request = new OrganizationConnectionRequest( + this.entityId, + OrganizationConnectionType.CloudBillingSync, + true, + new BillingSyncConfigRequest(this.billingSyncKey) + ); + if (this.existingConnectionId == null) { + this.formPromise = this.apiService.createOrganizationConnection( + request, + BillingSyncConfigApi + ); + } else { + this.formPromise = this.apiService.updateOrganizationConnection( + request, + BillingSyncConfigApi, + this.existingConnectionId + ); + } + const response = (await this + .formPromise) as OrganizationConnectionResponse; + this.existingConnectionId = response?.id; + this.billingSyncKey = response?.config?.billingSyncKey; + this.setParentConnection(response); + } catch (e) { + this.logService.error(e); + } + } + + async deleteConnection() { + this.formPromise = this.apiService.deleteOrganizationConnection(this.existingConnectionId); + await this.formPromise; + this.setParentConnection(null); + } +} diff --git a/apps/web/src/app/settings/change-email.component.html b/apps/web/src/app/settings/change-email.component.html new file mode 100644 index 0000000000..21a2918260 --- /dev/null +++ b/apps/web/src/app/settings/change-email.component.html @@ -0,0 +1,65 @@ +
+ + {{ "changeEmailTwoFactorWarning" | i18n }} + +
+
+
+ + +
+
+ + +
+
+
+ +
+

{{ "changeEmailDesc" | i18n: newEmail }}

+ {{ "loggedOutWarning" | i18n }} +
+
+
+ + +
+
+
+
+ + +
diff --git a/apps/web/src/app/settings/change-email.component.ts b/apps/web/src/app/settings/change-email.component.ts new file mode 100644 index 0000000000..b53ffb454c --- /dev/null +++ b/apps/web/src/app/settings/change-email.component.ts @@ -0,0 +1,102 @@ +import { Component, OnInit } from "@angular/core"; + +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { EmailRequest } from "jslib-common/models/request/emailRequest"; +import { EmailTokenRequest } from "jslib-common/models/request/emailTokenRequest"; + +@Component({ + selector: "app-change-email", + templateUrl: "change-email.component.html", +}) +export class ChangeEmailComponent implements OnInit { + masterPassword: string; + newEmail: string; + token: string; + tokenSent = false; + showTwoFactorEmailWarning = false; + + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private messagingService: MessagingService, + private logService: LogService, + private stateService: StateService + ) {} + + async ngOnInit() { + const twoFactorProviders = await this.apiService.getTwoFactorProviders(); + this.showTwoFactorEmailWarning = twoFactorProviders.data.some( + (p) => p.type === TwoFactorProviderType.Email && p.enabled + ); + } + + async submit() { + const hasEncKey = await this.cryptoService.hasEncKey(); + if (!hasEncKey) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("updateKey")); + return; + } + + this.newEmail = this.newEmail.trim().toLowerCase(); + if (!this.tokenSent) { + const request = new EmailTokenRequest(); + request.newEmail = this.newEmail; + request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null); + try { + this.formPromise = this.apiService.postEmailToken(request); + await this.formPromise; + this.tokenSent = true; + } catch (e) { + this.logService.error(e); + } + } else { + const request = new EmailRequest(); + request.token = this.token; + request.newEmail = this.newEmail; + request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null); + const kdf = await this.stateService.getKdfType(); + const kdfIterations = await this.stateService.getKdfIterations(); + const newKey = await this.cryptoService.makeKey( + this.masterPassword, + this.newEmail, + kdf, + kdfIterations + ); + request.newMasterPasswordHash = await this.cryptoService.hashPassword( + this.masterPassword, + newKey + ); + const newEncKey = await this.cryptoService.remakeEncKey(newKey); + request.key = newEncKey[1].encryptedString; + try { + this.formPromise = this.apiService.postEmail(request); + await this.formPromise; + this.reset(); + this.platformUtilsService.showToast( + "success", + this.i18nService.t("emailChanged"), + this.i18nService.t("logBackIn") + ); + this.messagingService.send("logout"); + } catch (e) { + this.logService.error(e); + } + } + } + + reset() { + this.token = this.newEmail = this.masterPassword = null; + this.tokenSent = false; + } +} diff --git a/apps/web/src/app/settings/change-kdf.component.html b/apps/web/src/app/settings/change-kdf.component.html new file mode 100644 index 0000000000..f5eae39be4 --- /dev/null +++ b/apps/web/src/app/settings/change-kdf.component.html @@ -0,0 +1,78 @@ +
+

{{ "encKeySettings" | i18n }}

+
+{{ "loggedOutWarning" | i18n }} +
+
+
+
+ + +
+
+
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+
+

{{ "kdfIterationsDesc" | i18n: (recommendedKdfIterations | number) }}

+ {{ "warning" | i18n }}: {{ "kdfIterationsWarning" | i18n: (50000 | number) }} +
+
+
+
+ +
diff --git a/apps/web/src/app/settings/change-kdf.component.ts b/apps/web/src/app/settings/change-kdf.component.ts new file mode 100644 index 0000000000..dcc268ac7c --- /dev/null +++ b/apps/web/src/app/settings/change-kdf.component.ts @@ -0,0 +1,79 @@ +import { Component, OnInit } from "@angular/core"; + +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { DEFAULT_KDF_ITERATIONS, KdfType } from "jslib-common/enums/kdfType"; +import { KdfRequest } from "jslib-common/models/request/kdfRequest"; + +@Component({ + selector: "app-change-kdf", + templateUrl: "change-kdf.component.html", +}) +export class ChangeKdfComponent implements OnInit { + masterPassword: string; + kdfIterations: number; + kdf = KdfType.PBKDF2_SHA256; + kdfOptions: any[] = []; + formPromise: Promise; + recommendedKdfIterations = DEFAULT_KDF_ITERATIONS; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private messagingService: MessagingService, + private logService: LogService, + private stateService: StateService + ) { + this.kdfOptions = [{ name: "PBKDF2 SHA-256", value: KdfType.PBKDF2_SHA256 }]; + } + + async ngOnInit() { + this.kdf = await this.stateService.getKdfType(); + this.kdfIterations = await this.stateService.getKdfIterations(); + } + + async submit() { + const hasEncKey = await this.cryptoService.hasEncKey(); + if (!hasEncKey) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("updateKey")); + return; + } + + const request = new KdfRequest(); + request.kdf = this.kdf; + request.kdfIterations = this.kdfIterations; + request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null); + const email = await this.stateService.getEmail(); + const newKey = await this.cryptoService.makeKey( + this.masterPassword, + email, + this.kdf, + this.kdfIterations + ); + request.newMasterPasswordHash = await this.cryptoService.hashPassword( + this.masterPassword, + newKey + ); + const newEncKey = await this.cryptoService.remakeEncKey(newKey); + request.key = newEncKey[1].encryptedString; + try { + this.formPromise = this.apiService.postAccountKdf(request); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + this.i18nService.t("encKeySettingsChanged"), + this.i18nService.t("logBackIn") + ); + this.messagingService.send("logout"); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/change-password.component.html b/apps/web/src/app/settings/change-password.component.html new file mode 100644 index 0000000000..990d950604 --- /dev/null +++ b/apps/web/src/app/settings/change-password.component.html @@ -0,0 +1,94 @@ +
+

{{ "changeMasterPassword" | i18n }}

+
+ +{{ "loggedOutWarning" | i18n }} + + + +
+
+
+
+ + +
+
+
+
+
+
+ + + +
+
+
+
+ + +
+
+
+
+
+ + + + + +
+
+ +
diff --git a/apps/web/src/app/settings/change-password.component.ts b/apps/web/src/app/settings/change-password.component.ts new file mode 100644 index 0000000000..37246a840e --- /dev/null +++ b/apps/web/src/app/settings/change-password.component.ts @@ -0,0 +1,278 @@ +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +import { ChangePasswordComponent as BaseChangePasswordComponent } from "jslib-angular/components/change-password.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 { FolderService } from "jslib-common/abstractions/folder.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.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 { SendService } from "jslib-common/abstractions/send.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { EmergencyAccessStatusType } from "jslib-common/enums/emergencyAccessStatusType"; +import { Utils } from "jslib-common/misc/utils"; +import { EncString } from "jslib-common/models/domain/encString"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { CipherWithIdRequest } from "jslib-common/models/request/cipherWithIdRequest"; +import { EmergencyAccessUpdateRequest } from "jslib-common/models/request/emergencyAccessUpdateRequest"; +import { FolderWithIdRequest } from "jslib-common/models/request/folderWithIdRequest"; +import { OrganizationUserResetPasswordEnrollmentRequest } from "jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest"; +import { PasswordRequest } from "jslib-common/models/request/passwordRequest"; +import { SendWithIdRequest } from "jslib-common/models/request/sendWithIdRequest"; +import { UpdateKeyRequest } from "jslib-common/models/request/updateKeyRequest"; + +@Component({ + selector: "app-change-password", + templateUrl: "change-password.component.html", +}) +export class ChangePasswordComponent extends BaseChangePasswordComponent { + rotateEncKey = false; + currentMasterPassword: string; + + constructor( + i18nService: I18nService, + cryptoService: CryptoService, + messagingService: MessagingService, + stateService: StateService, + passwordGenerationService: PasswordGenerationService, + platformUtilsService: PlatformUtilsService, + policyService: PolicyService, + private folderService: FolderService, + private cipherService: CipherService, + private syncService: SyncService, + private apiService: ApiService, + private sendService: SendService, + private organizationService: OrganizationService, + private keyConnectorService: KeyConnectorService, + private router: Router + ) { + super( + i18nService, + cryptoService, + messagingService, + passwordGenerationService, + platformUtilsService, + policyService, + stateService + ); + } + + async ngOnInit() { + if (await this.keyConnectorService.getUsesKeyConnector()) { + this.router.navigate(["/settings/security/two-factor"]); + } + await super.ngOnInit(); + } + + async rotateEncKeyClicked() { + if (this.rotateEncKey) { + const ciphers = await this.cipherService.getAllDecrypted(); + let hasOldAttachments = false; + if (ciphers != null) { + for (let i = 0; i < ciphers.length; i++) { + if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) { + hasOldAttachments = true; + break; + } + } + } + + if (hasOldAttachments) { + const learnMore = await this.platformUtilsService.showDialog( + this.i18nService.t("oldAttachmentsNeedFixDesc"), + null, + this.i18nService.t("learnMore"), + this.i18nService.t("close"), + "warning" + ); + if (learnMore) { + this.platformUtilsService.launchUri( + "https://bitwarden.com/help/attachments/#add-storage-space" + ); + } + this.rotateEncKey = false; + return; + } + + const result = await this.platformUtilsService.showDialog( + this.i18nService.t("updateEncryptionKeyWarning") + + " " + + this.i18nService.t("updateEncryptionKeyExportWarning") + + " " + + this.i18nService.t("rotateEncKeyConfirmation"), + this.i18nService.t("rotateEncKeyTitle"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!result) { + this.rotateEncKey = false; + } + } + } + + async submit() { + const hasEncKey = await this.cryptoService.hasEncKey(); + if (!hasEncKey) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("updateKey")); + return; + } + + await super.submit(); + } + + async setupSubmitActions() { + if (this.currentMasterPassword == null || this.currentMasterPassword === "") { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("masterPassRequired") + ); + return false; + } + + if (this.rotateEncKey) { + await this.syncService.fullSync(true); + } + + return super.setupSubmitActions(); + } + + async performSubmitActions( + newMasterPasswordHash: string, + newKey: SymmetricCryptoKey, + newEncKey: [SymmetricCryptoKey, EncString] + ) { + const request = new PasswordRequest(); + request.masterPasswordHash = await this.cryptoService.hashPassword( + this.currentMasterPassword, + null + ); + request.newMasterPasswordHash = newMasterPasswordHash; + request.key = newEncKey[1].encryptedString; + + try { + if (this.rotateEncKey) { + this.formPromise = this.apiService.postPassword(request).then(() => { + return this.updateKey(newKey, request.newMasterPasswordHash); + }); + } else { + this.formPromise = this.apiService.postPassword(request); + } + + await this.formPromise; + + this.platformUtilsService.showToast( + "success", + this.i18nService.t("masterPasswordChanged"), + this.i18nService.t("logBackIn") + ); + this.messagingService.send("logout"); + } catch { + this.platformUtilsService.showToast("error", null, this.i18nService.t("errorOccurred")); + } + } + + private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) { + const encKey = await this.cryptoService.makeEncKey(key); + const privateKey = await this.cryptoService.getPrivateKey(); + let encPrivateKey: EncString = null; + if (privateKey != null) { + encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]); + } + const request = new UpdateKeyRequest(); + request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null; + request.key = encKey[1].encryptedString; + request.masterPasswordHash = masterPasswordHash; + + const folders = await this.folderService.getAllDecrypted(); + for (let i = 0; i < folders.length; i++) { + if (folders[i].id == null) { + continue; + } + const folder = await this.folderService.encrypt(folders[i], encKey[0]); + request.folders.push(new FolderWithIdRequest(folder)); + } + + const ciphers = await this.cipherService.getAllDecrypted(); + for (let i = 0; i < ciphers.length; i++) { + if (ciphers[i].organizationId != null) { + continue; + } + + const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]); + request.ciphers.push(new CipherWithIdRequest(cipher)); + } + + const sends = await this.sendService.getAll(); + await Promise.all( + sends.map(async (send) => { + const cryptoKey = await this.cryptoService.decryptToBytes(send.key, null); + send.key = (await this.cryptoService.encrypt(cryptoKey, encKey[0])) ?? send.key; + request.sends.push(new SendWithIdRequest(send)); + }) + ); + + await this.apiService.postAccountKey(request); + + await this.updateEmergencyAccesses(encKey[0]); + + await this.updateAllResetPasswordKeys(encKey[0]); + } + + private async updateEmergencyAccesses(encKey: SymmetricCryptoKey) { + const emergencyAccess = await this.apiService.getEmergencyAccessTrusted(); + const allowedStatuses = [ + EmergencyAccessStatusType.Confirmed, + EmergencyAccessStatusType.RecoveryInitiated, + EmergencyAccessStatusType.RecoveryApproved, + ]; + + const filteredAccesses = emergencyAccess.data.filter((d) => allowedStatuses.includes(d.status)); + + for (const details of filteredAccesses) { + const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId); + const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey); + + const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer); + + const updateRequest = new EmergencyAccessUpdateRequest(); + updateRequest.type = details.type; + updateRequest.waitTimeDays = details.waitTimeDays; + updateRequest.keyEncrypted = encryptedKey.encryptedString; + + await this.apiService.putEmergencyAccess(details.id, updateRequest); + } + } + + private async updateAllResetPasswordKeys(encKey: SymmetricCryptoKey) { + const orgs = await this.organizationService.getAll(); + + for (const org of orgs) { + // If not already enrolled, skip + if (!org.resetPasswordEnrolled) { + continue; + } + + // Retrieve public key + const response = await this.apiService.getOrganizationKeys(org.id); + const publicKey = Utils.fromB64ToArray(response?.publicKey); + + // Re-enroll - encrpyt user's encKey.key with organization public key + const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer); + + // Create/Execute request + const request = new OrganizationUserResetPasswordEnrollmentRequest(); + request.resetPasswordKey = encryptedKey.encryptedString; + + await this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request); + } + } +} diff --git a/apps/web/src/app/settings/create-organization.component.html b/apps/web/src/app/settings/create-organization.component.html new file mode 100644 index 0000000000..f5b4219aa6 --- /dev/null +++ b/apps/web/src/app/settings/create-organization.component.html @@ -0,0 +1,11 @@ +
+
+
+ +

{{ "newOrganizationDesc" | i18n }}

+ +
+
+
diff --git a/apps/web/src/app/settings/create-organization.component.ts b/apps/web/src/app/settings/create-organization.component.ts new file mode 100644 index 0000000000..db0dc964e8 --- /dev/null +++ b/apps/web/src/app/settings/create-organization.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit, ViewChild } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { PlanType } from "jslib-common/enums/planType"; +import { ProductType } from "jslib-common/enums/productType"; + +import { OrganizationPlansComponent } from "./organization-plans.component"; + +@Component({ + selector: "app-create-organization", + templateUrl: "create-organization.component.html", +}) +export class CreateOrganizationComponent implements OnInit { + @ViewChild(OrganizationPlansComponent, { static: true }) + orgPlansComponent: OrganizationPlansComponent; + + constructor(private route: ActivatedRoute) {} + + ngOnInit() { + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + if (qParams.plan === "families") { + this.orgPlansComponent.plan = PlanType.FamiliesAnnually; + this.orgPlansComponent.product = ProductType.Families; + } else if (qParams.plan === "teams") { + this.orgPlansComponent.plan = PlanType.TeamsAnnually; + this.orgPlansComponent.product = ProductType.Teams; + } else if (qParams.plan === "enterprise") { + this.orgPlansComponent.plan = PlanType.EnterpriseAnnually; + this.orgPlansComponent.product = ProductType.Enterprise; + } + }); + } +} diff --git a/apps/web/src/app/settings/deauthorize-sessions.component.html b/apps/web/src/app/settings/deauthorize-sessions.component.html new file mode 100644 index 0000000000..ac7dc7ba02 --- /dev/null +++ b/apps/web/src/app/settings/deauthorize-sessions.component.html @@ -0,0 +1,38 @@ + diff --git a/apps/web/src/app/settings/deauthorize-sessions.component.ts b/apps/web/src/app/settings/deauthorize-sessions.component.ts new file mode 100644 index 0000000000..f46872f5e8 --- /dev/null +++ b/apps/web/src/app/settings/deauthorize-sessions.component.ts @@ -0,0 +1,44 @@ +import { Component } from "@angular/core"; + +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 { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { Verification } from "jslib-common/types/verification"; + +@Component({ + selector: "app-deauthorize-sessions", + templateUrl: "deauthorize-sessions.component.html", +}) +export class DeauthorizeSessionsComponent { + masterPassword: Verification; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private userVerificationService: UserVerificationService, + private messagingService: MessagingService, + private logService: LogService + ) {} + + async submit() { + try { + this.formPromise = this.userVerificationService + .buildRequest(this.masterPassword) + .then((request) => this.apiService.postSecurityStamp(request)); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + this.i18nService.t("sessionsDeauthorized"), + this.i18nService.t("logBackIn") + ); + this.messagingService.send("logout"); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/delete-account.component.html b/apps/web/src/app/settings/delete-account.component.html new file mode 100644 index 0000000000..6d53b4170f --- /dev/null +++ b/apps/web/src/app/settings/delete-account.component.html @@ -0,0 +1,38 @@ + diff --git a/apps/web/src/app/settings/delete-account.component.ts b/apps/web/src/app/settings/delete-account.component.ts new file mode 100644 index 0000000000..4a4e1131b1 --- /dev/null +++ b/apps/web/src/app/settings/delete-account.component.ts @@ -0,0 +1,44 @@ +import { Component } from "@angular/core"; + +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 { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { Verification } from "jslib-common/types/verification"; + +@Component({ + selector: "app-delete-account", + templateUrl: "delete-account.component.html", +}) +export class DeleteAccountComponent { + masterPassword: Verification; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private userVerificationService: UserVerificationService, + private messagingService: MessagingService, + private logService: LogService + ) {} + + async submit() { + try { + this.formPromise = this.userVerificationService + .buildRequest(this.masterPassword) + .then((request) => this.apiService.deleteAccount(request)); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + this.i18nService.t("accountDeleted"), + this.i18nService.t("accountDeletedDesc") + ); + this.messagingService.send("logout"); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/domain-rules.component.html b/apps/web/src/app/settings/domain-rules.component.html new file mode 100644 index 0000000000..ce9b103d20 --- /dev/null +++ b/apps/web/src/app/settings/domain-rules.component.html @@ -0,0 +1,108 @@ + +

{{ "domainRulesDesc" | i18n }}

+
+

{{ "customEqDomains" | i18n }}

+

+ + {{ "loading" | i18n }} +

+ +
+
+ + +
+ +
+ + {{ "newCustomDomainDesc" | i18n }} +
+ +

{{ "globalEqDomains" | i18n }}

+

+ + {{ "loading" | i18n }} +

+ + + + + + + +
{{ d.domains }} + +
+ +
diff --git a/apps/web/src/app/settings/domain-rules.component.ts b/apps/web/src/app/settings/domain-rules.component.ts new file mode 100644 index 0000000000..54fea56202 --- /dev/null +++ b/apps/web/src/app/settings/domain-rules.component.ts @@ -0,0 +1,87 @@ +import { Component, OnInit } from "@angular/core"; + +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 { UpdateDomainsRequest } from "jslib-common/models/request/updateDomainsRequest"; + +@Component({ + selector: "app-domain-rules", + templateUrl: "domain-rules.component.html", +}) +export class DomainRulesComponent implements OnInit { + loading = true; + custom: string[] = []; + global: any[] = []; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + const response = await this.apiService.getSettingsDomains(); + this.loading = false; + if (response.equivalentDomains != null) { + this.custom = response.equivalentDomains.map((d) => d.join(", ")); + } + if (response.globalEquivalentDomains != null) { + this.global = response.globalEquivalentDomains.map((d) => { + return { + domains: d.domains.join(", "), + excluded: d.excluded, + key: d.type, + }; + }); + } + } + + toggleExcluded(globalDomain: any) { + globalDomain.excluded = !globalDomain.excluded; + } + + customize(globalDomain: any) { + globalDomain.excluded = true; + this.custom.push(globalDomain.domains); + } + + remove(index: number) { + this.custom.splice(index, 1); + } + + add() { + this.custom.push(""); + } + + async submit() { + const request = new UpdateDomainsRequest(); + request.excludedGlobalEquivalentDomains = this.global + .filter((d) => d.excluded) + .map((d) => d.key); + if (request.excludedGlobalEquivalentDomains.length === 0) { + request.excludedGlobalEquivalentDomains = null; + } + request.equivalentDomains = this.custom + .filter((d) => d != null && d.trim() !== "") + .map((d) => d.split(",").map((d2) => d2.trim())); + if (request.equivalentDomains.length === 0) { + request.equivalentDomains = null; + } + + try { + this.formPromise = this.apiService.putSettingsDomains(request); + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("domainsUpdated")); + } catch (e) { + this.logService.error(e); + } + } + + indexTrackBy(index: number, obj: any): any { + return index; + } +} diff --git a/apps/web/src/app/settings/emergency-access-add-edit.component.html b/apps/web/src/app/settings/emergency-access-add-edit.component.html new file mode 100644 index 0000000000..b66a745186 --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-add-edit.component.html @@ -0,0 +1,146 @@ + diff --git a/apps/web/src/app/settings/emergency-access-add-edit.component.ts b/apps/web/src/app/settings/emergency-access-add-edit.component.ts new file mode 100644 index 0000000000..a89136da4d --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-add-edit.component.ts @@ -0,0 +1,103 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +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 { EmergencyAccessType } from "jslib-common/enums/emergencyAccessType"; +import { EmergencyAccessInviteRequest } from "jslib-common/models/request/emergencyAccessInviteRequest"; +import { EmergencyAccessUpdateRequest } from "jslib-common/models/request/emergencyAccessUpdateRequest"; + +@Component({ + selector: "emergency-access-add-edit", + templateUrl: "emergency-access-add-edit.component.html", +}) +export class EmergencyAccessAddEditComponent implements OnInit { + @Input() name: string; + @Input() emergencyAccessId: string; + @Output() onSaved = new EventEmitter(); + @Output() onDeleted = new EventEmitter(); + + loading = true; + readOnly = false; + editMode = false; + title: string; + email: string; + type: EmergencyAccessType = EmergencyAccessType.View; + + formPromise: Promise; + + emergencyAccessType = EmergencyAccessType; + waitTimes: { name: string; value: number }[]; + waitTime: number; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + this.editMode = this.loading = this.emergencyAccessId != null; + + this.waitTimes = [ + { name: this.i18nService.t("oneDay"), value: 1 }, + { name: this.i18nService.t("days", "2"), value: 2 }, + { name: this.i18nService.t("days", "7"), value: 7 }, + { name: this.i18nService.t("days", "14"), value: 14 }, + { name: this.i18nService.t("days", "30"), value: 30 }, + { name: this.i18nService.t("days", "90"), value: 90 }, + ]; + + if (this.editMode) { + this.editMode = true; + this.title = this.i18nService.t("editEmergencyContact"); + try { + const emergencyAccess = await this.apiService.getEmergencyAccess(this.emergencyAccessId); + this.type = emergencyAccess.type; + this.waitTime = emergencyAccess.waitTimeDays; + } catch (e) { + this.logService.error(e); + } + } else { + this.title = this.i18nService.t("inviteEmergencyContact"); + this.waitTime = this.waitTimes[2].value; + } + + this.loading = false; + } + + async submit() { + try { + if (this.editMode) { + const request = new EmergencyAccessUpdateRequest(); + request.type = this.type; + request.waitTimeDays = this.waitTime; + + this.formPromise = this.apiService.putEmergencyAccess(this.emergencyAccessId, request); + } else { + const request = new EmergencyAccessInviteRequest(); + request.email = this.email.trim(); + request.type = this.type; + request.waitTimeDays = this.waitTime; + + this.formPromise = this.apiService.postEmergencyAccessInvite(request); + } + + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t(this.editMode ? "editedUserId" : "invitedUsers", this.name) + ); + this.onSaved.emit(); + } catch (e) { + this.logService.error(e); + } + } + + async delete() { + this.onDeleted.emit(); + } +} diff --git a/apps/web/src/app/settings/emergency-access-attachments.component.ts b/apps/web/src/app/settings/emergency-access-attachments.component.ts new file mode 100644 index 0000000000..a388c64dc8 --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-attachments.component.ts @@ -0,0 +1,49 @@ +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"; +import { AttachmentView } from "jslib-common/models/view/attachmentView"; + +@Component({ + selector: "emergency-access-attachments", + templateUrl: "../vault/attachments.component.html", +}) +export class EmergencyAccessAttachmentsComponent extends BaseAttachmentsComponent { + viewOnly = true; + canAccessAttachments = true; + + constructor( + cipherService: CipherService, + i18nService: I18nService, + cryptoService: CryptoService, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + logService: LogService + ) { + super( + cipherService, + i18nService, + cryptoService, + platformUtilsService, + apiService, + window, + logService, + stateService + ); + } + + protected async init() { + // Do nothing since cipher is already decoded + } + + protected showFixOldAttachments(attachment: AttachmentView) { + return false; + } +} diff --git a/apps/web/src/app/settings/emergency-access-confirm.component.html b/apps/web/src/app/settings/emergency-access-confirm.component.html new file mode 100644 index 0000000000..87cc0d970a --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-confirm.component.html @@ -0,0 +1,52 @@ + diff --git a/apps/web/src/app/settings/emergency-access-confirm.component.ts b/apps/web/src/app/settings/emergency-access-confirm.component.ts new file mode 100644 index 0000000000..1e19a3808c --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-confirm.component.ts @@ -0,0 +1,62 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { Utils } from "jslib-common/misc/utils"; + +@Component({ + selector: "emergency-access-confirm", + templateUrl: "emergency-access-confirm.component.html", +}) +export class EmergencyAccessConfirmComponent implements OnInit { + @Input() name: string; + @Input() userId: string; + @Input() emergencyAccessId: string; + @Input() formPromise: Promise; + @Output() onConfirmed = new EventEmitter(); + + dontAskAgain = false; + loading = true; + fingerprint: string; + + constructor( + private apiService: ApiService, + private cryptoService: CryptoService, + private stateService: StateService, + private logService: LogService + ) {} + + async ngOnInit() { + try { + const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId); + if (publicKeyResponse != null) { + const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey); + const fingerprint = await this.cryptoService.getFingerprint(this.userId, publicKey.buffer); + if (fingerprint != null) { + this.fingerprint = fingerprint.join("-"); + } + } + } catch (e) { + this.logService.error(e); + } + this.loading = false; + } + + async submit() { + if (this.loading) { + return; + } + + if (this.dontAskAgain) { + await this.stateService.setAutoConfirmFingerprints(true); + } + + try { + this.onConfirmed.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/emergency-access-takeover.component.html b/apps/web/src/app/settings/emergency-access-takeover.component.html new file mode 100644 index 0000000000..5bbd36df83 --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-takeover.component.html @@ -0,0 +1,79 @@ + diff --git a/apps/web/src/app/settings/emergency-access-takeover.component.ts b/apps/web/src/app/settings/emergency-access-takeover.component.ts new file mode 100644 index 0000000000..4cb0a461ff --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-takeover.component.ts @@ -0,0 +1,111 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { ChangePasswordComponent } from "jslib-angular/components/change-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 { KdfType } from "jslib-common/enums/kdfType"; +import { PolicyData } from "jslib-common/models/data/policyData"; +import { Policy } from "jslib-common/models/domain/policy"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { EmergencyAccessPasswordRequest } from "jslib-common/models/request/emergencyAccessPasswordRequest"; +import { PolicyResponse } from "jslib-common/models/response/policyResponse"; + +@Component({ + selector: "emergency-access-takeover", + templateUrl: "emergency-access-takeover.component.html", +}) +export class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit { + @Output() onDone = new EventEmitter(); + @Input() emergencyAccessId: string; + @Input() name: string; + @Input() email: string; + @Input() kdf: KdfType; + @Input() kdfIterations: number; + + formPromise: Promise; + + constructor( + i18nService: I18nService, + cryptoService: CryptoService, + messagingService: MessagingService, + stateService: StateService, + passwordGenerationService: PasswordGenerationService, + platformUtilsService: PlatformUtilsService, + policyService: PolicyService, + private apiService: ApiService, + private logService: LogService + ) { + super( + i18nService, + cryptoService, + messagingService, + passwordGenerationService, + platformUtilsService, + policyService, + stateService + ); + } + + async ngOnInit() { + const response = await this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId); + if (response.data != null && response.data.length > 0) { + const policies = response.data.map( + (policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse)) + ); + this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions( + policies + ); + } + } + + async submit() { + if (!(await this.strongPassword())) { + return; + } + + const takeoverResponse = await this.apiService.postEmergencyAccessTakeover( + this.emergencyAccessId + ); + + const oldKeyBuffer = await this.cryptoService.rsaDecrypt(takeoverResponse.keyEncrypted); + const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer); + + if (oldEncKey == null) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("unexpectedError") + ); + return; + } + + const key = await this.cryptoService.makeKey( + this.masterPassword, + this.email, + takeoverResponse.kdf, + takeoverResponse.kdfIterations + ); + const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key); + + const encKey = await this.cryptoService.remakeEncKey(key, oldEncKey); + + const request = new EmergencyAccessPasswordRequest(); + request.newMasterPasswordHash = masterPasswordHash; + request.key = encKey[1].encryptedString; + + this.apiService.postEmergencyAccessPassword(this.emergencyAccessId, request); + + try { + this.onDone.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/emergency-access-view.component.html b/apps/web/src/app/settings/emergency-access-view.component.html new file mode 100644 index 0000000000..1b74204bde --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-view.component.html @@ -0,0 +1,72 @@ + +
+ + + + + + + + + +
+ + + {{ + c.name + }} + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + +
+ {{ c.subTitle }} +
+ +
+
+ + + {{ "loading" | i18n }} + +
+ + diff --git a/apps/web/src/app/settings/emergency-access-view.component.ts b/apps/web/src/app/settings/emergency-access-view.component.ts new file mode 100644 index 0000000000..7abb95e7c7 --- /dev/null +++ b/apps/web/src/app/settings/emergency-access-view.component.ts @@ -0,0 +1,102 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { ModalService } from "jslib-angular/services/modal.service"; +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 { CipherData } from "jslib-common/models/data/cipherData"; +import { Cipher } from "jslib-common/models/domain/cipher"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { EmergencyAccessViewResponse } from "jslib-common/models/response/emergencyAccessResponse"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { EmergencyAccessAttachmentsComponent } from "./emergency-access-attachments.component"; +import { EmergencyAddEditComponent } from "./emergency-add-edit.component"; + +@Component({ + selector: "emergency-access-view", + templateUrl: "emergency-access-view.component.html", +}) +export class EmergencyAccessViewComponent implements OnInit { + @ViewChild("cipherAddEdit", { read: ViewContainerRef, static: true }) + cipherAddEditModalRef: ViewContainerRef; + @ViewChild("attachments", { read: ViewContainerRef, static: true }) + attachmentsModalRef: ViewContainerRef; + + id: string; + ciphers: CipherView[] = []; + loaded = false; + + constructor( + private cipherService: CipherService, + private cryptoService: CryptoService, + private modalService: ModalService, + private router: Router, + private route: ActivatedRoute, + private apiService: ApiService + ) {} + + ngOnInit() { + this.route.params.subscribe((qParams) => { + if (qParams.id == null) { + return this.router.navigate(["settings/emergency-access"]); + } + + this.id = qParams.id; + + this.load(); + }); + } + + async selectCipher(cipher: CipherView) { + // eslint-disable-next-line + const [_, childComponent] = await this.modalService.openViewRef( + EmergencyAddEditComponent, + this.cipherAddEditModalRef, + (comp) => { + comp.cipherId = cipher == null ? null : cipher.id; + comp.cipher = cipher; + } + ); + + return childComponent; + } + + async load() { + const response = await this.apiService.postEmergencyAccessView(this.id); + this.ciphers = await this.getAllCiphers(response); + this.loaded = true; + } + + async viewAttachments(cipher: CipherView) { + await this.modalService.openViewRef( + EmergencyAccessAttachmentsComponent, + this.attachmentsModalRef, + (comp) => { + comp.cipher = cipher; + comp.emergencyAccessId = this.id; + } + ); + } + + protected async getAllCiphers(response: EmergencyAccessViewResponse): Promise { + const ciphers = response.ciphers; + + const decCiphers: CipherView[] = []; + const oldKeyBuffer = await this.cryptoService.rsaDecrypt(response.keyEncrypted); + const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer); + + const promises: any[] = []; + ciphers.forEach((cipherResponse) => { + const cipherData = new CipherData(cipherResponse); + const cipher = new Cipher(cipherData); + promises.push(cipher.decrypt(oldEncKey).then((c) => decCiphers.push(c))); + }); + + await Promise.all(promises); + decCiphers.sort(this.cipherService.getLocaleSortingFunction()); + + return decCiphers; + } +} diff --git a/apps/web/src/app/settings/emergency-access.component.html b/apps/web/src/app/settings/emergency-access.component.html new file mode 100644 index 0000000000..5d3778002f --- /dev/null +++ b/apps/web/src/app/settings/emergency-access.component.html @@ -0,0 +1,254 @@ + +

+ {{ "emergencyAccessDesc" | i18n }} + + {{ "learnMore" | i18n }}. + +

+ +

+ {{ "warning" | i18n }}: {{ "emergencyAccessOwnerWarning" | i18n }} +

+ + + + + + + + + + + +
+ + + + {{ c.email }} + {{ "invited" | i18n }} + {{ + "accepted" | i18n + }} + {{ "emergencyAccessRecoveryInitiated" | i18n }} + {{ "emergencyAccessRecoveryApproved" | i18n }} + + {{ + "view" | i18n + }} + {{ + "takeover" | i18n + }} + + {{ c.name }} + + +
+ +

{{ "noTrustedContacts" | i18n }}

+ + + + + + + + + + + +
+ + + + {{ c.email }} + {{ "invited" | i18n }} + {{ + "accepted" | i18n + }} + {{ "emergencyAccessRecoveryInitiated" | i18n }} + {{ "emergencyAccessRecoveryApproved" | i18n }} + + {{ + "view" | i18n + }} + {{ + "takeover" | i18n + }} + + {{ c.name }} + + +
+ +

{{ "noGrantedAccess" | i18n }}

+ + + + diff --git a/apps/web/src/app/settings/emergency-access.component.ts b/apps/web/src/app/settings/emergency-access.component.ts new file mode 100644 index 0000000000..e80bec830e --- /dev/null +++ b/apps/web/src/app/settings/emergency-access.component.ts @@ -0,0 +1,311 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; + +import { UserNamePipe } from "jslib-angular/pipes/user-name.pipe"; +import { ModalService } from "jslib-angular/services/modal.service"; +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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { EmergencyAccessStatusType } from "jslib-common/enums/emergencyAccessStatusType"; +import { EmergencyAccessType } from "jslib-common/enums/emergencyAccessType"; +import { Utils } from "jslib-common/misc/utils"; +import { EmergencyAccessConfirmRequest } from "jslib-common/models/request/emergencyAccessConfirmRequest"; +import { + EmergencyAccessGranteeDetailsResponse, + EmergencyAccessGrantorDetailsResponse, +} from "jslib-common/models/response/emergencyAccessResponse"; + +import { EmergencyAccessAddEditComponent } from "./emergency-access-add-edit.component"; +import { EmergencyAccessConfirmComponent } from "./emergency-access-confirm.component"; +import { EmergencyAccessTakeoverComponent } from "./emergency-access-takeover.component"; + +@Component({ + selector: "emergency-access", + templateUrl: "emergency-access.component.html", +}) +export class EmergencyAccessComponent implements OnInit { + @ViewChild("addEdit", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef; + @ViewChild("takeoverTemplate", { read: ViewContainerRef, static: true }) + takeoverModalRef: ViewContainerRef; + @ViewChild("confirmTemplate", { read: ViewContainerRef, static: true }) + confirmModalRef: ViewContainerRef; + + canAccessPremium: boolean; + trustedContacts: EmergencyAccessGranteeDetailsResponse[]; + grantedContacts: EmergencyAccessGrantorDetailsResponse[]; + emergencyAccessType = EmergencyAccessType; + emergencyAccessStatusType = EmergencyAccessStatusType; + actionPromise: Promise; + isOrganizationOwner: boolean; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private modalService: ModalService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private messagingService: MessagingService, + private userNamePipe: UserNamePipe, + private logService: LogService, + private stateService: StateService, + private organizationService: OrganizationService + ) {} + + async ngOnInit() { + this.canAccessPremium = await this.stateService.getCanAccessPremium(); + const orgs = await this.organizationService.getAll(); + this.isOrganizationOwner = orgs.some((o) => o.isOwner); + this.load(); + } + + async load() { + this.trustedContacts = (await this.apiService.getEmergencyAccessTrusted()).data; + this.grantedContacts = (await this.apiService.getEmergencyAccessGranted()).data; + } + + async premiumRequired() { + if (!this.canAccessPremium) { + this.messagingService.send("premiumRequired"); + return; + } + } + + async edit(details: EmergencyAccessGranteeDetailsResponse) { + const [modal] = await this.modalService.openViewRef( + EmergencyAccessAddEditComponent, + this.addEditModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(details); + comp.emergencyAccessId = details?.id; + comp.readOnly = !this.canAccessPremium; + comp.onSaved.subscribe(() => { + modal.close(); + this.load(); + }); + comp.onDeleted.subscribe(() => { + modal.close(); + this.remove(details); + }); + } + ); + } + + invite() { + this.edit(null); + } + + async reinvite(contact: EmergencyAccessGranteeDetailsResponse) { + if (this.actionPromise != null) { + return; + } + this.actionPromise = this.apiService.postEmergencyAccessReinvite(contact.id); + await this.actionPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("hasBeenReinvited", contact.email) + ); + this.actionPromise = null; + } + + async confirm(contact: EmergencyAccessGranteeDetailsResponse) { + function updateUser() { + contact.status = EmergencyAccessStatusType.Confirmed; + } + + if (this.actionPromise != null) { + return; + } + + const autoConfirm = await this.stateService.getAutoConfirmFingerPrints(); + if (autoConfirm == null || !autoConfirm) { + const [modal] = await this.modalService.openViewRef( + EmergencyAccessConfirmComponent, + this.confirmModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(contact); + comp.emergencyAccessId = contact.id; + comp.userId = contact?.granteeId; + comp.onConfirmed.subscribe(async () => { + modal.close(); + + comp.formPromise = this.doConfirmation(contact); + await comp.formPromise; + + updateUser(); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("hasBeenConfirmed", this.userNamePipe.transform(contact)) + ); + }); + } + ); + return; + } + + this.actionPromise = this.doConfirmation(contact); + await this.actionPromise; + updateUser(); + + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("hasBeenConfirmed", this.userNamePipe.transform(contact)) + ); + this.actionPromise = null; + } + + async remove( + details: EmergencyAccessGranteeDetailsResponse | EmergencyAccessGrantorDetailsResponse + ) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("removeUserConfirmation"), + this.userNamePipe.transform(details), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + await this.apiService.deleteEmergencyAccess(details.id); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("removedUserId", this.userNamePipe.transform(details)) + ); + + if (details instanceof EmergencyAccessGranteeDetailsResponse) { + this.removeGrantee(details); + } else { + this.removeGrantor(details); + } + } catch (e) { + this.logService.error(e); + } + } + + async requestAccess(details: EmergencyAccessGrantorDetailsResponse) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("requestAccessConfirmation", details.waitTimeDays.toString()), + this.userNamePipe.transform(details), + this.i18nService.t("requestAccess"), + this.i18nService.t("no"), + "warning" + ); + + if (!confirmed) { + return false; + } + + await this.apiService.postEmergencyAccessInitiate(details.id); + + details.status = EmergencyAccessStatusType.RecoveryInitiated; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("requestSent", this.userNamePipe.transform(details)) + ); + } + + async approve(details: EmergencyAccessGranteeDetailsResponse) { + const type = this.i18nService.t( + details.type === EmergencyAccessType.View ? "view" : "takeover" + ); + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("approveAccessConfirmation", this.userNamePipe.transform(details), type), + this.userNamePipe.transform(details), + this.i18nService.t("approve"), + this.i18nService.t("no"), + "warning" + ); + + if (!confirmed) { + return false; + } + + await this.apiService.postEmergencyAccessApprove(details.id); + details.status = EmergencyAccessStatusType.RecoveryApproved; + + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("emergencyApproved", this.userNamePipe.transform(details)) + ); + } + + async reject(details: EmergencyAccessGranteeDetailsResponse) { + await this.apiService.postEmergencyAccessReject(details.id); + details.status = EmergencyAccessStatusType.Confirmed; + + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("emergencyRejected", this.userNamePipe.transform(details)) + ); + } + + async takeover(details: EmergencyAccessGrantorDetailsResponse) { + const [modal] = await this.modalService.openViewRef( + EmergencyAccessTakeoverComponent, + this.takeoverModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(details); + comp.email = details.email; + comp.emergencyAccessId = details != null ? details.id : null; + + comp.onDone.subscribe(() => { + modal.close(); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("passwordResetFor", this.userNamePipe.transform(details)) + ); + }); + } + ); + } + + private removeGrantee(details: EmergencyAccessGranteeDetailsResponse) { + const index = this.trustedContacts.indexOf(details); + if (index > -1) { + this.trustedContacts.splice(index, 1); + } + } + + private removeGrantor(details: EmergencyAccessGrantorDetailsResponse) { + const index = this.grantedContacts.indexOf(details); + if (index > -1) { + this.grantedContacts.splice(index, 1); + } + } + + // Encrypt the master password hash using the grantees public key, and send it to bitwarden for escrow. + private async doConfirmation(details: EmergencyAccessGranteeDetailsResponse) { + const encKey = await this.cryptoService.getEncKey(); + const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId); + const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey); + + try { + this.logService.debug( + "User's fingerprint: " + + (await this.cryptoService.getFingerprint(details.granteeId, publicKey.buffer)).join("-") + ); + } catch { + // Ignore errors since it's just a debug message + } + + const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer); + const request = new EmergencyAccessConfirmRequest(); + request.key = encryptedKey.encryptedString; + await this.apiService.postEmergencyAccessConfirm(details.id, request); + } +} diff --git a/apps/web/src/app/settings/emergency-add-edit.component.ts b/apps/web/src/app/settings/emergency-add-edit.component.ts new file mode 100644 index 0000000000..b50ca9d2c7 --- /dev/null +++ b/apps/web/src/app/settings/emergency-add-edit.component.ts @@ -0,0 +1,73 @@ +import { Component } from "@angular/core"; + +import { AuditService } from "jslib-common/abstractions/audit.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 { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.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"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { Cipher } from "jslib-common/models/domain/cipher"; + +import { AddEditComponent as BaseAddEditComponent } from "../vault/add-edit.component"; + +@Component({ + selector: "app-org-vault-add-edit", + templateUrl: "../vault/add-edit.component.html", +}) +export class EmergencyAddEditComponent extends BaseAddEditComponent { + originalCipher: Cipher = null; + viewOnly = true; + + constructor( + cipherService: CipherService, + folderService: FolderService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + auditService: AuditService, + stateService: StateService, + collectionService: CollectionService, + totpService: TotpService, + passwordGenerationService: PasswordGenerationService, + messagingService: MessagingService, + eventService: EventService, + policyService: PolicyService, + passwordRepromptService: PasswordRepromptService, + organizationService: OrganizationService, + logService: LogService + ) { + super( + cipherService, + folderService, + i18nService, + platformUtilsService, + auditService, + stateService, + collectionService, + totpService, + passwordGenerationService, + messagingService, + eventService, + policyService, + organizationService, + logService, + passwordRepromptService + ); + } + + async load() { + this.title = this.i18nService.t("viewItem"); + } + + protected async loadCipher() { + return Promise.resolve(this.originalCipher); + } +} diff --git a/apps/web/src/app/settings/organization-plans.component.html b/apps/web/src/app/settings/organization-plans.component.html new file mode 100644 index 0000000000..7b827ce7c7 --- /dev/null +++ b/apps/web/src/app/settings/organization-plans.component.html @@ -0,0 +1,377 @@ + + + {{ "loading" | i18n }} + + +

{{ "uploadLicenseFileOrg" | i18n }}

+
+
+ + + {{ + "licenseFileDesc" | i18n: "bitwarden_organization_license.json" + }} +
+ +
+
+
+

{{ "generalInformation" | i18n }}

+
+
+ + +
+
+ + +
+
+ + + {{ "clientOwnerDesc" | i18n: "20" }} +
+
+
+
+ + +
+
+
+ + +
+
+
+

{{ "chooseYourPlan" | i18n }}

+
+ + +
+
+ +

{{ "users" | i18n }}

+
+
+ + + {{ "userSeatsHowManyDesc" | i18n }} +
+
+
+

{{ "addons" | i18n }}

+
+
+ + + {{ + "userSeatsAdditionalDesc" + | i18n: selectedPlan.baseSeats:(seatPriceMonthly(selectedPlan) | currency: "$") + }} +
+
+
+
+ + + {{ + "additionalStorageIntervalDesc" + | i18n + : "1 GB" + : (additionalStoragePriceMonthly(selectedPlan) | currency: "$") + : ("month" | i18n) + }} +
+
+
+
+
+ + +
+ {{ + "premiumAccessDesc" | i18n: (3.33 | currency: "$"):("month" | i18n) + }} +
+
+

{{ "summary" | i18n }}

+
+ + +
+
+

+ {{ (createOrganization ? "paymentInformation" : "billingInformation") | i18n }} +

+ + {{ paymentDesc }} + + + +
+
+ {{ "planPrice" | i18n }}: {{ subtotal | currency: "USD $" }} +
+ + {{ "estimatedTax" | i18n }}: {{ taxCharges | currency: "USD $" }} + +
+
+

+ {{ "total" | i18n }}: {{ total | currency: "USD $" }}/{{ + selectedPlanInterval | i18n + }} +

+
+ + + +
+
+ {{ "singleOrgBlockCreateMessage" | i18n }} +
+
+ + +
+
diff --git a/apps/web/src/app/settings/organization-plans.component.ts b/apps/web/src/app/settings/organization-plans.component.ts new file mode 100644 index 0000000000..73da459ebf --- /dev/null +++ b/apps/web/src/app/settings/organization-plans.component.ts @@ -0,0 +1,412 @@ +import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core"; +import { Router } from "@angular/router"; + +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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { PaymentMethodType } from "jslib-common/enums/paymentMethodType"; +import { PlanType } from "jslib-common/enums/planType"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { ProductType } from "jslib-common/enums/productType"; +import { EncString } from "jslib-common/models/domain/encString"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; +import { OrganizationCreateRequest } from "jslib-common/models/request/organizationCreateRequest"; +import { OrganizationKeysRequest } from "jslib-common/models/request/organizationKeysRequest"; +import { OrganizationUpgradeRequest } from "jslib-common/models/request/organizationUpgradeRequest"; +import { ProviderOrganizationCreateRequest } from "jslib-common/models/request/provider/providerOrganizationCreateRequest"; +import { PlanResponse } from "jslib-common/models/response/planResponse"; + +import { PaymentComponent } from "./payment.component"; +import { TaxInfoComponent } from "./tax-info.component"; + +@Component({ + selector: "app-organization-plans", + templateUrl: "organization-plans.component.html", +}) +export class OrganizationPlansComponent implements OnInit { + @ViewChild(PaymentComponent) paymentComponent: PaymentComponent; + @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent; + + @Input() organizationId: string; + @Input() showFree = true; + @Input() showCancel = false; + @Input() acceptingSponsorship = false; + @Input() product: ProductType = ProductType.Free; + @Input() plan: PlanType = PlanType.Free; + @Input() providerId: string; + @Output() onSuccess = new EventEmitter(); + @Output() onCanceled = new EventEmitter(); + + loading = true; + selfHosted = false; + ownedBusiness = false; + premiumAccessAddon = false; + additionalStorage = 0; + additionalSeats = 0; + name: string; + billingEmail: string; + clientOwnerEmail: string; + businessName: string; + productTypes = ProductType; + formPromise: Promise; + singleOrgPolicyBlock = false; + discount = 0; + + plans: PlanResponse[]; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private router: Router, + private syncService: SyncService, + private policyService: PolicyService, + private organizationService: OrganizationService, + private logService: LogService, + private messagingService: MessagingService + ) { + this.selfHosted = platformUtilsService.isSelfHost(); + } + + async ngOnInit() { + if (!this.selfHosted) { + const plans = await this.apiService.getPlans(); + this.plans = plans.data; + if (this.product === ProductType.Enterprise || this.product === ProductType.Teams) { + this.ownedBusiness = true; + } + } + + if (this.providerId) { + this.ownedBusiness = true; + this.changedOwnedBusiness(); + } + + this.loading = false; + } + + get createOrganization() { + return this.organizationId == null; + } + + get selectedPlan() { + return this.plans.find((plan) => plan.type === this.plan); + } + + get selectedPlanInterval() { + return this.selectedPlan.isAnnual ? "year" : "month"; + } + + get selectableProducts() { + let validPlans = this.plans.filter((plan) => plan.type !== PlanType.Custom); + + if (this.ownedBusiness) { + validPlans = validPlans.filter((plan) => plan.canBeUsedByBusiness); + } + + if (!this.showFree) { + validPlans = validPlans.filter((plan) => plan.product !== ProductType.Free); + } + + validPlans = validPlans.filter( + (plan) => + !plan.legacyYear && + !plan.disabled && + (plan.isAnnual || plan.product === this.productTypes.Free) + ); + + if (this.acceptingSponsorship) { + const familyPlan = this.plans.find((plan) => plan.type === PlanType.FamiliesAnnually); + this.discount = familyPlan.basePrice; + validPlans = [familyPlan]; + } + + return validPlans; + } + + get selectablePlans() { + return this.plans.filter( + (plan) => !plan.legacyYear && !plan.disabled && plan.product === this.product + ); + } + + additionalStoragePriceMonthly(selectedPlan: PlanResponse) { + if (!selectedPlan.isAnnual) { + return selectedPlan.additionalStoragePricePerGb; + } + return selectedPlan.additionalStoragePricePerGb / 12; + } + + seatPriceMonthly(selectedPlan: PlanResponse) { + if (!selectedPlan.isAnnual) { + return selectedPlan.seatPrice; + } + return selectedPlan.seatPrice / 12; + } + + additionalStorageTotal(plan: PlanResponse): number { + if (!plan.hasAdditionalStorageOption) { + return 0; + } + + return plan.additionalStoragePricePerGb * Math.abs(this.additionalStorage || 0); + } + + seatTotal(plan: PlanResponse): number { + if (!plan.hasAdditionalSeatsOption) { + return 0; + } + + return plan.seatPrice * Math.abs(this.additionalSeats || 0); + } + + get subtotal() { + let subTotal = this.selectedPlan.basePrice; + if (this.selectedPlan.hasAdditionalSeatsOption && this.additionalSeats) { + subTotal += this.seatTotal(this.selectedPlan); + } + if (this.selectedPlan.hasAdditionalStorageOption && this.additionalStorage) { + subTotal += this.additionalStorageTotal(this.selectedPlan); + } + if (this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon) { + subTotal += this.selectedPlan.premiumAccessOptionPrice; + } + return subTotal - this.discount; + } + + get freeTrial() { + return this.selectedPlan.trialPeriodDays != null; + } + + get taxCharges() { + return this.taxComponent != null && this.taxComponent.taxRate != null + ? (this.taxComponent.taxRate / 100) * this.subtotal + : 0; + } + + get total() { + return this.subtotal + this.taxCharges || 0; + } + + get paymentDesc() { + if (this.acceptingSponsorship) { + return this.i18nService.t("paymentSponsored"); + } else if (this.freeTrial && this.createOrganization) { + return this.i18nService.t("paymentChargedWithTrial"); + } else { + return this.i18nService.t("paymentCharged", this.i18nService.t(this.selectedPlanInterval)); + } + } + + changedProduct() { + this.plan = this.selectablePlans[0].type; + if (!this.selectedPlan.hasPremiumAccessOption) { + this.premiumAccessAddon = false; + } + if (!this.selectedPlan.hasAdditionalStorageOption) { + this.additionalStorage = 0; + } + if (!this.selectedPlan.hasAdditionalSeatsOption) { + this.additionalSeats = 0; + } else if ( + !this.additionalSeats && + !this.selectedPlan.baseSeats && + this.selectedPlan.hasAdditionalSeatsOption + ) { + this.additionalSeats = 1; + } + } + + changedOwnedBusiness() { + if (!this.ownedBusiness || this.selectedPlan.canBeUsedByBusiness) { + return; + } + this.product = ProductType.Teams; + this.plan = PlanType.TeamsAnnually; + } + + changedCountry() { + this.paymentComponent.hideBank = this.taxComponent.taxInfo.country !== "US"; + // Bank Account payments are only available for US customers + if ( + this.paymentComponent.hideBank && + this.paymentComponent.method === PaymentMethodType.BankAccount + ) { + this.paymentComponent.method = PaymentMethodType.Card; + this.paymentComponent.changeMethod(); + } + } + + cancel() { + this.onCanceled.emit(); + } + + async submit() { + this.singleOrgPolicyBlock = await this.userHasBlockingSingleOrgPolicy(); + + if (this.singleOrgPolicyBlock) { + return; + } + + try { + const doSubmit = async (): Promise => { + let orgId: string = null; + if (this.createOrganization) { + const shareKey = await this.cryptoService.makeShareKey(); + const key = shareKey[0].encryptedString; + const collection = await this.cryptoService.encrypt( + this.i18nService.t("defaultCollection"), + shareKey[1] + ); + const collectionCt = collection.encryptedString; + const orgKeys = await this.cryptoService.makeKeyPair(shareKey[1]); + + if (this.selfHosted) { + orgId = await this.createSelfHosted(key, collectionCt, orgKeys); + } else { + orgId = await this.createCloudHosted(key, collectionCt, orgKeys, shareKey[1]); + } + + this.platformUtilsService.showToast( + "success", + this.i18nService.t("organizationCreated"), + this.i18nService.t("organizationReadyToGo") + ); + } else { + orgId = await this.updateOrganization(orgId); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("organizationUpgraded") + ); + } + + await this.apiService.refreshIdentityToken(); + await this.syncService.fullSync(true); + if (!this.acceptingSponsorship) { + this.router.navigate(["/organizations/" + orgId]); + } + + return orgId; + }; + + this.formPromise = doSubmit(); + const organizationId = await this.formPromise; + this.onSuccess.emit({ organizationId: organizationId }); + this.messagingService.send("organizationCreated", organizationId); + } catch (e) { + this.logService.error(e); + } + } + + private async userHasBlockingSingleOrgPolicy() { + return this.policyService.policyAppliesToUser(PolicyType.SingleOrg); + } + + private async updateOrganization(orgId: string) { + const request = new OrganizationUpgradeRequest(); + request.businessName = this.ownedBusiness ? this.businessName : null; + request.additionalSeats = this.additionalSeats; + request.additionalStorageGb = this.additionalStorage; + request.premiumAccessAddon = + this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon; + request.planType = this.selectedPlan.type; + request.billingAddressCountry = this.taxComponent.taxInfo.country; + request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode; + + // Retrieve org info to backfill pub/priv key if necessary + const org = await this.organizationService.get(this.organizationId); + if (!org.hasPublicAndPrivateKeys) { + const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId); + const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey); + request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); + } + + const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request); + if (!result.success && result.paymentIntentClientSecret != null) { + await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null); + } + return this.organizationId; + } + + private async createCloudHosted( + key: string, + collectionCt: string, + orgKeys: [string, EncString], + orgKey: SymmetricCryptoKey + ) { + const request = new OrganizationCreateRequest(); + request.key = key; + request.collectionName = collectionCt; + request.name = this.name; + request.billingEmail = this.billingEmail; + request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); + + if (this.selectedPlan.type === PlanType.Free) { + request.planType = PlanType.Free; + } else { + const tokenResult = await this.paymentComponent.createPaymentToken(); + + request.paymentToken = tokenResult[0]; + request.paymentMethodType = tokenResult[1]; + request.businessName = this.ownedBusiness ? this.businessName : null; + request.additionalSeats = this.additionalSeats; + request.additionalStorageGb = this.additionalStorage; + request.premiumAccessAddon = + this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon; + request.planType = this.selectedPlan.type; + request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode; + request.billingAddressCountry = this.taxComponent.taxInfo.country; + if (this.taxComponent.taxInfo.includeTaxId) { + request.taxIdNumber = this.taxComponent.taxInfo.taxId; + request.billingAddressLine1 = this.taxComponent.taxInfo.line1; + request.billingAddressLine2 = this.taxComponent.taxInfo.line2; + request.billingAddressCity = this.taxComponent.taxInfo.city; + request.billingAddressState = this.taxComponent.taxInfo.state; + } + } + + if (this.providerId) { + const providerRequest = new ProviderOrganizationCreateRequest(this.clientOwnerEmail, request); + const providerKey = await this.cryptoService.getProviderKey(this.providerId); + providerRequest.organizationCreateRequest.key = ( + await this.cryptoService.encrypt(orgKey.key, providerKey) + ).encryptedString; + const orgId = ( + await this.apiService.postProviderCreateOrganization(this.providerId, providerRequest) + ).organizationId; + + return orgId; + } else { + return (await this.apiService.postOrganization(request)).id; + } + } + + private async createSelfHosted(key: string, collectionCt: string, orgKeys: [string, EncString]) { + const fileEl = document.getElementById("file") as HTMLInputElement; + const files = fileEl.files; + if (files == null || files.length === 0) { + throw new Error(this.i18nService.t("selectFile")); + } + + const fd = new FormData(); + fd.append("license", files[0]); + fd.append("key", key); + fd.append("collectionName", collectionCt); + const response = await this.apiService.postOrganizationLicense(fd); + const orgId = response.id; + + // Org Keys live outside of the OrganizationLicense - add the keys to the org here + const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); + await this.apiService.postOrganizationKeys(orgId, request); + + return orgId; + } +} diff --git a/apps/web/src/app/settings/payment-method.component.html b/apps/web/src/app/settings/payment-method.component.html new file mode 100644 index 0000000000..bae22bf4cf --- /dev/null +++ b/apps/web/src/app/settings/payment-method.component.html @@ -0,0 +1,69 @@ +
+

+ {{ "paymentMethod" | i18n }} +

+ +
+ + + {{ "loading" | i18n }} + + +

{{ (isCreditBalance ? "accountCredit" : "accountBalance") | i18n }}

+

+ {{ creditOrBalance | currency: "$" }} +

+

{{ "creditAppliedDesc" | i18n }}

+ + + +

{{ "paymentMethod" | i18n }}

+

{{ "noPaymentMethod" | i18n }}

+ +

+ + {{ "inAppPurchase" | i18n }} + {{ paymentSource.description }} +

+
+ + + +
diff --git a/apps/web/src/app/settings/payment-method.component.ts b/apps/web/src/app/settings/payment-method.component.ts new file mode 100644 index 0000000000..505d22a4eb --- /dev/null +++ b/apps/web/src/app/settings/payment-method.component.ts @@ -0,0 +1,107 @@ +import { Component, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PaymentMethodType } from "jslib-common/enums/paymentMethodType"; +import { BillingPaymentResponse } from "jslib-common/models/response/billingPaymentResponse"; + +@Component({ + selector: "app-payment-method", + templateUrl: "payment-method.component.html", +}) +export class PaymentMethodComponent implements OnInit { + loading = false; + firstLoaded = false; + showAdjustPayment = false; + showAddCredit = false; + billing: BillingPaymentResponse; + paymentMethodType = PaymentMethodType; + + constructor( + protected apiService: ApiService, + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + private router: Router + ) {} + + async ngOnInit() { + if (this.platformUtilsService.isSelfHost()) { + this.router.navigate(["/settings/subscription"]); + } + await this.load(); + this.firstLoaded = true; + } + + async load() { + if (this.loading) { + return; + } + this.loading = true; + this.billing = await this.apiService.getUserBillingPayment(); + this.loading = false; + } + + addCredit() { + if (this.paymentSourceInApp) { + this.platformUtilsService.showDialog( + this.i18nService.t("cannotPerformInAppPurchase"), + this.i18nService.t("addCredit"), + null, + null, + "warning" + ); + return; + } + this.showAddCredit = true; + } + + closeAddCredit(load: boolean) { + this.showAddCredit = false; + if (load) { + this.load(); + } + } + + changePayment() { + if (this.paymentSourceInApp) { + this.platformUtilsService.showDialog( + this.i18nService.t("cannotPerformInAppPurchase"), + this.i18nService.t("changePaymentMethod"), + null, + null, + "warning" + ); + return; + } + this.showAdjustPayment = true; + } + + closePayment(load: boolean) { + this.showAdjustPayment = false; + if (load) { + this.load(); + } + } + + get isCreditBalance() { + return this.billing == null || this.billing.balance <= 0; + } + + get creditOrBalance() { + return Math.abs(this.billing != null ? this.billing.balance : 0); + } + + get paymentSource() { + return this.billing != null ? this.billing.paymentSource : null; + } + + get paymentSourceInApp() { + return ( + this.paymentSource != null && + (this.paymentSource.type === PaymentMethodType.AppleInApp || + this.paymentSource.type === PaymentMethodType.GoogleInApp) + ); + } +} diff --git a/apps/web/src/app/settings/payment.component.html b/apps/web/src/app/settings/payment.component.html new file mode 100644 index 0000000000..66135e0b9a --- /dev/null +++ b/apps/web/src/app/settings/payment.component.html @@ -0,0 +1,163 @@ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+
+ Visa, MasterCard, Discover, AmEx, JCB, Diners Club, UnionPay +
+
+ +
+
+
+
+ + + + +
+
+
+
+
+ + + {{ "verifyBankAccountInitialDesc" | i18n }} {{ "verifyBankAccountFailureWarning" | i18n }} + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+ {{ "paypalClickSubmit" | i18n }} +
+
+ + + {{ "makeSureEnoughCredit" | i18n }} + + diff --git a/apps/web/src/app/settings/payment.component.ts b/apps/web/src/app/settings/payment.component.ts new file mode 100644 index 0000000000..eb5fd4e0e2 --- /dev/null +++ b/apps/web/src/app/settings/payment.component.ts @@ -0,0 +1,289 @@ +import { Component, Input, OnInit } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PaymentMethodType } from "jslib-common/enums/paymentMethodType"; +import { ThemeType } from "jslib-common/enums/themeType"; + +import ThemeVariables from "src/scss/export.module.scss"; + +const lightInputColor = ThemeVariables.lightInputColor; +const lightInputPlaceholderColor = ThemeVariables.lightInputPlaceholderColor; +const darkInputColor = ThemeVariables.darkInputColor; +const darkInputPlaceholderColor = ThemeVariables.darkInputPlaceholderColor; + +@Component({ + selector: "app-payment", + templateUrl: "payment.component.html", +}) +export class PaymentComponent implements OnInit { + @Input() showMethods = true; + @Input() showOptions = true; + @Input() method = PaymentMethodType.Card; + @Input() hideBank = false; + @Input() hidePaypal = false; + @Input() hideCredit = false; + + bank: any = { + routing_number: null, + account_number: null, + account_holder_name: null, + account_holder_type: "", + currency: "USD", + country: "US", + }; + + paymentMethodType = PaymentMethodType; + + private btScript: HTMLScriptElement; + private btInstance: any = null; + private stripeScript: HTMLScriptElement; + private stripe: any = null; + private stripeElements: any = null; + private stripeCardNumberElement: any = null; + private stripeCardExpiryElement: any = null; + private stripeCardCvcElement: any = null; + private StripeElementStyle: any; + private StripeElementClasses: any; + + constructor( + private platformUtilsService: PlatformUtilsService, + private apiService: ApiService, + private logService: LogService + ) { + this.stripeScript = window.document.createElement("script"); + this.stripeScript.src = "https://js.stripe.com/v3/"; + this.stripeScript.async = true; + this.stripeScript.onload = () => { + this.stripe = (window as any).Stripe(process.env.STRIPE_KEY); + this.stripeElements = this.stripe.elements(); + this.setStripeElement(); + }; + this.btScript = window.document.createElement("script"); + this.btScript.src = `scripts/dropin.js?cache=${process.env.CACHE_TAG}`; + this.btScript.async = true; + this.StripeElementStyle = { + base: { + color: null, + fontFamily: + '"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif, ' + + '"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"', + fontSize: "14px", + fontSmoothing: "antialiased", + "::placeholder": { + color: null, + }, + }, + invalid: { + color: null, + }, + }; + this.StripeElementClasses = { + focus: "is-focused", + empty: "is-empty", + invalid: "is-invalid", + }; + } + + async ngOnInit() { + if (!this.showOptions) { + this.hidePaypal = this.method !== PaymentMethodType.PayPal; + this.hideBank = this.method !== PaymentMethodType.BankAccount; + this.hideCredit = this.method !== PaymentMethodType.Credit; + } + await this.setTheme(); + window.document.head.appendChild(this.stripeScript); + if (!this.hidePaypal) { + window.document.head.appendChild(this.btScript); + } + } + + ngOnDestroy() { + window.document.head.removeChild(this.stripeScript); + window.setTimeout(() => { + Array.from(window.document.querySelectorAll("iframe")).forEach((el) => { + if (el.src != null && el.src.indexOf("stripe") > -1) { + try { + window.document.body.removeChild(el); + } catch (e) { + this.logService.error(e); + } + } + }); + }, 500); + if (!this.hidePaypal) { + window.document.head.removeChild(this.btScript); + window.setTimeout(() => { + Array.from(window.document.head.querySelectorAll("script")).forEach((el) => { + if (el.src != null && el.src.indexOf("paypal") > -1) { + try { + window.document.head.removeChild(el); + } catch (e) { + this.logService.error(e); + } + } + }); + const btStylesheet = window.document.head.querySelector("#braintree-dropin-stylesheet"); + if (btStylesheet != null) { + try { + window.document.head.removeChild(btStylesheet); + } catch (e) { + this.logService.error(e); + } + } + }, 500); + } + } + + changeMethod() { + this.btInstance = null; + + if (this.method === PaymentMethodType.PayPal) { + window.setTimeout(() => { + (window as any).braintree.dropin.create( + { + authorization: process.env.BRAINTREE_KEY, + container: "#bt-dropin-container", + paymentOptionPriority: ["paypal"], + paypal: { + flow: "vault", + buttonStyle: { + label: "pay", + size: "medium", + shape: "pill", + color: "blue", + tagline: "false", + }, + }, + }, + (createErr: any, instance: any) => { + if (createErr != null) { + // eslint-disable-next-line + console.error(createErr); + return; + } + this.btInstance = instance; + } + ); + }, 250); + } else { + this.setStripeElement(); + } + } + + createPaymentToken(): Promise<[string, PaymentMethodType]> { + return new Promise((resolve, reject) => { + if (this.method === PaymentMethodType.Credit) { + resolve([null, this.method]); + } else if (this.method === PaymentMethodType.PayPal) { + this.btInstance + .requestPaymentMethod() + .then((payload: any) => { + resolve([payload.nonce, this.method]); + }) + .catch((err: any) => { + reject(err.message); + }); + } else if ( + this.method === PaymentMethodType.Card || + this.method === PaymentMethodType.BankAccount + ) { + if (this.method === PaymentMethodType.Card) { + this.apiService + .postSetupPayment() + .then((clientSecret) => + this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement) + ) + .then((result: any) => { + if (result.error) { + reject(result.error.message); + } else if (result.setupIntent && result.setupIntent.status === "succeeded") { + resolve([result.setupIntent.payment_method, this.method]); + } else { + reject(); + } + }); + } else { + this.stripe.createToken("bank_account", this.bank).then((result: any) => { + if (result.error) { + reject(result.error.message); + } else if (result.token && result.token.id != null) { + resolve([result.token.id, this.method]); + } else { + reject(); + } + }); + } + } + }); + } + + handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise { + return new Promise((resolve, reject) => { + if (this.showMethods && this.stripeCardNumberElement == null) { + reject(); + return; + } + const handleCardPayment = () => + this.showMethods + ? this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement) + : this.stripe.handleCardSetup(clientSecret); + return handleCardPayment().then(async (result: any) => { + if (result.error) { + reject(result.error.message); + } else if (result.paymentIntent && result.paymentIntent.status === "succeeded") { + if (successCallback != null) { + await successCallback(); + } + resolve(); + } else { + reject(); + } + }); + }); + } + + private setStripeElement() { + window.setTimeout(() => { + if (this.showMethods && this.method === PaymentMethodType.Card) { + if (this.stripeCardNumberElement == null) { + this.stripeCardNumberElement = this.stripeElements.create("cardNumber", { + style: this.StripeElementStyle, + classes: this.StripeElementClasses, + placeholder: "", + }); + } + if (this.stripeCardExpiryElement == null) { + this.stripeCardExpiryElement = this.stripeElements.create("cardExpiry", { + style: this.StripeElementStyle, + classes: this.StripeElementClasses, + }); + } + if (this.stripeCardCvcElement == null) { + this.stripeCardCvcElement = this.stripeElements.create("cardCvc", { + style: this.StripeElementStyle, + classes: this.StripeElementClasses, + placeholder: "", + }); + } + this.stripeCardNumberElement.mount("#stripe-card-number-element"); + this.stripeCardExpiryElement.mount("#stripe-card-expiry-element"); + this.stripeCardCvcElement.mount("#stripe-card-cvc-element"); + } + }, 50); + } + + private async setTheme() { + const theme = await this.platformUtilsService.getEffectiveTheme(); + if (theme === ThemeType.Dark) { + this.StripeElementStyle.base.color = darkInputColor; + this.StripeElementStyle.base["::placeholder"].color = darkInputPlaceholderColor; + this.StripeElementStyle.invalid.color = darkInputColor; + } else { + this.StripeElementStyle.base.color = lightInputColor; + this.StripeElementStyle.base["::placeholder"].color = lightInputPlaceholderColor; + this.StripeElementStyle.invalid.color = lightInputColor; + } + } +} diff --git a/apps/web/src/app/settings/preferences.component.html b/apps/web/src/app/settings/preferences.component.html new file mode 100644 index 0000000000..16ded5642f --- /dev/null +++ b/apps/web/src/app/settings/preferences.component.html @@ -0,0 +1,145 @@ + +

{{ "preferencesDesc" | i18n }}

+
+
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
+
+
+ + + + +
+ + {{ "languageDesc" | i18n }} +
+
+
+
+
+ + + + + +
+ {{ "disableIconsDesc" | i18n }} +
+
+
+ + + + + +
+ {{ "enableGravatarsDesc" | i18n }} +
+
+
+ + +
+ {{ "enableFullWidthDesc" | i18n }} +
+
+
+
+ + + {{ "themeDesc" | i18n }} +
+
+
+ +
diff --git a/apps/web/src/app/settings/preferences.component.ts b/apps/web/src/app/settings/preferences.component.ts new file mode 100644 index 0000000000..734c50bc53 --- /dev/null +++ b/apps/web/src/app/settings/preferences.component.ts @@ -0,0 +1,134 @@ +import { Component, OnInit } from "@angular/core"; +import { FormControl } from "@angular/forms"; + +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 { ThemeType } from "jslib-common/enums/themeType"; +import { Utils } from "jslib-common/misc/utils"; + +@Component({ + selector: "app-preferences", + templateUrl: "preferences.component.html", +}) +export class PreferencesComponent implements OnInit { + vaultTimeoutAction = "lock"; + disableIcons: boolean; + enableGravatars: boolean; + enableFullWidth: boolean; + theme: ThemeType; + locale: string; + vaultTimeouts: { name: string; value: number }[]; + localeOptions: any[]; + themeOptions: any[]; + + vaultTimeout: FormControl = new FormControl(null); + + private startingLocale: string; + private startingTheme: ThemeType; + + constructor( + private stateService: StateService, + private i18nService: I18nService, + private vaultTimeoutService: VaultTimeoutService, + private platformUtilsService: PlatformUtilsService, + private messagingService: MessagingService + ) { + this.vaultTimeouts = [ + { 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("onRefresh"), value: -1 }, + ]; + if (this.platformUtilsService.isDev()) { + this.vaultTimeouts.push({ 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("themeLight"), value: ThemeType.Light }, + { name: i18nService.t("themeDark"), value: ThemeType.Dark }, + { name: i18nService.t("themeSystem"), value: ThemeType.System }, + ]; + } + + async ngOnInit() { + this.vaultTimeout.setValue(await this.vaultTimeoutService.getVaultTimeout()); + this.vaultTimeoutAction = await this.stateService.getVaultTimeoutAction(); + this.disableIcons = await this.stateService.getDisableFavicon(); + this.enableGravatars = await this.stateService.getEnableGravitars(); + this.enableFullWidth = await this.stateService.getEnableFullWidth(); + + this.locale = (await this.stateService.getLocale()) ?? null; + this.startingLocale = this.locale; + + this.theme = await this.stateService.getTheme(); + this.startingTheme = this.theme; + } + + async submit() { + if (!this.vaultTimeout.valid) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("vaultTimeoutToLarge")); + return; + } + + await this.vaultTimeoutService.setVaultTimeoutOptions( + this.vaultTimeout.value, + this.vaultTimeoutAction + ); + await this.stateService.setDisableFavicon(this.disableIcons); + await this.stateService.setEnableGravitars(this.enableGravatars); + await this.stateService.setEnableFullWidth(this.enableFullWidth); + this.messagingService.send("setFullWidth"); + if (this.theme !== this.startingTheme) { + await this.stateService.setTheme(this.theme); + this.startingTheme = this.theme; + const effectiveTheme = await this.platformUtilsService.getEffectiveTheme(); + const htmlEl = window.document.documentElement; + htmlEl.classList.remove("theme_" + ThemeType.Light, "theme_" + ThemeType.Dark); + htmlEl.classList.add("theme_" + effectiveTheme); + } + await this.stateService.setLocale(this.locale); + if (this.locale !== this.startingLocale) { + window.location.reload(); + } else { + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("preferencesUpdated") + ); + } + } + + async vaultTimeoutActionChanged(newValue: string) { + if (newValue === "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; + } + } + this.vaultTimeoutAction = newValue; + } +} diff --git a/apps/web/src/app/settings/premium.component.html b/apps/web/src/app/settings/premium.component.html new file mode 100644 index 0000000000..4d6613aa1e --- /dev/null +++ b/apps/web/src/app/settings/premium.component.html @@ -0,0 +1,132 @@ + +
+

{{ "goPremium" | i18n }}

+
+ + {{ "alreadyPremiumFromOrg" | i18n }} + + +

{{ "premiumUpgradeUnlockFeatures" | i18n }}

+
    +
  • + + {{ "premiumSignUpStorage" | i18n }} +
  • +
  • + + {{ "premiumSignUpTwoStep" | i18n }} +
  • +
  • + + {{ "premiumSignUpEmergency" | i18n }} +
  • +
  • + + {{ "premiumSignUpReports" | i18n }} +
  • +
  • + + {{ "premiumSignUpTotp" | i18n }} +
  • +
  • + + {{ "premiumSignUpSupport" | i18n }} +
  • +
  • + + {{ "premiumSignUpFuture" | i18n }} +
  • +
+

+ {{ "premiumPrice" | i18n: (premiumPrice | currency: "$") }} +

+ + {{ "purchasePremium" | i18n }} + +
+ +

{{ "uploadLicenseFilePremium" | i18n }}

+
+
+ + + {{ + "licenseFileDesc" | i18n: "bitwarden_premium_license.json" + }} +
+ +
+
+
+

{{ "addons" | i18n }}

+
+
+ + + {{ + "additionalStorageIntervalDesc" + | i18n: "1 GB":(storageGbPrice | currency: "$"):("year" | i18n) + }} +
+
+

{{ "summary" | i18n }}

+ {{ "premiumMembership" | i18n }}: {{ premiumPrice | currency: "$" }}
+ {{ "additionalStorageGb" | i18n }}: {{ additionalStorage || 0 }} GB × + {{ storageGbPrice | currency: "$" }} = + {{ additionalStorageTotal | currency: "$" }} +
+

{{ "paymentInformation" | i18n }}

+ + +
+
+ {{ "planPrice" | i18n }}: {{ subtotal | currency: "USD $" }} +
+ + {{ "estimatedTax" | i18n }}: {{ taxCharges | currency: "USD $" }} + +
+
+

+ {{ "total" | i18n }}: {{ total | currency: "USD $" }}/{{ "year" | i18n }} +

+
+ {{ "paymentChargedAnnually" | i18n }} + +
diff --git a/apps/web/src/app/settings/premium.component.ts b/apps/web/src/app/settings/premium.component.ts new file mode 100644 index 0000000000..5b9566e5dc --- /dev/null +++ b/apps/web/src/app/settings/premium.component.ts @@ -0,0 +1,142 @@ +import { Component, OnInit, ViewChild } from "@angular/core"; +import { Router } from "@angular/router"; + +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 { MessagingService } from "jslib-common/abstractions/messaging.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 { TokenService } from "jslib-common/abstractions/token.service"; + +import { PaymentComponent } from "./payment.component"; +import { TaxInfoComponent } from "./tax-info.component"; + +@Component({ + selector: "app-premium", + templateUrl: "premium.component.html", +}) +export class PremiumComponent implements OnInit { + @ViewChild(PaymentComponent) paymentComponent: PaymentComponent; + @ViewChild(TaxInfoComponent) taxInfoComponent: TaxInfoComponent; + + canAccessPremium = false; + selfHosted = false; + premiumPrice = 10; + storageGbPrice = 4; + additionalStorage = 0; + + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private tokenService: TokenService, + private router: Router, + private messagingService: MessagingService, + private syncService: SyncService, + private logService: LogService, + private stateService: StateService + ) { + this.selfHosted = platformUtilsService.isSelfHost(); + } + + async ngOnInit() { + this.canAccessPremium = await this.stateService.getCanAccessPremium(); + const premium = await this.tokenService.getPremium(); + if (premium) { + this.router.navigate(["/settings/subscription/user-subscription"]); + return; + } + } + + async submit() { + let files: FileList = null; + if (this.selfHosted) { + const fileEl = document.getElementById("file") as HTMLInputElement; + files = fileEl.files; + if (files == null || files.length === 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("selectFile") + ); + return; + } + } + + try { + if (this.selfHosted) { + if (!this.tokenService.getEmailVerified()) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("verifyEmailFirst") + ); + return; + } + + const fd = new FormData(); + fd.append("license", files[0]); + this.formPromise = this.apiService.postAccountLicense(fd).then(() => { + return this.finalizePremium(); + }); + } else { + this.formPromise = this.paymentComponent + .createPaymentToken() + .then((result) => { + const fd = new FormData(); + fd.append("paymentMethodType", result[1].toString()); + if (result[0] != null) { + fd.append("paymentToken", result[0]); + } + fd.append("additionalStorageGb", (this.additionalStorage || 0).toString()); + fd.append("country", this.taxInfoComponent.taxInfo.country); + fd.append("postalCode", this.taxInfoComponent.taxInfo.postalCode); + return this.apiService.postPremium(fd); + }) + .then((paymentResponse) => { + if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) { + return this.paymentComponent.handleStripeCardPayment( + paymentResponse.paymentIntentClientSecret, + () => this.finalizePremium() + ); + } else { + return this.finalizePremium(); + } + }); + } + await this.formPromise; + } catch (e) { + this.logService.error(e); + } + } + + async finalizePremium() { + await this.apiService.refreshIdentityToken(); + await this.syncService.fullSync(true); + this.platformUtilsService.showToast("success", null, this.i18nService.t("premiumUpdated")); + this.messagingService.send("purchasedPremium"); + this.router.navigate(["/settings/subscription/user-subscription"]); + } + + get additionalStorageTotal(): number { + return this.storageGbPrice * Math.abs(this.additionalStorage || 0); + } + + get subtotal(): number { + return this.premiumPrice + this.additionalStorageTotal; + } + + get taxCharges(): number { + return this.taxInfoComponent != null && this.taxInfoComponent.taxRate != null + ? (this.taxInfoComponent.taxRate / 100) * this.subtotal + : 0; + } + + get total(): number { + return this.subtotal + this.taxCharges || 0; + } +} diff --git a/apps/web/src/app/settings/profile.component.html b/apps/web/src/app/settings/profile.component.html new file mode 100644 index 0000000000..bdc6932ee4 --- /dev/null +++ b/apps/web/src/app/settings/profile.component.html @@ -0,0 +1,74 @@ +
+ + {{ "loading" | i18n }} +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+

+ {{ "yourAccountsFingerprint" | i18n }}: + +
+ {{ fingerprint }} +

+
+
+ +
diff --git a/apps/web/src/app/settings/profile.component.ts b/apps/web/src/app/settings/profile.component.ts new file mode 100644 index 0000000000..e9a4914a5a --- /dev/null +++ b/apps/web/src/app/settings/profile.component.ts @@ -0,0 +1,57 @@ +import { Component, OnInit } from "@angular/core"; + +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 { KeyConnectorService } from "jslib-common/abstractions/keyConnector.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 { UpdateProfileRequest } from "jslib-common/models/request/updateProfileRequest"; +import { ProfileResponse } from "jslib-common/models/response/profileResponse"; + +@Component({ + selector: "app-profile", + templateUrl: "profile.component.html", +}) +export class ProfileComponent implements OnInit { + loading = true; + profile: ProfileResponse; + fingerprint: string; + hidePasswordHint = false; + + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private logService: LogService, + private keyConnectorService: KeyConnectorService, + private stateService: StateService + ) {} + + async ngOnInit() { + this.profile = await this.apiService.getProfile(); + this.loading = false; + const fingerprint = await this.cryptoService.getFingerprint( + await this.stateService.getUserId() + ); + if (fingerprint != null) { + this.fingerprint = fingerprint.join("-"); + } + this.hidePasswordHint = await this.keyConnectorService.getUsesKeyConnector(); + } + + async submit() { + try { + const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint); + this.formPromise = this.apiService.putProfile(request); + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("accountUpdated")); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/purge-vault.component.html b/apps/web/src/app/settings/purge-vault.component.html new file mode 100644 index 0000000000..2c6a9f50fc --- /dev/null +++ b/apps/web/src/app/settings/purge-vault.component.html @@ -0,0 +1,38 @@ + diff --git a/apps/web/src/app/settings/purge-vault.component.ts b/apps/web/src/app/settings/purge-vault.component.ts new file mode 100644 index 0000000000..d40e21b32f --- /dev/null +++ b/apps/web/src/app/settings/purge-vault.component.ts @@ -0,0 +1,46 @@ +import { Component, Input } from "@angular/core"; +import { Router } from "@angular/router"; + +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 { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { Verification } from "jslib-common/types/verification"; + +@Component({ + selector: "app-purge-vault", + templateUrl: "purge-vault.component.html", +}) +export class PurgeVaultComponent { + @Input() organizationId?: string = null; + + masterPassword: Verification; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private userVerificationService: UserVerificationService, + private router: Router, + private logService: LogService + ) {} + + async submit() { + try { + this.formPromise = this.userVerificationService + .buildRequest(this.masterPassword) + .then((request) => this.apiService.postPurgeCiphers(request, this.organizationId)); + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("vaultPurged")); + if (this.organizationId != null) { + this.router.navigate(["organizations", this.organizationId, "vault"]); + } else { + this.router.navigate(["vault"]); + } + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/apps/web/src/app/settings/security-keys.component.html b/apps/web/src/app/settings/security-keys.component.html new file mode 100644 index 0000000000..58201014be --- /dev/null +++ b/apps/web/src/app/settings/security-keys.component.html @@ -0,0 +1,18 @@ + +
+

{{ "apiKey" | i18n }}

+
+

+ {{ "userApiKeyDesc" | i18n }} +

+ + + + diff --git a/apps/web/src/app/settings/security-keys.component.ts b/apps/web/src/app/settings/security-keys.component.ts new file mode 100644 index 0000000000..650f5c4851 --- /dev/null +++ b/apps/web/src/app/settings/security-keys.component.ts @@ -0,0 +1,61 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +import { ApiKeyComponent } from "./api-key.component"; + +@Component({ + selector: "app-security-keys", + templateUrl: "security-keys.component.html", +}) +export class SecurityKeysComponent implements OnInit { + @ViewChild("viewUserApiKeyTemplate", { read: ViewContainerRef, static: true }) + viewUserApiKeyModalRef: ViewContainerRef; + @ViewChild("rotateUserApiKeyTemplate", { read: ViewContainerRef, static: true }) + rotateUserApiKeyModalRef: ViewContainerRef; + + showChangeKdf = true; + + constructor( + private keyConnectorService: KeyConnectorService, + private stateService: StateService, + private modalService: ModalService, + private apiService: ApiService + ) {} + + async ngOnInit() { + this.showChangeKdf = !(await this.keyConnectorService.getUsesKeyConnector()); + } + + async viewUserApiKey() { + const entityId = await this.stateService.getUserId(); + await this.modalService.openViewRef(ApiKeyComponent, this.viewUserApiKeyModalRef, (comp) => { + comp.keyType = "user"; + comp.entityId = entityId; + comp.postKey = this.apiService.postUserApiKey.bind(this.apiService); + comp.scope = "api"; + comp.grantType = "client_credentials"; + comp.apiKeyTitle = "apiKey"; + comp.apiKeyWarning = "userApiKeyWarning"; + comp.apiKeyDescription = "userApiKeyDesc"; + }); + } + + async rotateUserApiKey() { + const entityId = await this.stateService.getUserId(); + await this.modalService.openViewRef(ApiKeyComponent, this.rotateUserApiKeyModalRef, (comp) => { + comp.keyType = "user"; + comp.isRotation = true; + comp.entityId = entityId; + comp.postKey = this.apiService.postUserRotateApiKey.bind(this.apiService); + comp.scope = "api"; + comp.grantType = "client_credentials"; + comp.apiKeyTitle = "apiKey"; + comp.apiKeyWarning = "userApiKeyWarning"; + comp.apiKeyDescription = "apiKeyRotateDesc"; + }); + } +} diff --git a/apps/web/src/app/settings/security-routing.module.ts b/apps/web/src/app/settings/security-routing.module.ts new file mode 100644 index 0000000000..42d36e0a88 --- /dev/null +++ b/apps/web/src/app/settings/security-routing.module.ts @@ -0,0 +1,39 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { ChangePasswordComponent } from "./change-password.component"; +import { SecurityKeysComponent } from "./security-keys.component"; +import { SecurityComponent } from "./security.component"; +import { TwoFactorSetupComponent } from "./two-factor-setup.component"; + +const routes: Routes = [ + { + path: "", + component: SecurityComponent, + data: { titleId: "security" }, + children: [ + { path: "", pathMatch: "full", redirectTo: "change-password" }, + { + path: "change-password", + component: ChangePasswordComponent, + data: { titleId: "masterPassword" }, + }, + { + path: "two-factor", + component: TwoFactorSetupComponent, + data: { titleId: "twoStepLogin" }, + }, + { + path: "security-keys", + component: SecurityKeysComponent, + data: { titleId: "keys" }, + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class SecurityRoutingModule {} diff --git a/apps/web/src/app/settings/security.component.html b/apps/web/src/app/settings/security.component.html new file mode 100644 index 0000000000..6e6b76fbab --- /dev/null +++ b/apps/web/src/app/settings/security.component.html @@ -0,0 +1,22 @@ + + diff --git a/apps/web/src/app/settings/security.component.ts b/apps/web/src/app/settings/security.component.ts new file mode 100644 index 0000000000..7312392ee7 --- /dev/null +++ b/apps/web/src/app/settings/security.component.ts @@ -0,0 +1,17 @@ +import { Component } from "@angular/core"; + +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; + +@Component({ + selector: "app-security", + templateUrl: "security.component.html", +}) +export class SecurityComponent { + showChangePassword = true; + + constructor(private keyConnectorService: KeyConnectorService) {} + + async ngOnInit() { + this.showChangePassword = !(await this.keyConnectorService.getUsesKeyConnector()); + } +} diff --git a/apps/web/src/app/settings/settings.component.html b/apps/web/src/app/settings/settings.component.html new file mode 100644 index 0000000000..d5236fa63d --- /dev/null +++ b/apps/web/src/app/settings/settings.component.html @@ -0,0 +1,45 @@ + diff --git a/apps/web/src/app/settings/settings.component.ts b/apps/web/src/app/settings/settings.component.ts new file mode 100644 index 0000000000..9756ba41ad --- /dev/null +++ b/apps/web/src/app/settings/settings.component.ts @@ -0,0 +1,64 @@ +import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { TokenService } from "jslib-common/abstractions/token.service"; + +import { StateService } from "../../abstractions/state.service"; + +const BroadcasterSubscriptionId = "SettingsComponent"; + +@Component({ + selector: "app-settings", + templateUrl: "settings.component.html", +}) +export class SettingsComponent implements OnInit, OnDestroy { + premium: boolean; + selfHosted: boolean; + hasFamilySponsorshipAvailable: boolean; + hideSubscription: boolean; + + constructor( + private tokenService: TokenService, + private broadcasterService: BroadcasterService, + private ngZone: NgZone, + private platformUtilsService: PlatformUtilsService, + private organizationService: OrganizationService, + private stateService: StateService, + private apiService: ApiService + ) {} + + async ngOnInit() { + this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "purchasedPremium": + await this.load(); + break; + default: + } + }); + }); + + this.selfHosted = await this.platformUtilsService.isSelfHost(); + await this.load(); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async load() { + this.premium = await this.tokenService.getPremium(); + this.hasFamilySponsorshipAvailable = await this.organizationService.canManageSponsorships(); + const hasPremiumFromOrg = await this.stateService.getCanAccessPremium(); + let billing = null; + if (!this.selfHosted) { + billing = await this.apiService.getUserBillingHistory(); + } + this.hideSubscription = + !this.premium && hasPremiumFromOrg && (this.selfHosted || billing?.hasNoHistory); + } +} diff --git a/apps/web/src/app/settings/sponsored-families.component.html b/apps/web/src/app/settings/sponsored-families.component.html new file mode 100644 index 0000000000..9bd2bb7027 --- /dev/null +++ b/apps/web/src/app/settings/sponsored-families.component.html @@ -0,0 +1,102 @@ + + + + {{ "loading" | i18n }} + + +

+ {{ "sponsoredFamiliesEligible" | i18n }} +

+
+ {{ "sponsoredFamiliesInclude" | i18n }}: +
    +
  • {{ "sponsoredFamiliesPremiumAccess" | i18n }}
  • +
  • {{ "sponsoredFamiliesSharedCollections" | i18n }}
  • +
+
+
+
+ + +
+
+ + + + + {{ "cannotSponsorSelf" | i18n }} + + + + {{ "invalidEmail" | i18n }} + +
+
+ +
+
+ +
+ + + + + + + + + + + + + + +
{{ "recipient" | i18n }}{{ "sponsoringOrg" | i18n }}{{ "status" | i18n }}
+
+ {{ "sponsoredFamiliesLeaveCopy" | i18n }} +
+
diff --git a/apps/web/src/app/settings/sponsored-families.component.ts b/apps/web/src/app/settings/sponsored-families.component.ts new file mode 100644 index 0000000000..c168d00d82 --- /dev/null +++ b/apps/web/src/app/settings/sponsored-families.component.ts @@ -0,0 +1,123 @@ +import { Component, OnInit } from "@angular/core"; +import { FormBuilder, FormGroup, Validators } from "@angular/forms"; + +import { notAllowedValueAsync } from "jslib-angular/validators/notAllowedValueAsync.validator"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.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 { PlanSponsorshipType } from "jslib-common/enums/planSponsorshipType"; +import { Organization } from "jslib-common/models/domain/organization"; + +@Component({ + selector: "app-sponsored-families", + templateUrl: "sponsored-families.component.html", +}) +export class SponsoredFamiliesComponent implements OnInit { + loading = false; + + availableSponsorshipOrgs: Organization[] = []; + activeSponsorshipOrgs: Organization[] = []; + + // Conditional display properties + formPromise: Promise; + + sponsorshipForm: FormGroup; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private syncService: SyncService, + private organizationService: OrganizationService, + private formBuilder: FormBuilder, + private stateService: StateService + ) { + this.sponsorshipForm = this.formBuilder.group({ + selectedSponsorshipOrgId: [ + "", + { + validators: [Validators.required], + }, + ], + sponsorshipEmail: [ + "", + { + validators: [Validators.email], + asyncValidators: [ + notAllowedValueAsync(async () => await this.stateService.getEmail(), true), + ], + updateOn: "blur", + }, + ], + }); + } + + async ngOnInit() { + await this.load(); + } + + async submit() { + this.formPromise = this.apiService.postCreateSponsorship( + this.sponsorshipForm.value.selectedSponsorshipOrgId, + { + sponsoredEmail: this.sponsorshipForm.value.sponsorshipEmail, + planSponsorshipType: PlanSponsorshipType.FamiliesForEnterprise, + friendlyName: this.sponsorshipForm.value.sponsorshipEmail, + } + ); + + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("sponsorshipCreated")); + this.formPromise = null; + this.resetForm(); + await this.load(true); + } + + async load(forceReload = false) { + if (this.loading) { + return; + } + + this.loading = true; + if (forceReload) { + await this.syncService.fullSync(true); + } + + const allOrgs = await this.organizationService.getAll(); + this.availableSponsorshipOrgs = allOrgs.filter((org) => org.familySponsorshipAvailable); + + this.activeSponsorshipOrgs = allOrgs.filter( + (org) => org.familySponsorshipFriendlyName !== null + ); + + if (this.availableSponsorshipOrgs.length === 1) { + this.sponsorshipForm.patchValue({ + selectedSponsorshipOrgId: this.availableSponsorshipOrgs[0].id, + }); + } + this.loading = false; + } + + get sponsorshipEmailControl() { + return this.sponsorshipForm.controls["sponsorshipEmail"]; + } + + private async resetForm() { + this.sponsorshipForm.reset(); + } + + get anyActiveSponsorships(): boolean { + return this.activeSponsorshipOrgs.length > 0; + } + + get anyOrgsAvailable(): boolean { + return this.availableSponsorshipOrgs.length > 0; + } + + get isSelfHosted(): boolean { + return this.platformUtilsService.isSelfHost(); + } +} diff --git a/apps/web/src/app/settings/sponsoring-org-row.component.html b/apps/web/src/app/settings/sponsoring-org-row.component.html new file mode 100644 index 0000000000..30abad4475 --- /dev/null +++ b/apps/web/src/app/settings/sponsoring-org-row.component.html @@ -0,0 +1,48 @@ + + {{ sponsoringOrg.familySponsorshipFriendlyName }} + +{{ sponsoringOrg.name }} + + {{ statusMessage }} + + + + diff --git a/apps/web/src/app/settings/sponsoring-org-row.component.ts b/apps/web/src/app/settings/sponsoring-org-row.component.ts new file mode 100644 index 0000000000..59723f0c8b --- /dev/null +++ b/apps/web/src/app/settings/sponsoring-org-row.component.ts @@ -0,0 +1,130 @@ +import { formatDate } from "@angular/common"; +import { Component, EventEmitter, Input, Output, OnInit } from "@angular/core"; + +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 { Organization } from "jslib-common/models/domain/organization"; + +@Component({ + selector: "[sponsoring-org-row]", + templateUrl: "sponsoring-org-row.component.html", +}) +export class SponsoringOrgRowComponent implements OnInit { + @Input() sponsoringOrg: Organization = null; + @Input() isSelfHosted = false; + + @Output() sponsorshipRemoved = new EventEmitter(); + + statusMessage = "loading"; + statusClass: "text-success" | "text-danger" = "text-success"; + + revokeSponsorshipPromise: Promise; + resendEmailPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private logService: LogService, + private platformUtilsService: PlatformUtilsService + ) {} + + ngOnInit(): void { + this.setStatus( + this.isSelfHosted, + this.sponsoringOrg.familySponsorshipToDelete, + this.sponsoringOrg.familySponsorshipValidUntil, + this.sponsoringOrg.familySponsorshipLastSyncDate + ); + } + + async revokeSponsorship() { + try { + this.revokeSponsorshipPromise = this.doRevokeSponsorship(); + await this.revokeSponsorshipPromise; + } catch (e) { + this.logService.error(e); + } + + this.revokeSponsorshipPromise = null; + } + + async resendEmail() { + this.resendEmailPromise = this.apiService.postResendSponsorshipOffer(this.sponsoringOrg.id); + await this.resendEmailPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("emailSent")); + this.resendEmailPromise = null; + } + + get isSentAwaitingSync() { + return this.isSelfHosted && !this.sponsoringOrg.familySponsorshipLastSyncDate; + } + + private async doRevokeSponsorship() { + const isConfirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("revokeSponsorshipConfirmation"), + `${this.i18nService.t("remove")} ${this.sponsoringOrg.familySponsorshipFriendlyName}?`, + this.i18nService.t("remove"), + this.i18nService.t("cancel"), + "warning" + ); + + if (!isConfirmed) { + return; + } + + await this.apiService.deleteRevokeSponsorship(this.sponsoringOrg.id); + this.platformUtilsService.showToast("success", null, this.i18nService.t("reclaimedFreePlan")); + this.sponsorshipRemoved.emit(); + } + + private setStatus( + selfHosted: boolean, + toDelete?: boolean, + validUntil?: Date, + lastSyncDate?: Date + ) { + /* + * Possible Statuses: + * Requested (self-hosted only) + * Sent + * Active + * RequestRevoke + * RevokeWhenExpired + */ + + if (toDelete && validUntil) { + // They want to delete but there is a valid until date which means there is an active sponsorship + this.statusMessage = this.i18nService.t( + "revokeWhenExpired", + formatDate(validUntil, "MM/dd/yyyy", this.i18nService.locale) + ); + this.statusClass = "text-danger"; + } else if (toDelete) { + // They want to delete and we don't have a valid until date so we can + // this should only happen on a self-hosted install + this.statusMessage = this.i18nService.t("requestRemoved"); + this.statusClass = "text-danger"; + } else if (validUntil) { + // They don't want to delete and they have a valid until date + // that means they are actively sponsoring someone + this.statusMessage = this.i18nService.t("active"); + this.statusClass = "text-success"; + } else if (selfHosted && lastSyncDate) { + // We are on a self-hosted install and it has been synced but we have not gotten + // a valid until date so we can't know if they are actively sponsoring someone + this.statusMessage = this.i18nService.t("sent"); + this.statusClass = "text-success"; + } else if (!selfHosted) { + // We are in cloud and all other status checks have been false therefore we have + // sent the request but it hasn't been accepted yet + this.statusMessage = this.i18nService.t("sent"); + this.statusClass = "text-success"; + } else { + // We are on a self-hosted install and we have not synced yet + this.statusMessage = this.i18nService.t("requested"); + this.statusClass = "text-success"; + } + } +} diff --git a/apps/web/src/app/settings/subscription-routing.module.ts b/apps/web/src/app/settings/subscription-routing.module.ts new file mode 100644 index 0000000000..ae1e58cb16 --- /dev/null +++ b/apps/web/src/app/settings/subscription-routing.module.ts @@ -0,0 +1,45 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { PaymentMethodComponent } from "./payment-method.component"; +import { PremiumComponent } from "./premium.component"; +import { SubscriptionComponent } from "./subscription.component"; +import { UserBillingHistoryComponent } from "./user-billing-history.component"; +import { UserSubscriptionComponent } from "./user-subscription.component"; + +const routes: Routes = [ + { + path: "", + component: SubscriptionComponent, + data: { titleId: "subscription" }, + children: [ + { path: "", pathMatch: "full", redirectTo: "premium" }, + { + path: "user-subscription", + component: UserSubscriptionComponent, + data: { titleId: "premiumMembership" }, + }, + { + path: "premium", + component: PremiumComponent, + data: { titleId: "goPremium" }, + }, + { + path: "payment-method", + component: PaymentMethodComponent, + data: { titleId: "paymentMethod" }, + }, + { + path: "billing-history", + component: UserBillingHistoryComponent, + data: { titleId: "billingHistory" }, + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class SubscriptionRoutingModule {} diff --git a/apps/web/src/app/settings/subscription.component.html b/apps/web/src/app/settings/subscription.component.html new file mode 100644 index 0000000000..6d19d0929a --- /dev/null +++ b/apps/web/src/app/settings/subscription.component.html @@ -0,0 +1,20 @@ + + diff --git a/apps/web/src/app/settings/subscription.component.ts b/apps/web/src/app/settings/subscription.component.ts new file mode 100644 index 0000000000..48dc67f945 --- /dev/null +++ b/apps/web/src/app/settings/subscription.component.ts @@ -0,0 +1,27 @@ +import { Component } from "@angular/core"; + +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { TokenService } from "jslib-common/abstractions/token.service"; + +@Component({ + selector: "app-subscription", + templateUrl: "subscription.component.html", +}) +export class SubscriptionComponent { + hasPremium: boolean; + selfHosted: boolean; + + constructor( + private tokenService: TokenService, + private platformUtilsService: PlatformUtilsService + ) {} + + async ngOnInit() { + this.hasPremium = await this.tokenService.getPremium(); + this.selfHosted = this.platformUtilsService.isSelfHost(); + } + + get subscriptionRoute(): string { + return this.hasPremium ? "user-subscription" : "premium"; + } +} diff --git a/apps/web/src/app/settings/tax-info.component.html b/apps/web/src/app/settings/tax-info.component.html new file mode 100644 index 0000000000..ea21a46154 --- /dev/null +++ b/apps/web/src/app/settings/tax-info.component.html @@ -0,0 +1,356 @@ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
diff --git a/apps/web/src/app/settings/tax-info.component.ts b/apps/web/src/app/settings/tax-info.component.ts new file mode 100644 index 0000000000..f36feadde2 --- /dev/null +++ b/apps/web/src/app/settings/tax-info.component.ts @@ -0,0 +1,170 @@ +import { Component, EventEmitter, Output } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { OrganizationTaxInfoUpdateRequest } from "jslib-common/models/request/organizationTaxInfoUpdateRequest"; +import { TaxInfoUpdateRequest } from "jslib-common/models/request/taxInfoUpdateRequest"; +import { TaxRateResponse } from "jslib-common/models/response/taxRateResponse"; + +@Component({ + selector: "app-tax-info", + templateUrl: "tax-info.component.html", +}) +export class TaxInfoComponent { + @Output() onCountryChanged = new EventEmitter(); + + loading = true; + organizationId: string; + taxInfo: any = { + taxId: null, + line1: null, + line2: null, + city: null, + state: null, + postalCode: null, + country: "US", + includeTaxId: false, + }; + + taxRates: TaxRateResponse[]; + + private pristine: any = { + taxId: null, + line1: null, + line2: null, + city: null, + state: null, + postalCode: null, + country: "US", + includeTaxId: false, + }; + + constructor( + private apiService: ApiService, + private route: ActivatedRoute, + private logService: LogService + ) {} + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + if (this.organizationId) { + try { + const taxInfo = await this.apiService.getOrganizationTaxInfo(this.organizationId); + if (taxInfo) { + this.taxInfo.taxId = taxInfo.taxId; + this.taxInfo.state = taxInfo.state; + this.taxInfo.line1 = taxInfo.line1; + this.taxInfo.line2 = taxInfo.line2; + this.taxInfo.city = taxInfo.city; + this.taxInfo.state = taxInfo.state; + this.taxInfo.postalCode = taxInfo.postalCode; + this.taxInfo.country = taxInfo.country || "US"; + this.taxInfo.includeTaxId = + this.taxInfo.country !== "US" && + (!!taxInfo.taxId || + !!taxInfo.line1 || + !!taxInfo.line2 || + !!taxInfo.city || + !!taxInfo.state); + } + } catch (e) { + this.logService.error(e); + } + } else { + try { + const taxInfo = await this.apiService.getTaxInfo(); + if (taxInfo) { + this.taxInfo.postalCode = taxInfo.postalCode; + this.taxInfo.country = taxInfo.country || "US"; + } + } catch (e) { + this.logService.error(e); + } + } + this.pristine = Object.assign({}, this.taxInfo); + // If not the default (US) then trigger onCountryChanged + if (this.taxInfo.country !== "US") { + this.onCountryChanged.emit(); + } + }); + + try { + const taxRates = await this.apiService.getTaxRates(); + if (taxRates) { + this.taxRates = taxRates.data; + } + } catch (e) { + this.logService.error(e); + } finally { + this.loading = false; + } + } + + get taxRate() { + if (this.taxRates != null) { + const localTaxRate = this.taxRates.find( + (x) => x.country === this.taxInfo.country && x.postalCode === this.taxInfo.postalCode + ); + return localTaxRate?.rate ?? null; + } + } + + getTaxInfoRequest(): TaxInfoUpdateRequest { + if (this.organizationId) { + const request = new OrganizationTaxInfoUpdateRequest(); + request.taxId = this.taxInfo.taxId; + request.state = this.taxInfo.state; + request.line1 = this.taxInfo.line1; + request.line2 = this.taxInfo.line2; + request.city = this.taxInfo.city; + request.state = this.taxInfo.state; + request.postalCode = this.taxInfo.postalCode; + request.country = this.taxInfo.country; + return request; + } else { + const request = new TaxInfoUpdateRequest(); + request.postalCode = this.taxInfo.postalCode; + request.country = this.taxInfo.country; + return request; + } + } + + submitTaxInfo(): Promise { + if (!this.hasChanged()) { + return new Promise((resolve) => { + resolve(); + }); + } + const request = this.getTaxInfoRequest(); + return this.organizationId + ? this.apiService.putOrganizationTaxInfo( + this.organizationId, + request as OrganizationTaxInfoUpdateRequest + ) + : this.apiService.putTaxInfo(request); + } + + changeCountry() { + if (this.taxInfo.country === "US") { + this.taxInfo.includeTaxId = false; + this.taxInfo.taxId = null; + this.taxInfo.line1 = null; + this.taxInfo.line2 = null; + this.taxInfo.city = null; + this.taxInfo.state = null; + } + this.onCountryChanged.emit(); + } + + private hasChanged(): boolean { + for (const key in this.taxInfo) { + // eslint-disable-next-line + if (this.pristine.hasOwnProperty(key) && this.pristine[key] !== this.taxInfo[key]) { + return true; + } + } + return false; + } +} diff --git a/apps/web/src/app/settings/two-factor-authenticator.component.html b/apps/web/src/app/settings/two-factor-authenticator.component.html new file mode 100644 index 0000000000..e46c7b0703 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-authenticator.component.html @@ -0,0 +1,116 @@ + diff --git a/apps/web/src/app/settings/two-factor-authenticator.component.ts b/apps/web/src/app/settings/two-factor-authenticator.component.ts new file mode 100644 index 0000000000..c8f7b8c1fa --- /dev/null +++ b/apps/web/src/app/settings/two-factor-authenticator.component.ts @@ -0,0 +1,95 @@ +import { Component, OnDestroy, OnInit } from "@angular/core"; + +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"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { UpdateTwoFactorAuthenticatorRequest } from "jslib-common/models/request/updateTwoFactorAuthenticatorRequest"; +import { TwoFactorAuthenticatorResponse } from "jslib-common/models/response/twoFactorAuthenticatorResponse"; + +import { TwoFactorBaseComponent } from "./two-factor-base.component"; + +@Component({ + selector: "app-two-factor-authenticator", + templateUrl: "two-factor-authenticator.component.html", +}) +export class TwoFactorAuthenticatorComponent + extends TwoFactorBaseComponent + implements OnInit, OnDestroy +{ + type = TwoFactorProviderType.Authenticator; + key: string; + token: string; + formPromise: Promise; + + private qrScript: HTMLScriptElement; + + constructor( + apiService: ApiService, + i18nService: I18nService, + userVerificationService: UserVerificationService, + platformUtilsService: PlatformUtilsService, + logService: LogService, + private stateService: StateService + ) { + super(apiService, i18nService, platformUtilsService, logService, userVerificationService); + this.qrScript = window.document.createElement("script"); + this.qrScript.src = "scripts/qrious.min.js"; + this.qrScript.async = true; + } + + ngOnInit() { + window.document.body.appendChild(this.qrScript); + } + + ngOnDestroy() { + window.document.body.removeChild(this.qrScript); + } + + auth(authResponse: any) { + super.auth(authResponse); + return this.processResponse(authResponse.response); + } + + submit() { + if (this.enabled) { + return super.disable(this.formPromise); + } else { + return this.enable(); + } + } + + protected async enable() { + const request = await this.buildRequestModel(UpdateTwoFactorAuthenticatorRequest); + request.token = this.token; + request.key = this.key; + + return super.enable(async () => { + this.formPromise = this.apiService.putTwoFactorAuthenticator(request); + const response = await this.formPromise; + await this.processResponse(response); + }); + } + + private async processResponse(response: TwoFactorAuthenticatorResponse) { + this.token = null; + this.enabled = response.enabled; + this.key = response.key; + const email = await this.stateService.getEmail(); + window.setTimeout(() => { + new (window as any).QRious({ + element: document.getElementById("qr"), + value: + "otpauth://totp/Bitwarden:" + + encodeURIComponent(email) + + "?secret=" + + encodeURIComponent(this.key) + + "&issuer=Bitwarden", + size: 160, + }); + }, 100); + } +} diff --git a/apps/web/src/app/settings/two-factor-base.component.ts b/apps/web/src/app/settings/two-factor-base.component.ts new file mode 100644 index 0000000000..b07c9d4138 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-base.component.ts @@ -0,0 +1,90 @@ +import { Directive, EventEmitter, Output } from "@angular/core"; + +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 { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { VerificationType } from "jslib-common/enums/verificationType"; +import { SecretVerificationRequest } from "jslib-common/models/request/secretVerificationRequest"; +import { TwoFactorProviderRequest } from "jslib-common/models/request/twoFactorProviderRequest"; + +@Directive() +export abstract class TwoFactorBaseComponent { + @Output() onUpdated = new EventEmitter(); + + type: TwoFactorProviderType; + organizationId: string; + twoFactorProviderType = TwoFactorProviderType; + enabled = false; + authed = false; + + protected hashedSecret: string; + protected verificationType: VerificationType; + + constructor( + protected apiService: ApiService, + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + protected logService: LogService, + protected userVerificationService: UserVerificationService + ) {} + + protected auth(authResponse: any) { + this.hashedSecret = authResponse.secret; + this.verificationType = authResponse.verificationType; + this.authed = true; + } + + protected async enable(enableFunction: () => Promise) { + try { + await enableFunction(); + this.onUpdated.emit(true); + } catch (e) { + this.logService.error(e); + } + } + + protected async disable(promise: Promise) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("twoStepDisableDesc"), + this.i18nService.t("disable"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return; + } + + try { + const request = await this.buildRequestModel(TwoFactorProviderRequest); + request.type = this.type; + if (this.organizationId != null) { + promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request); + } else { + promise = this.apiService.putTwoFactorDisable(request); + } + await promise; + this.enabled = false; + this.platformUtilsService.showToast("success", null, this.i18nService.t("twoStepDisabled")); + this.onUpdated.emit(false); + } catch (e) { + this.logService.error(e); + } + } + + protected async buildRequestModel( + requestClass: new () => T + ) { + return this.userVerificationService.buildRequest( + { + secret: this.hashedSecret, + type: this.verificationType, + }, + requestClass, + true + ); + } +} diff --git a/apps/web/src/app/settings/two-factor-duo.component.html b/apps/web/src/app/settings/two-factor-duo.component.html new file mode 100644 index 0000000000..220c6997b7 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-duo.component.html @@ -0,0 +1,105 @@ + diff --git a/apps/web/src/app/settings/two-factor-duo.component.ts b/apps/web/src/app/settings/two-factor-duo.component.ts new file mode 100644 index 0000000000..e17f04ea24 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-duo.component.ts @@ -0,0 +1,74 @@ +import { Component } from "@angular/core"; + +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 { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { UpdateTwoFactorDuoRequest } from "jslib-common/models/request/updateTwoFactorDuoRequest"; +import { TwoFactorDuoResponse } from "jslib-common/models/response/twoFactorDuoResponse"; + +import { TwoFactorBaseComponent } from "./two-factor-base.component"; + +@Component({ + selector: "app-two-factor-duo", + templateUrl: "two-factor-duo.component.html", +}) +export class TwoFactorDuoComponent extends TwoFactorBaseComponent { + type = TwoFactorProviderType.Duo; + ikey: string; + skey: string; + host: string; + formPromise: Promise; + + constructor( + apiService: ApiService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + logService: LogService, + userVerificationService: UserVerificationService + ) { + super(apiService, i18nService, platformUtilsService, logService, userVerificationService); + } + + auth(authResponse: any) { + super.auth(authResponse); + this.processResponse(authResponse.response); + } + + submit() { + if (this.enabled) { + return super.disable(this.formPromise); + } else { + return this.enable(); + } + } + + protected async enable() { + const request = await this.buildRequestModel(UpdateTwoFactorDuoRequest); + request.integrationKey = this.ikey; + request.secretKey = this.skey; + request.host = this.host; + + return super.enable(async () => { + if (this.organizationId != null) { + this.formPromise = this.apiService.putTwoFactorOrganizationDuo( + this.organizationId, + request + ); + } else { + this.formPromise = this.apiService.putTwoFactorDuo(request); + } + const response = await this.formPromise; + await this.processResponse(response); + }); + } + + private processResponse(response: TwoFactorDuoResponse) { + this.ikey = response.integrationKey; + this.skey = response.secretKey; + this.host = response.host; + this.enabled = response.enabled; + } +} diff --git a/apps/web/src/app/settings/two-factor-email.component.html b/apps/web/src/app/settings/two-factor-email.component.html new file mode 100644 index 0000000000..f189a27504 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-email.component.html @@ -0,0 +1,108 @@ + diff --git a/apps/web/src/app/settings/two-factor-email.component.ts b/apps/web/src/app/settings/two-factor-email.component.ts new file mode 100644 index 0000000000..e45bb87743 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-email.component.ts @@ -0,0 +1,84 @@ +import { Component } from "@angular/core"; + +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"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { TwoFactorEmailRequest } from "jslib-common/models/request/twoFactorEmailRequest"; +import { UpdateTwoFactorEmailRequest } from "jslib-common/models/request/updateTwoFactorEmailRequest"; +import { TwoFactorEmailResponse } from "jslib-common/models/response/twoFactorEmailResponse"; + +import { TwoFactorBaseComponent } from "./two-factor-base.component"; + +@Component({ + selector: "app-two-factor-email", + templateUrl: "two-factor-email.component.html", +}) +export class TwoFactorEmailComponent extends TwoFactorBaseComponent { + type = TwoFactorProviderType.Email; + email: string; + token: string; + sentEmail: string; + formPromise: Promise; + emailPromise: Promise; + + constructor( + apiService: ApiService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + logService: LogService, + userVerificationService: UserVerificationService, + private stateService: StateService + ) { + super(apiService, i18nService, platformUtilsService, logService, userVerificationService); + } + + auth(authResponse: any) { + super.auth(authResponse); + return this.processResponse(authResponse.response); + } + + submit() { + if (this.enabled) { + return super.disable(this.formPromise); + } else { + return this.enable(); + } + } + + async sendEmail() { + try { + const request = await this.buildRequestModel(TwoFactorEmailRequest); + request.email = this.email; + this.emailPromise = this.apiService.postTwoFactorEmailSetup(request); + await this.emailPromise; + this.sentEmail = this.email; + } catch (e) { + this.logService.error(e); + } + } + + protected async enable() { + const request = await this.buildRequestModel(UpdateTwoFactorEmailRequest); + request.email = this.email; + request.token = this.token; + + return super.enable(async () => { + this.formPromise = this.apiService.putTwoFactorEmail(request); + const response = await this.formPromise; + await this.processResponse(response); + }); + } + + private async processResponse(response: TwoFactorEmailResponse) { + this.token = null; + this.email = response.email; + this.enabled = response.enabled; + if (!this.enabled && (this.email == null || this.email === "")) { + this.email = await this.stateService.getEmail(); + } + } +} diff --git a/apps/web/src/app/settings/two-factor-recovery.component.html b/apps/web/src/app/settings/two-factor-recovery.component.html new file mode 100644 index 0000000000..ba9129da17 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-recovery.component.html @@ -0,0 +1,46 @@ + diff --git a/apps/web/src/app/settings/two-factor-recovery.component.ts b/apps/web/src/app/settings/two-factor-recovery.component.ts new file mode 100644 index 0000000000..576f91566c --- /dev/null +++ b/apps/web/src/app/settings/two-factor-recovery.component.ts @@ -0,0 +1,55 @@ +import { Component } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { TwoFactorRecoverResponse } from "jslib-common/models/response/twoFactorRescoverResponse"; + +@Component({ + selector: "app-two-factor-recovery", + templateUrl: "two-factor-recovery.component.html", +}) +export class TwoFactorRecoveryComponent { + type = -1; + code: string; + authed: boolean; + twoFactorProviderType = TwoFactorProviderType; + + constructor(private i18nService: I18nService) {} + + auth(authResponse: any) { + this.authed = true; + this.processResponse(authResponse.response); + } + + print() { + const w = window.open(); + w.document.write( + '
' + + "

" + + this.i18nService.t("twoFactorRecoveryYourCode") + + ":

" + + "" + + this.code + + "
" + + '

' + + new Date() + + "

" + ); + w.onafterprint = () => w.close(); + w.print(); + } + + private formatString(s: string) { + if (s == null) { + return null; + } + return s + .replace(/(.{4})/g, "$1 ") + .trim() + .toUpperCase(); + } + + private processResponse(response: TwoFactorRecoverResponse) { + this.code = this.formatString(response.code); + } +} diff --git a/apps/web/src/app/settings/two-factor-setup.component.html b/apps/web/src/app/settings/two-factor-setup.component.html new file mode 100644 index 0000000000..27fc2990e6 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-setup.component.html @@ -0,0 +1,64 @@ +
+

{{ "twoStepLogin" | i18n }}

+
+

{{ "twoStepLoginDesc" | i18n }}

+

{{ "twoStepLoginOrganizationDesc" | i18n }}

+ +

{{ "twoStepLoginRecoveryWarning" | i18n }}

+ +
+

+ {{ "providers" | i18n }} + + + {{ "loading" | i18n }} + +

+ + {{ "twoStepLoginPolicyUserWarning" | i18n }} + +
    +
  • +
    + +
    +
    +

    + {{ p.name }} + + + {{ "enabled" | i18n }} + + +

    + {{ p.description }} +
    +
    + +
    +
  • +
+ + + + + + + diff --git a/apps/web/src/app/settings/two-factor-setup.component.ts b/apps/web/src/app/settings/two-factor-setup.component.ts new file mode 100644 index 0000000000..bab2594237 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-setup.component.ts @@ -0,0 +1,189 @@ +import { Component, OnInit, Type, ViewChild, ViewContainerRef } from "@angular/core"; + +import { ModalRef } from "jslib-angular/components/modal/modal.ref"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { TwoFactorProviders } from "jslib-common/services/twoFactor.service"; + +import { TwoFactorAuthenticatorComponent } from "./two-factor-authenticator.component"; +import { TwoFactorDuoComponent } from "./two-factor-duo.component"; +import { TwoFactorEmailComponent } from "./two-factor-email.component"; +import { TwoFactorRecoveryComponent } from "./two-factor-recovery.component"; +import { TwoFactorWebAuthnComponent } from "./two-factor-webauthn.component"; +import { TwoFactorYubiKeyComponent } from "./two-factor-yubikey.component"; + +@Component({ + selector: "app-two-factor-setup", + templateUrl: "two-factor-setup.component.html", +}) +export class TwoFactorSetupComponent implements OnInit { + @ViewChild("recoveryTemplate", { read: ViewContainerRef, static: true }) + recoveryModalRef: ViewContainerRef; + @ViewChild("authenticatorTemplate", { read: ViewContainerRef, static: true }) + authenticatorModalRef: ViewContainerRef; + @ViewChild("yubikeyTemplate", { read: ViewContainerRef, static: true }) + yubikeyModalRef: ViewContainerRef; + @ViewChild("duoTemplate", { read: ViewContainerRef, static: true }) duoModalRef: ViewContainerRef; + @ViewChild("emailTemplate", { read: ViewContainerRef, static: true }) + emailModalRef: ViewContainerRef; + @ViewChild("webAuthnTemplate", { read: ViewContainerRef, static: true }) + webAuthnModalRef: ViewContainerRef; + + organizationId: string; + providers: any[] = []; + canAccessPremium: boolean; + showPolicyWarning = false; + loading = true; + modal: ModalRef; + + constructor( + protected apiService: ApiService, + protected modalService: ModalService, + protected messagingService: MessagingService, + protected policyService: PolicyService, + private stateService: StateService + ) {} + + async ngOnInit() { + this.canAccessPremium = await this.stateService.getCanAccessPremium(); + + for (const key in TwoFactorProviders) { + // eslint-disable-next-line + if (!TwoFactorProviders.hasOwnProperty(key)) { + continue; + } + + const p = (TwoFactorProviders as any)[key]; + if (this.filterProvider(p.type)) { + continue; + } + + this.providers.push({ + type: p.type, + name: p.name, + description: p.description, + enabled: false, + premium: p.premium, + sort: p.sort, + }); + } + + this.providers.sort((a: any, b: any) => a.sort - b.sort); + await this.load(); + } + + async load() { + this.loading = true; + const providerList = await this.getTwoFactorProviders(); + providerList.data.forEach((p) => { + this.providers.forEach((p2) => { + if (p.type === p2.type) { + p2.enabled = p.enabled; + } + }); + }); + this.evaluatePolicies(); + this.loading = false; + } + + async manage(type: TwoFactorProviderType) { + switch (type) { + case TwoFactorProviderType.Authenticator: { + const authComp = await this.openModal( + this.authenticatorModalRef, + TwoFactorAuthenticatorComponent + ); + authComp.onUpdated.subscribe((enabled: boolean) => { + this.updateStatus(enabled, TwoFactorProviderType.Authenticator); + }); + break; + } + case TwoFactorProviderType.Yubikey: { + const yubiComp = await this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent); + yubiComp.onUpdated.subscribe((enabled: boolean) => { + this.updateStatus(enabled, TwoFactorProviderType.Yubikey); + }); + break; + } + case TwoFactorProviderType.Duo: { + const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent); + duoComp.onUpdated.subscribe((enabled: boolean) => { + this.updateStatus(enabled, TwoFactorProviderType.Duo); + }); + break; + } + case TwoFactorProviderType.Email: { + const emailComp = await this.openModal(this.emailModalRef, TwoFactorEmailComponent); + emailComp.onUpdated.subscribe((enabled: boolean) => { + this.updateStatus(enabled, TwoFactorProviderType.Email); + }); + break; + } + case TwoFactorProviderType.WebAuthn: { + const webAuthnComp = await this.openModal( + this.webAuthnModalRef, + TwoFactorWebAuthnComponent + ); + webAuthnComp.onUpdated.subscribe((enabled: boolean) => { + this.updateStatus(enabled, TwoFactorProviderType.WebAuthn); + }); + break; + } + default: + break; + } + } + + recoveryCode() { + this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent); + } + + async premiumRequired() { + if (!this.canAccessPremium) { + this.messagingService.send("premiumRequired"); + return; + } + } + + protected getTwoFactorProviders() { + return this.apiService.getTwoFactorProviders(); + } + + protected filterProvider(type: TwoFactorProviderType) { + return type === TwoFactorProviderType.OrganizationDuo; + } + + protected async openModal(ref: ViewContainerRef, type: Type): Promise { + const [modal, childComponent] = await this.modalService.openViewRef(type, ref); + this.modal = modal; + + return childComponent; + } + + protected updateStatus(enabled: boolean, type: TwoFactorProviderType) { + if (!enabled && this.modal != null) { + this.modal.close(); + } + this.providers.forEach((p) => { + if (p.type === type) { + p.enabled = enabled; + } + }); + this.evaluatePolicies(); + } + + private async evaluatePolicies() { + if (this.organizationId == null && this.providers.filter((p) => p.enabled).length === 1) { + this.showPolicyWarning = await this.policyService.policyAppliesToUser( + PolicyType.TwoFactorAuthentication + ); + } else { + this.showPolicyWarning = false; + } + } +} diff --git a/apps/web/src/app/settings/two-factor-verify.component.html b/apps/web/src/app/settings/two-factor-verify.component.html new file mode 100644 index 0000000000..523514f1ae --- /dev/null +++ b/apps/web/src/app/settings/two-factor-verify.component.html @@ -0,0 +1,16 @@ +
+ + +
diff --git a/apps/web/src/app/settings/two-factor-verify.component.ts b/apps/web/src/app/settings/two-factor-verify.component.ts new file mode 100644 index 0000000000..ff1fe7ed46 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-verify.component.ts @@ -0,0 +1,87 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { VerificationType } from "jslib-common/enums/verificationType"; +import { SecretVerificationRequest } from "jslib-common/models/request/secretVerificationRequest"; +import { TwoFactorAuthenticatorResponse } from "jslib-common/models/response/twoFactorAuthenticatorResponse"; +import { TwoFactorDuoResponse } from "jslib-common/models/response/twoFactorDuoResponse"; +import { TwoFactorEmailResponse } from "jslib-common/models/response/twoFactorEmailResponse"; +import { TwoFactorRecoverResponse } from "jslib-common/models/response/twoFactorRescoverResponse"; +import { TwoFactorWebAuthnResponse } from "jslib-common/models/response/twoFactorWebAuthnResponse"; +import { TwoFactorYubiKeyResponse } from "jslib-common/models/response/twoFactorYubiKeyResponse"; +import { Verification } from "jslib-common/types/verification"; + +type TwoFactorResponse = + | TwoFactorRecoverResponse + | TwoFactorDuoResponse + | TwoFactorEmailResponse + | TwoFactorWebAuthnResponse + | TwoFactorAuthenticatorResponse + | TwoFactorYubiKeyResponse; + +@Component({ + selector: "app-two-factor-verify", + templateUrl: "two-factor-verify.component.html", +}) +export class TwoFactorVerifyComponent { + @Input() type: TwoFactorProviderType; + @Input() organizationId: string; + @Output() onAuthed = new EventEmitter(); + + secret: Verification; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private logService: LogService, + private userVerificationService: UserVerificationService + ) {} + + async submit() { + let hashedSecret: string; + + try { + this.formPromise = this.userVerificationService.buildRequest(this.secret).then((request) => { + hashedSecret = + this.secret.type === VerificationType.MasterPassword + ? request.masterPasswordHash + : request.otp; + return this.apiCall(request); + }); + + const response = await this.formPromise; + this.onAuthed.emit({ + response: response, + secret: hashedSecret, + verificationType: this.secret.type, + }); + } catch (e) { + this.logService.error(e); + } + } + + private apiCall(request: SecretVerificationRequest): Promise { + switch (this.type) { + case -1 as TwoFactorProviderType: + return this.apiService.getTwoFactorRecover(request); + case TwoFactorProviderType.Duo: + case TwoFactorProviderType.OrganizationDuo: + if (this.organizationId != null) { + return this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request); + } else { + return this.apiService.getTwoFactorDuo(request); + } + case TwoFactorProviderType.Email: + return this.apiService.getTwoFactorEmail(request); + case TwoFactorProviderType.WebAuthn: + return this.apiService.getTwoFactorWebAuthn(request); + case TwoFactorProviderType.Authenticator: + return this.apiService.getTwoFactorAuthenticator(request); + case TwoFactorProviderType.Yubikey: + return this.apiService.getTwoFactorYubiKey(request); + } + } +} diff --git a/apps/web/src/app/settings/two-factor-webauthn.component.html b/apps/web/src/app/settings/two-factor-webauthn.component.html new file mode 100644 index 0000000000..2c91dbc5ae --- /dev/null +++ b/apps/web/src/app/settings/two-factor-webauthn.component.html @@ -0,0 +1,160 @@ + diff --git a/apps/web/src/app/settings/two-factor-webauthn.component.ts b/apps/web/src/app/settings/two-factor-webauthn.component.ts new file mode 100644 index 0000000000..41e12f90c6 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-webauthn.component.ts @@ -0,0 +1,171 @@ +import { Component, NgZone } from "@angular/core"; + +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 { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { SecretVerificationRequest } from "jslib-common/models/request/secretVerificationRequest"; +import { UpdateTwoFactorWebAuthnDeleteRequest } from "jslib-common/models/request/updateTwoFactorWebAuthnDeleteRequest"; +import { UpdateTwoFactorWebAuthnRequest } from "jslib-common/models/request/updateTwoFactorWebAuthnRequest"; +import { + ChallengeResponse, + TwoFactorWebAuthnResponse, +} from "jslib-common/models/response/twoFactorWebAuthnResponse"; + +import { TwoFactorBaseComponent } from "./two-factor-base.component"; + +@Component({ + selector: "app-two-factor-webauthn", + templateUrl: "two-factor-webauthn.component.html", +}) +export class TwoFactorWebAuthnComponent extends TwoFactorBaseComponent { + type = TwoFactorProviderType.WebAuthn; + name: string; + keys: any[]; + keyIdAvailable: number = null; + keysConfiguredCount = 0; + webAuthnError: boolean; + webAuthnListening: boolean; + webAuthnResponse: PublicKeyCredential; + challengePromise: Promise; + formPromise: Promise; + + constructor( + apiService: ApiService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + private ngZone: NgZone, + logService: LogService, + userVerificationService: UserVerificationService + ) { + super(apiService, i18nService, platformUtilsService, logService, userVerificationService); + } + + auth(authResponse: any) { + super.auth(authResponse); + this.processResponse(authResponse.response); + } + + async submit() { + if (this.webAuthnResponse == null || this.keyIdAvailable == null) { + // Should never happen. + return Promise.reject(); + } + const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnRequest); + request.deviceResponse = this.webAuthnResponse; + request.id = this.keyIdAvailable; + request.name = this.name; + + return super.enable(async () => { + this.formPromise = this.apiService.putTwoFactorWebAuthn(request); + const response = await this.formPromise; + await this.processResponse(response); + }); + } + + disable() { + return super.disable(this.formPromise); + } + + async remove(key: any) { + if (this.keysConfiguredCount <= 1 || key.removePromise != null) { + return; + } + const name = key.name != null ? key.name : this.i18nService.t("webAuthnkeyX", key.id); + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("removeU2fConfirmation"), + name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return; + } + const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnDeleteRequest); + request.id = key.id; + try { + key.removePromise = this.apiService.deleteTwoFactorWebAuthn(request); + const response = await key.removePromise; + key.removePromise = null; + await this.processResponse(response); + } catch (e) { + this.logService.error(e); + } + } + + async readKey() { + if (this.keyIdAvailable == null) { + return; + } + const request = await this.buildRequestModel(SecretVerificationRequest); + try { + this.challengePromise = this.apiService.getTwoFactorWebAuthnChallenge(request); + const challenge = await this.challengePromise; + this.readDevice(challenge); + } catch (e) { + this.logService.error(e); + } + } + + private readDevice(webAuthnChallenge: ChallengeResponse) { + // eslint-disable-next-line + console.log("listening for key..."); + this.resetWebAuthn(true); + + navigator.credentials + .create({ + publicKey: webAuthnChallenge, + }) + .then((data: PublicKeyCredential) => { + this.ngZone.run(() => { + this.webAuthnListening = false; + this.webAuthnResponse = data; + }); + }) + .catch((err) => { + // eslint-disable-next-line + console.error(err); + this.resetWebAuthn(false); + // TODO: Should we display the actual error? + this.webAuthnError = true; + }); + } + + private resetWebAuthn(listening = false) { + this.webAuthnResponse = null; + this.webAuthnError = false; + this.webAuthnListening = listening; + } + + private processResponse(response: TwoFactorWebAuthnResponse) { + this.resetWebAuthn(); + this.keys = []; + this.keyIdAvailable = null; + this.name = null; + this.keysConfiguredCount = 0; + for (let i = 1; i <= 5; i++) { + if (response.keys != null) { + const key = response.keys.filter((k) => k.id === i); + if (key.length > 0) { + this.keysConfiguredCount++; + this.keys.push({ + id: i, + name: key[0].name, + configured: true, + migrated: key[0].migrated, + removePromise: null, + }); + continue; + } + } + this.keys.push({ id: i, name: null, configured: false, removePromise: null }); + if (this.keyIdAvailable == null) { + this.keyIdAvailable = i; + } + } + this.enabled = response.enabled; + } +} diff --git a/apps/web/src/app/settings/two-factor-yubikey.component.html b/apps/web/src/app/settings/two-factor-yubikey.component.html new file mode 100644 index 0000000000..96eff9b3a4 --- /dev/null +++ b/apps/web/src/app/settings/two-factor-yubikey.component.html @@ -0,0 +1,125 @@ + diff --git a/apps/web/src/app/settings/two-factor-yubikey.component.ts b/apps/web/src/app/settings/two-factor-yubikey.component.ts new file mode 100644 index 0000000000..ee653df7ea --- /dev/null +++ b/apps/web/src/app/settings/two-factor-yubikey.component.ts @@ -0,0 +1,89 @@ +import { Component } from "@angular/core"; + +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 { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { UpdateTwoFactorYubioOtpRequest } from "jslib-common/models/request/updateTwoFactorYubioOtpRequest"; +import { TwoFactorYubiKeyResponse } from "jslib-common/models/response/twoFactorYubiKeyResponse"; + +import { TwoFactorBaseComponent } from "./two-factor-base.component"; + +@Component({ + selector: "app-two-factor-yubikey", + templateUrl: "two-factor-yubikey.component.html", +}) +export class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent { + type = TwoFactorProviderType.Yubikey; + keys: any[]; + nfc = false; + + formPromise: Promise; + disablePromise: Promise; + + constructor( + apiService: ApiService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + logService: LogService, + userVerificationService: UserVerificationService + ) { + super(apiService, i18nService, platformUtilsService, logService, userVerificationService); + } + + auth(authResponse: any) { + super.auth(authResponse); + this.processResponse(authResponse.response); + } + + async submit() { + const request = await this.buildRequestModel(UpdateTwoFactorYubioOtpRequest); + request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null; + request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null; + request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null; + request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null; + request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null; + request.nfc = this.nfc; + + return super.enable(async () => { + this.formPromise = this.apiService.putTwoFactorYubiKey(request); + const response = await this.formPromise; + await this.processResponse(response); + this.platformUtilsService.showToast("success", null, this.i18nService.t("yubikeysUpdated")); + }); + } + + disable() { + return super.disable(this.disablePromise); + } + + remove(key: any) { + key.existingKey = null; + key.key = null; + } + + private processResponse(response: TwoFactorYubiKeyResponse) { + this.enabled = response.enabled; + this.keys = [ + { key: response.key1, existingKey: this.padRight(response.key1) }, + { key: response.key2, existingKey: this.padRight(response.key2) }, + { key: response.key3, existingKey: this.padRight(response.key3) }, + { key: response.key4, existingKey: this.padRight(response.key4) }, + { key: response.key5, existingKey: this.padRight(response.key5) }, + ]; + this.nfc = response.nfc || !response.enabled; + } + + private padRight(str: string, character = "•", size = 44) { + if (str == null || character == null || str.length >= size) { + return str; + } + const max = (size - str.length) / character.length; + for (let i = 0; i < max; i++) { + str += character; + } + return str; + } +} diff --git a/apps/web/src/app/settings/update-key.component.html b/apps/web/src/app/settings/update-key.component.html new file mode 100644 index 0000000000..e82fc77267 --- /dev/null +++ b/apps/web/src/app/settings/update-key.component.html @@ -0,0 +1,55 @@ + diff --git a/apps/web/src/app/settings/update-key.component.ts b/apps/web/src/app/settings/update-key.component.ts new file mode 100644 index 0000000000..54d7cd5946 --- /dev/null +++ b/apps/web/src/app/settings/update-key.component.ts @@ -0,0 +1,104 @@ +import { Component } from "@angular/core"; + +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 { 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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { EncString } from "jslib-common/models/domain/encString"; +import { CipherWithIdRequest } from "jslib-common/models/request/cipherWithIdRequest"; +import { FolderWithIdRequest } from "jslib-common/models/request/folderWithIdRequest"; +import { UpdateKeyRequest } from "jslib-common/models/request/updateKeyRequest"; + +@Component({ + selector: "app-update-key", + templateUrl: "update-key.component.html", +}) +export class UpdateKeyComponent { + masterPassword: string; + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private cryptoService: CryptoService, + private messagingService: MessagingService, + private syncService: SyncService, + private folderService: FolderService, + private cipherService: CipherService, + private logService: LogService + ) {} + + async submit() { + const hasEncKey = await this.cryptoService.hasEncKey(); + if (hasEncKey) { + return; + } + + if (this.masterPassword == null || this.masterPassword === "") { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("masterPassRequired") + ); + return; + } + + try { + this.formPromise = this.makeRequest().then((request) => { + return this.apiService.postAccountKey(request); + }); + await this.formPromise; + this.platformUtilsService.showToast( + "success", + this.i18nService.t("keyUpdated"), + this.i18nService.t("logBackInOthersToo"), + { timeout: 15000 } + ); + this.messagingService.send("logout"); + } catch (e) { + this.logService.error(e); + } + } + + private async makeRequest(): Promise { + const key = await this.cryptoService.getKey(); + const encKey = await this.cryptoService.makeEncKey(key); + const privateKey = await this.cryptoService.getPrivateKey(); + let encPrivateKey: EncString = null; + if (privateKey != null) { + encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]); + } + const request = new UpdateKeyRequest(); + request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null; + request.key = encKey[1].encryptedString; + request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null); + + await this.syncService.fullSync(true); + + const folders = await this.folderService.getAllDecrypted(); + for (let i = 0; i < folders.length; i++) { + if (folders[i].id == null) { + continue; + } + const folder = await this.folderService.encrypt(folders[i], encKey[0]); + request.folders.push(new FolderWithIdRequest(folder)); + } + + const ciphers = await this.cipherService.getAllDecrypted(); + for (let i = 0; i < ciphers.length; i++) { + if (ciphers[i].organizationId != null) { + continue; + } + const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]); + request.ciphers.push(new CipherWithIdRequest(cipher)); + } + + return request; + } +} diff --git a/apps/web/src/app/settings/update-license.component.html b/apps/web/src/app/settings/update-license.component.html new file mode 100644 index 0000000000..3884f56935 --- /dev/null +++ b/apps/web/src/app/settings/update-license.component.html @@ -0,0 +1,20 @@ +
+
+ + + {{ + "licenseFileDesc" + | i18n + : (!organizationId + ? "bitwarden_premium_license.json" + : "bitwarden_organization_license.json") + }} +
+ + +
diff --git a/apps/web/src/app/settings/update-license.component.ts b/apps/web/src/app/settings/update-license.component.ts new file mode 100644 index 0000000000..a163123564 --- /dev/null +++ b/apps/web/src/app/settings/update-license.component.ts @@ -0,0 +1,64 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +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-update-license", + templateUrl: "update-license.component.html", +}) +export class UpdateLicenseComponent { + @Input() organizationId: string; + @Output() onUpdated = new EventEmitter(); + @Output() onCanceled = new EventEmitter(); + + formPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async submit() { + const fileEl = document.getElementById("file") as HTMLInputElement; + const files = fileEl.files; + if (files == null || files.length === 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("selectFile") + ); + return; + } + + try { + const fd = new FormData(); + fd.append("license", files[0]); + + let updatePromise: Promise = null; + if (this.organizationId == null) { + updatePromise = this.apiService.postAccountLicense(fd); + } else { + updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd); + } + + this.formPromise = updatePromise.then(() => { + return this.apiService.refreshIdentityToken(); + }); + + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("updatedLicense")); + this.onUpdated.emit(); + } catch (e) { + this.logService.error(e); + } + } + + cancel() { + this.onCanceled.emit(); + } +} diff --git a/apps/web/src/app/settings/user-billing-history.component.html b/apps/web/src/app/settings/user-billing-history.component.html new file mode 100644 index 0000000000..804830c84e --- /dev/null +++ b/apps/web/src/app/settings/user-billing-history.component.html @@ -0,0 +1,98 @@ +
+

+ {{ "billingHistory" | i18n }} +

+ +
+ + + {{ "loading" | i18n }} + + +

{{ "invoices" | i18n }}

+

{{ "noInvoices" | i18n }}

+ + + + + + + + + +
{{ i.date | date: "mediumDate" }} + + + + {{ "invoiceNumber" | i18n: i.number }} + {{ i.amount | currency: "$" }} + + + {{ "paid" | i18n }} + + + + {{ "unpaid" | i18n }} + +
+

{{ "transactions" | i18n }}

+

{{ "noTransactions" | i18n }}

+ + + + + + + + + +
{{ t.createdDate | date: "mediumDate" }} + + {{ "chargeNoun" | i18n }} + + {{ "refundNoun" | i18n }} + + + {{ t.details }} + + {{ t.amount | currency: "$" }} +
+ * {{ "chargesStatement" | i18n: "BITWARDEN" }} +
diff --git a/apps/web/src/app/settings/user-billing-history.component.ts b/apps/web/src/app/settings/user-billing-history.component.ts new file mode 100644 index 0000000000..ae26862d07 --- /dev/null +++ b/apps/web/src/app/settings/user-billing-history.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PaymentMethodType } from "jslib-common/enums/paymentMethodType"; +import { TransactionType } from "jslib-common/enums/transactionType"; +import { BillingHistoryResponse } from "jslib-common/models/response/billingHistoryResponse"; + +@Component({ + selector: "app-user-billing", + templateUrl: "user-billing-history.component.html", +}) +export class UserBillingHistoryComponent implements OnInit { + loading = false; + firstLoaded = false; + billing: BillingHistoryResponse; + paymentMethodType = PaymentMethodType; + transactionType = TransactionType; + + constructor( + protected apiService: ApiService, + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + private router: Router + ) {} + + async ngOnInit() { + if (this.platformUtilsService.isSelfHost()) { + this.router.navigate(["/settings/subscription"]); + } + await this.load(); + this.firstLoaded = true; + } + + async load() { + if (this.loading) { + return; + } + this.loading = true; + this.billing = await this.apiService.getUserBillingHistory(); + this.loading = false; + } + + get invoices() { + return this.billing != null ? this.billing.invoices : null; + } + + get transactions() { + return this.billing != null ? this.billing.transactions : null; + } +} diff --git a/apps/web/src/app/settings/user-subscription.component.html b/apps/web/src/app/settings/user-subscription.component.html new file mode 100644 index 0000000000..64d6f93602 --- /dev/null +++ b/apps/web/src/app/settings/user-subscription.component.html @@ -0,0 +1,197 @@ +
+

+ {{ title }} + + + {{ "loading" | i18n }} + +

+
+ + + {{ "loading" | i18n }} + + + + {{ "subscriptionCanceled" | i18n }} + +

{{ "subscriptionPendingCanceled" | i18n }}

+ +
+
+
{{ "expiration" | i18n }}
+
{{ sub.expiration | date: "mediumDate" }}
+
{{ "neverExpires" | i18n }}
+
+
+
+
+
{{ "status" | i18n }}
+
+ {{ (subscription && subscription.status) || "-" }} + {{ + "pendingCancellation" | i18n + }} +
+
{{ "nextCharge" | i18n }}
+
+ {{ + nextInvoice + ? (nextInvoice.date | date: "mediumDate") + + ", " + + (nextInvoice.amount | currency: "$") + : "-" + }} +
+
+
+
+ {{ "details" | i18n }} + + + + + + + +
+ {{ i.name }} {{ i.quantity > 1 ? "×" + i.quantity : "" }} @ + {{ i.amount | currency: "$" }} + {{ i.quantity * i.amount | currency: "$" }} /{{ i.interval | i18n }}
+
+
+ +
+ + + {{ "manageSubscription" | i18n }} + +
+
+
+ +

{{ "updateLicense" | i18n }}

+ + +
+
+
+ +
+ + +
+

{{ "storage" | i18n }}

+

{{ "subscriptionStorage" | i18n: sub.maxStorageGb || 0:sub.storageName || "0 MB" }}

+
+
+ {{ storagePercentage / 100 | percent }} +
+
+ +
+
+ + +
+ +
+
+
+
diff --git a/apps/web/src/app/settings/user-subscription.component.ts b/apps/web/src/app/settings/user-subscription.component.ts new file mode 100644 index 0000000000..ec369ddc7f --- /dev/null +++ b/apps/web/src/app/settings/user-subscription.component.ts @@ -0,0 +1,217 @@ +import { Component, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +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 { TokenService } from "jslib-common/abstractions/token.service"; +import { SubscriptionResponse } from "jslib-common/models/response/subscriptionResponse"; + +@Component({ + selector: "app-user-subscription", + templateUrl: "user-subscription.component.html", +}) +export class UserSubscriptionComponent implements OnInit { + loading = false; + firstLoaded = false; + adjustStorageAdd = true; + showAdjustStorage = false; + showUpdateLicense = false; + sub: SubscriptionResponse; + selfHosted = false; + + cancelPromise: Promise; + reinstatePromise: Promise; + + constructor( + private tokenService: TokenService, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private router: Router, + private logService: LogService + ) { + this.selfHosted = platformUtilsService.isSelfHost(); + } + + async ngOnInit() { + await this.load(); + this.firstLoaded = true; + } + + async load() { + if (this.loading) { + return; + } + + if (this.tokenService.getPremium()) { + this.loading = true; + this.sub = await this.apiService.getUserSubscription(); + } else { + this.router.navigate(["/settings/subscription/premium"]); + return; + } + + this.loading = false; + } + + async reinstate() { + if (this.loading) { + return; + } + + if (this.usingInAppPurchase) { + this.platformUtilsService.showDialog( + this.i18nService.t("manageSubscriptionFromStore"), + this.i18nService.t("cancelSubscription"), + null, + null, + "warning" + ); + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("reinstateConfirmation"), + this.i18nService.t("reinstateSubscription"), + this.i18nService.t("yes"), + this.i18nService.t("cancel") + ); + if (!confirmed) { + return; + } + + try { + this.reinstatePromise = this.apiService.postReinstatePremium(); + await this.reinstatePromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("reinstated")); + this.load(); + } catch (e) { + this.logService.error(e); + } + } + + async cancel() { + if (this.loading) { + return; + } + + if (this.usingInAppPurchase) { + this.platformUtilsService.showDialog( + this.i18nService.t("manageSubscriptionFromStore"), + this.i18nService.t("cancelSubscription"), + null, + null, + "warning" + ); + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("cancelConfirmation"), + this.i18nService.t("cancelSubscription"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return; + } + + try { + this.cancelPromise = this.apiService.postCancelPremium(); + await this.cancelPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("canceledSubscription") + ); + this.load(); + } catch (e) { + this.logService.error(e); + } + } + + downloadLicense() { + if (this.loading) { + return; + } + + const licenseString = JSON.stringify(this.sub.license, null, 2); + this.platformUtilsService.saveFile( + window, + licenseString, + null, + "bitwarden_premium_license.json" + ); + } + + updateLicense() { + if (this.loading) { + return; + } + this.showUpdateLicense = true; + } + + closeUpdateLicense(load: boolean) { + this.showUpdateLicense = false; + if (load) { + this.load(); + } + } + + adjustStorage(add: boolean) { + if (this.usingInAppPurchase) { + this.platformUtilsService.showDialog( + this.i18nService.t("cannotPerformInAppPurchase"), + this.i18nService.t(add ? "addStorage" : "removeStorage"), + null, + null, + "warning" + ); + return; + } + this.adjustStorageAdd = add; + this.showAdjustStorage = true; + } + + closeStorage(load: boolean) { + this.showAdjustStorage = false; + if (load) { + this.load(); + } + } + + get subscriptionMarkedForCancel() { + return ( + this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate + ); + } + + get subscription() { + return this.sub != null ? this.sub.subscription : null; + } + + get nextInvoice() { + return this.sub != null ? this.sub.upcomingInvoice : null; + } + + get storagePercentage() { + return this.sub != null && this.sub.maxStorageGb + ? +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) + : 0; + } + + get storageProgressWidth() { + return this.storagePercentage < 5 ? 5 : 0; + } + + get usingInAppPurchase() { + return this.sub != null ? this.sub.usingInAppPurchase : false; + } + + get title(): string { + return this.i18nService.t(this.selfHosted ? "subscription" : "premiumMembership"); + } +} diff --git a/apps/web/src/app/settings/vault-timeout-input.component.html b/apps/web/src/app/settings/vault-timeout-input.component.html new file mode 100644 index 0000000000..b658054a15 --- /dev/null +++ b/apps/web/src/app/settings/vault-timeout-input.component.html @@ -0,0 +1,45 @@ + + {{ "vaultTimeoutPolicyInEffect" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }} + + +
+
+ + + {{ "vaultTimeoutDesc" | i18n }} +
+
+ +
+
+ + {{ "hours" | i18n }} +
+
+ + {{ "minutes" | i18n }} +
+
+
+
diff --git a/apps/web/src/app/settings/vault-timeout-input.component.ts b/apps/web/src/app/settings/vault-timeout-input.component.ts new file mode 100644 index 0000000000..8eb308b4c0 --- /dev/null +++ b/apps/web/src/app/settings/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/web/src/app/settings/verify-email.component.html b/apps/web/src/app/settings/verify-email.component.html new file mode 100644 index 0000000000..c599fdad4c --- /dev/null +++ b/apps/web/src/app/settings/verify-email.component.html @@ -0,0 +1,21 @@ +
+
+ {{ "verifyEmail" | i18n }} +
+
+

{{ "verifyEmailDesc" | i18n }}

+ +
+
diff --git a/apps/web/src/app/settings/verify-email.component.ts b/apps/web/src/app/settings/verify-email.component.ts new file mode 100644 index 0000000000..0927c8216a --- /dev/null +++ b/apps/web/src/app/settings/verify-email.component.ts @@ -0,0 +1,39 @@ +import { Component } from "@angular/core"; + +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-verify-email", + templateUrl: "verify-email.component.html", +}) +export class VerifyEmailComponent { + actionPromise: Promise; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async send() { + if (this.actionPromise != null) { + return; + } + try { + this.actionPromise = this.apiService.postAccountVerifyEmail(); + await this.actionPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("checkInboxForVerification") + ); + } catch (e) { + this.logService.error(e); + } + this.actionPromise = null; + } +} diff --git a/apps/web/src/app/tools/export.component.html b/apps/web/src/app/tools/export.component.html new file mode 100644 index 0000000000..da667f3e44 --- /dev/null +++ b/apps/web/src/app/tools/export.component.html @@ -0,0 +1,42 @@ +
+ + + + {{ "personalVaultExportPolicyInEffect" | i18n }} + + + +
+
+ + +
+
+
+
+ + +
+
+ +
diff --git a/apps/web/src/app/tools/export.component.ts b/apps/web/src/app/tools/export.component.ts new file mode 100644 index 0000000000..a35a022249 --- /dev/null +++ b/apps/web/src/app/tools/export.component.ts @@ -0,0 +1,50 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; + +import { ExportComponent as BaseExportComponent } from "jslib-angular/components/export.component"; +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"; + +@Component({ + selector: "app-export", + templateUrl: "export.component.html", +}) +export class ExportComponent extends BaseExportComponent { + organizationId: string; + + constructor( + cryptoService: CryptoService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + exportService: ExportService, + eventService: EventService, + policyService: PolicyService, + logService: LogService, + userVerificationService: UserVerificationService, + formBuilder: FormBuilder + ) { + super( + cryptoService, + i18nService, + platformUtilsService, + exportService, + eventService, + policyService, + window, + logService, + userVerificationService, + formBuilder + ); + } + + protected saved() { + super.saved(); + this.platformUtilsService.showToast("success", null, this.i18nService.t("exportSuccess")); + } +} diff --git a/apps/web/src/app/tools/generator.component.html b/apps/web/src/app/tools/generator.component.html new file mode 100644 index 0000000000..30f2a30401 --- /dev/null +++ b/apps/web/src/app/tools/generator.component.html @@ -0,0 +1,400 @@ + + + {{ "passwordGeneratorPolicyInEffect" | i18n }} + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+ +
+
+
+ +
+
+ + + + +
+
+ + +
+
+ +
+ +
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+ diff --git a/apps/web/src/app/tools/generator.component.ts b/apps/web/src/app/tools/generator.component.ts new file mode 100644 index 0000000000..ad825ba599 --- /dev/null +++ b/apps/web/src/app/tools/generator.component.ts @@ -0,0 +1,67 @@ +import { Component, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { GeneratorComponent as BaseGeneratorComponent } from "jslib-angular/components/generator.component"; +import { ModalService } from "jslib-angular/services/modal.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 { UsernameGenerationService } from "jslib-common/abstractions/usernameGeneration.service"; + +import { PasswordGeneratorHistoryComponent } from "./password-generator-history.component"; + +@Component({ + selector: "app-generator", + templateUrl: "generator.component.html", +}) +export class GeneratorComponent extends BaseGeneratorComponent { + @ViewChild("historyTemplate", { read: ViewContainerRef, static: true }) + historyModalRef: ViewContainerRef; + + constructor( + passwordGenerationService: PasswordGenerationService, + usernameGenerationService: UsernameGenerationService, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + logService: LogService, + route: ActivatedRoute, + private modalService: ModalService + ) { + super( + passwordGenerationService, + usernameGenerationService, + platformUtilsService, + stateService, + i18nService, + logService, + route, + window + ); + if (platformUtilsService.isSelfHost()) { + // Cannot use Firefox Relay on self hosted web vaults due to CORS issues with Firefox Relay API + this.forwardOptions.splice( + this.forwardOptions.findIndex((o) => o.value === "firefoxrelay"), + 1 + ); + } + } + + async history() { + await this.modalService.openViewRef(PasswordGeneratorHistoryComponent, this.historyModalRef); + } + + lengthChanged() { + document.getElementById("length").focus(); + } + + minNumberChanged() { + document.getElementById("min-number").focus(); + } + + minSpecialChanged() { + document.getElementById("min-special").focus(); + } +} diff --git a/apps/web/src/app/tools/import.component.html b/apps/web/src/app/tools/import.component.html new file mode 100644 index 0000000000..26d820b518 --- /dev/null +++ b/apps/web/src/app/tools/import.component.html @@ -0,0 +1,323 @@ + + + {{ "personalOwnershipPolicyInEffectImports" | i18n }} + +
+
+
+
+ + +
+
+
+ + + See detailed instructions on our help site at + + https://bitwarden.com/help/export-your-data/ + + + See detailed instructions on our help site at + + https://bitwarden.com/help/import-from-lastpass/ + + + Using the KeePassX desktop application, navigate to "Database" → "Export to CSV file" and + save the CSV file. + + + In the Avira web vault, go to "Settings" → "My Data" → "Export data" and save the + CSV file. + + + In the Blur web vault, click your username at the top and go to "Settings" → "Export + Data", then click "Export CSV" for your "Accounts". + + + Using the SaveInCloud desktop application, navigate to "File" → "Export" → "As XML" + and save the XML file. + + + Using the Padlock desktop application, click the hamburger icon in the top left corner and + navigate to "Settings" → "Export" button and save the file "As CSV". + + + Using the KeePass 2 desktop application, navigate to "File" → "Export" and select the + "KeePass XML (2.x)" option. + + + Using the Universal Password Manager desktop application, navigate to "Database" → + "Export" and save the CSV file. + + + Using the SaferPass browser extension, click the hamburger icon in the top left corner and + navigate to "Settings". Click the "Export accounts" button to save the CSV file. + + + Using the Meldium web vault, navigate to "Settings". Locate the "Export data" function and + click "Show me my data" to save the CSV file. + + + Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top + right) and select "Settings". Go to "Export" and find the "Export to .csv File" option. Click + "Export" to save the CSV file. + + + Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top + right) and select "Settings". Go to "Export" and find the "Export to .json File" option. Click + "Export" to save the JSON file. + + + + The process is exactly the same as importing from Google Chrome. + + See detailed instructions on our help site at + + https://bitwarden.com/help/import-from-chrome/ + + + See detailed instructions on our help site at + + https://bitwarden.com/help/import-from-firefox/. + + + See detailed instructions on our help site at + + https://bitwarden.com/help/import-from-safari/. + + + See detailed instructions on our help site at + + https://bitwarden.com/help/import-from-1password/. + + + Using the Password Dragon desktop application, navigate to "File" → "Export" → "To + XML". In the dialog that pops up select "All Rows" and check all fields. Click the "Export" + button and save the XML file. + + + Using the Enpass desktop application, navigate to "File" → "Export" → "As CSV". + Select "OK" to the warning alert and save the CSV file. Note that the importer only supports + files exported while Enpass is set to the English language, so adjust your settings + accordingly. + + + Using the Enpass 6 desktop application, click the menu button and navigate to "File" → + "Export". Select the ".json" file format option and save the JSON file. + + + Using the Password Safe desktop application, navigate to "File" → "Export To" → "XML + format..." and save the XML file. + + + Log in to Dashlane, click on "My Account" → "Settings" → "Export file" and select + "Export as a CSV file". This will download a zip archive containing various CSV files. Unzip + the archive and import each CSV file individually. + + + Dashlane no longer supports the JSON format. Only use this if you have an existing JSON for + import. Use the CSV importer when creating new exports. + + + Using the mSecure desktop application, navigate to "File" → "Export" → "CSV File..." + and save the CSV file. + + + Using the Sticky Password desktop application, navigate to "Menu" (top right) → "Export" + → "Export all". Select the unencrypted format XML option and save the XML file. + + + Using the True Key desktop application, click the gear icon (top right) and then navigate to + "App Settings". Click the "Export" button, enter your password and save the CSV file. + + + Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the + top right to expand the navigation bar. Navigate to "Data" → "Export". Click the + "download HTML+JSON" button to save the HTML file. + + + Using the RoboForm Editor desktop application, navigate to "RoboForm" (top left) → + "Options" → "Account & Data" and click the "Export" button. Select all of your data, + change the "Format" to "CSV file" and then click the "Export" button to save the CSV file. + Note: RoboForm only allows you to export Logins. Other items will not be exported. + + + Log into the Passbolt web vault and navigate to the "Passwords" listing. Select all of the + passwords you would like to export and click the "Export" button at the top of the listing. + Choose the "csv (lastpass)" export format and click the "Export" button. + + + Using the Ascendo DataVault desktop application, navigate to "Tools" → "Export". In the + dialog that pops up, select the "All Items (DVX, CSV)" option. Click the "Ok" button to save + the CSV file. + + + Using the Password Boss desktop application, navigate to "File" → "Export data" → + "Password Boss JSON - not encrypted" and save the JSON file. + + + Log into the Zoho web vault (vault.zoho.com). Navigate to "Tools" → "Export Secrets". + Select "All Secrets" and click the "Zoho Vault Format CSV" button. Highlight and copy the data + from the textarea. Open a text editor like Notepad and paste the data. Save the data from the + text editor as + zoho_export.csv. + + + Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top + right corner. Navigate to "Export" → "Export as CSV" and save the CSV file. + + + Using the PassKeep mobile app, navigate to "Backup/Restore". Locate the "CSV Backup/Restore" + section and click "Backup to CSV" to save the CSV file. + + + Make sure you have python-keyring and python-gnomekeyring installed. Save the + GNOME Keyring Import/Export + python script to your desktop as pw_helper.py. Open terminal and run + chmod +rx Desktop/pw_helper.py and then + python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the + resulting my_passwords.json file here to Bitwarden. + + + Using the Password Agent desktop application navigate to "File" → "Export", select the + "Fields to export" button and check all of the fields, change the "Output format" to "CSV", + and then click the "Start" button to save the CSV file. + + + Log into the Passpack website vault and navigate to "Settings" → "Export", then click the + "Download" button to save the CSV file. + + + Open your Passman vault and click on "Settings" in the bottom left corner. In the "Settings" + window switch to the "Export credentials" tab and choose "JSON" as the export type. Enter your + vault's passphrase and click the "Export" button to save the JSON file. + + + Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export + data". Select the "Export" button for the "Export to CSV file" option to save the CSV file. + + + Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export + data". Select the "Export" button for the "Export to JSON file" option to save the JSON file. + + + Open the F-Secure KEY desktop application and navigate to "Settings" → "Export + Passwords". Select the "Export" button, enter your master password, and save the FSK file. + + + Open the Kaspersky Password Manager desktop application and navigate to "Settings" → + "Import/Export". Locate the "Export to text file" section and select the "Export" button to + save the TXT file. + + + Open the RememBear desktop application and navigate to "Settings" → "Account" → + "Export". Enter your master password and select the "Export Anyway" button to save the CSV + file. + + + Open the PasswordWallet desktop application and navigate to "File" → "Export" → + "Visible entries to text file". Enter your password and select the "Ok" button to save the TXT + file. + + + Open the Myki desktop browser extension and navigate to "Advanced" → "Export Accounts" + and then scan the QR code with your mobile device. Various CSV files will then be saved to + your computer's downloads folder. + + + Export your SecureSafe password safe to a CSV file with a comma delimiter. + + + Open the LogMeOnce browser extension, then navigate to "Open Menu" → "Export To" and + select "CSV File" to save the CSV file. + + + Open the BlackBerry Password Keeper application, then navigate to "Settings" → + "Import/Export". Select "Export Passwords" and follow the instructions on screen to save the + unencrypted CSV file. + + + Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon + and select "Export" to save the CSV file. + + + Open the Codebook desktop application and log in. Navigate to "File" → "Export all", then + click "Yes" on the dialog and save the CSV file. + + + Open the newest version of the Encryptr desktop application and allow all of your data to + sync. Once syncing of your data is complete, the download icon in the top right corner will + turn pink. Click the download icon and save the CSV file. + + + From the Yoti browser extension, click on "Settings", then "Export Saved Logins" and save the + CSV file. + + +
+
+
+ + +
+
+
+
+ + +
+ +
diff --git a/apps/web/src/app/tools/import.component.ts b/apps/web/src/app/tools/import.component.ts new file mode 100644 index 0000000000..c274c29b23 --- /dev/null +++ b/apps/web/src/app/tools/import.component.ts @@ -0,0 +1,228 @@ +import { Component, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; +import * as JSZip from "jszip"; +import Swal, { SweetAlertIcon } from "sweetalert2"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { ImportService } from "jslib-common/abstractions/import.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 { ImportOption, ImportType } from "jslib-common/enums/importOptions"; +import { PolicyType } from "jslib-common/enums/policyType"; + +@Component({ + selector: "app-import", + templateUrl: "import.component.html", +}) +export class ImportComponent implements OnInit { + featuredImportOptions: ImportOption[]; + importOptions: ImportOption[]; + format: ImportType = null; + fileContents: string; + formPromise: Promise; + loading = false; + importBlockedByPolicy = false; + + protected organizationId: string = null; + protected successNavigate: any[] = ["vault"]; + + constructor( + protected i18nService: I18nService, + protected importService: ImportService, + protected router: Router, + protected platformUtilsService: PlatformUtilsService, + protected policyService: PolicyService, + private logService: LogService + ) {} + + async ngOnInit() { + this.setImportOptions(); + + this.importBlockedByPolicy = await this.policyService.policyAppliesToUser( + PolicyType.PersonalOwnership + ); + } + + async submit() { + if (this.importBlockedByPolicy) { + this.platformUtilsService.showToast( + "error", + null, + this.i18nService.t("personalOwnershipPolicyInEffectImports") + ); + return; + } + + this.loading = true; + + const importer = this.importService.getImporter(this.format, this.organizationId); + if (importer === null) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("selectFormat") + ); + this.loading = false; + return; + } + + const fileEl = document.getElementById("file") as HTMLInputElement; + const files = fileEl.files; + if ( + (files == null || files.length === 0) && + (this.fileContents == null || this.fileContents === "") + ) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("selectFile") + ); + this.loading = false; + return; + } + + let fileContents = this.fileContents; + if (files != null && files.length > 0) { + try { + const content = await this.getFileContents(files[0]); + if (content != null) { + fileContents = content; + } + } catch (e) { + this.logService.error(e); + } + } + + if (fileContents == null || fileContents === "") { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("selectFile") + ); + this.loading = false; + return; + } + + try { + this.formPromise = this.importService.import(importer, fileContents, this.organizationId); + const error = await this.formPromise; + if (error != null) { + this.error(error); + this.loading = false; + return; + } + this.platformUtilsService.showToast("success", null, this.i18nService.t("importSuccess")); + this.router.navigate(this.successNavigate); + } catch (e) { + this.logService.error(e); + } + + this.loading = false; + } + + getFormatInstructionTitle() { + if (this.format == null) { + return null; + } + + const results = this.featuredImportOptions + .concat(this.importOptions) + .filter((o) => o.id === this.format); + if (results.length > 0) { + return this.i18nService.t("instructionsFor", results[0].name); + } + return null; + } + + protected setImportOptions() { + this.featuredImportOptions = [ + { + id: null, + name: "-- " + this.i18nService.t("select") + " --", + }, + ...this.importService.featuredImportOptions, + ]; + this.importOptions = [...this.importService.regularImportOptions].sort((a, b) => { + if (a.name == null && b.name != null) { + return -1; + } + if (a.name != null && b.name == null) { + return 1; + } + if (a.name == null && b.name == null) { + return 0; + } + + return this.i18nService.collator + ? this.i18nService.collator.compare(a.name, b.name) + : a.name.localeCompare(b.name); + }); + } + + private async error(error: Error) { + await Swal.fire({ + heightAuto: false, + buttonsStyling: false, + icon: "error" as SweetAlertIcon, + iconHtml: ``, + input: "textarea", + inputValue: error.message, + inputAttributes: { + readonly: "true", + }, + titleText: this.i18nService.t("importError"), + text: this.i18nService.t("importErrorDesc"), + showConfirmButton: true, + confirmButtonText: this.i18nService.t("ok"), + onOpen: (popupEl) => { + popupEl.querySelector(".swal2-textarea").scrollTo(0, 0); + }, + }); + } + + private getFileContents(file: File): Promise { + if (this.format === "1password1pux") { + return this.extract1PuxContent(file); + } + + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsText(file, "utf-8"); + reader.onload = (evt) => { + if (this.format === "lastpasscsv" && file.type === "text/html") { + const parser = new DOMParser(); + const doc = parser.parseFromString((evt.target as any).result, "text/html"); + const pre = doc.querySelector("pre"); + if (pre != null) { + resolve(pre.textContent); + return; + } + reject(); + return; + } + + resolve((evt.target as any).result); + }; + reader.onerror = () => { + reject(); + }; + }); + } + + private extract1PuxContent(file: File): Promise { + return new JSZip() + .loadAsync(file) + .then((zip) => { + return zip.file("export.data").async("string"); + }) + .then( + function success(content) { + return content; + }, + function error(e) { + return ""; + } + ); + } +} diff --git a/apps/web/src/app/tools/password-generator-history.component.html b/apps/web/src/app/tools/password-generator-history.component.html new file mode 100644 index 0000000000..5b9e32378a --- /dev/null +++ b/apps/web/src/app/tools/password-generator-history.component.html @@ -0,0 +1,58 @@ + diff --git a/apps/web/src/app/tools/password-generator-history.component.ts b/apps/web/src/app/tools/password-generator-history.component.ts new file mode 100644 index 0000000000..d7f344365f --- /dev/null +++ b/apps/web/src/app/tools/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/web/src/app/tools/tools.component.html b/apps/web/src/app/tools/tools.component.html new file mode 100644 index 0000000000..667a4025b6 --- /dev/null +++ b/apps/web/src/app/tools/tools.component.html @@ -0,0 +1,23 @@ + diff --git a/apps/web/src/app/tools/tools.component.ts b/apps/web/src/app/tools/tools.component.ts new file mode 100644 index 0000000000..7e2c776ec6 --- /dev/null +++ b/apps/web/src/app/tools/tools.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit } from "@angular/core"; + +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +@Component({ + selector: "app-tools", + templateUrl: "tools.component.html", +}) +export class ToolsComponent implements OnInit { + canAccessPremium = false; + + constructor(private stateService: StateService, private messagingService: MessagingService) {} + + async ngOnInit() { + this.canAccessPremium = await this.stateService.getCanAccessPremium(); + } + + premiumRequired() { + if (!this.canAccessPremium) { + this.messagingService.send("premiumRequired"); + return; + } + } +} diff --git a/apps/web/src/app/vault/add-edit-custom-fields.component.html b/apps/web/src/app/vault/add-edit-custom-fields.component.html new file mode 100644 index 0000000000..736aa181e4 --- /dev/null +++ b/apps/web/src/app/vault/add-edit-custom-fields.component.html @@ -0,0 +1,167 @@ + +

{{ "customFields" | i18n }}

+
+
+
+
+ + + + +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+
+ + +
+ + +
+
+
+
+ + + {{ "newCustomField" | i18n }} + +
+
+ + +
+
+
diff --git a/apps/web/src/app/vault/add-edit-custom-fields.component.ts b/apps/web/src/app/vault/add-edit-custom-fields.component.ts new file mode 100644 index 0000000000..644e23f413 --- /dev/null +++ b/apps/web/src/app/vault/add-edit-custom-fields.component.ts @@ -0,0 +1,18 @@ +import { Component, Input } 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 { + @Input() viewOnly: boolean; + @Input() copy: (value: string, typeI18nKey: string, aType: string) => void; + + constructor(i18nService: I18nService, eventService: EventService) { + super(i18nService, eventService); + } +} diff --git a/apps/web/src/app/vault/add-edit.component.html b/apps/web/src/app/vault/add-edit.component.html new file mode 100644 index 0000000000..37410ea595 --- /dev/null +++ b/apps/web/src/app/vault/add-edit.component.html @@ -0,0 +1,851 @@ + diff --git a/apps/web/src/app/vault/add-edit.component.ts b/apps/web/src/app/vault/add-edit.component.ts new file mode 100644 index 0000000000..6cd8182aa1 --- /dev/null +++ b/apps/web/src/app/vault/add-edit.component.ts @@ -0,0 +1,213 @@ +import { Component } from "@angular/core"; + +import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/add-edit.component"; +import { AuditService } from "jslib-common/abstractions/audit.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 { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.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"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { EventType } from "jslib-common/enums/eventType"; +import { LoginUriView } from "jslib-common/models/view/loginUriView"; + +@Component({ + selector: "app-vault-add-edit", + templateUrl: "add-edit.component.html", +}) +export class AddEditComponent extends BaseAddEditComponent { + canAccessPremium: boolean; + totpCode: string; + totpCodeFormatted: string; + totpDash: number; + totpSec: number; + totpLow: boolean; + showRevisionDate = false; + hasPasswordHistory = false; + viewingPasswordHistory = false; + viewOnly = false; + + protected totpInterval: number; + + constructor( + cipherService: CipherService, + folderService: FolderService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + auditService: AuditService, + stateService: StateService, + collectionService: CollectionService, + protected totpService: TotpService, + protected passwordGenerationService: PasswordGenerationService, + protected messagingService: MessagingService, + eventService: EventService, + protected policyService: PolicyService, + organizationService: OrganizationService, + logService: LogService, + passwordRepromptService: PasswordRepromptService + ) { + super( + cipherService, + folderService, + i18nService, + platformUtilsService, + auditService, + stateService, + collectionService, + messagingService, + eventService, + policyService, + logService, + passwordRepromptService, + organizationService + ); + } + + async ngOnInit() { + await super.ngOnInit(); + await this.load(); + this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null; + this.hasPasswordHistory = this.cipher.hasPasswordHistory; + this.cleanUp(); + + this.canAccessPremium = await this.stateService.getCanAccessPremium(); + if ( + this.cipher.type === CipherType.Login && + this.cipher.login.totp && + (this.cipher.organizationUseTotp || this.canAccessPremium) + ) { + await this.totpUpdateCode(); + const interval = this.totpService.getTimeInterval(this.cipher.login.totp); + await this.totpTick(interval); + + this.totpInterval = window.setInterval(async () => { + await this.totpTick(interval); + }, 1000); + } + } + + toggleFavorite() { + this.cipher.favorite = !this.cipher.favorite; + } + + launch(uri: LoginUriView) { + if (!uri.canLaunch) { + return; + } + + this.platformUtilsService.launchUri(uri.launchUri); + } + + copy(value: string, typeI18nKey: string, aType: string) { + if (value == null) { + return; + } + + this.platformUtilsService.copyToClipboard(value, { window: window }); + this.platformUtilsService.showToast( + "info", + null, + this.i18nService.t("valueCopied", this.i18nService.t(typeI18nKey)) + ); + + if (this.editMode) { + if (typeI18nKey === "password") { + this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId); + } else if (typeI18nKey === "securityCode") { + this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId); + } else if (aType === "H_Field") { + this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId); + } + } + } + + async generatePassword(): Promise { + const confirmed = await super.generatePassword(); + if (confirmed) { + const options = (await this.passwordGenerationService.getOptions())[0]; + this.cipher.login.password = await this.passwordGenerationService.generatePassword(options); + } + return confirmed; + } + + premiumRequired() { + if (!this.canAccessPremium) { + this.messagingService.send("premiumRequired"); + return; + } + } + + upgradeOrganization() { + this.messagingService.send("upgradeOrganization", { + organizationId: this.cipher.organizationId, + }); + } + + viewHistory() { + this.viewingPasswordHistory = !this.viewingPasswordHistory; + } + + protected cleanUp() { + if (this.totpInterval) { + window.clearInterval(this.totpInterval); + } + } + + protected async totpUpdateCode() { + if ( + this.cipher == null || + this.cipher.type !== CipherType.Login || + this.cipher.login.totp == null + ) { + if (this.totpInterval) { + window.clearInterval(this.totpInterval); + } + return; + } + + this.totpCode = await this.totpService.getCode(this.cipher.login.totp); + if (this.totpCode != null) { + if (this.totpCode.length > 4) { + const half = Math.floor(this.totpCode.length / 2); + this.totpCodeFormatted = + this.totpCode.substring(0, half) + " " + this.totpCode.substring(half); + } else { + this.totpCodeFormatted = this.totpCode; + } + } else { + this.totpCodeFormatted = null; + if (this.totpInterval) { + window.clearInterval(this.totpInterval); + } + } + } + + protected allowOwnershipAssignment() { + return ( + (!this.editMode || this.cloneMode) && + this.ownershipOptions != null && + (this.ownershipOptions.length > 1 || !this.allowPersonal) + ); + } + + private async totpTick(intervalSeconds: number) { + const epoch = Math.round(new Date().getTime() / 1000.0); + const mod = epoch % intervalSeconds; + + this.totpSec = intervalSeconds - mod; + this.totpDash = +(Math.round(((78.6 / intervalSeconds) * mod + "e+2") as any) + "e-2"); + this.totpLow = this.totpSec <= 7; + if (mod === 0) { + await this.totpUpdateCode(); + } + } +} diff --git a/apps/web/src/app/vault/attachments.component.html b/apps/web/src/app/vault/attachments.component.html new file mode 100644 index 0000000000..a358acc553 --- /dev/null +++ b/apps/web/src/app/vault/attachments.component.html @@ -0,0 +1,116 @@ + diff --git a/apps/web/src/app/vault/attachments.component.ts b/apps/web/src/app/vault/attachments.component.ts new file mode 100644 index 0000000000..fef3875fee --- /dev/null +++ b/apps/web/src/app/vault/attachments.component.ts @@ -0,0 +1,50 @@ +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"; +import { AttachmentView } from "jslib-common/models/view/attachmentView"; + +@Component({ + selector: "app-vault-attachments", + templateUrl: "attachments.component.html", +}) +export class AttachmentsComponent extends BaseAttachmentsComponent { + viewOnly = false; + + constructor( + cipherService: CipherService, + i18nService: I18nService, + cryptoService: CryptoService, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + logService: LogService + ) { + super( + cipherService, + i18nService, + cryptoService, + platformUtilsService, + apiService, + window, + logService, + stateService + ); + } + + protected async reupload(attachment: AttachmentView) { + if (this.showFixOldAttachments(attachment)) { + await this.reuploadCipherAttachment(attachment, false); + } + } + + protected showFixOldAttachments(attachment: AttachmentView) { + return attachment.key == null && this.cipher.organizationId == null; + } +} diff --git a/apps/web/src/app/vault/bulk-actions.component.html b/apps/web/src/app/vault/bulk-actions.component.html new file mode 100644 index 0000000000..fafcefdeb4 --- /dev/null +++ b/apps/web/src/app/vault/bulk-actions.component.html @@ -0,0 +1,55 @@ + + + + + + diff --git a/apps/web/src/app/vault/bulk-actions.component.ts b/apps/web/src/app/vault/bulk-actions.component.ts new file mode 100644 index 0000000000..29bf474087 --- /dev/null +++ b/apps/web/src/app/vault/bulk-actions.component.ts @@ -0,0 +1,167 @@ +import { Component, Input, ViewChild, ViewContainerRef } from "@angular/core"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType"; +import { Organization } from "jslib-common/models/domain/organization"; + +import { BulkDeleteComponent } from "./bulk-delete.component"; +import { BulkMoveComponent } from "./bulk-move.component"; +import { BulkRestoreComponent } from "./bulk-restore.component"; +import { BulkShareComponent } from "./bulk-share.component"; +import { CiphersComponent } from "./ciphers.component"; + +@Component({ + selector: "app-vault-bulk-actions", + templateUrl: "bulk-actions.component.html", +}) +export class BulkActionsComponent { + @Input() ciphersComponent: CiphersComponent; + @Input() deleted: boolean; + @Input() organization: Organization; + + @ViewChild("bulkDeleteTemplate", { read: ViewContainerRef, static: true }) + bulkDeleteModalRef: ViewContainerRef; + @ViewChild("bulkRestoreTemplate", { read: ViewContainerRef, static: true }) + bulkRestoreModalRef: ViewContainerRef; + @ViewChild("bulkMoveTemplate", { read: ViewContainerRef, static: true }) + bulkMoveModalRef: ViewContainerRef; + @ViewChild("bulkShareTemplate", { read: ViewContainerRef, static: true }) + bulkShareModalRef: ViewContainerRef; + + constructor( + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private modalService: ModalService, + private passwordRepromptService: PasswordRepromptService + ) {} + + async bulkDelete() { + if (!(await this.promptPassword())) { + return; + } + + const selectedIds = this.ciphersComponent.getSelectedIds(); + if (selectedIds.length === 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("nothingSelected") + ); + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkDeleteComponent, + this.bulkDeleteModalRef, + (comp) => { + comp.permanent = this.deleted; + comp.cipherIds = selectedIds; + comp.organization = this.organization; + comp.onDeleted.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + } + + async bulkRestore() { + if (!(await this.promptPassword())) { + return; + } + + const selectedIds = this.ciphersComponent.getSelectedIds(); + if (selectedIds.length === 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("nothingSelected") + ); + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkRestoreComponent, + this.bulkRestoreModalRef, + (comp) => { + comp.cipherIds = selectedIds; + comp.onRestored.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + } + + async bulkShare() { + if (!(await this.promptPassword())) { + return; + } + + const selectedCiphers = this.ciphersComponent.getSelected(); + if (selectedCiphers.length === 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("nothingSelected") + ); + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkShareComponent, + this.bulkShareModalRef, + (comp) => { + comp.ciphers = selectedCiphers; + comp.onShared.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + } + + async bulkMove() { + if (!(await this.promptPassword())) { + return; + } + + const selectedIds = this.ciphersComponent.getSelectedIds(); + if (selectedIds.length === 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("nothingSelected") + ); + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkMoveComponent, + this.bulkMoveModalRef, + (comp) => { + comp.cipherIds = selectedIds; + comp.onMoved.subscribe(async () => { + modal.close(); + await this.ciphersComponent.refresh(); + }); + } + ); + } + + selectAll(select: boolean) { + this.ciphersComponent.selectAll(select); + } + + private async promptPassword() { + const selectedCiphers = this.ciphersComponent.getSelected(); + const notProtected = !selectedCiphers.find( + (cipher) => cipher.reprompt !== CipherRepromptType.None + ); + + return notProtected || (await this.passwordRepromptService.showPasswordPrompt()); + } +} diff --git a/apps/web/src/app/vault/bulk-delete.component.html b/apps/web/src/app/vault/bulk-delete.component.html new file mode 100644 index 0000000000..154786960a --- /dev/null +++ b/apps/web/src/app/vault/bulk-delete.component.html @@ -0,0 +1,39 @@ + diff --git a/apps/web/src/app/vault/bulk-delete.component.ts b/apps/web/src/app/vault/bulk-delete.component.ts new file mode 100644 index 0000000000..04e86c5ce6 --- /dev/null +++ b/apps/web/src/app/vault/bulk-delete.component.ts @@ -0,0 +1,62 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CipherBulkDeleteRequest } from "jslib-common/models/request/cipherBulkDeleteRequest"; + +@Component({ + selector: "app-vault-bulk-delete", + templateUrl: "bulk-delete.component.html", +}) +export class BulkDeleteComponent { + @Input() cipherIds: string[] = []; + @Input() permanent = false; + @Input() organization: Organization; + @Output() onDeleted = new EventEmitter(); + + formPromise: Promise; + + constructor( + private cipherService: CipherService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private apiService: ApiService + ) {} + + async submit() { + if (!this.organization || !this.organization.canEditAnyCollection) { + await this.deleteCiphers(); + } else { + await this.deleteCiphersAdmin(); + } + + await this.formPromise; + + this.onDeleted.emit(); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t(this.permanent ? "permanentlyDeletedItems" : "deletedItems") + ); + } + + private async deleteCiphers() { + if (this.permanent) { + this.formPromise = await this.cipherService.deleteManyWithServer(this.cipherIds); + } else { + this.formPromise = await this.cipherService.softDeleteManyWithServer(this.cipherIds); + } + } + + private async deleteCiphersAdmin() { + const deleteRequest = new CipherBulkDeleteRequest(this.cipherIds, this.organization.id); + if (this.permanent) { + this.formPromise = await this.apiService.deleteManyCiphersAdmin(deleteRequest); + } else { + this.formPromise = await this.apiService.putDeleteManyCiphersAdmin(deleteRequest); + } + } +} diff --git a/apps/web/src/app/vault/bulk-move.component.html b/apps/web/src/app/vault/bulk-move.component.html new file mode 100644 index 0000000000..866cc49c2c --- /dev/null +++ b/apps/web/src/app/vault/bulk-move.component.html @@ -0,0 +1,37 @@ + diff --git a/apps/web/src/app/vault/bulk-move.component.ts b/apps/web/src/app/vault/bulk-move.component.ts new file mode 100644 index 0000000000..d7da60a4dd --- /dev/null +++ b/apps/web/src/app/vault/bulk-move.component.ts @@ -0,0 +1,39 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { FolderView } from "jslib-common/models/view/folderView"; + +@Component({ + selector: "app-vault-bulk-move", + templateUrl: "bulk-move.component.html", +}) +export class BulkMoveComponent implements OnInit { + @Input() cipherIds: string[] = []; + @Output() onMoved = new EventEmitter(); + + folderId: string = null; + folders: FolderView[] = []; + formPromise: Promise; + + constructor( + private cipherService: CipherService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private folderService: FolderService + ) {} + + async ngOnInit() { + this.folders = await this.folderService.getAllDecrypted(); + this.folderId = this.folders[0].id; + } + + async submit() { + this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId); + await this.formPromise; + this.onMoved.emit(); + this.platformUtilsService.showToast("success", null, this.i18nService.t("movedItems")); + } +} diff --git a/apps/web/src/app/vault/bulk-restore.component.html b/apps/web/src/app/vault/bulk-restore.component.html new file mode 100644 index 0000000000..5331b25fcc --- /dev/null +++ b/apps/web/src/app/vault/bulk-restore.component.html @@ -0,0 +1,36 @@ + diff --git a/apps/web/src/app/vault/bulk-restore.component.ts b/apps/web/src/app/vault/bulk-restore.component.ts new file mode 100644 index 0000000000..61bc0e165e --- /dev/null +++ b/apps/web/src/app/vault/bulk-restore.component.ts @@ -0,0 +1,29 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +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-vault-bulk-restore", + templateUrl: "bulk-restore.component.html", +}) +export class BulkRestoreComponent { + @Input() cipherIds: string[] = []; + @Output() onRestored = new EventEmitter(); + + formPromise: Promise; + + constructor( + private cipherService: CipherService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService + ) {} + + async submit() { + this.formPromise = this.cipherService.restoreManyWithServer(this.cipherIds); + await this.formPromise; + this.onRestored.emit(); + this.platformUtilsService.showToast("success", null, this.i18nService.t("restoredItems")); + } +} diff --git a/apps/web/src/app/vault/bulk-share.component.html b/apps/web/src/app/vault/bulk-share.component.html new file mode 100644 index 0000000000..5a7a38e8f5 --- /dev/null +++ b/apps/web/src/app/vault/bulk-share.component.html @@ -0,0 +1,85 @@ + diff --git a/apps/web/src/app/vault/bulk-share.component.ts b/apps/web/src/app/vault/bulk-share.component.ts new file mode 100644 index 0000000000..e2cf361f12 --- /dev/null +++ b/apps/web/src/app/vault/bulk-share.component.ts @@ -0,0 +1,116 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +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"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { CollectionView } from "jslib-common/models/view/collectionView"; + +@Component({ + selector: "app-vault-bulk-share", + templateUrl: "bulk-share.component.html", +}) +export class BulkShareComponent implements OnInit { + @Input() ciphers: CipherView[] = []; + @Input() organizationId: string; + @Output() onShared = new EventEmitter(); + + nonShareableCount = 0; + collections: CollectionView[] = []; + organizations: Organization[] = []; + shareableCiphers: CipherView[] = []; + formPromise: Promise; + + private writeableCollections: CollectionView[] = []; + + constructor( + private cipherService: CipherService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private collectionService: CollectionService, + private organizationService: OrganizationService, + private logService: LogService + ) {} + + async ngOnInit() { + this.shareableCiphers = this.ciphers.filter( + (c) => !c.hasOldAttachments && c.organizationId == null + ); + this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length; + const allCollections = await this.collectionService.getAllDecrypted(); + this.writeableCollections = allCollections.filter((c) => !c.readOnly); + this.organizations = await this.organizationService.getAll(); + if (this.organizationId == null && this.organizations.length > 0) { + this.organizationId = this.organizations[0].id; + } + this.filterCollections(); + } + + ngOnDestroy() { + this.selectAll(false); + } + + filterCollections() { + this.selectAll(false); + if (this.organizationId == null || this.writeableCollections.length === 0) { + this.collections = []; + } else { + this.collections = this.writeableCollections.filter( + (c) => c.organizationId === this.organizationId + ); + } + } + + async submit() { + const checkedCollectionIds = this.collections + .filter((c) => (c as any).checked) + .map((c) => c.id); + try { + this.formPromise = this.cipherService.shareManyWithServer( + this.shareableCiphers, + this.organizationId, + checkedCollectionIds + ); + await this.formPromise; + this.onShared.emit(); + const orgName = + this.organizations.find((o) => o.id === this.organizationId)?.name ?? + this.i18nService.t("organization"); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("movedItemsToOrg", orgName) + ); + } catch (e) { + this.logService.error(e); + } + } + + check(c: CollectionView, select?: boolean) { + (c as any).checked = select == null ? !(c as any).checked : select; + } + + selectAll(select: boolean) { + const collections = select ? this.collections : this.writeableCollections; + collections.forEach((c) => this.check(c, select)); + } + + get canSave() { + if ( + this.shareableCiphers != null && + this.shareableCiphers.length > 0 && + this.collections != null + ) { + for (let i = 0; i < this.collections.length; i++) { + if ((this.collections[i] as any).checked) { + return true; + } + } + } + return false; + } +} diff --git a/apps/web/src/app/vault/ciphers.component.html b/apps/web/src/app/vault/ciphers.component.html new file mode 100644 index 0000000000..096a0833ff --- /dev/null +++ b/apps/web/src/app/vault/ciphers.component.html @@ -0,0 +1,151 @@ + + + + + + + + + + + +
+ + + + + {{ c.name }} + + + {{ "attachments" | i18n }} + + + {{ "attachmentsNeedFix" | i18n }} + + +
+ {{ c.subTitle }} +
+ + + + + + + + + + + + + + + + + + + +
+
+ + + {{ "loading" | i18n }} + + +

{{ "noItemsInList" | i18n }}

+ +
+
+
diff --git a/apps/web/src/app/vault/ciphers.component.ts b/apps/web/src/app/vault/ciphers.component.ts new file mode 100644 index 0000000000..3f1dc3e059 --- /dev/null +++ b/apps/web/src/app/vault/ciphers.component.ts @@ -0,0 +1,306 @@ +import { Component, EventEmitter, Input, OnDestroy, Output } from "@angular/core"; + +import { CiphersComponent as BaseCiphersComponent } from "jslib-angular/components/ciphers.component"; +import { CipherService } from "jslib-common/abstractions/cipher.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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SearchService } from "jslib-common/abstractions/search.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 { CipherRepromptType } from "jslib-common/enums/cipherRepromptType"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { EventType } from "jslib-common/enums/eventType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +const MaxCheckedCount = 500; + +@Component({ + selector: "app-vault-ciphers", + templateUrl: "ciphers.component.html", +}) +export class CiphersComponent extends BaseCiphersComponent implements OnDestroy { + @Input() showAddNew = true; + @Output() onAttachmentsClicked = new EventEmitter(); + @Output() onShareClicked = new EventEmitter(); + @Output() onCollectionsClicked = new EventEmitter(); + @Output() onCloneClicked = new EventEmitter(); + @Output() onOrganzationBadgeClicked = new EventEmitter(); + + pagedCiphers: CipherView[] = []; + pageSize = 200; + cipherType = CipherType; + actionPromise: Promise; + userHasPremiumAccess = false; + organizations: Organization[] = []; + profileName: string; + + private didScroll = false; + private pagedCiphersCount = 0; + private refreshing = false; + + constructor( + searchService: SearchService, + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + protected cipherService: CipherService, + protected eventService: EventService, + protected totpService: TotpService, + protected stateService: StateService, + protected passwordRepromptService: PasswordRepromptService, + private logService: LogService, + private organizationService: OrganizationService, + private tokenService: TokenService + ) { + super(searchService); + } + + ngOnDestroy() { + this.selectAll(false); + } + + // load() is called after the page loads and the first sync has completed. + // Do not use ngOnInit() for anything that requires sync data. + async load(filter: (cipher: CipherView) => boolean = null, deleted = false) { + await super.load(filter, deleted); + this.profileName = await this.tokenService.getName(); + this.organizations = await this.organizationService.getAll(); + this.userHasPremiumAccess = await this.stateService.getCanAccessPremium(); + } + + loadMore() { + if (this.ciphers.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedCiphers.length; + let pagedSize = this.pageSize; + if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) { + pagedSize = this.pagedCiphersCount; + } + if (this.ciphers.length > pagedLength) { + this.pagedCiphers = this.pagedCiphers.concat( + this.ciphers.slice(pagedLength, pagedLength + pagedSize) + ); + } + this.pagedCiphersCount = this.pagedCiphers.length; + this.didScroll = this.pagedCiphers.length > this.pageSize; + } + + async refresh() { + try { + this.refreshing = true; + await this.reload(this.filter, this.deleted); + } finally { + this.refreshing = false; + } + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.ciphers.length > this.pageSize; + } + + async resetPaging() { + this.pagedCiphers = []; + this.loadMore(); + } + + async doSearch(indexedCiphers?: CipherView[]) { + this.ciphers = await this.searchService.searchCiphers( + this.searchText, + [this.filter, this.deletedFilter], + indexedCiphers + ); + this.resetPaging(); + } + + launch(uri: string) { + this.platformUtilsService.launchUri(uri); + } + + async attachments(c: CipherView) { + if (!(await this.repromptCipher(c))) { + return; + } + this.onAttachmentsClicked.emit(c); + } + + async share(c: CipherView) { + if (!(await this.repromptCipher(c))) { + return; + } + this.onShareClicked.emit(c); + } + + collections(c: CipherView) { + this.onCollectionsClicked.emit(c); + } + + async clone(c: CipherView) { + if (!(await this.repromptCipher(c))) { + return; + } + this.onCloneClicked.emit(c); + } + + async delete(c: CipherView): Promise { + if (!(await this.repromptCipher(c))) { + return; + } + if (this.actionPromise != null) { + return; + } + const permanent = c.isDeleted; + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t( + permanent ? "permanentlyDeleteItemConfirmation" : "deleteItemConfirmation" + ), + this.i18nService.t(permanent ? "permanentlyDeleteItem" : "deleteItem"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.actionPromise = this.deleteCipher(c.id, permanent); + await this.actionPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t(permanent ? "permanentlyDeletedItem" : "deletedItem") + ); + this.refresh(); + } catch (e) { + this.logService.error(e); + } + this.actionPromise = null; + } + + async restore(c: CipherView): Promise { + if (this.actionPromise != null || !c.isDeleted) { + return; + } + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("restoreItemConfirmation"), + this.i18nService.t("restoreItem"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.actionPromise = this.cipherService.restoreWithServer(c.id); + await this.actionPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("restoredItem")); + this.refresh(); + } catch (e) { + this.logService.error(e); + } + this.actionPromise = null; + } + + async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) { + if ( + this.passwordRepromptService.protectedFields().includes(aType) && + !(await this.repromptCipher(cipher)) + ) { + return; + } + + if (value == null || (aType === "TOTP" && !this.displayTotpCopyButton(cipher))) { + return; + } else if (value === cipher.login.totp) { + value = await this.totpService.getCode(value); + } + + if (!cipher.viewPassword) { + return; + } + + this.platformUtilsService.copyToClipboard(value, { window: window }); + this.platformUtilsService.showToast( + "info", + null, + this.i18nService.t("valueCopied", this.i18nService.t(typeI18nKey)) + ); + + if (typeI18nKey === "password" || typeI18nKey === "verificationCodeTotp") { + this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id); + } else if (typeI18nKey === "securityCode") { + this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id); + } + } + + selectAll(select: boolean) { + if (select) { + this.selectAll(false); + } + const selectCount = + select && this.ciphers.length > MaxCheckedCount ? MaxCheckedCount : this.ciphers.length; + for (let i = 0; i < selectCount; i++) { + this.checkCipher(this.ciphers[i], select); + } + } + + checkCipher(c: CipherView, select?: boolean) { + (c as any).checked = select == null ? !(c as any).checked : select; + } + + getSelected(): CipherView[] { + if (this.ciphers == null) { + return []; + } + return this.ciphers.filter((c) => !!(c as any).checked); + } + + getSelectedIds(): string[] { + return this.getSelected().map((c) => c.id); + } + + displayTotpCopyButton(cipher: CipherView) { + return ( + (cipher?.login?.hasTotp ?? false) && (cipher.organizationUseTotp || this.userHasPremiumAccess) + ); + } + + async selectCipher(cipher: CipherView) { + if (await this.repromptCipher(cipher)) { + super.selectCipher(cipher); + } + } + + onOrganizationClicked(organizationId: string) { + this.onOrganzationBadgeClicked.emit(organizationId); + } + + protected deleteCipher(id: string, permanent: boolean) { + return permanent + ? this.cipherService.deleteWithServer(id) + : this.cipherService.softDeleteWithServer(id); + } + + protected showFixOldAttachments(c: CipherView) { + return c.hasOldAttachments && c.organizationId == null; + } + + protected async repromptCipher(c: CipherView) { + return ( + c.reprompt === CipherRepromptType.None || + (await this.passwordRepromptService.showPasswordPrompt()) + ); + } +} diff --git a/apps/web/src/app/vault/collections.component.html b/apps/web/src/app/vault/collections.component.html new file mode 100644 index 0000000000..486ed03e32 --- /dev/null +++ b/apps/web/src/app/vault/collections.component.html @@ -0,0 +1,63 @@ + diff --git a/apps/web/src/app/vault/collections.component.ts b/apps/web/src/app/vault/collections.component.ts new file mode 100644 index 0000000000..17dc207d33 --- /dev/null +++ b/apps/web/src/app/vault/collections.component.ts @@ -0,0 +1,37 @@ +import { Component, OnDestroy } 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"; +import { CollectionView } from "jslib-common/models/view/collectionView"; + +@Component({ + selector: "app-vault-collections", + templateUrl: "collections.component.html", +}) +export class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy { + constructor( + collectionService: CollectionService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + cipherService: CipherService, + logService: LogService + ) { + super(collectionService, platformUtilsService, i18nService, cipherService, logService); + } + + ngOnDestroy() { + this.selectAll(false); + } + + check(c: CollectionView, select?: boolean) { + (c as any).checked = select == null ? !(c as any).checked : select; + } + + selectAll(select: boolean) { + this.collections.forEach((c) => this.check(c, select)); + } +} diff --git a/apps/web/src/app/vault/folder-add-edit.component.html b/apps/web/src/app/vault/folder-add-edit.component.html new file mode 100644 index 0000000000..fe59530f68 --- /dev/null +++ b/apps/web/src/app/vault/folder-add-edit.component.html @@ -0,0 +1,68 @@ + diff --git a/apps/web/src/app/vault/folder-add-edit.component.ts b/apps/web/src/app/vault/folder-add-edit.component.ts new file mode 100644 index 0000000000..a65f3f0226 --- /dev/null +++ b/apps/web/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/web/src/app/vault/share.component.html b/apps/web/src/app/vault/share.component.html new file mode 100644 index 0000000000..1f56c8c395 --- /dev/null +++ b/apps/web/src/app/vault/share.component.html @@ -0,0 +1,92 @@ + diff --git a/apps/web/src/app/vault/share.component.ts b/apps/web/src/app/vault/share.component.ts new file mode 100644 index 0000000000..719f0ac075 --- /dev/null +++ b/apps/web/src/app/vault/share.component.ts @@ -0,0 +1,47 @@ +import { Component, OnDestroy } 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"; +import { CollectionView } from "jslib-common/models/view/collectionView"; + +@Component({ + selector: "app-vault-share", + templateUrl: "share.component.html", +}) +export class ShareComponent extends BaseShareComponent implements OnDestroy { + constructor( + collectionService: CollectionService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + cipherService: CipherService, + organizationService: OrganizationService, + logService: LogService + ) { + super( + collectionService, + platformUtilsService, + i18nService, + cipherService, + logService, + organizationService + ); + } + + ngOnDestroy() { + this.selectAll(false); + } + + check(c: CollectionView, select?: boolean) { + (c as any).checked = select == null ? !(c as any).checked : select; + } + + selectAll(select: boolean) { + const collections = select ? this.collections : this.writeableCollections; + collections.forEach((c) => this.check(c, select)); + } +} diff --git a/apps/web/src/app/wildcard-routing.module.ts b/apps/web/src/app/wildcard-routing.module.ts new file mode 100644 index 0000000000..a8f59f37b7 --- /dev/null +++ b/apps/web/src/app/wildcard-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +const routes: Routes = [{ path: "**", redirectTo: "" }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class WildcardRoutingModule {} diff --git a/apps/web/src/browserconfig.xml b/apps/web/src/browserconfig.xml new file mode 100644 index 0000000000..ea394e344f --- /dev/null +++ b/apps/web/src/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #175DDC + + + diff --git a/apps/web/src/connectors/captcha-mobile.html b/apps/web/src/connectors/captcha-mobile.html new file mode 100644 index 0000000000..3cef730598 --- /dev/null +++ b/apps/web/src/connectors/captcha-mobile.html @@ -0,0 +1,23 @@ + + + + + + + + Bitwarden Captcha Connector + + + +
+
+ +

Captcha Required

+
+
+
+ + diff --git a/apps/web/src/connectors/captcha-mobile.scss b/apps/web/src/connectors/captcha-mobile.scss new file mode 100644 index 0000000000..a4c7f9b25b --- /dev/null +++ b/apps/web/src/connectors/captcha-mobile.scss @@ -0,0 +1 @@ +@import "../scss/styles.scss"; diff --git a/apps/web/src/connectors/captcha.html b/apps/web/src/connectors/captcha.html new file mode 100644 index 0000000000..366db5fc2d --- /dev/null +++ b/apps/web/src/connectors/captcha.html @@ -0,0 +1,17 @@ + + + + + + + + Bitwarden Captcha Connector + + + +
+ + diff --git a/apps/web/src/connectors/captcha.scss b/apps/web/src/connectors/captcha.scss new file mode 100644 index 0000000000..2af0e2db99 --- /dev/null +++ b/apps/web/src/connectors/captcha.scss @@ -0,0 +1,6 @@ +body { + min-width: 0px !important; + padding: 0; + margin: 0; + background: transparent; +} diff --git a/apps/web/src/connectors/captcha.ts b/apps/web/src/connectors/captcha.ts new file mode 100644 index 0000000000..d1110e8892 --- /dev/null +++ b/apps/web/src/connectors/captcha.ts @@ -0,0 +1,144 @@ +import { b64Decode, getQsParam } from "./common"; + +declare let hcaptcha: any; + +if (window.location.pathname.includes("mobile")) { + require("./captcha-mobile.scss"); +} else { + require("./captcha.scss"); +} + +document.addEventListener("DOMContentLoaded", () => { + init(); +}); + +(window as any).captchaSuccess = captchaSuccess; +(window as any).captchaError = captchaError; + +let parentUrl: string = null; +let parentOrigin: string = null; +let mobileResponse: boolean = null; +let sentSuccess = false; + +async function init() { + await start(); + onMessage(); +} + +async function start() { + sentSuccess = false; + + const data = getQsParam("data"); + if (!data) { + error("No data."); + return; + } + + parentUrl = getQsParam("parent"); + if (!parentUrl) { + error("No parent."); + return; + } else { + parentUrl = decodeURIComponent(parentUrl); + parentOrigin = new URL(parentUrl).origin; + } + + let decodedData: any; + try { + decodedData = JSON.parse(b64Decode(data, true)); + } catch (e) { + error("Cannot parse data."); + return; + } + mobileResponse = decodedData.callbackUri != null || decodedData.mobile === true; + + let src = "https://hcaptcha.com/1/api.js?render=explicit"; + + // Set language code + if (decodedData.locale) { + src += `&hl=${encodeURIComponent(decodedData.locale) ?? "en"}`; + } + + // Set captchaRequired subtitle for mobile + const subtitleEl = document.getElementById("captchaRequired"); + if (decodedData.captchaRequiredText && subtitleEl) { + subtitleEl.textContent = decodedData.captchaRequiredText; + } + + const script = document.createElement("script"); + script.src = src; + script.async = true; + script.defer = true; + script.addEventListener("load", () => { + hcaptcha.render("captcha", { + sitekey: encodeURIComponent(decodedData.siteKey), + callback: "captchaSuccess", + "error-callback": "captchaError", + }); + watchHeight(); + }); + document.head.appendChild(script); +} + +function captchaSuccess(response: string) { + if (mobileResponse) { + document.location.replace("bitwarden://captcha-callback?token=" + encodeURIComponent(response)); + } else { + success(response); + } +} + +function captchaError() { + error("An error occurred with the captcha. Try again."); +} + +function onMessage() { + window.addEventListener( + "message", + (event) => { + if (!event.origin || event.origin === "" || event.origin !== parentOrigin) { + return; + } + + if (event.data === "start") { + start(); + } + }, + false + ); +} + +function error(message: string) { + parent.postMessage("error|" + message, parentUrl); +} + +function success(data: string) { + if (sentSuccess) { + return; + } + parent.postMessage("success|" + data, parentUrl); + sentSuccess = true; +} + +function info(message: string | object) { + parent.postMessage("info|" + JSON.stringify(message), parentUrl); +} + +async function watchHeight() { + const imagesDiv = document.body.lastChild as HTMLElement; + // eslint-disable-next-line + while (true) { + info({ + height: + imagesDiv.style.visibility === "hidden" + ? document.documentElement.offsetHeight + : document.documentElement.scrollHeight, + width: document.documentElement.scrollWidth, + }); + await sleep(100); + } +} + +async function sleep(ms: number) { + await new Promise((r) => setTimeout(r, ms)); +} diff --git a/apps/web/src/connectors/common-webauthn.ts b/apps/web/src/connectors/common-webauthn.ts new file mode 100644 index 0000000000..3d07b50adb --- /dev/null +++ b/apps/web/src/connectors/common-webauthn.ts @@ -0,0 +1,71 @@ +export function buildDataString(assertedCredential: PublicKeyCredential) { + const response = assertedCredential.response as AuthenticatorAssertionResponse; + + const authData = new Uint8Array(response.authenticatorData); + const clientDataJSON = new Uint8Array(response.clientDataJSON); + const rawId = new Uint8Array(assertedCredential.rawId); + const sig = new Uint8Array(response.signature); + + const data = { + id: assertedCredential.id, + rawId: coerceToBase64Url(rawId), + type: assertedCredential.type, + extensions: assertedCredential.getClientExtensionResults(), + response: { + authenticatorData: coerceToBase64Url(authData), + clientDataJson: coerceToBase64Url(clientDataJSON), + signature: coerceToBase64Url(sig), + }, + }; + + return JSON.stringify(data); +} + +export function parseWebauthnJson(jsonString: string) { + const json = JSON.parse(jsonString); + + const challenge = json.challenge.replace(/-/g, "+").replace(/_/g, "/"); + json.challenge = Uint8Array.from(atob(challenge), (c) => c.charCodeAt(0)); + + json.allowCredentials.forEach((listItem: any) => { + // eslint-disable-next-line + const fixedId = listItem.id.replace(/\_/g, "/").replace(/\-/g, "+"); + listItem.id = Uint8Array.from(atob(fixedId), (c) => c.charCodeAt(0)); + }); + + return json; +} + +// From https://github.com/abergs/fido2-net-lib/blob/b487a1d47373ea18cd752b4988f7262035b7b54e/Demo/wwwroot/js/helpers.js#L34 +// License: https://github.com/abergs/fido2-net-lib/blob/master/LICENSE.txt +function coerceToBase64Url(thing: any) { + // Array or ArrayBuffer to Uint8Array + if (Array.isArray(thing)) { + thing = Uint8Array.from(thing); + } + + if (thing instanceof ArrayBuffer) { + thing = new Uint8Array(thing); + } + + // Uint8Array to base64 + if (thing instanceof Uint8Array) { + let str = ""; + const len = thing.byteLength; + + for (let i = 0; i < len; i++) { + str += String.fromCharCode(thing[i]); + } + thing = window.btoa(str); + } + + if (typeof thing !== "string") { + throw new Error("could not coerce to string"); + } + + // base64 to base64url + // NOTE: "=" at the end of challenge is optional, strip it off here + thing = thing.replace(/\+/g, "-").replace(/\//g, "_").replace(/=*$/g, ""); + + return thing; +} diff --git a/apps/web/src/connectors/common.ts b/apps/web/src/connectors/common.ts new file mode 100644 index 0000000000..a8855f1d4b --- /dev/null +++ b/apps/web/src/connectors/common.ts @@ -0,0 +1,30 @@ +export function getQsParam(name: string) { + const url = window.location.href; + // eslint-disable-next-line + name = name.replace(/[\[\]]/g, "\\$&"); + const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"); + const results = regex.exec(url); + + if (!results) { + return null; + } + if (!results[2]) { + return ""; + } + + return decodeURIComponent(results[2].replace(/\+/g, " ")); +} + +export function b64Decode(str: string, spaceAsPlus = false) { + if (spaceAsPlus) { + str = str.replace(/ /g, "+"); + } + + return decodeURIComponent( + Array.prototype.map + .call(atob(str), (c: string) => { + return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2); + }) + .join("") + ); +} diff --git a/apps/web/src/connectors/duo.html b/apps/web/src/connectors/duo.html new file mode 100644 index 0000000000..b58587baa0 --- /dev/null +++ b/apps/web/src/connectors/duo.html @@ -0,0 +1,13 @@ + + + + + + Bitwarden Duo Connector + + + + diff --git a/apps/web/src/connectors/duo.scss b/apps/web/src/connectors/duo.scss new file mode 100644 index 0000000000..0fa97956ee --- /dev/null +++ b/apps/web/src/connectors/duo.scss @@ -0,0 +1,18 @@ +html, +body { + margin: 0; + padding: 0; +} + +body { + background: #efeff4 url("../images/loading.svg") 0 0 no-repeat; +} + +iframe { + display: block; + width: 100%; + height: 400px; + border: none; + margin: 0; + padding: 0; +} diff --git a/apps/web/src/connectors/duo.ts b/apps/web/src/connectors/duo.ts new file mode 100644 index 0000000000..96b129585f --- /dev/null +++ b/apps/web/src/connectors/duo.ts @@ -0,0 +1,47 @@ +import * as DuoWebSDK from "duo_web_sdk"; + +import { getQsParam } from "./common"; + +require("./duo.scss"); + +document.addEventListener("DOMContentLoaded", () => { + const frameElement = document.createElement("iframe"); + frameElement.setAttribute("id", "duo_iframe"); + setFrameHeight(); + document.body.appendChild(frameElement); + + const hostParam = getQsParam("host"); + const requestParam = getQsParam("request"); + + const hostUrl = new URL("https://" + hostParam); + if ( + !hostUrl.hostname.endsWith(".duosecurity.com") && + !hostUrl.hostname.endsWith(".duofederal.com") + ) { + return; + } + + DuoWebSDK.init({ + iframe: "duo_iframe", + host: hostParam, + sig_request: requestParam, + submit_callback: (form: any) => { + invokeCSCode(form.elements.sig_response.value); + }, + }); + + window.onresize = setFrameHeight; + + function setFrameHeight() { + frameElement.style.height = window.innerHeight + "px"; + } +}); + +function invokeCSCode(data: string) { + try { + (window as any).invokeCSharpAction(data); + } catch (err) { + // eslint-disable-next-line + console.log(err); + } +} diff --git a/apps/web/src/connectors/sso.html b/apps/web/src/connectors/sso.html new file mode 100644 index 0000000000..b2ebc78265 --- /dev/null +++ b/apps/web/src/connectors/sso.html @@ -0,0 +1,33 @@ + + + + + + + + Bitwarden + + + + + + + + + +
+
+ +
+

+ +

+
+
+
+ + diff --git a/apps/web/src/connectors/sso.scss b/apps/web/src/connectors/sso.scss new file mode 100644 index 0000000000..a4c7f9b25b --- /dev/null +++ b/apps/web/src/connectors/sso.scss @@ -0,0 +1 @@ +@import "../scss/styles.scss"; diff --git a/apps/web/src/connectors/sso.ts b/apps/web/src/connectors/sso.ts new file mode 100644 index 0000000000..9195c61f9c --- /dev/null +++ b/apps/web/src/connectors/sso.ts @@ -0,0 +1,47 @@ +import { getQsParam } from "./common"; + +require("./sso.scss"); + +document.addEventListener("DOMContentLoaded", () => { + const code = getQsParam("code"); + const state = getQsParam("state"); + + if (state != null && state.includes(":clientId=browser")) { + initiateBrowserSso(code, state); + } else { + window.location.href = window.location.origin + "/#/sso?code=" + code + "&state=" + state; + // Match any characters between "_returnUri='" and the next "'" + const returnUri = extractFromRegex(state, "(?<=_returnUri=')(.*)(?=')"); + if (returnUri) { + window.location.href = window.location.origin + `/#${returnUri}`; + } else { + window.location.href = window.location.origin + "/#/sso?code=" + code + "&state=" + state; + } + } +}); + +function initiateBrowserSso(code: string, state: string) { + window.postMessage({ command: "authResult", code: code, state: state }, "*"); + const handOffMessage = ("; " + document.cookie) + .split("; ssoHandOffMessage=") + .pop() + .split(";") + .shift(); + document.cookie = "ssoHandOffMessage=;SameSite=strict;max-age=0"; + const content = document.getElementById("content"); + content.innerHTML = ""; + const p = document.createElement("p"); + p.innerText = handOffMessage; + content.appendChild(p); +} + +function extractFromRegex(s: string, regexString: string) { + const regex = new RegExp(regexString); + const results = regex.exec(s); + + if (!results) { + return null; + } + + return results[0]; +} diff --git a/apps/web/src/connectors/webauthn-fallback.html b/apps/web/src/connectors/webauthn-fallback.html new file mode 100644 index 0000000000..919d92b79e --- /dev/null +++ b/apps/web/src/connectors/webauthn-fallback.html @@ -0,0 +1,39 @@ + + + + + Bitwarden WebAuthn Connector + + + +
+
+
+ +
+

+ +

+
+
+
+

+
+ + +
+
+

+ +

+
+
+
+
+
+ + diff --git a/apps/web/src/connectors/webauthn-fallback.ts b/apps/web/src/connectors/webauthn-fallback.ts new file mode 100644 index 0000000000..60d53e0324 --- /dev/null +++ b/apps/web/src/connectors/webauthn-fallback.ts @@ -0,0 +1,164 @@ +import { b64Decode, getQsParam } from "./common"; +import { buildDataString, parseWebauthnJson } from "./common-webauthn"; + +require("./webauthn.scss"); + +let parsed = false; +let webauthnJson: any; +let parentUrl: string = null; +let sentSuccess = false; +let locale = "en"; + +let locales: any = {}; + +function parseParameters() { + if (parsed) { + return; + } + + parentUrl = getQsParam("parent"); + if (!parentUrl) { + error("No parent."); + return; + } else { + parentUrl = decodeURIComponent(parentUrl); + } + + locale = getQsParam("locale").replace("-", "_"); + + const version = getQsParam("v"); + + if (version === "1") { + parseParametersV1(); + } else { + parseParametersV2(); + } + parsed = true; +} + +function parseParametersV1() { + const data = getQsParam("data"); + if (!data) { + error("No data."); + return; + } + + webauthnJson = b64Decode(data); +} + +function parseParametersV2() { + let dataObj: { data: any; btnText: string } = null; + try { + dataObj = JSON.parse(b64Decode(getQsParam("data"))); + } catch (e) { + error("Cannot parse data."); + return; + } + + webauthnJson = dataObj.data; +} + +document.addEventListener("DOMContentLoaded", async () => { + parseParameters(); + try { + locales = await loadLocales(locale); + } catch { + // eslint-disable-next-line + console.error("Failed to load the locale", locale); + locales = await loadLocales("en"); + } + + document.getElementById("msg").innerText = translate("webAuthnFallbackMsg"); + document.getElementById("remember-label").innerText = translate("rememberMe"); + + const button = document.getElementById("webauthn-button"); + button.innerText = translate("webAuthnAuthenticate"); + button.onclick = start; + + document.getElementById("spinner").classList.add("d-none"); + const content = document.getElementById("content"); + content.classList.add("d-block"); + content.classList.remove("d-none"); +}); + +async function loadLocales(newLocale: string) { + const filePath = `locales/${newLocale}/messages.json?cache=${process.env.CACHE_TAG}`; + const localesResult = await fetch(filePath); + return await localesResult.json(); +} + +function translate(id: string) { + return locales[id]?.message || ""; +} + +function start() { + if (sentSuccess) { + return; + } + + if (!("credentials" in navigator)) { + error(translate("webAuthnNotSupported")); + return; + } + + parseParameters(); + if (!webauthnJson) { + error("No data."); + return; + } + + let json: any; + try { + json = parseWebauthnJson(webauthnJson); + } catch (e) { + error("Cannot parse data."); + return; + } + + initWebAuthn(json); +} + +async function initWebAuthn(obj: any) { + try { + const assertedCredential = (await navigator.credentials.get({ + publicKey: obj, + })) as PublicKeyCredential; + + if (sentSuccess) { + return; + } + + const dataString = buildDataString(assertedCredential); + const remember = (document.getElementById("remember") as HTMLInputElement).checked; + window.postMessage({ command: "webAuthnResult", data: dataString, remember: remember }, "*"); + + sentSuccess = true; + success(translate("webAuthnSuccess")); + } catch (err) { + error(err); + } +} + +function error(message: string) { + const el = document.getElementById("msg"); + resetMsgBox(el); + el.textContent = message; + el.classList.add("alert"); + el.classList.add("alert-danger"); +} + +function success(message: string) { + (document.getElementById("webauthn-button") as HTMLButtonElement).disabled = true; + + const el = document.getElementById("msg"); + resetMsgBox(el); + el.textContent = message; + el.classList.add("alert"); + el.classList.add("alert-success"); +} + +function resetMsgBox(el: HTMLElement) { + el.classList.remove("alert"); + el.classList.remove("alert-danger"); + el.classList.remove("alert-success"); +} diff --git a/apps/web/src/connectors/webauthn-mobile.html b/apps/web/src/connectors/webauthn-mobile.html new file mode 100644 index 0000000000..f2a015aae4 --- /dev/null +++ b/apps/web/src/connectors/webauthn-mobile.html @@ -0,0 +1,30 @@ + + + + + + + + Bitwarden WebAuthn Connector + + + +
+
+ +

+ + + + + +
+ +
+
+
+ + diff --git a/apps/web/src/connectors/webauthn.html b/apps/web/src/connectors/webauthn.html new file mode 100644 index 0000000000..2e77cc0d5d --- /dev/null +++ b/apps/web/src/connectors/webauthn.html @@ -0,0 +1,18 @@ + + + + + Bitwarden WebAuthn Connector + + + + + + + + +
+ +
+ + diff --git a/apps/web/src/connectors/webauthn.scss b/apps/web/src/connectors/webauthn.scss new file mode 100644 index 0000000000..5cca0413fc --- /dev/null +++ b/apps/web/src/connectors/webauthn.scss @@ -0,0 +1,5 @@ +@import "../scss/styles.scss"; + +body { + min-width: 0px !important; +} diff --git a/apps/web/src/connectors/webauthn.ts b/apps/web/src/connectors/webauthn.ts new file mode 100644 index 0000000000..8e4213d881 --- /dev/null +++ b/apps/web/src/connectors/webauthn.ts @@ -0,0 +1,200 @@ +import { b64Decode, getQsParam } from "./common"; +import { buildDataString, parseWebauthnJson } from "./common-webauthn"; + +require("./webauthn.scss"); + +const mobileCallbackUri = "bitwarden://webauthn-callback"; + +let parsed = false; +let webauthnJson: any; +let headerText: string = null; +let btnText: string = null; +let btnReturnText: string = null; +let parentUrl: string = null; +let parentOrigin: string = null; +let mobileResponse = false; +let stopWebAuthn = false; +let sentSuccess = false; +let obj: any = null; + +document.addEventListener("DOMContentLoaded", () => { + init(); + + parseParameters(); + if (headerText) { + const header = document.getElementById("webauthn-header"); + header.innerText = decodeURI(headerText); + } + if (btnText) { + const button = document.getElementById("webauthn-button"); + button.innerText = decodeURI(btnText); + button.onclick = executeWebAuthn; + } +}); + +function init() { + start(); + onMessage(); + info("ready"); +} + +function parseParameters() { + if (parsed) { + return; + } + + parentUrl = getQsParam("parent"); + if (!parentUrl) { + error("No parent."); + return; + } else { + parentUrl = decodeURIComponent(parentUrl); + parentOrigin = new URL(parentUrl).origin; + } + + const version = getQsParam("v"); + + if (version === "1") { + parseParametersV1(); + } else { + parseParametersV2(); + } + parsed = true; +} + +function parseParametersV1() { + const data = getQsParam("data"); + if (!data) { + error("No data."); + return; + } + + webauthnJson = b64Decode(data); + headerText = getQsParam("headerText"); + btnText = getQsParam("btnText"); + btnReturnText = getQsParam("btnReturnText"); +} + +function parseParametersV2() { + let dataObj: { + data: any; + headerText: string; + btnText: string; + btnReturnText: string; + callbackUri?: string; + mobile?: boolean; + } = null; + try { + dataObj = JSON.parse(b64Decode(getQsParam("data"))); + } catch (e) { + error("Cannot parse data."); + return; + } + + mobileResponse = dataObj.callbackUri != null || dataObj.mobile === true; + webauthnJson = dataObj.data; + headerText = dataObj.headerText; + btnText = dataObj.btnText; + btnReturnText = dataObj.btnReturnText; +} + +function start() { + sentSuccess = false; + + if (!("credentials" in navigator)) { + error("WebAuthn is not supported in this browser."); + return; + } + + parseParameters(); + if (!webauthnJson) { + error("No data."); + return; + } + + try { + obj = parseWebauthnJson(webauthnJson); + } catch (e) { + error("Cannot parse webauthn data."); + return; + } + + stopWebAuthn = false; + + if ( + mobileResponse || + (navigator.userAgent.indexOf(" Safari/") !== -1 && navigator.userAgent.indexOf("Chrome") === -1) + ) { + // Safari and mobile chrome blocks non-user initiated WebAuthn requests. + } else { + executeWebAuthn(); + } +} + +function executeWebAuthn() { + if (stopWebAuthn) { + return; + } + + navigator.credentials.get({ publicKey: obj }).then(success).catch(error); +} + +function onMessage() { + window.addEventListener( + "message", + (event) => { + if (!event.origin || event.origin === "" || event.origin !== parentOrigin) { + return; + } + + if (event.data === "stop") { + stopWebAuthn = true; + } else if (event.data === "start" && stopWebAuthn) { + start(); + } + }, + false + ); +} + +function error(message: string) { + if (mobileResponse) { + document.location.replace(mobileCallbackUri + "?error=" + encodeURIComponent(message)); + returnButton(mobileCallbackUri + "?error=" + encodeURIComponent(message)); + } else { + parent.postMessage("error|" + message, parentUrl); + } +} + +function success(assertedCredential: PublicKeyCredential) { + if (sentSuccess) { + return; + } + + const dataString = buildDataString(assertedCredential); + + if (mobileResponse) { + document.location.replace(mobileCallbackUri + "?data=" + encodeURIComponent(dataString)); + returnButton(mobileCallbackUri + "?data=" + encodeURIComponent(dataString)); + } else { + parent.postMessage("success|" + dataString, parentUrl); + sentSuccess = true; + } +} + +function info(message: string) { + if (mobileResponse) { + return; + } + + parent.postMessage("info|" + message, parentUrl); +} + +function returnButton(uri: string) { + // provides 'return' button in case scripted navigation is blocked + const button = document.getElementById("webauthn-button"); + button.innerText = decodeURI(btnReturnText); + button.onclick = () => { + document.location.replace(uri); + }; +} diff --git a/apps/web/src/favicon.ico b/apps/web/src/favicon.ico new file mode 100644 index 0000000000..841840dfe1 Binary files /dev/null and b/apps/web/src/favicon.ico differ diff --git a/apps/web/src/global.d.ts b/apps/web/src/global.d.ts new file mode 100644 index 0000000000..4859a0869e --- /dev/null +++ b/apps/web/src/global.d.ts @@ -0,0 +1,2 @@ +declare function escape(s: string): string; +declare function unescape(s: string): string; diff --git a/apps/web/src/images/404.png b/apps/web/src/images/404.png new file mode 100644 index 0000000000..db1c31bf55 Binary files /dev/null and b/apps/web/src/images/404.png differ diff --git a/apps/web/src/images/bwi-globe.png b/apps/web/src/images/bwi-globe.png new file mode 100644 index 0000000000..cceeaefbcf Binary files /dev/null and b/apps/web/src/images/bwi-globe.png differ diff --git a/apps/web/src/images/cards.png b/apps/web/src/images/cards.png new file mode 100644 index 0000000000..bd43abe54c Binary files /dev/null and b/apps/web/src/images/cards.png differ diff --git a/apps/web/src/images/icons/android-chrome-192x192.png b/apps/web/src/images/icons/android-chrome-192x192.png new file mode 100644 index 0000000000..43976a5832 Binary files /dev/null and b/apps/web/src/images/icons/android-chrome-192x192.png differ diff --git a/apps/web/src/images/icons/android-chrome-512x512.png b/apps/web/src/images/icons/android-chrome-512x512.png new file mode 100644 index 0000000000..8e5600b4df Binary files /dev/null and b/apps/web/src/images/icons/android-chrome-512x512.png differ diff --git a/apps/web/src/images/icons/apple-touch-icon.png b/apps/web/src/images/icons/apple-touch-icon.png new file mode 100644 index 0000000000..ea07eca818 Binary files /dev/null and b/apps/web/src/images/icons/apple-touch-icon.png differ diff --git a/apps/web/src/images/icons/favicon-16x16.png b/apps/web/src/images/icons/favicon-16x16.png new file mode 100644 index 0000000000..e42bf10e80 Binary files /dev/null and b/apps/web/src/images/icons/favicon-16x16.png differ diff --git a/apps/web/src/images/icons/favicon-32x32.png b/apps/web/src/images/icons/favicon-32x32.png new file mode 100644 index 0000000000..7dc2e8f9ac Binary files /dev/null and b/apps/web/src/images/icons/favicon-32x32.png differ diff --git a/apps/web/src/images/icons/mstile-150x150.png b/apps/web/src/images/icons/mstile-150x150.png new file mode 100644 index 0000000000..90bdd338c4 Binary files /dev/null and b/apps/web/src/images/icons/mstile-150x150.png differ diff --git a/apps/web/src/images/icons/safari-pinned-tab.svg b/apps/web/src/images/icons/safari-pinned-tab.svg new file mode 100644 index 0000000000..29063dd6de --- /dev/null +++ b/apps/web/src/images/icons/safari-pinned-tab.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/apps/web/src/images/loading-white.svg b/apps/web/src/images/loading-white.svg new file mode 100644 index 0000000000..3023914006 --- /dev/null +++ b/apps/web/src/images/loading-white.svg @@ -0,0 +1,6 @@ + + + Loading... + + diff --git a/apps/web/src/images/loading.svg b/apps/web/src/images/loading.svg new file mode 100644 index 0000000000..7076310516 --- /dev/null +++ b/apps/web/src/images/loading.svg @@ -0,0 +1,6 @@ + + + Loading... + + diff --git a/apps/web/src/images/logo-dark@2x.png b/apps/web/src/images/logo-dark@2x.png new file mode 100644 index 0000000000..e6519fb0fe Binary files /dev/null and b/apps/web/src/images/logo-dark@2x.png differ diff --git a/apps/web/src/images/logo-white@2x.png b/apps/web/src/images/logo-white@2x.png new file mode 100644 index 0000000000..099a4e4de2 Binary files /dev/null and b/apps/web/src/images/logo-white@2x.png differ diff --git a/apps/web/src/images/register-layout/cnet-logo.svg b/apps/web/src/images/register-layout/cnet-logo.svg new file mode 100644 index 0000000000..6e66987f4b --- /dev/null +++ b/apps/web/src/images/register-layout/cnet-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/web/src/images/register-layout/forbes-logo.svg b/apps/web/src/images/register-layout/forbes-logo.svg new file mode 100644 index 0000000000..c28a8e30f8 --- /dev/null +++ b/apps/web/src/images/register-layout/forbes-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/web/src/images/register-layout/logo-horizontal-white.png b/apps/web/src/images/register-layout/logo-horizontal-white.png new file mode 100644 index 0000000000..d5abf466e9 Binary files /dev/null and b/apps/web/src/images/register-layout/logo-horizontal-white.png differ diff --git a/apps/web/src/images/register-layout/logo-horizontal-white.svg b/apps/web/src/images/register-layout/logo-horizontal-white.svg new file mode 100644 index 0000000000..c8f13bd5fe --- /dev/null +++ b/apps/web/src/images/register-layout/logo-horizontal-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/src/images/register-layout/usnews-360-badge.svg b/apps/web/src/images/register-layout/usnews-360-badge.svg new file mode 100644 index 0000000000..e7a63ed330 --- /dev/null +++ b/apps/web/src/images/register-layout/usnews-360-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/src/images/register-layout/wired-logo.png b/apps/web/src/images/register-layout/wired-logo.png new file mode 100644 index 0000000000..bf893de347 Binary files /dev/null and b/apps/web/src/images/register-layout/wired-logo.png differ diff --git a/apps/web/src/images/totp-countdown.png b/apps/web/src/images/totp-countdown.png new file mode 100644 index 0000000000..ef07c49b98 Binary files /dev/null and b/apps/web/src/images/totp-countdown.png differ diff --git a/apps/web/src/images/two-factor/0.png b/apps/web/src/images/two-factor/0.png new file mode 100644 index 0000000000..307ff4fd60 Binary files /dev/null and b/apps/web/src/images/two-factor/0.png differ diff --git a/apps/web/src/images/two-factor/1-w.png b/apps/web/src/images/two-factor/1-w.png new file mode 100644 index 0000000000..a4e39b3f46 Binary files /dev/null and b/apps/web/src/images/two-factor/1-w.png differ diff --git a/apps/web/src/images/two-factor/1.png b/apps/web/src/images/two-factor/1.png new file mode 100644 index 0000000000..37fb7bc432 Binary files /dev/null and b/apps/web/src/images/two-factor/1.png differ diff --git a/apps/web/src/images/two-factor/2.png b/apps/web/src/images/two-factor/2.png new file mode 100644 index 0000000000..d069bdab99 Binary files /dev/null and b/apps/web/src/images/two-factor/2.png differ diff --git a/apps/web/src/images/two-factor/3.png b/apps/web/src/images/two-factor/3.png new file mode 100644 index 0000000000..c543343f53 Binary files /dev/null and b/apps/web/src/images/two-factor/3.png differ diff --git a/apps/web/src/images/two-factor/4.png b/apps/web/src/images/two-factor/4.png new file mode 100644 index 0000000000..058671ea37 Binary files /dev/null and b/apps/web/src/images/two-factor/4.png differ diff --git a/apps/web/src/images/two-factor/6.png b/apps/web/src/images/two-factor/6.png new file mode 100644 index 0000000000..d069bdab99 Binary files /dev/null and b/apps/web/src/images/two-factor/6.png differ diff --git a/apps/web/src/images/two-factor/7-w.png b/apps/web/src/images/two-factor/7-w.png new file mode 100644 index 0000000000..89fdd8a2a0 Binary files /dev/null and b/apps/web/src/images/two-factor/7-w.png differ diff --git a/apps/web/src/images/two-factor/7.png b/apps/web/src/images/two-factor/7.png new file mode 100644 index 0000000000..2a38bdcd3e Binary files /dev/null and b/apps/web/src/images/two-factor/7.png differ diff --git a/apps/web/src/images/two-factor/rc-w.png b/apps/web/src/images/two-factor/rc-w.png new file mode 100644 index 0000000000..e83b8db132 Binary files /dev/null and b/apps/web/src/images/two-factor/rc-w.png differ diff --git a/apps/web/src/images/two-factor/rc.png b/apps/web/src/images/two-factor/rc.png new file mode 100644 index 0000000000..4bebdf936c Binary files /dev/null and b/apps/web/src/images/two-factor/rc.png differ diff --git a/apps/web/src/images/u2fkey-mobile.avif b/apps/web/src/images/u2fkey-mobile.avif new file mode 100644 index 0000000000..2a1a733b92 Binary files /dev/null and b/apps/web/src/images/u2fkey-mobile.avif differ diff --git a/apps/web/src/images/u2fkey-mobile.jpg b/apps/web/src/images/u2fkey-mobile.jpg new file mode 100644 index 0000000000..ddbd545b0e Binary files /dev/null and b/apps/web/src/images/u2fkey-mobile.jpg differ diff --git a/apps/web/src/images/u2fkey-mobile.webp b/apps/web/src/images/u2fkey-mobile.webp new file mode 100644 index 0000000000..4faa32283d Binary files /dev/null and b/apps/web/src/images/u2fkey-mobile.webp differ diff --git a/apps/web/src/images/u2fkey.avif b/apps/web/src/images/u2fkey.avif new file mode 100644 index 0000000000..3c5f94dd83 Binary files /dev/null and b/apps/web/src/images/u2fkey.avif differ diff --git a/apps/web/src/images/u2fkey.jpg b/apps/web/src/images/u2fkey.jpg new file mode 100644 index 0000000000..595ae0c4a3 Binary files /dev/null and b/apps/web/src/images/u2fkey.jpg differ diff --git a/apps/web/src/images/u2fkey.webp b/apps/web/src/images/u2fkey.webp new file mode 100644 index 0000000000..65d7501950 Binary files /dev/null and b/apps/web/src/images/u2fkey.webp differ diff --git a/apps/web/src/images/yubikey.avif b/apps/web/src/images/yubikey.avif new file mode 100644 index 0000000000..ca67e1a25c Binary files /dev/null and b/apps/web/src/images/yubikey.avif differ diff --git a/apps/web/src/images/yubikey.jpg b/apps/web/src/images/yubikey.jpg new file mode 100644 index 0000000000..6130819ac8 Binary files /dev/null and b/apps/web/src/images/yubikey.jpg differ diff --git a/apps/web/src/images/yubikey.webp b/apps/web/src/images/yubikey.webp new file mode 100644 index 0000000000..8d39087682 Binary files /dev/null and b/apps/web/src/images/yubikey.webp differ diff --git a/apps/web/src/index.html b/apps/web/src/index.html new file mode 100644 index 0000000000..63d4e72c09 --- /dev/null +++ b/apps/web/src/index.html @@ -0,0 +1,32 @@ + + + + + + + + Bitwarden Web Vault + + + + + + + + + +
+
+ +

+ +

+
+
+
+ + diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json new file mode 100644 index 0000000000..8b083155e1 --- /dev/null +++ b/apps/web/src/locales/af/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Webkluis", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Welke tipe item is dit?" + }, + "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" + }, + "newPassword": { + "message": "Nuwe wagwoord" + }, + "passphrase": { + "message": "Wagfrase" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Pasgemaakte velde" + }, + "cardholderName": { + "message": "Kaarthouernaam" + }, + "number": { + "message": "Nommer" + }, + "brand": { + "message": "Handelsmerk" + }, + "expiration": { + "message": "Vervaldatum" + }, + "securityCode": { + "message": "Security Code (CVV)" + }, + "identityName": { + "message": "Identiteitnaam" + }, + "company": { + "message": "Maatskappy" + }, + "ssn": { + "message": "Identiteitsnommer" + }, + "passportNumber": { + "message": "Paspoortnommer" + }, + "licenseNumber": { + "message": "Lisensienommer" + }, + "email": { + "message": "E-pos" + }, + "phone": { + "message": "Telefoon" + }, + "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" + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Mnr." + }, + "mrs": { + "message": "Mev." + }, + "ms": { + "message": "Mej." + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Vervalmaand" + }, + "expirationYear": { + "message": "Vervaljaar" + }, + "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": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Verwyder" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "Geen vouer", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Voeg vouer toe" + }, + "editFolder": { + "message": "Wysig vouer" + }, + "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." + }, + "never": { + "message": "Nooit" + }, + "toggleVisibility": { + "message": "Tokkel sigbaarheid" + }, + "toggleCollapse": { + "message": "Tokkel invou", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Genereer Wagwoord" + }, + "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." + }, + "save": { + "message": "Bewaar" + }, + "cancel": { + "message": "Kanselleer" + }, + "canceled": { + "message": "Gekanselleer" + }, + "close": { + "message": "Sluit" + }, + "delete": { + "message": "Skrap" + }, + "favorite": { + "message": "Gunsteling" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Wysig" + }, + "searchCollection": { + "message": "Deursoek versameling" + }, + "searchFolder": { + "message": "Deursoek vouer" + }, + "searchFavorites": { + "message": "Deursoek gunstelinge" + }, + "searchType": { + "message": "Deursoek tipe", + "description": "Search item type" + }, + "searchVault": { + "message": "Deursoek kluis" + }, + "allItems": { + "message": "Alle items" + }, + "favorites": { + "message": "Gunstelinge" + }, + "types": { + "message": "Tipes" + }, + "typeLogin": { + "message": "Aantekening" + }, + "typeCard": { + "message": "Kaart" + }, + "typeIdentity": { + "message": "Identiteit" + }, + "typeSecureNote": { + "message": "Beveiligde nota" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Vouers" + }, + "collections": { + "message": "Versamelings" + }, + "firstName": { + "message": "Voornaam" + }, + "middleName": { + "message": "Middelnaam" + }, + "lastName": { + "message": "Van" + }, + "fullName": { + "message": "Full Name" + }, + "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" + }, + "shared": { + "message": "Gedeel" + }, + "attachments": { + "message": "Aanhegsels" + }, + "select": { + "message": "Kies" + }, + "addItem": { + "message": "Voeg item toe" + }, + "editItem": { + "message": "Wysig item" + }, + "viewItem": { + "message": "Bekyk item" + }, + "ex": { + "message": "bv.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Ander" + }, + "share": { + "message": "Deel" + }, + "moveToOrganization": { + "message": "Skuif na organisasie" + }, + "valueCopied": { + "message": "$VALUE$ gekopieer", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopieer waarde", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopieer wagwoord", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopieer gebruikersnaam", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopieer nommer", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopieer sekureiteitskode", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopieer URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My kluis" + }, + "vault": { + "message": "Kluis" + }, + "moveSelectedToOrg": { + "message": "Skuif seleksie na organisasie" + }, + "deleteSelected": { + "message": "Skrap seleksie" + }, + "moveSelected": { + "message": "Skuif seleksie" + }, + "selectAll": { + "message": "Kies alles" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Lanseer" + }, + "newAttachment": { + "message": "Voeg nuwe aanhegsel toe" + }, + "deletedAttachment": { + "message": "Skrap 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": "Maksimum lêergrootte is 500 MB." + }, + "updateKey": { + "message": "U kan eers hierdie funksie gebruik wanneer u u enkripsiesleutel bygewerk het." + }, + "addedItem": { + "message": "Toegevoegde item" + }, + "editedItem": { + "message": "Gewysigde item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ geskuif na $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Gekose items is na $ORGNAME$ geskuif", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Skrap item" + }, + "deleteFolder": { + "message": "Skrap vouer" + }, + "deleteAttachment": { + "message": "Skrap aanhegsel" + }, + "deleteItemConfirmation": { + "message": "Wil u dit regtig na die asblik stuur?" + }, + "deletedItem": { + "message": "Item na asblik gestuur" + }, + "deletedItems": { + "message": "Items na asblik gestuur" + }, + "movedItems": { + "message": "Geskuifde items" + }, + "overwritePasswordConfirmation": { + "message": "Is u seker u wil die huidige wagwoord oorskryf?" + }, + "editedFolder": { + "message": "Gewysigde vouer" + }, + "addedFolder": { + "message": "Toegevoegde vouer" + }, + "deleteFolderConfirmation": { + "message": "Is u seker u wil hierdie vouer skrap?" + }, + "deletedFolder": { + "message": "Geskrapte vouer" + }, + "loggedOut": { + "message": "Uitgeteken" + }, + "loginExpired": { + "message": "U aantekensessie het verstryk." + }, + "logOutConfirmation": { + "message": "Is u seker u wil uitteken?" + }, + "logOut": { + "message": "Teken uit" + }, + "ok": { + "message": "Goed" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nee" + }, + "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" + }, + "emailAddressDesc": { + "message": "U gaan u e-posadres gebruik vir aantekening." + }, + "yourName": { + "message": "U naam" + }, + "yourNameDesc": { + "message": "Wat moet ons u noem?" + }, + "masterPass": { + "message": "Hoofwagwoord" + }, + "masterPassDesc": { + "message": "Die hoofwagwoord is die wagwoord wat u gaan gebruik vir toegang tot u kluis. Dit is baie belangrik dat u u hoofwagwoord onthou. Daar is geen manier om dit terug te kry ingeval u dit vergeet het nie." + }, + "masterPassHintDesc": { + "message": "’n Hoofwagwoordwenk kan u help om u wagwoord te onthou, sou u dit vergeet." + }, + "reTypeMasterPass": { + "message": "Voer weer hoofwagwoord in" + }, + "masterPassHint": { + "message": "Hoofwagwoordwenk (opsioneel)" + }, + "masterPassHintLabel": { + "message": "Hoofwagwoordwenk" + }, + "settings": { + "message": "Instellings" + }, + "passwordHint": { + "message": "Wagwoordwenk" + }, + "enterEmailToGetHint": { + "message": "Voer u rekening-e-posadres in om u hoofwagwoordwenk te kry." + }, + "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." + }, + "emailAddress": { + "message": "E-posadres" + }, + "yourVaultIsLocked": { + "message": "U kluis is vergrendel. Verifieer u hoofwagwoord om voort te gaan." + }, + "unlock": { + "message": "Ontgrendel" + }, + "loggedInAsEmailOn": { + "message": "Aangeteken as $EMAIL$ by $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ongeldige hoofwagwoord" + }, + "lockNow": { + "message": "Vergrendel nou" + }, + "noItemsInList": { + "message": "Daar is geen items om te lys nie." + }, + "noCollectionsInList": { + "message": "Daar is geen versamelings om te lys nie." + }, + "noGroupsInList": { + "message": "Daar is geen groepe om te lys nie." + }, + "noUsersInList": { + "message": "Daar is geen gebruikers om te lys nie." + }, + "noEventsInList": { + "message": "Daar is geen gebeure om te lys nie." + }, + "newOrganization": { + "message": "Nuwe organisasie" + }, + "noOrganizationsList": { + "message": "U behoort aan geen organisasies nie. Organisasies laat u toe om items op beveiligde wyse met ander gebruikers te deel." + }, + "versionNumber": { + "message": "Weergawe $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "Verification email sent to $EMAIL$.", + "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": "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." + }, + "loginUnavailable": { + "message": "Aantekening onbeskikbaar" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + }, + "noTwoStepProviders2": { + "message": "Gebruik asb. ’n ondersteunde webblaaier (soos Chrome) en/of bykomende verskaffers wat beter oor webblaaiers ondersteun word (soos ’n waarmerktoep)." + }, + "twoStepOptions": { + "message": "Opsies vir tweestapaantekening" + }, + "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": "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 Security Key" + }, + "yubiKeyDesc": { + "message": "Gebruik ’n YubiKey vir toegang tot u rekening. Werk met YubiKey reeks 4, reeks 5 en NEO-toestelle." + }, + "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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "E-pos" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Gaan voort" + }, + "organization": { + "message": "Organisasie" + }, + "organizations": { + "message": "Organisasies" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Kies ’n organisasie waarheen u hierdie items wil skuif. Deur te skuif kry die organisasie die einaarskap van die items. U is dan nie meer die direkte eienaar van die items wanneer dit geskuif is nie." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "U het $COUNT$ item(s) gekies om te skrap. Is u seker u wil al hierdie items skrap?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Kies ’n vouer waarheen u die $COUNT$ gekose item(s) heen wil skuif.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "U het $COUNT$ item(s) gekies. $MOVEABLE_COUNT$ item(s) kan na ’n organisasie geskuif word, $NONMOVEABLE_COUNT$ kan nie.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Bevestigingskode (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopieer bevestigingskode" + }, + "warning": { + "message": "Waarskuwing" + }, + "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." + }, + "export": { + "message": "Uitstuur" + }, + "exportVault": { + "message": "Stuur kluis uit" + }, + "fileFormat": { + "message": "Lêerformaat" + }, + "exportSuccess": { + "message": "U kluisdata is uitgestuur." + }, + "passwordGenerator": { + "message": "Wagwoordgenereerder" + }, + "minComplexityScore": { + "message": "Minimum ingewikkeldheidstelling" + }, + "minNumbers": { + "message": "Min. aantal syfers" + }, + "minSpecial": { + "message": "Min. aantal spesiaal", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Vermy dubbelsinnige karakters" + }, + "regeneratePassword": { + "message": "Hergenereer wagwoord" + }, + "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" + }, + "passwordHistory": { + "message": "Wagwoordgeskiedenis" + }, + "noPasswordsInList": { + "message": "Daar is geen wagwoorde om te lys nie." + }, + "clear": { + "message": "Wis", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Rekening bygewerk" + }, + "changeEmail": { + "message": "Verander e-pos" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Nuwe e-pos" + }, + "code": { + "message": "Kode" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "E-pos is verander" + }, + "logBackIn": { + "message": "Teken asb. weer aan." + }, + "logBackInOthersToo": { + "message": "Teken asb. weer aan. Indien u ander Bitwarden-toepassings gebruik, teken daarop ook weer uit en aan." + }, + "changeMasterPassword": { + "message": "Verander hoofwagwoord" + }, + "masterPasswordChanged": { + "message": "Hoofwagwoord is verander" + }, + "currentMasterPass": { + "message": "Huidige hoofwagwoord" + }, + "newMasterPass": { + "message": "Nuwe hoofwagwoord" + }, + "confirmNewMasterPass": { + "message": "Bevestig nuwe hoofwagwoord" + }, + "encKeySettings": { + "message": "Enkripsiesleutelinstellings" + }, + "kdfAlgorithm": { + "message": "KDF-algoritme" + }, + "kdfIterations": { + "message": "KDF-iteraties" + }, + "kdfIterationsDesc": { + "message": "Hoër KDF-iteraties beskerm u hoofwagwoord teen brutekragaanvalle. Ons beveel ’n waarde van $VALUE$ of meer aan.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Verander KDF" + }, + "encKeySettingsChanged": { + "message": "Enkripsiesleutelinstellings is verander" + }, + "dangerZone": { + "message": "Gevaarsone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Skrap rekening" + }, + "deleteAccountDesc": { + "message": "Gaan hieronder voort om u rekening en alle bybehorende data te skrap." + }, + "deleteAccountWarning": { + "message": "Skrap van u rekening is permanent. Dit kan nie ontdaan word nie." + }, + "accountDeleted": { + "message": "Rekening geskrap" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My rekening" + }, + "tools": { + "message": "Nutsmiddels" + }, + "importData": { + "message": "Voer data in" + }, + "importError": { + "message": "Invoerfout" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Niks is ingevoer nie." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Kies die invoerlêer" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "Instruksies vir $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opsies" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Opsies bygewerk" + }, + "language": { + "message": "Taal" + }, + "languageDesc": { + "message": "Verander die taal wat deur die webkluis gebruik word." + }, + "disableIcons": { + "message": "Deaktiveer webwerfikone" + }, + "disableIconsDesc": { + "message": "Webwerfikone verskaf ’n herkenbare beeld langs elke aantekenitem in u kluis." + }, + "enableGravatars": { + "message": "Aktiveer Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Verstek" + }, + "domainRules": { + "message": "Domeinreëls" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Sluit uit" + }, + "include": { + "message": "Sluit in" + }, + "customize": { + "message": "Pas aan" + }, + "newCustomDomain": { + "message": "Nuwe passgemaakte domein" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Pasgemaakte domein $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domeine bygewerk" + }, + "twoStepLogin": { + "message": "Tweestapaantekening" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Vereis tweestapsaantekening vir die gebruikers van u organisasie deur aanbieders op organisatievlak in te stel." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "Bekyk terugstelkode" + }, + "providers": { + "message": "Aanbieders", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Aktiveer" + }, + "enabled": { + "message": "Geaktiveer" + }, + "premium": { + "message": "Premie", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premie-lidmaatskap" + }, + "premiumRequired": { + "message": "Premie word vereis" + }, + "premiumRequiredDesc": { + "message": "’n Premie-lidmaatskap is nodig om hierdie funksie te gebruik." + }, + "youHavePremiumAccess": { + "message": "U het premie-toegang" + }, + "alreadyPremiumFromOrg": { + "message": "U het reeds toegang tot Premie-funksies d.m.v. ’n organisasie waarvan u lid is." + }, + "manage": { + "message": "Bestuur" + }, + "disable": { + "message": "Deaktiveer" + }, + "twoStepLoginProviderEnabled": { + "message": "Hierdie tweestapaantekenaanbieder is vir u rekening geaktiveer." + }, + "twoStepLoginAuthDesc": { + "message": "Voer u hoofwagwoord in om tweestapaantekeninstellings te wysig." + }, + "twoStepAuthenticatorDesc": { + "message": "Volg hierdie stappe om tweestapaantekening met ’n waarmerktoep op te stel:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Laai ’n tweestapwaarmerktoep af" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS-toestelle" + }, + "androidDevices": { + "message": "Android-toestelle" + }, + "windowsDevices": { + "message": "Windows-toestelle" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Skandeer hierdie QR-kode met u waarmerktoep" + }, + "key": { + "message": "Sleutel" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Bewaar die vorm." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a USB port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F-sleutel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn-sleutel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC-ondersteuning" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Een van my sleutels ondersteun NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Indien een van u YubiKeys NFC ondersteun (soos ’n YubiKey NEO) dan word u op ’n mobiele toestel met NFC gevra om dit te gebruik." + }, + "yubikeysUpdated": { + "message": "YubiKeys bygewerk" + }, + "disableAllKeys": { + "message": "Deaktiveer alle sleutels" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integrasiesleutel" + }, + "twoFactorDuoSecretKey": { + "message": "Geheime sleutel" + }, + "twoFactorDuoApiHostname": { + "message": "API-gasheernaam" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Stuur e-pos" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Is u seker u wil hierdie sekuriteitsleutel verwyder?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Lees sleutel" + }, + "keyCompromised": { + "message": "Sleutel is blootgestel." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Bewaar die vorm." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Druk kode af", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Verslae" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instruksies" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Blootgestelde wagwoorde gevind" + }, + "exposedPasswordsFoundDesc": { + "message": "Ons het $COUNT$ wagwoorde in u kluis gevind wat in databreuke blootgestel is. U behoort dit te verander en ’n nuwe wagwoord te gebruik.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "$COUNT$ keer blootgestel", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Swak wagwoorde gevind" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Geen items in u kluis het swak wagwoorde nie." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Hergebruikte wagwoorde gevind" + }, + "reusedPasswordsFoundDesc": { + "message": "Ons het $COUNT$ wagwoorde in u kluis gewind wat hergebruik word. U behoort dit na ’n unieke waarde te verander.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Geen aantekeninge in u kluis het wagwoorde wat hergebruik is nie." + }, + "reusedXTimes": { + "message": "$COUNT$ keer hergebruik", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Databreukverslag" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Goeie nuus", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Webwerf" + }, + "affectedUsers": { + "message": "Gebruikers geraak" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breuk gerapporteer" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Fakturering" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Rekeningbalans", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Bedrag", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Kry Premie", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "U het na premie opgegradeer." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GG geënkripteerde berging vir lêeraanhegsels." + }, + "premiumSignUpTwoStep": { + "message": "Bykomende tweestapaantekenopsies soos YubiKey, FIDO U2F en Duo." + }, + "premiumSignUpEmergency": { + "message": "Noodtoegang" + }, + "premiumSignUpReports": { + "message": "Wagwoordhigiëne, rekeningwelstand en databreukverslae om u kluis veilig te hou." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Klantediens met hoë prioriteit." + }, + "premiumSignUpFuture": { + "message": "Alle toekomstige premie-funksies. Binnekort meer!" + }, + "premiumPrice": { + "message": "Alles vir slegs $PRICE$ /jaar!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Toevoegings" + }, + "premiumAccess": { + "message": "Premie-toegang" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Bykomende berging (GB)" + }, + "additionalStorageGbDesc": { + "message": "# in bykomende GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Opsomming" + }, + "total": { + "message": "Totaal" + }, + "year": { + "message": "jaar" + }, + "month": { + "message": "maand" + }, + "monthAbbr": { + "message": "md.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Betaalinligting" + }, + "billingInformation": { + "message": "Faktureringsinligting" + }, + "creditCard": { + "message": "Kredietkaart" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Kanselleer Intekening" + }, + "subscriptionCanceled": { + "message": "Die intekening is gekanselleer." + }, + "pendingCancellation": { + "message": "Hangende kansellasie" + }, + "subscriptionPendingCanceled": { + "message": "Die intekening is gemerk vir kansellasie aan die einde van die huidige faktureringstydperk." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "Die intekening is gekanselleer." + }, + "neverExpires": { + "message": "Verval nooit" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Laai lisensie af" + }, + "updateLicense": { + "message": "Werk lisensie by" + }, + "updatedLicense": { + "message": "Lisensie bygewerk" + }, + "manageSubscription": { + "message": "Bestuur intekening" + }, + "storage": { + "message": "Berging" + }, + "addStorage": { + "message": "Voeg berging toe" + }, + "removeStorage": { + "message": "Verwyder berging" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Betaalmetode" + }, + "noPaymentMethod": { + "message": "Geen betaalmetode op lêer." + }, + "addPaymentMethod": { + "message": "Voeg betaalmetode toe" + }, + "changePaymentMethod": { + "message": "Verander betaalmetode" + }, + "invoices": { + "message": "Fakture" + }, + "noInvoices": { + "message": "Geen fakture." + }, + "paid": { + "message": "Betaal", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Nie betaal", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transaksies", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Geen transaksies." + }, + "chargeNoun": { + "message": "Koste", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Terugbetaling", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Betalingsmetode is bygewerk." + }, + "purchasePremium": { + "message": "Koop Premie" + }, + "licenseFile": { + "message": "Lisensielêer" + }, + "licenseFileDesc": { + "message": "U lisensielêer sal iets soos $FILE_NAME$ genoem wees", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premise hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "U rekening se e-posadres moet bevestig word." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "Algemene Inligting" + }, + "organizationName": { + "message": "Organisasienaam" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Besigheidnaam" + }, + "chooseYourPlan": { + "message": "Kies U Plan" + }, + "users": { + "message": "Gebruikers" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Bykomende gebruikersplekke" + }, + "userSeatsDesc": { + "message": "# gebruikersplekke" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Gesinne" + }, + "planDescFamilies": { + "message": "Vir persoonlike gebruik om met vriende en familie te deel." + }, + "planNameTeams": { + "message": "Spanne" + }, + "planDescTeams": { + "message": "Vir sake- en ander spanorganisasies." + }, + "planNameEnterprise": { + "message": "Onderneming" + }, + "planDescEnterprise": { + "message": "Vir sake- en ander groot organisasies." + }, + "freeForever": { + "message": "Altyd Gratis" + }, + "includesXUsers": { + "message": "sluit $COUNT$ gebruikers in", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Bykomende Gebruikers" + }, + "costPerUser": { + "message": "$COST$ per gebruiker", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Beperk tot $COUNT$ gebruikers (insluitend u)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Beperk tot $COUNT$ verzamelings", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Voeg toe en deel met tot $COUNT$ gebruikers", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Voeg toe en deel met onbeperkte gebruikers" + }, + "createUnlimitedCollections": { + "message": "Skep onbeperkte versamelings" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Klantediens met hoë prioriteit" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Maandeliks" + }, + "annually": { + "message": "Jaarliks" + }, + "basePrice": { + "message": "Basisprys" + }, + "organizationCreated": { + "message": "Organisasie Geskep" + }, + "organizationReadyToGo": { + "message": "U nuwe organisasie is gereed vir gebruik!" + }, + "organizationUpgraded": { + "message": "U organisasie is opgegradeer." + }, + "leave": { + "message": "Verlaat" + }, + "leaveOrganizationConfirmation": { + "message": "Is u seker u wil hierdie organisasie verlaat?" + }, + "leftOrganization": { + "message": "U het die organisasie verlaat." + }, + "defaultCollection": { + "message": "Verstekversameling" + }, + "getHelp": { + "message": "Kry Hulp" + }, + "getApps": { + "message": "Kry die Toeps" + }, + "loggedInAs": { + "message": "Aangeteken as" + }, + "eventLogs": { + "message": "Gebeurtenislogboek" + }, + "people": { + "message": "Mense" + }, + "policies": { + "message": "Beleide" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Wysig Beleid" + }, + "groups": { + "message": "Groepe" + }, + "newGroup": { + "message": "Nuwe Groep" + }, + "addGroup": { + "message": "Voeg Groep Toe" + }, + "editGroup": { + "message": "Wysig Groep" + }, + "deleteGroupConfirmation": { + "message": "Is u seker u wil hierdie groep skrap?" + }, + "removeUserConfirmation": { + "message": "Is u seker u wil hierdie gebruiker verwyder?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "Eksterne ID" + }, + "externalIdDesc": { + "message": "U kan die eksterne ID as verwysing gebruik of om hierdie hulpbron aan ’n eksterne stelsel soos ’n gebruikersgids te koppel." + }, + "accessControl": { + "message": "Toegangbeheer" + }, + "groupAccessAllItems": { + "message": "Hierdie groep het toegang tot alle items en kan dit wysig." + }, + "groupAccessSelectedCollections": { + "message": "Hierdie groep het slegs toegang tot die gekose versamelings." + }, + "readOnly": { + "message": "Leesalleen" + }, + "newCollection": { + "message": "Nuwe Versameling" + }, + "addCollection": { + "message": "Voeg Versameling Toe" + }, + "editCollection": { + "message": "Wysig Versameling" + }, + "deleteCollectionConfirmation": { + "message": "Is u seker u wil hierdie versameling skrap?" + }, + "editUser": { + "message": "Wysig Gebruiker" + }, + "inviteUser": { + "message": "Nooi Gebruiker Uit" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "Hierdie gebruiker het toegang tot alle items en kan dit wysig." + }, + "userAccessSelectedCollections": { + "message": "Hierdie gebruiker het slegs toegang tot die gekose versamelings." + }, + "search": { + "message": "Soek" + }, + "invited": { + "message": "Genooi" + }, + "accepted": { + "message": "Aanvaar" + }, + "confirmed": { + "message": "Bevestig" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Eienaar" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "Gebruiker" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Bestuurder" + }, + "managerDesc": { + "message": "Bestuurders bestuur en het toegang tot toegewysde versamelings in u organisasie." + }, + "all": { + "message": "Alle" + }, + "refresh": { + "message": "Verfris" + }, + "timestamp": { + "message": "Tydstempel" + }, + "event": { + "message": "Gebeurtenis" + }, + "unknown": { + "message": "Onbekend" + }, + "loadMore": { + "message": "Laai Meer" + }, + "mobile": { + "message": "Mobiel", + "description": "Mobile app" + }, + "extension": { + "message": "Uitbreiding", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Werkskerm", + "description": "Desktop app" + }, + "webVault": { + "message": "Webkluis" + }, + "loggedIn": { + "message": "Aangeteken." + }, + "changedPassword": { + "message": "Rekeningwagwoord is verander." + }, + "enabledUpdated2fa": { + "message": "Tweestapaantekening geaktiveer/bygewerk." + }, + "disabled2fa": { + "message": "Tweestapaantekening gedeaktiveer." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Kluis uitgestuur." + }, + "exportedOrganizationVault": { + "message": "Organisasiekluis uitgestuur." + }, + "editedOrgSettings": { + "message": "Organisasie-instellings gewysig." + }, + "createdItemId": { + "message": "Item $ID$ geskep.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Item $ID$ gewysig.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Item $ID$ na asblik gestuur.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Item $ID$ gekyk.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Het wagwoord vir item $ID$ bekyk.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Het versteekte veld vir item $ID$ bekyk.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Het sekerheidskode vir item $ID$ bekyk.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Het wagwoord vir item $ID$ gekopieer.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Het versteekte veld vir item $ID$ gekopieer.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Het sekerheidskode vir item $ID$ gekopieer.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Item $ID$ outomaties ingevul.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Versameling $ID$ geskep.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Versameling $ID$ gewysig.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Versameling $ID$ geskrap.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Beleid $ID$ gewysig.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Groep $ID$ geskep.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Groep $ID$ gewysig.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Groep $ID$ geskrap.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Gebruiker $ID$ verwyder.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Het aanhegsel vir item $ID$ geskep.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Het aanhegsel vir item $ID$ geskrap.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Het aanhegsel vir item $ID$ gewysig.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Gebruiker $ID$ genooi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Gebruiker $ID$ is bevestig.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Gebruiker $ID$ gewysig.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Groepe vir gebruiker $ID$ gewysig.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Toestel" + }, + "view": { + "message": "Bekyk" + }, + "invalidDateRange": { + "message": "Ongeldige datumbereik." + }, + "errorOccurred": { + "message": "’n Fout het voorgekom." + }, + "userAccess": { + "message": "Gebruikertoegang" + }, + "userType": { + "message": "Gebruikertipe" + }, + "groupAccess": { + "message": "Groeptoegang" + }, + "groupAccessUserDesc": { + "message": "Wysig die groepe waaraan hierdie gebruiker behoort." + }, + "invitedUsers": { + "message": "Gebruiker(s) genooi." + }, + "resendInvitation": { + "message": "Stuur weer uitnodiging" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ is weer uitgenooi.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Bevestig" + }, + "confirmUser": { + "message": "Bevestig Gebruiker" + }, + "hasBeenConfirmed": { + "message": "$USER$ is bevestig.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Bevestig Gebruikers" + }, + "usersNeedConfirmed": { + "message": "U het gebruikers wat die uitnodiging aanvaar het, maar nog bevestig moet word. Gebruikers sal nie toegang tot die organisasie hê tot hulle bevestig is nie." + }, + "startDate": { + "message": "Begindatum" + }, + "endDate": { + "message": "Einddatum" + }, + "verifyEmail": { + "message": "Bevestig e-pos" + }, + "verifyEmailDesc": { + "message": "Bevestig u rekening se e-posadres om toegang tot alle funksies te ontgrendel." + }, + "verifyEmailFirst": { + "message": "U rekening se e-posadres moet eers bevestig word." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "U e-pos is bevestig." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Vereis e-posbevestiging" + }, + "emailVerificationRequiredDesc": { + "message": "U moet u e-pos bevestig om die funksie te gebruik." + }, + "updateBrowser": { + "message": "Werk Blaaier By" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Uitnodiging is Aanvaar" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Kan nie uitnodiging aanvaar nie. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Tweestapaantekenaanbieder vir u rekening is gedeaktiveer." + }, + "learnMore": { + "message": "Leer meer" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organisasie" + }, + "deleteOrganization": { + "message": "Skrap Organisasie" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisasie Geskrap" + }, + "organizationDeletedDesc": { + "message": "Die organisasie en alle verwante data is geskrap." + }, + "organizationUpdated": { + "message": "Organisasie bygewerk" + }, + "taxInformation": { + "message": "Belastinginligting" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Pakket", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Verander Pakket", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan be providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktuur #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Bekyk Faktuur" + }, + "downloadInvoice": { + "message": "Laai Faktuur Af" + }, + "verifyBankAccount": { + "message": "Bevestig Bankrekening" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bankrekening is bevestig." + }, + "bankAccount": { + "message": "Bankrekening" + }, + "amountX": { + "message": "Bedrag $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Rekeningnommer" + }, + "accountHolderName": { + "message": "Rekeninghouernaam" + }, + "bankAccountType": { + "message": "Rekeningtipe" + }, + "bankAccountTypeCompany": { + "message": "Maatskappy (Saaklik)" + }, + "bankAccountTypeIndividual": { + "message": "Individueel (Persoonlik)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Werk sleutel by" + }, + "updateEncryptionKey": { + "message": "Werk enkripsiesleutel by" + }, + "updateEncryptionKeyShortDesc": { + "message": "U gebruik tans ’n verouderde enkripsieskema." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Enige geënkripteerde uitsture wat u bewaar het word ook ongeldig." + }, + "subscription": { + "message": "Intekening" + }, + "loading": { + "message": "Laai tans" + }, + "upgrade": { + "message": "Gradeer Op" + }, + "upgradeOrganization": { + "message": "Gradeer Organisasie Op" + }, + "upgradeOrganizationDesc": { + "message": "Hierdie funksie is nie beskikbaar vir gratis organisasies nie. Kry ’n betaalde pakket om nog funksies te ontgrendel." + }, + "createOrganizationStep1": { + "message": "Skep Organisasie: Stap 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "U moet eers ’n gratis persoonlike rekening skep voor u u organisasie skep." + }, + "refunded": { + "message": "Terugbetaal" + }, + "nothingSelected": { + "message": "U het niks gekies nie." + }, + "acceptPolicies": { + "message": "Deur hierdie kassie af te merk stem u in tot die volgende:" + }, + "acceptPoliciesError": { + "message": "Gebruiksvoorwaardes en privaatheidsbeleid is nie erken nie." + }, + "termsOfService": { + "message": "Gebruiksvoorwaardes" + }, + "privacyPolicy": { + "message": "Privaatheidsbeleid" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Kluis-uittel" + }, + "vaultTimeoutDesc": { + "message": "Kies wanneer u kluis sal uittel en die gekose aksie sal uitvoer." + }, + "oneMinute": { + "message": "1 minuut" + }, + "fiveMinutes": { + "message": "5 minute" + }, + "fifteenMinutes": { + "message": "15 minute" + }, + "thirtyMinutes": { + "message": "30 minute" + }, + "oneHour": { + "message": "1 uur" + }, + "fourHours": { + "message": "4 uur" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Bygewerk", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Wagwoord Bygewerk", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisasie is gedeaktiveer." + }, + "licenseIsExpired": { + "message": "Lisensie het verstryk." + }, + "updatedUsers": { + "message": "Bygewerkte gebruikers" + }, + "selected": { + "message": "Gekose" + }, + "ownership": { + "message": "Eienaarskap" + }, + "whoOwnsThisItem": { + "message": "Wie besit hierdie item?" + }, + "strong": { + "message": "Sterk", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Goed", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Swak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Baie Swak", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Swak Hoofwagwoord" + }, + "weakMasterPasswordDesc": { + "message": "U gekose hoofwagwoord is te swak. U behoort ’n sterk wagwoord (of ’n wagfrase) te gebruik om u Bitwarden-rekening behoorlik te beveilig. Is u seker u wil hierdie hoofwagwoord gebruik?" + }, + "rotateAccountEncKey": { + "message": "Roteer ook my rekening se enrkipsiesleutel" + }, + "rotateEncKeyTitle": { + "message": "Roteer Enkripsiesleutel" + }, + "rotateEncKeyConfirmation": { + "message": "Is u seker u wil u rekening se enkripsiesleutel roteer?" + }, + "attachmentsNeedFix": { + "message": "Hierdie item het ou lêeraanhegsels wat herstel moet word." + }, + "attachmentFixDesc": { + "message": "Dit is ’n ou lêeraanhegsel wat herstel moet word. Klik om meer uit te vind." + }, + "fix": { + "message": "Herstel", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Daar is ou lêeraanhegsels in u kluis wat herstel moet word alvorens u u rekening se enkripsiesleutel kan roteer." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Bevestig die gebruiker se vingerafdrukfrase alvorens voortgegaan word om die integriteit van u enkripsiesleutels te verseker.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Moenie weer vra om die vingerafdrukfrase te bevestig nie", + "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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-sleutel" + }, + "apiKeyDesc": { + "message": "U API-sleutel kan gebruik word om aan die Bitwarden openbare API te bevestig." + }, + "apiKeyRotateDesc": { + "message": "Rotasie van die API-sleutel sal die vorige sleutel ongeldig maak. U kan u API-sleutel roteer indien u dink die huidige sleutel is nie meer veilig is vir gebruik nie." + }, + "apiKeyWarning": { + "message": "U API-sleutel het volledige toegang tot die organisasie. Dit moet geheim bly." + }, + "userApiKeyDesc": { + "message": "U API-sleutel kan gebruik word om in die Bitwarden-CLI te bevestig." + }, + "userApiKeyWarning": { + "message": "U API-sleutel is ’n alternatiewe waarmerkmeganisme. Dit moet geheim gehou word." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Bekyk API-sleutel" + }, + "rotateApiKey": { + "message": "Roteer API-sleutel" + }, + "selectOneCollection": { + "message": "U moet ten minste een versameling kies." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "Toepgebonde Aankope" + }, + "cannotPerformInAppPurchase": { + "message": "U kan nie hierdie aksie uitvoer terwyl ’n toepgebonde aankoopmetode gebruik word nie." + }, + "manageSubscriptionFromStore": { + "message": "U moet u intekening bestuur vanuit die winkel waarin u toepgebonde aankoop gedoen is." + }, + "minLength": { + "message": "Minimum lengte" + }, + "clone": { + "message": "Kloon" + }, + "masterPassPolicyDesc": { + "message": "Stel minimum vereistes vir hoofwagwoordsterkte." + }, + "twoStepLoginPolicyDesc": { + "message": "Vereis tweestapaantekening op gebruikers se persoonlike rekeninge." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Stel minimum vereistes vir opstelling van wagwoordgenereerder." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Een of meer organisasiebeleide beïnvloed u genereerderinstellings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Aantal Woorde" + }, + "defaultType": { + "message": "Verstektipe" + }, + "userPreference": { + "message": "Gebruikersvoorkeure" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Deursoek Asblik" + }, + "permanentlyDelete": { + "message": "Skrap Permanent" + }, + "permanentlyDeleteSelected": { + "message": "Skrap Gekose Permanent" + }, + "permanentlyDeleteItem": { + "message": "Skrap Item Permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Is u seker u wil hierdie item permanent skrap?" + }, + "permanentlyDeletedItem": { + "message": "Permanent Geskrapte Item" + }, + "permanentlyDeletedItems": { + "message": "Permanent Geskrapte Items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "U het $COUNT$ item(s) gekies om permanent te skrap. Is u seker u wil al hierdie items permanent skrap?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanent Geskrapte Items $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Stel terug" + }, + "restoreSelected": { + "message": "Stel gekose terug" + }, + "restoreItem": { + "message": "Stel item terug" + }, + "restoredItem": { + "message": "Teruggestelde item" + }, + "restoredItems": { + "message": "Teruggestelde items" + }, + "restoreItemConfirmation": { + "message": "Is u seker u wil hierdie item terugstel?" + }, + "restoreItems": { + "message": "Stel items terug" + }, + "restoreSelectedItemsDesc": { + "message": "U het $COUNT$ item(s) gekies om terug te stel. Is u seker u wil al hierdie items terugstel?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Item $ID$ teruggestel.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Versteek wagwoorde" + }, + "countryPostalCodeRequiredDesc": { + "message": "Ons benodig hierdie inligting slegs om verkoopsbelasting te bereken en vir finansiële verslaggewing." + }, + "includeVAT": { + "message": "Sluit BTW-inligting in (opsioneel)" + }, + "taxIdNumber": { + "message": "BTW-nommer" + }, + "taxInfoUpdated": { + "message": "Belastinginligting bygewerk." + }, + "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." + }, + "identifier": { + "message": "Identifiseerder" + }, + "organizationIdentifier": { + "message": "Organisasie-identifiseerder" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Teken vinnig aan d.m.v. u organisasie se enkelaantekenportaal (SSO). Voer u organisasie se identifiseerder in om te begin." + }, + "enterpriseSingleSignOn": { + "message": "Onderneming-enkelaanteken" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Ondernemingsbeleide" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organisasie-identifiseerder word benodig." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Enkele organisasie" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "U huidige organisasie het ’n beleid wat u nie toelaat om deel te neem aan meer as een organisasie nie. Kontak u organisasie se beheerders of teken aan met’n ander Bitwarden-rekening." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Voorvereiste" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organisasie-eienaars en -administrateurs is vrygestel van die afdwing van hierdie beleid." + }, + "sendTypeFile": { + "message": "Lêer" + }, + "sendTypeText": { + "message": "Teks" + }, + "createSend": { + "message": "Skep nuwe Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Skrap Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Gedeaktiveer" + }, + "sendLink": { + "message": "Send-skakel", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopieer Send-skakel", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Verwyder wagwoord" + }, + "removedPassword": { + "message": "Wagwoord verwyder" + }, + "removePasswordConfirmation": { + "message": "Is u seker u wil die wagwoord verwyder?" + }, + "hideEmail": { + "message": "Versteek my e-posadres vir ontvangers." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Alle Sends" + }, + "maxAccessCountReached": { + "message": "Maks toegangsaantal bereik", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Word geskrap" + }, + "expired": { + "message": "Verstreke" + }, + "searchSends": { + "message": "Deursoek Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Hierdie Send is met ’n wagwoord beveilig. Voer die wagwoord hieronder in om woort te gaan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Laai lêer af" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Daar is geen Sends om te lys nie.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Noodtoegang" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "U is die eienaar van een of meer organisasies. Indien u toegang tot oorname aan ’n noodkontak gee, sal hulle na oorname al u toestemmings as eienaar kan gebruik." + }, + "trustedEmergencyContacts": { + "message": "Vertroude noodkontakte" + }, + "noTrustedContacts": { + "message": "U het nog geen noodkontakte toegevoeg nie, nooi ’n vertroude kontak uit om te begin." + }, + "addEmergencyContact": { + "message": "Voeg noodkontak toe" + }, + "designatedEmergencyContacts": { + "message": "Toegewys as noodkontak" + }, + "noGrantedAccess": { + "message": "U is nog deur niemand as noodkontak toegewys nie." + }, + "inviteEmergencyContact": { + "message": "Nooi noodkontak uit" + }, + "editEmergencyContact": { + "message": "Wysig noodkontak" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Noodtoegang geïnisieer" + }, + "emergencyAccessRecoveryApproved": { + "message": "Noodtoegang goedgekeur" + }, + "viewDesc": { + "message": "Kan alle items in u eie kluis bekyk." + }, + "takeover": { + "message": "Oorname" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wagtyd" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dae", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Genooide gebruiker." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Kan nie uitnodiging aanvaar nie. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Versoek toegang" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Keur goed" + }, + "reject": { + "message": "Keur af" + }, + "approveAccessConfirmation": { + "message": "Is u seker u wil noodtoegang goedkeur? Hiermee laat u $USER$ toe om u rekening te $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Noodtoegang goedgekeur." + }, + "emergencyRejected": { + "message": "Noodtoegang afgekeur." + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Persoonlike eienaarskap" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Deaktiveer Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send-opsies", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Stel opsies in vir die maak en wysig van Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Gewysigde beleid $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Pakketprys" + }, + "estimatedTax": { + "message": "Geraamde belasting" + }, + "custom": { + "message": "Pasgemaak" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Toestemmings" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Bestuur alle versamelings" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Bestuur toegekende versamelings" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Bestuur groepe" + }, + "managePolicies": { + "message": "Bestuur beleide" + }, + "manageSso": { + "message": "Bestuur SSO" + }, + "manageUsers": { + "message": "Bestuur gebruikers" + }, + "manageResetPassword": { + "message": "Bestuur wagwoordherstel" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "’n Organisasiebeleid beïnvloed u eienaarskapopsies." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Deaktiveer persoonlike eienaarskap vir organisasiegebruikers" + }, + "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." + }, + "sendNameDesc": { + "message": "’n Vriendelike naam om hierdie Send te beskryf.", + "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." + }, + "copySendLinkOnSave": { + "message": "Kopieer die skakel om hierdie Send te deel tydens bewaar na my knipbord." + }, + "sendLinkLabel": { + "message": "Send-skakel", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send verstuur gevoelige, tydelike inligting na ander op ’n maklike en veilige manier.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Leer meer oor", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Leer meer", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "sien", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "hoe dit werk", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "of", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "probeer dit nou", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "of", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "teken in", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "om dit vandag te probeer.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden-gebruiker $USER_IDENTIFIER$ het die volgende met u gedeel", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Die verskafte vervaldatum is ongeldig." + }, + "deletionDateIsInvalid": { + "message": "Die verskafte skrapdatum is ongeldig." + }, + "expirationDateAndTimeRequired": { + "message": "’n Vervaldatum en -tyd word vereis." + }, + "deletionDateAndTimeRequired": { + "message": "’n Skrapdatum en -tyd word vereis." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Waarmerk WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn word nie in hierdie blaaier ondersteun nie." + }, + "webAuthnSuccess": { + "message": "WebAuthn is suksesvol bevestig! U kan hierdie oortjie sluit." + }, + "hintEqualsPassword": { + "message": "U wagwoordwenk kan nie dieselfde as u wagwoord wees nie." + }, + "enrollPasswordReset": { + "message": "Skryf in vir wagwoordterugstel" + }, + "enrolledPasswordReset": { + "message": "Ingeskryf vir wagwoordterugstel" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Suksesvol ingeskryf!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "Gebruiker $ID$ het vir wagwoordterugstelbystand ingeskryf.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Herstel wagwoord" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "hierdie gebruiker" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Een of meer organisasiebeleide stel die volgende eise aan die hoofwagwoord:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Inskrywing stel organisasiebeheerders in staat om y hoofwagwoord te wysig. Is u seker u wil inskryf?" + }, + "resetPasswordPolicy": { + "message": "Bestuur wagwoordherstel" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Gebruikers in die organisasie sal self moet inskryf of moet outomaties ingeskryf word voor beheerders hul hoofwagwoord sal kan terugstel." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Outomatiese inskrywing" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Alle gebruikers sal outomaties in wagwoordterugstel ingeskryf word sodra hul uitnodiging aanvaar is; hulle sal nie kan onttrek nie." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Gebruikers wat reeds in die organisasie is sal nie terugwerkend vir wagwoordterugstel ingeskryf word nie. Hulle sal self moet inskryf voor beheerders hul hoofwagwoord kan terugstel." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Vereis dat nuwe gebruikers outomaties ingeskryf word" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items wat vir langer as 30 dae in die asblik was sal outomaties geskrap word." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items wat vir ’n wyle in die asblik was sal outomaties geskrap word." + }, + "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." + }, + "reinviteSelected": { + "message": "Stuur weer uitnodigings" + }, + "noSelectedUsersApplicable": { + "message": "Hierdie aktie is nie van toepassing op die gekose gebruikers nie." + }, + "removeUsersWarning": { + "message": "Is u seker u wil die volgende gebruikers verwyder? Die proses duur enkele sekondes en kan nie onderbreek of gekanselleer word nie." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Bevestig keuse" + }, + "bulkConfirmStatus": { + "message": "Grootmaataksie status" + }, + "bulkConfirmMessage": { + "message": "Suksesvol bevestig." + }, + "bulkReinviteMessage": { + "message": "Suksesvol heruitgenooi." + }, + "bulkRemovedMessage": { + "message": "Suksesvol verwyder" + }, + "bulkFilteredMessage": { + "message": "Uitgesluit, nie van toepassing vir hierdie aksie." + }, + "fingerprint": { + "message": "Vingerafdruk" + }, + "removeUsers": { + "message": "Verwyder gebruikers" + }, + "error": { + "message": "Fout" + }, + "resetPasswordManageUsers": { + "message": "Bestuur gebruikers moet geaktiveer wees met die Wagwoordherstel-toestemming" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json new file mode 100644 index 0000000000..60f21f11ff --- /dev/null +++ b/apps/web/src/locales/az/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ veb anbarı", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Bu elementin növü nədir?" + }, + "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" + }, + "newPassword": { + "message": "Yeni parol" + }, + "passphrase": { + "message": "Uzun ifadə" + }, + "notes": { + "message": "Qeydlər" + }, + "customFields": { + "message": "Özəl sahələr" + }, + "cardholderName": { + "message": "Kart sahibinin adı" + }, + "number": { + "message": "Nömrə" + }, + "brand": { + "message": "Brend" + }, + "expiration": { + "message": "Bitmə vaxtı" + }, + "securityCode": { + "message": "Təhlükəsizlik kodu (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Çıxart" + }, + "unassigned": { + "message": "Təyin edilməyən" + }, + "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" + }, + "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." + }, + "never": { + "message": "Heç vaxt" + }, + "toggleVisibility": { + "message": "Görünməni aç/bağla" + }, + "toggleCollapse": { + "message": "Yığcam etməni aç/bağla", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Parol yarat" + }, + "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." + }, + "save": { + "message": "Saxla" + }, + "cancel": { + "message": "İmtina" + }, + "canceled": { + "message": "Ləğv edildi" + }, + "close": { + "message": "Bağla" + }, + "delete": { + "message": "Sil" + }, + "favorite": { + "message": "Sevimli" + }, + "unfavorite": { + "message": "Sevimlilərdən çıxart" + }, + "edit": { + "message": "Düzəliş et" + }, + "searchCollection": { + "message": "Kolleksiya axtar" + }, + "searchFolder": { + "message": "Qovluq axtar" + }, + "searchFavorites": { + "message": "Sevimliləri axtar" + }, + "searchType": { + "message": "Axtarış növü", + "description": "Search item type" + }, + "searchVault": { + "message": "Anbarda axtar" + }, + "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" + }, + "typeLoginPlural": { + "message": "Girişlər" + }, + "typeCardPlural": { + "message": "Kartlar" + }, + "typeIdentityPlural": { + "message": "Kimliklər" + }, + "typeSecureNotePlural": { + "message": "Təhlükəsizlik qeydləri" + }, + "folders": { + "message": "Qovluqlar" + }, + "collections": { + "message": "Kolleksiyalar" + }, + "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ə" + }, + "shared": { + "message": "Paylaşılan" + }, + "attachments": { + "message": "Qoşmalar" + }, + "select": { + "message": "Seçin" + }, + "addItem": { + "message": "Element əlavə et" + }, + "editItem": { + "message": "Elementə düzəliş et" + }, + "viewItem": { + "message": "Elementə bax" + }, + "ex": { + "message": "məs.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Digər" + }, + "share": { + "message": "Paylaş" + }, + "moveToOrganization": { + "message": "Təşkilata daşı" + }, + "valueCopied": { + "message": "$VALUE$ kopyalandı", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Dəyəri kopyala", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Parolu kopyala", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "İstifadəçi adını kopyala", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "URI-ni kopyala", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Anbarım" + }, + "vault": { + "message": "Anbar" + }, + "moveSelectedToOrg": { + "message": "Seçiləni təşkilata daşı" + }, + "deleteSelected": { + "message": "Seçiləni sil" + }, + "moveSelected": { + "message": "Seçiləni daşı" + }, + "selectAll": { + "message": "Hamısını seç" + }, + "unselectAll": { + "message": "Heç birini seçmə" + }, + "launch": { + "message": "Başlat" + }, + "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." + }, + "addedItem": { + "message": "Element əlavə edildi" + }, + "editedItem": { + "message": "Elementə düzəliş edildi" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ $ORGNAME$ şirkətinə daşınıldı", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Seçilən elementlər $ORGNAME$ təşkilatına daşınıldı", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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" + }, + "deletedItems": { + "message": "Elementlər tullantı qutusuna göndərildi" + }, + "movedItems": { + "message": "Elementlər daşınıldı" + }, + "overwritePasswordConfirmation": { + "message": "Hazırkı parolun üzərinə yazmaq istədiyinizə əminsiniz?" + }, + "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" + }, + "loggedOut": { + "message": "Çıxış edildi" + }, + "loginExpired": { + "message": "Seansın müddəti bitdi." + }, + "logOutConfirmation": { + "message": "Çıxış etmək istədiyinizə əminsiniz?" + }, + "logOut": { + "message": "Çıxış" + }, + "ok": { + "message": "Oldu" + }, + "yes": { + "message": "Bəli" + }, + "no": { + "message": "Xeyr" + }, + "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" + }, + "emailAddressDesc": { + "message": "Giriş etmək üçün e-poçt ünvanınızı istifadə edəcəksiniz." + }, + "yourName": { + "message": "Adınız" + }, + "yourNameDesc": { + "message": "Sizi neçə çağıraq?" + }, + "masterPass": { + "message": "Ana parol" + }, + "masterPassDesc": { + "message": "Ana parol, anbarınıza müraciət etmək üçün istifadə edəcəyiniz şifrədir. 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 parolu xatırlamağınıza kömək edir." + }, + "reTypeMasterPass": { + "message": "Ana parolu yenidən yaz" + }, + "masterPassHint": { + "message": "Ana parol məsləhəti (ixtiyari)" + }, + "masterPassHintLabel": { + "message": "Ana parol məsləhəti" + }, + "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." + }, + "emailAddress": { + "message": "E-poçt ünvanı" + }, + "yourVaultIsLocked": { + "message": "Anbarınız kilidlənib. Davam etmək üçün ana parolunuzu təsdiqləyin." + }, + "unlock": { + "message": "Kilidi aç" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "İndi kilidlə" + }, + "noItemsInList": { + "message": "Siyahılanacaq heç bir element yoxdur." + }, + "noCollectionsInList": { + "message": "Siyahılanacaq heç bir kolleksiya yoxdur." + }, + "noGroupsInList": { + "message": "Sihayıda heç bir məhsul yoxdur." + }, + "noUsersInList": { + "message": "Siyahılanacaq heç bir element yoxdur." + }, + "noEventsInList": { + "message": "Siyahılanacaq heç bir element yoxdur." + }, + "newOrganization": { + "message": "Yeni təşkilat" + }, + "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." + }, + "versionNumber": { + "message": "Versiya $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 səyyah tərəfindən dəstəklənmir." + }, + "noTwoStepProviders2": { + "message": "Zəhmət olmasa (Chrome kimi) dəstəklənən bir veb səyyah istifadə edin və/və ya veb səyyahlara (kimlik təsdiqləyici tətbiq kimi) daha yaxşı dəstəklənən təchizatçılar əlavə edin." + }, + "twoStepOptions": { + "message": "İki mərhələli giriş seçimləri" + }, + "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 seriyası, 5 seriyası 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." + }, + "u2fDesc": { + "message": "Hesabınıza müraciət etmək üçün hər hansısa bir FIDO U2F fəallaşdırılan təhlükəsizlik açarı istifadə edin." + }, + "u2fTitle": { + "message": "FIDO U2F Təhlükəsizlik açarı" + }, + "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." + }, + "webAuthnMigrated": { + "message": "(FIDO-dan köçürüldü)" + }, + "emailTitle": { + "message": "E-poçt" + }, + "emailDesc": { + "message": "Təsdiqləmə kodları e-poçt ünvanınıza göndəriləcək." + }, + "continue": { + "message": "Davam" + }, + "organization": { + "message": "Təşkilat" + }, + "organizations": { + "message": "Təşkilatlar" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Bu elementləri 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 elementlərə birbaşa sahibliyiniz olmayacaq." + }, + "collectionsDesc": { + "message": "Bu elementin paylaşıldığı kolleksiyalara düzəliş edin. Yalnız bu kolleksiyalara müraciəti olan təşkilat istifadəçiləri bu elementi görə bilər." + }, + "deleteSelectedItemsDesc": { + "message": "Silmək üçün $COUNT$ element seçdiniz. Onların hamısını silmək istədiyinizə əminsiniz?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Seçdiyiniz $COUNT$ elementi daşımaq istədiyiniz qovluğu seçin.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "$COUNT$ element seçdiniz. $MOVEABLE_COUNT$ element bir təşkilata daşınıla bilər, $NONMOVEABLE_COUNT$ ədədi isə daşınıla bilməz.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Təsdiqləmə kodu (TOTP)" + }, + "copyVerificationCode": { + "message": "Təsdiqləmə kodunu kopyala" + }, + "warning": { + "message": "Xəbərdarlıq" + }, + "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." + }, + "export": { + "message": "İxrac et" + }, + "exportVault": { + "message": "Anbarı ixrac et" + }, + "fileFormat": { + "message": "Fayl formatı" + }, + "exportSuccess": { + "message": "Anbar verilənləriniz ixrac edildi." + }, + "passwordGenerator": { + "message": "Parol yaradıcı" + }, + "minComplexityScore": { + "message": "Minimum mürəkkəblik xalı" + }, + "minNumbers": { + "message": "Minimum rəqəm" + }, + "minSpecial": { + "message": "Minimum simvol", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Anlaşılmaz simvollardan çəkinin" + }, + "regeneratePassword": { + "message": "Parolu yenidən yarat" + }, + "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" + }, + "passwordHistory": { + "message": "Parol tarixçəsi" + }, + "noPasswordsInList": { + "message": "Siyahılanacaq heç bir parol yoxdur." + }, + "clear": { + "message": "Təmizlə", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Hesab yeniləndi" + }, + "changeEmail": { + "message": "E-poçtu dəyişdir" + }, + "changeEmailTwoFactorWarning": { + "message": "Davam etmək, hesabınızın e-poçt ünvanını dəyişdirəcəkdir. İki faktorlu kimlik təsdiqləmə üçün istifadə olunan e-poçt ünvanını dəyişdirmir. Bu e-poçt ünvanını iki addımlı giriş tənzimləmələrində dəyişdirə bilərsiniz." + }, + "newEmail": { + "message": "Yeni e-poçt" + }, + "code": { + "message": "Kod" + }, + "changeEmailDesc": { + "message": "$EMAIL$ ünvanına təsdiqləmə kodu olan e-poçt göndərdik. Zəhmət olmasa e-poçt ünvan dəyişikliyini tamamlamaq üçün göndərdiyimiz kodu aşağıda daxil edin.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Davam etsəniz, hazırkı seansınız bitəcək, təkrar giriş etməyiniz tələb olunacaq. Digər cihazlardakı aktiv seanslar, bir saata qədər aktiv qalmağa davam edə bilər." + }, + "emailChanged": { + "message": "E-poçt dəyişdirildi" + }, + "logBackIn": { + "message": "Zəhmət olmasa yenidən giriş edin." + }, + "logBackInOthersToo": { + "message": "Zəhmət olmasa yenidən giriş edin. Digər Bitwarden tətbiqlərini istifadə edirsinizsə, onlardan da çıxış edib təkrar giriş etməlisiniz." + }, + "changeMasterPassword": { + "message": "Ana parolu dəyişdir" + }, + "masterPasswordChanged": { + "message": "Ana parol dəyişdirildi" + }, + "currentMasterPass": { + "message": "Hazırkı ana parol" + }, + "newMasterPass": { + "message": "Yeni ana parol" + }, + "confirmNewMasterPass": { + "message": "Yeni ana parolu təsdiqlə" + }, + "encKeySettings": { + "message": "Şifrələmə açarı tənzimləmələri" + }, + "kdfAlgorithm": { + "message": "KDF Algoritmi" + }, + "kdfIterations": { + "message": "KDF iterasiyaları" + }, + "kdfIterationsDesc": { + "message": "Daha yüksək KDF itereasiyası, ana parolunuzun \"brute force\" hücumuna qarşı qorunmasına kömək edə bilər. $VALUE$ və ya daha yuxarı bir dəyəri tövsiyə edirik.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "KDF iterasiyalarınızı çox yüksək tənzimləmək, zəif prosessora malik cihazlarda \"Bitwarden\"ə giriş edərkən (və ya kilidi açarkən) aşağı performansa səbəb ola bilər. Dəyəri $INCREMENT$ artımları ilə artırmağınızı və daha sonra bütün cihazlarınızda test etməyinizi məsləhət görürük.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDF-i dəyişdir" + }, + "encKeySettingsChanged": { + "message": "Şifrələmə açar tənzimləmələri dəyişdirildi" + }, + "dangerZone": { + "message": "Təhlükəli zona" + }, + "dangerZoneDesc": { + "message": "Diqqətli olun, bu əməliyyatları geri qaytara bilməzsiniz!" + }, + "deauthorizeSessions": { + "message": "Seansların səlahiyyətlərini götür" + }, + "deauthorizeSessionsDesc": { + "message": "Hesabınıza başqa cihazdan giriş edildiyi ilə bağlı şübhələnirsiniz? Daha əvvəl istifadə etdiyiniz bütün cihazların və ya kompüterlərin səlahiyyətini götürmək üçün aşağıdan davam edin. Əvvəllər ictimai bir kompüter istifadə etmisinizsə və ya sizin olmayan bir cihazda səhvən parolunuzu saxlamısınızsa, bu təhlükəsizlik addımını məsləhət görürük. Bu addım həmçinin daha əvvəl xatırlanan iki mərhələli giriş seanslarını da təmizləyəcək." + }, + "deauthorizeSessionsWarning": { + "message": "Davam etsəniz, hazırkı seansınız bitəcək, təkrar giriş etməyiniz tələb olunacaq. Fəallaşdırılıbsa, iki mərhələli giriş üçün yenidən soruşulacaq. Digər cihazlardakı aktiv seanslar, bir saata qədər aktiv qalmağa davam edə bilər." + }, + "sessionsDeauthorized": { + "message": "Bütün seansların səlahiyyəti götürüldü" + }, + "purgeVault": { + "message": "Anbarı təmizlə" + }, + "purgedOrganizationVault": { + "message": "Təşkilat anbarı təmizləndi." + }, + "vaultAccessedByProvider": { + "message": "Təchizatçı tərəfindən müraciət edilən anbar." + }, + "purgeVaultDesc": { + "message": "Anbarınızdakı bütün element və qovluqları silmək üçün aşağıdan davam edin. Paylaşdığınız bir təşkilata aid olan elementlər silinməyəcək." + }, + "purgeOrgVaultDesc": { + "message": "Təşkilat anbarındakı bütün elementləri silmək üçün aşağıda davam edin." + }, + "purgeVaultWarning": { + "message": "Anbarınızı təmizləmək birdəfəlik prosesdir. Bu əməliyyatın geri dönüşü yoxdur." + }, + "vaultPurged": { + "message": "Anbarınız təmizləndi." + }, + "deleteAccount": { + "message": "Hesabı sil" + }, + "deleteAccountDesc": { + "message": "Hesabınızı və əlaqəli bütün verilənləri silmək üçün aşağıda davam edin." + }, + "deleteAccountWarning": { + "message": "Hesabınızı silmək birdəfəlik prosesdir. Bu əməliyyatın geri dönüşü yoxdur." + }, + "accountDeleted": { + "message": "Hesab silindi" + }, + "accountDeletedDesc": { + "message": "Hesabınız bağlandı və bütün əlaqəli verilənlər silindi." + }, + "myAccount": { + "message": "Hesabım" + }, + "tools": { + "message": "Alətlər" + }, + "importData": { + "message": "Verilənləri idxal et" + }, + "importError": { + "message": "İdxal xətası" + }, + "importErrorDesc": { + "message": "İdxal etməyə çalışdığınız verilənlərlə bağlı problem var. Zəhmət olmasa mənbə faylınızda siyahılanan xətaları həll edib yenidən sınayın." + }, + "importSuccess": { + "message": "Verilənlər anbarınıza uğurla idxal edildi." + }, + "importWarning": { + "message": "$ORGANIZATION$ təşkilatına verilənləri idxal edirsiniz. Verilənlərinizi bu təşkilatın üzvləri ilə paylaşa bilərsiniz. Davam etmək istəyirsiniz?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Verilənlər doğru format edilməyib. Zəhmət olmasa idxal faylınızı yoxlayıb yenidən sınayın." + }, + "importNothingError": { + "message": "Heç nə idxal edilmədi." + }, + "importEncKeyError": { + "message": "İxrac edilən faylın parolu açılarkən xəta baş verdi. Şifrələmə açarınız, verilənlərin ixracında istifadə olunan şifrələmə açarı ilə uyğunlaşmır." + }, + "selectFormat": { + "message": "İdxal faylının formatını seçin" + }, + "selectImportFile": { + "message": "İdxal faylını seçin" + }, + "orCopyPasteFileContents": { + "message": "və ya idxal faylının məzmununu kopyalayın/yapışdırın" + }, + "instructionsFor": { + "message": "$NAME$ Təlimatları", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Seçimlər" + }, + "optionsDesc": { + "message": "Veb anbar təcrübənizi özəlləşdirin." + }, + "optionsUpdated": { + "message": "Seçimlər yeniləndi" + }, + "language": { + "message": "Dil" + }, + "languageDesc": { + "message": "Veb anbarda istifadə olunan dili dəyişdirin." + }, + "disableIcons": { + "message": "Veb sayt nişanlarını sıradan çıxart" + }, + "disableIconsDesc": { + "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." + }, + "enableGravatars": { + "message": "\"Gravatar\"ı fəallaşdırın", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "gravatar.com saytından yüklənilən avatarları istifadə edin." + }, + "enableFullWidth": { + "message": "Tam en görünüşünü fəallaşdır", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Veb anbara, səyyah pəncərəsinin eninin tamamını istifadə etməsinə icazə ver." + }, + "default": { + "message": "İlkin" + }, + "domainRules": { + "message": "Domen qaydaları" + }, + "domainRulesDesc": { + "message": "Bir neçə fərqli veb sayt domenində eyni giriş məlumatınız varsa, veb saytı \"ekvivalent\" olaraq işarələyə bilərsiniz. \"Qlobal\" domenlər, Bitwarden tərəfindən sizin üçün əvvəlcədən yaradılmış domenlərdir." + }, + "globalEqDomains": { + "message": "Qlobal ekvivalent domenlər" + }, + "customEqDomains": { + "message": "Özəl ekvivalent domenlər" + }, + "exclude": { + "message": "İstisna" + }, + "include": { + "message": "Daxil et" + }, + "customize": { + "message": "Özəlləşdir" + }, + "newCustomDomain": { + "message": "Yeni özəl domen" + }, + "newCustomDomainDesc": { + "message": "Vergüllə ayrılan bir domen siyahısı daxil edin. Yalnız \"təməl\" domenlərə icazə verilir. Alt domen daxil etməyin. Məsələn, \"www.google.com\" əvəzinə \"google.com\" daxil edin. Bir android tətbiqini digər veb sayt domenləri ilə əlaqələndirmək üçün \"androidtətbiqi://paket.adı\" daxil edə bilərsiniz." + }, + "customDomainX": { + "message": "Özəl domen $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domenlər yeniləndi" + }, + "twoStepLogin": { + "message": "İki mərhələli giriş" + }, + "twoStepLoginDesc": { + "message": "Giriş edərkən əlavə bir addım tələb edərək hesabınızı qoruyun." + }, + "twoStepLoginOrganizationDesc": { + "message": "Təchizatçıları təşkilat səviyyəsində konfiqurasiya edərək təşkilatınızın istifadəçiləri üçün iki mərhələli girişi məcburi edin." + }, + "twoStepLoginRecoveryWarning": { + "message": "İki mərhələli girişi fəallaşdırmaq, Bitwarden hesabınızı birdəfəlik kilidləyə bilər. Bərpa kodları, iki mərhələli giriş təchizatçınızı istifadə edə bilmədiyiniz hallarda (məs. cihazınızı itirəndə) hesabınıza müraciət etməyinizə icazə verər. Hesabınıza müraciəti itirsəniz, Bitwarden dəstəyi sizə kömək edə bilməyəcək. Bərpa kodunuzu bir yerə yazmağınızı və ya çap etməyinizi və onu etibarlı bir yerdə saxlamağı məsləhət görürük." + }, + "viewRecoveryCode": { + "message": "Bərpa koduna bax" + }, + "providers": { + "message": "Təchizatçılar", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Fəallaşdır" + }, + "enabled": { + "message": "Fəallaşdırıldı" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium üzvlük" + }, + "premiumRequired": { + "message": "Premium üzvlük lazımdır" + }, + "premiumRequiredDesc": { + "message": "Bu özəlliyi istifadə etmək üçün premium üzvlük lazımdır." + }, + "youHavePremiumAccess": { + "message": "Premium müraciətiniz var" + }, + "alreadyPremiumFromOrg": { + "message": "Üzvü olduğunuz bir təşkilatın sayəsində premium özəlliklərə müraciətiniz var." + }, + "manage": { + "message": "İdarə et" + }, + "disable": { + "message": "Sıradan çıxart" + }, + "twoStepLoginProviderEnabled": { + "message": "Bu iki mərhələli giriş təchizatçısı hesabınızda fəallaşdırılıb." + }, + "twoStepLoginAuthDesc": { + "message": "İki mərhələli giriş tənzimləmələrini dəyişdirmək üçün ana parolu daxil edin." + }, + "twoStepAuthenticatorDesc": { + "message": "Kimlik təsdiqləyici tətbiqi ilə iki mərhələli girişi quraşdırmaq üçün aşağıdakı addımları izləyin:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "İki mərhələli kimlik təsdiqləmə tətbiqi endirin" + }, + "twoStepAuthenticatorNeedApp": { + "message": "İki mərhələli kimlik təsdiqləmə tətbiqi lazımdır? Aşağıdakılardan birini endirin" + }, + "iosDevices": { + "message": "iOS cihazları" + }, + "androidDevices": { + "message": "Android cihazları" + }, + "windowsDevices": { + "message": "Windows cihazları" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Bu tətbiqləri tövsiyə edirik, ancaq digər kimlik təsdiqləmə tətbiqlərini də işlədə bilərsiniz." + }, + "twoStepAuthenticatorScanCode": { + "message": "Bu QR kodunu kimlik təsdiqləyici tətbiqinizlə skan edin" + }, + "key": { + "message": "Açar" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Tətbiqdəki 6 rəqəmli təsdiqləmə kodunu daxil edin" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Başqa bir cihaza əlavə etmək lazım olsa, aşağıda kimlik təsdiqləmə tətbiqinizin tələb etdiyi QR kod (və ya açar) verilib." + }, + "twoStepDisableDesc": { + "message": "Bu iki mərhələli giriş təchizatçısını sıradan çıxartmaq istədiyinizə əminsiniz?" + }, + "twoStepDisabled": { + "message": "İki mərhələli giriş təchizatçısı sıradan çıxarıldı." + }, + "twoFactorYubikeyAdd": { + "message": "Hesabınıza yeni bir YubiKey əlavə edin" + }, + "twoFactorYubikeyPlugIn": { + "message": "\"YubiKey\"i kompüterinizin USB portuna taxın." + }, + "twoFactorYubikeySelectKey": { + "message": "Aşağıdakı ilk boş YubiKey giriş sahəsini seçin." + }, + "twoFactorYubikeyTouchButton": { + "message": "\"YubiKey\"in düyməsinə toxunun." + }, + "twoFactorYubikeySaveForm": { + "message": "Formu saxla." + }, + "twoFactorYubikeyWarning": { + "message": "Platforma məhdudiyyətlərinə görə, YubiKeys bütün Bitwarden tətbiqlərində istifadə edilə bilmir. YubiKeys istifadə edilə bilməyəndə, hesabınıza müraciət edə bilməyiniz üçün başqa bir iki mərhələli giriş təchizatçısını fəallaşdırmalısınız. Dəstəklənən platformalar:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Veb anbar, masaüstü tətbiqi, CLI və \"YubiKey\"inizi qəbul edə biləcək USB portuna sahib bir cihazdakı bütün səyyah genişləndirmələri." + }, + "twoFactorYubikeySupportMobile": { + "message": "Bir cihazda NFC özəlliyi olan mobil tətbiqlər və ya \"YubiKey\"inizi qəbul edə bilən data portu." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F açarı $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn açarı $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC dəstəyi" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Açarlarımdan biri NFC dəstəkləyir." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "\"YubiKey\"lərinizdən biri (YubiKey NEO kimi) NFC dəstəkləyirsə, mobil cihazlarda NFC əlçatımlılığı aşkarlananda bildiriş göndəriləcək." + }, + "yubikeysUpdated": { + "message": "\"YubiKey\"lər yeniləndi" + }, + "disableAllKeys": { + "message": "Bütün açarları sıradan çıxart" + }, + "twoFactorDuoDesc": { + "message": "Duo Admin panelinizdən Bitwarden tətbiq məlumatlarını daxil edin." + }, + "twoFactorDuoIntegrationKey": { + "message": "İnteqrasiya açarı" + }, + "twoFactorDuoSecretKey": { + "message": "Məxfi açar" + }, + "twoFactorDuoApiHostname": { + "message": "API Host adı" + }, + "twoFactorEmailDesc": { + "message": "E-poçt ilə iki mərhələli girişi quraşdırmaq üçün aşağıdakı addımları izləyin:" + }, + "twoFactorEmailEnterEmail": { + "message": "Təsdiqləmə kodlarını almaq istədiyiniz e-poçtu daxil edin" + }, + "twoFactorEmailEnterCode": { + "message": "E-poçtdakı 6 rəqəmli təsdiqləmə kodunu daxil edin" + }, + "sendEmail": { + "message": "E-poçt göndər" + }, + "twoFactorU2fAdd": { + "message": "FIDO U2F təhlükəsizlik açarını hesabınıza əlavə edin" + }, + "removeU2fConfirmation": { + "message": "Bu təhlükəsizlik açarını çıxartmaq istədiyinizə əminsiniz?" + }, + "twoFactorWebAuthnAdd": { + "message": "Hesabınzıa WebAuthn təhlükəsizlik açarı əlavə edin" + }, + "readKey": { + "message": "Açarı oxu" + }, + "keyCompromised": { + "message": "Açar təhlükədədir." + }, + "twoFactorU2fGiveName": { + "message": "Təhlükəsizlik açarını müəyyənləşdirmək üçün açıqlayıcı bir ad verin." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Təhlükəsizlik açarını kompüterinizin USB portuna taxıb \"Açarı oxu\" düyməsinə klikləyin." + }, + "twoFactorU2fTouchButton": { + "message": "Əgər təhlükəsizlik açarının düyməsi varsa, basın." + }, + "twoFactorU2fSaveForm": { + "message": "Formu saxla." + }, + "twoFactorU2fWarning": { + "message": "Platforma məhdudiyyətlərinə görə, FIDO U2F bütün Bitwarden tətbiqlərində istifadə edilə bilmir. FIDO U2F istifadə edilə bilməyəndə, hesabınıza müraciət edə bilməyiniz üçün başqa bir iki mərhələli giriş təchizatçısını fəallaşdırmalısınız. Dəstəklənən platformalar:" + }, + "twoFactorU2fSupportWeb": { + "message": "U2F özəlliyə sahib bir səyyah ilə masaüstü/dizüstü kompüterdə veb anbar və səyyah genişləndirmələri (FIDO U2F özəlliyinə sahib Chrome, Opera, Vivaldi və ya Firefox)." + }, + "twoFactorU2fWaiting": { + "message": "Təhlükəsizlik açarındakı düyməyə toxunmağınız gözlənilir" + }, + "twoFactorU2fClickSave": { + "message": "İki mərhələli giriş üçün bu təhlükəsizlik açarını fəallaşdırmaq üçün \"Saxla\" düyməsinə klikləyin." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Təhlükəsizlik açarı oxunarkən problem yarandı. Yenidən sınayın." + }, + "twoFactorWebAuthnWarning": { + "message": "Platforma məhdudiyyətlərinə görə, WebAuthn bütün Bitwarden tətbiqlərində istifadə edilə bilmir. WebAuthn istifadə edilə bilməyəndə, hesabınıza müraciət edə bilməyiniz üçün başqa bir iki mərhələli giriş təchizatçısını fəallaşdırmalısınız. Dəstəklənən platformalar:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "WebAuthn özəlliyə sahib bir səyyah ilə masaüstü/dizüstü kompüterdə veb anbar və səyyah genişləndirmələri (FIDO U2F özəlliyinə sahib Chrome, Opera, Vivaldi və ya Firefox)." + }, + "twoFactorRecoveryYourCode": { + "message": "Bitwarden iki mərhələli giriş bərpa kodunuz" + }, + "twoFactorRecoveryNoCode": { + "message": "Hələ ki, iki mərhələli griş təchizatçısını fəallaşdırmadınız. İki mərhələli giriş təchizatçısını faəllaşdırdıqdan sonra, bərpa kodunuz üçün buranı yoxlaya bilərsiniz." + }, + "printCode": { + "message": "Kodu çap et", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Hesabatlar" + }, + "reportsDesc": { + "message": "Aşağıdakı hesabatlara klikləyərək onlayn hesablarınızdakı güvənlik boşluqlarına baxın və onları bağlayın." + }, + "unsecuredWebsitesReport": { + "message": "Təhlükəli veb sayt hesabatları" + }, + "unsecuredWebsitesReportDesc": { + "message": "http:// sxemini sahib güvənli olmayan veb saytları istifadə etmək təhlükəli ola bilər. Əgər veb sayt icazə verirsə, hər zaman bağlantınızın şifrələnməsi üçün https:// sxemini istifadə edərək müraciət etməlisiniz." + }, + "unsecuredWebsitesFound": { + "message": "Güvənli olmayan veb sayt tapıldı" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Anbarınızda güvənli olmayan URI-lərə sahib $COUNT$ element tapıldı. Veb sayt icazə verirsə, onların URI sxemini https:// olaraq dəyişdirməlisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Anbarınızda güvənli olmayan URI-ə sahib element yoxdur." + }, + "inactive2faReport": { + "message": "2FA hesabatı aktiv deyil" + }, + "inactive2faReportDesc": { + "message": "İki mərhələli kimlik təsdiqləmə (2FA), hesablarınızı qorumağınıza kömək etməsi üçün vacib təhlükəsizlik tənzimləməsidir. Veb sayt təklif edirsə, hər zaman iki mərhələli kimlik təsdiqləməsini fəallaşdırmalısınız." + }, + "inactive2faFound": { + "message": "2FA olmayan hesablar tapıldı" + }, + "inactive2faFoundDesc": { + "message": "Anbarınızda (\"2fa.directory\"ə uyğun olaraq) iki mərhələli kimlik təsdiqləmə ilə konfiqurasiya edilmədiyini düşündüyümüz $COUNT$ veb sayt tapdıq. Bu hesabları daha çox qorumaq üçün iki mərhələli kimlik təsdiqləməsini fəallaşdırmalısınız.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Anbarınızda iki mərhələli kimlik təsdiqləmə konfiqurasiyası əskik olan heç bir veb sayt tapılmadı." + }, + "instructions": { + "message": "Təlimatlar" + }, + "exposedPasswordsReport": { + "message": "Parolların hesabatı ifşa olundu" + }, + "exposedPasswordsReportDesc": { + "message": "İfşa olunmuş parollar, ictimai olaraq yayımlanmış və ya xakerlər tərəfindən \"dark web\"də satılmış kimi bilinən məlumat pozuntusunda aşkarlanan parollardır." + }, + "exposedPasswordsFound": { + "message": "İfşa olunmuş parollar tapıldı" + }, + "exposedPasswordsFoundDesc": { + "message": "Anbarınızda, bilinən məlumat pozuntusunda parolları ifşa olunmuş $COUNT$ element tapdıq. Yeni bir parol istifadə etməzdən əvvəl onları dəyişdirməlisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Anbarınızda heç bir elementin, bilinən məlumat pozuntusunda ifşa olunmuş parollar yoxdur." + }, + "checkExposedPasswords": { + "message": "İfşa olunmuş parolları yoxla" + }, + "exposedXTimes": { + "message": "$COUNT$ dəfə ifşa olunub", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Zəif parol hesabatı" + }, + "weakPasswordsReportDesc": { + "message": "Zəif şifrələr, xakerlər və şifrələri qırmaq üçün istifadə olunan avtomatik alətlər tərəfindən asanlıqla təxmin edilə bilər. Bitwarden şifrə yaradıcı, güclü şifrələr yaratmağınıza kömək edə bilər." + }, + "weakPasswordsFound": { + "message": "Zəif şifrə tapıldı" + }, + "weakPasswordsFoundDesc": { + "message": "Anbarınızda, şifrələri güclü olmayan $COUNT$ element tapdıq. Güclü şifrələr istifadə etmək üçün onları yeniləməlisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Anbarınızdakı heç bir elementin zəif parolu yoxdur." + }, + "reusedPasswordsReport": { + "message": "Təkrar istifadə edilmiş parolların hesabatı" + }, + "reusedPasswordsReportDesc": { + "message": "İstifadə etdiyiniz bir xidmət təhlükə altındadırsa, eyni parolu başqa yerdə təkrar istifadə etmək, xakerlərin onlayn hesabınızlarınız daha çoxuna asanlıqla müraciət əldə etməsinə şərait yaradır. Hər hesab və ya xidmət üçün unikal bir parol istifadə etməlisiniz." + }, + "reusedPasswordsFound": { + "message": "Təkrar istifadə olunmuş parollar tapıldı" + }, + "reusedPasswordsFoundDesc": { + "message": "Anbarınızda təkrar istifadə edilən $COUNT$ parol tapdıq. Onları unikal bir dəyərlə dəyişdirməlisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Anbarınızda heç bir hesabda təkrar istifadə olunan parollar yoxdur." + }, + "reusedXTimes": { + "message": "$COUNT$ dəfə təkrar istifadə olunub", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Məlumatların pozuntusu hesabatı" + }, + "breachDesc": { + "message": "\"Pozuntu\", bir saytın verilənlərinə xakerlər tərəfindən qanunsuz bir formada müraciət edildiyi və daha sonra ictimai olaraq yayımlandığı bir hadisədir. Ələ keçirilmiş verilənlərin növlərini (e-poçt, ünvan, şifrələr, kredit kartları və s.) nəzərdən keçirin və parolların dəyidirilməsi kimi müvafiq addımları atın." + }, + "breachCheckUsernameEmail": { + "message": "İstifadə etdiyiniz istifadəçi adlarını və ya e-poçt ünvanlarını yoxlayın." + }, + "checkBreaches": { + "message": "Pozuntuları yoxla" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ bilinən heç bir məlumat pozuntusunda tapılmadı.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Xəbərlər yaxşıdır", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ $COUNT$ fərqli onlayn məlumat pozuntusunda tapıldı.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Pozulan hesablar tapıldı" + }, + "compromisedData": { + "message": "Ələ keçirilmiş verilənlər" + }, + "website": { + "message": "Veb sayt" + }, + "affectedUsers": { + "message": "Təsirlənən istifadəçilər" + }, + "breachOccurred": { + "message": "Pozuntu baş verdi" + }, + "breachReported": { + "message": "Pozuntu bildirildi" + }, + "reportError": { + "message": "Hesabatı yükləməyə çalışarkən bir xəta baş verdi. Yenidən sınayın" + }, + "billing": { + "message": "Faktura" + }, + "accountCredit": { + "message": "Hesab krediti", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Hesab balansı", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Kredit əlavə et", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Məbləğ", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Əlavə edilən kredit, ödəniş tam emal olunandan sonra hesabınızda görünəcək. Bəzi ödəniş metodları gecikir və emalı digərlərinə nisbətən daha uzun çəkə bilər." + }, + "makeSureEnoughCredit": { + "message": "Zəhmət olmasa bu satın alma üçün hesabınızda yetərli qədər kredit olduğuna əmin olun. Hesabınızda yetərli kredit yoxdursa, fərq üçün fayldakı ilkin ödəniş metodunuz istifadə edilir. Hesabınıza, faktura səhifəsindən kredit əlavə edə bilərsiniz." + }, + "creditAppliedDesc": { + "message": "Hesabınızın krediti, satın alma üçün istifadə oluna bilər. Əlçatan istənilən kredit, bu hesab üçün yaradılan fakturalara avtomatik tətbiq ediləcək." + }, + "goPremium": { + "message": "\"Premium\"a keçin", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "\"Premium\"a yüksəltdiniz." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Hesabınızı premium üzvlüyə yüksəldin və bəzi möhtəşəm əlavə özəlliklərin kilidini açın." + }, + "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." + }, + "premiumSignUpEmergency": { + "message": "Fövqəladə vəziyyət müraciəti" + }, + "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ə!" + }, + "premiumPrice": { + "message": "Hamısı sadəcə ildə $PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Əlavələr" + }, + "premiumAccess": { + "message": "Premium müraciət" + }, + "premiumAccessDesc": { + "message": "Təşkilatınızın bütün üzvlərinə premium müraciət əlavə edə bilərsiniz: $PRICE$/$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Əlavə saxlama sahəsi (GB)" + }, + "additionalStorageGbDesc": { + "message": "#/əlavə GB" + }, + "additionalStorageIntervalDesc": { + "message": "Planınızda $SIZE$ şifrələnmiş fayl saxlama sahəsi var. GB/$INTERVAL$ başına $PRICE$ qarşılığında əlavə saxlama sahəsi əlavə edə bilərsiniz.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "İcmal" + }, + "total": { + "message": "Cəmi" + }, + "year": { + "message": "il" + }, + "month": { + "message": "ay" + }, + "monthAbbr": { + "message": "ay", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Ödəniş metodunuz ilə dərhal ödəniş alınacaq və hər il müntəzəm olaraq ödəniş alınacaq. İstədiyiniz vaxt imtina edə bilərsiniz." + }, + "paymentCharged": { + "message": "Ödəniş metodunuz ilə dərhal ödəniş alınacaq və hər $INTERVAL$ müntəzəm olaraq ödəniş alınacaq. İstədiyiniz vaxt imtina edə bilərsiniz.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Planınızda 7 günlük ödənişsiz sınaq var. Sınaq müddəti bitənə qədər ödəniş metodundan pul çıxılmayacaq. Faktura, hər $INTERVAL$ bir müntəzəm olaraq icra ediləcək. İstənilən vaxt imtina edə bilərsiniz." + }, + "paymentInformation": { + "message": "Ödəniş məlumatı" + }, + "billingInformation": { + "message": "Faktura məlumatı" + }, + "creditCard": { + "message": "Kredit kartı" + }, + "paypalClickSubmit": { + "message": "PayPal hesabınıza giriş etmək üçün PayPal düyməsinə klikləyin, ardından Göndər düyməsinə klikləyərək davam edin." + }, + "cancelSubscription": { + "message": "Abunəlikdən imtina" + }, + "subscriptionCanceled": { + "message": "Abunəliyiniz ləğv edildi." + }, + "pendingCancellation": { + "message": "Ləğvi gözlənilir" + }, + "subscriptionPendingCanceled": { + "message": "Abunəlik, hazırkı faktura dövrünün sonunda ləğv edilməsi üçün işarələndi." + }, + "reinstateSubscription": { + "message": "Abunəliyi əvvəlki halına qaytar" + }, + "reinstateConfirmation": { + "message": "Gözləyən imtina tələbini çıxartmaq və abunəliyini əvvəlki halına qaytarmaq istədiyinizə əminsiniz?" + }, + "reinstated": { + "message": "Abunəliyiniz əvvəlki halına qaytarıldı." + }, + "cancelConfirmation": { + "message": "İmtina etmək istədiyinizə əminsiniz? Bu faktura dövrünün sonunda bu abunəliyin bütün özəlliklərinə müraciəti itirəcəksiniz." + }, + "canceledSubscription": { + "message": "Abunəliyiniz ləğv edildi." + }, + "neverExpires": { + "message": "Heç vaxt bitmir" + }, + "status": { + "message": "Vəziyyət" + }, + "nextCharge": { + "message": "Növbəti ödəniş" + }, + "details": { + "message": "Təfsilatlar" + }, + "downloadLicense": { + "message": "Lisenziyanı endir" + }, + "updateLicense": { + "message": "Lisenziyanı yenilə" + }, + "updatedLicense": { + "message": "Lisenziyanı yeniləndi" + }, + "manageSubscription": { + "message": "Abunəliyi idarə et" + }, + "storage": { + "message": "Saxlama" + }, + "addStorage": { + "message": "Saxlama sahəsi əlavə et" + }, + "removeStorage": { + "message": "Saxlama sahəsini çıxart" + }, + "subscriptionStorage": { + "message": "Abunəliyinizdə cəmi $MAX_STORAGE$ GB şifrələnmiş fayl saxlama sahəsi var. Hazırda $USED_STORAGE$ istifadə edirsiniz.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Ödəniş metodu" + }, + "noPaymentMethod": { + "message": "Qeydə alınmış ödəniş metodu yoxdur." + }, + "addPaymentMethod": { + "message": "Ödəniş metodu əlavə et" + }, + "changePaymentMethod": { + "message": "Ödəniş metodunu dəyişdir" + }, + "invoices": { + "message": "Fakturalar" + }, + "noInvoices": { + "message": "Faktura yoxdur." + }, + "paid": { + "message": "Ödənilib", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Ödənilməyib", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Əməliyyatlar", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Əməliyyat yoxdur." + }, + "chargeNoun": { + "message": "Ödəniş", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Geri qaytarma", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Bütün ödənişlər, bəyanatınızda $STATEMENT_NAME$ kimi görünəcək.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB saxlamaya əlavə et" + }, + "gbStorageRemove": { + "message": "GB saxlamadan çıxart" + }, + "storageAddNote": { + "message": "Saxlama sahəsi əlavə etmək, fakturanın cəmində dəyişikliklərə səbəb olacaq və dərhal hesab ödəniş metodunuzdan çıxılacaq. İlk çıxılacaq hesab, hazırkı faktura dövrünün qalanı üçün etibarlı olacaq." + }, + "storageRemoveNote": { + "message": "Saxlama sahəsinin çıxarılması, növbəti faktura ödənişinizə kredit kimi görünəcək faktura cəminizdə dəyişikliklərə səbəb olacaq." + }, + "adjustedStorage": { + "message": "Nizamlanmış $AMOUNT$ GB saxlama sahəsi.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Müştəri dəstəyi ilə əlaqə" + }, + "updatedPaymentMethod": { + "message": "Ödəniş metodu yeniləndi." + }, + "purchasePremium": { + "message": "Premium satın al" + }, + "licenseFile": { + "message": "Lisenziya faylı" + }, + "licenseFileDesc": { + "message": "Lisenziya faylınız $FILE_NAME$ adına bənzər adlandırılacaq", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Hesabınızın premium üzvlüyünü yüksəltmək üçün etibarlı bir lisenziya faylı yükləməlisiniz." + }, + "uploadLicenseFileOrg": { + "message": "Öz-özünə sahiblik edən təşkilat yaratmaq üçün etibarlı bir lisenziya faylı yükləməlisiniz." + }, + "accountEmailMustBeVerified": { + "message": "Hesabınızın e-poçt ünvanı təsdiqlənməlidir." + }, + "newOrganizationDesc": { + "message": "Təşkilatlar, anbarınızın hissələrini başqaları ilə paylaşmağınıza, ailə, kiçik komanda və ya böyük şirkət kimi müəyyən bir varlıq üçün əlaqəli istifadəçiləri idarə etməyinizə icazə verir." + }, + "generalInformation": { + "message": "Ümumi məlumat" + }, + "organizationName": { + "message": "Təşkilat adı" + }, + "accountOwnedBusiness": { + "message": "Bu hesab bir biznesə aiddir." + }, + "billingEmail": { + "message": "Faktura e-poçtu" + }, + "businessName": { + "message": "Biznes adı" + }, + "chooseYourPlan": { + "message": "Planınızı seçin" + }, + "users": { + "message": "İstifadəçilər" + }, + "userSeats": { + "message": "İstifadəçi yeri" + }, + "additionalUserSeats": { + "message": "Əlavə istifadəçi yerləri" + }, + "userSeatsDesc": { + "message": "İstifadəçi sayı" + }, + "userSeatsAdditionalDesc": { + "message": "Planınızda $BASE_SEATS$ istifadəçi yeri var. İstifadəçiləri, istifadəçi/ay başına $SEAT_PRICE$ qarşılığında əlavə edə bilərsiniz.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Neçə istifadəçi yerinə ehtiyac var? Lazım gəlsə daha sonra yenə yerlər əlavə edə bilərsiniz." + }, + "planNameFree": { + "message": "Ödənişsiz", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Digər $COUNT$ istifadəçi ilə paylaşmaq üzrə test və ya fərdi istifadəçilər üçün.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Ailə" + }, + "planDescFamilies": { + "message": "Fərdi istifadə üçün, ailəniz və dostlarınızla paylaşın." + }, + "planNameTeams": { + "message": "Komandalar" + }, + "planDescTeams": { + "message": "Biznes və digər komanda təşkilatları üçün." + }, + "planNameEnterprise": { + "message": "Müəssisə" + }, + "planDescEnterprise": { + "message": "Biznes və digər böyük təşkilatlar üçün." + }, + "freeForever": { + "message": "Həmişə ödənişsiz" + }, + "includesXUsers": { + "message": "$COUNT$ istifadəçi ehtiva edir", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Əlavə istifadəçilər" + }, + "costPerUser": { + "message": "İstifadəçi başına $COST$", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "$COUNT$ istifadəçi ilə limitlidir (siz də daxil)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "$COUNT$ kolleksiya ilə limitlidir", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "$COUNT$ istifadəçiyə qədər əlavə edin və paylaşın", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Limitsiz istifadəçi əlavə et və paylaş" + }, + "createUnlimitedCollections": { + "message": "Limitsiz kolleksiya yarat" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ şifrələnmiş fayl saxlama sahəsi", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Öz-özünə sahiblik etmə (ixtiyari)" + }, + "usersGetPremium": { + "message": "İstifadəçilər, premium özəlliklərə müraciət edə bilər" + }, + "controlAccessWithGroups": { + "message": "Qruplar ilə istifadəçi müraciətinə nəzarət et" + }, + "syncUsersFromDirectory": { + "message": "İstifadəçiləri və qrupları bir kataloqdan eyniləşdirin" + }, + "trackAuditLogs": { + "message": "İstifadəçi hərəkətlərini audit jurnalı ilə izləyin" + }, + "enforce2faDuo": { + "message": "Duo ilə 2FA-nı məcburi et" + }, + "priorityCustomerSupport": { + "message": "Prioritet müştəri dəstəyi" + }, + "xDayFreeTrial": { + "message": "$COUNT$ gün ödənişsiz sınaq, istənilən vaxt imtina edin", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Aylıq" + }, + "annually": { + "message": "İllik" + }, + "basePrice": { + "message": "Baza qiyməti" + }, + "organizationCreated": { + "message": "Təşkilat yaradıldı" + }, + "organizationReadyToGo": { + "message": "Yeni təşkilatınız hazırdır!" + }, + "organizationUpgraded": { + "message": "Təşkilatınız yüksəldildi." + }, + "leave": { + "message": "Tərk et" + }, + "leaveOrganizationConfirmation": { + "message": "Bu təşkilatı tərk etmək istədiyinizə əminsiniz?" + }, + "leftOrganization": { + "message": "Təşkilatı tərk etdiniz." + }, + "defaultCollection": { + "message": "İlkin kolleksiya" + }, + "getHelp": { + "message": "Kömək alın" + }, + "getApps": { + "message": "Tətbiqi endir" + }, + "loggedInAs": { + "message": "Giriş edildi" + }, + "eventLogs": { + "message": "Tədbir jurnalı" + }, + "people": { + "message": "İnsanlar" + }, + "policies": { + "message": "Siyasətlər" + }, + "singleSignOn": { + "message": "Tək daxil olma" + }, + "editPolicy": { + "message": "Siyasətə düzəliş et" + }, + "groups": { + "message": "Qruplar" + }, + "newGroup": { + "message": "Yeni qrup" + }, + "addGroup": { + "message": "Qrup əlavə et" + }, + "editGroup": { + "message": "Qrupa düzəliş et" + }, + "deleteGroupConfirmation": { + "message": "Bu qrupu silmək istədiyinizə əminsiniz?" + }, + "removeUserConfirmation": { + "message": "Bu istifadəçini çıxartmaq istədiyinizə əminsiniz?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Xəbərdarlıq! Bu istifadəçi, şifrələmələrini idarə etmək üçün Açar Bağlayıcı tələb edir. Bu istifadəçini təşkilatınızdan silsəniz, hesabı birdəfəlik sıradan çıxarılacaq. Bu əməliyyatın geri dönüşü yoxdur. Davam etmək istəyirsiniz?" + }, + "externalId": { + "message": "Xarici kimlik" + }, + "externalIdDesc": { + "message": "Xarici kimlik, referans olaraq və ya bu mənbəni istifadəçi kataloqu kimi xarici bir sistemə bağlamaq üçün istifadə edilir." + }, + "accessControl": { + "message": "Müraciət nəzarəti" + }, + "groupAccessAllItems": { + "message": "Bu qrup, bütün elementlərə müraciət edə və onları dəyişdirə bilər." + }, + "groupAccessSelectedCollections": { + "message": "Bu qrup, yalnız seçilmiş kolleksiyalara müraciət edə bilər." + }, + "readOnly": { + "message": "Yalnız-oxunan" + }, + "newCollection": { + "message": "Yeni kolleksiya" + }, + "addCollection": { + "message": "Kolleksiya əlavə et" + }, + "editCollection": { + "message": "Kolleksiyaya düzəliş et" + }, + "deleteCollectionConfirmation": { + "message": "Bu kolleksiyanı silmək istədiyinizə əminsiniz?" + }, + "editUser": { + "message": "İstifadəçiyə düzəliş et" + }, + "inviteUser": { + "message": "İstifadəçini dəvət et" + }, + "inviteUserDesc": { + "message": "Aşağıda Bitwarden hesabının e-poçt ünvanını daxil edərək təşkilatınıza yeni bir istifadəçi dəvət edə bilərsiniz. Əgər Bitwarden hesabı yoxdursa, yeni bir hesab yaratmaları üçün istək göndəriləcək." + }, + "inviteMultipleEmailDesc": { + "message": "E-poçt siyahısını vergüllə ayıraraq bir dəfəyə $COUNT$ istifadəçi dəvət edə bilərsiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Bu istifadəçinin hesabını qorumaq üçün iki mərhələli giriş istifadə edilir." + }, + "userAccessAllItems": { + "message": "Bu istifadəçi bütün elementlərə müraciət edə və onları dəyişdirə bilər." + }, + "userAccessSelectedCollections": { + "message": "Bu istifadəçi, yalnız seçilmiş kolleksiyalara müraciət edə bilər." + }, + "search": { + "message": "Axtar" + }, + "invited": { + "message": "Dəvət edildi" + }, + "accepted": { + "message": "Qəbul edildi" + }, + "confirmed": { + "message": "Təsdiqləndi" + }, + "clientOwnerEmail": { + "message": "Müştəri sahibi e-poçtu" + }, + "owner": { + "message": "Sahiblik" + }, + "ownerDesc": { + "message": "Təşkilatınızın bütün aspektlərini idarə edə bilər yüksək müraciətə malik istifadəçi." + }, + "clientOwnerDesc": { + "message": "Bu istifadəçi, təchizatçıdan müstəqil olmalıdır. Təchizatçının təşkilatla əlaqəsi kəsilsə, bu istifadəçi, təşkilatının sahibliyini davam etdirəcək." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Adminlər təşkilatınızdakı bütün elementlərə, kolleksiyalara və istifadəçilərə müraciət edə və onları idarə edə bilər." + }, + "user": { + "message": "İstifadəçi" + }, + "userDesc": { + "message": "Təşkilatınızda təyin edilmiş kolleksiyalara müraciəti olan müntəzəm bir istifadəçi." + }, + "manager": { + "message": "İdarəçi" + }, + "managerDesc": { + "message": "Təşkilatınızda təyin edilən kolleksiyalara müraciət edə və ya onları idarə edə bilər." + }, + "all": { + "message": "Hamısı" + }, + "refresh": { + "message": "Təzələ" + }, + "timestamp": { + "message": "Vaxt möhürü" + }, + "event": { + "message": "Tədbir" + }, + "unknown": { + "message": "Bilinməyən" + }, + "loadMore": { + "message": "Daha çox yüklə" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Genişləndirmə", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Masaüstü", + "description": "Desktop app" + }, + "webVault": { + "message": "Veb anbar" + }, + "loggedIn": { + "message": "Giriş edildi." + }, + "changedPassword": { + "message": "Hesab parolu dəyişdirildi." + }, + "enabledUpdated2fa": { + "message": "İki mərhələli giriş fəallaşdırıldı/yeniləndi." + }, + "disabled2fa": { + "message": "İki mərhələli giriş sıradan çıxarıldı." + }, + "recovered2fa": { + "message": "İki mərhələli girişdən hesab bərpa edildi." + }, + "failedLogin": { + "message": "Yanlış parol ilə giriş etmə cəhdi uğursuz oldu." + }, + "failedLogin2fa": { + "message": "Yanlış iki mərhələli giriş ilə giriş etmə cəhdi uğursuz oldu." + }, + "exportedVault": { + "message": "Anbar ixrac edildi." + }, + "exportedOrganizationVault": { + "message": "Təşkilat anbarı ixrac edildi." + }, + "editedOrgSettings": { + "message": "Təşkilat tənzimləmələrinə düzəliş edildi." + }, + "createdItemId": { + "message": "$ID$ elementi yaradıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "$ID$ elementinə düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "$ID$ elementi tullantı qutusuna göndərildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "$ID$ elementi bir təşkilata daşındı.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "$ID$ elementinə baxıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "$ID$ elementi üçün parola baxıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "$ID$ elementi üçün gizli sahəyə baxıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "$ID$ elementi üçün təhlükəsizlik koduna baxıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "$ID$ elementi üçün parol kopyalandı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "$ID$ elementi üçün gizli sahə kopyalandı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "$ID$ elementi üçün təhlükəsizlik kodu kopyalandı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "$ID$ elementi avto-dolduruldu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "$ID$ kolleksiyası yaradıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "$ID$ kolleksiyasına düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "$ID$ kolleksiyası silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "$ID$ siyasətinə düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "$ID$ qrupu yaradıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "$ID$ qrupuna düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "$ID$ qrupu silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "$ID$ istifadəçisi çıxarıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "$ID$ elementi üçün qoşma yaradıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "$ID$ elementi üçün qoşma silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "$ID$ elementi üçün kolleksiyalara düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "$ID$ istifadəçisi dəvət edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "$ID$ istifadəçisi təsdiqləndi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "$ID$ istifadəçisinə düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "$ID$ istifadəçisi üçün qruplara düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "$ID$ istifadəçisi üçün SSO əlaqəsi kəsildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "$ID$ təşkilatı yaradıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "$ID$ təşkilatı əlavə edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "$ID$ təşkilatı silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "$ID$ təşkilatının anbarına müraciət edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Cihaz" + }, + "view": { + "message": "Bax" + }, + "invalidDateRange": { + "message": "Etibarsız vaxt aralığı." + }, + "errorOccurred": { + "message": "Bir xəta baş verdi." + }, + "userAccess": { + "message": "İstifadəçi müraciəti" + }, + "userType": { + "message": "İstifadəçi növü" + }, + "groupAccess": { + "message": "Qrup müraciəti" + }, + "groupAccessUserDesc": { + "message": "Bu istifadəçinin aid olduğu üçün qruplara düzəliş et." + }, + "invitedUsers": { + "message": "İstifadəçi(lər) dəvət edildi." + }, + "resendInvitation": { + "message": "Dəvəti yenidən göndər" + }, + "resendEmail": { + "message": "E-poçtu təkrar göndər" + }, + "hasBeenReinvited": { + "message": "$USER$ yenidən dəvət edildi.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Təsdiqlə" + }, + "confirmUser": { + "message": "İstifadəçini təsdiqlə" + }, + "hasBeenConfirmed": { + "message": "$USER$ təsdiqləndi.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "İstifadəçiləri təsdiqlə" + }, + "usersNeedConfirmed": { + "message": "Onların dəvətini qəbul edən istifadəçiləriniz var, ancaq hələ də təsdiqlənməlidir. İstifadəçilər, təsdiqlənənə qədər təşkilata müraciət edə bilməz." + }, + "startDate": { + "message": "Başlanğıc tarixi" + }, + "endDate": { + "message": "Bitmə tarixi" + }, + "verifyEmail": { + "message": "E-poçtu təsdiqlə" + }, + "verifyEmailDesc": { + "message": "Bütün özəlliklərə müraciət etmək üçün e-poçt ünvanınızı təsdiqləməlisiniz." + }, + "verifyEmailFirst": { + "message": "Əvvəlcə hesabınızın e-poçt ünvanı təsdiqlənməlidir." + }, + "checkInboxForVerification": { + "message": "Təsdiqləmə bağlantısı üçün e-poçt gələn qutunuzu yoxlayın." + }, + "emailVerified": { + "message": "E-poçtunuz təsdiqləndi." + }, + "emailVerifiedFailed": { + "message": "E-poçtunuz təsdiqlənə bilmir. Yeni bir təsdiqləmə e-poçtu göndərməyə çalışın." + }, + "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." + }, + "updateBrowser": { + "message": "Səyyahı yenilə" + }, + "updateBrowserDesc": { + "message": "Dəstəklənməyən bir veb səyyah istifadə edirsiniz. Veb anbar düzgün işləməyə bilər." + }, + "joinOrganization": { + "message": "Təşkilata qoşul" + }, + "joinOrganizationDesc": { + "message": "Yuxarıdakı təşkilata qoşulmaq üçün dəvət edildiniz. Dəvəti qəbul etmək üçün Bitwarden hesabına giriş etməli və ya yeni bir hesab yaratmalısınız." + }, + "inviteAccepted": { + "message": "Dəvət qəbul edildi" + }, + "inviteAcceptedDesc": { + "message": "Administrator üzvlüyünüzü təsdiqlədikdən sonra bu təşkilata müraciət edə bilərsiniz. Bu baş verəndə sizə bir e-poçt göndərəcəyik." + }, + "inviteAcceptFailed": { + "message": "Dəvət qəbul edilə bilmədi. Təşkilat adminindən yeni bir dəvət göndərməsini xahiş edin." + }, + "inviteAcceptFailedShort": { + "message": "Dəvət qəbul edilə bilmədi. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "E-poçtu xatırla" + }, + "recoverAccountTwoStepDesc": { + "message": "Hesabınıza normal iki mərhələli giriş metodları ilə müraciət edə bilmirsinizsə, hesabınızdakı bütün iki mərhələli təchizatçıları sıradan çıxartmaq üçün iki mərhələli giriş bərpa kodunuzu istifadə edə bilərsiniz." + }, + "recoverAccountTwoStep": { + "message": "İki mərhələli giriş ilə hesabı bərpa edin" + }, + "twoStepRecoverDisabled": { + "message": "İki mərhələli giriş, hesabınızda sıradan çıxarıldı." + }, + "learnMore": { + "message": "Daha ətraflı" + }, + "deleteRecoverDesc": { + "message": "Hesabınızı bərpa etmək və silmək üçün e-poçtunuzu daxil edin." + }, + "deleteRecoverEmailSent": { + "message": "Əgər hesabınız mövcuddursa, daha çox təlimat ehtiva edən bir e-poçt göndərəcəyik." + }, + "deleteRecoverConfirmDesc": { + "message": "Bitwarden hesabınızı silmək üçün tələb göndərdiniz. Təsdiqləmək üçün aşağıdakı düyməyə basın." + }, + "myOrganization": { + "message": "Təşkilatım" + }, + "deleteOrganization": { + "message": "Təşkilatı sil" + }, + "deletingOrganizationContentWarning": { + "message": "$ORGANIZATION$ təşkilatının və bütün əlaqəli verilənlərinin silinməsini təsdiqləmək üçün ana parolu daxil edin. $ORGANIZATION$ anbar verilənləri bunları ehtiva edir:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Silmə prosesindən sonra istifadəçi hesabları aktiv qalacaq, ancaq bu təşkilatla əlaqəli olmayacaq." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "$ORGANIZATION$ təşkilatının silinməsi daimi və geri qaytarıla bilməyən prosesdir.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Təşkilat silindi" + }, + "organizationDeletedDesc": { + "message": "Təşkilat və əlaqəli bütün verilənləri silindi." + }, + "organizationUpdated": { + "message": "Təşkilat yeniləndi" + }, + "taxInformation": { + "message": "Vergi məlumatı" + }, + "taxInformationDesc": { + "message": "ABŞ daxili müştərilə üçün, vergi tələblərini qarşılamaq üçün ZIP kod tələb olunur, digər ölkələr üçün ixtiyari olaraq fakturalarınızda görünməsi üçün vergi eyniləşdirmə nömrəsi (ƏDV/GST) və/və ya ünvanı qeyd edə bilərsiniz." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Planı dəyişdir", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Aşağıdakı məlumatları qeyd edərək hesabınızı başqa bir plana yüksəldin. Zəhmət olmasa hesaba aktiv bir ödəniş metodu əlavə etdiyinizə əmin olun.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktura nömrəsi: $NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Fakturaya bax" + }, + "downloadInvoice": { + "message": "Fakturanı endir" + }, + "verifyBankAccount": { + "message": "Bank hesabını təsdiqlə" + }, + "verifyBankAccountDesc": { + "message": "Bank hesabınıza iki ədəd mikro depozit qoyduq (görünməsi 1-2 iş günü çəkə bilər). Bankınızı təsdiqləmək üçün bu məbləğləri daxil edin." + }, + "verifyBankAccountInitialDesc": { + "message": "Bank hesabı ilə ödəniş yalnız ABŞ-dakı müştərilə üçün əlçatandır. Bank hesabınızı təsdiqləməyiniz tələb olunacaq. Növbəti 1-2 iş günü ərzində iki ədəd mikro depozit qoyacağıq. Bank hesabınızı təsdiqləməyiniz üçün bu məbləğləri təşkilatınızın faktura səhifəsində daxil edin." + }, + "verifyBankAccountFailureWarning": { + "message": "Bank hesabınızın təsdiqlənməməsi, ödənişin edilməməsinə və abunəliyinizin sıradan çıxarılmasına səbəb olacaq." + }, + "verifiedBankAccount": { + "message": "Bank hesabı təsdiqləndi." + }, + "bankAccount": { + "message": "Bank hesabı" + }, + "amountX": { + "message": "Məbləğ: $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Yönləndirmə nömrəsi", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Hesab nömrəsi" + }, + "accountHolderName": { + "message": "Hesab sahibinin adı" + }, + "bankAccountType": { + "message": "Hesab növü" + }, + "bankAccountTypeCompany": { + "message": "Şirkət (iş)" + }, + "bankAccountTypeIndividual": { + "message": "Fərdi (Şəxsi)" + }, + "enterInstallationId": { + "message": "Quraşdırma kimlik nömrənizi daxil edin" + }, + "limitSubscriptionDesc": { + "message": "Abunəliyiniz üçün bir limit müəyyən edin. Bu limitə çatanda, yeni istifadəçiləri dəvət edə bilməyəcəksiniz." + }, + "maxSeatLimit": { + "message": "Maksimum yer limiti (ixtiyari)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maksimum mümkün yer qiyməti" + }, + "addSeats": { + "message": "Yer əlavə et", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Yeri götür", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Abunəliyinizə edilən düzəlişlər, faktura cəminizdə nisbətli dəyişikliklərlə nəticələnəcək. Yeni dəvət edilən istifadəçilər abunəlik yerlərini aşsa, əlavə istifadəçilər üçün nisbətli ödəniş dərhal alınacaq." + }, + "subscriptionUserSeats": { + "message": "Abunəliyiniz cəmi $COUNT$ istifadəçiyə icazə verir.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit abunəliyi (ixtiyari)" + }, + "subscriptionSeats": { + "message": "Abunəlik yerləri" + }, + "subscriptionUpdated": { + "message": "Abunəlik yeniləndi" + }, + "additionalOptions": { + "message": "Əlavə seçimlər" + }, + "additionalOptionsDesc": { + "message": "Abunəliyin idarə edilməsi üzrə əlavə kömək üçün zəhmət olmasa Müştəri Dəstəyi ilə əlaqə saxlayın." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Abunəliyinizə edilən düzəlişlər, faktura cəminizdə nisbətli dəyişikliklərlə nəticələnəcək. Yeni dəvət edilən istifadəçilər abunəlik yerlərini aşsa, əlavə istifadəçilər üçün nisbətli ödəniş dərhal alınacaq." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Abunəliyinizə edilən düzəlişlər, faktura cəminizdə nisbətli dəyişikliklərlə nəticələnəcək. Yeni dəvət edilən istifadəçilər abunəlik yerlərini aşsa, $MAX$ yer limitinə çatana qədər əlavə istifadəçilər üçün nisbətli ödəniş dərhal alınacaq.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Planınızı yüksəltmədən $COUNT$ istifadəçidən çoxunu dəvət edə bilməzsiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Planınızı yüksəltmədən $COUNT$ istifadəçidən çoxunu dəvət edə bilməzsiniz. Zəhmət olmasa yüksəltmək üçün Müştəri Dəstəyi ilə əlaqə saxlayın.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Abunəliyiniz cəmi $COUNT$ istifadəçiyə icazə verir. Planınız, sponsorludur və xarici bir təşkilata ödənilir.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Abunəliyinizə edilən düzəlişlər, faktura cəminizdə nisbətli dəyişikliklərlə nəticələnəcək. Abunəlik yerlərinizi artırmadan $COUNT$ istifadəçidən çoxunu dəvət edə bilməzsiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Əlavə ediləcək yerlər" + }, + "seatsToRemove": { + "message": "Götürüləcək yerlər" + }, + "seatsAddNote": { + "message": "İstifadəçi yerləri əlavə etmək, fakturanın cəmində dəyişikliklərə səbəb olacaq və dərhal hesab ödəniş metodunuzdan çıxılacaq. İlk çıxılacaq hesab, hazırkı faktura dövrünün qalanı üçün etibarlı olacaq." + }, + "seatsRemoveNote": { + "message": "İstifadəçi yerlərinin götürülməsi, növbəti faktura ödənişinizə kredit kimi görünəcək faktura cəminizdə dəyişikliklərə səbəb olacaq." + }, + "adjustedSeats": { + "message": "$AMOUNT$ istifadəçi yeri nizamlandı.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Açar yeniləndi" + }, + "updateKeyTitle": { + "message": "Açarı yenilə" + }, + "updateEncryptionKey": { + "message": "Şifrələmə açarını yenilə" + }, + "updateEncryptionKeyShortDesc": { + "message": "Hal-hazırda köhnə bir şifrələmə sxemi istifadə edirsiniz." + }, + "updateEncryptionKeyDesc": { + "message": "Daha yaxşı təhlükəsizlik və daha yeni özəlliklərə müraciəti təmin edən daha böyük şifrələmə açarlarına keçdik. Şifrələmə açarınızı yeniləmək sürətli və asandır. Sadəcə aşağıda ana parolunuzu yazın. Bu yeniləmə, nəticədə məcburi olacaq." + }, + "updateEncryptionKeyWarning": { + "message": "Şifrələmə açarını yenilədikdən sonra, hazırda istifadə etdiyiniz (mobil tətbiq və ya səyyah genişləndirmələri kimi) bütün Bitwarden tətbiqlərində çıxış edib yenidən giriş etməlisiniz. Çıxış edib təkrar giriş etməmək (yeni şifrələmə açarının endirilməsi prosesi) verilənlərin zədələnməsi ilə nəticələnə bilər. Avtomatik olaraq çıxış etməyə çalışacağıq, bu gecikə bilər." + }, + "updateEncryptionKeyExportWarning": { + "message": "Saxladığınız bütün şifrələmə ixracları da etibarsız olacaq." + }, + "subscription": { + "message": "Abunəlik" + }, + "loading": { + "message": "Yüklənir" + }, + "upgrade": { + "message": "Yüksəlt" + }, + "upgradeOrganization": { + "message": "Təşkilatı yüksəlt" + }, + "upgradeOrganizationDesc": { + "message": "Bu özəllik, ödənişsiz təşkilatlar üçün əlçatan deyil. Daha çox özəlliyin kilidini açmaq üçün ödənişli plana keçin." + }, + "createOrganizationStep1": { + "message": "Təşkilat yaratma: 1-ci addım" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Təşkilat yaratmazdan əvvəl, ödənişsiz bir fərdi hesab açmalısınız." + }, + "refunded": { + "message": "Geri qaytarıldı" + }, + "nothingSelected": { + "message": "Heç nə seçmədiniz." + }, + "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." + }, + "termsOfService": { + "message": "Xidmət Şərtləri" + }, + "privacyPolicy": { + "message": "Gizlilik Siyasəti" + }, + "filters": { + "message": "Filtrlər" + }, + "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." + }, + "oneMinute": { + "message": "1 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" + }, + "onRefresh": { + "message": "Səyyah təzələnəndə" + }, + "dateUpdated": { + "message": "Yeniləndi", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parol yeniləndi", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Təşkilat sıradan çıxarıldı." + }, + "licenseIsExpired": { + "message": "Lisenziyanın vaxtı bitib." + }, + "updatedUsers": { + "message": "İstifadəçilər yeniləndi" + }, + "selected": { + "message": "Seçildi" + }, + "ownership": { + "message": "Sahiblik" + }, + "whoOwnsThisItem": { + "message": "Bu elementin sahibi kimdir?" + }, + "strong": { + "message": "Güclü", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Yaxşı", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Zəif", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Çox Zəif", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Həmçinin hesabımın şifrələmə açarını da döndər" + }, + "rotateEncKeyTitle": { + "message": "Şifrələmə açarını döndər" + }, + "rotateEncKeyConfirmation": { + "message": "Hesabınızın şifrələmə açarını döndərmək istədiyinizə əminsiniz?" + }, + "attachmentsNeedFix": { + "message": "Bu element, düzəldilməli köhnə fayl qoşmalarını ehtiva edir." + }, + "attachmentFixDesc": { + "message": "Bu, düzəldilməli köhnə bir fayl qoşmasıdır. Daha ətraflı öyrənmək üçün klikləyin." + }, + "fix": { + "message": "Düzəlt", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Hesabınızın şifrələmə açarını döndərməzdən əvvəl, anbarınızdakı köhnə fayl qoşmalarını düzəltməlisiniz." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Şifrələmə açarlarının bütövlüyünü təmin etmək üçün, davam etməzdən əvvəl istifadəçinin barmaq izi ifadəsini təsdiqləyin.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Barmaq izi ifadəsini təkrar soruşma", + "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." + }, + "free": { + "message": "Ödənişsiz", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API açar" + }, + "apiKeyDesc": { + "message": "API açarınız Bitwarden ictimai API-sini təsdiqləmək üçün istifadə edilə bilər." + }, + "apiKeyRotateDesc": { + "message": "API açarı döndərmək, əvvəlki açarı etibarsız edəcək. Hazırkı açarın artıq təhlükəsiz olmadığına inanırsınızsa, API açarınızı döndərə bilərsiniz." + }, + "apiKeyWarning": { + "message": "API açarınızın təşkilata tam müraciəti var. Gizli saxlanılmalıdır." + }, + "userApiKeyDesc": { + "message": "API açarınız Bitwarden CLI-sini təsdiqləmək üçün istifadə edilə bilər." + }, + "userApiKeyWarning": { + "message": "API açarınız, alternativ bir kimlik təsdiqləmə mexanizmidir. Gizli saxlanılmalıdır." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 müştəri məlumatları", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API açarına bax" + }, + "rotateApiKey": { + "message": "API açarını döndər" + }, + "selectOneCollection": { + "message": "Ən azı bir kolleksiya seçməlisiniz." + }, + "couldNotChargeCardPayInvoice": { + "message": "Kartınızdan ödənişi ala bilmədik. Zəhmət olmasa aşağıda siyahılanan ödənilməmiş fakturanı göstərin və ödəyin." + }, + "inAppPurchase": { + "message": "Tətbiq daxili satın alma" + }, + "cannotPerformInAppPurchase": { + "message": "Tətbiq daxili satın alma metodunu istifadə edərkən bu əməliyyatı icra edə bilməzsiniz." + }, + "manageSubscriptionFromStore": { + "message": "Abunəliyinizi tətbiq daxili satın almanı etdiyiniz mağazadan idarə etməlisiniz." + }, + "minLength": { + "message": "Minimal uzunluq" + }, + "clone": { + "message": "Klonla" + }, + "masterPassPolicyDesc": { + "message": "Ana parol gücü üçün minimum tələbləri tənzimlə." + }, + "twoStepLoginPolicyDesc": { + "message": "İstifadəçilərin fərdi hesablarında \"iki mərhələli giriş\"i istifadə etmələrini məcburi et." + }, + "twoStepLoginPolicyWarning": { + "message": "Sahib və ya Administrator olmayan və fərdi hesablarında \"iki mərhələli giriş\"i fəallaşdırmayan təşkilat üzvləri təşkilatdan çıxarılacaq və dəyişiklik haqqında onları məlumatlandıran e-poçt göndəriləcək." + }, + "twoStepLoginPolicyUserWarning": { + "message": "İstifadəçi hesabında \"iki mərhələli giriş\"in fəallaşdırılmasını tələb edən təşkilatın üzvüsünüz. İki mərhələli giriş təchizatçılarının hamısını sıradan çıxartsanız, bu təşkilatdan avtomatik olaraq çıxarılacaqsınız." + }, + "passwordGeneratorPolicyDesc": { + "message": "Parol yaradıcı konfiqurasiyası üçün minimum tələbləri tənzimləyin." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Bir və ya daha çox təşkilat siyasətləri yaradıcı seçimlərinizə təsir edir." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum söz sayı" + }, + "defaultType": { + "message": "İlkin növ" + }, + "userPreference": { + "message": "İstifadəçi tərcihi" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Tullantı qutusunda axtar" + }, + "permanentlyDelete": { + "message": "Birdəfəlik sil" + }, + "permanentlyDeleteSelected": { + "message": "Seçiləni birdəfəlik sil" + }, + "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" + }, + "permanentlyDeletedItems": { + "message": "Elementlər birdəfəlik silindi" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Birdəfəlik silmək üçün $COUNT$ element seçdiniz. Onların hamısını birdəfəlik silmək istədiyinizə əminsiniz?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "$ID$ elementi birdəfəlik silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Bərpa et" + }, + "restoreSelected": { + "message": "Seçiləni bərpa et" + }, + "restoreItem": { + "message": "Elementi bərpa et" + }, + "restoredItem": { + "message": "Element bərpa edildi" + }, + "restoredItems": { + "message": "Elementlər bərpa edildi" + }, + "restoreItemConfirmation": { + "message": "Elementi bərpa etmək istədiyinizə əminsiniz?" + }, + "restoreItems": { + "message": "Elementləri bərpa et" + }, + "restoreSelectedItemsDesc": { + "message": "Bərpa üçün $COUNT$ element seçdiniz. Onların hamısını bərpa etmək istədiyinizə əminsiniz?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "$ID$ elementi bərpa edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Parolları gizlət" + }, + "countryPostalCodeRequiredDesc": { + "message": "Bu məlumatları sadəcə satış vergisinin hesablanması və maliyyə hesabatları üçün tələb edirik." + }, + "includeVAT": { + "message": "ƏDV məlumatını daxil et (ixtiyari)" + }, + "taxIdNumber": { + "message": "ƏDV vergi kimlik nömrəsi" + }, + "taxInfoUpdated": { + "message": "Vergi məlumatlarınız yeniləndi." + }, + "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." + }, + "identifier": { + "message": "İdentifikator" + }, + "organizationIdentifier": { + "message": "Təşkilat identifikatoru" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Təşkilatınızın tək daxil olma portalını istifadə edərək giriş edin. Başlatmaq üçün zəhmət olmasa təşkilatınızın identifikatorunu daxil edin." + }, + "enterpriseSingleSignOn": { + "message": "Müəssisə üçün tək daxil olma" + }, + "ssoHandOff": { + "message": "Bu vərəqi indi bağlayıb genişləndirmədə davam edə bilərsiniz." + }, + "includeAllTeamsFeatures": { + "message": "Bütün komanda özəllikləri, əlavə olaraq:" + }, + "includeSsoAuthentication": { + "message": "SAML2.0 və OpenID Connect SSO Kimlik təsdiqləmə" + }, + "includeEnterprisePolicies": { + "message": "Müəssisə siyasətləri" + }, + "ssoValidationFailed": { + "message": "SSO təsdiqləmə uğursuz oldu" + }, + "ssoIdentifierRequired": { + "message": "Təşkilat identifikatoru tələb olunur." + }, + "unlinkSso": { + "message": "SSO əlaqəsini kəs" + }, + "unlinkSsoConfirmation": { + "message": "Bu təşkilat üçün SSO əlaqəsini kəsmək istədiyinizə əminsiniz?" + }, + "linkSso": { + "message": "SSO bağlantısını yarat" + }, + "singleOrg": { + "message": "Tək təşkilat" + }, + "singleOrgDesc": { + "message": "İstifadəçilərin digər təşkilatlara qoşulmasını məhdudlaşdırın." + }, + "singleOrgBlockCreateMessage": { + "message": "Hazırkı təşkilatınızın, bir neçə təşkilata qoşulmasına icazə verməyən bir siyasəti var. Zəhmət olmasa təşkilat adminləri ilə əlaqə saxlayın və ya fərqli bir Bitwarden hesabı ilə qeydiyyatdan keçin." + }, + "singleOrgPolicyWarning": { + "message": "Sahib və ya administrator olmayan və hal-hazırda başqa bir təşkilatın üzvü olan istifadəçilər təşkilatınızdan çıxarılacaq." + }, + "requireSso": { + "message": "Tək daxil olma kimlik təsdiqləməsi" + }, + "requireSsoPolicyDesc": { + "message": "İstifadəçilərin müəssisə kimi \"tək daxil olma\" metodu ilə giriş etməsini məcburi edin." + }, + "prerequisite": { + "message": "Ön şərt" + }, + "requireSsoPolicyReq": { + "message": "\"Tək təşkilat\" müəssisə siyasəti, bu siyasəti aktivləşdirməzdən əvvəl fəallaşdırılmalıdır." + }, + "requireSsoPolicyReqError": { + "message": "Tək təşkilat siyasəti fəal deyil." + }, + "requireSsoExemption": { + "message": "Təşkilat sahibləri və administratorlar, bu siyasətin tətbiq edilməsindən azaddırlar." + }, + "sendTypeFile": { + "message": "Fayl" + }, + "sendTypeText": { + "message": "Mətn" + }, + "createSend": { + "message": "Yeni \"Send\" yarat", + "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." + }, + "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." + }, + "deleteSend": { + "message": "\"Send\"i sil", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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ı" + }, + "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." + }, + "disabled": { + "message": "Sıradan çıxarıldı" + }, + "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." + }, + "copySendLink": { + "message": "\"Send\" bağlantısını kopyala", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Parolu çıxart" + }, + "removedPassword": { + "message": "Parol çıxarıldı" + }, + "removePasswordConfirmation": { + "message": "Parolu çıxartmaq istədiyinizə əminsiniz?" + }, + "hideEmail": { + "message": "E-poçt ünvanımı alıcılardan gizlət." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Bütün \"Send\"lər" + }, + "maxAccessCountReached": { + "message": "Maksimal müraciət sayına çatıldı", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Silinməsi gözlənilir" + }, + "expired": { + "message": "Müddəti bitib" + }, + "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." + }, + "sendProtectedPassword": { + "message": "Bu \"Send\" şifrə ilə qorunur. Davam etmək üçün zəhmət olmasa aşağıda parolu yazın.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Şifrəni bilmirsiniz? Bu \"Send\"ə müraciət etmək üçün parolu göndərən şəxsdən istəyin.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Bu \"send\" ilkin olaraq gizlidir. Aşağıdakı düyməni istifadə edərək görünməni dəyişdirə bilərsiniz.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Faylı endir" + }, + "sendAccessUnavailable": { + "message": "Müraciət etməyə çalışdığınız Send yoxdur və ya artıq əlçatmazdır.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Bu \"Send\" ilə əlaqəli fayl tapıla bilmədi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Siyahılanacaq heç bir \"Send\" yoxdur.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Fövqəladə vəziyyət müraciəti" + }, + "emergencyAccessDesc": { + "message": "Etibar etdiyiniz şəxslərə fövqəladə vəziyyət müraciəti verin və ya idarə edin. Etibar etdiyiniz şəxslər, fövqəladə vəziyyətdə hesabınızı görmək və ya təhvil almaq üçün müraciət tələb edə bilər. Sıfır məlumat paylaşımının necə işlədiyi ilə bağlı daha ətraflı və təfsilatlı məlumat üçün kömək səhifəmizi ziyarət edin." + }, + "emergencyAccessOwnerWarning": { + "message": "Bir və ya daha çox təşkilata sahiblik edirsiniz. Fövqəladə vəziyyət üçün təyin olunmuş şəxsə təhvil alma müraciəti versəniz, təhvil almadan sonra sahib olduğunuz bütün hüquqları istifadə edə bilər." + }, + "trustedEmergencyContacts": { + "message": "Etibar edilən fövqəladə vəziyyət əlaqələri" + }, + "noTrustedContacts": { + "message": "Hələ ki, heç bir fövqəladə vəziyyət əlaqəsi əlavə etmədiniz, başlamaq üçün etibar etdiyiniz bir əlaqəni dəvət edin." + }, + "addEmergencyContact": { + "message": "Fövqəladə vəziyyət əlaqəsi əlavə et" + }, + "designatedEmergencyContacts": { + "message": "Fövqəladə vəziyyət əlaqəsi kimi təyin edildi" + }, + "noGrantedAccess": { + "message": "Hələ ki, heç kimi fövqəladə vəziyyət əlaqəsi kimi təyin etmədiniz." + }, + "inviteEmergencyContact": { + "message": "Fövqəladə vəziyyət əlaqəsi üçün dəvət" + }, + "editEmergencyContact": { + "message": "Fövqəladə vəziyyət əlaqəsinə düzəliş et" + }, + "inviteEmergencyContactDesc": { + "message": "Aşağıda Bitwarden hesabının e-poçt ünvanını daxil edərək yeni bir fövqəladə vəziyyət əlaqəsini dəvət edə bilərsiniz. Əgər Bitwarden hesabı yoxdursa, yeni bir hesab yaratmaları üçün istək göndəriləcək." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Fövqəladə vəziyyət müraciəti başladıldı" + }, + "emergencyAccessRecoveryApproved": { + "message": "Fövqəladə vəziyyət müraciəti təsdiqləndi" + }, + "viewDesc": { + "message": "Anbarınızdakı bütün elementlərə baxa bilər." + }, + "takeover": { + "message": "Təhvil alma" + }, + "takeoverDesc": { + "message": "Yeni bir ana parol ilə hesabınızı sıfırlaya bilər." + }, + "waitTime": { + "message": "Gözləmə vaxtı" + }, + "waitTimeDesc": { + "message": "Müraciətə avtomatik icazə verilməzdən əvvəlki tələb olunan vaxt." + }, + "oneDay": { + "message": "1 gün" + }, + "days": { + "message": "$DAYS$ gün", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Dəvət edilən istifadəçi." + }, + "acceptEmergencyAccess": { + "message": "Yuxarıdakı istifadəçi üçün fövqəladə vəziyyət zamanı əlaqə qurulacaq şəxs olaraq dəvət edildiniz. Dəvəti qəbul etmək üçün Bitwarden hesabına giriş etməli və ya yeni bir hesab yaratmalısınız." + }, + "emergencyInviteAcceptFailed": { + "message": "Dəvət qəbul edilə bilmədi. İstifadəçidən yeni bir dəvət göndərməsini xahiş edin." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Dəvət qəbul edilə bilmədi. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Kimliyiniz təsdiqləndikdən sonra bu istifadəçi üçün fövqəladə vəziyyət seçimlərinə müraciət edə bilərsiniz. Bu baş verəndə sizə bir e-poçt göndərəcəyik." + }, + "requestAccess": { + "message": "Müraciət tələb et" + }, + "requestAccessConfirmation": { + "message": "Fövqəladə vəziyyət müraciəti üçün tələb göndərmək istədiyinizə əminsiniz? İstifadəçi tələbi əllə qəbul etdikdən və ya $WAITTIME$ gün keçdikdən sonra müraciət təmin ediləcək.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "$USER$ istifadəçisinə fövqəladə vəziyyət müraciəti göndərildi. Davam etmək mümkün olanda, sizi e-poçtla məlumatlandıracağıq.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Təsdiqlə" + }, + "reject": { + "message": "Rədd et" + }, + "approveAccessConfirmation": { + "message": "Fövqəladə vəziyyət müraciətini təsdiqləmək istədiyinizə əminsiniz? Bu, $USER$ istifadəçisinə hesabınızda $ACTION$ əməliyyatlarını icra etmə icazəsi verəcək.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Fövqəladə vəziyyət müraciəti təsdiqləndi." + }, + "emergencyRejected": { + "message": "Fövqəladə vəziyyət müraciəti rədd edildi" + }, + "passwordResetFor": { + "message": "$USER$ üçün parol sıfırlandı. Artıq yeni parol ilə giriş edə bilərsiniz.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Fərdi sahiblik" + }, + "personalOwnershipPolicyDesc": { + "message": "Fərdi sahiblik seçimini çıxardaraq istifadəçilərin anbar elementlərini bir təşkilatda saxlamalarını məcburi edin." + }, + "personalOwnershipExemption": { + "message": "Təşkilat sahibləri və administratorlar, bu siyasətin tətbiq edilməsindən azaddırlar." + }, + "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." + }, + "disableSend": { + "message": "\"Send\"i sıradan çıxart" + }, + "disableSendPolicyDesc": { + "message": "İstifadəçilərin Bitwarden Send yaratmasına və ya ona düzəliş etməsinə icazə vermə. Mövcud \"Send\"in silinməsinə hələ də icazə verilir.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Təşkilatın siyasətlərini idarə edə bilən təşkilat istifadəçiləri bu siyasətin tətbiqindən azaddırlar." + }, + "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." + }, + "sendOptions": { + "message": "Send seçimləri", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "\"Send\" yaratma və düzəliş etmə üçün seçimləri tənzimləyin.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Təşkilatın siyasətlərini idarə edə bilən təşkilat istifadəçiləri bu siyasətin tətbiqindən azaddırlar." + }, + "disableHideEmail": { + "message": "\"Send\" yaradarkən və ya ona düzəliş edərkən istifadəçilərin e-poçt ünvanlarını alıcılardan gizlətməsinə icazə verməyin.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Aşağıdakı təşkilat siyasətləri hal-hazırda qüvvədədir:" + }, + "sendDisableHideEmailInEffect": { + "message": "\"Send\" yaradarkən və ya ona düzəliş edərkən istifadəçilərin e-poçt ünvanlarını alıcılardan gizlətməsinə icazə verilmir.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "$ID$ siyasətinə düzəliş edildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan qiyməti" + }, + "estimatedTax": { + "message": "Təxmini vergi" + }, + "custom": { + "message": "Özəl" + }, + "customDesc": { + "message": "Qabaqcıl konfiqurasiya üçün istifadəçi icazələrinin daha təfsilatlı nəzarətinə icazə verər." + }, + "permissions": { + "message": "İcazələr" + }, + "accessEventLogs": { + "message": "Tədbir jurnalına müraciət" + }, + "accessImportExport": { + "message": "İdxal/ixrac müraciəti" + }, + "accessReports": { + "message": "Hesabatlara müraciət" + }, + "missingPermissions": { + "message": "Bu əməliyyatı icra etmək üçün lazımi icazələri əldə etməmisiniz." + }, + "manageAllCollections": { + "message": "Bütün kolleksiyaları idarə et" + }, + "createNewCollections": { + "message": "Yeni kolleksiya yarat" + }, + "editAnyCollection": { + "message": "İstənilən kolleksiyaya düzəliş et" + }, + "deleteAnyCollection": { + "message": "İstənilən kolleksiyanı sil" + }, + "manageAssignedCollections": { + "message": "Təyin edilmiş kolleksiyaları idarə et" + }, + "editAssignedCollections": { + "message": "Təyin edilmiş kolleksiyalara düzəliş et" + }, + "deleteAssignedCollections": { + "message": "Təyin edilmiş kolleksiyaları sil" + }, + "manageGroups": { + "message": "Qrupları idarə et" + }, + "managePolicies": { + "message": "Siyasətləri idarə et" + }, + "manageSso": { + "message": "SSO idarəsi" + }, + "manageUsers": { + "message": "İstifadəçiləri idarə et" + }, + "manageResetPassword": { + "message": "\"Parol sıfırlama\"nı idarə et" + }, + "disableRequiredError": { + "message": "Bu siyasətin sıradan çıxarıla bilməsi üçün $POLICYNAME$ siyasətini əllə sıradan çıxartmalısınız.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Bir təşkilat siyasəti, sahiblik seçimlərinizə təsir edir." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Bir təşkilatın siyasəti, elementlərin fərdi anbarınıza idxal edilməsini sıradan çıxartdı." + }, + "personalOwnershipCheckboxDesc": { + "message": "Təşkilat istifadəçiləri üçün fərdi sahibliyi sıradan çıxart" + }, + "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." + }, + "sendNameDesc": { + "message": "Bu \"Send\"i açıqlayan bir ad.", + "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." + }, + "copySendLinkOnSave": { + "message": "Saxladıqdan sonra bu \"Send\"in paylaşma bağlantısını lövhəmə kopyala." + }, + "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." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "\"Bitwarden Send\" həssas, müvəqqəti məlumatlarına başqa şəxslərə asan və təhlükəsiz göndərilməsini təmin edir.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Daha ətraflı öyrən", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Mətn və ya faylları birbaşa hər kəslə paylaşın." + }, + "sendVaultCardLearnMore": { + "message": "Daha ətraflı", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "bax", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "necə işləyir", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "və ya", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "indi sınayın", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "və ya", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "qeydiyyatdan keçin", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "bu gün sınamaq üçün.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "$USER_IDENTIFIER$ Bitwarden istifadəçisi aşağıdakıları sizinlə paylaşdı", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Bu \"Send\"i yaradan Bitwarden istifadəçisi e-poçt ünvanını gizlətməyi seçdi. İstifadə etməzdən və ya endirməzdən əvvəl bu bağlantının mənbəyinin etibarlı olduğuna əmin olmalısınız.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Göstərilən son istifadə tarixi etibarsızdır." + }, + "deletionDateIsInvalid": { + "message": "Göstərilən silinmə tarixi etibarsızdır." + }, + "expirationDateAndTimeRequired": { + "message": "Son istifadə tarixi və vaxtı lazımdır." + }, + "deletionDateAndTimeRequired": { + "message": "Silinmə tarixi və vaxtı lazımdır." + }, + "dateParsingError": { + "message": "Silinmə və son istifadə tarixlərini saxlayarkən xəta baş verdi." + }, + "webAuthnFallbackMsg": { + "message": "2FA-nı təsdiqləmək üçün zəhmət olmasa aşağıdakı düyməyə klikləyin." + }, + "webAuthnAuthenticate": { + "message": "WebAuthn təsdiqləmə" + }, + "webAuthnNotSupported": { + "message": "WebAuthn bu səyyahda dəstəklənmir." + }, + "webAuthnSuccess": { + "message": "WebAuthn uğurla təsdiqləndi! Bu vərəqi bağlaya bilərsiniz." + }, + "hintEqualsPassword": { + "message": "Parol məsləhəti, parolunuzla eyni ola bilməz." + }, + "enrollPasswordReset": { + "message": "\"Parol sıfırlama\" üzrə qeydiyyat" + }, + "enrolledPasswordReset": { + "message": "\"Parol sıfırlama\" üzrə qeydiyyat tamamlandı" + }, + "withdrawPasswordReset": { + "message": "\"Parol sıfırlama\"dan çıx" + }, + "enrollPasswordResetSuccess": { + "message": "Qeydiyyat uğurludur!" + }, + "withdrawPasswordResetSuccess": { + "message": "Çıxma uğurludur!" + }, + "eventEnrollPasswordReset": { + "message": "$ID$ istifadəçisi parol sıfırlama dəstəyi üçün qeydiyyatdan keçdi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "$ID$ istifadəçisi parol sıfırlama dəstəyindən çıxdı.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "$ID$ istifadəçisi üçün ana parol sıfırlama.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "$ID$ istifadəçisi üçün SSO bağlantısını sıfırla", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$, ilk dəfə Sso istifadə edərək giriş etdi", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Parol sıfırlama" + }, + "resetPasswordLoggedOutWarning": { + "message": "Davam etsəniz, $NAME$ üçün hazırkı seans bitəcək, təkrar giriş etməsi tələb olunacaq. Digər cihazlardakı aktiv seanslar, bir saata qədər aktiv qalmağa davam edə bilər.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "bu istifadəçi" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Bir və ya daha çox təşkilat siyasəti, aşağıdakı tələbləri qarşılamaq üçün ana parolu tələb edir:" + }, + "resetPasswordSuccess": { + "message": "Parol sıfırlama uğurludur!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Qeydiyyat, təşkilat administratorlarına ana parolunuzu dəyişdirmə icazəsi verəcək. Qeydiyyatdan keçmək istədiyinizə əminsiniz?" + }, + "resetPasswordPolicy": { + "message": "Ana parol sıfırlama" + }, + "resetPasswordPolicyDescription": { + "message": "Təşkilatdakı administratorların, təşkilat istifadəçilərinin ana parolu sıfırlamağına icazə verin." + }, + "resetPasswordPolicyWarning": { + "message": "Administratorların ana parolları sıfırlaya bilməsi üçün təşkilatdakı istifadəçilər öz-özünə və ya avtomatik olaraq qeydiyyatdan keçməlidir." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Avtomatik qeydiyyat" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Dəvətləri qəbul edən kimi bütün istifadəçilər avtomatik olaraq \"parol sıfırlama\"da qeydiyyata alınacaq." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Hal-hazırda təşkilatdakı istifadəçilər, \"parol sıfırlama\"da retroaktiv (geriyə yönələn) olaraq qeydiyyata alınmayacaq. Administratorlar ana parollarını sıfırlaya bilməsi üçün öz-özünə qeydiyyatdan keçməlidirilər." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Yeni istifadəçiləri avtomatik qeydiyyata al" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "\"Təşkilat açarları\" cavabı boşdur" + }, + "resetPasswordDetailsError": { + "message": "\"Parol təfsilatlarını sıfırla\" cavabı boşdur" + }, + "trashCleanupWarning": { + "message": "Tullantı qutusunda 30 gündən çox qalan elementlər avtomatik silinəcək." + }, + "trashCleanupWarningSelfHosted": { + "message": "Tullantı qutusunda bir müddət qalan elementlər avtomatik silinəcək." + }, + "passwordPrompt": { + "message": "Ana parolu təkrar soruş" + }, + "passwordConfirmation": { + "message": "Ana parol 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." + }, + "reinviteSelected": { + "message": "Dəvətləri yenidən göndər" + }, + "noSelectedUsersApplicable": { + "message": "Bu əməliyyat, seçilən istifadəçilərin heç biri üçün etibarlı deyil." + }, + "removeUsersWarning": { + "message": "Aşağıdakı istifadəçiləri çıxartmaq istədiyinizə əminsiniz? Bu prosesin tamamlanması bir neçə saniyə çəkir, ləğv edilə və ya dayandırıla bilməz." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Veb anbarınız üçün bir tema seçin." + }, + "themeSystem": { + "message": "Sistem temasını istifadə et" + }, + "themeDark": { + "message": "Tünd" + }, + "themeLight": { + "message": "Açıq" + }, + "confirmSelected": { + "message": "Seçiləni təsdiqlə" + }, + "bulkConfirmStatus": { + "message": "Toplu əməliyyat vəziyyəti" + }, + "bulkConfirmMessage": { + "message": "Uğurla təsdiqləndi." + }, + "bulkReinviteMessage": { + "message": "Uğurla yenidən dəvət edildi." + }, + "bulkRemovedMessage": { + "message": "Uğurla çıxarıldı" + }, + "bulkFilteredMessage": { + "message": "İstisna edildi, bu əməliyyat üçün etibarlı deyil." + }, + "fingerprint": { + "message": "Barmaq izi" + }, + "removeUsers": { + "message": "İstifadəçiləri çıxart" + }, + "error": { + "message": "Xəta" + }, + "resetPasswordManageUsers": { + "message": "\"İstifadəçiləri idarə et\", \"Parol sıfırlanmasını idarə et\" icazəsi ilə də fəallaşdırılmalıdır" + }, + "setupProvider": { + "message": "Təchizatçı quraşdırması" + }, + "setupProviderLoginDesc": { + "message": "Yeni bir təchizatçı quraşdırılması üçün dəvət edildiniz. Davam etmək üçün yeni bir Bitwarden hesabı açın və ya mövcud hesaba giriş edin." + }, + "setupProviderDesc": { + "message": "Təchizatçının quraşdırılmasını tamamlamaq üçün zəhmət olmasa aşağıdakı məlumatları daxil edin. Sual yaranarsa, müştəri dəstəyi ilə əlaqə saxlayın." + }, + "providerName": { + "message": "Təchizatçı adı" + }, + "providerSetup": { + "message": "Təchizatçı quraşdırıldı." + }, + "clients": { + "message": "Müştərilər" + }, + "providerAdmin": { + "message": "Təchizatçı admini" + }, + "providerAdminDesc": { + "message": "Təchizatçınızın bütün aspektlərini idarə edə bilən, həmçinin müştəri təşkilatlarına müraciət edə və onları idarə edə bilən ən yüksək müraciətə sahib istifadəçi." + }, + "serviceUser": { + "message": "Xidmət istifadəçisi" + }, + "serviceUserDesc": { + "message": "Xidmət istifadəçisi, bütün müştəri təşkilatlarına müraciət edə və onları idarə edə bilər." + }, + "providerInviteUserDesc": { + "message": "Aşağıda Bitwarden hesabının e-poçt ünvanını daxil edərək təchizatçınıza yeni bir istifadəçi dəvət edə bilərsiniz. Əgər Bitwarden hesabı yoxdursa, yeni bir hesab yaratmaları üçün istək göndəriləcək." + }, + "joinProvider": { + "message": "Təchizatçıya qoşul" + }, + "joinProviderDesc": { + "message": "Yuxarıdakı təchizatçıya qoşulmaq üçün dəvət edildiniz. Dəvəti qəbul etmək üçün Bitwarden hesabına giriş etməli və ya yeni bir hesab yaratmalısınız." + }, + "providerInviteAcceptFailed": { + "message": "Dəvət qəbul edilə bilmədi. Təchizatçı adminindən yeni bir dəvət göndərməsini xahiş edin." + }, + "providerInviteAcceptedDesc": { + "message": "Administrator üzvlüyünüzü təsdiqlədikdən sonra bu təchizatçıya müraciət edə bilərsiniz. Bu baş verəndə sizə bir e-poçt göndərəcəyik." + }, + "providerUsersNeedConfirmed": { + "message": "Onların dəvətini qəbul edən istifadəçiləriniz var, ancaq hələ də təsdiqlənməlidir. İstifadəçilər, təsdiqlənənə qədər təchizatçıya müraciət edə bilməz." + }, + "provider": { + "message": "Təchizatçı" + }, + "newClientOrganization": { + "message": "Yeni müştəri təşkilatı" + }, + "newClientOrganizationDesc": { + "message": "Təchizatçı kimi sizinlə əlaqə yaradılacaq yeni bir müştəri təşkilatı yaradın. Bu təşkilata müraciət edə və onu idarə edə biləcəksiniz." + }, + "addExistingOrganization": { + "message": "Mövcud təşkilatı əlavə et" + }, + "myProvider": { + "message": "Təchizatçım" + }, + "addOrganizationConfirmation": { + "message": "$ORGANIZATION$ təşkilatını müştəri olaraq $PROVIDER$ təchizatçısına əlavə etmək istədiyinizə əminsiniz?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Təşkilat, uğurla təchizatçıya əlavə edildi" + }, + "accessingUsingProvider": { + "message": "$PROVIDER$ təchizatçısını istifadə edən təşkilata müraciət edilir", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Təchizatçı sıradan çıxarıldı." + }, + "providerUpdated": { + "message": "Təchizatçı yeniləndi" + }, + "yourProviderIs": { + "message": "Təchizatçınız: $PROVIDER$. Təşkilatınız üçün inzibati və faktura səlahiyyətlərinə sahibdir.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "$ORGANIZATION$ təşkilatı təchizatçınızdan ayrıldı.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Bu təşkilatı ayırmaq istədiyinizə əminsiniz? Təşkilat, mövcudluğunu davam etdirəcək, ancaq təchizatçı tərəfindən idarə edilməyəcək." + }, + "add": { + "message": "Əlavə et" + }, + "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 Ana parolunuzu 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." + }, + "masterPasswordInvalidWarning": { + "message": "Ana parolunuz bu təşkilatın siyasət tələblərinə cavab vermir. Təşkilata qoşulmaq üçün Ana parolunuzu 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." + }, + "maximumVaultTimeout": { + "message": "Anbara müraciət bitəcək" + }, + "maximumVaultTimeoutDesc": { + "message": "Bütün istifadəçilər üçün anbara müraciət üzrə maksimum vaxtı konfiqurasiya edin." + }, + "maximumVaultTimeoutLabel": { + "message": "Anbara müraciət üzrə maksimum vaxt" + }, + "invalidMaximumVaultTimeout": { + "message": "Etibarsız vaxt." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Özəl vaxt" + }, + "vaultTimeoutToLarge": { + "message": "Anbar vaxt bitişi, təşkilatınız tərəfindən tənzimlənən məhdudiyyətləri aşır." + }, + "disablePersonalVaultExport": { + "message": "Fərdi anbarın ixracını sıradan çıxart" + }, + "disablePersonalVaultExportDesc": { + "message": "İstifadəçilərin fərdi anbar verilənlərini ixrac etməsini əngəlləyir." + }, + "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." + }, + "selectType": { + "message": "SSO növü seçin" + }, + "type": { + "message": "Növ" + }, + "openIdConnectConfig": { + "message": "OpenID Bağlantı Konfiqurasiyası" + }, + "samlSpConfig": { + "message": "SAML Servis Təchizatçı Konfiqurasiyası" + }, + "samlIdpConfig": { + "message": "SAML Kimlik Təchizatçı Konfiqurasiyası" + }, + "callbackPath": { + "message": "Geri zəng yolu" + }, + "signedOutCallbackPath": { + "message": "Çıxış edilmiş geri zəng yolu" + }, + "authority": { + "message": "Səlahiyyət" + }, + "clientId": { + "message": "Müştəri kimliyi" + }, + "clientSecret": { + "message": "Müştəri sirri" + }, + "metadataAddress": { + "message": "Meta verilənlər ünvanı" + }, + "oidcRedirectBehavior": { + "message": "OIDC yönləndirmə davranışı" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "İstifadəçi məlumatı uc nöqtəsindən iddia edin" + }, + "additionalScopes": { + "message": "Əlavə/Özəl əhatə dairələri (vergüllə ayrıldı)" + }, + "additionalUserIdClaimTypes": { + "message": "Əlavə/Özəl istifadəçi kimliyi tələb növləri (vergüllə ayrıldı)" + }, + "additionalEmailClaimTypes": { + "message": "Əlavə/Özəl e-poçt tələb növləri (vergüllə ayrıldı)" + }, + "additionalNameClaimTypes": { + "message": "Əlavə/Özəl ad tələb növləri (vergüllə ayrıldı)" + }, + "acrValues": { + "message": "Tələb edilən kimlik təsdiqləmə kontekst istinad dəyərləri (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Cavab olaraq gözlənilən \"acr\" tələb dəyəri (acr təsdiqləməsi)" + }, + "spEntityId": { + "message": "SP Varlıq Kimliyi" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Meta verilənlər URL-si" + }, + "spAcsUrl": { + "message": "İddia İstehlakçı Xidməti (ACS) URL-si" + }, + "spNameIdFormat": { + "message": "Ad kimlik formatı" + }, + "spOutboundSigningAlgorithm": { + "message": "Gedən imzalama alqoritmi" + }, + "spSigningBehavior": { + "message": "İmzalama davranışı" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum gələn imza alqoritmi" + }, + "spWantAssertionsSigned": { + "message": "İddiaların imzalanmasını istəyir" + }, + "spValidateCertificates": { + "message": "Sertifikatları təsdiqlə" + }, + "idpEntityId": { + "message": "Varlıq kimliyi" + }, + "idpBindingType": { + "message": "Bağlanma növü" + }, + "idpSingleSignOnServiceUrl": { + "message": "Tək daxil olma xidmətinin URL-si" + }, + "idpSingleLogoutServiceUrl": { + "message": "Tək çıxış etmə xidmətinin URL-si" + }, + "idpX509PublicCert": { + "message": "X509 İctimai Sertifikat" + }, + "idpOutboundSigningAlgorithm": { + "message": "Gedən imzalama alqoritmi" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "İstənilməyən kimlik təsdiqləmə cavabına icazə ver" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Gedən çıxış tələblərinə icazə ver" + }, + "idpSignAuthenticationRequests": { + "message": "Kimlik təsdiqləmə tələblərini imzala" + }, + "ssoSettingsSaved": { + "message": "Tək daxil olma konfiqurasiyası saxlanıldı." + }, + "sponsoredFamilies": { + "message": "Ödənişsiz Bitwarden Ailələri" + }, + "sponsoredFamiliesEligible": { + "message": "Siz və ailəniz Ödənişsiz Bitwarden Ailələri üçün uyğunsunuz. İşdə olmadığınız vaxtlarda belə verilənlərinizi güvənli saxlamaq üçün özəl e-poçtunuzu istifadə edin." + }, + "sponsoredFamiliesEligibleCard": { + "message": "İşdə olmadığınız vaxtlarda belə verilənlərinizi güvənli saxlamaq üçün Ailələr üçün nəzərdə tutulan Ödənişsiz Bitwarden planını bu gün istifadə edin." + }, + "sponsoredFamiliesInclude": { + "message": "Ailələr üçün Bitwarden planı bunları ehtiva edir" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "6 istifadəçiyə qədər Premium müraciət" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Ailə sirləri üçün paylaşılan kolleksiyalar" + }, + "badToken": { + "message": "Bağlantı artıq etibarlı deyil. Zəhmət olmasa sponsorun təklifi yenidən göndərməsini təmin edin." + }, + "reclaimedFreePlan": { + "message": "Geri alınmış ödənişsiz plan" + }, + "redeem": { + "message": "İstifadə et" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Sponsor olmasını istədiyiniz təşkilatı seçin" + }, + "familiesSponsoringOrgSelect": { + "message": "Hansı Ödənişsiz Ailələr təklifindən faydalanmaq istəyirsiniz?" + }, + "sponsoredFamiliesEmail": { + "message": "\"Bitwarden Ailələri\"ni istifadə etmək üçün özəl e-poçtunuzu daxil edin" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Bu təşkilatı tərk etsəniz və ya bu təşkilatdan çıxarılsanız, Ailələr planınızın istifadə müddəti faktura dövrünün sonunda başa çatacaq." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Mövcud bir təşkilat üçün bir təklifi qəbul edin və ya yeni bir Ailələr təşkilatını yaradın." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Sizə ödənişsiz bir Bitwarden Ailələr Planı Təşkilatı təklif edildi. Davam etmək üçün, təklifi alan hesaba giriş etməlisiniz." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Təklif qəbul edilə bilmir. Zəhmət olmasa müəssisə hesabınızdan təklif e-poçtunu təkrar göndərib yenidən sınayın." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Təklif qəbul edilə bilmir. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "\"Ödənişsiz Bitwarden Ailələri\"ni qəbul et" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Ödənişsiz Bitwarden Ailələri təklifi uğurla istifadə edildi" + }, + "redeemed": { + "message": "İstifadə edildi" + }, + "redeemedAccount": { + "message": "İstifadə edilən hesab" + }, + "revokeAccount": { + "message": "$NAME$ hesabını ləğv et", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Sponsorluq e-poçtunu $NAME$ sponsorluğuna təkrar göndər", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Ödənişsiz Ailələr Planı" + }, + "redeemNow": { + "message": "İndi istifadə et" + }, + "recipient": { + "message": "Alıcı" + }, + "removeSponsorship": { + "message": "Sponsorluğu sil" + }, + "removeSponsorshipConfirmation": { + "message": "Bir sponsorluğu sildikdən sonra bu abunəliyə və əlaqəli fakturalara görə siz məsuliyyət daşıyacaqsınız. Davam etmək istəyirsiniz?" + }, + "sponsorshipCreated": { + "message": "Sponsorluq yaradıldı" + }, + "revoke": { + "message": "Geri al" + }, + "emailSent": { + "message": "E-poçt göndərildi" + }, + "revokeSponsorshipConfirmation": { + "message": "Bu hesabı sildikdən sonra bu abunəliyə və əlaqəli fakturalara görə Ailələr təşkilatının sahibi məsuliyyət daşıyacaq. Davam etmək istəyirsiniz?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorluq silindi" + }, + "ssoKeyConnectorUnavailable": { + "message": "Açar Bağlayıcı əlçatmazdır, daha sonra yenidən sınayın." + }, + "keyConnectorUrl": { + "message": "Açar Bağlayıcı URL-si" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Ana parolu sil" + }, + "removedMasterPassword": { + "message": "Ana parol silindi." + }, + "allowSso": { + "message": "SSO kimlik təsdiqləməsinə icazə ver" + }, + "allowSsoDesc": { + "message": "Qurulduqdan sonra, konfiqurasiyanız saxlanılacaq və üzvləriniz, Kimlik Təchizatçısı üçün kimlik məlumatlarını istifadə edərək kimliklərini təsdiqləyə biləcək." + }, + "ssoPolicyHelpStart": { + "message": "Bütün üzvlərin SSO ilə", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "giriş etməsini məcburi etmək üçün", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "SSO Siyasətini fəallaşdırın.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Açar Bağlayıcı şifrə açmanı quraşdırmaq üçün SSO Kimlik Təsdiqləmə və Tək Təşkilat siyasətləri tələb olunur." + }, + "memberDecryptionOption": { + "message": "Üzv şifrə açma seçimləri" + }, + "memberDecryptionPassDesc": { + "message": "Kimlik təsdiqləndikdən sonra üzvlər, Ana Parollarını istifadə edərək anbar verilənlərinin şifrələrini aça biləcək." + }, + "keyConnector": { + "message": "Açar Bağlayıcı" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "SSO ilə Giriş etməni, öz-özünə sahiblik edən şifrə açma açar serverinizə bağlayın. Bu seçimi istifadə edərək, üzvlərin anbar verilənlərinin şifrəsini açmaq üçün Ana Parollarını istifadə etməsinə ehtiyac qalmayacaq. Quraşdırma üzrə kömək üçün Bitwarden Dəstək ilə əlaqə saxlayın." + }, + "keyConnectorPolicyRestriction": { + "message": "\"SSO və Açar Bağlayıcı Şifrə Açma ilə Giriş\" fəaldır. Bu siyasət yalnız Sahiblər və Adminlər üçün etibarlıdır." + }, + "enabledSso": { + "message": "SSO fəaldır" + }, + "disabledSso": { + "message": "SSO sıradan çıxarılıb" + }, + "enabledKeyConnector": { + "message": "Açar Bağlayıcı fəaldır" + }, + "disabledKeyConnector": { + "message": "Açar Bağlayıcı sıradan çıxarılıb" + }, + "keyConnectorWarning": { + "message": "Açar Bağlayıcı qurulduqdan sonra, Üzv şifrə açma seçimləri dəyişdirilə bilməz." + }, + "migratedKeyConnector": { + "message": "Açar Bağlayıcıya daşındı" + }, + "paymentSponsored": { + "message": "Zəhmət olmasa təşkilatla əlaqələndirmək üçün bir ödəniş metodu təqdim edin. Narahat olmayın, əlavə özəllikləri seçmədiyiniz və ya sponsorluğunuz bitmədiyi müddətcə sizdən heç bir ödəniş tutulmayacaq. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Sponsorluq təklifinin müddəti bitdi. 7 günlük sınaq müddətinin sonunda ödəniş tutulmaması üçün yaratdığınız təşkilatı silə bilərsiniz. Əks halda, təşkilatı olduğu kimi saxlamaq və faktura məsuliyyətini öz üzərinizə götürmək üçün bu istəyi bağlaya bilərsiniz." + }, + "newFamiliesOrganization": { + "message": "Yeni Ailə Təşkilatı" + }, + "acceptOffer": { + "message": "Təklifi qəbul et" + }, + "sponsoringOrg": { + "message": "Sponsor Təşkilat" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Uğurlu! Açar Bağlayıcı əlçatandır." + }, + "keyConnectorTestFail": { + "message": "Açar Bağlayıcıya müraciət edilə bilmir. URL-ni yoxlayın." + }, + "sponsorshipTokenHasExpired": { + "message": "Sponsorluq təklifinin müddəti bitdi." + }, + "freeWithSponsorship": { + "message": "ÖDƏNİŞSİZ sponsorluq" + }, + "formErrorSummaryPlural": { + "message": "Yuxarıdakı $COUNT$ sahənin diqqətinizə ehtiyacı var.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "Yuxarıdakı 1 sahənin diqqətinizə ehtiyacı var." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ tələb olunur.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "tələb olunur" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Varlıq Kimliyi bir URL deyilsə tələb olunur." + }, + "openIdOptionalCustomizations": { + "message": "İxtiyari Özəlləşdirmələr" + }, + "openIdAuthorityRequired": { + "message": "Səlahiyyət etibarlı deyilsə tələb olunur." + }, + "separateMultipleWithComma": { + "message": "Vergüllə ayırın." + }, + "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ı" + }, + "exportingOrganizationVaultTitle": { + "message": "Təşkilat anbarını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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Yalnız $ORGANIZATION$ ilə əlaqəli təşkilat anbar elementləri ixrac ediləcək. Şəxsi anbar elementləri və digər təşkilatlardan olan elementlər daxil edilmir.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Hesabatlara qayıt" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "service": { + "message": "Xidmət" + } +} diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json new file mode 100644 index 0000000000..d56585d468 --- /dev/null +++ b/apps/web/src/locales/be/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ вэб-сховішча", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "Пароль" + }, + "newPassword": { + "message": "Новы пароль" + }, + "passphrase": { + "message": "Парольная фраза" + }, + "notes": { + "message": "Нататкі" + }, + "customFields": { + "message": "Карыстальніцкія палі" + }, + "cardholderName": { + "message": "Імя ўладальніка карткі" + }, + "number": { + "message": "Нумар" + }, + "brand": { + "message": "Тып карткі" + }, + "expiration": { + "message": "Тэрмін дзеяння" + }, + "securityCode": { + "message": "Код бяспекі (CVV)" + }, + "identityName": { + "message": "Імя" + }, + "company": { + "message": "Кампанія" + }, + "ssn": { + "message": "Нумар сацыяльнага страхавання" + }, + "passportNumber": { + "message": "Нумар пашпарта" + }, + "licenseNumber": { + "message": "Нумар ліцэнзіі" + }, + "email": { + "message": "Электронная пошта" + }, + "phone": { + "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": "Снежань" + }, + "title": { + "message": "Зварот" + }, + "mr": { + "message": "С-р" + }, + "mrs": { + "message": "С-ня" + }, + "ms": { + "message": "Пані" + }, + "dr": { + "message": "Док." + }, + "expirationMonth": { + "message": "Месяц заканчэння" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "Выдаліць" + }, + "unassigned": { + "message": "Непрызначаныя" + }, + "noneFolder": { + "message": "Без папкі", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Дадаць папку" + }, + "editFolder": { + "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." + }, + "never": { + "message": "Ніколі" + }, + "toggleVisibility": { + "message": "Пераключыць бачнасць" + }, + "toggleCollapse": { + "message": "Згарнуць/Разгарнуць", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Стварыць пароль" + }, + "checkPassword": { + "message": "Праверце, ці не скампраметаваны пароль." + }, + "passwordExposed": { + "message": "Гэты пароль быў скампраметаваны $VALUE$ раз(-ы/-оў). Вы павінны змяніць яго.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Гэты пароль не быў знойдзены ў вядомых базах уцечак. Можна працягваць яго выкарыстоўваць." + }, + "save": { + "message": "Захаваць" + }, + "cancel": { + "message": "Скасаваць" + }, + "canceled": { + "message": "Скасавана" + }, + "close": { + "message": "Закрыць" + }, + "delete": { + "message": "Выдаліць" + }, + "favorite": { + "message": "Абраны" + }, + "unfavorite": { + "message": "Выдаліць з абранага" + }, + "edit": { + "message": "Рэдагаваць" + }, + "searchCollection": { + "message": "Пошук у калекцыі" + }, + "searchFolder": { + "message": "Пошук у папцы" + }, + "searchFavorites": { + "message": "Пошук у абраным" + }, + "searchType": { + "message": "Пошук па тыпу", + "description": "Search item type" + }, + "searchVault": { + "message": "Пошук у сховішчы" + }, + "allItems": { + "message": "Усе элементы" + }, + "favorites": { + "message": "Абраныя" + }, + "types": { + "message": "Тыпы" + }, + "typeLogin": { + "message": "Імя карыстальніка" + }, + "typeCard": { + "message": "Картка" + }, + "typeIdentity": { + "message": "Пасведчанне" + }, + "typeSecureNote": { + "message": "Бяспечныя нататкі" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Папкі" + }, + "collections": { + "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": "Краіна" + }, + "shared": { + "message": "Абагуленыя" + }, + "attachments": { + "message": "Далучэнні" + }, + "select": { + "message": "Выбраць" + }, + "addItem": { + "message": "Дадаць элемент" + }, + "editItem": { + "message": "Рэдагаванне элемента" + }, + "viewItem": { + "message": "Прагляд элемента" + }, + "ex": { + "message": "напр.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Iншае" + }, + "share": { + "message": "Абагуліць" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ скапіяваны(-а)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Капіяваць значэнне", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Капіяваць пароль", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Капіяваць імя карыстальніка", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Капіяваць нумар", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Капіяваць код бяспекі", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Капіяваць URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Маё сховішча" + }, + "vault": { + "message": "Сховішча" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Выдаліць выбраныя" + }, + "moveSelected": { + "message": "Перамясціць выбраныя" + }, + "selectAll": { + "message": "Выбраць усё" + }, + "unselectAll": { + "message": "Адмяніць выбар" + }, + "launch": { + "message": "Запусціць" + }, + "newAttachment": { + "message": "Дадаць новае далучэнне" + }, + "deletedAttachment": { + "message": "Далучэнне выдалена" + }, + "deleteAttachmentConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэта далучэнне?" + }, + "attachmentSaved": { + "message": "Далучэнне захавана." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Выберыце файл." + }, + "maxFileSize": { + "message": "Максімальны памер файла 500 МБ." + }, + "updateKey": { + "message": "Вы не можаце выкарыстоўваць гэту функцыю, пакуль не абнавіце свой ключ шыфравання." + }, + "addedItem": { + "message": "Элемент дададзены" + }, + "editedItem": { + "message": "Элемент адрэдагаваны" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Выдаліць элемент" + }, + "deleteFolder": { + "message": "Выдаліць папку" + }, + "deleteAttachment": { + "message": "Выдаліць далучэнне" + }, + "deleteItemConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэты элемент?" + }, + "deletedItem": { + "message": "Выдалены элемент" + }, + "deletedItems": { + "message": "Выдаленыя элементы" + }, + "movedItems": { + "message": "Перамешчаныя элементы" + }, + "overwritePasswordConfirmation": { + "message": "Вы ўпэўнены, што хочаце перазапісаць бягучы пароль?" + }, + "editedFolder": { + "message": "Папка адрэдагавана" + }, + "addedFolder": { + "message": "Папка дададзена" + }, + "deleteFolderConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэту папку?" + }, + "deletedFolder": { + "message": "Папка выдалена" + }, + "loggedOut": { + "message": "Вы выйшлі са сховішча" + }, + "loginExpired": { + "message": "Скончыўся тэрмін дзеяння вашага сеансу." + }, + "logOutConfirmation": { + "message": "Вы ўпэўнены, што хочаце выйсці?" + }, + "logOut": { + "message": "Выйсці" + }, + "ok": { + "message": "ОК" + }, + "yes": { + "message": "Так" + }, + "no": { + "message": "Не" + }, + "loginOrCreateNewAccount": { + "message": "Увайдзіце або стварыце новы ўліковы запіс для доступу да бяспечнага сховішча." + }, + "createAccount": { + "message": "Стварыць уліковы запіс" + }, + "logIn": { + "message": "Увайсці" + }, + "submit": { + "message": "Адправіць" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Ваша імя" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "masterPass": { + "message": "Асноўны пароль" + }, + "masterPassDesc": { + "message": "Асноўны пароль — ключ да вашага бяспечнага сховішча. Ён вельмі важны, таму не забывайце яго. Аднавіць асноўны пароль немагчыма." + }, + "masterPassHintDesc": { + "message": "Падказка да асноўнага пароля можа дапамагчы вам яго ўспомніць." + }, + "reTypeMasterPass": { + "message": "Увядзіце асноўны пароль паўторна" + }, + "masterPassHint": { + "message": "Падказка да асноўнага пароля (неабавязкова)" + }, + "masterPassHintLabel": { + "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": "Адбылася нечаканая памылка." + }, + "emailAddress": { + "message": "Адрас эл. пошты" + }, + "yourVaultIsLocked": { + "message": "Ваша сховішча заблакіравана. Каб працягнуць, увядзіце асноўны пароль." + }, + "unlock": { + "message": "Разблакіраваць" + }, + "loggedInAsEmailOn": { + "message": "Выкананы ўваход на $HOSTNAME$ як $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Памылковы асноўны пароль" + }, + "lockNow": { + "message": "Заблакіраваць" + }, + "noItemsInList": { + "message": "Няма элементаў для паказу." + }, + "noCollectionsInList": { + "message": "Няма калекцый для паказу." + }, + "noGroupsInList": { + "message": "Няма груп для паказу." + }, + "noUsersInList": { + "message": "Няма карыстальнікаў для паказу." + }, + "noEventsInList": { + "message": "Няма падзей для паказу." + }, + "newOrganization": { + "message": "Новая арганізацыя" + }, + "noOrganizationsList": { + "message": "Вы не з'яўляецеся членам якой-небудзь арганізацыі. Арганізацыі дазваляюць бяспечна абменьвацца элементамі з іншымі карыстальнікамі." + }, + "versionNumber": { + "message": "Версія $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 вашага камп'ютара. Калі на ім ёсць кнопка, націсніце на яе." + }, + "loginUnavailable": { + "message": "Уваход недаступны" + }, + "noTwoStepProviders": { + "message": "У гэтага ўліковага запісу ўключаны двухэтапны ўваход, аднак ні адзін з наладжаных варыянтаў не падтрымліваецца гэтым вэб-браўзерам." + }, + "noTwoStepProviders2": { + "message": "Выкарыстоўвайце актуальын вэб-браўзар (напрыклад, Chrome) і/або дадайце дадатковыя варыянты праверкі сапраўднасці, якія падтрымліваюцца ў вэб-браўзерах (напрыклад, праграма для праверкі сапраўднасці)." + }, + "twoStepOptions": { + "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, 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." + }, + "u2fDesc": { + "message": "Выкарыстоўвайце любы ключ бяспекі FIDO U2F для доступу да вашага ўліковага запісу." + }, + "u2fTitle": { + "message": "Ключ бяспекі FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Электронная пошта" + }, + "emailDesc": { + "message": "Коды пацвярджэння будуць адпраўлены вам па электроннай пошце." + }, + "continue": { + "message": "Працягнуць" + }, + "organization": { + "message": "Арганізацыя" + }, + "organizations": { + "message": "Арганізацыя" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Код праверкі (TOTP)" + }, + "copyVerificationCode": { + "message": "Капіяваць код праверкі" + }, + "warning": { + "message": "Увага" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Экспарт сховішча" + }, + "fileFormat": { + "message": "Фармат файла" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Генератар пароляў" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Мін. колькасць лічбаў" + }, + "minSpecial": { + "message": "Мін. колькасць сімвалаў", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Пазбягаць неадназначных сімвалаў" + }, + "regeneratePassword": { + "message": "Стварыць новы пароль" + }, + "length": { + "message": "Даўжыня" + }, + "numWords": { + "message": "Колькасць слоў" + }, + "wordSeparator": { + "message": "Раздзяляльнік слоў" + }, + "capitalize": { + "message": "З вялікай літары", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Уключыць лічбу" + }, + "passwordHistory": { + "message": "Гісторыя пароляў" + }, + "noPasswordsInList": { + "message": "Няма пароляў для паказу." + }, + "clear": { + "message": "Ачысціць", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Уліковы запіс абноўлены" + }, + "changeEmail": { + "message": "Змяніць адрас электроннай пошты" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Новы адрас электроннай пошты" + }, + "code": { + "message": "Код" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Электронная пошта зменена" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Змяніць асноўны пароль" + }, + "masterPasswordChanged": { + "message": "Асноўны пароль зменены" + }, + "currentMasterPass": { + "message": "Бягучы асноўны пароль" + }, + "newMasterPass": { + "message": "Новы асноўны пароль" + }, + "confirmNewMasterPass": { + "message": "Пацвердзіць новы асноўны пароль" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Уліковы запіс выдалены" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "Мой уліковы запіс" + }, + "tools": { + "message": "Інструменты" + }, + "importData": { + "message": "Імпарт даных" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Параметры" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Мова" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Адключыць значкі вэб-сайтаў" + }, + "disableIconsDesc": { + "message": "Значкі вэб-сайтаў паказваюцца з кожным элементам у вашым сховішчы." + }, + "enableGravatars": { + "message": "Уключыць Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Па змаўчанні" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Выключыць" + }, + "include": { + "message": "Уключыць" + }, + "customize": { + "message": "Наладзіць" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Двухэтапны ўваход" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "Код аднаўлення" + }, + "providers": { + "message": "Правайдары", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Уключыць" + }, + "enabled": { + "message": "Уключана" + }, + "premium": { + "message": "Прэміяльны статус", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Прэміяльны статус" + }, + "premiumRequired": { + "message": "Патрабуецца прэміяльны статус" + }, + "premiumRequiredDesc": { + "message": "Для выкарыстання гэтай функцыі патрабуецца прэміяльны статус." + }, + "youHavePremiumAccess": { + "message": "У вас прэміяльын статус" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Кіраваць" + }, + "disable": { + "message": "Адключыць" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "Прылады на iOS" + }, + "androidDevices": { + "message": "Прылады на Android" + }, + "windowsDevices": { + "message": "Прылады на Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Ключ" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Сакрэтны ключ" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Справаздачы" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Вэб-сайт" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Вы абнавіліся да прэміяльнага статусу." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 ГБ зашыфраванага сховішча для далучаных файлаў." + }, + "premiumSignUpTwoStep": { + "message": "Дадатковыя варыянты двухэтапнага ўваходу, такія як YubiKey, FIDO U2F і Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "premiumSignUpReports": { + "message": "Гігіена пароляў, здароўе ўліковага запісу і справаздачы аб уцечках даных для забеспячэння бяспекі вашага сховішча." + }, + "premiumSignUpTotp": { + "message": "TOTP-генератар кодаў (2ФА) для імён карыстальнікаў вашага сховішча." + }, + "premiumSignUpSupport": { + "message": "Прыярытэтная падтрымка." + }, + "premiumSignUpFuture": { + "message": "Усе будучыя функцыі прэміяльнага статусу. Іх будзе больш!" + }, + "premiumPrice": { + "message": "Усяго толькі за $PRICE$ на год!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Спосаб аплаты" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Дадаць спосаб аплаты" + }, + "changePaymentMethod": { + "message": "Змяніць спосаб аплаты" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Трансакцыі", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Няма трансакцый." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Купіць прэміяльны статус" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Назва арганізацыі" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Карыстальнікі" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "Новая калекцыя" + }, + "addCollection": { + "message": "Дадаць калекцыю" + }, + "editCollection": { + "message": "Рэдагаваць калекцыю" + }, + "deleteCollectionConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэту калекцыю?" + }, + "editUser": { + "message": "Рэдагаваць карыстальніка" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слабы асноўны пароль" + }, + "weakMasterPasswordDesc": { + "message": "Асноўны пароль, выбраны вамі, з'яўляецца слабым. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць моцны асноўны пароль (або парольную фразу). Вы ўпэўнены, што хочаце выкарыстоўваць гэты асноўны пароль?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Задайце мінімальныя патрабаванні да надзейнасці асноўнага пароля." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "masterPasswordPolicyInEffect": { + "message": "Згодна з адной або некалькімі палітыкамі арганізацыі неабходна, каб ваш асноўны пароль адказваў наступным патрабаванням:" + }, + "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": "Ваш новы асноўны пароль не адпавядае патрабаванням палітыкі арганізацыі." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "setMasterPassword": { + "message": "Задаць асноўны пароль" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json new file mode 100644 index 0000000000..61bd5a654d --- /dev/null +++ b/apps/web/src/locales/bg/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Трезор по уеб „$APP_NAME$“", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "Парола" + }, + "newPassword": { + "message": "Нова парола" + }, + "passphrase": { + "message": "Парола-фраза" + }, + "notes": { + "message": "Бележки" + }, + "customFields": { + "message": "Допълнителни полета" + }, + "cardholderName": { + "message": "Име на притежателя на картата" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Вид" + }, + "expiration": { + "message": "Изтичане" + }, + "securityCode": { + "message": "Код за сигурност" + }, + "identityName": { + "message": "Име на самоличността" + }, + "company": { + "message": "Фирма" + }, + "ssn": { + "message": "Номер на осигуровката" + }, + "passportNumber": { + "message": "Номер на паспорта" + }, + "licenseNumber": { + "message": "Номер на лиценза" + }, + "email": { + "message": "Електронна поща" + }, + "phone": { + "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": "декември" + }, + "title": { + "message": "Обръщение" + }, + "mr": { + "message": "Г-н" + }, + "mrs": { + "message": "Г-жа" + }, + "ms": { + "message": "Г-жа" + }, + "dr": { + "message": "Д-р" + }, + "expirationMonth": { + "message": "Месец на изтичане" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "Премахване" + }, + "unassigned": { + "message": "Незададено" + }, + "noneFolder": { + "message": "Няма папка", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Добавяне на папка" + }, + "editFolder": { + "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." + }, + "never": { + "message": "Никога" + }, + "toggleVisibility": { + "message": "Превключване на видимостта" + }, + "toggleCollapse": { + "message": "Превключване на свиването", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Нова парола" + }, + "checkPassword": { + "message": "Проверка дали паролата е разкрита." + }, + "passwordExposed": { + "message": "Паролата е била разкрита поне $VALUE$ път/и в масивите с изтеклите данни. Непременно я сменете.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Паролата не е била разкрита в известните масиви с изтекли данни. Засега ползването ѝ изглежда безопасно." + }, + "save": { + "message": "Запазване" + }, + "cancel": { + "message": "Отказ" + }, + "canceled": { + "message": "Отказано" + }, + "close": { + "message": "Затваряне" + }, + "delete": { + "message": "Изтриване" + }, + "favorite": { + "message": "Любими" + }, + "unfavorite": { + "message": "Изваждане от любими" + }, + "edit": { + "message": "Редактиране" + }, + "searchCollection": { + "message": "Търсене в колекцията" + }, + "searchFolder": { + "message": "Търсене в папката" + }, + "searchFavorites": { + "message": "Търсене в любими" + }, + "searchType": { + "message": "Търсене по вид", + "description": "Search item type" + }, + "searchVault": { + "message": "Търсене в трезора" + }, + "allItems": { + "message": "Всички елементи" + }, + "favorites": { + "message": "Любими" + }, + "types": { + "message": "Видове" + }, + "typeLogin": { + "message": "Запис" + }, + "typeCard": { + "message": "Карта" + }, + "typeIdentity": { + "message": "Самоличност" + }, + "typeSecureNote": { + "message": "Защитена бележка" + }, + "typeLoginPlural": { + "message": "Записи" + }, + "typeCardPlural": { + "message": "Карти" + }, + "typeIdentityPlural": { + "message": "Самоличности" + }, + "typeSecureNotePlural": { + "message": "Защитени бележки" + }, + "folders": { + "message": "Папки" + }, + "collections": { + "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": "Държава" + }, + "shared": { + "message": "Споделено" + }, + "attachments": { + "message": "Прикачени файлове" + }, + "select": { + "message": "Избор" + }, + "addItem": { + "message": "Добавяне на елемент" + }, + "editItem": { + "message": "Редактиране на елемента" + }, + "viewItem": { + "message": "Преглед на елемента" + }, + "ex": { + "message": "напр.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Други" + }, + "share": { + "message": "Споделяне" + }, + "moveToOrganization": { + "message": "Преместване в организация" + }, + "valueCopied": { + "message": "$VALUE$ — копирано", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Копиране на стойността", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Копиране на паролата", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Копиране на потребителското име", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Копиране на но̀мера", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Копиране на кода за сигурност", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Копиране на адреса", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Моят трезор" + }, + "vault": { + "message": "Трезор" + }, + "moveSelectedToOrg": { + "message": "Преместване на избраните в организация" + }, + "deleteSelected": { + "message": "Изтриване на избраното" + }, + "moveSelected": { + "message": "Преместване на избраното" + }, + "selectAll": { + "message": "Избиране на всичко" + }, + "unselectAll": { + "message": "Без избиране" + }, + "launch": { + "message": "Пускане" + }, + "newAttachment": { + "message": "Прикачване на файл" + }, + "deletedAttachment": { + "message": "Прикаченият файл е изтрит" + }, + "deleteAttachmentConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете прикачения файл?" + }, + "attachmentSaved": { + "message": "Прикаченият файл е запазен." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Избор на файл." + }, + "maxFileSize": { + "message": "Големината на файла е най-много 500 MB." + }, + "updateKey": { + "message": "Трябва да обновите шифриращия си ключ, за да използвате тази възможност." + }, + "addedItem": { + "message": "Елементът е добавен" + }, + "editedItem": { + "message": "Елементът е редактиран" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ се премести в $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Избраните записи бяха преместени в $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Изтриване на елемента" + }, + "deleteFolder": { + "message": "Изтриване на папка" + }, + "deleteAttachment": { + "message": "Изтриване на прикачения файл" + }, + "deleteItemConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете елемента?" + }, + "deletedItem": { + "message": "Елементът е изтрит" + }, + "deletedItems": { + "message": "Елементите са изтрити" + }, + "movedItems": { + "message": "Елементите са преместени" + }, + "overwritePasswordConfirmation": { + "message": "Сигурни ли сте, че искате да обновите текущата парола?" + }, + "editedFolder": { + "message": "Редактирана папка" + }, + "addedFolder": { + "message": "Добавена папка" + }, + "deleteFolderConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете тази папка?" + }, + "deletedFolder": { + "message": "Изтрита папка" + }, + "loggedOut": { + "message": "Бяхте отписани" + }, + "loginExpired": { + "message": "Сесията ви изтече." + }, + "logOutConfirmation": { + "message": "Сигурни ли сте, че искате да се отпишете?" + }, + "logOut": { + "message": "Отписване" + }, + "ok": { + "message": "Добре" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Не" + }, + "loginOrCreateNewAccount": { + "message": "Впишете се или създайте нов абонамент, за да достъпите защитен трезор." + }, + "createAccount": { + "message": "Създаване на абонамент" + }, + "logIn": { + "message": "Вписване" + }, + "submit": { + "message": "Подаване" + }, + "emailAddressDesc": { + "message": "Ще се вписвате с адреса на електронната си поща." + }, + "yourName": { + "message": "Името ви" + }, + "yourNameDesc": { + "message": "Как да ви наричаме?" + }, + "masterPass": { + "message": "Главна парола" + }, + "masterPassDesc": { + "message": "Главната парола се използва за достъп до трезора ви. Запомнете я добре, защото възстановяването ѝ е абсолютно невъзможно." + }, + "masterPassHintDesc": { + "message": "Ако сте забравили главната парола, то подсказването може да ви помогне да си я припомните." + }, + "reTypeMasterPass": { + "message": "Въведете пак главната парола" + }, + "masterPassHint": { + "message": "Подсказка за главната парола (по избор)" + }, + "masterPassHintLabel": { + "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": "Възникна неочаквана грешка." + }, + "emailAddress": { + "message": "Адрес на електронната поща" + }, + "yourVaultIsLocked": { + "message": "Трезорът е заключен — въведете главната си парола, за да продължите." + }, + "unlock": { + "message": "Отключване" + }, + "loggedInAsEmailOn": { + "message": "Вписани сте като $EMAIL$ на $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Грешна главна парола" + }, + "lockNow": { + "message": "Заключване сега" + }, + "noItemsInList": { + "message": "Няма елементи за показване." + }, + "noCollectionsInList": { + "message": "Няма колекции за показване." + }, + "noGroupsInList": { + "message": "Няма групи за показване." + }, + "noUsersInList": { + "message": "Няма потребители за показване." + }, + "noEventsInList": { + "message": "Няма събития за показване." + }, + "newOrganization": { + "message": "Нова организация" + }, + "noOrganizationsList": { + "message": "Не сте член на никоя организация. Организациите позволяват да споделяте записи с други потребители по защитен начин." + }, + "versionNumber": { + "message": "Версия $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 порт на компютъра. Ако на устройството има бутон, натиснете го." + }, + "loginUnavailable": { + "message": "Записът липсва" + }, + "noTwoStepProviders": { + "message": "Абонаментът е защитен с двустепенно удостоверяване, но никой от настроените доставчици на удостоверяване не се поддържа от този браузър." + }, + "noTwoStepProviders2": { + "message": "Пробвайте с поддържан уеб браузър (като Chrome или Firefox) и други доставчици на удостоверяване, които се поддържат от браузърите (като специални програми за удостоверяване)." + }, + "twoStepOptions": { + "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, 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." + }, + "u2fDesc": { + "message": "Използвайте всяко устройство, поддържащо FIDO U2F, за да влезете в абонамента си." + }, + "u2fTitle": { + "message": "Устройство FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Използвайте всяко устройство, поддържащо WebAuthn, за да влезете в абонамента си." + }, + "webAuthnMigrated": { + "message": "(Мигрирано от FIDO)" + }, + "emailTitle": { + "message": "Електронна поща" + }, + "emailDesc": { + "message": "Кодовете за потвърждение ще ви бъдат пратени по електронна поща." + }, + "continue": { + "message": "Продължаване" + }, + "organization": { + "message": "Организация" + }, + "organizations": { + "message": "Организации" + }, + "moveToOrgDesc": { + "message": "Изберете организацията, в която искате да преместите записа. Преместването прехвърля собствеността му към новата организация. След това няма вече директно да го притежавате." + }, + "moveManyToOrgDesc": { + "message": "Изберете организацията, в която искате да преместите избраните записи. Преместването прехвърля собствеността им към новата организация. След това няма вече директно да ги притежавате." + }, + "collectionsDesc": { + "message": "Редактиране на колекциите, с които записът е споделен. Само потребителите на организациите, с които колекцията е споделена, ще виждат записа." + }, + "deleteSelectedItemsDesc": { + "message": "За изтриване сте избрали $COUNT$ елемента/и. Сигурни ли сте, че искате да ги изтриете?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Избор на папка, в която да се преместят $COUNT$ избрани записи.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Избрали сте $COUNT$ запис(а). От тях могат да се преместят: $MOVEABLE_COUNT$, не могат да се преместят: $NONMOVEABLE_COUNT$.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Код за потвърждаване (TOTP)" + }, + "copyVerificationCode": { + "message": "Копиране на кода за потвърждаване" + }, + "warning": { + "message": "ВНИМАНИЕ" + }, + "confirmVaultExport": { + "message": "Потвърждаване на изнасянето на трезора" + }, + "exportWarningDesc": { + "message": "Данните от трезора ви ще се изнесат в незащитен формат. Не го пращайте по незащитени канали като електронна поща. Изтрийте файла незабавно след като свършите работата си с него." + }, + "encExportKeyWarningDesc": { + "message": "При изнасяне данните се шифрират с ключа ви. Ако го смените, ще трябва наново да ги изнесете, защото няма да може да дешифрирате настоящия файл." + }, + "encExportAccountWarningDesc": { + "message": "Ключовете за шифриране са уникални за всеки потребител, затова не може да внесете шифрирани данни от един потребител в регистрацията на друг." + }, + "export": { + "message": "Изнасяне" + }, + "exportVault": { + "message": "Изнасяне на трезора" + }, + "fileFormat": { + "message": "Формат на файла" + }, + "exportSuccess": { + "message": "Данните от трезора ви са изнесени." + }, + "passwordGenerator": { + "message": "Създаване на пароли" + }, + "minComplexityScore": { + "message": "Минимална сложност" + }, + "minNumbers": { + "message": "Минимален брой цифри" + }, + "minSpecial": { + "message": "Минимален брой специални знаци", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Без нееднозначни знаци" + }, + "regeneratePassword": { + "message": "Друга парола" + }, + "length": { + "message": "Дължина" + }, + "numWords": { + "message": "Брой думи" + }, + "wordSeparator": { + "message": "Разделител за думи" + }, + "capitalize": { + "message": "Главни букви", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "И цифри" + }, + "passwordHistory": { + "message": "Хронология на паролата" + }, + "noPasswordsInList": { + "message": "Няма пароли за показване." + }, + "clear": { + "message": "Изчистване", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Абонаментът е обновен" + }, + "changeEmail": { + "message": "Промяна на адреса за е-поща" + }, + "changeEmailTwoFactorWarning": { + "message": "Действието ще промени електронната поща свързана с регистрацията Ви. Електронната поща, която ползвате за двустепенно удостоверяване няма да бъде променена. Можете да я промените в настройките на двустепенното удостоверяване." + }, + "newEmail": { + "message": "Нов адрес за електронна поща" + }, + "code": { + "message": "Код" + }, + "changeEmailDesc": { + "message": "Пратили сме кода за потвърждаване на $EMAIL$. Проверете електронната си поща за писмо с този код и го въведете по-долу, за да завършите процеса на смяна на адреса на електронна поща.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Действието ще прекрати и текущата ви сесия, след което ще се наложи отново да се впишете. Активните сесии на другите устройства може да останат такива до един час." + }, + "emailChanged": { + "message": "Електронната поща е сменена" + }, + "logBackIn": { + "message": "Впишете се отново." + }, + "logBackInOthersToo": { + "message": "Впишете се отново. Ако използвате и други приложения на Битуорден, впишете се отново и в тях." + }, + "changeMasterPassword": { + "message": "Промяна на главната парола" + }, + "masterPasswordChanged": { + "message": "Главната парола е променена" + }, + "currentMasterPass": { + "message": "Текуща главна парола" + }, + "newMasterPass": { + "message": "Нова главна парола" + }, + "confirmNewMasterPass": { + "message": "Потвърждаване на новата главна парола" + }, + "encKeySettings": { + "message": "Настройки на шифриращия ключ" + }, + "kdfAlgorithm": { + "message": "Алгоритъм KDF" + }, + "kdfIterations": { + "message": "Повторения за KDF" + }, + "kdfIterationsDesc": { + "message": "По-големият брой повторения за KDF спомага за защитата на главната ви парола от атака с грубо изброяване. Препоръчваме ви стойност $VALUE$ или повече.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Задаването на прекалено голяма стойност на повторенията на KDF може да доведе до бавно вписване и отключване на трезора на Битуорден при работа от устройства с бавни процесори. Препоръчваме ви да увеличавате стойността на стъпки по $INCREMENT$ и да тествате на всичките си устройства.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Смяна на KDF" + }, + "encKeySettingsChanged": { + "message": "Настройките за шифриращия ключ са сменени" + }, + "dangerZone": { + "message": "ОПАСНО" + }, + "dangerZoneDesc": { + "message": "Внимание, тези действия са необратими!" + }, + "deauthorizeSessions": { + "message": "Прекратяване на сесии" + }, + "deauthorizeSessionsDesc": { + "message": "Ако се притеснявате, че сте влезли от друго устройство, може да прекратите влизанията от всички устройства, които сте ползвали досега. Препоръчваме ви да направите това, ако сте достъпвали трезора през споделено устройство или погрешка сте запазили паролата върху чуждо устройство. Тази стъпка изчиства и всички запомнени сесии с двустепенни идентификации." + }, + "deauthorizeSessionsWarning": { + "message": "Действието ще прекрати и текущата ви сесия, след което ще се наложи отново да се впишете. Ако сте включили двустепенна идентификация, ще се наложи да повторите и нея. Активните сесии на другите устройства може да останат такива до един час." + }, + "sessionsDeauthorized": { + "message": "Всички сесии са прекратени" + }, + "purgeVault": { + "message": "Пълно изчистване на трезора" + }, + "purgedOrganizationVault": { + "message": "Трезорът на организацията е напълно изчистен." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Ако продължите, ще изтриете всички папки и записи в трезора ви. Елементите, които са споделени и принадлежат на организации, няма да бъдат изтрити." + }, + "purgeOrgVaultDesc": { + "message": "Ако продължите, ще изтриете всички папки и записи в трезора на организацията." + }, + "purgeVaultWarning": { + "message": "Изчистването на трезора е окончателно и необратимо." + }, + "vaultPurged": { + "message": "Трезорът ви е напълно изчистен." + }, + "deleteAccount": { + "message": "Изтриване на абонамента" + }, + "deleteAccountDesc": { + "message": "Ако продължите, ще изтриете абонамента си и всички притежавани данни." + }, + "deleteAccountWarning": { + "message": "Изтриването на абонамента е окончателно и необратимо." + }, + "accountDeleted": { + "message": "Абонаментът е изтрит" + }, + "accountDeletedDesc": { + "message": "Абонаментът ви е окончателно прекратен и всички данни към него са изтрити." + }, + "myAccount": { + "message": "Абонамент" + }, + "tools": { + "message": "Инструменти" + }, + "importData": { + "message": "Внасяне на данни" + }, + "importError": { + "message": "Грешка при внасянето" + }, + "importErrorDesc": { + "message": "Има проблем с данните, които внасяте. Поправете грешките посочени по-долу и пробвайте отново." + }, + "importSuccess": { + "message": "Данните са внесени успешно в трезора ви." + }, + "importWarning": { + "message": "Внасяте данни към организацията „$ORGANIZATION$“. Данните могат да бъдат споделени с членовете ѝ. Сигурни ли сте, че искате да продължите?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Данните са в неправилен формат. Проверете файла за внасяне и пробвайте отново." + }, + "importNothingError": { + "message": "Нищо не бе внесено." + }, + "importEncKeyError": { + "message": "Грешка при дешифрирането на изнесения файл. Ключът за шифриране не отговаря на този, който е използван за изнасянето на данните." + }, + "selectFormat": { + "message": "Избор на форма̀та на файла за внасяне" + }, + "selectImportFile": { + "message": "Изберете файла за внасяне" + }, + "orCopyPasteFileContents": { + "message": "или поставете съдържанието му" + }, + "instructionsFor": { + "message": "Инструкции за $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Настройки" + }, + "optionsDesc": { + "message": "Настройки на трезора по уеб." + }, + "optionsUpdated": { + "message": "Обновени настройки" + }, + "language": { + "message": "Език" + }, + "languageDesc": { + "message": "Смяна на езика на интерфейса. Ще трябва да пуснете програмата повторно." + }, + "disableIcons": { + "message": "Изключване на иконите на сайтовете" + }, + "disableIconsDesc": { + "message": "Иконите на сайтовете са разпознаваеми изображения към записите за вход в трезора." + }, + "enableGravatars": { + "message": "Включване на граватари", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Използване на иконки за потребители от сайта „gravatar.com“." + }, + "enableFullWidth": { + "message": "Извеждане на цяла широчина", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Трезорът по уеб да заема цялата широчина на прозореца на браузъра." + }, + "default": { + "message": "Стандартно" + }, + "domainRules": { + "message": "Правила за домейни" + }, + "domainRulesDesc": { + "message": "Ако ползвате същите регистрации с много домейни, може да обявите домейните като еквиваленти. Глобалните еквиваленти са зададени от Битуорден." + }, + "globalEqDomains": { + "message": "Глобални домейни-еквиваленти" + }, + "customEqDomains": { + "message": "Потребителски домейни-еквиваленти" + }, + "exclude": { + "message": "Изваждане" + }, + "include": { + "message": "Добавяне" + }, + "customize": { + "message": "Настройки" + }, + "newCustomDomain": { + "message": "Нов домейн" + }, + "newCustomDomainDesc": { + "message": "Въведете списък с домейни, разделени със запетаи. Позволени са само основни домейни, не въвеждайте поддомейни. Напр. ползвайте „google.com“ вместо „www.google.com“. Може да ползвате и варианти като \"androidapp://package.name\", за да добавите и приложение." + }, + "customDomainX": { + "message": "Потребителски домейни $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Домейните са обновени" + }, + "twoStepLogin": { + "message": "Двустепенно удостоверяване" + }, + "twoStepLoginDesc": { + "message": "Допълнителна защита на абонамента чрез изискването на допълнително действие при вписване." + }, + "twoStepLoginOrganizationDesc": { + "message": "Може да изискате двустепенна идентификация за всички потребители в организацията ви, като настроите доставчиците на ниво организация." + }, + "twoStepLoginRecoveryWarning": { + "message": "Включването на двустепенна идентификация може завинаги да предотврати вписването ви в абонамента към Битуорден. Кодът за възстановяване ще ви позволи да достъпите абонамента дори и да имате проблем с доставчика на двустепенна идентификация (напр. ако изгубите устройството си). Дори и екипът по поддръжката към няма да ви помогне в такъв случай. Силно препоръчваме да отпечатате или запишете кодовете и да ги пазете на надеждно място." + }, + "viewRecoveryCode": { + "message": "Извеждане на кодовете за възстановяване" + }, + "providers": { + "message": "Доставчици", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Включване" + }, + "enabled": { + "message": "Включено" + }, + "premium": { + "message": "Платен", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Платен абонамент" + }, + "premiumRequired": { + "message": "Изисква се платен абонамент" + }, + "premiumRequiredDesc": { + "message": "За да се възползвате от тази възможност, трябва да ползвате платен абонамент." + }, + "youHavePremiumAccess": { + "message": "Имате платен абонамент" + }, + "alreadyPremiumFromOrg": { + "message": "Вече имате достъп до възможностите на платения абонамент — членувате в организация, която ви осигурява това." + }, + "manage": { + "message": "Управление" + }, + "disable": { + "message": "Изключване" + }, + "twoStepLoginProviderEnabled": { + "message": "Този доставчик на двустепенно удостоверяване е включен за абонамента ви." + }, + "twoStepLoginAuthDesc": { + "message": "Въведете главната си парола, за да променяте настройките за двустепенно удостоверяване." + }, + "twoStepAuthenticatorDesc": { + "message": "Следвайте тези стъпки, за да настроите двустепенно удостоверяване:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Изтегляне на приложение за двустепенно удостоверяване" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Ако ви трябва приложение за двустепенно удостоверяване, пробвайте някое от следните:" + }, + "iosDevices": { + "message": "Устройства с iOS" + }, + "androidDevices": { + "message": "Устройства с Android" + }, + "windowsDevices": { + "message": "Устройства с Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Това са само препоръчаните приложения. Другите приложения за идентификация също ще работят." + }, + "twoStepAuthenticatorScanCode": { + "message": "Сканирайте този QR код с приложението си за идентификация" + }, + "key": { + "message": "Ключ" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Въведете 6-цифрения код за потвърждение от приложението" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Ако трябва да добавите и друго устройство, по-долу е QR кодът или ключът, изисквани от приложението ви за идентификация." + }, + "twoStepDisableDesc": { + "message": "Сигурни ли сте, че искате да изключите този доставчик на двустепенно удостоверяване?" + }, + "twoStepDisabled": { + "message": "Доставчикът на двустепенно удостоверяване е изключен." + }, + "twoFactorYubikeyAdd": { + "message": "Добавяне на ново устройство YubiKey към регистрацията ви" + }, + "twoFactorYubikeyPlugIn": { + "message": "Поставете устройството на YubiKey в USB порт на компютър." + }, + "twoFactorYubikeySelectKey": { + "message": "Изберете първото свободно поле за YubiKey по-долу." + }, + "twoFactorYubikeyTouchButton": { + "message": "Натиснете бутона на устройството от YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Запазване на формуляра." + }, + "twoFactorYubikeyWarning": { + "message": "Поради платформени ограничения устройствата на YubiKey не могат да се използват с всички приложения на Битуорден. В такъв случай ще трябва да добавите друг доставчик на двустепенно удостоверяване, за да имате достъп до абонамента си, дори когато YubiKey не работи. Поддържани платформи:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Трезорът по уеб, самостоятелното приложение, командата за командния ред както и разширенията за браузърите за всички устройства с USB порт могат да работят с устройства на YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Мобилните приложения на устройство с NFC или USB порт могат да работят с устройства на YubiKey." + }, + "yubikeyX": { + "message": "YubiKey № $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key № $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Устройство WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Поддръжка на NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Някой от ключовете поддържа NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Ако някое от устройствата на YubiKey поддържа NFC (напр. моделът YubiKey NEO), ще бъдете питани за удостоверяване всеки път при засичането на NFC." + }, + "yubikeysUpdated": { + "message": "Данните за YubiKey са обновени" + }, + "disableAllKeys": { + "message": "Изключване на всички ключове" + }, + "twoFactorDuoDesc": { + "message": "Въведете информацията за приложението на Битуорден от административния панел на Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Ключ за интеграция" + }, + "twoFactorDuoSecretKey": { + "message": "Таен ключ" + }, + "twoFactorDuoApiHostname": { + "message": "Адрес на сървъра за API" + }, + "twoFactorEmailDesc": { + "message": "Следвайте следните стъпки, за да настроите двустепенно удостоверяване с електронна поща:" + }, + "twoFactorEmailEnterEmail": { + "message": "Въведете адреса на електронната поща, където искате да получавате кодовете за потвърждение" + }, + "twoFactorEmailEnterCode": { + "message": "Въведете 6-цифрения код за потвърждение от пощата" + }, + "sendEmail": { + "message": "Изпращане на електронно писмо" + }, + "twoFactorU2fAdd": { + "message": "Добавяне на ново устройство FIDO U2F към регистрацията ви" + }, + "removeU2fConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете този ключ за сигурност?" + }, + "twoFactorWebAuthnAdd": { + "message": "Добавяне на ново устройство WebAuthn към регистрацията ви" + }, + "readKey": { + "message": "Прочитане на ключ" + }, + "keyCompromised": { + "message": "Ключът е компрометиран." + }, + "twoFactorU2fGiveName": { + "message": "Задайте име на ключа за сигурност за лесното му разпознаване." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Поставете ключа за сигурност в USB порта на компютъра и натиснете бутона „Прочитане на ключ“." + }, + "twoFactorU2fTouchButton": { + "message": "Ако ключът разполага с бутон, натиснете го." + }, + "twoFactorU2fSaveForm": { + "message": "Запазване на формуляра." + }, + "twoFactorU2fWarning": { + "message": "Поради платформени ограничения устройствата FIDO U2F не могат да се използват със всички приложения на Битуорден. В такъв случай ще трябва да добавите друг доставчик на двустепенно удостоверяване, за да имате достъп до абонамента си, дори когато FIDO U2F не работи. Поддържани платформи:" + }, + "twoFactorU2fSupportWeb": { + "message": "Трезорът по уеб както и разширенията за браузърите с поддръжка на U2F (Chrome, Opera, Vivaldi и Firefox с поддръжка на FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "Изчакване да натиснете бутона на устройството си за сигурност" + }, + "twoFactorU2fClickSave": { + "message": "Натиснете бутона „Запазване“ по-долу, за да включите този ключ за двустепенна идентификация." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Проблем при изчитането на ключа за сигурност. Пробвайте отново." + }, + "twoFactorWebAuthnWarning": { + "message": "Поради платформени ограничения устройствата на WebAuthn не могат да се използват с всички приложения на Битуорден. В такъв случай ще трябва да добавите друг доставчик на двустепенно удостоверяване, за да имате достъп до абонамента си, дори когато WebAuthn не работи. Поддържани платформи:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Трезорът по уеб както и разширенията за браузърите с поддръжка на WebAuthn (Chrome, Opera, Vivaldi и Firefox с поддръжка на FIDO U2F)." + }, + "twoFactorRecoveryYourCode": { + "message": "Код за възстановяване на достъпа до Битуорден при двустепенна идентификация" + }, + "twoFactorRecoveryNoCode": { + "message": "Не сте включили никой доставчик на двустепенна идентификация. След като направите това, може да проверите тук за код за възстановяване на достъпа." + }, + "printCode": { + "message": "Отпечатване на кода", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Доклади" + }, + "reportsDesc": { + "message": "Открийте и отстранете проблемите със защитата на профилите си като щракнете върху докладите по-долу." + }, + "unsecuredWebsitesReport": { + "message": "Доклад за сайтове без защита" + }, + "unsecuredWebsitesReportDesc": { + "message": "Използването на сайтове, които използват схемата без шифриране „http://“ може да е опасно. Ако сайтовете позволяват, следва да ги достъпвате през схемата „https://“, при което връзката ви е шифрирана." + }, + "unsecuredWebsitesFound": { + "message": "Открити са записи без защита" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Открити са $COUNT$ записи в трезора с адрес без защита. Трябва да смените схемата за URI-то им на „https://“, ако сайтовете го поддържат.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Всички записи в трезора са със защитени адреси." + }, + "inactive2faReport": { + "message": "Доклад за сайтовете без двустепенна защита" + }, + "inactive2faReportDesc": { + "message": "Двустепенната идентификация (2FA) е важна настройка, която силно повишава защитата на регистрациите ви. Ако сайтът поддържа това, задължително включете тази възможност." + }, + "inactive2faFound": { + "message": "Открити са записи без двустепенна идентификация" + }, + "inactive2faFoundDesc": { + "message": "В трезора ви има записи за $COUNT$ уебсайта, които е възможно да не са настроени за работа с двустепенна идентификация (според сайта twofactorauth.org). За да защитите тези регистрации, трябва да включите двустепенната идентификация.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Не са открити записи в трезора ви с липсващи настройки за двустепенна идентификация." + }, + "instructions": { + "message": "Инструкции" + }, + "exposedPasswordsReport": { + "message": "Доклад за разкрити пароли" + }, + "exposedPasswordsReportDesc": { + "message": "Разкритите пароли са публикувани като част от докладите за изтекли данни или се продават в тъмния Интернет." + }, + "exposedPasswordsFound": { + "message": "Открити са разкрити пароли" + }, + "exposedPasswordsFoundDesc": { + "message": "Открити са $COUNT$ записа в трезора ви, които са с разкрити пароли. Трябва да смените тези пароли.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Няма записи в трезора ви, които са с разкрити пароли." + }, + "checkExposedPasswords": { + "message": "Проверка за разкрити пароли" + }, + "exposedXTimes": { + "message": "Разкрити $COUNT$ път/и", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Доклад за слаби пароли" + }, + "weakPasswordsReportDesc": { + "message": "Слабите пароли лесно биват разкрити. Злоумишлени лица могат да ги отгатнат, а автоматични инструменти могат да ги налучкат. Генераторът на пароли на Битуорден може да ви помогне да създадете надеждни пароли." + }, + "weakPasswordsFound": { + "message": "Открити са слаби пароли" + }, + "weakPasswordsFoundDesc": { + "message": "В трезора ви има $COUNT$записи със слаби пароли. Сменете паролите с надеждни.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Всички записи в трезора са с надеждни пароли." + }, + "reusedPasswordsReport": { + "message": "Доклад за повтарящи се пароли" + }, + "reusedPasswordsReportDesc": { + "message": "Ако някой достъпи данните ви за вписване към дадена услуга, а вие ползвате една и съща парола навсякъде, то злоумишлени лица могат много по-лесно да пробият другите ви регистрации. За всяка регистрация следва да ползвате различна парола." + }, + "reusedPasswordsFound": { + "message": "Отрити са повтарящи се пароли" + }, + "reusedPasswordsFoundDesc": { + "message": "В трезора ви има $COUNT$ повтарящи се пароли. Задължително ги сменете с други, уникални пароли.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "В трезора ви няма записи с пароли, които се ползват и другаде." + }, + "reusedXTimes": { + "message": "Преизползвана $COUNT$ пъти", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Доклад за изтичането на данни" + }, + "breachDesc": { + "message": "Изтичането на данни е инцидент, при който злоумишлени лица получават достъп до данните ви, след което те биват публикувани. Прегледайте вида на изтеклата информация (адреси за електронна поща, пароли, номера на карти и т. н.) и предприемете надлежните действия като да си смените паролата." + }, + "breachCheckUsernameEmail": { + "message": "Проверка за изтекли данни, съдържащи потребителското ви име или адреса ви за електронна поща" + }, + "checkBreaches": { + "message": "Проверка за изтичане на данни" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ липсва във всички известни масиви с изтекли данни.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Добри новини", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ е открит в $COUNT$ от известните масиви с изтекли данни.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Някои от записите са открити в масивите с изтекли данни" + }, + "compromisedData": { + "message": "Изтекли данни" + }, + "website": { + "message": "Сайт" + }, + "affectedUsers": { + "message": "Засегнати потребители" + }, + "breachOccurred": { + "message": "Изтичане на данните" + }, + "breachReported": { + "message": "Доклад за изтичането" + }, + "reportError": { + "message": "Грешка при зареждането на доклада. Пробвайте отново" + }, + "billing": { + "message": "Заплащане" + }, + "accountCredit": { + "message": "Кредит по абонамента", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Баланс по абонамента", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Добавяне на кредит", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Сума", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Добавеният кредит се появява в абонамента ви след окончателната обработка на плащането. Някои начини за плащане са по-бавни и отнемат повече време." + }, + "makeSureEnoughCredit": { + "message": "Проверете дали към абонамента си имате достатъчно средства за тази покупка. В противен случай разликата от наличното и необходимото се изисква от основния ви метод за плащане, който сте задали." + }, + "creditAppliedDesc": { + "message": "Може да използвате кредитите към абонамента си за покупки. Кредитите се използват за покриването на издадените фактури към абонамента." + }, + "goPremium": { + "message": "Платен абонамент", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Вече ползвате платен абонамент." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Платеният абонамент идва с допълнителни преимущества." + }, + "premiumSignUpStorage": { + "message": "1 GB пространство за файлове, които се шифрират." + }, + "premiumSignUpTwoStep": { + "message": "Двустепенно удостоверяване чрез YubiKey, FIDO U2F и Duo." + }, + "premiumSignUpEmergency": { + "message": "Авариен достъп" + }, + "premiumSignUpReports": { + "message": "Проверки в списъците с публикувани пароли, проверка на регистрациите и доклади за изтекли данни, което спомага трезорът ви да е допълнително защитен." + }, + "premiumSignUpTotp": { + "message": "Генериране на временни, еднократни кодове за двустепенно удостоверяване за регистрациите в трезора." + }, + "premiumSignUpSupport": { + "message": "Приоритетна поддръжка." + }, + "premiumSignUpFuture": { + "message": "Всички бъдещи ползи! Предстои въвеждането на още!" + }, + "premiumPrice": { + "message": "И това само за $PRICE$ на година!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Добавки" + }, + "premiumAccess": { + "message": "Платен абонамент" + }, + "premiumAccessDesc": { + "message": "Членовете на организацията ви могат ще могат да се възползват от допълнителните възможности на платения абонамент срещу $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Допълнително място [GB]" + }, + "additionalStorageGbDesc": { + "message": "брой GB допълнително" + }, + "additionalStorageIntervalDesc": { + "message": "Планът ви идва с $SIZE$ място за шифрирани данни. Може да се сдобиете с още при цена $PRICE$ за 1 GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Обобщено" + }, + "total": { + "message": "Общо" + }, + "year": { + "message": "година" + }, + "month": { + "message": "месец" + }, + "monthAbbr": { + "message": "мес.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Сумата ще бъде директно изискана от метода за плащане, след което ще се повтаря всяка година. Може да се откажете по всяко време." + }, + "paymentCharged": { + "message": "Сумата ще бъде директно изискана от метода за плащане, след което ще се повтаря всеки $INTERVAL$. Може да се откажете по всяко време.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Планът ви идва с пробен период от 7 дена. Плащането няма се изиска преди това, след което ще се повтаря всеки $INTERVAL$. Може да се откажете по всяко време." + }, + "paymentInformation": { + "message": "Информация за плащането" + }, + "billingInformation": { + "message": "Информация за фактуриране" + }, + "creditCard": { + "message": "Кредитна карта" + }, + "paypalClickSubmit": { + "message": "Натиснете бутона на PayPal, за да се впишете в регистрацията ви в него. След това натиснете бутона „Подаване“ по-долу, за да продължите." + }, + "cancelSubscription": { + "message": "Прекратяване на абонамента" + }, + "subscriptionCanceled": { + "message": "Абонаментът е прекратен." + }, + "pendingCancellation": { + "message": "Предстоящо прекратяване на абонамента" + }, + "subscriptionPendingCanceled": { + "message": "Прекратяването на абонамента след края на последно платения период е обявено." + }, + "reinstateSubscription": { + "message": "Подновяване на абонамента" + }, + "reinstateConfirmation": { + "message": "Уверени ли сте, че искате да подновите абонамента и да отмените заявката за прекратяването му?" + }, + "reinstated": { + "message": "Абонаментът е подновен." + }, + "cancelConfirmation": { + "message": "Уверени ли сте, че искате да прекратите абонамента? След края на последно платения период ще загубите всички допълнителни преимущества." + }, + "canceledSubscription": { + "message": "Абонаментът е прекратен." + }, + "neverExpires": { + "message": "Никога не изтича" + }, + "status": { + "message": "Състояние" + }, + "nextCharge": { + "message": "Следваща промяна" + }, + "details": { + "message": "Детайли" + }, + "downloadLicense": { + "message": "Изтегляне на лиценз" + }, + "updateLicense": { + "message": "Обновяване на лиценз" + }, + "updatedLicense": { + "message": "Лицензът е обновен" + }, + "manageSubscription": { + "message": "Управление на абонамента" + }, + "storage": { + "message": "Съхранение на данни" + }, + "addStorage": { + "message": "Добавяне на пространство" + }, + "removeStorage": { + "message": "GB пространство за махане" + }, + "subscriptionStorage": { + "message": "Абонаментът ви предоставя общо $MAX_STORAGE$ GB място за съхранение със шифриране. В момента ползвате $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Метод за плащане" + }, + "noPaymentMethod": { + "message": "Липсва какъвто и да е метод за плащане." + }, + "addPaymentMethod": { + "message": "Добавяне на метод за плащане" + }, + "changePaymentMethod": { + "message": "Промяна на метод за плащане" + }, + "invoices": { + "message": "Фактури" + }, + "noInvoices": { + "message": "Няма фактури." + }, + "paid": { + "message": "Платено", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Дължимо", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Транзакции", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Няма транзакции." + }, + "chargeNoun": { + "message": "Зареждане", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Възстановяване", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Всички плащания ще бъдат изброени като $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB пространство за добавяне" + }, + "gbStorageRemove": { + "message": "Махане на пространство" + }, + "storageAddNote": { + "message": "Добавянето на място за съхранение ще се отрази незабавно на сумата, която плащате. Ще изискаме допълнителната сума от метода ви за плащане. Първото плащане ще е пропорционално на оставащото време от текущия платежен цикъл." + }, + "storageRemoveNote": { + "message": "Освободеното място също се отразява незабавно на плащаните суми. Надвзетата сума, пропорционално на оставащото време от текущия платежен цикъл ще ви бъде върната като кредити за следващия платежен цикъл." + }, + "adjustedStorage": { + "message": "Промяна с $AMOUNT$ GB място за съхранение.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Връзка с поддръжката на потребители" + }, + "updatedPaymentMethod": { + "message": "Обновен метод за плащане." + }, + "purchasePremium": { + "message": "Закупуване на абонамент" + }, + "licenseFile": { + "message": "Файл с лиценза" + }, + "licenseFileDesc": { + "message": "Файлът с лиценза се казва „$FILE_NAME$“ или нещо подобно", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "За да преминете към платен абонамент, трябва да качите файл с валиден лиценз." + }, + "uploadLicenseFileOrg": { + "message": "За да създадете организация в собствените сървъри, ще трябва да качите файл с валиден лиценз." + }, + "accountEmailMustBeVerified": { + "message": "Трябва да покажете, че имате достъп до адреса на електронната си поща." + }, + "newOrganizationDesc": { + "message": "Организациите позволяват да споделяте части от трезора си с други потребители, както и да управлявате потребители по звена — семейство, екип, отдел." + }, + "generalInformation": { + "message": "Обща информация" + }, + "organizationName": { + "message": "Име на организация" + }, + "accountOwnedBusiness": { + "message": "Този абонамент е на организация." + }, + "billingEmail": { + "message": "Адрес на електронната поща за плащанията" + }, + "businessName": { + "message": "Име на организация" + }, + "chooseYourPlan": { + "message": "Избор на план" + }, + "users": { + "message": "Потребители" + }, + "userSeats": { + "message": "Потребители в организацията" + }, + "additionalUserSeats": { + "message": "Допълнителни потребители в организацията" + }, + "userSeatsDesc": { + "message": "Брой потребители в организацията" + }, + "userSeatsAdditionalDesc": { + "message": "Планът идва с поддръжка на $BASE_SEATS$ потребители в организацията. Можете да добавяте допълнителни потребители на цена $SEAT_PRICE$ за потребител на месец.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Колко потребители в организацията са ви нужни? По-късно пак може да добавяте потребители, ако е нужно." + }, + "planNameFree": { + "message": "Безплатен", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "За проба или за индивидуални потребители, които ще могат да споделят с $COUNT$ на брой допълнителни потребители.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Семеен" + }, + "planDescFamilies": { + "message": "За индивидуални потребители, които ще могат да споделят със семейството и приятелите си." + }, + "planNameTeams": { + "message": "Екипен" + }, + "planDescTeams": { + "message": "За компании и други екипни организации." + }, + "planNameEnterprise": { + "message": "За големи организации" + }, + "planDescEnterprise": { + "message": "За големи компании и организации." + }, + "freeForever": { + "message": "Завинаги безплатно" + }, + "includesXUsers": { + "message": "включва $COUNT$ потребители", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Допълнителни потребители" + }, + "costPerUser": { + "message": "$COST$ на потребител", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "До максимум $COUNT$ потребители (включително и вие)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "До максимум $COUNT$ колекции", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Добавяне и споделяне с до $COUNT$ потребители", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Добавяне и споделяне с неограничен брой потребители" + }, + "createUnlimitedCollections": { + "message": "Неограничен брой колекции" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ място за съхранение на шифрирани данни", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Собствени сървъри (по избор)" + }, + "usersGetPremium": { + "message": "Потребителите получават достъп до възможностите на платения абонамент" + }, + "controlAccessWithGroups": { + "message": "Управление на потребителите по групи" + }, + "syncUsersFromDirectory": { + "message": "Синхронизиране на потребителите и групите с директорийни услуги" + }, + "trackAuditLogs": { + "message": "Одит на действията на потребителите чрез журнали" + }, + "enforce2faDuo": { + "message": "Задължително ползване на двустепенна защита с Duo" + }, + "priorityCustomerSupport": { + "message": "Поддръжка с приоритет" + }, + "xDayFreeTrial": { + "message": "$COUNT$ дни безплатен пробен период! Може да прекъснете по всяко време", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Месечно" + }, + "annually": { + "message": "Годишно" + }, + "basePrice": { + "message": "Базова цена" + }, + "organizationCreated": { + "message": "Организацията е създадена" + }, + "organizationReadyToGo": { + "message": "Новата организация е готова!" + }, + "organizationUpgraded": { + "message": "Организацията е обновена." + }, + "leave": { + "message": "Напускане" + }, + "leaveOrganizationConfirmation": { + "message": "Уверени ли сте, че искате да напуснете тази организация?" + }, + "leftOrganization": { + "message": "Напуснахте организацията." + }, + "defaultCollection": { + "message": "Стандартна колекция" + }, + "getHelp": { + "message": "Помощ" + }, + "getApps": { + "message": "Изтегляне на приложенията" + }, + "loggedInAs": { + "message": "Вписани сте като" + }, + "eventLogs": { + "message": "Журнали със събития" + }, + "people": { + "message": "Хора" + }, + "policies": { + "message": "Политики" + }, + "singleSignOn": { + "message": "Еднократна идентификация" + }, + "editPolicy": { + "message": "Редактиране на политика" + }, + "groups": { + "message": "Групи" + }, + "newGroup": { + "message": "Нова група" + }, + "addGroup": { + "message": "Добавяне на група" + }, + "editGroup": { + "message": "Редактиране на група" + }, + "deleteGroupConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете тази група?" + }, + "removeUserConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете този потребител?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Внимание! Този потребител има нужда от конектор за ключове, за да управлява шифроването си. Ако премахнете потребителя от организацията, ще заключите завинаги достъпа му до неговата регистрация. Това действие е необратимо. Наистина ли искате да продължите?" + }, + "externalId": { + "message": "Външен идентификатор" + }, + "externalIdDesc": { + "message": "Външните идентификатори указват връзката на този елемент с друга система, напр. директорийна услуга с потребители и групи." + }, + "accessControl": { + "message": "Управление на достъпа" + }, + "groupAccessAllItems": { + "message": "Тази група има достъп до всички записи." + }, + "groupAccessSelectedCollections": { + "message": "Тази група има достъп само до избраните колекции." + }, + "readOnly": { + "message": "Само за четене" + }, + "newCollection": { + "message": "Нова колекция" + }, + "addCollection": { + "message": "Добавяне на колекция" + }, + "editCollection": { + "message": "Редактиране на колекция" + }, + "deleteCollectionConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете тази колекция?" + }, + "editUser": { + "message": "Редактиране на потребител" + }, + "inviteUser": { + "message": "Поканване на потребител" + }, + "inviteUserDesc": { + "message": "Може да поканите потребител да стане член на организацията като попълните адреса му за електронна поща, с който е регистриран в Битуорден, по-долу. В случай, че потребителят не е регистриран, той автоматично ще получи покана и да се регистрира." + }, + "inviteMultipleEmailDesc": { + "message": "Може да добавяте до $COUNT$ на брой потребители наведнъж, като подадете списък с адреси на електронна поща, разделени със запетаи.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Този потребител използва двустепенна защита за достъп." + }, + "userAccessAllItems": { + "message": "Този потребител има достъп до всички записи и може да ги редактира." + }, + "userAccessSelectedCollections": { + "message": "Този потребител има достъп само до избраната колекция." + }, + "search": { + "message": "Търсене" + }, + "invited": { + "message": "Поканен" + }, + "accepted": { + "message": "Приел" + }, + "confirmed": { + "message": "Потвърдил" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Собственик" + }, + "ownerDesc": { + "message": "Потребителят с най-големи права, който може да управлява всички настройки на организацията ви." + }, + "clientOwnerDesc": { + "message": "Този потребител трябва да бъде независим от доставчика. Ако организацията прекъсне връзката си с доставчика, този потребител ще продължи да има права върху организацията." + }, + "admin": { + "message": "Администратор" + }, + "adminDesc": { + "message": "Администраторите имат достъп до всички записи, колекции и потребители в организацията и могат да ги управляват." + }, + "user": { + "message": "Потребител" + }, + "userDesc": { + "message": "Редови потребител с достъп до определени колекции в организацията." + }, + "manager": { + "message": "Мениджър" + }, + "managerDesc": { + "message": "Мениджърите достъпват и управляват зададените им колекции в организацията." + }, + "all": { + "message": "Всички" + }, + "refresh": { + "message": "Опресняване" + }, + "timestamp": { + "message": "Времево клеймо" + }, + "event": { + "message": "Събитие" + }, + "unknown": { + "message": "Неизвестно" + }, + "loadMore": { + "message": "Още" + }, + "mobile": { + "message": "Мобилен номер", + "description": "Mobile app" + }, + "extension": { + "message": "Вътрешен номер", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Десктоп", + "description": "Desktop app" + }, + "webVault": { + "message": "Трезор по уеб" + }, + "loggedIn": { + "message": "Вписани сте." + }, + "changedPassword": { + "message": "Паролата на абонамента е сменена." + }, + "enabledUpdated2fa": { + "message": "Двустепенното удостоверяване е включено/обновено." + }, + "disabled2fa": { + "message": "Двустепенното удостоверяване е изключено." + }, + "recovered2fa": { + "message": "Абонаментът с двустепенно удостоверяване е възстановен." + }, + "failedLogin": { + "message": "Неуспешно вписване заради грешна парола." + }, + "failedLogin2fa": { + "message": "Неуспешно вписване заради неуспешно двустепенно удостоверяване." + }, + "exportedVault": { + "message": "Трезорът е изнесен." + }, + "exportedOrganizationVault": { + "message": "Трезорът на организацията е изнесен." + }, + "editedOrgSettings": { + "message": "Настройките на организацията са редактирани." + }, + "createdItemId": { + "message": "Запис № $ID$ е създаден.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Запис № $ID$ е редактиран.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Запис № $ID$ е изтрит.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Записът $ID$ беше преместен в организация.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Запис № $ID$ е разгледан.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Паролата на запис № $ID$ е прегледана.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Скрито поле от запис № $ID$ е прегледано.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Кодът за сигурност за запис № $ID$ е прегледан.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Паролата на запис № $ID$ е копирана.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Скрито поле от запис № $ID$ е копирано.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Кодът за сигурност за запис № $ID$ е копирано.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Запис № $ID$ е ползван за автоматично дописване.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Колекция № $ID$ е създадена.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Колекция № $ID$ е редактирана.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Колекция № $ID$ е изтрита.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Редактирана политика № $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Група № $ID$ е създадена.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Група № $ID$ е редактирана.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Група № $ID$ е изтрита.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Потребител № $ID$ е изтрит.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Към запис № $ID$ е прикачен файл.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Прикаченият файл към запис № $ID$ е изтрит.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Колекциите за запис № $ID$ са редактирани.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Потребител № $ID$ е поканен.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Потребител № $ID$ е потвърден.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Потребител № $ID$ е редактиран.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Групите на потребител № $ID$ са редактирани.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Самоличността $ID$ е извадено от еднократното вписване.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Организация № $ID$ е създадена.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Организация № $ID$ е добавена.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Организация № $ID$ е премахната.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Устройство" + }, + "view": { + "message": "Изглед" + }, + "invalidDateRange": { + "message": "Неправилен диапазон от дати." + }, + "errorOccurred": { + "message": "Възникна грешка." + }, + "userAccess": { + "message": "Права на потребител" + }, + "userType": { + "message": "Вид потребител" + }, + "groupAccess": { + "message": "Права на група" + }, + "groupAccessUserDesc": { + "message": "Редактирате на групите на потребителя." + }, + "invitedUsers": { + "message": "Поканени потребители." + }, + "resendInvitation": { + "message": "Изпращане на поканата наново" + }, + "resendEmail": { + "message": "Повторно изпращане на писмото" + }, + "hasBeenReinvited": { + "message": "$USER$ потребители са поканени.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Потвърждаване" + }, + "confirmUser": { + "message": "Потвърждаване на потребител" + }, + "hasBeenConfirmed": { + "message": "$USER$ потребители са потвърдени.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Потвърждаване на потребители" + }, + "usersNeedConfirmed": { + "message": "Има потребители, които са приели поканата си, но все още трябва да бъдат потвърдени. Потвърждаването е необходимо, за да получат достъп до организацията." + }, + "startDate": { + "message": "Начална дата" + }, + "endDate": { + "message": "Крайна дата" + }, + "verifyEmail": { + "message": "Потвърждаване на адреса на електронна поща" + }, + "verifyEmailDesc": { + "message": "Потвърдете адреса на електронната си поща, за да получите достъп до всички възможности." + }, + "verifyEmailFirst": { + "message": "Трябва да потвърдите адреса на електронната поща за абонамента си." + }, + "checkInboxForVerification": { + "message": "Проверете електронната си поща за писмо с хипервръзка, с която да потвърдите адреса ѝ." + }, + "emailVerified": { + "message": "Адресът на електронната ви поща е потвърден." + }, + "emailVerifiedFailed": { + "message": "Адресът на електронната ви поща не е потвърден. Пробвайте да изпратите ново писмо за потвърждение." + }, + "emailVerificationRequired": { + "message": "Изисква се потвърждение на е-пощата" + }, + "emailVerificationRequiredDesc": { + "message": "Трябва да потвърдите е-пощата си, за да можете да използвате тази функционалност." + }, + "updateBrowser": { + "message": "Обновяване на браузъра" + }, + "updateBrowserDesc": { + "message": "Ползвате неподдържан браузър. Трезорът по уеб може да не сработи правилно." + }, + "joinOrganization": { + "message": "Присъединяване към организация" + }, + "joinOrganizationDesc": { + "message": "Поканени сте да се присъедините към посочената по-горе организация. За да приемете, ще трябва да се впишете в абонамента си към Битуорден. Ако нямате такъв, ще трябва да създадете безплатен абонамент и след това да се впишете в него." + }, + "inviteAccepted": { + "message": "Поканата е приета" + }, + "inviteAcceptedDesc": { + "message": "Ще имате достъп до организацията, след като администраторът ѝ потвърди членството ви. Ще ви изпратим електронно писмо, когато това се случи." + }, + "inviteAcceptFailed": { + "message": "Поканата не може да бъде приета. Помолете администратора на организацията да ви прати нова." + }, + "inviteAcceptFailedShort": { + "message": "Поканата не може да бъде приета. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Припомняне на електронната поща" + }, + "recoverAccountTwoStepDesc": { + "message": "Ако не може да достъпите абонамента си с нормалната двустепенна идентификация, може да ползвате код за възстановяване, за да я изключите." + }, + "recoverAccountTwoStep": { + "message": "Възстановяване на абонамент с двустепенна идентификация" + }, + "twoStepRecoverDisabled": { + "message": "Двустепенната идентификация е изключена за абонамента ви." + }, + "learnMore": { + "message": "Научете повече" + }, + "deleteRecoverDesc": { + "message": "Въведете адреса на електронната си поща, за да възстановите и да изтриете абонамента си." + }, + "deleteRecoverEmailSent": { + "message": "Ако има такъв абонамент, трябва да получите писмо с последващи инструкции." + }, + "deleteRecoverConfirmDesc": { + "message": "Заявили сте, че искате да изтриете абонамента си към Битуорден. Натиснете бутона по-долу, за да потвърдите това решение." + }, + "myOrganization": { + "message": "Моята организация" + }, + "deleteOrganization": { + "message": "Изтриване на организация" + }, + "deletingOrganizationContentWarning": { + "message": "Въведете главната парола, за да потвърдите изтриването на $ORGANIZATION$ и всички свързани данни. Данните в трезора на $ORGANIZATION$ включват:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Потребителите ще продължат да съществуват и след изтриването, но вече няма да бъдат свързани с тази организация." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Изтриването на $ORGANIZATION$ е окончателно и необратимо.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Организацията е изтрита" + }, + "organizationDeletedDesc": { + "message": "Организацията и нейните данни са изтрити." + }, + "organizationUpdated": { + "message": "Организацията е обновена" + }, + "taxInformation": { + "message": "Данъчна информация" + }, + "taxInformationDesc": { + "message": "Свържете се с поддръжката, за да въведете (или смените) данъчната информация да фактурите." + }, + "billingPlan": { + "message": "План", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Смяна на плана", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Може да обновите плана си, като въведете изисканата информация по-долу. Уверете се, че имате действащ платежен метод към абонамента си.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Фактура № $NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Преглед на фактура" + }, + "downloadInvoice": { + "message": "Изтегляне на фактура" + }, + "verifyBankAccount": { + "message": "Потвърждаване на банковата сметка" + }, + "verifyBankAccountDesc": { + "message": "Наредихме две микротранзакции и трябва да получите сумите до два работни дни. Въведете сумите в страницата за плащания на организацията, за да потвърдите банковата си сметка." + }, + "verifyBankAccountInitialDesc": { + "message": "Плащането с банкова сметка е достъпно само за клиентите в Сащ. Ще трябва да потвърдите банковата си сметка. Ще наредим да ви се приведат две микротранзакции и трябва да получите сумите до два работни дни. Въведете сумите в страницата за плащания на организацията, за да потвърдите банковата си сметка." + }, + "verifyBankAccountFailureWarning": { + "message": "Ако не потвърдите номера на банкова сметка, няма да може да се нареди плащане и абонаментът ви ще бъде временно спрян." + }, + "verifiedBankAccount": { + "message": "Банковата сметка е потвърдена." + }, + "bankAccount": { + "message": "Банкова сметка" + }, + "amountX": { + "message": "Сума $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Банков код", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Номер на сметката" + }, + "accountHolderName": { + "message": "Име на притежателя на сметката" + }, + "bankAccountType": { + "message": "Вид на сметката" + }, + "bankAccountTypeCompany": { + "message": "На фирма" + }, + "bankAccountTypeIndividual": { + "message": "На физическо лице" + }, + "enterInstallationId": { + "message": "Въведете идентификатора на инсталацията" + }, + "limitSubscriptionDesc": { + "message": "Задайте ограничение на броя потребители за абонамента си. Когато то бъде достигнато, няма да можете да каните нови потребители." + }, + "maxSeatLimit": { + "message": "Максимален брой потребители (по избор)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Максимална потенциална цена за потребител" + }, + "addSeats": { + "message": "Добавяне на потребители", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Намаляване на потребители", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Промените в абонамента Ви ще предизвикат пропорционални промени в сумата, която плащате. Ако новопоканените потребители превишат ограничението на абонамента Ви, незабавно ще получите съответстващо пропорционално задължение за допълнителните потребители." + }, + "subscriptionUserSeats": { + "message": "Абонаментът ви позволява $COUNT$ на брой потребители.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Ограничаване на абонамента (по избор)" + }, + "subscriptionSeats": { + "message": "Потребители в абонамента" + }, + "subscriptionUpdated": { + "message": "Абонаментът е обновен" + }, + "additionalOptions": { + "message": "Допълнителни настройки" + }, + "additionalOptionsDesc": { + "message": "Ако имате нужда от допълнителна помощ с управлението на абонамента си, свържете се с поддръжката." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Промените в абонамента Ви ще предизвикат пропорционални промени в сумата, която плащате. Ако новопоканените потребители превишат ограничението на абонамента Ви, незабавно ще получите съответстващо пропорционално задължение за допълнителните потребители." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Промените в абонамента Ви ще предизвикат пропорционални промени в сумата, която плащате. Ако новопоканените потребители превишат ограничението на абонамента Ви, незабавно ще получите съответстващо пропорционално задължение за допълнителните потребители, докато не бъде достигнато ограничението от $MAX$ потребители.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Не можете да поканите повече от $COUNT$ потребители без да надградите плана си.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Не можете да поканите повече от $COUNT$ потребители без да надградите плана си. Свържете се с поддръжката за надграждане.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Абонаментът Ви позволява не повече от $COUNT$ потребители. Планът Ви е спонсориран и се плаща от външна организация.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Промените в абонамента Ви ще предизвикат пропорционални промени в сумата, която плащате. Не можете да поканите повече от $COUNT$ потребители, без да увеличите ограничението в абонамента си.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Брой потребители за добавяне" + }, + "seatsToRemove": { + "message": "Брой потребители за намаляване" + }, + "seatsAddNote": { + "message": "Добавянето на потребители води до увеличаване на дължимата сума. Разликата ще бъде незабавно погасена чрез текущия ви метод за плащане. Първото дължимо плащане е пропорционално на оставащия срок от текущия период на ползване." + }, + "seatsRemoveNote": { + "message": "Намаляването на потребители води до намаляване на дължимата сума. Разликата ще бъде заделена като кредит за следващото ви плащане, пропорционално на оставащия срок от текущия период на ползване." + }, + "adjustedSeats": { + "message": "Промяна с $AMOUNT$ потребители.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Ключът е обновен" + }, + "updateKeyTitle": { + "message": "Обновяване на ключа" + }, + "updateEncryptionKey": { + "message": "Обновяване на ключа за шифриране" + }, + "updateEncryptionKeyShortDesc": { + "message": "Ползвате остаряла схема за шифриране." + }, + "updateEncryptionKeyDesc": { + "message": "Вече ползваме по-дълги ключове за по-добра сигурност и повече възможности. Обновяването на ключа е бързо и лесно. Просто въведете главната си парола по-долу. В някой бъдещ момент това обновяване ще бъде задължително." + }, + "updateEncryptionKeyWarning": { + "message": "След смяната на ключа за шифриране ще трябва да се отпишете и след това да се впишете в регистрацията си във всички приложения на Битуорден, които ползвате (като мобилното приложение и разширенията за браузъри). Ако не се отпишете и впишете повторно (за да получите достъп до новия ключ), рискувате да повредите записите си. Сега ще се пробва да бъдете отписани автоматично, това обаче може да се забави." + }, + "updateEncryptionKeyExportWarning": { + "message": "Всички шифрирани вече изнесени данни ще станат безполезни." + }, + "subscription": { + "message": "Абонамент" + }, + "loading": { + "message": "Зареждане…\n" + }, + "upgrade": { + "message": "Обновяване" + }, + "upgradeOrganization": { + "message": "Обновяване на организацията" + }, + "upgradeOrganizationDesc": { + "message": "Безплатните планове нямат достъп до тази възможност. Преминете към платен план, за да се възползвате от тази и много други възможности." + }, + "createOrganizationStep1": { + "message": "Създаване на организация: стъпка № 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Преди да създадете организацията си, трябва да имате поне безплатен абонамент." + }, + "refunded": { + "message": "Парите са възстановени" + }, + "nothingSelected": { + "message": "Не сте избрали нищо." + }, + "acceptPolicies": { + "message": "Чрез тази отметка вие се съгласявате със следните:" + }, + "acceptPoliciesError": { + "message": "Условията за използване и политиката за поверителност не бяха приети." + }, + "termsOfService": { + "message": "Общи условия" + }, + "privacyPolicy": { + "message": "Политика за поверителност" + }, + "filters": { + "message": "Филтри" + }, + "vaultTimeout": { + "message": "Време за достъп" + }, + "vaultTimeoutDesc": { + "message": "Изберете колко да е времето за достъп и какво ще е действието след това." + }, + "oneMinute": { + "message": "1 минута" + }, + "fiveMinutes": { + "message": "5 минути" + }, + "fifteenMinutes": { + "message": "15 минути" + }, + "thirtyMinutes": { + "message": "30 минути" + }, + "oneHour": { + "message": "1 час" + }, + "fourHours": { + "message": "4 часа" + }, + "onRefresh": { + "message": "При презареждане на страницата" + }, + "dateUpdated": { + "message": "Обновена", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Обновена парола", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Организацията е изключена." + }, + "licenseIsExpired": { + "message": "Изтекъл лиценз." + }, + "updatedUsers": { + "message": "Обновени потребители" + }, + "selected": { + "message": "Избрано" + }, + "ownership": { + "message": "Собственост" + }, + "whoOwnsThisItem": { + "message": "Кой притежава този запис?" + }, + "strong": { + "message": "Силна", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Добра", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Слаба", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Много слаба", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слаба главна парола" + }, + "weakMasterPasswordDesc": { + "message": "Зададената главна парола е твърде слаба. Главната парола трябва да е силна. Добре е да ползвате цяла фраза за парола, за да защитите данните в трезора на Битуорден. Уверени ли сте, че искате да ползвате слаба парола?" + }, + "rotateAccountEncKey": { + "message": "Ключът за шифриране също да се смени" + }, + "rotateEncKeyTitle": { + "message": "Смяна на ключа за шифриране" + }, + "rotateEncKeyConfirmation": { + "message": "Сигурни ли сте, че искате да смените ключа за шифрирането на абонамента?" + }, + "attachmentsNeedFix": { + "message": "Този запис съдържа стар, прикачен файл, който трябва да бъде поправен. Натиснете, за да научите повече." + }, + "attachmentFixDesc": { + "message": "Този прикачен файл е стар и трябва да бъде поправен. Натиснете, за да научите повече." + }, + "fix": { + "message": "Поправяне", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "В трезора ви има стари прикачени файлове. Те трябва да бъдат поправени, за да можете да смените ключа за шифриране на абонамента." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "Безплатно", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Ключ за API" + }, + "apiKeyDesc": { + "message": "Ключът позволява да се идентифицирате към публичното API на Битуорден." + }, + "apiKeyRotateDesc": { + "message": "Смяната на ключа ще направи предния ключ неизползваем. Можете да смените ключа си, ако считате, че текущият не е надежден повече." + }, + "apiKeyWarning": { + "message": "Ключът за API дава пълен достъп до организацията. Трябва да го пазите в тайна." + }, + "userApiKeyDesc": { + "message": "Ключът позволява да се идентифицирате към инструментите на командния ред на Битуорден." + }, + "userApiKeyWarning": { + "message": "Вашият API ключ е алтернативен механизъм автентикация. Той трябва да се пази в тайна." + }, + "oauth2ClientCredentials": { + "message": "Идентификация за клиент за OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Ключ за API" + }, + "rotateApiKey": { + "message": "Смяна на ключа за API" + }, + "selectOneCollection": { + "message": "Изберете поне една колекция." + }, + "couldNotChargeCardPayInvoice": { + "message": "Не можем да сменим картата ви. Разгледайте и платете по неплатените фактури по-долу." + }, + "inAppPurchase": { + "message": "Покупка в приложение" + }, + "cannotPerformInAppPurchase": { + "message": "Не може да извършите това действие, като ползвате метод за плащане за покупка в приложение." + }, + "manageSubscriptionFromStore": { + "message": "Може да управлявате абонамента си от електронния магазин, от който сте го купили." + }, + "minLength": { + "message": "Минимална дължина" + }, + "clone": { + "message": "Дублиране" + }, + "masterPassPolicyDesc": { + "message": "Задаване на минимална сила на главната парола." + }, + "twoStepLoginPolicyDesc": { + "message": "Изискване от потребителите да включат двустепенно удостоверяване за личните си абонаменти." + }, + "twoStepLoginPolicyWarning": { + "message": "Членовете на организацията без двустепенно удостоверяване за личните си абонаменти ще бъдат отстранени от организацията. Те ще бъдат уведомени за това по електронната поща." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Вие сте член на поне една организация, която изисква двустепенно удостоверяване и за личния абонамент. Ако изключите двустепенното удостоверяване, ще бъдете отстранени от тези организации." + }, + "passwordGeneratorPolicyDesc": { + "message": "Задаване на минимална сила на генератора на пароли." + }, + "passwordGeneratorPolicyInEffect": { + "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": "Паролата ви не отговаря на политиките." + }, + "minimumNumberOfWords": { + "message": "Минимален брой думи" + }, + "defaultType": { + "message": "Стандартен вид" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Търсене в кошчето" + }, + "permanentlyDelete": { + "message": "Окончателно изтриване" + }, + "permanentlyDeleteSelected": { + "message": "Окончателно изтриване на избраното" + }, + "permanentlyDeleteItem": { + "message": "Окончателно изтриване на запис" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете записа окончателно?" + }, + "permanentlyDeletedItem": { + "message": "Записът е изтрит окончателно" + }, + "permanentlyDeletedItems": { + "message": "Записите са изтрити окончателно" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "За изтриване сте избрали $COUNT$ запис/а. Сигурни ли сте, че искате да ги изтриете окончателно?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Запис № $ID$ е изтрит окончателно.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Възстановяване" + }, + "restoreSelected": { + "message": "Възстановяване на избраните" + }, + "restoreItem": { + "message": "Възстановяване на запис" + }, + "restoredItem": { + "message": "Записът е възстановен" + }, + "restoredItems": { + "message": "Записите са възстановени" + }, + "restoreItemConfirmation": { + "message": "Сигурни ли сте, че искате да възстановите записа?" + }, + "restoreItems": { + "message": "Възстановяване на записи" + }, + "restoreSelectedItemsDesc": { + "message": "За възстановяване сте избрали $COUNT$ запис/а. Сигурни ли сте, че искате да ги възстановите?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Запис № $ID$ е възстановен.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Излизането от трезора изцяло спира достъпа до него след изтичане на времето. Ще ви се наложи отново да се идентифицирате, за да го достъпите. Сигурни ли сте, че искате това действие?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Потвърждаване на действието" + }, + "hidePasswords": { + "message": "Криене на паролите" + }, + "countryPostalCodeRequiredDesc": { + "message": "Тази информация ни е необходима единствено за изчисляване на данъка при продажба, както и за финансова отчетност." + }, + "includeVAT": { + "message": "Включване на информацията за ДДС/GST (по избор)" + }, + "taxIdNumber": { + "message": "Данъчен номер за ДДС/GST" + }, + "taxInfoUpdated": { + "message": "Данъчната информация е обновена." + }, + "setMasterPassword": { + "message": "Задаване на главна парола" + }, + "ssoCompleteRegistration": { + "message": "За да завършите настройките за еднократна идентификация, трябва да зададете главна парола за трезора." + }, + "identifier": { + "message": "Идентификатор" + }, + "organizationIdentifier": { + "message": "Идентификатор на организация" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Вписване чрез портала на организацията ви за еднократна идентификация. За да продължите, въведете идентификатора на организацията." + }, + "enterpriseSingleSignOn": { + "message": "Еднократна идентификация (SSO)" + }, + "ssoHandOff": { + "message": "Вече може да затворите подпрозореца и да продължите в разширението." + }, + "includeAllTeamsFeatures": { + "message": "Всички възможности в екип плюс:" + }, + "includeSsoAuthentication": { + "message": "Еднократна идентификация чрез SAML2.0 и OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Политики на бизнеса" + }, + "ssoValidationFailed": { + "message": "Неуспешна еднократна идентификация" + }, + "ssoIdentifierRequired": { + "message": "Идентификаторът на организация е задължителен." + }, + "unlinkSso": { + "message": "Прекъсване на еднократна идентификация" + }, + "unlinkSsoConfirmation": { + "message": "Наистина ли искате да премахнете еднократното удостоверяване за тази организация?" + }, + "linkSso": { + "message": "Свързване на еднократна идентификация" + }, + "singleOrg": { + "message": "Една организация" + }, + "singleOrgDesc": { + "message": "Потребителите да не може да са членове на друга организация." + }, + "singleOrgBlockCreateMessage": { + "message": "Вашата настояща организация има политика, която не позволява да участвате в повече от една организация. Моля свържете се с администратора на организацията или се впишете с друг Bitwarden потребител." + }, + "singleOrgPolicyWarning": { + "message": "Членовете, които не са собственици или администратори и са членове на други организации ще бъдат премахнати от тази организация." + }, + "requireSso": { + "message": "Еднократна идентификация" + }, + "requireSsoPolicyDesc": { + "message": "Изискване на потребителите да ползват еднократна идентификация." + }, + "prerequisite": { + "message": "Предпоставкa" + }, + "requireSsoPolicyReq": { + "message": "За да включите тази политика, първо трябва ръчно да включите политиката за еднократна идентификация." + }, + "requireSsoPolicyReqError": { + "message": "Политиката за единствена организация не е включена." + }, + "requireSsoExemption": { + "message": "Тази политика не се прилага към собствениците и администраторите на организацията." + }, + "sendTypeFile": { + "message": "Файл" + }, + "sendTypeText": { + "message": "Текст" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "Изтриване на изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете това изпращане?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "Вид на изпратеното", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "Текущ брой на достъпванията" + }, + "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." + }, + "disabled": { + "message": "Изключено" + }, + "sendLink": { + "message": "Изпращане на връзката", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Копиране на връзката към изпратеното", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Премахване на парола" + }, + "removedPassword": { + "message": "Паролата е премахната" + }, + "removePasswordConfirmation": { + "message": "Сигурни ли сте, че искате да премахнете паролата?" + }, + "hideEmail": { + "message": "Скриване на е-пощата ми от получателите." + }, + "disableThisSend": { + "message": "Пълно спиране на това изпращане — никой няма да има достъп.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "Всички изпращания" + }, + "maxAccessCountReached": { + "message": "Достигнат е максималният брой достъпвания", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Предстои изтриване" + }, + "expired": { + "message": "Изтекъл" + }, + "searchSends": { + "message": "Търсене в изпратените", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Изпратеното е защитено с парола. За да продължите, въведете паролата по-долу,.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Ако не знаете паролата, поискайте от изпращача да ви я даде.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Стандартно изпращането е скрито. Може да промените това като натиснете бутона по-долу.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Изтеглете файл" + }, + "sendAccessUnavailable": { + "message": "Изпращането, което се опитвате да достъпите, е изтрито или вече не е налично.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Файлът за това изпращане липсва.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Няма изпращания за показване.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Авариен достъп" + }, + "emergencyAccessDesc": { + "message": "Даване и управление на извънредния достъп от страна на доверените контакти. Доверените контакти могат да заявят достъп за преглед или пълно поемане в извънредни случаи. Посетете страниците с помощта за повече информация как работи споделянето с нулева информация." + }, + "emergencyAccessOwnerWarning": { + "message": "Вие сте собственик в една или повече организации. Ако дадете достъп за поемане на регистрацията ви в извънредни случаи, поелият ще може да ползва всичките ви права като собственик." + }, + "trustedEmergencyContacts": { + "message": "Доверени извънредни контакти" + }, + "noTrustedContacts": { + "message": "Все още не сте добавили извънредни контакти. За да почнете, поканете доверено лице." + }, + "addEmergencyContact": { + "message": "Добавяне на извънредни контакти" + }, + "designatedEmergencyContacts": { + "message": "Указан като извънреден контакт" + }, + "noGrantedAccess": { + "message": "Все още на никой не сте задали извънреден контакт." + }, + "inviteEmergencyContact": { + "message": "Покана на извънреден контакт" + }, + "editEmergencyContact": { + "message": "Редактиране на извънреден контакт" + }, + "inviteEmergencyContactDesc": { + "message": "Може да поканите потребител да стане извънреден контакт като попълните адреса му за електронна поща, с който е регистриран в Битуорден, по-долу. В случай, че потребителят не е регистриран, той автоматично ще получи покана и да се регистрира." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Начало на извънреден достъп" + }, + "emergencyAccessRecoveryApproved": { + "message": "Извънредният достъп е одобрен" + }, + "viewDesc": { + "message": "Може да вижда всички записи в трезора ви." + }, + "takeover": { + "message": "Поемане" + }, + "takeoverDesc": { + "message": "Можете да изчистите регистрацията си с нова главна парола." + }, + "waitTime": { + "message": "Време за изчакване" + }, + "waitTimeDesc": { + "message": "Време преди автоматичното даване на достъп." + }, + "oneDay": { + "message": "1 ден" + }, + "days": { + "message": "$DAYS$ ден/дни", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Поканен потребител." + }, + "acceptEmergencyAccess": { + "message": "Поканени сте да бъдете извънреден контакт за потребителя по-горе. За да приемете, ще трябва да се впишете в абонамента си към Битуорден. Ако нямате такъв, ще трябва да създадете безплатен абонамент и след това да се впишете в него." + }, + "emergencyInviteAcceptFailed": { + "message": "Поканата не може да бъде приета. Помолете потребителя да ви прати нова." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Поканата не може да бъде приета. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Ще може да достъпите възможностите за извънредно поемане на регистрация след потвърждаване на самоличността ви. Ще ви пратим е-писмо, когато това стане." + }, + "requestAccess": { + "message": "Заявка за достъп" + }, + "requestAccessConfirmation": { + "message": "Сигурни ли сте, че искате да заявите извънреден достъп? Ще го получите след $WAITTIME$ дни или след като потребителят лично одобри заявката.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Заявен е извънреден достъп до трезора на $USER$. Ще ви пратим е-писмо, когато може да продължите.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Одобряване" + }, + "reject": { + "message": "Отказ" + }, + "approveAccessConfirmation": { + "message": "Сигурни ли сте, че искате да одобрите извънредния достъп? Това ще позволи на $USER$ да $ACTION$ вашия трезор.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Извънредният достъп е одобрен." + }, + "emergencyRejected": { + "message": "Извънредният достъп е отказан." + }, + "passwordResetFor": { + "message": "Паролата на потребителя $USER$ е сменена и той може вече да влезе с новата.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Индивидуално притежание" + }, + "personalOwnershipPolicyDesc": { + "message": "Изискване потребителите да запазват записите в трезора на организацията като забраните възможността за индивидуално притежание." + }, + "personalOwnershipExemption": { + "message": "Тази политика не се прилага към собствениците и администраторите на организацията." + }, + "personalOwnershipSubmitError": { + "message": "Заради някоя политика за голяма организация не може да запазвате елементи в собствения си трезор. Променете собствеността да е на организация и изберете от наличните колекции." + }, + "disableSend": { + "message": "Без изпращане" + }, + "disableSendPolicyDesc": { + "message": "Потребителите да не могат да създават ново или да изтриват съществуващо изпращане по Битуорден. Изтриването на съществуващо изпращане продължава да е възможно.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "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." + }, + "sendOptions": { + "message": "Настройки за изпращането", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Настройки за създаване и редактиране на изпращания.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Потребителите в организацията, които имат права да управляват политиките ѝ, не са ограничени от тази политика." + }, + "disableHideEmail": { + "message": "Потребителите да не могат да скриват адреса на е-пощата си от получателите, когато създават или редактират изпращания.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "В момента са в сила следните политики на организацията:" + }, + "sendDisableHideEmailInEffect": { + "message": "Потребителите не могат да скриват адреса на е-пощата си от получателите, когато създават или редактират изпращания.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Редактирана политика № $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Цена на плана" + }, + "estimatedTax": { + "message": "Приблизителен данък" + }, + "custom": { + "message": "По избор" + }, + "customDesc": { + "message": "По-специфичен контрол на правата на потребителите при по-сложни варианти." + }, + "permissions": { + "message": "Права" + }, + "accessEventLogs": { + "message": "Достъп до журналите" + }, + "accessImportExport": { + "message": "Достъп до в/изнасянията" + }, + "accessReports": { + "message": "Достъп до отчетите" + }, + "missingPermissions": { + "message": "Нямате нужните правомощия да извършите това действие." + }, + "manageAllCollections": { + "message": "Управление на всички колекции" + }, + "createNewCollections": { + "message": "Създаване на нови колекции" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Управление на възложените колекции" + }, + "editAssignedCollections": { + "message": "Редактиране на възложените колекции" + }, + "deleteAssignedCollections": { + "message": "Изтриване на възложените колекции" + }, + "manageGroups": { + "message": "Управление на групи" + }, + "managePolicies": { + "message": "Управление на политиките" + }, + "manageSso": { + "message": "Управление на еднократната идентификация (SSO)" + }, + "manageUsers": { + "message": "Управление на потребителите" + }, + "manageResetPassword": { + "message": "Управление на помощта при смяната на паролата" + }, + "disableRequiredError": { + "message": "За да изключите тази политика, първо трябва ръчно да изключите $POLICYNAME$.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Политика от някоя организация влияе на вариантите за собственост." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Политика на организацията забранява да внасяте елементи в личния си трезор." + }, + "personalOwnershipCheckboxDesc": { + "message": "Изключване на индивидуалното притежание за потребителите в организацията" + }, + "textHiddenByDefault": { + "message": "При достъп до изпращането стандартно текстът да се скрива", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Описателно име за това изпращане.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст за изпращане." + }, + "sendFileDesc": { + "message": "Файл за изпращане." + }, + "copySendLinkOnSave": { + "message": "Копиране на връзката към изпращането при запазването му за лесно споделяне." + }, + "sendLinkLabel": { + "message": "Изпращане на връзката", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "С изпращането през Битуорден може лесно и защитено да споделяте, включително и временно, информация с други потребители.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Още за", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Директно споделяне на текст и файлове с който и да е." + }, + "sendVaultCardLearnMore": { + "message": "Научете повече", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "вижте", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "как това работи", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "или", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "пробвайте още сега", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "или", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "се регистрирайте,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "за да го пробвате още днес.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Потребителят на Битуорден — $USER_IDENTIFIER$, сподели следното с вас", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Потребителят, който е създал това изпращане, е избрал да скрие адреса на своята е-поща. Уверете се, че източникът на тази връзка е достоверен, преди да я последвате или да свалите съдържание чрез нея.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Неправилна дата на валидност." + }, + "deletionDateIsInvalid": { + "message": "Неправилна дата на изтриване." + }, + "expirationDateAndTimeRequired": { + "message": "Необходими са дата и време на валидност." + }, + "deletionDateAndTimeRequired": { + "message": "Необходима е дата на изтриване." + }, + "dateParsingError": { + "message": "Грешка при запазване на датата на валидност и изтриване." + }, + "webAuthnFallbackMsg": { + "message": "За да потвърдите двустепенното удостоверяване, натиснете бутона по-долу." + }, + "webAuthnAuthenticate": { + "message": "Идентификация WebAuthn" + }, + "webAuthnNotSupported": { + "message": "Този браузър не поддържа WebAuthn." + }, + "webAuthnSuccess": { + "message": "Успешно удостоверяване чрез WebAuthn!
Можете да затворите този раздел." + }, + "hintEqualsPassword": { + "message": "Подсказването за паролата не може да съвпада с нея." + }, + "enrollPasswordReset": { + "message": "Включване на помощта при смяната на паролата" + }, + "enrolledPasswordReset": { + "message": "Помощта при смяната на паролата е включена" + }, + "withdrawPasswordReset": { + "message": "Изключване на помощта при смяната на паролата" + }, + "enrollPasswordResetSuccess": { + "message": "Успешно включване!" + }, + "withdrawPasswordResetSuccess": { + "message": "Успешно изключване!" + }, + "eventEnrollPasswordReset": { + "message": "Потребителят $ID$ включи помощта при смяна на паролата.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Потребителят $ID$ изключи помощта при смяна на паролата.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Главната парола на потребителя $ID$ беше сменена.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Подновяване на връзката за еднократна идентификация за потребител $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ се вписа за първи път с еднократно удостоверяване", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Смяна на паролата" + }, + "resetPasswordLoggedOutWarning": { + "message": "Действието ще прекрати текущата сесия на $NAME$, след което ще се наложи той отново да се впише. Активните сесии на другите устройства може да останат такива до един час.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "този потребител" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Поне една политика на организация има следните изисквания към главната парола:" + }, + "resetPasswordSuccess": { + "message": "Успешна смяна на паролата!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Включването ще позволи на администраторите на организацията да променят главната Ви парола. Наистина ли искате да се включите?" + }, + "resetPasswordPolicy": { + "message": "Смяна на главната парола" + }, + "resetPasswordPolicyDescription": { + "message": "Позволяване на администраторите на организацията да сменят главните пароли на участващите потребители." + }, + "resetPasswordPolicyWarning": { + "message": "Потребителите в организацията ще трябва да се включат сами или да бъдат включени автоматично, преди администраторите да могат да сменят главните им пароли." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматично включване" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Всички потребители ще бъдат включени автоматично в смяната на пароли след като приемат поканите си." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Потребителите, които вече са част от организацията, няма да бъдат включени в смяната на паролите. Те ще трябва да се включат сами, преди администраторите да могат да сменят главните им пароли." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Автоматично включване на новите потребители" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Тази организация включва автоматично новите си потребители в смяната на пароли. Това означава, че администраторите на организацията ще могат да променят главната Ви парола." + }, + "resetPasswordOrgKeysError": { + "message": "Празен отговор на заявката за ключовете на организацията" + }, + "resetPasswordDetailsError": { + "message": "Празен отговор на заявката за детайли относно смяната на паролата" + }, + "trashCleanupWarning": { + "message": "Записите, които са били в кошчето за повече от 30 дни, ще бъдат изтривани автоматично." + }, + "trashCleanupWarningSelfHosted": { + "message": "Записите, които са били известно време в кошчето, ще бъдат изтривани автоматично." + }, + "passwordPrompt": { + "message": "Повторно запитване за главната парола" + }, + "passwordConfirmation": { + "message": "Потвърждение на главната парола" + }, + "passwordConfirmationDesc": { + "message": "Това действие е защитено. За да продължите, въведете отново главната си парола, за да потвърдите самоличността си." + }, + "reinviteSelected": { + "message": "Изпращане на поканите наново" + }, + "noSelectedUsersApplicable": { + "message": "Това действие не може да се изпълни за никого от избраните потребители." + }, + "removeUsersWarning": { + "message": "Наистина ли искате да премахнете следните потребители? Процесът може да отнеме няколко секунди и не може да бъде прекъснат или отменен." + }, + "theme": { + "message": "Облик" + }, + "themeDesc": { + "message": "Изберете облика на трезора по уеб." + }, + "themeSystem": { + "message": "От системата" + }, + "themeDark": { + "message": "Тъмен" + }, + "themeLight": { + "message": "Светъл" + }, + "confirmSelected": { + "message": "Потвърждаване на избраните" + }, + "bulkConfirmStatus": { + "message": "Състояние на груповото действие" + }, + "bulkConfirmMessage": { + "message": "Успешно потвърдено." + }, + "bulkReinviteMessage": { + "message": "Успешно изпратени наново покани." + }, + "bulkRemovedMessage": { + "message": "Успешно премахване" + }, + "bulkFilteredMessage": { + "message": "Изключени като неподходящи за това действие." + }, + "fingerprint": { + "message": "Отпечатък" + }, + "removeUsers": { + "message": "Премахване на потребителите" + }, + "error": { + "message": "Грешка" + }, + "resetPasswordManageUsers": { + "message": "Управлението на потребителите трябва също да бъде включено с разрешението за „Управление на помощта при смяната на паролата“" + }, + "setupProvider": { + "message": "Настройка на доставчика" + }, + "setupProviderLoginDesc": { + "message": "Получихте покана да настроите нов доставчик. За да продължите, трябва да се впишете или да си направите нова регистрация в Битуорден." + }, + "setupProviderDesc": { + "message": "Попълнете информацията по-долу, за да завършите настройката на доставчика. Ако имате въпроси, свържете се с поддръжката." + }, + "providerName": { + "message": "Име на доставчика" + }, + "providerSetup": { + "message": "Доставчикът е настроен." + }, + "clients": { + "message": "Клиенти" + }, + "providerAdmin": { + "message": "Администратор на доставчика" + }, + "providerAdminDesc": { + "message": "Потребителят с най-големи права на достъп, който може да управлява всички настройки на доставчика, както и да има достъп до и да управлява клиентските организации." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Може да поканите потребител към доставчика си, като попълните адреса му за електронна поща, с който е регистриран в Битуорден, по-долу. В случай, че потребителят не е регистриран, той автоматично ще получи покана и да се регистрира." + }, + "joinProvider": { + "message": "Присъединяване към доставчика" + }, + "joinProviderDesc": { + "message": "Получихте покана да се присъедините към посочения по-горе доставчик. За да приемете, ще трябва да се впишете в абонамента си към Битуорден. Ако нямате такъв, ще трябва да създадете безплатен абонамент и след това да се впишете в него." + }, + "providerInviteAcceptFailed": { + "message": "Поканата не може да бъде приета. Помолете администратора на доставчика да ви прати нова." + }, + "providerInviteAcceptedDesc": { + "message": "Ще имате достъп до доставчика, след като администраторът му потвърди членството ви. Ще ви изпратим електронно писмо, когато това се случи." + }, + "providerUsersNeedConfirmed": { + "message": "Има потребители, които са приели поканата си, но все още трябва да бъдат потвърдени. Потвърждаването е необходимо, за да получат достъп до доставчика." + }, + "provider": { + "message": "Доставчик" + }, + "newClientOrganization": { + "message": "Нова клиентска организация" + }, + "newClientOrganizationDesc": { + "message": "Създаване на нова клиентска организация, за която ще играете ролята на доставчик. Вие ще имате достъп до тази организация и ще можете да я управлявате." + }, + "addExistingOrganization": { + "message": "Добавяне на съществуваща организация" + }, + "myProvider": { + "message": "Моят доставчик" + }, + "addOrganizationConfirmation": { + "message": "Наистина ли искате да добавите $ORGANIZATION$ като клиент на $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Организацията беше успешно добавена към доставчика" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Доставчикът е изключен." + }, + "providerUpdated": { + "message": "Доставчикът е обновен" + }, + "yourProviderIs": { + "message": "Вашият доставчик е $PROVIDER$. Той има административни и платежни права върху организацията Ви.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Организацията $ORGANIZATION$ беше отделена от доставчика Ви.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Наистина ли искате да отделите тази организация? Тя ще продължи да съществува, но вече няма да се управлява от доставчика." + }, + "add": { + "message": "Добавяне" + }, + "updatedMasterPassword": { + "message": "Главната парола е променена" + }, + "updateMasterPassword": { + "message": "Промяна на главната парола" + }, + "updateMasterPasswordWarning": { + "message": "Вашата главна парола наскоро е била сменена от администратор в организацията Ви. За да получите достъп до трезора, трябва да промените главната си парола сега. Това означава, че ще бъдете отписан(а) от текущата си сесия и ще трябва да се впишете отново. Активните сесии на други устройства може да продължат да бъдат активни още един час." + }, + "masterPasswordInvalidWarning": { + "message": "Вашата главна парола не отговарян на изискванията в политиката на тази организацията. За да се присъедините към организацията, трябва да промените главната си парола сега. Това означава, че ще бъдете отписан(а) от текущата си сесия и ще трябва да се впишете отново. Активните сесии на други устройства може да продължат да бъдат активни още един час." + }, + "maximumVaultTimeout": { + "message": "Време за достъп" + }, + "maximumVaultTimeoutDesc": { + "message": "Настройте максимално време за достъп до трезора, което ще важи за всички потребители." + }, + "maximumVaultTimeoutLabel": { + "message": "Максимално време за достъп до трезора" + }, + "invalidMaximumVaultTimeout": { + "message": "Неправилно максимално време за достъп." + }, + "hours": { + "message": "Часа" + }, + "minutes": { + "message": "Минути" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Настройките на организацията Ви влияят върху времето за достъп до трезора Ви. Максималното разрешено време за достъп е $HOURS$ час(а) и $MINUTES$ минути", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "customVaultTimeout": { + "message": "Персонализирано време за достъп до трезора" + }, + "vaultTimeoutToLarge": { + "message": "Времето за достъп до трезора Ви превишава ограничението, определено от организацията Ви." + }, + "disablePersonalVaultExport": { + "message": "Забраняване на изнасянето на личния трезор" + }, + "disablePersonalVaultExportDesc": { + "message": "Забранява на потребителите да изнасят данните от своя личен трезор." + }, + "vaultExportDisabled": { + "message": "Изнасянето на трезора е изключено" + }, + "personalVaultExportPolicyInEffect": { + "message": "Една или повече от настройките на организацията Ви не позволяват да изнасяте личния си трезор." + }, + "selectType": { + "message": "Изберете вид еднократна идентификация" + }, + "type": { + "message": "Вид" + }, + "openIdConnectConfig": { + "message": "Настройка на OpenID Connect" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Адрес за метаданни" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "Адрес за метаданни на SAML 2.0" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Проверка на сертификатите" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Адрес на услугата за еднократна идентификация" + }, + "idpSingleLogoutServiceUrl": { + "message": "Адрес на услугата за еднократно отписване" + }, + "idpX509PublicCert": { + "message": "Публичен сертификат X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Изходящ подписващ алгоритъм" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Разрешаване на непоискан отговор при удостоверяване" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Разрешаване на изходящите заявки за отписване" + }, + "idpSignAuthenticationRequests": { + "message": "Подписване на заявките за удостоверяване" + }, + "ssoSettingsSaved": { + "message": "Настройката на еднократната идентификация е запазена." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "Семейният план на Битуорден включва" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Споделени колекции за семейни тайни" + }, + "badToken": { + "message": "Връзката е с изтекла давност. Помолете спонсора да изпрати отново предложението." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "От кое предложение за безплатен семеен план искате да се възползвате?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Безплатен семеен план" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Получател" + }, + "removeSponsorship": { + "message": "Премахване на спонсорирането" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Писмото е изпратено" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Конекторът за ключове е недостъпен. Опитайте отново по-късно." + }, + "keyConnectorUrl": { + "message": "Адрес на конектора за ключове" + }, + "sendVerificationCode": { + "message": "Изпращане на код за потвърждаване до Вашата ел. поща" + }, + "sendCode": { + "message": "Изпращане на кода" + }, + "codeSent": { + "message": "Кодът е изпратен" + }, + "verificationCode": { + "message": "Код за потвърждаване" + }, + "confirmIdentity": { + "message": "Потвърдете самоличността си, за да продължите." + }, + "verificationCodeRequired": { + "message": "Кодът за потвърждение е задължителен." + }, + "invalidVerificationCode": { + "message": "Грешен код за потвърждаване" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ използва еднократно удостоверяване със собствен сървър за ключове. Членовете на тази организация вече нямат нужда от главна парола за вписване.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Напускане на организацията" + }, + "removeMasterPassword": { + "message": "Премахване на главната парола" + }, + "removedMasterPassword": { + "message": "Главната парола е премахната." + }, + "allowSso": { + "message": "Разрешаване на еднократното удостоверяване" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Включете", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "еднократното удостоверяване", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "за да задължите всички членове да се вписват чрез еднократно удостоверяване.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "След вписване, членовете ще дешифрират данните от трезорите си чрез главната си парола." + }, + "keyConnector": { + "message": "Конектор за ключове" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Свържете вписването чрез еднократно удостоверяване със своя собствен сървър за ключове за дешифриране. Така няма да има нужда членовете да използват главната си парола, за да дешифрират данните от трезора си." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Еднократното удостоверяване е включено" + }, + "disabledSso": { + "message": "Еднократното удостоверяване е изключено" + }, + "enabledKeyConnector": { + "message": "Конекторът за ключове е включен" + }, + "disabledKeyConnector": { + "message": "Конекторът за ключове е изключен" + }, + "keyConnectorWarning": { + "message": "След като конекторът за ключове е бъде настроен, настройките на членовете за дешифриране няма да могат да бъда променени." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Приемане на предложението" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Тест" + }, + "keyConnectorTestSuccess": { + "message": "Успешно свързване! Конекторът за ключове е достъпен." + }, + "keyConnectorTestFail": { + "message": "Конекторът за ключове е недостъпен. Проверете адреса." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "БЕЗПЛАТНО чрез спонсориране" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ полета по-горе се нуждаят от вниманието Ви.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 поле по-горе се нуждае от вниманието Ви." + }, + "fieldRequiredError": { + "message": "Полето „$FIELDNAME$“ е задължително.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "задължително" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Незадължителни персонализации" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Сесията Ви изтече. Моля, върнете се назад и се опитайте да влезете отново." + }, + "exportingPersonalVaultTitle": { + "message": "Изнасяне на личния трезор" + }, + "exportingOrganizationVaultTitle": { + "message": "Изнасяне на трезора на организацията" + }, + "exportingPersonalVaultDescription": { + "message": "Ще бъдат изнесени само записите от личния трезор свързан с $EMAIL$. Записите в трезора на организацията няма да бъдат включени.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Ще бъдат изнесени само записите от трезора свързан с $ORGANIZATION$. Записите в личния трезор и тези в други организации няма да бъдат включени.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Обратно към докладите" + }, + "generator": { + "message": "Генератор" + }, + "whatWouldYouLikeToGenerate": { + "message": "Какво бихте искали да генерирате?" + }, + "passwordType": { + "message": "Тип парола" + }, + "regenerateUsername": { + "message": "Повторно генериране на потр. име" + }, + "generateUsername": { + "message": "Генериране на потр. име" + }, + "usernameType": { + "message": "Тип потребителско име" + }, + "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": "Използвайте възможностите за под-адресиране на е-поща на своя доставчик." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Произволно" + }, + "randomWord": { + "message": "Произволна дума" + }, + "service": { + "message": "Услуга" + } +} diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json new file mode 100644 index 0000000000..6b54975cf1 --- /dev/null +++ b/apps/web/src/locales/bn/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ ওয়েব ভল্ট", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "পাসওয়ার্ড" + }, + "newPassword": { + "message": "নতুন পাসওয়ার্ড" + }, + "passphrase": { + "message": "পাসফ্রেজ" + }, + "notes": { + "message": "মন্তব্য" + }, + "customFields": { + "message": "পছন্দসই ক্ষেত্র" + }, + "cardholderName": { + "message": "কার্ডধারীর নাম" + }, + "number": { + "message": "নম্বর" + }, + "brand": { + "message": "ব্র্যান্ড" + }, + "expiration": { + "message": "মেয়াদোত্তীর্ণতা" + }, + "securityCode": { + "message": "নিরাপত্তা কোড (CVV)" + }, + "identityName": { + "message": "পরিচয়ের নাম" + }, + "company": { + "message": "কোম্পানি" + }, + "ssn": { + "message": "সামাজিক সুরক্ষা নম্বর" + }, + "passportNumber": { + "message": "পাসপোর্ট নম্বর" + }, + "licenseNumber": { + "message": "লাইসেন্স নম্বর" + }, + "email": { + "message": "ই-মেইল" + }, + "phone": { + "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": "ডিসেম্বর" + }, + "title": { + "message": "শিরোনাম" + }, + "mr": { + "message": "জনাব" + }, + "mrs": { + "message": "জনাবা" + }, + "ms": { + "message": "জনাবা" + }, + "dr": { + "message": "ডাঃ" + }, + "expirationMonth": { + "message": "মেয়াদোত্তীর্ণ মাস" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "সরান" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "কোন ফোল্ডার নেই", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "ফোল্ডার জুড়ুন" + }, + "editFolder": { + "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." + }, + "never": { + "message": "কখনই না" + }, + "toggleVisibility": { + "message": "দৃশ্যমানতা টগল করুন" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "পাসওয়ার্ড তৈরি করুন" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "ডেটা লঙ্ঘনে এই পাসওয়ার্ডটি $VALUE$ সময় (গুলি) উন্মুক্ত করা হয়েছে। আপনার এটি পরিবর্তন করা উচিত।", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "এই পাসওয়ার্ডটি কোনও পরিচিত তথ্য লঙ্ঘনে পাওয়া যায় নি। এটি ব্যবহার করা নিরাপদ হওয়া উচিত।" + }, + "save": { + "message": "সংরক্ষণ" + }, + "cancel": { + "message": "বাতিল" + }, + "canceled": { + "message": "বাতিলকৃত" + }, + "close": { + "message": "বন্ধ করুন" + }, + "delete": { + "message": "মুছুন" + }, + "favorite": { + "message": "প্রিয়" + }, + "unfavorite": { + "message": "অপ্রিয়" + }, + "edit": { + "message": "সম্পাদনা" + }, + "searchCollection": { + "message": "সংগ্রহ অনুসন্ধান" + }, + "searchFolder": { + "message": "ফোল্ডার অনুসন্ধান" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "অনুসন্ধানের ধরন", + "description": "Search item type" + }, + "searchVault": { + "message": "ভল্ট খুঁজুন" + }, + "allItems": { + "message": "সকল বস্তু" + }, + "favorites": { + "message": "প্রিয়গুলো" + }, + "types": { + "message": "প্রকার" + }, + "typeLogin": { + "message": "লগইন" + }, + "typeCard": { + "message": "কার্ড" + }, + "typeIdentity": { + "message": "পরিচয়" + }, + "typeSecureNote": { + "message": "সুরক্ষিত নোট" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "ফোল্ডারসমূহ" + }, + "collections": { + "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": "দেশ" + }, + "shared": { + "message": "ভাগকৃত" + }, + "attachments": { + "message": "সংযুক্তি" + }, + "select": { + "message": "নির্বাচন করুন" + }, + "addItem": { + "message": "বস্তু জুড়ুন" + }, + "editItem": { + "message": "বস্তু সম্পাদনা" + }, + "viewItem": { + "message": "বস্তু দেখুন" + }, + "ex": { + "message": "উদাহরণ", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "অন্যান্য" + }, + "share": { + "message": "ভাগ করুন" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ অনুলিপিত", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "মান অনুলিপিত করুন", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "পাসওয়ার্ড অনুলিপিত করুন", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "ব্যবহারকারীর নাম অনুলিপিত করুন", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "আমার ভল্ট" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Delete Selected" + }, + "moveSelected": { + "message": "Move Selected" + }, + "selectAll": { + "message": "Select All" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Launch" + }, + "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": "ফাইল" + }, + "selectFile": { + "message": "একটি ফাইল নির্বাচন করুন।" + }, + "maxFileSize": { + "message": "সর্বোচ্চ ফাইলের আকার ১০০ এমবি।" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "loginOrCreateNewAccount": { + "message": "আপনার সুরক্ষিত ভল্টে প্রবেশ করতে লগ ইন করুন অথবা একটি নতুন অ্যাকাউন্ট তৈরি করুন।" + }, + "createAccount": { + "message": "অ্যাকাউন্ট তৈরি" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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": "পুনরায় মূল পাসওয়ার্ডটি লিখুন" + }, + "masterPassHint": { + "message": "মূল পাসওয়ার্ড ইঙ্গিত (ঐচ্ছিক)" + }, + "masterPassHintLabel": { + "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": "একটি অপ্রত্যাশিত ত্রুটি ঘটেছে।" + }, + "emailAddress": { + "message": "ইমেইল ঠিকানা" + }, + "yourVaultIsLocked": { + "message": "আপনার ভল্ট লক করা আছে। চালিয়ে যেতে আপনার মূল পাসওয়ার্ডটি যাচাই করান।" + }, + "unlock": { + "message": "আনলক" + }, + "loggedInAsEmailOn": { + "message": "$HOSTNAME$ এ $EMAIL$ হিসাবে লগ ইনকৃত।", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "অবৈধ মূল পাসওয়ার্ড" + }, + "lockNow": { + "message": "এখনই লক করুন" + }, + "noItemsInList": { + "message": "তালিকার জন্য কোনও বস্তু নেই।" + }, + "noCollectionsInList": { + "message": "তালিকার জন্য কোনও সংগ্রহ নেই।" + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "নতুন সংগঠন" + }, + "noOrganizationsList": { + "message": "আপনি কোনও সংস্থার অন্তর্ভুক্ত নন। সংগঠনগুলি আপনাকে নিরাপদে অন্য ব্যবহারকারীর সাথে বস্তুসমূহ ভাগ করে নেওয়ার অনুমতি দেয়।" + }, + "versionNumber": { + "message": "সংস্করণ $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "আপনার কম্পিউটারের ইউএসবি পোর্টে আপনার সুরক্ষা কী ঢোকান। এটিতে যদি একটি বোতাম থাকে তবে তা স্পর্শ করুন।" + }, + "loginUnavailable": { + "message": "লগইন অনুপলব্ধ" + }, + "noTwoStepProviders": { + "message": "এই অ্যাকাউন্টে দ্বি-পদক্ষেপ লগইন সক্ষম রয়েছে, তবে কনফিগারকৃত দ্বি-পদক্ষেপ সরবরাহকারীদের কোনওটিই এই ওয়েব ব্রাউজার দ্বারা সমর্থিত নয়।" + }, + "noTwoStepProviders2": { + "message": "দয়া করে একটি সমর্থিত ওয়েব ব্রাউজার ব্যবহার করুন (যেমন ক্রোম) এবং/অথবা অতিরিক্ত সরবরাহকারী যুক্ত করুন যা ওয়েব ব্রাউজারগুলিতে আরও ভাল সমর্থিত (যেমন একটি প্রমাণীকরণকারী অ্যাপ)।" + }, + "twoStepOptions": { + "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": "Use a YubiKey to access your account. Works with YubiKey 4 series, 5 series, and NEO devices." + }, + "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." + }, + "u2fDesc": { + "message": "আপনার অ্যাকাউন্ট ব্যাবহার করতে যেকোন FIDO U2F সক্ষম সুরক্ষা কী ব্যবহার করুন।" + }, + "u2fTitle": { + "message": "FIDO U2F সুরক্ষা কী" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "পাসওয়ার্ড উৎপাদক" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "নতুন মূল পাসওয়ার্ড" + }, + "confirmNewMasterPass": { + "message": "নতুন মূল পাসওয়ার্ড নিশ্চিত করুন" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "ভাষা" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "ওয়েবসাইট আইকন অক্ষম করুন" + }, + "disableIconsDesc": { + "message": "ওয়েবসাইট আইকনগুলি আপনার ভল্টের প্রতিটি লগইন বস্তুর পাশে একটি পরিচয়যোগ্য চিত্র সরবরাহ করে।" + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "পূর্ব-নির্ধারিত" + }, + "domainRules": { + "message": "ডোমেইন নিয়ম" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "দ্বি-পদক্ষেপের লগইন" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "পুনরুদ্ধার কোড দেখুন" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "প্রিমিয়াম", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "প্রিমিয়াম সদস্যতা" + }, + "premiumRequired": { + "message": "প্রিমিয়াম আবশ্যক" + }, + "premiumRequiredDesc": { + "message": "এই বৈশিষ্ট্যটি ব্যবহার করতে একটি প্রিমিয়াম সদস্যতার প্রয়োজন।" + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "দুর্বল পাসওয়ার্ডগুলি সহজেই হ্যাকার এবং স্বয়ংক্রিয় সরঞ্জামগুলির দ্বারা অনুমান করা যায় যা পাসওয়ার্ড ক্র্যাক করার জন্য ব্যবহৃত হয়। Bitwarden পাসওয়ার্ড উৎপাদক আপনাকে শক্তিশালী পাসওয়ার্ড তৈরি করতে সহায়তা করতে পারে।" + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "ভাল খবর", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "ফাইল সংযুক্তির জন্য ১ জিবি এনক্রিপ্টেড স্থান।" + }, + "premiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F, ও Duo এর মতো অতিরিক্ত দ্বি-পদক্ষেপ লগইন বিকল্পগুলি।" + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "premiumSignUpReports": { + "message": "আপনার ভল্টটি সুরক্ষিত রাখতে পাসওয়ার্ড স্বাস্থ্যকরন, অ্যাকাউন্ট স্বাস্থ্য এবং ডেটা লঙ্ঘনের প্রতিবেদন।" + }, + "premiumSignUpTotp": { + "message": "আপনার ভল্টে লগইনগুলির জন্য TOTP যাচাইকরণ কোড (2FA) উৎপাদক।" + }, + "premiumSignUpSupport": { + "message": "অগ্রাধিকার গ্রাহক সমর্থন।" + }, + "premiumSignUpFuture": { + "message": "ভবিষ্যতের সমস্ত প্রিমিয়াম বৈশিষ্ট্য। আরও শীঘ্রই আসছে!" + }, + "premiumPrice": { + "message": "সমস্ত মাত্র $PRICE$ / বছরের জন্য!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "সারাংশ" + }, + "total": { + "message": "মোট" + }, + "year": { + "message": "বছর" + }, + "month": { + "message": "মাস" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "অজানা" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "ওয়েব ভল্ট" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "আরও জানুন" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "আমার সংগঠন" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "ট্যাক্স তথ্য" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "লোড হচ্ছে" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "এই বাক্সটি টিক করে আপনি নিম্নলিখিতগুলিতে সম্মত হন:" + }, + "acceptPoliciesError": { + "message": "পরিষেবার শর্তাদি এবং গোপনীয়তা নীতি স্বীকার করা হয়নি।" + }, + "termsOfService": { + "message": "সেবা পাবার শর্ত" + }, + "privacyPolicy": { + "message": "গোপনীয়তা নীতি" + }, + "filters": { + "message": "ফিল্টার" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "১ মিনিট" + }, + "fiveMinutes": { + "message": "৫ মিনিট" + }, + "fifteenMinutes": { + "message": "১৫ মিনিট" + }, + "thirtyMinutes": { + "message": "৩০ মিনিট" + }, + "oneHour": { + "message": "১ ঘণ্টা" + }, + "fourHours": { + "message": "৪ ঘন্টা" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "হালনাগাদকৃত", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "পাসওয়ার্ড হালনাগাদকৃত", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "এই বস্তুটির মালিক কে?" + }, + "strong": { + "message": "শক্তিশালী", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "ভাল", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "দুর্বল", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "খুবই দুর্বল", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "দুর্বল মূল পাসওয়ার্ড" + }, + "weakMasterPasswordDesc": { + "message": "আপনার চয়নকৃত মূল পাসওয়ার্ডটি দুর্বল। আপনার Bitwarden অ্যাকাউন্টটি সঠিকভাবে সুরক্ষিত করার জন্য আপনার একটি শক্তিশালী মূল পাসওয়ার্ড (বা একটি পাসফ্রেজ) ব্যবহার করা উচিত। আপনি কি নিশ্চিত যে এই মূল পাসওয়ার্ডটি ব্যবহার করতে চান?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "পাসওয়ার্ড উৎপাদকের কনফিগারেশনের জন্য ন্যূনতম প্রয়োজনীয়তা সেট করুন।" + }, + "passwordGeneratorPolicyInEffect": { + "message": "এক বা একাধিক সংস্থার নীতিগুলি আপনার উৎপাদকের সেটিংসকে প্রভাবিত করছে।" + }, + "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": "এক বা একাধিক ছোট হাতের অক্ষর রয়েছে" + }, + "policyInEffectNumbers": { + "message": "এক বা একাধিক সংখ্যা রয়েছে" + }, + "policyInEffectSpecial": { + "message": "নিম্নলিখিত বিশেষ অক্ষরগুলির একটি বা একাধিক রয়েছে $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "আপনার নতুন মূল পাসওয়ার্ড নীতির প্রয়োজনীয়তা পূরণ করে না।" + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "setMasterPassword": { + "message": "মূল পাসওয়ার্ড ধার্য করুন" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "ফাইল" + }, + "sendTypeText": { + "message": "পাঠ্য" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "লিঙ্ক পাঠান", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json new file mode 100644 index 0000000000..0bf3605e4a --- /dev/null +++ b/apps/web/src/locales/bs/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Veb Trezor", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Koja je ovo vrsta 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" + }, + "newPassword": { + "message": "Nova lozinka" + }, + "passphrase": { + "message": "Tajna fraza" + }, + "notes": { + "message": "Bilješke" + }, + "customFields": { + "message": "Prilagođena polja" + }, + "cardholderName": { + "message": "Ime vlasnika kartice" + }, + "number": { + "message": "Broj" + }, + "brand": { + "message": "Brend" + }, + "expiration": { + "message": "Datum isteka" + }, + "securityCode": { + "message": "Sigurnosni Kod (CVV)" + }, + "identityName": { + "message": "Ime identiteta" + }, + "company": { + "message": "Preduzeće" + }, + "ssn": { + "message": "Broj Socijalnog Osiguranja" + }, + "passportNumber": { + "message": "Broj Pasoša" + }, + "licenseNumber": { + "message": "Broj Vozačke Dozvole" + }, + "email": { + "message": "Imejl" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "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" + }, + "authenticatorKeyTotp": { + "message": "Ključ Autentifikatora (TOTP)" + }, + "folder": { + "message": "Fascikla" + }, + "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": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Canceled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Prezime" + }, + "fullName": { + "message": "Ime i prezime" + }, + "address1": { + "message": "Adresa 1" + }, + "address2": { + "message": "Adresa 2" + }, + "address3": { + "message": "Adresa 3" + }, + "cityTown": { + "message": "Grad / Naselje" + }, + "stateProvince": { + "message": "Država / Okrug" + }, + "zipPostalCode": { + "message": "Zip / Poštanski Broj" + }, + "country": { + "message": "Zemlja" + }, + "shared": { + "message": "Dijeljeno" + }, + "attachments": { + "message": "Prilozi" + }, + "select": { + "message": "Odaberite" + }, + "addItem": { + "message": "Dodajte Stavku" + }, + "editItem": { + "message": "Uredite Stavku" + }, + "viewItem": { + "message": "Prikaz Stavke" + }, + "ex": { + "message": "npr.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Ostalo" + }, + "share": { + "message": "Podijelite" + }, + "moveToOrganization": { + "message": "Premjestite u Organizaciju" + }, + "valueCopied": { + "message": "$VALUE$ kopirano", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopirajte Vrijednost", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopirajte Lozinku", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopirajte Korisničko ime", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopirajte broj", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopirajte Sigurnosni Kod", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopirajte URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Moj trezor" + }, + "vault": { + "message": "Trezor" + }, + "moveSelectedToOrg": { + "message": "Premjestite Odabrano u Organizaciju" + }, + "deleteSelected": { + "message": "Obrišite Odabrano" + }, + "moveSelected": { + "message": "Premjestite Odabrano" + }, + "selectAll": { + "message": "Odaberite Sve" + }, + "unselectAll": { + "message": "Poništite odabir" + }, + "launch": { + "message": "Pokrenite" + }, + "newAttachment": { + "message": "Dodajte Novi Prilog" + }, + "deletedAttachment": { + "message": "Izbrisani prilog" + }, + "deleteAttachmentConfirmation": { + "message": "Sigurno želite izbrisati ovaj prilog?" + }, + "attachmentSaved": { + "message": "Prilog je sačuvan." + }, + "file": { + "message": "Datoteka" + }, + "selectFile": { + "message": "Odaberite datoteku." + }, + "maxFileSize": { + "message": "Maksimalna veličina datoteke je 500 MB." + }, + "updateKey": { + "message": "Ne možete koristiti ovu uslugu dok ne ažurirate Vaš enkripcioni ključ." + }, + "addedItem": { + "message": "Stavka Dodata" + }, + "editedItem": { + "message": "Stavka uređena" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ premješteno u $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Odabrane stavke premještene u $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Izbrišite Stavku" + }, + "deleteFolder": { + "message": "Izbrišite Fasciklu" + }, + "deleteAttachment": { + "message": "Izbrišite Prilog" + }, + "deleteItemConfirmation": { + "message": "Da li zaista želite da obrišete ovu stavku?" + }, + "deletedItem": { + "message": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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." + }, + "emailAddress": { + "message": "Email Address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "Nema događaja za prikaz." + }, + "newOrganization": { + "message": "Nova organizacija" + }, + "noOrganizationsList": { + "message": "Ne pripadaš niti jednoj organizaciji. Organizacije omogućuju sigurno dijeljenje stavki s drugim korisnicima." + }, + "versionNumber": { + "message": "Verzija $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Unesite 6-cifreni verifikacioni kod iz aplikacije za autentifikaciju." + }, + "enterVerificationCodeEmail": { + "message": "Unesite 6-cifreni verifikacioni kod poslat na imejl $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Imejl za potvrdu poslat na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapamti me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Ponovno slanje kontrolnog koda imejlom" + }, + "useAnotherTwoStepMethod": { + "message": "Koristiti drugi način prijave u dva koraka" + }, + "insertYubiKey": { + "message": "Povežite Vaš YubiKey preko USB porta na vašem računaru, pa pritisnite dugme na njemu." + }, + "insertU2f": { + "message": "Povežite Vaš sigurnosni ključ preko USB porta na Vaš računar. Ukoliko ima dugme, pritisnite ga." + }, + "loginUnavailable": { + "message": "Prijava nije dostupna" + }, + "noTwoStepProviders": { + "message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja prijave u dva koraka." + }, + "noTwoStepProviders2": { + "message": "Molimo Vas da koristite neki od pretraživača koji su podržani (poput Chrome-a) i/ili dodajte pružaoce usluga čija podrška obuhvata više pretraživača (poput nekih aplikacija za autentifikaciju)." + }, + "twoStepOptions": { + "message": "Mogućnosti prijave u dva koraka" + }, + "recoveryCodeDesc": { + "message": "Izgubljen je pristup uređaju za dvostruku autentifikaciju? Koristite svoj kôd za oporavak za onemogućavanje svih pružatelja usluga dvostruke autentifikacije na tvojem računu." + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json new file mode 100644 index 0000000000..401d4585a6 --- /dev/null +++ b/apps/web/src/locales/ca/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Caixa forta web $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Quin tipus d'element és aquest?" + }, + "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" + }, + "newPassword": { + "message": "Nova contrasenya" + }, + "passphrase": { + "message": "Frase de pas" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Camps personalitzats" + }, + "cardholderName": { + "message": "Nom del titular de la targeta" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Caducitat" + }, + "securityCode": { + "message": "Codi de seguretat (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Suprimeix" + }, + "unassigned": { + "message": "Sense assignar" + }, + "noneFolder": { + "message": "Cap carpeta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Afegeix carpeta" + }, + "editFolder": { + "message": "Edita la carpeta" + }, + "baseDomain": { + "message": "Domini base", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nom del domini", + "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." + }, + "never": { + "message": "Mai" + }, + "toggleVisibility": { + "message": "Commuta la visibilitat" + }, + "toggleCollapse": { + "message": "Redueix/Amplia", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Genera contrasenya" + }, + "checkPassword": { + "message": "Comprova si la contrasenya ha estat exposada." + }, + "passwordExposed": { + "message": "Aquesta contrasenya ha estat exposada $VALUE$ vegades en filtracions 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." + }, + "save": { + "message": "Guarda" + }, + "cancel": { + "message": "Cancel·la" + }, + "canceled": { + "message": "Cancel·lat" + }, + "close": { + "message": "Tanca" + }, + "delete": { + "message": "Suprimeix" + }, + "favorite": { + "message": "Preferit" + }, + "unfavorite": { + "message": "Treu dels preferits" + }, + "edit": { + "message": "Edita" + }, + "searchCollection": { + "message": "Cerca en col·lecció" + }, + "searchFolder": { + "message": "Cerca en la carpeta" + }, + "searchFavorites": { + "message": "Cerca en preferits" + }, + "searchType": { + "message": "Cerca en tipus", + "description": "Search item type" + }, + "searchVault": { + "message": "Cerca en la caixa forta" + }, + "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" + }, + "typeLoginPlural": { + "message": "Inicis de sessió" + }, + "typeCardPlural": { + "message": "Targetes" + }, + "typeIdentityPlural": { + "message": "Identitats" + }, + "typeSecureNotePlural": { + "message": "Notes segures" + }, + "folders": { + "message": "Carpetes" + }, + "collections": { + "message": "Col·leccions" + }, + "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" + }, + "shared": { + "message": "Compartit" + }, + "attachments": { + "message": "Adjunts" + }, + "select": { + "message": "Selecciona" + }, + "addItem": { + "message": "Afegeix element" + }, + "editItem": { + "message": "Edita l'element" + }, + "viewItem": { + "message": "Visualitza l'element" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Altres" + }, + "share": { + "message": "Comparteix" + }, + "moveToOrganization": { + "message": "Desplaça a l'organització" + }, + "valueCopied": { + "message": "S'ha copiat $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copia el valor", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copia la contrasenya", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copia el nom d'usuari", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "Copia URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "La meua caixa forta" + }, + "vault": { + "message": "Caixa forta" + }, + "moveSelectedToOrg": { + "message": "Desplaça la selecció a l'organització" + }, + "deleteSelected": { + "message": "Suprimeix selecció" + }, + "moveSelected": { + "message": "Desplaça selecció" + }, + "selectAll": { + "message": "Selecciona-ho tot" + }, + "unselectAll": { + "message": "Anul·la tota la selecció" + }, + "launch": { + "message": "Inicia" + }, + "newAttachment": { + "message": "Afegeix un nou adjunt" + }, + "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 funció fins que actualitzeu la vostra clau de xifratge." + }, + "addedItem": { + "message": "Element afegit" + }, + "editedItem": { + "message": "Element editat" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ desplaçat a $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Els elements seleccionats s'han desplaçat a $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Suprimeix element" + }, + "deleteFolder": { + "message": "Suprimeix carpeta" + }, + "deleteAttachment": { + "message": "Suprimeix adjunt" + }, + "deleteItemConfirmation": { + "message": "Esteu segur que voleu suprimir aquest element?" + }, + "deletedItem": { + "message": "Element enviat a la paperera" + }, + "deletedItems": { + "message": "Elements enviats a la paperera" + }, + "movedItems": { + "message": "Elements desplaçats" + }, + "overwritePasswordConfirmation": { + "message": "Esteu segur que voleu sobreescriure la contrasenya actual?" + }, + "editedFolder": { + "message": "Carpeta editada" + }, + "addedFolder": { + "message": "Carpeta afegida" + }, + "deleteFolderConfirmation": { + "message": "Esteu segur que voleu suprimir aquesta carpeta?" + }, + "deletedFolder": { + "message": "Carpeta suprimida" + }, + "loggedOut": { + "message": "Sessió tancada" + }, + "loginExpired": { + "message": "La vostra sessió ha caducat." + }, + "logOutConfirmation": { + "message": "Segur que voleu tancar la sessió?" + }, + "logOut": { + "message": "Tanca la sessió" + }, + "ok": { + "message": "D’acord" + }, + "yes": { + "message": "Sí" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "Utilitzareu la vostra adreça de correu electrònic per iniciar sessió." + }, + "yourName": { + "message": "El vostre nom" + }, + "yourNameDesc": { + "message": "Com vols que et diguen?" + }, + "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 la contrasenya mestra pot ajudar-vos a recordar-la si la oblideu." + }, + "reTypeMasterPass": { + "message": "Torneu a escriure la contrasenya mestra" + }, + "masterPassHint": { + "message": "Pista de la contrasenya mestra (opcional)" + }, + "masterPassHintLabel": { + "message": "Pista de la contrasenya mestra" + }, + "settings": { + "message": "Configuració" + }, + "passwordHint": { + "message": "Pista de 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 la 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 entrar." + }, + "masterPassSent": { + "message": "Hem enviat un correu electrònic amb la vostra contrasenya mestra." + }, + "unexpectedError": { + "message": "S'ha produït un error inesperat." + }, + "emailAddress": { + "message": "Adreça electrònica" + }, + "yourVaultIsLocked": { + "message": "La caixa forta està bloquejada. Verifiqueu la contrasenya mestra per continuar." + }, + "unlock": { + "message": "Desbloqueja" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Bloqueja ara" + }, + "noItemsInList": { + "message": "No hi ha cap element a llistar." + }, + "noCollectionsInList": { + "message": "No hi ha cap col·lecció a llistar." + }, + "noGroupsInList": { + "message": "No hi ha cap grup a llistar." + }, + "noUsersInList": { + "message": "No hi ha cap usuari a llistar." + }, + "noEventsInList": { + "message": "No hi ha cap esdeveniment a llistar." + }, + "newOrganization": { + "message": "Organització nova" + }, + "noOrganizationsList": { + "message": "No pertanyeu a cap organització. Les organitzacions permeten compartir elements amb altres usuaris de forma segura." + }, + "versionNumber": { + "message": "Versió $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 el vostre 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." + }, + "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": "Utilitzeu un navegador web compatible (com ara Chrome) o afegiu proveïdors addicionals que siguen compatibles amb tots els navegadors web (com una aplicació d'autenticació)." + }, + "twoStepOptions": { + "message": "Opcions d'inici de sessió en dues passes" + }, + "recoveryCodeDesc": { + "message": "Heu perdut l'accés a tots els vostres proveïdors de dos factors? Utilitzeu el vostre codi de recuperació per desactivar 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." + }, + "u2fDesc": { + "message": "Utilitzeu qualsevol clau de seguretat habilitada per FIDO U2F per accedir al vostre compte." + }, + "u2fTitle": { + "message": "Clau de seguretat FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Utilitzeu qualsevol clau de seguretat habilitada per WebAuthn per accedir al vostre compte." + }, + "webAuthnMigrated": { + "message": "(Migrat de FIDO)" + }, + "emailTitle": { + "message": "Correu electrònic" + }, + "emailDesc": { + "message": "Els codis de verificació els rebreu per correu electrònic." + }, + "continue": { + "message": "Continua" + }, + "organization": { + "message": "Organització" + }, + "organizations": { + "message": "Organitzacions" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Trieu una organització a la qual vulgueu desplaçar aquests elements. El trasllat a una organització transfereix la propietat dels elements a aquesta organització. Ja no sereu el propietari directe d'aquests elements una vegada s'hagen mogut." + }, + "collectionsDesc": { + "message": "Editeu les col·leccions amb les què es comparteix aquest element. Només els usuaris de l'organització que tinguen accés a aquestes col·leccions podran veure'l." + }, + "deleteSelectedItemsDesc": { + "message": "Heu seleccionat $COUNT$ elements per suprimir. Esteu segur que voleu suprimir tots aquests elements?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Trieu una carpeta a la que vulgueu desplaçar els $COUNT$ elements seleccionats.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Heu seleccionat $COUNT$ elements. $MOVEABLE_COUNT$ elements es poden desplaçar a una organització, $NONMOVEABLE_COUNT$ no.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Codi de verificació (TOTP)" + }, + "copyVerificationCode": { + "message": "Copia el codi de verificació" + }, + "warning": { + "message": "Advertiment" + }, + "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 vostra clau de xifratge. 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." + }, + "export": { + "message": "Exporta" + }, + "exportVault": { + "message": "Exporta la caixa forta" + }, + "fileFormat": { + "message": "Format de fitxer" + }, + "exportSuccess": { + "message": "S'han exportat les dades de la vostra caixa forta." + }, + "passwordGenerator": { + "message": "Generador de contrasenyes" + }, + "minComplexityScore": { + "message": "Puntuació mínima de complexitat" + }, + "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" + }, + "regeneratePassword": { + "message": "Regenera contrasenya" + }, + "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" + }, + "passwordHistory": { + "message": "Historial de les contrasenyes" + }, + "noPasswordsInList": { + "message": "No hi ha cap contrasenya a llistar." + }, + "clear": { + "message": "Esborra", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Compte actualitzat" + }, + "changeEmail": { + "message": "Canvia el correu electrònic" + }, + "changeEmailTwoFactorWarning": { + "message": "Si continueu, canviarà l'adreça de correu electrònic del vostre compte. No canviarà l'adreça de correu electrònic utilitzada per a l'autenticació de dos factors. Podeu canviar aquesta adreça de correu electrònic a la configuració d'inici de sessió en dues passes." + }, + "newEmail": { + "message": "Nou correu electrònic" + }, + "code": { + "message": "Codi" + }, + "changeEmailDesc": { + "message": "Hem enviat un codi de verificació per correu electrònic a $EMAIL$. Comproveu el codi i introduïu-lo a continuació per finalitzar el canvi d'adreça de correu electrònic.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Si es procedeix, es tancarà la vostra sessió actual i l'haureu de tornar a iniciar. Les sessions d'altres dispositius poden mantenir-se actives fins a una hora." + }, + "emailChanged": { + "message": "El correu electrònic s'ha canviat" + }, + "logBackIn": { + "message": "Torneu a iniciar sessió." + }, + "logBackInOthersToo": { + "message": "Torneu a iniciar la sessió. Si esteu utilitzant altres aplicacions Bitwarden, tanqueu-les i torneu-les a obrir també." + }, + "changeMasterPassword": { + "message": "Canvia la contrasenya mestra" + }, + "masterPasswordChanged": { + "message": "S'ha canviat la contrasenya mestra" + }, + "currentMasterPass": { + "message": "Contrasenya mestra actual" + }, + "newMasterPass": { + "message": "Contrasenya mestra nova" + }, + "confirmNewMasterPass": { + "message": "Confirma la contrasenya nova" + }, + "encKeySettings": { + "message": "Configuració de claus de xifratge" + }, + "kdfAlgorithm": { + "message": "Algorisme de KDF" + }, + "kdfIterations": { + "message": "Iteracions de KDF" + }, + "kdfIterationsDesc": { + "message": "Més quantitat d'iteracions de KDF ajuden a protegir la contrasenya mestra d'un atac per força bruta. Recomanem un valor de $VALUE$ o més.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "L'establiment de massa iteracions de KDF pot provocar un rendiment deficient en els inicis de sessió (i desbloqueig) de Bitwarden en dispositius amb CPUs lentes. Recomanem que augmenteu el valor en increments de $INCREMENT$ i, a continuació, proveu-ho en tots els vostres dispositius.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Canvia KDF" + }, + "encKeySettingsChanged": { + "message": "S'ha canviat la configuració de les claus de xifratge" + }, + "dangerZone": { + "message": "Zona perillosa" + }, + "dangerZoneDesc": { + "message": "Aneu amb compte, aquestes accions no són reversibles!" + }, + "deauthorizeSessions": { + "message": "Desautoritza sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Voleu evitar que el vostre compte s'inicie en un altre dispositiu? Seguiu aquestes passes per desautoritzar tots els ordinadors o dispositius que hàgeu utilitzat prèviament. Aquest pas de seguretat es recomana si anteriorment heu utilitzat un ordinador públic o si heu guardat la contrasenya accidentalment en un dispositiu que no és vostre. Aquest pas també esborrarà totes les sessions d'inici de sessió en dues passes recordades prèviament." + }, + "deauthorizeSessionsWarning": { + "message": "El procediment també tancarà la sessió actual, i l'heu de tornar a iniciar. També demanarà iniciar la sessió en dues passes, si està habilitada. Les sessions actives d'altres dispositius poden mantenir-se actives fins a una hora." + }, + "sessionsDeauthorized": { + "message": "Totes les sessions estan desautoritzades" + }, + "purgeVault": { + "message": "Purga la caixa forta" + }, + "purgedOrganizationVault": { + "message": "S'ha purgat la caixa forta de l'organització." + }, + "vaultAccessedByProvider": { + "message": "Caixa forta accedida pel proveïdor." + }, + "purgeVaultDesc": { + "message": "Procediu a continuació per esborrar tots els elements i carpetes de la vostra caixa forta. Els elements compartits i que pertanyen a una organització no se suprimiran." + }, + "purgeOrgVaultDesc": { + "message": "Procediu a continuació per esborrar tots els elements de la caixa forta de l'organització." + }, + "purgeVaultWarning": { + "message": "La purga de la caixa forta és permanent. No es pot desfer." + }, + "vaultPurged": { + "message": "S'ha purgat la vostra caixa forta." + }, + "deleteAccount": { + "message": "Suprimeix el compte" + }, + "deleteAccountDesc": { + "message": "Procediu a continuació per eliminar el vostre compte i totes les dades associades." + }, + "deleteAccountWarning": { + "message": "La supressió del compte és permanent. No es pot desfer." + }, + "accountDeleted": { + "message": "S'ha eliminat el compte" + }, + "accountDeletedDesc": { + "message": "El vostre compte s'ha tancat i s'han eliminat totes les dades associades." + }, + "myAccount": { + "message": "El meu compte" + }, + "tools": { + "message": "Eines" + }, + "importData": { + "message": "Importa dades" + }, + "importError": { + "message": "Error d'importació" + }, + "importErrorDesc": { + "message": "Hi ha hagut un problema amb les dades que heu intentat importar. Resoleu els errors que es mostren a continuació al fitxer font i torneu-ho a provar." + }, + "importSuccess": { + "message": "Les dades s'han importat amb èxit a la vostra caixa forta." + }, + "importWarning": { + "message": "Esteu important dades a $ORGANIZATION$. Les vostres dades es poden compartir amb membres d'aquesta organització. Voleu continuar?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Les dades no estan formatades correctament. Comproveu el fitxer d'importació i torneu-ho a provar." + }, + "importNothingError": { + "message": "No s'ha importat res." + }, + "importEncKeyError": { + "message": "Error en desxifrar el fitxer exportat. La vostra clau de xifratge no coincideix amb la clau de xifratge utilitzada per exportar les dades." + }, + "selectFormat": { + "message": "Seleccioneu el format del fitxer d'importació" + }, + "selectImportFile": { + "message": "Seleccioneu el fitxer d'importació" + }, + "orCopyPasteFileContents": { + "message": "o copieu/enganxeu el contingut dels fitxers d'importació" + }, + "instructionsFor": { + "message": "Instruccions de $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opcions" + }, + "optionsDesc": { + "message": "Personalitzeu la vostra caixa forta web." + }, + "optionsUpdated": { + "message": "Opcions actualitzades" + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Canvia l'idioma utilitzat per la caixa forta web." + }, + "disableIcons": { + "message": "Inhabilita les icones del lloc web" + }, + "disableIconsDesc": { + "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." + }, + "enableGravatars": { + "message": "Habilita Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Utilitzeu imatges d'avatar carregades de gravatar.com." + }, + "enableFullWidth": { + "message": "Habilita la disposició de l'amplada completa", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Permet que la caixa forta web s'expandisca a tot l'ample de la finestra del navegador." + }, + "default": { + "message": "Per defecte" + }, + "domainRules": { + "message": "Regles de domini" + }, + "domainRulesDesc": { + "message": "Si teniu el mateix inici de sessió en diversos dominis web diferents, podeu marcar el lloc web com a \"equivalent\". Els dominis \"globals\" són els que Bitwarden ja ha creat per a vosaltres." + }, + "globalEqDomains": { + "message": "Dominis equivalents globals" + }, + "customEqDomains": { + "message": "Dominis equivalents personalitzats" + }, + "exclude": { + "message": "Exclou" + }, + "include": { + "message": "Inclou" + }, + "customize": { + "message": "Personalitza" + }, + "newCustomDomain": { + "message": "Nou domini personalitzat" + }, + "newCustomDomainDesc": { + "message": "Introduïu una llista de dominis separats per comes. Només es permeten els dominis \"base\". No introduïu els subdominis. Per exemple, introduïu \"google.com\" en lloc de \"www.google.com\". També podeu introduir \"androidapp://package.name\" per associar una aplicació d'android amb altres dominis del lloc web." + }, + "customDomainX": { + "message": "Domini personalitzat $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Dominis actualitzats" + }, + "twoStepLogin": { + "message": "Inici de sessió en dues passes" + }, + "twoStepLoginDesc": { + "message": "Protegiu el vostre compte exigint un pas addicional en iniciar sessió." + }, + "twoStepLoginOrganizationDesc": { + "message": "Demana un inici de sessió en dues passes per als usuaris de la vostra organització mitjançant la configuració de proveïdors a nivell de l'organització." + }, + "twoStepLoginRecoveryWarning": { + "message": "Si habiliteu l'inici de sessió en dues passes, pot bloquejar-vos de manera definitiva el compte de Bitwarden. Un codi de recuperació us permet accedir al vostre compte en cas que no pugueu utilitzar el proveïdor d'inici de sessió en dues passes (p. Ex. Perdre el dispositiu). El suport de Bitwarden no podrà ajudar-vos si perdeu l'accés al vostre compte. Us recomanem que escriviu o imprimiu el codi de recuperació i el mantingueu en un lloc segur." + }, + "viewRecoveryCode": { + "message": "Mostra el codi de recuperació" + }, + "providers": { + "message": "Proveïdors", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Habilita" + }, + "enabled": { + "message": "Habilitat" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Subscripció Premium" + }, + "premiumRequired": { + "message": "Premium requerit" + }, + "premiumRequiredDesc": { + "message": "Cal una subscripció premium per utilitzar aquesta característica." + }, + "youHavePremiumAccess": { + "message": "Teniu accés premium" + }, + "alreadyPremiumFromOrg": { + "message": "Ja teniu accés a les funcions premium degut a que sou membre d'una organització." + }, + "manage": { + "message": "Administra" + }, + "disable": { + "message": "Inhabilita" + }, + "twoStepLoginProviderEnabled": { + "message": "Aquest proveïdor d'inici de sessió en dues passes està habilitat al vostre compte." + }, + "twoStepLoginAuthDesc": { + "message": "Introduïu la vostra contrasenya mestra per modificar la configuració d'inici de sessió en dues passes." + }, + "twoStepAuthenticatorDesc": { + "message": "Seguiu aquestes passes per configurar l'inici de sessió en dues passes amb una aplicació autenticadora:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Baixeu una aplicació autenticadora en dues passes" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Necessiteu una aplicació d'autenticació en dues passes? Baixeu-ne una de les següents" + }, + "iosDevices": { + "message": "Dispositius iOS" + }, + "androidDevices": { + "message": "Dispositius Android" + }, + "windowsDevices": { + "message": "Dispositius Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Es recomanen aquestes aplicacions, però, altres aplicacions autenticadores també funcionaran." + }, + "twoStepAuthenticatorScanCode": { + "message": "Escanegeu aquest codi QR amb l'aplicació autenticadora" + }, + "key": { + "message": "Clau" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Introduïu el codi de verificació de 6 dígits generat a l'aplicació" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "En cas que hàgeu d'afegir-lo a un altre dispositiu, a continuació teniu el codi QR (o clau) requerit per l'aplicació autenticadora." + }, + "twoStepDisableDesc": { + "message": "Esteu segur que voleu inhabilitar aquest proveïdor d'inici de sessió en dues passes?" + }, + "twoStepDisabled": { + "message": "El proveïdor d'inici de sessió en dues passes està inhabilitat." + }, + "twoFactorYubikeyAdd": { + "message": "Afegiu una nova YubiKey al vostre compte" + }, + "twoFactorYubikeyPlugIn": { + "message": "Connecteu la YubiKey al port USB de l'ordinador." + }, + "twoFactorYubikeySelectKey": { + "message": "Seleccioneu a continuació el primer camp d'entrada buit de YubiKey." + }, + "twoFactorYubikeyTouchButton": { + "message": "Toqueu el botó de la YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Guardeu el formulari." + }, + "twoFactorYubikeyWarning": { + "message": "A causa de les limitacions de la plataforma, les YubiKeys no es poden utilitzar en totes les aplicacions de Bitwarden. Heu d'habilitar un altre proveïdor d'inici de sessió en dues passes per accedir al compte quan no es puguen utilitzar les YubiKeys. Plataformes compatibles:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Caixa forta web, aplicació d'escriptori, CLI i totes les extensions de navegador en un dispositiu amb un port USB que puga acceptar la vostra YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Aplicacions mòbils en un dispositiu amb NFC o un port USB que puga acceptar la vostra YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Clau U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Clau WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Suport NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Una de les meues claus és compatible amb NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Si una de les vostres YubiKeys és compatible amb NFC (com ara una NEO YubiKey), se us demanarà als dispositius mòbils quan es detecte la disponibilitat de NFC." + }, + "yubikeysUpdated": { + "message": "S'han actualitzat les YubiKeys" + }, + "disableAllKeys": { + "message": "Inhabilita totes les claus" + }, + "twoFactorDuoDesc": { + "message": "Introduïu la informació de l'aplicació Bitwarden des del vostre tauler d'Administrador de Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Clau d'integració" + }, + "twoFactorDuoSecretKey": { + "message": "Clau Secreta" + }, + "twoFactorDuoApiHostname": { + "message": "Nom de l'amfitrió d'API" + }, + "twoFactorEmailDesc": { + "message": "Seguiu aquestes passes per configurar l'inici de sessió en dues passes amb el correu electrònic:" + }, + "twoFactorEmailEnterEmail": { + "message": "Introduïu el correu electrònic amb el que voleu rebre els codis de verificació" + }, + "twoFactorEmailEnterCode": { + "message": "Introduïu el codi de verificació resultant de 6 dígits del correu electrònic" + }, + "sendEmail": { + "message": "Envia un correu electrònic" + }, + "twoFactorU2fAdd": { + "message": "Afegeix una clau de seguretat FIDO U2F al vostre compte" + }, + "removeU2fConfirmation": { + "message": "Segur que voleu suprimir aquesta clau de seguretat?" + }, + "twoFactorWebAuthnAdd": { + "message": "Afegiu una clau de seguretat de WebAuthn al vostre compte" + }, + "readKey": { + "message": "Llegeix la clau" + }, + "keyCompromised": { + "message": "La clau està compromesa." + }, + "twoFactorU2fGiveName": { + "message": "Doneu un nom amigable a la clau de seguretat per identificar-la." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Connecteu la clau de seguretat al port USB de l'ordinador i feu clic al botó \"Llegeix la clau\"." + }, + "twoFactorU2fTouchButton": { + "message": "Si la clau de seguretat té un botó, toqueu-lo." + }, + "twoFactorU2fSaveForm": { + "message": "Guardeu el formulari." + }, + "twoFactorU2fWarning": { + "message": "A causa de les limitacions de la plataforma, FIDO U2F no es pot utilitzar en totes les aplicacions de Bitwarden. Heu d'habilitar un altre proveïdor d'inici de sessió en dues passes perquè pugueu accedir al vostre compte quan FIDO U2F no es puga utilitzar. Plataformes compatibles:" + }, + "twoFactorU2fSupportWeb": { + "message": "Caixa forta web i extensions de navegador en un escriptori/portàtil amb un navegador compatible amb U2F (Chrome, Opera, Vivaldi, o Firefox amb FIDO U2F activat)." + }, + "twoFactorU2fWaiting": { + "message": "S'està esperant que toqueu el botó de la vostra clau de seguretat" + }, + "twoFactorU2fClickSave": { + "message": "Feu clic al botó \"Guarda\" que apareix a continuació per habilitar aquesta clau de seguretat per iniciar sessió en dues passes." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Hi ha hagut un problema en llegir la clau de seguretat. Torneu-ho a provar." + }, + "twoFactorWebAuthnWarning": { + "message": "A causa de les limitacions de la plataforma, WebAuthn no es pot utilitzar en totes les aplicacions Bitwarden. Heu d’habilitar un altre proveïdor d’inici de sessió en dues passas perquè pugueu accedir al vostre compte quan no es puga utilitzar WebAuthn. Plataformes compatibles:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Caixa forta web i extensions de navegador en un escriptori/portàtil amb un navegador compatible amb WebAuthn (Chrome, Opera, Vivaldi, o Firefox amb FIDO U2F activat)." + }, + "twoFactorRecoveryYourCode": { + "message": "El codi de recuperació d'inici de sessió en dues passes de Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Encara no heu habilitat cap proveïdor d'inici de sessió en dues passes. Després d'activar-lo, podeu consultar ací el codi de recuperació." + }, + "printCode": { + "message": "Imprimeix el codi", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Informes" + }, + "reportsDesc": { + "message": "Identifiqueu i tanqueu els forats de seguretat dels comptes en línia fent clic en els informes següents." + }, + "unsecuredWebsitesReport": { + "message": "Informe de llocs web no segurs" + }, + "unsecuredWebsitesReportDesc": { + "message": "L'ús de llocs web no segurs amb l'esquema http:// pot ser perillós. Si el lloc web ho permet, sempre haureu d'accedir-hi mitjançant l'esquema https:// perquè la vostra connexió estiga xifrada." + }, + "unsecuredWebsitesFound": { + "message": "S'han trobat llocs web no segurs" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Hem trobat $COUNT$ elements a la vostra caixa forta amb URI no segures. Heu de canviar el seu esquema URI a https:// si el lloc web ho permet.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Cap element de la vostra caixa forta té URI no segures." + }, + "inactive2faReport": { + "message": "Informe 2FA inactiu" + }, + "inactive2faReportDesc": { + "message": "L'autenticació de dos factors (2FA) és una configuració de seguretat important que ajuda a assegurar els vostres comptes. Si el lloc web ho ofereix, sempre haureu d'activar l'autenticació de dos factors." + }, + "inactive2faFound": { + "message": "S'han trobat registres sense 2FA" + }, + "inactive2faFoundDesc": { + "message": "Hem trobat $COUNT$ llocs web a la vostra caixa forta que no es poden configurar amb l'autenticació de dos factors (d'acord amb twofactorauth.org). Per protegir encara més aquests comptes, haureu d'habilitar l'autenticació de dos factors.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No s'han trobat llocs web a la vostra caixa forta sense configuració d'autenticació de dos factors." + }, + "instructions": { + "message": "Instruccions" + }, + "exposedPasswordsReport": { + "message": "Informe de contrasenyes exposades" + }, + "exposedPasswordsReportDesc": { + "message": "Les contrasenyes exposades són claus que s'han descobert en filtracions de dades conegudes que es van fer públiques o que es van vendre a la web fosca per part d'hackers." + }, + "exposedPasswordsFound": { + "message": "S'han trobat contrasenyes exposades" + }, + "exposedPasswordsFoundDesc": { + "message": "Hem trobat $COUNT$ elements a la vostra caixa forta que tenen contrasenyes que van ser exposades a filtracions de dades conegudes. Heu de canviar-les amb una contrasenya nova.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Cap element de la vostra caixa forta conté contrasenyes que s'hagen exposat a filtracions de dades conegudes." + }, + "checkExposedPasswords": { + "message": "Comprova les contrasenyes exposades" + }, + "exposedXTimes": { + "message": "S'han exposat $COUNT$ vegades", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Informe de contrasenyes poc segures" + }, + "weakPasswordsReportDesc": { + "message": "Les contrasenyes poc segures poden ser descobertes fàcilment per pirates informàtics amb eines automatitzades que s'utilitzen per trencar contrasenyes. El generador de contrasenyes Bitwarden us pot ajudar a crear contrasenyes fortes." + }, + "weakPasswordsFound": { + "message": "S'han trobat contrasenyes poc segures" + }, + "weakPasswordsFoundDesc": { + "message": "Hem trobat $COUNT$ elements a la vostra caixa forta amb contrasenyes que no són fortes. Heu d'actualitzar-les i utilitzar contrasenyes més fortes.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Cap element de la vostra caixa forta té contrasenyes poc segures." + }, + "reusedPasswordsReport": { + "message": "Informe de contrasenyes reutilitzades" + }, + "reusedPasswordsReportDesc": { + "message": "Si un servei que utilitzeu està compromès, la reutilització de la mateixa contrasenya en altres llocs pot permetre als hackers accedir fàcilment a més comptes en línia vostres. Heu d'utilitzar una contrasenya exclusiva per a cada compte o servei." + }, + "reusedPasswordsFound": { + "message": "S'han trobat contrasenyes reutilitzades" + }, + "reusedPasswordsFoundDesc": { + "message": "Hem trobat $COUNT$ contrasenyes que s'estan reutilitzant a la vostra caixa forta. Heu de canviar-les a un valor únic.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Cap inici de sessió a la vostra caixa forta té contrasenyes que s'estiguen reutilitzant." + }, + "reusedXTimes": { + "message": "S'ha reutilitzat $COUNT$ vegades", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Filtració de dades" + }, + "breachDesc": { + "message": "Els comptes filtrats poden exposar la vostra informació personal. Assegureu els comptes filtrats activant la autenticació de dos factors (2FA) o creant contrasenyes més fortes." + }, + "breachCheckUsernameEmail": { + "message": "Comproveu qualsevol nom d'usuari o adreça electrònica que utilitzeu." + }, + "checkBreaches": { + "message": "Comprova filtracions" + }, + "breachUsernameNotFound": { + "message": "No s'ha trobat $USERNAME$ en cap filtració de dades coneguda.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Bones notícies", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "S'ha trobat $USERNAME$ en $COUNT$ diferents filtracions de dades en línia.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "S'han trobat comptes compromesos" + }, + "compromisedData": { + "message": "Dades compromeses" + }, + "website": { + "message": "Lloc web" + }, + "affectedUsers": { + "message": "Usuaris afectats" + }, + "breachOccurred": { + "message": "La filtració es va produir el" + }, + "breachReported": { + "message": "Es va informar de la filtració el" + }, + "reportError": { + "message": "S'ha produït un error en intentar carregar l'informe. Torneu-ho a provar" + }, + "billing": { + "message": "Facturació" + }, + "accountCredit": { + "message": "Compte de crèdit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo del compte", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Afegeix crèdit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Quantitat", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "El crèdit afegit apareixerà al vostre compte després que el pagament haja estat totalment processat. Alguns mètodes de pagament es retardarden i poden trigar més en processar-se que altres." + }, + "makeSureEnoughCredit": { + "message": "Assegureu-vos que el compte tinga suficient crèdit disponible per a aquesta compra. Si no té suficient crèdit, el mètode de pagament predeterminat en el fitxer s'utilitzarà per la diferència. Podeu afegir crèdit al vostre compte des de la pàgina de facturació." + }, + "creditAppliedDesc": { + "message": "El crèdit del vostre compte es pot utilitzar per fer compres. Qualsevol crèdit disponible s'aplicarà automàticament a les factures generades." + }, + "goPremium": { + "message": "Fes-te Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Heu actualitzat a la versió premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Actualitzeu el vostre compte a una subscripció premium i desbloquegeu algunes característiques addicionals excel·lents." + }, + "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." + }, + "premiumSignUpEmergency": { + "message": "Accés d’emergència" + }, + "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!" + }, + "premiumPrice": { + "message": "Tot per només $PRICE$ /any!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Complements" + }, + "premiumAccess": { + "message": "Accés premium" + }, + "premiumAccessDesc": { + "message": "Podeu afegir accés premium a tots els membres de la vostra organització per $PRICE$/$INTERVAL$.\n \n", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Emmagatzematge suplementari (GB)" + }, + "additionalStorageGbDesc": { + "message": "# de GB addicionals" + }, + "additionalStorageIntervalDesc": { + "message": "El vostre pla inclou $SIZE$ d'emmagatzematge encriptat de fitxers. Podeu afegir un emmagatzematge addicional per a $PRICE$ per GB/$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Resum" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "any" + }, + "month": { + "message": "mes" + }, + "monthAbbr": { + "message": "mes.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "El mètode de pagament es cobrarà de manera immediata i després de forma recurrent cada any. Podeu cancel·lar-ho en qualsevol moment." + }, + "paymentCharged": { + "message": "El mètode de pagament es cobrarà immediatament i després de forma recurrent, cada $INTERVAL$. Podeu cancel·lar-ho en qualsevol moment.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "El vostre pla inclou una prova gratuïta de 7 dies. El mètode de pagament no es cobrarà fins que no s'haja acabat la prova. Podeu cancel·lar-ho en qualsevol moment." + }, + "paymentInformation": { + "message": "Informació de pagament" + }, + "billingInformation": { + "message": "Informació de facturació" + }, + "creditCard": { + "message": "Targeta de crèdit" + }, + "paypalClickSubmit": { + "message": "Feu clic al botó de PayPal per iniciar sessió al vostre compte i, a continuació, feu clic al botó Envia per continuar." + }, + "cancelSubscription": { + "message": "Cancel·la la subscripció" + }, + "subscriptionCanceled": { + "message": "S'ha cancel·lat la subscripció." + }, + "pendingCancellation": { + "message": "Pendent de cancel·lació" + }, + "subscriptionPendingCanceled": { + "message": "La subscripció s'ha marcat per cancel·lació al final del període de facturació actual." + }, + "reinstateSubscription": { + "message": "Reinicia la subscripció" + }, + "reinstateConfirmation": { + "message": "Esteu segur que voleu eliminar la sol·licitud de cancel·lació pendent i restablir la vostra subscripció?" + }, + "reinstated": { + "message": "S'ha restablert la subscripció." + }, + "cancelConfirmation": { + "message": "Esteu segur que voleu cancel·lar? Perdreu l'accés a totes les característiques d'aquesta subscripció al final d'aquest cicle de facturació." + }, + "canceledSubscription": { + "message": "S'ha cancel·lat la subscripció." + }, + "neverExpires": { + "message": "No caduca mai" + }, + "status": { + "message": "Estat" + }, + "nextCharge": { + "message": "Càrrec següent" + }, + "details": { + "message": "Detall" + }, + "downloadLicense": { + "message": "Baixa la llicència" + }, + "updateLicense": { + "message": "Actualitza la llicència" + }, + "updatedLicense": { + "message": "Llicència actualitzada" + }, + "manageSubscription": { + "message": "Administra la subscripció" + }, + "storage": { + "message": "Emmagatzematge" + }, + "addStorage": { + "message": "Afegeix emmagatzematge" + }, + "removeStorage": { + "message": "Suprimeix emmagatzematge" + }, + "subscriptionStorage": { + "message": "La vostra subscripció té un total de $MAX_STORAGE$ GB d'emmagatzematge xifrat de fitxers. Esteu utilitzant $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Mètode de pagament" + }, + "noPaymentMethod": { + "message": "No hi ha cap mètode de pagament en el fitxer." + }, + "addPaymentMethod": { + "message": "Afegir Mètode de Pagament" + }, + "changePaymentMethod": { + "message": "Canvia la forma de pagament" + }, + "invoices": { + "message": "Factures" + }, + "noInvoices": { + "message": "Cap factura." + }, + "paid": { + "message": "Pagat", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Pendent de pagament", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transaccions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Cap transacció." + }, + "chargeNoun": { + "message": "Càrrecs", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Reemborsament", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Qualsevol càrrec apareixerà a la vostra declaració com a $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB d'emmagatzematge a afegir" + }, + "gbStorageRemove": { + "message": "GB d'emmagatzematge a suprimir" + }, + "storageAddNote": { + "message": "L'addició d'emmagatzematge generarà ajustos al total de facturació i carregarà immediatament el vostre mètode de pagament al fitxer. El primer càrrec serà prorratejat per a la resta del cicle de facturació actual." + }, + "storageRemoveNote": { + "message": "Si elimineu l'emmagatzematge, es generaran ajustos al total de facturació que es prorratejaran com a crèdits per al vostre càrrec de facturació següent." + }, + "adjustedStorage": { + "message": "S'han ajustat $AMOUNT$ GB d'emmagatzematge.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contacteu amb atenció al client" + }, + "updatedPaymentMethod": { + "message": "Mètode de pagament actualitzat." + }, + "purchasePremium": { + "message": "Compra Premium" + }, + "licenseFile": { + "message": "Fitxer de llicència" + }, + "licenseFileDesc": { + "message": "El vostre fitxer de llicència s'anomenarà $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Per actualitzar el vostre compte a una subscripció premium, cal carregar un fitxer de llicència vàlid." + }, + "uploadLicenseFileOrg": { + "message": "Per crear una organització en allotjament propi cal carregar un fitxer de llicència vàlid." + }, + "accountEmailMustBeVerified": { + "message": "L'adreça de correu electrònic del vostre compte s'ha de verificar." + }, + "newOrganizationDesc": { + "message": "Les organitzacions us permeten compartir parts de la vostra caixa forta amb altres persones i gestionar usuaris relacionats amb una entitat específica, com ara una família, un equip menut o una empresa gran." + }, + "generalInformation": { + "message": "Informació general" + }, + "organizationName": { + "message": "Nom de l'organització" + }, + "accountOwnedBusiness": { + "message": "Aquest compte és propietat d'una empresa." + }, + "billingEmail": { + "message": "Correu electrònic de facturació" + }, + "businessName": { + "message": "Nom comercial" + }, + "chooseYourPlan": { + "message": "Trieu el vostre pla" + }, + "users": { + "message": "Usuaris" + }, + "userSeats": { + "message": "Reserves d'usuari" + }, + "additionalUserSeats": { + "message": "Reserves d'usuari addicionals" + }, + "userSeatsDesc": { + "message": "# de reserves d'usuari" + }, + "userSeatsAdditionalDesc": { + "message": "El vostre pla inclou reserves d'usuari de $BASE_SEATS$. Podeu afegir usuaris addicionals per $SEAT_PRICE$ per usuari/mes.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Quantes reserves d'usuari necessiteu? També podeu afegir reserves addicionals més endavant, si és necessari." + }, + "planNameFree": { + "message": "Gratuït", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Per a usuaris de prova o personals, permet compartir amb $COUNT$ altres usuaris.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Famílies" + }, + "planDescFamilies": { + "message": "Per a ús personal, per compartir amb familiars i amics." + }, + "planNameTeams": { + "message": "Equips" + }, + "planDescTeams": { + "message": "Per a empreses i altres equips organitzats." + }, + "planNameEnterprise": { + "message": "Empresa" + }, + "planDescEnterprise": { + "message": "Per a empreses i altres grans organitzacions." + }, + "freeForever": { + "message": "Gratuït per sempre" + }, + "includesXUsers": { + "message": "inclou $COUNT$ usuaris", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Usuaris addicionals" + }, + "costPerUser": { + "message": "$COST$ per usuari", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limitat a $COUNT$ usuaris (vosaltres inclosos)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limitat a $COUNT$ col·leccions", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Afegiu i compartiu fins a $COUNT$ usuaris", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Afegiu i compartiu amb usuaris il·limitats" + }, + "createUnlimitedCollections": { + "message": "Crea col·leccions il·limitades" + }, + "gbEncryptedFileStorage": { + "message": "Emmagatzematge de fitxers xifrat de $SIZE$", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Allotjament propi (opcional)" + }, + "usersGetPremium": { + "message": "Els usuaris aconsegueixen accés a característiques de membres premium" + }, + "controlAccessWithGroups": { + "message": "Controla l'accés dels usuaris amb grups" + }, + "syncUsersFromDirectory": { + "message": "Sincronitza els usuaris i grups d'un directori" + }, + "trackAuditLogs": { + "message": "Fes el seguiment de les accions de l'usuari amb registres d'auditoria" + }, + "enforce2faDuo": { + "message": "Reforça 2FA amb Duo" + }, + "priorityCustomerSupport": { + "message": "Atenció al client prioritària" + }, + "xDayFreeTrial": { + "message": "Prova gratuïta de $COUNT$ dies, cancel·leu-la en qualsevol moment", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Mensual" + }, + "annually": { + "message": "Annual" + }, + "basePrice": { + "message": "Preu base" + }, + "organizationCreated": { + "message": "S'ha creat l'organització" + }, + "organizationReadyToGo": { + "message": "La vostra organització nova està preparada per començar!" + }, + "organizationUpgraded": { + "message": "S'ha actualitzat la vostra organització." + }, + "leave": { + "message": "Abandona" + }, + "leaveOrganizationConfirmation": { + "message": "Esteu segur que voleu abandonar aquesta organització?" + }, + "leftOrganization": { + "message": "Heu deixat l'organització." + }, + "defaultCollection": { + "message": "Col·lecció per defecte" + }, + "getHelp": { + "message": "Obteniu ajuda" + }, + "getApps": { + "message": "Aconseguiu aplicacions" + }, + "loggedInAs": { + "message": "Has iniciat sessió com" + }, + "eventLogs": { + "message": "Registre d'esdeveniments" + }, + "people": { + "message": "Persones" + }, + "policies": { + "message": "Polítiques" + }, + "singleSignOn": { + "message": "Inici de sessió únic" + }, + "editPolicy": { + "message": "Edita la política" + }, + "groups": { + "message": "Grups" + }, + "newGroup": { + "message": "Grup nou" + }, + "addGroup": { + "message": "Afegeix un grup" + }, + "editGroup": { + "message": "Edita el grup" + }, + "deleteGroupConfirmation": { + "message": "Esteu segur que voleu suprimir aquest grup?" + }, + "removeUserConfirmation": { + "message": "Esteu segur que voleu suprimir aquest usuari?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Advertència! Aquest usuari requereix un connector clau per gestionar el seu xifrat. La supressió d'aquest usuari des de la vostra organització desactivarà permanentment el seu compte. Aquesta acció no es pot desfer. Voleu continuar?" + }, + "externalId": { + "message": "Id extern" + }, + "externalIdDesc": { + "message": "L'identificador extern es pot utilitzar com a referència o enllaçar aquest recurs a un sistema extern, com ara un directori d'usuari." + }, + "accessControl": { + "message": "Control d'accés" + }, + "groupAccessAllItems": { + "message": "Aquest grup pot accedir i modificar tots els elements." + }, + "groupAccessSelectedCollections": { + "message": "Aquest grup només pot accedir a les col·leccions seleccionades." + }, + "readOnly": { + "message": "Només de lectura" + }, + "newCollection": { + "message": "Col·lecció nova" + }, + "addCollection": { + "message": "Afegeix col·lecció" + }, + "editCollection": { + "message": "Edita col·lecció" + }, + "deleteCollectionConfirmation": { + "message": "Esteu segur que voleu suprimir aquesta col·lecció?" + }, + "editUser": { + "message": "Edita usuari" + }, + "inviteUser": { + "message": "Convida usuari" + }, + "inviteUserDesc": { + "message": "Convida un nou usuari a la vostra organització introduint l'adreça electrònica del compte de Bitwarden a continuació. Si encara no tenen un compte de Bitwarden, se us demanarà que creeu un compte nou." + }, + "inviteMultipleEmailDesc": { + "message": "Podeu convidar fins a $COUNT$ usuaris alhora separant per comes les adreces de correu electrònic.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Aquest usuari fa servir l'inici de sessió en dues passes per protegir el seu compte." + }, + "userAccessAllItems": { + "message": "Aquest usuari pot accedir i modificar tots els elements." + }, + "userAccessSelectedCollections": { + "message": "Aquest usuari només pot accedir a les col·leccions seleccionades." + }, + "search": { + "message": "Cerca" + }, + "invited": { + "message": "Convidat" + }, + "accepted": { + "message": "Acceptat" + }, + "confirmed": { + "message": "Confirmat" + }, + "clientOwnerEmail": { + "message": "Correu electrònic del propietari del client" + }, + "owner": { + "message": "Propietari" + }, + "ownerDesc": { + "message": "L'usuari d'accés més elevat que pot gestionar tots els aspectes de la vostra organització." + }, + "clientOwnerDesc": { + "message": "Aquest usuari ha de ser independent del proveïdor. Si el proveïdor està desvinculat de l'organització, aquest usuari mantindrà la propietat de l'organització." + }, + "admin": { + "message": "Administrador" + }, + "adminDesc": { + "message": "Els administradors poden accedir i gestionar tots els elements, col·leccions i usuaris de la vostra organització." + }, + "user": { + "message": "Usuari" + }, + "userDesc": { + "message": "Un usuari habitual amb accés a les col·leccions assignades a la vostra organització." + }, + "manager": { + "message": "Gestor" + }, + "managerDesc": { + "message": "Els gestors poden accedir i gestionar les col·leccions assignades a la vostra organització." + }, + "all": { + "message": "Tot" + }, + "refresh": { + "message": "Actualitza" + }, + "timestamp": { + "message": "Data i hora" + }, + "event": { + "message": "Esdeveniment" + }, + "unknown": { + "message": "Desconegut" + }, + "loadMore": { + "message": "Carrega'n més" + }, + "mobile": { + "message": "Mòbil", + "description": "Mobile app" + }, + "extension": { + "message": "Extensió", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Escriptori", + "description": "Desktop app" + }, + "webVault": { + "message": "Caixa forta web" + }, + "loggedIn": { + "message": "Heu iniciat sessió." + }, + "changedPassword": { + "message": "S'ha canviat la contrasenya del compte." + }, + "enabledUpdated2fa": { + "message": "Inici de sessió en dues passes habilitat/actualitzat." + }, + "disabled2fa": { + "message": "S'ha inhabilitat l'inici de sessió en dues passes." + }, + "recovered2fa": { + "message": "S'ha recuperat el compte des de l'inici de sessió en dues passes." + }, + "failedLogin": { + "message": "S'ha produït un error d'inici de sessió amb una contrasenya incorrecta." + }, + "failedLogin2fa": { + "message": "S'ha produït un error amb un inici de sessió en dues passes incorrecte." + }, + "exportedVault": { + "message": "Caixa forta exportada." + }, + "exportedOrganizationVault": { + "message": "Caixa forta de l’organització exportada." + }, + "editedOrgSettings": { + "message": "S'ha editat la configuració de l'organització." + }, + "createdItemId": { + "message": "S'ha creat l'element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "S'ha editat l'element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Element $ID$ enviat a la paperera.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Desplaça l'element $ID$ a una organització.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "$ID$ de l'element vist.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Contrasenya visualitzada de l'article $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Camp ocult vist de l’element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Codi de seguretat vist de l’element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "S'ha copiat la contrasenya de l'element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "S'ha copiat el camp ocult de l’element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "S'ha copiat el codi de seguretat de l’element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Element $ID$ emplenat automàticament.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "S'ha creat la col·lecció $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "S'ha editat la col·lecció $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "S'ha suprimit la col·lecció $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Política $ID$ editada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "S'ha creat el grup $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "S'ha editat el grup $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "S'ha suprimit el grup $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "S'ha suprimit l'usuari $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "S'ha creat el fitxer adjunt per l'element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "S'ha suprimit el fitxer adjunt per l'element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "S'han editat les col·leccions per a l'element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "S'ha convidat a l'usuari $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "S'ha confirmat l'usuari $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "S'ha editat l'usuari $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "S'han editat grups de l'usuari $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO sense enllaçar per a l'usuari $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organització $ID$ creada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organització $ID$ afegida.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organització $ID$ suprimida.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "S'ha accedit a la caixa forta de l'organització $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Dispositiu" + }, + "view": { + "message": "Mostra" + }, + "invalidDateRange": { + "message": "Període de data no vàlid." + }, + "errorOccurred": { + "message": "S'ha produït un error." + }, + "userAccess": { + "message": "Accés d'usuari" + }, + "userType": { + "message": "Tipus d'usuari" + }, + "groupAccess": { + "message": "Accés de grup" + }, + "groupAccessUserDesc": { + "message": "Editeu els grups als quals pertany aquest usuari." + }, + "invitedUsers": { + "message": "Usuaris convidats." + }, + "resendInvitation": { + "message": "Tornar a enviar invitació" + }, + "resendEmail": { + "message": "Torna a enviar l'email" + }, + "hasBeenReinvited": { + "message": "S'ha reconvidat a $USER$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirma" + }, + "confirmUser": { + "message": "Confirma usuari" + }, + "hasBeenConfirmed": { + "message": "S'ha confirmat a $USER$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirma usuaris" + }, + "usersNeedConfirmed": { + "message": "Teniu usuaris que han acceptat la seua invitació, però encara cal confirmar-la. Els usuaris no tindran accés a l'organització fins que estiguen confirmats." + }, + "startDate": { + "message": "Data d'inici" + }, + "endDate": { + "message": "Data de finalització" + }, + "verifyEmail": { + "message": "Comproveu el correu electrònic" + }, + "verifyEmailDesc": { + "message": "Verifiqueu l'adreça de correu electrònic del vostre compte per desbloquejar l'accés a totes les característiques." + }, + "verifyEmailFirst": { + "message": "S'ha de verificar primer l'adreça electrònica del vostre compte." + }, + "checkInboxForVerification": { + "message": "Consulteu la safata d'entrada del correu electrònic per obtenir un enllaç de verificació." + }, + "emailVerified": { + "message": "S'ha verificat el vostre correu electrònic." + }, + "emailVerifiedFailed": { + "message": "No es pot verificar el vostre correu electrònic. Proveu d'enviar un nou correu electrònic de verificació." + }, + "emailVerificationRequired": { + "message": "Es requereix verificació per correu electrònic" + }, + "emailVerificationRequiredDesc": { + "message": "Heu de verificar el vostre correu electrònic per utilitzar aquesta característica." + }, + "updateBrowser": { + "message": "Actualitza el navegador" + }, + "updateBrowserDesc": { + "message": "Esteu utilitzant un navegador web no compatible. La caixa forta web pot no funcionar correctament." + }, + "joinOrganization": { + "message": "Uneix-te a l'organització" + }, + "joinOrganizationDesc": { + "message": "Heu estat convidat a unir-vos a l'organització llistada més amunt. Per acceptar la invitació, heu d'iniciar sessió o crear un compte nou a Bitwarden." + }, + "inviteAccepted": { + "message": "Invitació acceptada" + }, + "inviteAcceptedDesc": { + "message": "Podeu accedir a aquesta organització una vegada que un administrador confirme la vostra pertinença. Rebreu un correu electrònic quan això passe." + }, + "inviteAcceptFailed": { + "message": "No es pot acceptar la invitació. Demaneu a l'administrador d'una organització que envie una invitació nova." + }, + "inviteAcceptFailedShort": { + "message": "No es pot acceptar la invitació. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Recorda el correu electronic" + }, + "recoverAccountTwoStepDesc": { + "message": "Si no podeu accedir al vostre compte a través dels vostres mètodes d'inici de sessió de dues passes, podeu utilitzar el codi de recuperació de l'inici de sessió en dues passes per desactivar tots els proveïdors del vostre compte." + }, + "recoverAccountTwoStep": { + "message": "Recupera l'inici de sessió en dues passes del compte" + }, + "twoStepRecoverDisabled": { + "message": "S'ha inhabilitat l'inici de sessió en dues passes al vostre compte." + }, + "learnMore": { + "message": "Més informació" + }, + "deleteRecoverDesc": { + "message": "Introduïu la vostra adreça de correu electrònic a continuació per recuperar i eliminar el vostre compte." + }, + "deleteRecoverEmailSent": { + "message": "Si el vostre compte existeix, rebreu un correu electrònic amb més instruccions." + }, + "deleteRecoverConfirmDesc": { + "message": "Heu sol·licitat suprimir el compte de Bitwarden. Feu clic al botó seguüent per confirmar-ho." + }, + "myOrganization": { + "message": "La meua organització" + }, + "deleteOrganization": { + "message": "Suprimeix l'organització" + }, + "deletingOrganizationContentWarning": { + "message": "Introduïu la contrasenya mestra per confirmar la supressió de $ORGANIZATION$ i totes les dades associades. Les dades de la caixa forta a $ORGANIZATION$ inclouen:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Els comptes d'usuari romandran actius després de la supressió, però ja no estaran associats a aquesta organització." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "La supressió de $ORGANIZATION$ és permanent i irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "S'ha suprimit l'organització" + }, + "organizationDeletedDesc": { + "message": "S'ha suprimit l'organització i totes les dades associades." + }, + "organizationUpdated": { + "message": "S'ha actualitzat l'organització" + }, + "taxInformation": { + "message": "Informació fiscal" + }, + "taxInformationDesc": { + "message": "Poseu-vos en contacte amb el servei d'assistència per proporcionar-vos (o actualitzar) la informació fiscal de les vostres factures." + }, + "billingPlan": { + "message": "Pla", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Canvi de pla", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Actualitzeu el compte a un altre pla proporcionant la informació següent. Assegureu-vos que heu afegit un mètode de pagament actiu al compte.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Factura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Visualitza factura" + }, + "downloadInvoice": { + "message": "Baixa factura" + }, + "verifyBankAccount": { + "message": "Comproveu compte" + }, + "verifyBankAccountDesc": { + "message": "Hem realitzat dos dipòsits en el vostre compte bancari (pot tardar entre 1-2 dies laborables). Introduïu aquests imports per verificar el compte bancari." + }, + "verifyBankAccountInitialDesc": { + "message": "El pagament amb un compte bancari només està disponible per als clients dels Estats Units. Se us demanarà que verifiqueu el vostre compte bancari. Realitzarem dos micro-dipòsits en els pròxims 1-2 dies laborables. Introduïu aquests imports a la pàgina de facturació de l'organització per verificar el compte bancari." + }, + "verifyBankAccountFailureWarning": { + "message": "Si no es verifica el compte bancari, es produirà un pagament perdut i la vostra subscripció s'inhabilitarà." + }, + "verifiedBankAccount": { + "message": "S'ha verificat el compte bancari." + }, + "bankAccount": { + "message": "Compte bancari" + }, + "amountX": { + "message": "L'import $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Número d'encaminament", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Número de compte" + }, + "accountHolderName": { + "message": "Titular del compte" + }, + "bankAccountType": { + "message": "Tipus de compte" + }, + "bankAccountTypeCompany": { + "message": "Empresa (negocis)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Introduïu la vostra id d'instal·lació" + }, + "limitSubscriptionDesc": { + "message": "Estableix un límit de places per a la teua subscripció. Un vegada s'arribe a aquest límit, no podreu convidar usuaris nous." + }, + "maxSeatLimit": { + "message": "Límit màxim de places (opcional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Cost potencial màxim per plaça" + }, + "addSeats": { + "message": "Afegeix reserves", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Suprimeix llocs", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Els ajustos a la vostra subscripció donaran lloc a canvis prorratejats als vostres totals de facturació. Si els nous usuaris convidats superen les vostres places de subscripció, rebreu immediatament un càrrec prorratejat pels usuaris addicionals." + }, + "subscriptionUserSeats": { + "message": "La vostra subscripció permet un total de $COUNT$ usuaris.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limita la subscripció (opcional)" + }, + "subscriptionSeats": { + "message": "Places de subscripció" + }, + "subscriptionUpdated": { + "message": "S'ha actualitzat la subscripció" + }, + "additionalOptions": { + "message": "Opcions addicionals" + }, + "additionalOptionsDesc": { + "message": "Per obtenir ajuda addicional per gestionar la vostra subscripció, poseu-vos en contacte amb el servei d'atenció al client." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Els ajustos a la vostra subscripció donaran lloc a canvis prorratejats als vostres totals de facturació. Si els nous usuaris convidats superen les vostres places de subscripció, rebreu immediatament un càrrec prorratejat pels usuaris addicionals." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Els ajustaments a la vostra subscripció es traduiran en canvis prorratejats en els vostres totals de facturació. Si els usuaris recentment convidats excedeixen les vostres places de subscripció, rebreu immediatament un càrrec previst dels usuaris addicionals fins que s'aconseguisca arribar al vostre límit de places ($MAX$).", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "No podeu convidar més de $COUNT$ usuaris sense actualitzar el vostre pla.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "No podeu convidar més de $COUNT$ usuaris sense actualitzar el vostre pla. Poseu-vos en contacte amb el servei d'assistència al client per actualitzar.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "La vostra subscripció permet un nombre total de $COUNT$ usuaris. El vostre pla està patrocinat i facturat per una organització externa.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Els ajustos a la vostra subscripció donaran lloc a canvis prorratejats als vostres totals de facturació. No podeu convidar més de $COUNT$ usuaris sense augmentar les vostres places de subscripció.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Reserves a afegir" + }, + "seatsToRemove": { + "message": "Reserves a suprimir" + }, + "seatsAddNote": { + "message": "Si afegiu reserves d'usuari, es generaran ajustos al total de facturació i carregarem el mètode de pagament immediatament al fitxer. El primer càrrec serà prorratejat per a la resta del cicle de facturació actual." + }, + "seatsRemoveNote": { + "message": "Si suprimiut reserves d'usuari, es generaran ajustos al total de facturació que es prorratejaran com a crèdits per al vostre càrrec de facturació següent." + }, + "adjustedSeats": { + "message": "Ajustades $AMOUNT$ reserves d'usuari.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Clau actualitzada" + }, + "updateKeyTitle": { + "message": "Actualitza clau" + }, + "updateEncryptionKey": { + "message": "Actualitzeu la clau de xifratge" + }, + "updateEncryptionKeyShortDesc": { + "message": "Esteu fent servir un esquema de xifrage antiquat." + }, + "updateEncryptionKeyDesc": { + "message": "Hem canviat a claus de xifratge més grans que proporcionen una millor seguretat i accés a característiques més noves. L'actualització de la vostra clau de xifratge és ràpida i senzilla. Només cal que introduïu la vostra contrasenya mestra a continuació. Aquesta actualització es convertirà en obligatòria en qualsevol moment." + }, + "updateEncryptionKeyWarning": { + "message": "Després d'actualitzar la vostra clau de xifratge, heu de tancar la sessió i tornar a entrar a totes les aplicacions de Bitwarden que esteu utilitzant actualment (com ara l'aplicació mòbil o les extensions del navegador). Si no es tanca i torna a iniciar la sessió (la qual descarrega la vostra nova clau de xifratge) pot provocar corrupció en les dades. Intentarem registrar-vos automàticament, però, es pot retardar." + }, + "updateEncryptionKeyExportWarning": { + "message": "Totes les exportacions xifrades que hàgeu desat també seran no vàlides." + }, + "subscription": { + "message": "Subscripció" + }, + "loading": { + "message": "S'està carregant" + }, + "upgrade": { + "message": "Actualitza" + }, + "upgradeOrganization": { + "message": "Actualitza l'organització" + }, + "upgradeOrganizationDesc": { + "message": "Aquesta característica no està disponible per a organitzacions gratuïtes. Canvieu a un pla de pagament per desbloquejar més característiques." + }, + "createOrganizationStep1": { + "message": "Crea l'organització: Pas 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Abans de crear l'organització, primer heu de crear un compte personal gratuït." + }, + "refunded": { + "message": "Reemborsat" + }, + "nothingSelected": { + "message": "No heu seleccionat res." + }, + "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." + }, + "termsOfService": { + "message": "Condicions del servei" + }, + "privacyPolicy": { + "message": "Política de privacitat" + }, + "filters": { + "message": "Filtres" + }, + "vaultTimeout": { + "message": "Temps d'espera de la caixa forta" + }, + "vaultTimeoutDesc": { + "message": "Trieu quan es tancarà la vostra caixa forta i feu l'acció seleccionada." + }, + "oneMinute": { + "message": "1 minut" + }, + "fiveMinutes": { + "message": "5 Minuts" + }, + "fifteenMinutes": { + "message": "15 minuts" + }, + "thirtyMinutes": { + "message": "30 minuts" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 hores" + }, + "onRefresh": { + "message": "En actualitzar el navegador" + }, + "dateUpdated": { + "message": "Actualitzat", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Contrasenya actualitzada", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "L'organització està inhabilitada." + }, + "licenseIsExpired": { + "message": "Llicència caducada." + }, + "updatedUsers": { + "message": "Actualitza usuaris" + }, + "selected": { + "message": "Seleccionat" + }, + "ownership": { + "message": "Propietat" + }, + "whoOwnsThisItem": { + "message": "Qui és propietari d'aquest element?" + }, + "strong": { + "message": "Forta", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Bona", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Poc segura", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Molt poc segura", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Rota també la clau de xifratge del meu compte" + }, + "rotateEncKeyTitle": { + "message": "Rota la clau de xifratge" + }, + "rotateEncKeyConfirmation": { + "message": "Esteu segur que voleu rotar la clau de xifratge del vostre compte?" + }, + "attachmentsNeedFix": { + "message": "Aquest element té fitxers adjunts antics que s'han de corregir." + }, + "attachmentFixDesc": { + "message": "Es tracta d'un arxiu adjunt antic que cal corregir. Feu clic per obtenir més informació." + }, + "fix": { + "message": "Corregeix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Hi ha arxius adjunts antics a la vostra caixa forta que s'han de corregir abans de poder rotar la clau de xifratge del vostre compte." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Per assegurar la integritat de les vostres claus de xifratge, comproveu la frase de l'empremta digital de l'usuari abans de continuar.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "No sol·liciteu tornar a comprovar la frase de les empremtes dactilars (No recomanat)", + "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." + }, + "free": { + "message": "Gratuït", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Clau de l'API" + }, + "apiKeyDesc": { + "message": "La vostra clau API es pot utilitzar per autenticar-se a l'API pública de Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "La rotació de la clau de l'API invalidarà la clau anterior. Podeu rotar la clau d'API si creu que la clau actual ja no és segura d'utilitzar." + }, + "apiKeyWarning": { + "message": "La clau de l'API té accés total a l'organització. S'ha de mantenir en secret." + }, + "userApiKeyDesc": { + "message": "La vostra clau API es pot utilitzar per autenticar-se al CLI de Bitwarden." + }, + "userApiKeyWarning": { + "message": "La vostra clau API és un mecanisme d'autenticació alternatiu. S’ha de mantenir en secret." + }, + "oauth2ClientCredentials": { + "message": "Credencials de client OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Mostra clau de l'API" + }, + "rotateApiKey": { + "message": "Rota la clau de l'API" + }, + "selectOneCollection": { + "message": "Heu d'escollir com a mínim una col·lecció." + }, + "couldNotChargeCardPayInvoice": { + "message": "No hem pogut carregar la vostra targeta. Consulteu i pagueu la factura pendent que es mostra a continuació." + }, + "inAppPurchase": { + "message": "Compra integrada a l'aplicació" + }, + "cannotPerformInAppPurchase": { + "message": "No podeu realitzar aquesta acció mentre feu servir un mètode de pagament de compra a l’aplicació." + }, + "manageSubscriptionFromStore": { + "message": "Heu de gestionar la vostra subscripció des de la botiga on s’ha realitzat la compra a l’aplicació." + }, + "minLength": { + "message": "Longitud mínima" + }, + "clone": { + "message": "Clona" + }, + "masterPassPolicyDesc": { + "message": "Estableix els requisits mínims per al nivell de seguretat de la contrasenya principal." + }, + "twoStepLoginPolicyDesc": { + "message": "Requereix que els usuaris configuren l’inici de sessió en dues passes als seus comptes personals." + }, + "twoStepLoginPolicyWarning": { + "message": "Els membres de l’organització que no tinguen activat l’inici de sessió en dues passes per al seu compte personal s'eliminaran de l’organització i rebran un correu electrònic que els notificarà sobre el canvi." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Eres membre d’una organització que necessita l’inici de sessió en dues passes per estar habilitat al vostre compte d’usuari. Si desactiveu tots els proveïdors d’inici de sessió en dues passes, sereu eliminats automàticament d’aquestes organitzacions." + }, + "passwordGeneratorPolicyDesc": { + "message": "Estableix els requisits mínims per a la configuració del generador de contrasenyes." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una o més polítiques d’organització afecten la configuració del generador." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Número mínim de paraules" + }, + "defaultType": { + "message": "Tipus per defecte" + }, + "userPreference": { + "message": "Preferència d'usuari" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Cerca a la paperera" + }, + "permanentlyDelete": { + "message": "Suprimeix definitivament" + }, + "permanentlyDeleteSelected": { + "message": "Suprimeix definitivament la selecció" + }, + "permanentlyDeleteItem": { + "message": "Suprimeix definitivament l'element" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Esteu segur que voleu suprimir aquest element definitivament?" + }, + "permanentlyDeletedItem": { + "message": "Element suprimit definitivament" + }, + "permanentlyDeletedItems": { + "message": "Elements suprimits definitivament" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Heu seleccionat $COUNT$ elements per suprimir definitivament. Esteu segur que voleu suprimir definitivament tots aquests elements?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Element $ID$ suprimit definitivament.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restaura" + }, + "restoreSelected": { + "message": "Restaura selecció" + }, + "restoreItem": { + "message": "Restaura l'element" + }, + "restoredItem": { + "message": "Element restaurat" + }, + "restoredItems": { + "message": "Elements restaurats" + }, + "restoreItemConfirmation": { + "message": "Esteu segur que voleu restaurar aquest element?" + }, + "restoreItems": { + "message": "Restaura elements" + }, + "restoreSelectedItemsDesc": { + "message": "Heu seleccionat $COUNT$ elements per restaurar. Esteu segur que voleu restaurar tots aquests elements?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Element $ID$ restaurat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Amaga contrasenyes" + }, + "countryPostalCodeRequiredDesc": { + "message": "Necessitem aquesta informació només per calcular l’impost de vendes i els informes financers." + }, + "includeVAT": { + "message": "Incloure informació sobre l'IVA i GST (opcional)" + }, + "taxIdNumber": { + "message": "ID de l'impost IVA/GST" + }, + "taxInfoUpdated": { + "message": "Informació fiscal actualitzada." + }, + "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." + }, + "identifier": { + "message": "Identificador" + }, + "organizationIdentifier": { + "message": "Identificador d’organització" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Inicieu la sessió ràpidament mitjançant el portal d'inici de sessió únic de la vostra organització. Introduïu l'identificador de la vostra organització per començar." + }, + "enterpriseSingleSignOn": { + "message": "Inici de sessió únic d'empresa" + }, + "ssoHandOff": { + "message": "Ara podeu tancar aquesta pestanya i continuar a l'extensió." + }, + "includeAllTeamsFeatures": { + "message": "Característiques de tots els equips, a més de:" + }, + "includeSsoAuthentication": { + "message": "Autenticació SSO mitjançant SAML2.0 i OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Polítiques empresarials" + }, + "ssoValidationFailed": { + "message": "La validació SSO ha fallat" + }, + "ssoIdentifierRequired": { + "message": "Cal identificador d’organització." + }, + "unlinkSso": { + "message": "Desenllaça SSO" + }, + "unlinkSsoConfirmation": { + "message": "Esteu segur que voleu desenllaçar SSO per a aquesta organització?" + }, + "linkSso": { + "message": "Enllaça SSO" + }, + "singleOrg": { + "message": "Organització única" + }, + "singleOrgDesc": { + "message": "Restringeix els usuaris perquè no puguen unir-se a qualsevol altra organització." + }, + "singleOrgBlockCreateMessage": { + "message": "La vostra organització actual té una política que no us permet unir-vos a més d'una organització. Poseu-vos en contacte amb els administradors de la vostra organització o registreu-vos des d’un altre compte de Bitwarden." + }, + "singleOrgPolicyWarning": { + "message": "Els membres que no siguen propietaris ni administradors i que ja siguen membres d'una altra organització se suprimiran de la vostra organització." + }, + "requireSso": { + "message": "Autenticació d'inici de sessió únic" + }, + "requireSsoPolicyDesc": { + "message": "Sol·liciteu als usuaris que inicien la sessió amb el mètode d’inici de sessió únic de l’empresa." + }, + "prerequisite": { + "message": "Requisit previ" + }, + "requireSsoPolicyReq": { + "message": "La política empresarial d'una organització única s'ha d'activar abans d'activar aquesta política." + }, + "requireSsoPolicyReqError": { + "message": "La política d'una única organització no està habilitada." + }, + "requireSsoExemption": { + "message": "Els propietaris i administradors d’organitzacions estan exempts de fer complir aquesta política." + }, + "sendTypeFile": { + "message": "Fitxer" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Crea un nou Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Suprimeix el Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "deletionDate": { + "message": "Data de supressió" + }, + "deletionDateDesc": { + "message": "L'enviament 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 venciment" + }, + "expirationDateDesc": { + "message": "Si s'estableix, l'accés a aquest enviament 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'accés" + }, + "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’accés actual" + }, + "sendPasswordDesc": { + "message": "Opcionalment, necessiteu una contrasenya perquè els usuaris accedisquen a aquest enviament.", + "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 enviament.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Inhabilitat" + }, + "sendLink": { + "message": "Enllaç Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copia l'enllaç Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Suprimeix la contrasenya" + }, + "removedPassword": { + "message": "Contrasenya suprimida" + }, + "removePasswordConfirmation": { + "message": "Esteu segur que voleu suprimir la contrasenya?" + }, + "hideEmail": { + "message": "Amagueu la meua adreça de correu electrònic als destinataris." + }, + "disableThisSend": { + "message": "Desactiveu aquest enviament 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." + }, + "allSends": { + "message": "Tots els Send" + }, + "maxAccessCountReached": { + "message": "S'ha assolit el recompte màxim d'accesos", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pendent de supressió" + }, + "expired": { + "message": "Caducat" + }, + "searchSends": { + "message": "Cerca Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Aquest Send està protegit amb una contrasenya. Escriviu la contrasenya següent per continuar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "No sabeu la contrasenya? Demaneu al remitent la contrasenya necessària per accedir a aquest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Aquest Send està ocult per defecte. Podeu canviar la seua visibilitat mitjançant el botó següent.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Baixa el fitxer" + }, + "sendAccessUnavailable": { + "message": "L'enviament al qual intenteu accedir no existeix o ja no està disponible.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "No s'ha pogut trobar el fitxer associat a aquest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "No hi ha cap Send a llistar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Accés d’emergència" + }, + "emergencyAccessDesc": { + "message": "Concediu i gestioneu l'accés d'emergència per a contactes de confiança. Els contactes de confiança poden sol·licitar accés per Visualitzar o Prendre possessió del vostre compte en cas d’emergència. Visiteu la nostra pàgina d’ajuda per obtenir més informació i detalls sobre com funciona l’intercanvi de coneixement zero." + }, + "emergencyAccessOwnerWarning": { + "message": "Sou propietari d'una o més organitzacions. Si doneu accés a la presa de possessió a un contacte d’emergència, podrà utilitzar tots els vostres permisos com a propietari després." + }, + "trustedEmergencyContacts": { + "message": "Contactes d’emergència de confiança" + }, + "noTrustedContacts": { + "message": "Encara no heu afegit cap contacte d’emergència, convideu un contacte de confiança per començar." + }, + "addEmergencyContact": { + "message": "Afig un contacte d’emergència" + }, + "designatedEmergencyContacts": { + "message": "Designat com a contacte d’emergència" + }, + "noGrantedAccess": { + "message": "Encara no heu sigut designats com a contacte d'emergència per a ningú." + }, + "inviteEmergencyContact": { + "message": "Convida un contacte d’emergència" + }, + "editEmergencyContact": { + "message": "Edita un contacte d’emergència" + }, + "inviteEmergencyContactDesc": { + "message": "Per convidar un contacte d’emergència nou, introduïu l'adreça de correu electrònic del seu compte Bitwarden a continuació. Si encara no tenen compte, se'ls demanarà que en creen un." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Accés d’emergència iniciat" + }, + "emergencyAccessRecoveryApproved": { + "message": "Accés d’emergència aprovat" + }, + "viewDesc": { + "message": "Pot veure tots els elements de la vostra caixa forta." + }, + "takeover": { + "message": "Prendre el control" + }, + "takeoverDesc": { + "message": "Pot restablir el vostre compte amb una nova contrasenya mestra." + }, + "waitTime": { + "message": "Temps d'espera" + }, + "waitTimeDesc": { + "message": "Temps necessari abans de concedir l'accés automàticament." + }, + "oneDay": { + "message": "1 dia" + }, + "days": { + "message": "$DAYS$ dies", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Usuari convidat." + }, + "acceptEmergencyAccess": { + "message": "Se us ha convidat a convertir-vos en un contacte d'emergència per a l'usuari indicat anteriorment. Per acceptar la invitació, heu d’iniciar sessió o crear un compte Bitwarden nou." + }, + "emergencyInviteAcceptFailed": { + "message": "No es pot acceptar la invitació. Demaneu a l'usuari que envie una invitació nova." + }, + "emergencyInviteAcceptFailedShort": { + "message": "No es pot acceptar la invitació. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Podeu accedir a les opcions d’emergència d’aquest usuari després de confirmar la vostra identitat. Us enviarem un correu electrònic quan passe això." + }, + "requestAccess": { + "message": "Sol·liciteu accés" + }, + "requestAccessConfirmation": { + "message": "Esteu segur que voleu sol·licitar accés d'emergència? Se us proporcionarà accés després de $WAITTIME$ dies o sempre que l'usuari aprove la sol·licitud manualment.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "S'ha sol·licitat accés d'emergència per a $USER$. Us notificarem per correu electrònic quan siga possible continuar.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Aprova" + }, + "reject": { + "message": "Rebutja" + }, + "approveAccessConfirmation": { + "message": "Esteu segur que voleu aprovar l'accés d'emergència? Això permetrà a $USER$ a $ACTION$ el vostre compte.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Accés d’emergència aprovat." + }, + "emergencyRejected": { + "message": "Accés d’emergència rebutjat" + }, + "passwordResetFor": { + "message": "Restabliment de la contrasenya per a $USER$. Ara podeu iniciar la sessió amb la nova contrasenya.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Propietat personal" + }, + "personalOwnershipPolicyDesc": { + "message": "Sol·liciteu als usuaris que guarden elements de caixa forta a una organització suprimint l’opció de propietat personal." + }, + "personalOwnershipExemption": { + "message": "Els propietaris i administradors d’organitzacions estan exempts de fer complir aquesta política." + }, + "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." + }, + "disableSend": { + "message": "Desactiva Send" + }, + "disableSendPolicyDesc": { + "message": "No permeteu als usuaris crear o editar un Send Bitwarden. Es permet suprimir un Send existent.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Els usuaris de l’organització que poden gestionar les polítiques d'aquesta, estan exempts de la seua aplicació." + }, + "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." + }, + "sendOptions": { + "message": "Opcions de Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Establiu opcions per crear i editar Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Els usuaris de l’organització que poden gestionar les polítiques d'aquesta, estan exempts de la seua aplicació." + }, + "disableHideEmail": { + "message": "No permeteu que els usuaris amaguen la seua adreça de correu electrònic dels destinataris en crear o editar un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Actualment estan en vigor les polítiques organitzatives següents:" + }, + "sendDisableHideEmailInEffect": { + "message": "No es permet als usuaris amagar la seua adreça de correu electrònic dels destinataris en crear o editar un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Política modificada $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Preu del pla" + }, + "estimatedTax": { + "message": "Impost estimat" + }, + "custom": { + "message": "Personalitzat" + }, + "customDesc": { + "message": "Permet un control més granular dels permisos d'usuari per a configuracions avançades." + }, + "permissions": { + "message": "Permisos" + }, + "accessEventLogs": { + "message": "Registres d'esdeveniments dels accessos" + }, + "accessImportExport": { + "message": "Importació/exportació dels accessos" + }, + "accessReports": { + "message": "Informes d’accés" + }, + "missingPermissions": { + "message": "No teniu permisos per realitzar aquesta acció." + }, + "manageAllCollections": { + "message": "Administra totes les col·leccions" + }, + "createNewCollections": { + "message": "Crea noves col·leccions" + }, + "editAnyCollection": { + "message": "Edita alguna col·lecció" + }, + "deleteAnyCollection": { + "message": "Suprimeix alguna la col·lecció" + }, + "manageAssignedCollections": { + "message": "Administra les col·leccions assignades" + }, + "editAssignedCollections": { + "message": "Edita col·leccions asignades" + }, + "deleteAssignedCollections": { + "message": "Suprimeix col·leccions asignades" + }, + "manageGroups": { + "message": "Administra els Grups" + }, + "managePolicies": { + "message": "Administra les Polítiques" + }, + "manageSso": { + "message": "Administra SSO" + }, + "manageUsers": { + "message": "Administra usuaris" + }, + "manageResetPassword": { + "message": "Gestiona el restabliment de la contrasenya" + }, + "disableRequiredError": { + "message": "Heu de desactivar manualment la política $POLICYNAME$ abans que aquesta política es puga desactivar.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Una política d’organització afecta les vostres opcions de propietat." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Una política d'organització ha desactivat la importació d'elements a la vostra caixa forta personal." + }, + "personalOwnershipCheckboxDesc": { + "message": "Desactiva la propietat personal per als usuaris de l'organització" + }, + "textHiddenByDefault": { + "message": "Quan accediu a Enviar, amaga el text per defecte", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Un nom apropiat per descriure aquest 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." + }, + "copySendLinkOnSave": { + "message": "Copie l'enllaç per compartir aquest Send al meu porta-retalls després de guardar-lo." + }, + "sendLinkLabel": { + "message": "Enllaç Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmet informació confidencial i temporal a altres persones de forma fàcil i segura.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Més informació sobre", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Comparteix text o fitxers directament amb qualsevol persona." + }, + "sendVaultCardLearnMore": { + "message": "Més informació", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "veure", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "com funciona", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "prova-ho ara", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "registra't", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "per provar-ho hui.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "L'usuari bitwarden $USER_IDENTIFIER$ ha compartit el següent amb vosaltres", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "L'usuari Bitwarden que ha creat aquest Send ha decidit amagar la seua adreça de correu electrònic. Heu d’assegurar-vos que confieu en la font d’aquest enllaç abans d’utilitzar o descarregar el seu contingut.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "La data de caducitat proporcionada no és vàlida." + }, + "deletionDateIsInvalid": { + "message": "La data de supressió proporcionada no és vàlida." + }, + "expirationDateAndTimeRequired": { + "message": "Requereix una data i hora de caducitat." + }, + "deletionDateAndTimeRequired": { + "message": "Requereix una data i hora de supressió." + }, + "dateParsingError": { + "message": "S'ha produït un error en guardar les dates de supressió i caducitat." + }, + "webAuthnFallbackMsg": { + "message": "Per verificar el vostre 2FA, feu clic al botó següent." + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn no és compatible amb aquest navegador." + }, + "webAuthnSuccess": { + "message": "WebAuthn s'ha verificat correctament! Podeu tancar aquesta pestanya." + }, + "hintEqualsPassword": { + "message": "El vostre suggeriment de contrasenya no pot ser el mateix que la vostra contrasenya." + }, + "enrollPasswordReset": { + "message": "Inscriviu-vos al restabliment de contrasenya" + }, + "enrolledPasswordReset": { + "message": "Inscrit al restabliment de contrasenya" + }, + "withdrawPasswordReset": { + "message": "Retireu-vos del restabliment de contrasenya" + }, + "enrollPasswordResetSuccess": { + "message": "Inscrit correctament!" + }, + "withdrawPasswordResetSuccess": { + "message": "Retirat correctament!" + }, + "eventEnrollPasswordReset": { + "message": "L'usuari $ID$ està inscrit a l'assistència per restablir la contrasenya.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "L'usuari $ID$ s'ha retirat de l'assistència per restablir la contrasenya.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Restabliment de la contrasenya mestra per a l'usuari $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Restableix l'enllaç SSO per a l'usuari $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ connectat a SSO per primera vegada", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Restableix la contrasenya" + }, + "resetPasswordLoggedOutWarning": { + "message": "En continuar, es tancarà $NAME$ de la sessió actual, cosa que requereix que torneu a iniciar la sessió. Les sessions actives en altres dispositius poden continuar estant actives fins a una hora.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "aquest usuari" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Una o més polítiques d’organització requereixen que la vostra contrasenya principal complisca els requisits següents:" + }, + "resetPasswordSuccess": { + "message": "S'ha restablert la contrasenya correctament!" + }, + "resetPasswordEnrollmentWarning": { + "message": "La inscripció permetrà als administradors de l’organització canviar la vostra contrasenya mestra. Esteu segur que voleu inscriure-vos?" + }, + "resetPasswordPolicy": { + "message": "Restabliment de la contrasenya mestra" + }, + "resetPasswordPolicyDescription": { + "message": "Permetre als administradors de l'organització restablir la contrasenya mestra dels seus usuaris." + }, + "resetPasswordPolicyWarning": { + "message": "Els usuaris de l’organització hauran de registrar-se o ser registrats abans que els administradors puguen restablir la seua contrasenya mestra." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscripció automàtica" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Una vegada s'accepte la invitació, tots els usuaris s'inscriuran automàticament al restabliment de la contrasenya." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Els usuaris que ja formen part de l’organització no s’inscriuran retroactivament al restabliment de la contrasenya. Hauran de registrar-se abans que els administradors puguen restablir la seua contrasenya mestra." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Inscriviu automàticament usuaris nous" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "La resposta de les claus d’organització és nul·la" + }, + "resetPasswordDetailsError": { + "message": "La resposta Restableix detalls de contrasenya és nul·la" + }, + "trashCleanupWarning": { + "message": "Els elements que porten més de 30 dies a la paperera se suprimiran automàticament." + }, + "trashCleanupWarningSelfHosted": { + "message": "Els elements que porten un temps a la paperera se suprimiran automàticament." + }, + "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." + }, + "reinviteSelected": { + "message": "Tornar a enviar invitacions" + }, + "noSelectedUsersApplicable": { + "message": "Aquesta acció no és aplicable a cap dels usuaris seleccionats." + }, + "removeUsersWarning": { + "message": "Esteu segur que voleu eliminar els usuaris següents? El procés pot tardar uns segons a completar-se i no es pot interrompre ni cancel·lar." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Trieu el tema per a la caixa forta." + }, + "themeSystem": { + "message": "Utilitza tema del sistema" + }, + "themeDark": { + "message": "Fosc" + }, + "themeLight": { + "message": "Clar" + }, + "confirmSelected": { + "message": "Confirma la selecció" + }, + "bulkConfirmStatus": { + "message": "Estat de l'acció en bloc" + }, + "bulkConfirmMessage": { + "message": "Confirmat correctament." + }, + "bulkReinviteMessage": { + "message": "Reconvidat correctament." + }, + "bulkRemovedMessage": { + "message": "Suprimit correctament" + }, + "bulkFilteredMessage": { + "message": "Exclòs, no aplicable per a aquesta acció." + }, + "fingerprint": { + "message": "Empremta digital" + }, + "removeUsers": { + "message": "Suprimeix usuaris" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "L'administració d'usuaris també ha d'estar habilitada amb el permís de l'administració de restabliment de contrasenyes" + }, + "setupProvider": { + "message": "Configuració del proveïdor" + }, + "setupProviderLoginDesc": { + "message": "T'han convidat a configurar un proveïdor nou. Per continuar, heu d'iniciar sessió o crear un nou compte de Bitwarden." + }, + "setupProviderDesc": { + "message": "Introduïu els detalls a continuació per completar la configuració del proveïdor. Poseu-vos en contacte amb el servei d'atenció al client si teniu cap pregunta." + }, + "providerName": { + "message": "Nom del proveïdor" + }, + "providerSetup": { + "message": "S'ha configurat el proveïdor." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Administrador del proveïdor" + }, + "providerAdminDesc": { + "message": "L'usuari amb el màxim accés que pot gestionar tots els aspectes del vostre proveïdor, així com accedir i gestionar organitzacions de clients." + }, + "serviceUser": { + "message": "Usuari del servei" + }, + "serviceUserDesc": { + "message": "Els usuaris del servei poden accedir i gestionar totes les organitzacions client." + }, + "providerInviteUserDesc": { + "message": "Convida un nou usuari a la vostra organització introduint l'adreça electrònica del compte de Bitwarden a continuació. Si encara no tenen un compte de Bitwarden, se us demanarà que creeu un compte nou." + }, + "joinProvider": { + "message": "Uniu-vos al proveïdor" + }, + "joinProviderDesc": { + "message": "Heu estat convidat a unir-vos al proveïdor llistat més amunt. Per acceptar la invitació, heu d'iniciar sessió o crear un compte nou a Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "No es pot acceptar la invitació. Demaneu a l'administrador d'una organització que envie una invitació nova." + }, + "providerInviteAcceptedDesc": { + "message": "Podeu accedir a aquesta organització una vegada que un administrador confirme la vostra pertinença. Rebreu un correu electrònic quan això passe." + }, + "providerUsersNeedConfirmed": { + "message": "Teniu usuaris que han acceptat la seua invitació, però encara cal confirmar-la. Els usuaris no tindran accés al proveïdor fins que estiguen confirmats." + }, + "provider": { + "message": "Proveïdor" + }, + "newClientOrganization": { + "message": "Nova organització de clients" + }, + "newClientOrganizationDesc": { + "message": "Creeu una nova organització client que s'associarà amb vosaltres com a proveïdor. Podreu accedir i gestionar aquesta organització." + }, + "addExistingOrganization": { + "message": "Afig organització existent" + }, + "myProvider": { + "message": "El meu proveïdor" + }, + "addOrganizationConfirmation": { + "message": "Esteu segur que voleu afegir $ORGANIZATION$ com a client a $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "L'organització s'ha afegit correctament al proveïdor" + }, + "accessingUsingProvider": { + "message": "Accedeix a l'organització mitjançant el proveïdor $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "S'ha inhabilitat el proveïdor." + }, + "providerUpdated": { + "message": "S'ha actualitzat el proveïdor" + }, + "yourProviderIs": { + "message": "El vostre proveïdor és $PROVIDER$. Tenen privilegis administratius i de facturació en la vostra organització.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "L'organització $ORGANIZATION$ ha estat separada del vostre proveïdor.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Esteu segur que voleu separar aquesta organització? L'organització continuarà existint, però ja no serà gestionada pel proveïdor." + }, + "add": { + "message": "Afig" + }, + "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." + }, + "masterPasswordInvalidWarning": { + "message": "La vostra contrasenya mestra no compleix els requisits de la política d'aquesta organització. Per unir-te a l'organització, has d'actualitzar la teua contrasenya mestra ara. Si continueu, es tancarà la sessió de la vostra sessió actual i us demanarà que torneu a iniciar sessió. Les sessions actives en altres dispositius poden continuar romanent actives fins a una hora." + }, + "maximumVaultTimeout": { + "message": "Temps d'espera de la caixa forta" + }, + "maximumVaultTimeoutDesc": { + "message": "Configureu un temps d'espera màxima a la caixa forta per a tots els usuaris." + }, + "maximumVaultTimeoutLabel": { + "message": "Temps d'espera màxima a la caixa forta" + }, + "invalidMaximumVaultTimeout": { + "message": "Temps d'espera màxima a la caixa forta no vàlid." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Temps d'espera a la caixa forta personalitzat" + }, + "vaultTimeoutToLarge": { + "message": "El temps d'espera de la caixa forta supera les restriccions establertes per la vostra organització." + }, + "disablePersonalVaultExport": { + "message": "Inhabilita l'exportació de la caixa forta personal" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibeix als usuaris exportar les dades de la seua caixa forta privada." + }, + "vaultExportDisabled": { + "message": "L'exportació de la caixa forta està inhabilitada" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una o més polítiques d'organització us impedeixen exportar la vostra caixa forta." + }, + "selectType": { + "message": "Selecciona el tipus d'SSO" + }, + "type": { + "message": "Tipus" + }, + "openIdConnectConfig": { + "message": "Configuració OpenID Connect" + }, + "samlSpConfig": { + "message": "Configuració del proveïdor de serveis SAML" + }, + "samlIdpConfig": { + "message": "Configuració del proveïdor d'identitats SAML" + }, + "callbackPath": { + "message": "Camí de retorn de trucada" + }, + "signedOutCallbackPath": { + "message": "Ruta de devolució de trucada tancada" + }, + "authority": { + "message": "Autoritat" + }, + "clientId": { + "message": "ID de Client" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Adreça de metadades" + }, + "oidcRedirectBehavior": { + "message": "Comportament de redirecció OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Obteniu reclamacions del punt final d'informació d'usuari" + }, + "additionalScopes": { + "message": "Àmbits personalitzats" + }, + "additionalUserIdClaimTypes": { + "message": "Tipus de reclamació d'ID d'usuaris personalitzats" + }, + "additionalEmailClaimTypes": { + "message": "Tipus de reclamació de correu electrònic" + }, + "additionalNameClaimTypes": { + "message": "Tipus de reclamació de noms personalitzats" + }, + "acrValues": { + "message": "Valors de referència de classe de context d'autenticació sol·licitats" + }, + "expectedReturnAcrValue": { + "message": "Valor esperat de la reclamació \"acr\" en resposta" + }, + "spEntityId": { + "message": "ID de l'entitat SP" + }, + "spMetadataUrl": { + "message": "URL de metadades SAML 2.0" + }, + "spAcsUrl": { + "message": "URL del Servei de Consum d'Assercions (ACS)" + }, + "spNameIdFormat": { + "message": "Format de l'ID del nom" + }, + "spOutboundSigningAlgorithm": { + "message": "Algoritme de signatura d'eixida" + }, + "spSigningBehavior": { + "message": "Comportament de signatura" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Algoritme de signatura entrant mínim" + }, + "spWantAssertionsSigned": { + "message": "Espereu les afirmacions signades" + }, + "spValidateCertificates": { + "message": "Valida certificats" + }, + "idpEntityId": { + "message": "Identificador de l'entitat" + }, + "idpBindingType": { + "message": "Tipus de vinculació" + }, + "idpSingleSignOnServiceUrl": { + "message": "URL del servei d'inici de sessió únic" + }, + "idpSingleLogoutServiceUrl": { + "message": "URL del servei de tancament de sessió únic" + }, + "idpX509PublicCert": { + "message": "Certificat públic X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Algoritme de signatura d'eixida" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Permet la resposta d'autenticació no sol·licitada" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Permet sol·licituds de tancament de sessió" + }, + "idpSignAuthenticationRequests": { + "message": "Signa sol·licituds d'autenticació" + }, + "ssoSettingsSaved": { + "message": "S'ha guardat la configuració de l'inici de sessió únic." + }, + "sponsoredFamilies": { + "message": "Famílies Bitwarden gratuït" + }, + "sponsoredFamiliesEligible": { + "message": "Tu i la teua família sou elegibles per a famílies Bitwarden gratuït. Bescanvia amb el correu electrònic personal per mantenir les dades segures fins i tot quan no esteu a la feina." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Bescanvia el teu pla gratuït de Bitwarden per a famílies hui mateix per mantenir les teues dades segures fins i tot quan no estigues a la feina." + }, + "sponsoredFamiliesInclude": { + "message": "El pla Bitwarden per a Families inclou" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Accés premium fins a 6 usuaris" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Col·leccions compartides de Secrets familiars" + }, + "badToken": { + "message": "L'enllaç ja no és vàlid. Fes que el patrocinador torne a enviar l'oferta." + }, + "reclaimedFreePlan": { + "message": "Pla gratuït recuperat" + }, + "redeem": { + "message": "Bescanvia" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Seleccioneu l'organització que voleu patrocinar" + }, + "familiesSponsoringOrgSelect": { + "message": "Quina oferta de Famílies gratuïtes t'agradaria bescanviar?" + }, + "sponsoredFamiliesEmail": { + "message": "Introduïu el vostre correu electrònic personal per bescanviar Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Si deixeu l'organització patrocinadora o us elimineu, el vostre pla Families caducarà al final del període de facturació." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accepteu l'oferta d'una organització existent o creeu una nova organització de Famílies." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Us han oferit una organització gratuïta del pla de famílies de Bitwarden. Per continuar, heu d'iniciar sessió al compte que ha rebut l'oferta." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "No es pot acceptar l'oferta. Torneu a enviar el correu electrònic de l'oferta des del vostre compte d'empresa i torneu-ho a provar." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "No es pot acceptar l'oferta. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accepta Famílies Bitwarden gratuït" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "L'oferta gratuïta de Bitwarden Famílies s'ha bescanviat correctament" + }, + "redeemed": { + "message": "Bescanviat" + }, + "redeemedAccount": { + "message": "Compte bescanviat" + }, + "revokeAccount": { + "message": "Revoca el compte $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Torna a enviar el correu electrònic de patrocini al patrocinador $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Pla Famílies Gratuït" + }, + "redeemNow": { + "message": "Bescanvia ara" + }, + "recipient": { + "message": "Destinatari" + }, + "removeSponsorship": { + "message": "Suprimeix el patrocini" + }, + "removeSponsorshipConfirmation": { + "message": "Després de suprimir un patrocini, seràs responsable d'aquesta subscripció i de les factures relacionades. Esteu segur que voleu continuar?" + }, + "sponsorshipCreated": { + "message": "S'ha creat un patrocini" + }, + "revoke": { + "message": "Revoca" + }, + "emailSent": { + "message": "Correu electrònic enviat" + }, + "revokeSponsorshipConfirmation": { + "message": "Després de suprimir aquest compte, el propietari de l'organització Families serà responsable d'aquesta subscripció i de les factures relacionades. Esteu segur que voleu continuar?" + }, + "removeSponsorshipSuccess": { + "message": "S'ha suprimit el patrocini" + }, + "ssoKeyConnectorUnavailable": { + "message": "No es pot arribar al connector de claus, torneu-ho a provar més tard." + }, + "keyConnectorUrl": { + "message": "URL del connector de claus" + }, + "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 identitat per continuar." + }, + "verificationCodeRequired": { + "message": "El codi de verificació és obligatori." + }, + "invalidVerificationCode": { + "message": "Codi de verificació no vàlid" + }, + "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ó" + }, + "removeMasterPassword": { + "message": "Suprimiu la contrasenya mestra" + }, + "removedMasterPassword": { + "message": "S'ha suprimit la contrasenya mestra." + }, + "allowSso": { + "message": "Permetre l'autenticació SSO" + }, + "allowSsoDesc": { + "message": "Una vegada configurat, es guardarà la configuració i els membres podran autenticar-se utilitzant les seues credencials de proveïdor d'identitat." + }, + "ssoPolicyHelpStart": { + "message": "Habilita la", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Política d'autenticació SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "per obligar que tots els membres inicien la sessió amb SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Les polítiques d'autenticació SSO i d'organització única són necessàries per configurar el desxifrat del connector de claus." + }, + "memberDecryptionOption": { + "message": "Opcions de desxifrat de membres" + }, + "memberDecryptionPassDesc": { + "message": "Un vegada autenticats, els membres desxifraran les dades de la caixa forta amb les seues contrasenyes mestres." + }, + "keyConnector": { + "message": "Connector de claus" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connecteu l'inici de sessió amb SSO al vostre servidor de claus de desxifrat autoallotjat. Amb aquesta opció, els membres no hauran d'utilitzar les seues contrasenyes mestres per desxifrar les dades de la caixa forta. Poseu-vos en contacte amb l'assistència de Bitwarden per obtenir ajuda per a la configuració." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Inici de sessió amb SSO i desxifrat del connector de claus\" està habilitat. Aquesta política només s'aplicarà als propietaris i administradors." + }, + "enabledSso": { + "message": "SSO habilitat" + }, + "disabledSso": { + "message": "SSO inhabilitat" + }, + "enabledKeyConnector": { + "message": "Connector de claus habilitat" + }, + "disabledKeyConnector": { + "message": "Connector de claus inhabilitat" + }, + "keyConnectorWarning": { + "message": "Una vegada els membres comencen a utilitzarel connector de claus, la vostra organització no pot tornar al desxifrat de la contrasenya mestra. Continueu només si us sentiu còmode implementant i gestionant un servidor de claus." + }, + "migratedKeyConnector": { + "message": "S'ha migrat al connector claus" + }, + "paymentSponsored": { + "message": "Proporcioneu una forma de pagament per associar-vos amb l'organització. No us preocupeu, no us cobrarem res tret que seleccioneu característiques addicionals o el vostre patrocini caduque. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "L'oferta de patrocini ha caducat. Podeu suprimir l'organització que heu creat per evitar un càrrec al final de la vostra prova de 7 dies. En cas contrari, podeu tancar aquest missatge per mantenir l'organització i assumir la responsabilitat de la facturació." + }, + "newFamiliesOrganization": { + "message": "Nova organització de famílies" + }, + "acceptOffer": { + "message": "Accepta l'oferta" + }, + "sponsoringOrg": { + "message": "Organització patrocinadora" + }, + "keyConnectorTest": { + "message": "Prova" + }, + "keyConnectorTestSuccess": { + "message": "Correcte! S'ha arribat al connector clau." + }, + "keyConnectorTestFail": { + "message": "No es pot arribar al connector de claus. Comproveu l'URL." + }, + "sponsorshipTokenHasExpired": { + "message": "L'oferta de patrocini ha caducat." + }, + "freeWithSponsorship": { + "message": "GRATUÏT amb patrocini" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ camps de dalt necessiten la vostra atenció.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 camp de dalt necessita la vostra atenció." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ és obligatori.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "requerit" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Requerit si l'identificador d'entitat no és un URL." + }, + "openIdOptionalCustomizations": { + "message": "Personalització opcional" + }, + "openIdAuthorityRequired": { + "message": "Requerit si l'autoritat no és vàlida." + }, + "separateMultipleWithComma": { + "message": "Separa múltiples amb una coma." + }, + "sessionTimeout": { + "message": "La sessió ha expirat. Torneu arrere i proveu d'iniciar sessió de nou." + }, + "exportingPersonalVaultTitle": { + "message": "S'està exportant la caixa forta personal" + }, + "exportingOrganizationVaultTitle": { + "message": "S'està exportant la caixa forta de l’organització" + }, + "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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Només s'exportaran els elements personals de la caixa forta associats a $ORGANIZATION$. Els elements de la caixa forta personal no s'inclouran.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Torna als informes" + }, + "generator": { + "message": "Generador" + }, + "whatWouldYouLikeToGenerate": { + "message": "Què voleu generar?" + }, + "passwordType": { + "message": "Tipus de contrasenya" + }, + "regenerateUsername": { + "message": "Regenera el nom d'usuari" + }, + "generateUsername": { + "message": "Genera un nom d'usuari" + }, + "usernameType": { + "message": "Tipus de nom d'usuari" + }, + "plusAddressedEmail": { + "message": "Adreça amb sufix", + "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": "Aleatori" + }, + "randomWord": { + "message": "Paraula aleatòria" + }, + "service": { + "message": "Servei" + } +} diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json new file mode 100644 index 0000000000..d159e9cbde --- /dev/null +++ b/apps/web/src/locales/cs/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Webový trezor $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "O jaký typ položky se jedná?" + }, + "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" + }, + "newPassword": { + "message": "Nové heslo" + }, + "passphrase": { + "message": "Heslová fráze" + }, + "notes": { + "message": "Poznámky" + }, + "customFields": { + "message": "Vlastní pole" + }, + "cardholderName": { + "message": "Jméno držitele karty" + }, + "number": { + "message": "Číslo" + }, + "brand": { + "message": "Značka" + }, + "expiration": { + "message": "Expirace" + }, + "securityCode": { + "message": "Bezpečnostní kód (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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": "Propojeno", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Smazat" + }, + "unassigned": { + "message": "Nepřiřazené" + }, + "noneFolder": { + "message": "Žádná složka", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Přidat složku" + }, + "editFolder": { + "message": "Upravit složku" + }, + "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." + }, + "never": { + "message": "Nikdy" + }, + "toggleVisibility": { + "message": "Přepnout viditelnost" + }, + "toggleCollapse": { + "message": "Přepnout sbalení", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Vygenerovat heslo" + }, + "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": "K úniku tohoto hesla nedošlo v žádném ze známých případů. Mělo by být bezpečné používat jej i nadále." + }, + "save": { + "message": "Uložit" + }, + "cancel": { + "message": "Zrušit" + }, + "canceled": { + "message": "Zrušeno" + }, + "close": { + "message": "Zavřít" + }, + "delete": { + "message": "Smazat" + }, + "favorite": { + "message": "Oblíbené" + }, + "unfavorite": { + "message": "Odebrat z oblízených" + }, + "edit": { + "message": "Upravit" + }, + "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" + }, + "searchVault": { + "message": "Vyhledat v trezoru" + }, + "allItems": { + "message": "Všechny položky" + }, + "favorites": { + "message": "Oblíbené" + }, + "types": { + "message": "Typy" + }, + "typeLogin": { + "message": "Přihlášení" + }, + "typeCard": { + "message": "Karta" + }, + "typeIdentity": { + "message": "Identita" + }, + "typeSecureNote": { + "message": "Poznámka" + }, + "typeLoginPlural": { + "message": "Přihlašovací údaje" + }, + "typeCardPlural": { + "message": "Karty" + }, + "typeIdentityPlural": { + "message": "Identity" + }, + "typeSecureNotePlural": { + "message": "Zabezpečené poznámky" + }, + "folders": { + "message": "Složky" + }, + "collections": { + "message": "Kolekce" + }, + "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" + }, + "shared": { + "message": "Sdílené" + }, + "attachments": { + "message": "Přílohy" + }, + "select": { + "message": "Vybrat" + }, + "addItem": { + "message": "Přidat položku" + }, + "editItem": { + "message": "Upravit položku" + }, + "viewItem": { + "message": "Zobrazit položku" + }, + "ex": { + "message": "např.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Ostatní" + }, + "share": { + "message": "Sdílet" + }, + "moveToOrganization": { + "message": "Přesunout do organizace" + }, + "valueCopied": { + "message": "$VALUE$ zkopírováno", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Zkopírovat hodnotu", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopírovat heslo", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopírovat uživatelské jméno", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "Kopírovat URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Můj trezor" + }, + "vault": { + "message": "Trezor" + }, + "moveSelectedToOrg": { + "message": "Přesunout vybrané do organizace" + }, + "deleteSelected": { + "message": "Smazat vybrané" + }, + "moveSelected": { + "message": "Přesunout vybrané" + }, + "selectAll": { + "message": "Vybrat vše" + }, + "unselectAll": { + "message": "Zrušit výběr" + }, + "launch": { + "message": "Spustit" + }, + "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íč." + }, + "addedItem": { + "message": "Položka byla přidána" + }, + "editedItem": { + "message": "Položka byla upravena" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ přesunut do $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Vybrané položky přesunuty do $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Smazat položku" + }, + "deleteFolder": { + "message": "Smazat složku" + }, + "deleteAttachment": { + "message": "Smazat přílohu" + }, + "deleteItemConfirmation": { + "message": "Opravdu chcete položku přesunout do koše?" + }, + "deletedItem": { + "message": "Položka byla přesunuta do koše" + }, + "deletedItems": { + "message": "Položky byly přesunuty do koše" + }, + "movedItems": { + "message": "Položky byly přesunuty" + }, + "overwritePasswordConfirmation": { + "message": "Opravdu chcete přepsat aktuální heslo?" + }, + "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." + }, + "loggedOut": { + "message": "Odhlášení" + }, + "loginExpired": { + "message": "Platnost přihlášení vypršela." + }, + "logOutConfirmation": { + "message": "Opravdu se chcete odhlásit?" + }, + "logOut": { + "message": "Odhlásit se" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Ano" + }, + "no": { + "message": "Ne" + }, + "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" + }, + "emailAddressDesc": { + "message": "Vaši e-mailovou adresu budete používat k přihlášení." + }, + "yourName": { + "message": "Vaše jméno" + }, + "yourNameDesc": { + "message": "Jak vám máme říkat?" + }, + "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é)" + }, + "masterPassHintLabel": { + "message": "Nápověda k hlavnímu heslu" + }, + "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ě" + }, + "emailAddress": { + "message": "E-mailová adresa" + }, + "yourVaultIsLocked": { + "message": "Váš trezor je uzamčen. Pro pokračování musíte zadat hlavní heslo." + }, + "unlock": { + "message": "Odemknout" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Zamknout nyní" + }, + "noItemsInList": { + "message": "Žádné položky k zobrazení." + }, + "noCollectionsInList": { + "message": "Žádné kolekce k zobrazení." + }, + "noGroupsInList": { + "message": "Žádné skupiny k zobrazení." + }, + "noUsersInList": { + "message": "Žádní uživatelé k zobrazení." + }, + "noEventsInList": { + "message": "Žádné události k zobrazení." + }, + "newOrganization": { + "message": "Nová organizace" + }, + "noOrganizationsList": { + "message": "Nepatříte do žádné organizace. Organizace umožňují bezpečné sdílení položek s ostatními uživateli." + }, + "versionNumber": { + "message": "Verze $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Zadejte 6mí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." + }, + "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 prohlížeči podporován." + }, + "noTwoStepProviders2": { + "message": "Použijte prosím podporovaný webový prohlížeč (například Chrome) a přidejte další poskytovatele, kteří lépe podporují více různých webových prohlížečích (jako například ověřovací aplikace)." + }, + "twoStepOptions": { + "message": "Možnosti dvoufázového přihlášení" + }, + "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. série, 5. série a zařízení řady NEO." + }, + "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." + }, + "u2fDesc": { + "message": "Použít jakýkoliv FIDO U2F bezpečnostní klíč pro přístup k vašemu trezoru." + }, + "u2fTitle": { + "message": "FIDO U2F bezpečnostní klíč" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Použijte jakýkoliv WebAuthn bezpečnostní klíč pro přístup k vašemu účtu." + }, + "webAuthnMigrated": { + "message": "(Migrováno z FIDO)" + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Ověřovací kódy vám budou zaslány e-mailem." + }, + "continue": { + "message": "Pokračovat" + }, + "organization": { + "message": "Organizace" + }, + "organizations": { + "message": "Organizace" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Vyberte organizaci, do které chcete tyto položky přesunout. Přesun do organizace převede vlastnictví položek této organizaci. Po přesunutí již nebudete přímým vlastníkem těchto položek." + }, + "collectionsDesc": { + "message": "Upravit kolekce, ve kterých je tato položka sdílená. Pouze uživatelé organizace, kteří mají přístup k těmto kolekcím, budou moci tuto položku vidět." + }, + "deleteSelectedItemsDesc": { + "message": "Vybrali jste $COUNT$ položek ke smazání. Opravdu chcete tyto položky smazat?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Vyberte složku, do které chcete přesunout $COUNT$ vybraných položek.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Vybrali jste $COUNT$ položku(ek). $MOVEABLE_COUNT$ položku(ek) lze přesunout do organizace, $NONMOVEABLE_COUNT$ nelze.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Ověřovací kód (TOTP)" + }, + "copyVerificationCode": { + "message": "Zkopírovat ověřovací kód" + }, + "warning": { + "message": "Varování" + }, + "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 šifruje vaše data pomocí šifrovacího klíče vašeho účtu. Pokud někdy pozměníte šifrovací klíč svého účtu, měli byste data exportovat znovu, protože tento exportovaný soubor nebudete moci dešifrovat." + }, + "encExportAccountWarningDesc": { + "message": "Šifrovací klíče účtu jsou jedinečné pro každý uživatelský účet Bitwarden, není proto možné importovat šifrovaný export do jiného účtu." + }, + "export": { + "message": "Exportovat" + }, + "exportVault": { + "message": "Exportovat přihlašovací údaje" + }, + "fileFormat": { + "message": "Formát souboru" + }, + "exportSuccess": { + "message": "Data trezoru byla exportována" + }, + "passwordGenerator": { + "message": "Generátor hesla" + }, + "minComplexityScore": { + "message": "Minimální skóre složitosti" + }, + "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" + }, + "regeneratePassword": { + "message": "Vygenerovat další heslo" + }, + "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" + }, + "passwordHistory": { + "message": "Historie hesel" + }, + "noPasswordsInList": { + "message": "Nejsou k dispozici žádná hesla." + }, + "clear": { + "message": "Vymazat", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Účet byl aktualizován" + }, + "changeEmail": { + "message": "Změnit e-mail" + }, + "changeEmailTwoFactorWarning": { + "message": "Pokračováním se změní e-mailová adresa vašeho účtu. E-mailová adresa používaná pro dvoufázové ověření se nezmění. Tuto e-mailovou adresu můžete změnit v nastavení dvoufázového přihlášení." + }, + "newEmail": { + "message": "Nový e-mail" + }, + "code": { + "message": "Kód" + }, + "changeEmailDesc": { + "message": "Na e-mail $EMAIL$ jsme odeslali ověřovací kód. Zkontrolujte prosím svou e-mailovou schránku a pro potvrzení nové e-mailové adresy zadejte níže obdržený kód.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Pokud chcete pokračovat, budete odhlášeni z aktuální relace a bude nutné se znovu přihlásit. Aktivní relace na jiných zařízeních mohou nadále zůstat aktivní po dobu až jedné hodiny." + }, + "emailChanged": { + "message": "E-mail byl změněn" + }, + "logBackIn": { + "message": "Přihlaste se prosím znovu." + }, + "logBackInOthersToo": { + "message": "Přihlaste se prosím znovu. Používáte-li jiné Bitwarden aplikace, přihlaste se znovu i v nich." + }, + "changeMasterPassword": { + "message": "Změnit hlavní heslo" + }, + "masterPasswordChanged": { + "message": "Hlavní heslo bylo změněno" + }, + "currentMasterPass": { + "message": "Současné hlavní heslo" + }, + "newMasterPass": { + "message": "Nové hlavní heslo" + }, + "confirmNewMasterPass": { + "message": "Potvrzení nového hesla" + }, + "encKeySettings": { + "message": "Nastavení šifrovacího klíče" + }, + "kdfAlgorithm": { + "message": "KDF algoritmus" + }, + "kdfIterations": { + "message": "KDF iterace" + }, + "kdfIterationsDesc": { + "message": "Vyšší hodnota KDF iterací pomáhá chránit vaše hlavní heslo před útokem hrubou silou (brute force attack). Doporučujeme nastavit hodnotu $VALUE$ nebo vyšší.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Nastavení příliš vysoké hodnoty počtu KDF iterací může mít za následek špatný výkon při přihlašování (a odemykání) aplikace Bitwarden na zařízeních se slabým procesorem. Doporučujeme hodnotu navyšovat přírůstkově po $INCREMENT$ a vyzkoušet všechna vaše zařízení.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Změnit KDF" + }, + "encKeySettingsChanged": { + "message": "Nastavení šifrovacího klíče bylo změněno" + }, + "dangerZone": { + "message": "Nebezpečná zóna" + }, + "dangerZoneDesc": { + "message": "Opatrně. Tyto akce se nedají vrátit!" + }, + "deauthorizeSessions": { + "message": "Zrušit autorizaci relací" + }, + "deauthorizeSessionsDesc": { + "message": "Je váš účet přihlášen na jiném zařízení? Pokračujte níže ke zrušení přihlášení všech počítačů a zařízení, která jste dříve používali. Tento bezpečnostní krok je doporučen, pokud jste dříve používali veřejný počítač nebo nechtěně uložili heslo na zařízení, které není vaše. Tímto krokem se také zruší dříve zapamatovaná dvoufázová přihlášení." + }, + "deauthorizeSessionsWarning": { + "message": "Pokud chcete pokračovat, budete také odhlášeni z aktuální relace a bude nutné se znovu přihlásit. Pokud používáte dvoufázové přihlášení, bude také vyžadováno. Aktivní relace na jiných zařízeních mohou nadále zůstat aktivní po dobu až jedné hodiny." + }, + "sessionsDeauthorized": { + "message": "Všechny relace byly zrušeny" + }, + "purgeVault": { + "message": "Vymazat celý trezor" + }, + "purgedOrganizationVault": { + "message": "Trezor organizace byl vyprázdněn." + }, + "vaultAccessedByProvider": { + "message": "Trezor zpřístupněný poskytovatelem." + }, + "purgeVaultDesc": { + "message": "Chcete-li smazat všechny položky a složky ve vašem trezoru, pokračujte podle následujících pokynů. Položky sdílené s organizací nebudou smazány." + }, + "purgeOrgVaultDesc": { + "message": "Chcete-li smazat všechny položky v trezoru organizace, pokračujte podle následujících pokynů." + }, + "purgeVaultWarning": { + "message": "Vymazání trezoru je trvalé. Tuto akci nelze vrátit zpět." + }, + "vaultPurged": { + "message": "Výš trezor byl vymazán" + }, + "deleteAccount": { + "message": "Smazat účet" + }, + "deleteAccountDesc": { + "message": "Pokračujte níže ke smazání účtu a všech souvisejících dat." + }, + "deleteAccountWarning": { + "message": "Smazání účtu je trvalé. Tuto akci nelze vrátit zpět." + }, + "accountDeleted": { + "message": "Účet byl smazán." + }, + "accountDeletedDesc": { + "message": "Váš účet byl uzavřen a všechna související data byla smazána." + }, + "myAccount": { + "message": "Můj účet" + }, + "tools": { + "message": "Nástroje" + }, + "importData": { + "message": "Import dat" + }, + "importError": { + "message": "Chyba importu" + }, + "importErrorDesc": { + "message": "Vyskytl se problém s daty, které jste se pokusili importovat. Prosím, vyřešte níže uvedené chyby ve zdrojovém souboru a zkuste to znovu." + }, + "importSuccess": { + "message": "Data byla úspěšně importována" + }, + "importWarning": { + "message": "Importujete data do organizace $ORGANIZATION$. Vaše data mohou být sdílena s členy této organizace. Chcete pokračovat?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data nemají správný formát. Zkontrolujte importovaný soubor a zkuste to znovu." + }, + "importNothingError": { + "message": "Nic nebylo importováno" + }, + "importEncKeyError": { + "message": "Chyba při dešifrování exportovaného souboru. Váš šifrovací klíč se neshoduje s klíčem použitým během exportu dat." + }, + "selectFormat": { + "message": "Vyberte formát importovaného souboru" + }, + "selectImportFile": { + "message": "Vyberte soubor pro import" + }, + "orCopyPasteFileContents": { + "message": "nebo zkopírujte a vložte obsah souboru" + }, + "instructionsFor": { + "message": "Instrukce pro $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Možnosti" + }, + "optionsDesc": { + "message": "Přizpůsobte si váš webový trezor." + }, + "optionsUpdated": { + "message": "Možnosti byly upraveny" + }, + "language": { + "message": "Jazyk" + }, + "languageDesc": { + "message": "Změňte jazyk používaný ve webovém trezoru." + }, + "disableIcons": { + "message": "Zakázat ikonky webových stránek" + }, + "disableIconsDesc": { + "message": "Ikonky webových stránek zobrazí snadno rozeznatelný obrázek vedle každé položky ve vašem trezoru." + }, + "enableGravatars": { + "message": "Povolit službu Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Použije profilový obrázek načtený z gravatar.com." + }, + "enableFullWidth": { + "message": "Zapnout rozvržení na celou šířku stránky", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Povolit webovému trezoru roztáhnout se na celou šířku okna." + }, + "default": { + "message": "Výchozí" + }, + "domainRules": { + "message": "Doménová pravidla" + }, + "domainRulesDesc": { + "message": "Pokud máte stejné přihlašovací údaje napříč různými doménami, můžete je označit jako „ekvivalentní“. Bitwarden za vás již vytvořil seznam globálních domén." + }, + "globalEqDomains": { + "message": "Globální ekvivalentní domény" + }, + "customEqDomains": { + "message": "Vlastní ekvivalentní domény" + }, + "exclude": { + "message": "Vyřadit" + }, + "include": { + "message": "Zahrnout" + }, + "customize": { + "message": "Přizpůsobit" + }, + "newCustomDomain": { + "message": "Přidat vlastní doménu" + }, + "newCustomDomainDesc": { + "message": "Zadejte seznam domén oddělených čárkou. Povolené jsou pouze „základní“ domény. Nezadávejte subdomény. Například zadejte „bitwarden.com“, nikoliv „vault.bitwarden.com“. Můžete také zadat „androidapp://package.name“ pokud chcete přiřadit Android aplikaci k ostatním webovým doménám." + }, + "customDomainX": { + "message": "Vlastní doména $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domény byly upraveny" + }, + "twoStepLogin": { + "message": "Dvoufázové přihlášení" + }, + "twoStepLoginDesc": { + "message": "Zabezpečte svůj účet vyžadováním dodatečného kroku při přihlašování." + }, + "twoStepLoginOrganizationDesc": { + "message": "Vyžadovat dvoufázové přihlášení pro uživatele vaší organizace nastavením poskytovatelů na úrovni organizace." + }, + "twoStepLoginRecoveryWarning": { + "message": "Povolením dvoufázového přihlášení může dojít k trvalému uzamčení vašeho účtu. Obnovovací kód umožňuje přístup do vašeho účtu i v případě, pokud již nemůžete použít svůj normální způsob dvoufázového přihlášení (např. ztráta zařízení). Pokud ztratíte přístup k vašemu účtu, nebude vám schopna pomoci ani zákaznická podpora Bitwardenu. Doporučujeme si proto kód pro obnovení zapsat nebo vytisknout a uložit jej na bezpečném místě." + }, + "viewRecoveryCode": { + "message": "Zobrazit kód pro obnovení" + }, + "providers": { + "message": "Poskytovatelé", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Povolit" + }, + "enabled": { + "message": "Povoleno" + }, + "premium": { + "message": "Prémium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Prémiové členství" + }, + "premiumRequired": { + "message": "Vyžaduje prémiové členství" + }, + "premiumRequiredDesc": { + "message": "Pro použití této funkce je potřebné prémiové členství." + }, + "youHavePremiumAccess": { + "message": "Máte prémiový přístup" + }, + "alreadyPremiumFromOrg": { + "message": "Již máte přístup k prémiovým funkcím díky organizaci, které jste členem." + }, + "manage": { + "message": "Správa" + }, + "disable": { + "message": "Zakázat" + }, + "twoStepLoginProviderEnabled": { + "message": "Tento poskytovatel dvoufázového přihlášení byl povolen." + }, + "twoStepLoginAuthDesc": { + "message": "Zadejte hlavní heslo pro úpravu dvoufázového přihlášení." + }, + "twoStepAuthenticatorDesc": { + "message": "Postupujte podle následujících kroků pro nastavení pro dvoufázového přihlášení pomocí ověřovací aplikace:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Stáhněte si ověřovací aplikaci" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Potřebujete aplikaci pro dvoufázové ověření? Stáhněte si jednu z následujících" + }, + "iosDevices": { + "message": "iOS zařízení" + }, + "androidDevices": { + "message": "Android zařízení" + }, + "windowsDevices": { + "message": "Windows zařízení" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Tyto aplikace doporučujeme, nicméně další aplikace pro ověření budou fungovat také." + }, + "twoStepAuthenticatorScanCode": { + "message": "Naskenujte tento QR kód s vaší ověřovací aplikací" + }, + "key": { + "message": "Klíč" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Zadejte 6místný kód z ověřovací aplikace" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "V případě potřeby přidání do jiného zařízení, je níže zobrazen QR kód (nebo klíč) vyžadovaný ověřovací aplikací." + }, + "twoStepDisableDesc": { + "message": "Opravdu chcete zakázat tohoto poskytovatele dvoufázového přihlášení?" + }, + "twoStepDisabled": { + "message": "Poskytovatel dvoufázového přihlášení byl zakázán" + }, + "twoFactorYubikeyAdd": { + "message": "Přidání nového YubiKey k vašemu účtu" + }, + "twoFactorYubikeyPlugIn": { + "message": "Připojte YubiKey do USB portu počítače." + }, + "twoFactorYubikeySelectKey": { + "message": "Vyberte první prázdné pole YubiKey níže." + }, + "twoFactorYubikeyTouchButton": { + "message": "Dotkněte se tlačítka na YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Uložte formulář." + }, + "twoFactorYubikeyWarning": { + "message": "Z důvodu omezení různých platforem, nemůže být YubiKey použit ve všech aplikacích Bitwarden. Měli byste povolit jiný způsob dvoufázového přihlášení pro případy, kdy nelze YubiKey použít. Podporované platformy:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Webový trezor, aplikace, CLI a rozšíření pro prohlížeče na zařízeních s USB portem." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobilní aplikace na zařízeních s podporou NFC nebo datového portu, která mohou přijmout váš YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F klíč $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Klíč WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Podpora NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Jeden z mých klíčů podporuje NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Pokud některý z vašich YubiKey podporuje NFC (např. YubiKey NEO), budete na mobilních zařízeních vyzvání k ověření pomocí NFC, pokud bude na daném zařízení tato technologie detekována." + }, + "yubikeysUpdated": { + "message": "YubiKey byly aktualizovány" + }, + "disableAllKeys": { + "message": "Zakázat všechny klíče" + }, + "twoFactorDuoDesc": { + "message": "Zadejte informace o aplikaci Bitwarden z panelu Duo Admin." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integrační klíč" + }, + "twoFactorDuoSecretKey": { + "message": "Tajný klíč" + }, + "twoFactorDuoApiHostname": { + "message": "Host API" + }, + "twoFactorEmailDesc": { + "message": "Postupujte podle následujících kroků pro nastavení dvoufázového přihlášení pomocí e-mailu:" + }, + "twoFactorEmailEnterEmail": { + "message": "Zadejte e-mail, na který si přejete dostávat ověřovací kódy" + }, + "twoFactorEmailEnterCode": { + "message": "Zadejte 6místný kód zaslaný na e-mail" + }, + "sendEmail": { + "message": "Odeslat e-mail" + }, + "twoFactorU2fAdd": { + "message": "Přidání bezpečnostního klíče FIDO U2F k vašemu účtu" + }, + "removeU2fConfirmation": { + "message": "Opravdu chcete odebrat tento bezpečnostní klíč?" + }, + "twoFactorWebAuthnAdd": { + "message": "Přidejte ke svému účtu bezpečnostní klíč WebAuthn" + }, + "readKey": { + "message": "Přečíst klíč" + }, + "keyCompromised": { + "message": "Klíč je prozrazen." + }, + "twoFactorU2fGiveName": { + "message": "Bezpečnostní klíč si pojmenujte pro jeho snadnou identifikaci." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Připojte bezpečnostní klíč do USB portu vašeho počítače a klikněte na tlačítko „Přečíst klíč“." + }, + "twoFactorU2fTouchButton": { + "message": "Pokud má bezpečnostní klíč tlačítko, zmáčkněte jej." + }, + "twoFactorU2fSaveForm": { + "message": "Uložte formulář." + }, + "twoFactorU2fWarning": { + "message": "Z důvodu omezení různých platforem, nemůže být FIDO U2F použit ve všech aplikacích Bitwarden. Měli byste povolit jiný způsob dvoufázového přihlášení pro případy, kdy nelze FIDO U2F použít. Podporované platformy:" + }, + "twoFactorU2fSupportWeb": { + "message": "Webový trezor a rozšíření pro prohlížeče s podporou U2F (Chrome, Opera, Vivaldi nebo Firefox)." + }, + "twoFactorU2fWaiting": { + "message": "Čeká se na stisknutí tlačítka na bezpečnostním klíči" + }, + "twoFactorU2fClickSave": { + "message": "Tlačítkem „Uložit“ zpřístupníte dvoufázové přihlášení pomocí tohoto bezpečnostního klíče." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Při čtení bezpečnostního klíče došlo k potížím. Zkuste to znovu." + }, + "twoFactorWebAuthnWarning": { + "message": "Z důvodu omezení platformy nelze WebAuthn použít ve všech aplikacích Bitwarden. Měli byste využít i jiného poskytovatele dvoufaktorového přihlášení, abyste měli přístup ke svému účtu, když nelze použít WebAuthn. Podporované platformy:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Webový trezor a rozšíření pro prohlížeče s podporou WebAuthn (Chrome, Opera, Vivaldi nebo Firefox)." + }, + "twoFactorRecoveryYourCode": { + "message": "Váše kód pro obnovení dvoufázového přihlášení" + }, + "twoFactorRecoveryNoCode": { + "message": "Doposud jste nepovolili žádný způsob dvoufázového přihlášení. Až některý způsob povolíte, můžete se sem vrátit pro zobrazení kódu pro obnovení." + }, + "printCode": { + "message": "Vytisknout kód", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Hlášení" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Hlášení o nezabezpečených webech" + }, + "unsecuredWebsitesReportDesc": { + "message": "Používání nezabezpečených http:// webových stránek může být nebezpečné. Pokud je to možné, přistupujte na web vždy jen přes zašifrované https:// připojení." + }, + "unsecuredWebsitesFound": { + "message": "Nalezen nezabezpečený web" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Některé položky ($COUNT$) ve vašem trezoru používají nezabezpečené URI. Schémata URI by měla být změněna na https://, pokud to web umožňuje.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Žádné položky v trezoru nemají nezabezpečené URI." + }, + "inactive2faReport": { + "message": "Hlášení o neaktivní 2FA ochraně" + }, + "inactive2faReportDesc": { + "message": "Dvoufázové přihlášení (2FA) je důležitý bezpečnostní prvek, který pomáhá zabezpečit vaše účty. Pokud jej web nabízí, měli byste dvoufázové přihlášení vždy používat." + }, + "inactive2faFound": { + "message": "Nalezena přihlášení bez 2FA" + }, + "inactive2faFoundDesc": { + "message": "Některé weby ($COUNT$) ve vašem trezoru zřejmě nejsou nakonfigurovány pro použití dvoufaktorového přihlášení (dle twofactorauth.org). Pro lepší ochranu vašich účtů byste měli dvoufaktorové přihlášení povolit.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "V trezoru nebyly nalezeny žádné weby s chybějící konfigurací dvoufaktorového přihlášení." + }, + "instructions": { + "message": "Instrukce" + }, + "exposedPasswordsReport": { + "message": "Hlášení o úniku hesel" + }, + "exposedPasswordsReportDesc": { + "message": "Uniklá hesla jsou hesla, která byla odhalena během známých úniků dat, zveřejněna nebo prodána hackery na dark webu." + }, + "exposedPasswordsFound": { + "message": "Nalezena uniklá hesla" + }, + "exposedPasswordsFoundDesc": { + "message": "V trezoru jsme našli položky ($COUNT$), jejichž hesla byla odhalena během známých úniků dat. Měli byste u nich použít nové heslo.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Žádné položky v trezoru nemají hesla, která byla odhalena během známých úniků dat." + }, + "checkExposedPasswords": { + "message": "Zkontrolovat uniklá hesla" + }, + "exposedXTimes": { + "message": "Počet úniků: $COUNT$", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Hlášení o slabých heslech" + }, + "weakPasswordsReportDesc": { + "message": "Slabá hesla mohou být snadno uhodnuta hackery či automatickými nástroji určenými pro prolomení hesel. Generátor hesel Bitwarden vám pomůže vytvořit silná hesla." + }, + "weakPasswordsFound": { + "message": "Nalezena slabá hesla" + }, + "weakPasswordsFoundDesc": { + "message": "Našli jsme $COUNT$ položek se slabým heslem. Měli byste je aktualizovat a použit silnější hesla.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Žádné položky ve vašem trezoru nemají slabá hesla." + }, + "reusedPasswordsReport": { + "message": "Hlášení o přepoužitých heslech" + }, + "reusedPasswordsReportDesc": { + "message": "Je-li vámi používaná služba kompromitována, stejné heslo použité někde jinde může hackerům umožnit snadný přístup k dalším vašim online účtům. Pro každý účet či službu byste měli vždy použít unikátní heslo." + }, + "reusedPasswordsFound": { + "message": "Nalezena přepoužitá hesla" + }, + "reusedPasswordsFoundDesc": { + "message": "Našli jsme hesla ($COUNT$), která jsou ve vašem trezoru přepoužita. Doporučujeme je změnit, aby byly unikátní.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Žádná přihlášení ve vašem trezoru nemají přepoužitá hesla." + }, + "reusedXTimes": { + "message": "Počet přepoužití: $COUNT$", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Hlášení o úniku dat" + }, + "breachDesc": { + "message": "„Únik“ je incident, při kterém se podařilo hackerům nelegální cestou získat údaje z webových stránek a následně je také zveřejnit. Zkontrolujte prosím kompromitovaná data (e-mailové adresy, hesla, kreditní karty, …) a proveďte příslušná opatření (např. změňte heslo)." + }, + "breachCheckUsernameEmail": { + "message": "Zkontrolujte všechna uživatelská jména nebo e-mailové adresy, které používáte." + }, + "checkBreaches": { + "message": "Zkontrolovat" + }, + "breachUsernameNotFound": { + "message": "Uživatelské jméno $USERNAME$ nebylo nalezeno v žádném známém úniku dat.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Dobré zprávy", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "Uživatelské jméno $USERNAME$ bylo nalezeno celkem $COUNT$x.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Došlo k úniku" + }, + "compromisedData": { + "message": "Kompromitovaná data" + }, + "website": { + "message": "Webová stránka" + }, + "affectedUsers": { + "message": "Ovlivněno uživatelů" + }, + "breachOccurred": { + "message": "Datum úniku" + }, + "breachReported": { + "message": "Datum nahlášení" + }, + "reportError": { + "message": "Při pokosu o načtení hlášení došlo k chybě. Zkuste znovu" + }, + "billing": { + "message": "Fakturace" + }, + "accountCredit": { + "message": "Kredit na účtu", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Zůstatek na účtu", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Dobít kredit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Částka", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Navýšený kredit se na vašem účtu objeví po úspěšném zpracování platby. Některé platební metody mají prodlevu a zpracování může trvat déle, než u jiných metod." + }, + "makeSureEnoughCredit": { + "message": "Ujistěte se, že je na vašem účtu dostatečný kredit pro uskutečnění tohoto nákupu. Nemáte-li na účtu dostatečný kredit, bude pro doplacení rozdílu použita vaše výchozí platební metoda. Kredit si můžete navýšit prostřednictvím stránky fakturace." + }, + "creditAppliedDesc": { + "message": "Pro nákupy bude použit kredit z vašeho účtu. Jakýkoliv dostupný kredit bude automaticky použit pro faktury vystavené pro tento účet." + }, + "goPremium": { + "message": "Přejděte na Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Povýšili jste na premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Povyšte svůj účet na prémiové členství a odemkněte další skvělé funkce." + }, + "premiumSignUpStorage": { + "message": "1 GB šifrovaného úlož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." + }, + "premiumSignUpEmergency": { + "message": "Nouzový přístup" + }, + "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ákaznická podpora." + }, + "premiumSignUpFuture": { + "message": "Všechny budoucí prémiové funkce. Více již brzy!" + }, + "premiumPrice": { + "message": "Vše jen za $PRICE$ ročně!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Doplňky" + }, + "premiumAccess": { + "message": "Prémiový přístup" + }, + "premiumAccessDesc": { + "message": "Můžete přidat prémiový přístup všem členům vaší organizace za $PRICE$/$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Další úložiště (GB)" + }, + "additionalStorageGbDesc": { + "message": "# dalších GB" + }, + "additionalStorageIntervalDesc": { + "message": "Vybraný plán obsahuje $SIZE$ šifrovaného úložiště. Další prostor si můžete přikoupit za $PRICE$/$INTERVAL$ za každý další 1 GB.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Souhrn" + }, + "total": { + "message": "Celkem" + }, + "year": { + "message": "rok" + }, + "month": { + "message": "měsíc" + }, + "monthAbbr": { + "message": "měs.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Částka bude stržena okamžitě a poté opakovaně každý rok. Plán můžete kdykoli zrušit." + }, + "paymentCharged": { + "message": "Částka bude stržena okamžitě a poté opakovaně každý $INTERVAL$. Předplatné můžete kdykoli zrušit.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Vybraný plán obsahuje bezplatnou 7denní zkušební dobu. Částka z vašeho účtu nebude stržena, dokud tato zkušební doba neuplyne. Stržení platby a fakturace bude následně probíhat opakovaně každý $INTERVAL$. Plán můžete kdykoli zrušit." + }, + "paymentInformation": { + "message": "Informace o platbě" + }, + "billingInformation": { + "message": "Fakturační údaje" + }, + "creditCard": { + "message": "Kreditní karta" + }, + "paypalClickSubmit": { + "message": "Pro přihlášení do vašeho PayPal účtu klikněte na tlačítko PayPal a následně na tlačítko Odeslat zobrazené níže." + }, + "cancelSubscription": { + "message": "Zrušit předplatné" + }, + "subscriptionCanceled": { + "message": "Předplatné bylo zrušeno" + }, + "pendingCancellation": { + "message": "Čeká na zrušení" + }, + "subscriptionPendingCanceled": { + "message": "Předplatné bude zrušeno na konci aktuálního fakturačního období." + }, + "reinstateSubscription": { + "message": "Obnovit předplatné" + }, + "reinstateConfirmation": { + "message": "Opravdu chcete zrušit požadavek na ukončení předplatného a obnovit původní předplatné?" + }, + "reinstated": { + "message": "Předplatné bylo obnoveno" + }, + "cancelConfirmation": { + "message": "Opravdu chcete zrušit předplatné? Na konci fakturačního období přijdete o veškeré výhody plynoucí z vybraného plánu." + }, + "canceledSubscription": { + "message": "Předplatné bylo zrušeno" + }, + "neverExpires": { + "message": "Nikdy nevyprší" + }, + "status": { + "message": "Stav" + }, + "nextCharge": { + "message": "Další platba" + }, + "details": { + "message": "Podrobnosti" + }, + "downloadLicense": { + "message": "Stáhnout licenci" + }, + "updateLicense": { + "message": "Aktualizovat licenci" + }, + "updatedLicense": { + "message": "Licence byla aktualizována" + }, + "manageSubscription": { + "message": "Správa předplatného" + }, + "storage": { + "message": "Úložiště" + }, + "addStorage": { + "message": "Přidat úložiště" + }, + "removeStorage": { + "message": "Odebrat úložiště" + }, + "subscriptionStorage": { + "message": "Vaše předplatné zahrnuje celkem $MAX_STORAGE$ GB místa v šifrovaném úložišti. Aktuálně používáte $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Způsob platby" + }, + "noPaymentMethod": { + "message": "Žádné způsoby platby." + }, + "addPaymentMethod": { + "message": "Přidat platební metodu" + }, + "changePaymentMethod": { + "message": "Změnit způsob platby" + }, + "invoices": { + "message": "Faktury" + }, + "noInvoices": { + "message": "Žádné faktury." + }, + "paid": { + "message": "Zaplaceno", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Nezaplaceno", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transakce", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Žádné transakce." + }, + "chargeNoun": { + "message": "Dobít", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Vrátit peníze", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": " Veškeré platby se na výpisu objeví jako $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB úložiště k přidání" + }, + "gbStorageRemove": { + "message": "GB úložiště k odebrání" + }, + "storageAddNote": { + "message": "Přidání úložiště bude mít za následek úpravy fakturačních součtů a okamžité dobití platební metody v souboru. První poplatek bude účtován pro zbytek aktuálního fakturačního cyklu." + }, + "storageRemoveNote": { + "message": "Odstranění úložiště bude mít za následek úpravy vašich fakturačních součtů, které budou účtovány jako kredity k vašemu dalšímu fakturačnímu poplatku." + }, + "adjustedStorage": { + "message": "Upraveno $AMOUNT$ GB úložiště.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Kontaktovat zákaznickou podporu" + }, + "updatedPaymentMethod": { + "message": "Platební metoda byla aktualizována" + }, + "purchasePremium": { + "message": "Zakoupit prémiové členství" + }, + "licenseFile": { + "message": "Soubor s licencí" + }, + "licenseFileDesc": { + "message": "Váš licenční soubor bude pojmenován podobně jako $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Pro upgrade vašeho účtu na prémiový musíte nahrát validní licenční soubor." + }, + "uploadLicenseFileOrg": { + "message": "Pro vytvoření organizace hostované na vlastní doméně, musíte nahrát platný licenční soubor." + }, + "accountEmailMustBeVerified": { + "message": "E-mailová adresa vašeho účtu musí být ověřena." + }, + "newOrganizationDesc": { + "message": "Organizace umožňují sdílení položek vašeho trezoru s ostatními uživateli a také správu uživatelů jako členů rodiny, malého týmu nebo velké organizace." + }, + "generalInformation": { + "message": "Obecné informace" + }, + "organizationName": { + "message": "Název organizace" + }, + "accountOwnedBusiness": { + "message": "Tento účet je vlastněn firmou." + }, + "billingEmail": { + "message": "E-mailová adresa pro fakturaci" + }, + "businessName": { + "message": "Název firmy" + }, + "chooseYourPlan": { + "message": "Vyberte plán" + }, + "users": { + "message": "Uživatelé" + }, + "userSeats": { + "message": "Počet uživatelů" + }, + "additionalUserSeats": { + "message": "Další uživatelé" + }, + "userSeatsDesc": { + "message": "# uživatelů" + }, + "userSeatsAdditionalDesc": { + "message": "Váš plán obsahuje $BASE_SEATS$ uživatelských míst. Další místa můžete přidat za $SEAT_PRICE$ na uživatele a měsíc.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Kolik míst pro uživatele potřebujete? Další místa můžete také přidat později." + }, + "planNameFree": { + "message": "Zdarma", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Pro testování nebo osobní použití a sdílení s $COUNT$ dalším uživatelem.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Rodiny" + }, + "planDescFamilies": { + "message": "Pro osobní použití a sdílení s rodinou či přáteli." + }, + "planNameTeams": { + "message": "Týmy" + }, + "planDescTeams": { + "message": "Pro firmy a různé týmy." + }, + "planNameEnterprise": { + "message": "Podniky" + }, + "planDescEnterprise": { + "message": "Pro firmy a velké organizace." + }, + "freeForever": { + "message": "Navždy zdarma" + }, + "includesXUsers": { + "message": "zahrnuje $COUNT$ uživatelů", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Další uživatelé" + }, + "costPerUser": { + "message": "$COST$ za uživatele", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Omezeno na $COUNT$ uživatele (včetně vás)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Omezeno na $COUNT$ kolekce", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Přidání a sdílení až s $COUNT$ uživateli", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Neomezený počet uživatelů" + }, + "createUnlimitedCollections": { + "message": "Neomezený počet kolekcí" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ šifrovaného úložiště", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Možnost hostování na vlastní doméně" + }, + "usersGetPremium": { + "message": "Uživatelé získají přístup k prémiovým funkcím" + }, + "controlAccessWithGroups": { + "message": "Kontrola uživatelských přístupů pomocí skupin" + }, + "syncUsersFromDirectory": { + "message": "Synchronizace uživatelů a skupin z adresáře" + }, + "trackAuditLogs": { + "message": "Sledování uživatelských akcí pomocí auditních logů" + }, + "enforce2faDuo": { + "message": "Vynutit 2FA s Duo" + }, + "priorityCustomerSupport": { + "message": "Přednostní zákaznická podpora" + }, + "xDayFreeTrial": { + "message": "$COUNT$denní zkušební verze, možno kdykoliv zrušit", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Měsíčně" + }, + "annually": { + "message": "Ročně" + }, + "basePrice": { + "message": "Základní cena" + }, + "organizationCreated": { + "message": "Organizace byla přidána." + }, + "organizationReadyToGo": { + "message": "Vaše nová organizace je připravena!" + }, + "organizationUpgraded": { + "message": "Vaše organizace byla povýšena." + }, + "leave": { + "message": "Opustit" + }, + "leaveOrganizationConfirmation": { + "message": "Opravdu chcete tuto organizaci opustit?" + }, + "leftOrganization": { + "message": "Organizace byla opuštěna." + }, + "defaultCollection": { + "message": "Výchozí kolekce" + }, + "getHelp": { + "message": "Nápověda" + }, + "getApps": { + "message": "Stáhnout aplikaci" + }, + "loggedInAs": { + "message": "Přihlášen jako" + }, + "eventLogs": { + "message": "Protokol událostí" + }, + "people": { + "message": "Uživatelé" + }, + "policies": { + "message": "Zásady" + }, + "singleSignOn": { + "message": "Jednotné přihlášení" + }, + "editPolicy": { + "message": "Upravit zásadu" + }, + "groups": { + "message": "Skupiny" + }, + "newGroup": { + "message": "Nová Skupina" + }, + "addGroup": { + "message": "Přidat skupinu" + }, + "editGroup": { + "message": "Upravit skupinu" + }, + "deleteGroupConfirmation": { + "message": "Opravdu chcete tuto skupinu smazat?" + }, + "removeUserConfirmation": { + "message": "Opravdu chcete tohoto uživatele smazat?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "Externí ID" + }, + "externalIdDesc": { + "message": "Externí ID může být použito jako reference nebo k propojení tohoto zdroje s externím systémem, jako je adresář uživatelů." + }, + "accessControl": { + "message": "Správa přístupů" + }, + "groupAccessAllItems": { + "message": "Tato skupina může vidět a upravovat vše." + }, + "groupAccessSelectedCollections": { + "message": "Tato skupina může vidět a upravovat pouze vybrané kolekce." + }, + "readOnly": { + "message": "Pouze pro čtení" + }, + "newCollection": { + "message": "Nová kolekce" + }, + "addCollection": { + "message": "Přidat kolekci" + }, + "editCollection": { + "message": "Upravit kolekci" + }, + "deleteCollectionConfirmation": { + "message": "Opravdu chcete tuto kolekci smazat?" + }, + "editUser": { + "message": "Upravit uživatele" + }, + "inviteUser": { + "message": "Pozvat uživatele" + }, + "inviteUserDesc": { + "message": "Pozvěte nového uživatele do vaší organizace zadáním e-mailové adresy jejich Bitwarden účtu. Pokud ještě nemají Bitwarden účet, budou vyzváni k vytvoření nového účtu." + }, + "inviteMultipleEmailDesc": { + "message": "Najednou můžete pozvat až $COUNT$ uživatelů pomocí seznamu jejich e-mailových adres, oddělených čárkami.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Tento uživatel používá pro ochranu svého účtu dvoufázové přihlášení." + }, + "userAccessAllItems": { + "message": "Tento uživatel může vidět a upravovat vše." + }, + "userAccessSelectedCollections": { + "message": "Tento uživatel může vidět a upravovat pouze vybrané kolekce." + }, + "search": { + "message": "Hledat" + }, + "invited": { + "message": "Pozváno" + }, + "accepted": { + "message": "Přijato" + }, + "confirmed": { + "message": "Potvrzeno" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Vlastník" + }, + "ownerDesc": { + "message": "Uživatel s nejvyšším přístupem, který může spravovat všechny aspekty vaší organizace." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Administrátor" + }, + "adminDesc": { + "message": "Administrátoři mohou prohlížet a spravovat všechny položky, sbírky a uživatele ve vaší organizaci." + }, + "user": { + "message": "Uživatel" + }, + "userDesc": { + "message": "Běžný uživatel s přístupem k přiřazeným kolekcím vaší organizace." + }, + "manager": { + "message": "Správce" + }, + "managerDesc": { + "message": "Správci mohou přistupovat a spravovat přiřazené kolekce ve vaší organizaci." + }, + "all": { + "message": "Vše" + }, + "refresh": { + "message": "Obnovit" + }, + "timestamp": { + "message": "Časová značka" + }, + "event": { + "message": "Událost" + }, + "unknown": { + "message": "Neznámé" + }, + "loadMore": { + "message": "Načíst více" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Rozšíření", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Počítač", + "description": "Desktop app" + }, + "webVault": { + "message": "Webový trezor" + }, + "loggedIn": { + "message": "Přihlášen." + }, + "changedPassword": { + "message": "Heslo účtu bylo změněno" + }, + "enabledUpdated2fa": { + "message": "Dvoufázové přihlášení bylo povoleno/upraveno." + }, + "disabled2fa": { + "message": "Dvoufázové přihlášení bylo zakázáno" + }, + "recovered2fa": { + "message": "Obnovit účet z dvoufázového přihlášení." + }, + "failedLogin": { + "message": "Pokus o přihlášení se nezdařil s nesprávným heslem." + }, + "failedLogin2fa": { + "message": "Pokus o přihlášení se nezdařil s nesprávným dvoufázovým přihlášením." + }, + "exportedVault": { + "message": "Trezor byl exportován." + }, + "exportedOrganizationVault": { + "message": "Trezor organizace byl exportován." + }, + "editedOrgSettings": { + "message": "Nastavení organizace upraveno." + }, + "createdItemId": { + "message": "Položka $ID$ byla přidána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Položka $ID$ byla upravena", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Položka $ID$ byla přesunuta do koše.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Položka $ID$ přesunuta do organizace.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Položka $ID$ byla zobrazena.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Heslo pro položku $ID$ bylo zobrazeno.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Skryté pole pro položku $ID$ bylo zobrazeno.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Bezpečnostní kód pro položku $ID$ byl zobrazen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Heslo pro položku $ID$ bylo zkopírováno.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Skryté pole pro položku $ID$ bylo zkopírováno.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Bezpečnostní kód pro položku $ID$ byl zkopírován.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Automaticky vyplněná položka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Kolekce $ID$ byla přidána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Kolekce $ID$ byla upravena", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Kolekce $ID$ byla smazána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Zásada $ID$ byla upravena.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Skupina $ID$ byla přidána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Skupina $ID$ byla upravena.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Skupina $ID$ byla smazána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Uživatel $ID$ byl odebrán.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Příloha pro položku $ID$ byla přidána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Příloha pro položku $ID$ byla smazána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Kolekce položky $ID$ byly upraveny.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Uživatel $ID$ byl pozván.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Uživatel $ID$ byl potvrzen.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Uživatel $ID$ byl upraven.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Skupiny uživatele $ID$ byly upraveny.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Odpojené SSO pro uživatele $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Zařízení" + }, + "view": { + "message": "Zobrazit" + }, + "invalidDateRange": { + "message": "Neplatné časové rozmezí." + }, + "errorOccurred": { + "message": "Došlo k chybě." + }, + "userAccess": { + "message": "Oprávnění uživatele" + }, + "userType": { + "message": "Typ uživatele" + }, + "groupAccess": { + "message": "Oprávnění skupiny" + }, + "groupAccessUserDesc": { + "message": "Upravit skupiny, do kterých uživatel spadá." + }, + "invitedUsers": { + "message": "Pozvaní uživatelé." + }, + "resendInvitation": { + "message": "Znovu poslat pozvánku" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "Uživatel $USER$ byl znovu pozván.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Potvrdit" + }, + "confirmUser": { + "message": "Potvrdit uživatele" + }, + "hasBeenConfirmed": { + "message": "Uživatel $USER$ byl potvrzen.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Potvrdit uživatele" + }, + "usersNeedConfirmed": { + "message": "Někteří uživatelé přijali pozvánku, ale nejdříve musí být potvrzeni. Dokud nedojde k potvrzení, nebudou mít tito uživatelé přístup k organizaci." + }, + "startDate": { + "message": "Datum začátku" + }, + "endDate": { + "message": "Datum konce" + }, + "verifyEmail": { + "message": "Ověřit e-mail" + }, + "verifyEmailDesc": { + "message": "Ověřte e-mailovou adresu vašeho účtu pro získání přístupu ke všem funkcím." + }, + "verifyEmailFirst": { + "message": "E-mailová adresa vašeho účtu musí být ověřena." + }, + "checkInboxForVerification": { + "message": "Zkontrolujte svůj e-mail, měli byste obdržet odkaz pro ověření." + }, + "emailVerified": { + "message": "Vaše e-mailová adresa byla ověřena" + }, + "emailVerifiedFailed": { + "message": "Váš e-mail se nepodařilo ověřit. Zkuste odeslat nový ověřovací e-mail." + }, + "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." + }, + "updateBrowser": { + "message": "Aktualizace prohlížeče" + }, + "updateBrowserDesc": { + "message": "Používáte nepodporovaný webový prohlížeč. Aplikace nemusí pracovat správně." + }, + "joinOrganization": { + "message": "Přidat se k organizaci" + }, + "joinOrganizationDesc": { + "message": "Byly jste pozváni do výše uvedené organizace. Pro přijetí pozvánky se musíte přihlásit nebo si založit nový účet." + }, + "inviteAccepted": { + "message": "Pozvánka byla přijata." + }, + "inviteAcceptedDesc": { + "message": "K této organizaci získáte přístup jakmile vám administrátor udělí členství. Až se tak stane, pošleme vám e-mail." + }, + "inviteAcceptFailed": { + "message": "Pozvánku nelze přijmout. Požádejte administrátora organizace o novou pozvánku." + }, + "inviteAcceptFailedShort": { + "message": "Pozvánku nelze přijmout. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Pamatovat si e-mail" + }, + "recoverAccountTwoStepDesc": { + "message": "Nemůžete-li přistoupit ke svému účtu pomocí běžné metody dvoufázového přihlášení, můžete použít váš kód pro obnovení dvoufázového přihlášení pro vypnutí všech dvoufázových ověření ve vašem účtu." + }, + "recoverAccountTwoStep": { + "message": "Obnovit dvoufázové přihlášení k účtu" + }, + "twoStepRecoverDisabled": { + "message": "Dvoufázové ověření na vašem účtu bylo vypnuto." + }, + "learnMore": { + "message": "Dozvědět se více" + }, + "deleteRecoverDesc": { + "message": "Zadejte svou e-mailovou adresu pro obnovení a odstranění vašeho účtu." + }, + "deleteRecoverEmailSent": { + "message": "Pokud váš účet existuje, zaslali jsme vám e-mail s dalšími pokyny." + }, + "deleteRecoverConfirmDesc": { + "message": "Vyžádali jste si odstranění vašeho Bitwarden účtu. Klepnutím na tlačítko níže akci potvrďte." + }, + "myOrganization": { + "message": "Má organizace" + }, + "deleteOrganization": { + "message": "Smazat organizaci" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organizace byla smazána." + }, + "organizationDeletedDesc": { + "message": "Organizace a veškerá související data byla smazána." + }, + "organizationUpdated": { + "message": "Organizace byla aktualizována." + }, + "taxInformation": { + "message": "Daňové údaje" + }, + "taxInformationDesc": { + "message": "Pro poskytnutí nebo aktualizaci daňových údajů pro vaše faktury kontaktujte zákaznickou podporu." + }, + "billingPlan": { + "message": "Plán", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Změnit plán", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Povyšte svůj účet na jiný plán zadáním údajů níže. Ujistěte se prosím, že máte k účtu přidaný platný způsob platby.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Zobrazit fakturu" + }, + "downloadInvoice": { + "message": "Stáhnout fakturu" + }, + "verifyBankAccount": { + "message": "Ověření bankovního účtu" + }, + "verifyBankAccountDesc": { + "message": "Provedli jsme dva mikro vklady na váš bankovní účet (může trvat 1 až 2 pracovní dny, než se zobrazí). Zadejte částky vkladů pro ověření vašeho bankovního účtu." + }, + "verifyBankAccountInitialDesc": { + "message": "Platba s bankovním účtem je k dispozici pouze zákazníkům ve Spojených státech. Budete vyzváni k ověření vašeho bankovního účtu. V následujících 1-2 pracovních dnech provedeme dva mikro-vklady. Zadejte tyto částky na fakturační stránce organizace pro ověření vašeho bankovního účtu." + }, + "verifyBankAccountFailureWarning": { + "message": "Neschopnost ověření vašeho bankovního účtu bude mít za následek zmeškání platby a zrušení vašeho předplatného." + }, + "verifiedBankAccount": { + "message": "Bankovní účet byl ověřen." + }, + "bankAccount": { + "message": "Bankovní účet" + }, + "amountX": { + "message": "Částka $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Směrovací číslo", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Číslo účtu" + }, + "accountHolderName": { + "message": "Jméno majitele účtu" + }, + "bankAccountType": { + "message": "Typ účtu" + }, + "bankAccountTypeCompany": { + "message": "Společnost (firma)" + }, + "bankAccountTypeIndividual": { + "message": "Individuální (osobní)" + }, + "enterInstallationId": { + "message": "Zadejte ID instalace" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Přidat uživatele", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Odstranit uživatele", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Vaše předplatné vám dává prostor pro celkem $COUNT$ uživatelů.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Další možnosti" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Uživatelé k přidání" + }, + "seatsToRemove": { + "message": "Uživatelé k odebrání" + }, + "seatsAddNote": { + "message": "Přidání uživatelských míst bude mít za následek úpravy fakturačních součtů a okamžité dobití platební metody v souboru. První poplatek bude účtován pro zbytek aktuálního fakturačního cyklu." + }, + "seatsRemoveNote": { + "message": "Odebrání uživatelských míst bude mít za následek úpravy vašich fakturačních součtů, které budou účtovány jako kredity k vašemu dalšímu fakturačnímu poplatku." + }, + "adjustedSeats": { + "message": "Upraveno $AMOUNT$ uživatelských míst.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Klíč byl upraven." + }, + "updateKeyTitle": { + "message": "Aktualizovat klíč" + }, + "updateEncryptionKey": { + "message": "Aktualizovat šifrovací klíč" + }, + "updateEncryptionKeyShortDesc": { + "message": "Používáte zastaralé šifrovací schéma." + }, + "updateEncryptionKeyDesc": { + "message": "Přešli jsme na delší šifrovací klíče, které poskytují vyšší úroveň zabezpečení a přístup k novým funkcím. Aktualizace vašeho šifrovacího klíče je rychlá a snadná. Stačí níže zadat vaše hlavní heslo. Provedení této aktualizace může být v budoucnu povinné." + }, + "updateEncryptionKeyWarning": { + "message": "Po aktualizace šifrovacího klíče dojde k odhlášení a budete se muset opětovně přihlásit do všech Bitwarden aplikací, které aktuálně používáte (např. mobilní aplikace či rozšíření pro prohlížeč). Nezdaří-li se odhlášení a opětovné přihlášení (během něhož bude stažen nový šifrovací klíč), může dojít k poškození údajů. Pokusíme se vás automaticky odhlásit, nicméně, může to chvíli trvat." + }, + "updateEncryptionKeyExportWarning": { + "message": "Jakékoliv šifrované exporty, které jste uložili, budou také neplatné." + }, + "subscription": { + "message": "Odběr" + }, + "loading": { + "message": "Načítání" + }, + "upgrade": { + "message": "Povýšit" + }, + "upgradeOrganization": { + "message": "Povýšit organizaci" + }, + "upgradeOrganizationDesc": { + "message": "Tato funkce je nedostupná pro bezplatné organizace. Přejděte na placené členství a odemkněte více funkcí." + }, + "createOrganizationStep1": { + "message": "Vytvoření organizace: Krok 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Před vytvořením organizace si musíte nejdříve vytvořit bezplatný osobní účet." + }, + "refunded": { + "message": "Platba vrácena" + }, + "nothingSelected": { + "message": "Nevybrali jste žádné položky." + }, + "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." + }, + "termsOfService": { + "message": "Podmínky služby" + }, + "privacyPolicy": { + "message": "Zásady ochrany osobních údajů" + }, + "filters": { + "message": "Filtry" + }, + "vaultTimeout": { + "message": "Časový limit trezoru" + }, + "vaultTimeoutDesc": { + "message": "Vyberte, kdy vyprší bezpečnostní limit trezoru. Poté bude provedena vybraná akce." + }, + "oneMinute": { + "message": "Po 1 minutě" + }, + "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" + }, + "onRefresh": { + "message": "Při obnově karty prohlížeče" + }, + "dateUpdated": { + "message": "Upraveno", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Heslo bylo změněno", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organizace je zakázána." + }, + "licenseIsExpired": { + "message": "Licence vypršela." + }, + "updatedUsers": { + "message": "Uživatelé byli aktualizováni" + }, + "selected": { + "message": "Vybrané" + }, + "ownership": { + "message": "Vlastnictví" + }, + "whoOwnsThisItem": { + "message": "Kdo vlastní tuto položku?" + }, + "strong": { + "message": "Silné", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Dobré", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Slabé", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Velmi slabé", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Slabé hlavní heslo" + }, + "weakMasterPasswordDesc": { + "message": "Zvolené hlavní heslo 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?" + }, + "rotateAccountEncKey": { + "message": "Změnit také šifrovací klíč k mému účtu" + }, + "rotateEncKeyTitle": { + "message": "Změnit šifrovací klíč" + }, + "rotateEncKeyConfirmation": { + "message": "Opravdu chcete změnit šifrovací klíč k vašemu účtu?" + }, + "attachmentsNeedFix": { + "message": "Tato položka obsahuje staré přílohy, které vyžadují opravu." + }, + "attachmentFixDesc": { + "message": "Tato stará příloha vyžaduje opravu. Klepnutím zobrazíte více informací." + }, + "fix": { + "message": "Opravit", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Ve vašem trezoru jsou staré přílohy vyžadující opravu před změnou šifrovacího klíče k vašemu účtu." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Pro zajištění integrity vašich šifrovacích klíčů proveďte nejprve ověření fráze uživatelského 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." + }, + "dontAskFingerprintAgain": { + "message": "Již se neptat na ověření 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." + }, + "free": { + "message": "Zdarma", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API klíč" + }, + "apiKeyDesc": { + "message": "Váš API klíč může být použit pro ověření přístupu k veřejnému Bitwarden API." + }, + "apiKeyRotateDesc": { + "message": "Změna API klíče zruší platnost předchozího klíče. API klíč můžete změnit, pokud se domníváte, že aktuální klíč již není bezpečný." + }, + "apiKeyWarning": { + "message": "Váš API klíč má plný přístup k organizaci. Měl by být uchován v tajnosti." + }, + "userApiKeyDesc": { + "message": "Váš API klíč může být použit k ověření v Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Váš API klíč je alternativní ověřovací mechanismus, který by měl být zachován v tajnosti." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 klientské údaje", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Zobrazit API klíč" + }, + "rotateApiKey": { + "message": "Změnit API klíč" + }, + "selectOneCollection": { + "message": "Musíte vybrat alespoň jednu kolekci." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nepodařilo se nám strhnout platbu z vaší karty. Prohlédněte si a zaplaťte nezaplacenou fakturu uvedenou níže." + }, + "inAppPurchase": { + "message": "Nákup v aplikaci" + }, + "cannotPerformInAppPurchase": { + "message": "Tuto akci nelze provést při použití platební metody „nákup v aplikaci“." + }, + "manageSubscriptionFromStore": { + "message": "Své předplatné musíte spravovat z obchodu, pomocí kterého byl nákup v aplikaci proveden." + }, + "minLength": { + "message": "Minimální délka" + }, + "clone": { + "message": "Duplikovat" + }, + "masterPassPolicyDesc": { + "message": "Nastavte minimální požadavky pro sílu hlavního hesla." + }, + "twoStepLoginPolicyDesc": { + "message": "Požadovat po uživatelích nastavení dvoufázového přihlášení pro jejich osobní účty." + }, + "twoStepLoginPolicyWarning": { + "message": "Členové organizace, kteří nemají povoleno dvoufázové přihlášení pro svůj osobní účet, budou odstraněni z organizace a obdrží e-mail, který je o změně informuje." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Jste členem organizace, která vyžaduje použití dvoufázové přihlášení na vašem uživatelském účtu. Pokud zakážete všechny poskytovatele dvoufázového přihlášení, budete z takovýchto organizací automaticky odebráni." + }, + "passwordGeneratorPolicyDesc": { + "message": "Nastavení minimálních požadavků složitosti hesla pro konfiguraci generátoru hesel." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedna nebo více zásad organizace ovlivňují nastavení generátoru." + }, + "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 organizace." + }, + "minimumNumberOfWords": { + "message": "Minimální počet slov" + }, + "defaultType": { + "message": "Výchozí typ" + }, + "userPreference": { + "message": "Uživatelská volba" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Hledat v koši" + }, + "permanentlyDelete": { + "message": "Trvale smazat" + }, + "permanentlyDeleteSelected": { + "message": "Trvale smazat vybrané" + }, + "permanentlyDeleteItem": { + "message": "Trvale smazat položku" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Opravdu chcete tuto položku trvale smazat?" + }, + "permanentlyDeletedItem": { + "message": "Položka byla trvale smazána" + }, + "permanentlyDeletedItems": { + "message": "Položky byly trvale smazány" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Vybrané položky ($COUNT$) budou trvale smazány. Opravdu chcete všechny vybrané položky trvale smazat?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Položka $ID$ byla trvale smazána.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Obnovit" + }, + "restoreSelected": { + "message": "Obnovit vybrané" + }, + "restoreItem": { + "message": "Obnovit položku" + }, + "restoredItem": { + "message": "Položka byla obnovena" + }, + "restoredItems": { + "message": "Položky byly obnoveny" + }, + "restoreItemConfirmation": { + "message": "Opravdu chcete tuto položku obnovit?" + }, + "restoreItems": { + "message": "Obnovit položky" + }, + "restoreSelectedItemsDesc": { + "message": "Vybrané položky ($COUNT$) budou obnoveny. Opravdu chcete všechny vybrané položky obnovit?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Položka $ID$ byla obnovena.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Skrýt hesla" + }, + "countryPostalCodeRequiredDesc": { + "message": "Tyto informace potřebujeme pouze pro výpočet daně a pro finanční přehledy." + }, + "includeVAT": { + "message": "Zahrnout údaje o DPH (volitelné)" + }, + "taxIdNumber": { + "message": "DIČ" + }, + "taxInfoUpdated": { + "message": "Údaje pro DPH aktualizovány." + }, + "setMasterPassword": { + "message": "Nastavit hlavní heslo" + }, + "ssoCompleteRegistration": { + "message": "Chcete-li dokončit přihlášení pomocí SSO, nastavte prosím hlavní přístupové heslo k vašemu trezoru." + }, + "identifier": { + "message": "Identifikátor" + }, + "organizationIdentifier": { + "message": "Identifikátor organizace" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Přihlaste se pomocí přihlašovacího portálu vaší organizace. Chcete-li začít, zadejte prosím identifikátor vaší organizace." + }, + "enterpriseSingleSignOn": { + "message": "Jednotné podnikové přihlášení" + }, + "ssoHandOff": { + "message": "Nyní můžete zavřít tuto kartu a pokračovat v rozšíření." + }, + "includeAllTeamsFeatures": { + "message": "Všechny funkce Týmů, navíc:" + }, + "includeSsoAuthentication": { + "message": "Podnikové přihlášení prostřednictvím SAML2.0 a OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Podnikové politiky" + }, + "ssoValidationFailed": { + "message": "Ověření pomocí SSO selhalo" + }, + "ssoIdentifierRequired": { + "message": "Je vyžadován identifikátor organizace." + }, + "unlinkSso": { + "message": "Odebrat podnikové přihlášení" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Propojit s podnikovým přihlášením" + }, + "singleOrg": { + "message": "Jedna organizace" + }, + "singleOrgDesc": { + "message": "Omezí uživatelům možnost připojit se k jiným organizacím." + }, + "singleOrgBlockCreateMessage": { + "message": "Vaše současná organizace má pravidla, která vám nedovolují připojit se k více než jedné organizaci. Obraťte se na správce organizace nebo se zaregistrujte z jiného účtu Bitwarden." + }, + "singleOrgPolicyWarning": { + "message": "Členové organizace, kteří nejsou vlastníky nebo správci, a jsou již členy jiné organizace, budou odstraněni z vaší organizace." + }, + "requireSso": { + "message": "Ověření jednotného přihlášení" + }, + "requireSsoPolicyDesc": { + "message": "Vyžaduje přihlášení uživatelů pomocí metody jednotného přihlášení." + }, + "prerequisite": { + "message": "Předpoklady" + }, + "requireSsoPolicyReq": { + "message": "Před aktivací této politiky musí být povolena politika jednotné organizace." + }, + "requireSsoPolicyReqError": { + "message": "Jednotná pravidla organizace není povolena." + }, + "requireSsoExemption": { + "message": "Majitelé a správci organizací jsou od prosazování těchto zásad osvobozeni." + }, + "sendTypeFile": { + "message": "Soubor" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Vytvořit nový Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Smazat Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "deletionDate": { + "message": "Datum odstraně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ů" + }, + "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." + }, + "disabled": { + "message": "Zakázáno" + }, + "sendLink": { + "message": "Odkaz tohoto Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Zkopírovat odkaz Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Odstranit heslo" + }, + "removedPassword": { + "message": "Heslo odstraněno" + }, + "removePasswordConfirmation": { + "message": "Jste si jisti, že chcete odstranit heslo?" + }, + "hideEmail": { + "message": "Skrýt mou e-mailovou adresu před příjemci." + }, + "disableThisSend": { + "message": "Zakažte 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." + }, + "allSends": { + "message": "Všechny Sends" + }, + "maxAccessCountReached": { + "message": "Dosažen maximální počet přístupů", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Čeká na smazání" + }, + "expired": { + "message": "Vypršela platnost" + }, + "searchSends": { + "message": "Hledat Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Toto Send je chráněno heslem. Pro pokračování zadejte prosím níže heslo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Neznáte heslo? Požádejte odesílatele o heslo potřebné 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." + }, + "sendHiddenByDefault": { + "message": "Toto Send je ve výchozím nastavení skryté. Viditelnost můžete přepnout pomocí tlačítka níže.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Stáhnout soubor" + }, + "sendAccessUnavailable": { + "message": "Send, ke kterému se pokoušíte přistupovat, neexistuje nebo již není k dispozici.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Soubor přidružený tomuto Send nebyl nalezen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Nebyly nalezeny žádné Send položky.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Nouzový přístup" + }, + "emergencyAccessDesc": { + "message": "Udělit a spravovat nouzový přístup důvěryhodným kontaktům. Důvěryhodné kontakty mohou požádat o přístup k zobrazení nebo převzetí vašeho účtu v případě nouze. Navštivte naši stránku nápovědy pro více informací a podrobností o tom, jak funguje nulové sdílení znalostí." + }, + "emergencyAccessOwnerWarning": { + "message": "Jste vlastníkem jedné nebo více organizací. Pokud dáte přístup k převzetí nouzovému kontaktu, bude moci po převzetí použít všechna vaše oprávnění jako vlastník." + }, + "trustedEmergencyContacts": { + "message": "Důvěryhodné nouzové kontakty" + }, + "noTrustedContacts": { + "message": "Zatím jste nepřidali žádné nouzové kontakty, pozvěte důvěryhodný kontakt, abyste mohli začít." + }, + "addEmergencyContact": { + "message": "Přidat nouzový kontakt" + }, + "designatedEmergencyContacts": { + "message": "Určeno jako nouzový kontakt" + }, + "noGrantedAccess": { + "message": "Zatím jste nebyl určen jako nouzový kontakt pro nikoho." + }, + "inviteEmergencyContact": { + "message": "Pozvat nouzový kontakt" + }, + "editEmergencyContact": { + "message": "Upravit nouzový kontakt" + }, + "inviteEmergencyContactDesc": { + "message": "Pozvěte nový nouzový kontakt zadáním níže uvedené e-mailové adresy účtu Bitwarden. Pokud nemají Bitwarden účet, budou vyzváni k vytvoření nového účtu." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Nouzový přístup zahájen" + }, + "emergencyAccessRecoveryApproved": { + "message": "Nouzový přístup schválen" + }, + "viewDesc": { + "message": "Může zobrazit všechny položky ve vašem trezoru." + }, + "takeover": { + "message": "Převzetí" + }, + "takeoverDesc": { + "message": "Může obnovit váš účet s novým hlavním heslem." + }, + "waitTime": { + "message": "Čas čekání" + }, + "waitTimeDesc": { + "message": "Čas potřebný před automatickým udělením přístupu." + }, + "oneDay": { + "message": "1 den" + }, + "days": { + "message": "$DAYS$ dní", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Uživatel byl pozván." + }, + "acceptEmergencyAccess": { + "message": "Byli jste pozváni, abyste se stali nouzovým kontaktem pro výše uvedené uživatele. Chcete-li přijmout pozvánku, musíte se přihlásit nebo vytvořit nový účet Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Pozvánku nelze přijmout. Požádejte uživatele o zaslání nové pozvánky." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Pozvánku nelze přijmout. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Po potvrzení Vaší identity můžete pro tohoto uživatele přistupovat k nouzovým možnostem. Jakmile se tak stane, pošleme vám e-mail." + }, + "requestAccess": { + "message": "Požádat o přístup" + }, + "requestAccessConfirmation": { + "message": "Jste si jisti, že chcete požádat o nouzový přístup? Přístup vám bude poskytnut po $WAITTIME$ dnech nebo po ručním schválení žádosti.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Požádáno o nouzový přístup k $USER$. Jakmile bude možné pokračovat, budeme vás informovat e-mailem.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Schválit" + }, + "reject": { + "message": "Odmítnout" + }, + "approveAccessConfirmation": { + "message": "Jste si jisti, že chcete schválit nouzový přístup? To umožní $USER$ $ACTION$ na váš účet.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Nouzový přístup byl schválen." + }, + "emergencyRejected": { + "message": "Nouzový přístup odmítnut" + }, + "passwordResetFor": { + "message": "Heslo obnoveno pro $USER$. Nyní se můžete přihlásit pomocí nového hesla.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Osobní vlastnictví" + }, + "personalOwnershipPolicyDesc": { + "message": "Vyžaduje po uživatelích uložení položek trezoru do organizace odstraněním možnosti osobního vlastnictví." + }, + "personalOwnershipExemption": { + "message": "Majitelé a správci organizací jsou od prosazování těchto zásad osvobozeni." + }, + "personalOwnershipSubmitError": { + "message": "Vzhledem k podnikovým zásadám je zakázáno ukládat položky do vašeho osobního trezoru. Změňte možnost vlastnictví na organizaci a vyberte z dostupných kolekcí." + }, + "disableSend": { + "message": "Deaktivovat Send" + }, + "disableSendPolicyDesc": { + "message": "Nedovolit uživatelům vytvářet nebo upravovat Bitwarden Send. Smazání existujícího Send je stále povoleno.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Uživatelé organizace, kteří mohou spravovat zásady organizace, jsou osvobozeni od vynucování těchto zásad." + }, + "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." + }, + "sendOptions": { + "message": "Nastavení Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Nastavte možnosti pro vytváření a úpravy Sendů.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Uživatelé organizace, kteří mohou spravovat zásady organizace, jsou osvobozeni od vynucování těchto zásad." + }, + "disableHideEmail": { + "message": "Nedovolte uživatelům skrýt svou e-mailovou adresu před příjemci při vytváření nebo úpravách Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "V současné době platí následující zásady organizace:" + }, + "sendDisableHideEmailInEffect": { + "message": "Uživatelé nesmí při vytváření nebo úpravách Send skrýt svou e-mailovou adresu před příjemci.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Změněné zásady $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Cena plánu" + }, + "estimatedTax": { + "message": "Odhadovaná daň" + }, + "custom": { + "message": "Vlastní" + }, + "customDesc": { + "message": "Umožňuje větší kontrolu nad uživatelských oprávnění pro pokročilé konfigurace." + }, + "permissions": { + "message": "Oprávnění" + }, + "accessEventLogs": { + "message": "Přístup k logům" + }, + "accessImportExport": { + "message": "Přístup k importu/exportu" + }, + "accessReports": { + "message": "Přístup k výkazům" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Spravovat všechny kolekce" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Upravit jakoukoliv kolekci" + }, + "deleteAnyCollection": { + "message": "Odstranit jakoukoliv kolekci" + }, + "manageAssignedCollections": { + "message": "Spravovat přiřazené kolekce" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Spravovat přiřazené kolekce" + }, + "manageGroups": { + "message": "Spravovat skupiny" + }, + "managePolicies": { + "message": "Spravovat zásady" + }, + "manageSso": { + "message": "Spravovat SSO" + }, + "manageUsers": { + "message": "Spravovat uživatele" + }, + "manageResetPassword": { + "message": "Správa obnovení hesla" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Zásady organizace ovlivňují možnosti vlastnictví." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Zakázat osobní vlastnictví pro uživatele organizace" + }, + "textHiddenByDefault": { + "message": "Při přístupu k Send, skrýt text ve výchozím nastavení", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Přátelský název pro popis tohoto 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." + }, + "copySendLinkOnSave": { + "message": "Zkopírovat odkaz tohoto Send do mé schránky při uložení." + }, + "sendLinkLabel": { + "message": "Odkaz tohoto Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send odesílá citlivé, dočasné informace ostatním snadno a bezpečně.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Zjistěte více o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Sdílejte text či soubory s kýmkoliv." + }, + "sendVaultCardLearnMore": { + "message": "Zjistěte více", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "podívejte se", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "jak to funguje", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "nebo", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "to teď vyzkoušejte", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "nebo", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "se zaregistrujte", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "abyste to vyzkoušeli již dnes.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Uživatel Bitwarden $USER_IDENTIFIER$ s vámi sdílel následující", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Uživatel Bitwarden, který vytvořil tento Send, se rozhodl skrýt svou e-mailovou adresu. Před použitím nebo stažením jeho obsahu byste se měli ujistit, že zdroji tohoto odkazu důvěřujete.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Uvedené datum vypršení platnosti není platné." + }, + "deletionDateIsInvalid": { + "message": "Uvedené datum odstranění není platné." + }, + "expirationDateAndTimeRequired": { + "message": "Je vyžadováno datum a čas vypršení platnosti." + }, + "deletionDateAndTimeRequired": { + "message": "Je vyžadováno datum a čas odstranění." + }, + "dateParsingError": { + "message": "Došlo k chybě při ukládání dat odstranění a vypršení platnosti." + }, + "webAuthnFallbackMsg": { + "message": "Chcete-li ověřit své dvoufaktorové ověření, klikněte na tlačítko níže." + }, + "webAuthnAuthenticate": { + "message": "Ověřit WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn není v tomto prohlížeči podporován." + }, + "webAuthnSuccess": { + "message": "WebAuthn úspěšně ověřen!
Tuto kartu můžete zavřít." + }, + "hintEqualsPassword": { + "message": "Nápověda k vašemu heslu nemůže být stejná jako vaše heslo." + }, + "enrollPasswordReset": { + "message": "Zapsat do procesu obnovení hesla" + }, + "enrolledPasswordReset": { + "message": "Zapsáno do procesu obnovení hesla" + }, + "withdrawPasswordReset": { + "message": "Odstoupit z obnovení hesla" + }, + "enrollPasswordResetSuccess": { + "message": "Zapsání bylo úspěšné!" + }, + "withdrawPasswordResetSuccess": { + "message": "Odstoupení bylo úspěšné!" + }, + "eventEnrollPasswordReset": { + "message": "Uživatel $ID$ se zapsal do pomoci s obnovením hesla.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Uživatel $ID$ odstoupil z pomoci s obnovením hesla.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Hlavní heslo uživatele $ID$ obnoveno.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Obnovit heslo" + }, + "resetPasswordLoggedOutWarning": { + "message": "Pokračováním odhlásíte $NAME$ z aktuální relace, což znamená, že se budou muset znovu přihlásit. Aktivní relace na jiných zařízeních mohou zůstat aktivní až po dobu jedné hodiny.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "tento uživatel" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Jedna nebo více zásad organizace vyžaduje, aby hlavní heslo splňovalo následující požadavky:" + }, + "resetPasswordSuccess": { + "message": "Heslo bylo úspěšně obnoveno!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Registrace umožní správcům organizace změnit vaše hlavní heslo. Opravdu se chcete zaregistrovat?" + }, + "resetPasswordPolicy": { + "message": "Obnovení hlavního hesla" + }, + "resetPasswordPolicyDescription": { + "message": "Povolte správcům v organizaci resetovat hlavní heslo uživatelů organizace." + }, + "resetPasswordPolicyWarning": { + "message": "Uživatelé v organizaci se budou muset sami zaregistrovat nebo být automaticky zaregistrovaní předtím, než budou moct správcové resetovat jejich hlavní heslo." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatická registrace" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Jakmile bude jejich pozvání přijato, všichni uživatelé budou automaticky zaregistrováni do obnovení hesla." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Uživatelé, kteří jsou již v organizaci, nebudou zpětně zaregistrováni do obnovení hesla. Než budou moci správci obnovit hlavní heslo, budou se muset zaregistrovat sami." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Automaticky zaregistrovat nové uživatele" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Tato organizace má podnikové zásady, které vás automaticky zaregistrují k obnovení hesla. Registrace umožní správcům organizace změnit vaše hlavní heslo." + }, + "resetPasswordOrgKeysError": { + "message": "Odpověď klíčů organizace je prázdná" + }, + "resetPasswordDetailsError": { + "message": "Odpověď na obnovení hesla je prázdná" + }, + "trashCleanupWarning": { + "message": "Položky, které byly v koši déle než 30 dní, budou automaticky smazány." + }, + "trashCleanupWarningSelfHosted": { + "message": "Položky, které byly nějakou dobu v koši, budou automaticky smazány." + }, + "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." + }, + "reinviteSelected": { + "message": "Znovu odeslat pozvánky" + }, + "noSelectedUsersApplicable": { + "message": "Tuto akci nelze použít na žádného z vybraných uživatelů." + }, + "removeUsersWarning": { + "message": "Opravdu chcete odebrat následující uživatele? Proces může trvat několik sekund a nelze jej přerušit ani zrušit." + }, + "theme": { + "message": "Motiv" + }, + "themeDesc": { + "message": "Vyberte si šablonu pro váš webový trezor." + }, + "themeSystem": { + "message": "Použít systémový motiv" + }, + "themeDark": { + "message": "Tmavý" + }, + "themeLight": { + "message": "Světlý" + }, + "confirmSelected": { + "message": "Potvrdit vybrané" + }, + "bulkConfirmStatus": { + "message": "Stav hromadné akce" + }, + "bulkConfirmMessage": { + "message": "Úspěšně potvrzeno." + }, + "bulkReinviteMessage": { + "message": "Znovu úspěšně pozváno." + }, + "bulkRemovedMessage": { + "message": "Úspěšně odstraněno" + }, + "bulkFilteredMessage": { + "message": "Vyloučené, neplatí pro tuto akci." + }, + "fingerprint": { + "message": "Otisk prstu" + }, + "removeUsers": { + "message": "Odebrat uživatele" + }, + "error": { + "message": "Chyba" + }, + "resetPasswordManageUsers": { + "message": "Správa uživatelů musí být také povolena s oprávněním spravovat obnovení hesla" + }, + "setupProvider": { + "message": "Nastavení poskytovatele" + }, + "setupProviderLoginDesc": { + "message": "Byli jste pozváni k nastavení nového poskytovatele. Chcete-li pokračovat, musíte se přihlásit nebo vytvořit nový Bitwarden účet." + }, + "setupProviderDesc": { + "message": "Pro dokončení nastavení poskytovatele, zadejte prosím níže uvedené údaje. Pokud máte nějaké dotazy, kontaktujte zákaznickou podporu." + }, + "providerName": { + "message": "Jméno poskytovatele" + }, + "providerSetup": { + "message": "Poskytovatel byl vytvořen." + }, + "clients": { + "message": "Klienti" + }, + "providerAdmin": { + "message": "Administrátor poskytovatele" + }, + "providerAdminDesc": { + "message": "Uživatel s nejvyšším oprávněním, který může spravovat všechny aspekty vašeho poskytovatele a také přístup a správu klientských organizací." + }, + "serviceUser": { + "message": "Servisní uživatel" + }, + "serviceUserDesc": { + "message": "Servisní uživatelé mohou přistupovat ke všem klientským organizacím a spravovat je." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Přidat existující organizaci" + }, + "myProvider": { + "message": "Můj poskytovatel" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Přidat" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Typ" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Formát jména ID" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "ID subjektu" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json new file mode 100644 index 0000000000..4bb6a3cde9 --- /dev/null +++ b/apps/web/src/locales/da/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ web-boks", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Hvilken type element er dette?" + }, + "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": "Adgangskode" + }, + "newPassword": { + "message": "Ny adgangskode" + }, + "passphrase": { + "message": "Adgangssætning" + }, + "notes": { + "message": "Notater" + }, + "customFields": { + "message": "Brugerdefinerede felter" + }, + "cardholderName": { + "message": "Kortindehavers navn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Type" + }, + "expiration": { + "message": "Udløb" + }, + "securityCode": { + "message": "Kortverifikationskode (CVC)" + }, + "identityName": { + "message": "Identitetsnavn" + }, + "company": { + "message": "Virksomhed" + }, + "ssn": { + "message": "CPR-nummer" + }, + "passportNumber": { + "message": "Pasnummer" + }, + "licenseNumber": { + "message": "Kørekortnummer" + }, + "email": { + "message": "E-mail" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Hr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Frk" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Udløbsmåned" + }, + "expirationYear": { + "message": "Udløbså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": "Linket", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Fjern" + }, + "unassigned": { + "message": "Ikke tilknyttet" + }, + "noneFolder": { + "message": "Ingen mappe", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Tilføj mappe" + }, + "editFolder": { + "message": "Redigér mappe" + }, + "baseDomain": { + "message": "Grund-domæne", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domænenavn", + "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." + }, + "never": { + "message": "Aldrig" + }, + "toggleVisibility": { + "message": "Slå synlighed til/fra" + }, + "toggleCollapse": { + "message": "Fold sammen/fold ud", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generér adgangskode" + }, + "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." + }, + "save": { + "message": "Gem" + }, + "cancel": { + "message": "Annullér" + }, + "canceled": { + "message": "Annulleret" + }, + "close": { + "message": "Luk" + }, + "delete": { + "message": "Slet" + }, + "favorite": { + "message": "Favorit" + }, + "unfavorite": { + "message": "Fjern favorit" + }, + "edit": { + "message": "Redigér" + }, + "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" + }, + "searchVault": { + "message": "Søg i boks" + }, + "allItems": { + "message": "Alle elementer" + }, + "favorites": { + "message": "Favoritter" + }, + "types": { + "message": "Typer" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Sikret notat" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Kort" + }, + "typeIdentityPlural": { + "message": "Identiteter" + }, + "typeSecureNotePlural": { + "message": "Sikre notater" + }, + "folders": { + "message": "Mapper" + }, + "collections": { + "message": "Samlinger" + }, + "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" + }, + "shared": { + "message": "Delt" + }, + "attachments": { + "message": "Vedhæftninger" + }, + "select": { + "message": "Vælg" + }, + "addItem": { + "message": "Tilføj element" + }, + "editItem": { + "message": "Redigér element" + }, + "viewItem": { + "message": "Vis element" + }, + "ex": { + "message": "eks.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Andet" + }, + "share": { + "message": "Del" + }, + "moveToOrganization": { + "message": "Flyt til organisation" + }, + "valueCopied": { + "message": "$VALUE$ kopieret", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopiér værdi", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopiér adgangskode", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopiér brugernavn", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopiér nummer", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiér kortverifikationskode", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopiér URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Min boks" + }, + "vault": { + "message": "Boks" + }, + "moveSelectedToOrg": { + "message": "Flyt valgte til organisation" + }, + "deleteSelected": { + "message": "Slet valgte" + }, + "moveSelected": { + "message": "Flyt valgte" + }, + "selectAll": { + "message": "Vælg alle" + }, + "unselectAll": { + "message": "Fravælg alle" + }, + "launch": { + "message": "Start" + }, + "newAttachment": { + "message": "Tilføj ny vedhæftning" + }, + "deletedAttachment": { + "message": "Vedhæftning slettet" + }, + "deleteAttachmentConfirmation": { + "message": "Er du sikker på du vil slette denne vedhæftning?" + }, + "attachmentSaved": { + "message": "Vedhæftningen 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." + }, + "addedItem": { + "message": "Tilføjede element" + }, + "editedItem": { + "message": "Redigerede element" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ flyttet til $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Valgte emner flyttet til $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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" + }, + "deletedItems": { + "message": "Elementer sendt til papirkurven" + }, + "movedItems": { + "message": "Flyttede elementer" + }, + "overwritePasswordConfirmation": { + "message": "Er du sikker på, at du vil overskrive den aktuelle adgangskode?" + }, + "editedFolder": { + "message": "Redigerede mappe" + }, + "addedFolder": { + "message": "Tilføjede mappe" + }, + "deleteFolderConfirmation": { + "message": "Er du sikker på du vil slette denne mappe?" + }, + "deletedFolder": { + "message": "Slettede mappe" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nej" + }, + "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" + }, + "emailAddressDesc": { + "message": "Du bruger din e-mailadresse til at logge ind." + }, + "yourName": { + "message": "Dit navn" + }, + "yourNameDesc": { + "message": "Hvad skal vi kalde dig?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Hovedadgangskodetip" + }, + "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 hovedadgangskoder 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." + }, + "emailAddress": { + "message": "E-mailadresse" + }, + "yourVaultIsLocked": { + "message": "Din boks er låst. Bekræft din hovedadgangskode for at fortsætte." + }, + "unlock": { + "message": "Lås op" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lås nu" + }, + "noItemsInList": { + "message": "Der er ingen elementer at vise." + }, + "noCollectionsInList": { + "message": "Der er ingen samlinger at vise." + }, + "noGroupsInList": { + "message": "Der er ingen grupper at vise." + }, + "noUsersInList": { + "message": "Der er ingen brugere at vise." + }, + "noEventsInList": { + "message": "Der er ingen begivenheder at vise." + }, + "newOrganization": { + "message": "Ny organisation" + }, + "noOrganizationsList": { + "message": "Du tilhører ikke nogen organisationer. Organisationer giver dig mulighed for at dele elementer med andre brugere på en sikker måde." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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æftelsesmail 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." + }, + "loginUnavailable": { + "message": "Login ikke tilgængelig" + }, + "noTwoStepProviders": { + "message": "Denne konto har to-trins login aktiveret, men ingen af de konfigurerede to-trins udbydere understøttes af denne webbrowser." + }, + "noTwoStepProviders2": { + "message": "Du skal bruge en understøttet webbrowser (såsom Chrome) og/eller tilføje ekstra udbydere, der understøttes bedre på tværs af webbrowsere (f.eks. en autentificeringsapp)." + }, + "twoStepOptions": { + "message": "To-trins-login indstillinger" + }, + "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": "Autentificerings-app" + }, + "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 serien, 5 serien og NEO enheder." + }, + "duoDesc": { + "message": "Bekræft med Duo Security 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." + }, + "u2fDesc": { + "message": "Brug hvilken som helst FIDO U2F-aktiveret sikkerhedsnøgle til at få adgang til din konto." + }, + "u2fTitle": { + "message": "FIDO U2F sikkerhedsnøgle" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Brug en hvilken som helst WebAuthn-aktiveret sikkerhedsnøgle til at få adgang til din konto." + }, + "webAuthnMigrated": { + "message": "(Migreret fra FIDO)" + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Bekræftelseskoder vil blive e-mailet til dig." + }, + "continue": { + "message": "Fortsæt" + }, + "organization": { + "message": "Organisation" + }, + "organizations": { + "message": "Organisationer" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Vælg en organisation, som du vil flytte disse emner til. Flytning overfører ejerskabet af emnerne til organisationen, og du vil efter flytningen ikke længere være den direkte ejer af disse emner." + }, + "collectionsDesc": { + "message": "Redigér de samlinger, som dette element deles med. Kun organisationsbrugere med adgang til disse samlinger vil kunne se dette element." + }, + "deleteSelectedItemsDesc": { + "message": "Du har valgt $COUNT$ element(er), der skal slettes. Er du sikker på, at du vil slette alle disse elementer?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Vælg en mappe, som du vil flytte de(t) $COUNT$ valgte element(er) til.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Du har valgt $COUNT$ emne(r). $MOVEABLE_COUNT$ emne(r) kan flyttes til en organisation, $NONMOVEABLE_COUNT$ kan ikke.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Bekræftelseskode (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiér bekræftelseskoden" + }, + "warning": { + "message": "Advarsel" + }, + "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." + }, + "export": { + "message": "Eksportér" + }, + "exportVault": { + "message": "Eksportér boks" + }, + "fileFormat": { + "message": "Filformat" + }, + "exportSuccess": { + "message": "Dine boksdata er blevet eksporteret." + }, + "passwordGenerator": { + "message": "Adgangskodegenerator" + }, + "minComplexityScore": { + "message": "Minimum kompleksitetsscore" + }, + "minNumbers": { + "message": "Mindste antal cifre" + }, + "minSpecial": { + "message": "Mindste antal specialtegn", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Undgå tvetydige tegn" + }, + "regeneratePassword": { + "message": "Regenerér adgangskode" + }, + "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" + }, + "passwordHistory": { + "message": "Adgangskodehistorik" + }, + "noPasswordsInList": { + "message": "Der er ingen adgangskoder at vise." + }, + "clear": { + "message": "Ryd", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Konto opdateret" + }, + "changeEmail": { + "message": "Skift e-mail" + }, + "changeEmailTwoFactorWarning": { + "message": "Hvis du fortsætter, ændres din kontos e-mailadresse. Det ændrer ikke den e-mailadresse, der bruges til to-faktor-godkendelse. Du kan ændre denne e-mailadresse i indstillingerne for to-trins login." + }, + "newEmail": { + "message": "Ny e-mail" + }, + "code": { + "message": "Kode" + }, + "changeEmailDesc": { + "message": "Vi har sendt en bekræftelseskode til $EMAIL$. Tjek venligst din e-mail for denne kode og indtast den nedenfor for at afslutte e-mailadresseændringen.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Ved at fortsætte vil du blive logget ud af din nuværende session, og du skal logge ind igen. Aktive sessioner på andre enheder kan fortsat forblive aktive i op til én time." + }, + "emailChanged": { + "message": "E-mail ændret" + }, + "logBackIn": { + "message": "Log venligst ind igen." + }, + "logBackInOthersToo": { + "message": "Log venligst ind igen. Hvis du bruger andre Bitwarden-applikationer, så log ud og ind igen på dem også." + }, + "changeMasterPassword": { + "message": "Skift hovedadgangskode" + }, + "masterPasswordChanged": { + "message": "Hovedadgangskode ændret" + }, + "currentMasterPass": { + "message": "Nuværende hovedadgangskode" + }, + "newMasterPass": { + "message": "Ny hovedadgangskode" + }, + "confirmNewMasterPass": { + "message": "Bekræft ny hovedadgangskode" + }, + "encKeySettings": { + "message": "Indstillinger for krypteringsnøgle" + }, + "kdfAlgorithm": { + "message": "KDF algoritme" + }, + "kdfIterations": { + "message": "KDF iterationer" + }, + "kdfIterationsDesc": { + "message": "Flere KDF iterationer kan hjælpe med at beskytte din hovedadgangskode imod brute force angreb. Vi anbefaler en værdi på $VALUE$ eller mere.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Hvis du indstiller dine KDF iterationer for højt, kan det resultere i dårlig ydeevne, når du logger ind på (og låser op for) Bitwarden på enheder med langsomme CPU'er. Vi anbefaler at du øger værdien i trin på $INCREMENT$ og derefter tester alle dine enheder.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Ændre KDF" + }, + "encKeySettingsChanged": { + "message": "Krypteringsnøgleindstillinger ændret" + }, + "dangerZone": { + "message": "Farezone" + }, + "dangerZoneDesc": { + "message": "Pas på, disse handlinger kan ikke fortrydes!" + }, + "deauthorizeSessions": { + "message": "Fjern godkendelsen fra sessioner" + }, + "deauthorizeSessionsDesc": { + "message": "Bekymret for om din konto er logget ind på en anden enhed? Fortsæt nedenfor for at fjerne godkendelsen for alle computere eller enheder, som du tidligere har brugt. Dette sikkerhedstrin anbefales, hvis du tidligere har brugt en offentlig computer eller ved et uheld har gemt dit kodeord på en enhed, der ikke er din. Dette trin fjerner også alle tidligere huskede to-trins-login sessioner." + }, + "deauthorizeSessionsWarning": { + "message": "Ved at fortsætte vil du også blive logget ud af din nuværende session, og du skal logge ind igen. Du bliver også bedt om to-trins login igen, hvis det er aktiveret. Aktive sessioner på andre enheder kan fortsat forblive aktive i op til én time." + }, + "sessionsDeauthorized": { + "message": "Godkendelsen er fjernet fra alle sessioner" + }, + "purgeVault": { + "message": "Tøm boks" + }, + "purgedOrganizationVault": { + "message": "Organisationsboks tømt." + }, + "vaultAccessedByProvider": { + "message": "Boks tilgået af udbyder." + }, + "purgeVaultDesc": { + "message": "Fortsæt nedenfor for at slette alle elementer og mapper i din boks. Elementer, der tilhører en organisation du deler med, slettes ikke." + }, + "purgeOrgVaultDesc": { + "message": "Fortsæt nedenfor for at slette alle elementer i organisationens boks." + }, + "purgeVaultWarning": { + "message": "Tømning af din boks er permanent. Det kan ikke fortrydes." + }, + "vaultPurged": { + "message": "Din boks er blevet tømt." + }, + "deleteAccount": { + "message": "Slet konto" + }, + "deleteAccountDesc": { + "message": "Fortsæt nedenfor for at slette din konto og alle tilknyttede data." + }, + "deleteAccountWarning": { + "message": "Sletning af din konto er permanent. Det kan ikke fortrydes." + }, + "accountDeleted": { + "message": "Konto slettet" + }, + "accountDeletedDesc": { + "message": "Din konto er blevet lukket, og alle tilknyttede data er blevet slettet." + }, + "myAccount": { + "message": "Min konto" + }, + "tools": { + "message": "Værktøjer" + }, + "importData": { + "message": "Importér data" + }, + "importError": { + "message": "Importfejl" + }, + "importErrorDesc": { + "message": "Der var et problem med de data, du forsøgte at importere. Ret nedenstående fejl i din kildefil, og prøv igen." + }, + "importSuccess": { + "message": "Data er blevet importeret til din boks med success." + }, + "importWarning": { + "message": "Du importerer data til $ORGANIZATION$. Dine data kan blive delt med medlemmer af denne organisation. Vil du fortsætte?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data er ikke formateret korrekt. Kontroller din importfil og prøv igen." + }, + "importNothingError": { + "message": "Intet blev importeret." + }, + "importEncKeyError": { + "message": "Fejl ved dekryptering af den eksporterede fil. Din krypteringsnøglen matcher ikke den krypteringsnøgle, som blev anvendt til dataeksporten." + }, + "selectFormat": { + "message": "Vælg formatet for importfilen" + }, + "selectImportFile": { + "message": "Vælg importfil" + }, + "orCopyPasteFileContents": { + "message": "eller kopiér/indsæt importfilens indhold" + }, + "instructionsFor": { + "message": "$NAME$ instruktioner", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Indstillinger" + }, + "optionsDesc": { + "message": "Tilpas din web-boks oplevelse." + }, + "optionsUpdated": { + "message": "Indstillinger opdateret" + }, + "language": { + "message": "Sprog" + }, + "languageDesc": { + "message": "Skift det sprog, der bruges af web-boksen." + }, + "disableIcons": { + "message": "Slå webikoner fra" + }, + "disableIconsDesc": { + "message": "Webikoner vises som et genkendeligt billede ved siden af hvert loginelement i din boks." + }, + "enableGravatars": { + "message": "Aktivér Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Brug avatar billeder hentet fra gravatar.com." + }, + "enableFullWidth": { + "message": "Aktivér layout med fuld bredde", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Lad web-boksen udfylde browservinduets fulde bredde." + }, + "default": { + "message": "Standard" + }, + "domainRules": { + "message": "Domæneregler" + }, + "domainRulesDesc": { + "message": "Hvis du har samme login på tværs af flere forskellige website-domæner, kan du markere hjemmesiden som \"ækvivalent\". \"Globale\" domæner er dem, der allerede er oprettet til dig af Bitwarden." + }, + "globalEqDomains": { + "message": "Globale ækvivalente domæner" + }, + "customEqDomains": { + "message": "Brugerdefinerede ækvivalente domæner" + }, + "exclude": { + "message": "Udeluk" + }, + "include": { + "message": "Inkluder" + }, + "customize": { + "message": "Tilpas" + }, + "newCustomDomain": { + "message": "Nyt brugerdefineret domæne" + }, + "newCustomDomainDesc": { + "message": "Indtast en liste over domæner adskilt af kommaer. Kun \"grund\"-domæner er tilladt. Indtast ikke underdomæner. F.eks. Indtast \"google.com\" i stedet for \"www.google.com\". Du kan også indtaste \"androidapp://package.name\" for at knytte en androidapp til andre website-domæner." + }, + "customDomainX": { + "message": "Brugerdefineret domæne $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domæner opdateret" + }, + "twoStepLogin": { + "message": "To-trins login" + }, + "twoStepLoginDesc": { + "message": "Gør din konto sikrere ved at kræve et ekstra trin, når du logger ind." + }, + "twoStepLoginOrganizationDesc": { + "message": "Kræv to-trins login for din organisations brugere ved at konfigurere udbydere på organisationsniveau." + }, + "twoStepLoginRecoveryWarning": { + "message": "Aktivering af to-trins login kan permanent låse dig ud af din Bitwarden-konto. En gendannelseskode giver dig mulighed for at få adgang til din konto, hvis du ikke længere kan bruge din normale to-trins login-leverandør (f.eks. hvis du mister din enhed). Bitwarden-support kan ikke hjælpe dig, hvis du mister adgangen til din konto. Vi anbefaler at du nedskriver eller udskriver genoprettelseskoden og gemmer den på et sikkert sted." + }, + "viewRecoveryCode": { + "message": "Vis gendannelseskode" + }, + "providers": { + "message": "Udbydere", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Aktivér" + }, + "enabled": { + "message": "Aktiveret" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium-medlemskab" + }, + "premiumRequired": { + "message": "Premium påkrævet" + }, + "premiumRequiredDesc": { + "message": "Premium-medlemskab kræves for at anvende denne funktion." + }, + "youHavePremiumAccess": { + "message": "Du har premium adgang" + }, + "alreadyPremiumFromOrg": { + "message": "Du har allerede adgang til premium-funktioner på grund af en organisation, du er medlem af." + }, + "manage": { + "message": "Håndtér" + }, + "disable": { + "message": "Deaktivér" + }, + "twoStepLoginProviderEnabled": { + "message": "Denne to-trins-login udbyder er aktiveret på din konto." + }, + "twoStepLoginAuthDesc": { + "message": "Indtast din hovedadgangskode for at ændre to-trin-login indstillinger." + }, + "twoStepAuthenticatorDesc": { + "message": "Følg disse trin for at konfigurere to-trins-login med en autentiseringsapp:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download en to-trins-autentiseringsapp" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Brug for en to-trins-autentiseringsapp? Download en af følgende" + }, + "iosDevices": { + "message": "iOS-enheder" + }, + "androidDevices": { + "message": "Android-enheder" + }, + "windowsDevices": { + "message": "Windows-enheder" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Disse apps anbefales, men andre autentificeringsapps vil også fungere." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan denne QR-kode med din autentiseringsapp" + }, + "key": { + "message": "Nøgle" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Indtast den 6-cifrede verifikationskode fra appen" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Hvis du har brug for at tilføje den til en anden enhed, er nedenstående QR-koden (eller nøglen), der kræves af din autentificeringsapp." + }, + "twoStepDisableDesc": { + "message": "Er du sikker på, at du vil deaktivere denne to-trins-login udbyder?" + }, + "twoStepDisabled": { + "message": "To-trins-login udbyder deaktiveret." + }, + "twoFactorYubikeyAdd": { + "message": "Tilføj en ny YubiKey til din konto" + }, + "twoFactorYubikeyPlugIn": { + "message": "Sæt YubiKey'en i din computers USB-port." + }, + "twoFactorYubikeySelectKey": { + "message": "Vælg det første tomme YubiKey-indtastningsfelt nedenfor." + }, + "twoFactorYubikeyTouchButton": { + "message": "Tryk på YubiKey knappen." + }, + "twoFactorYubikeySaveForm": { + "message": "Gem formularen." + }, + "twoFactorYubikeyWarning": { + "message": "På grund af platformbegrænsninger kan YubiKeys ikke bruges på alle Bitwarden-applikationer. Du bør aktivere en anden to-trins login udbyder, så du kan få adgang til din konto, når YubiKeys ikke kan benyttes. Understøttede platforme:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web-boks, desktop-program, CLI og alle browserudvidelser på en enhed med en USB-port, der kan benyttes af din YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobilapps på en enhed med NFC-understøttelse eller en data-port, der kan benyttes af din YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F nøgle $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn-nøgle $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC understøttelse" + }, + "twoFactorYubikeySupportsNfc": { + "message": "En af mine nøgler understøtter NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Hvis en af dine YubiKeys understøtter NFC (f.eks. en YubiKey NEO), bliver du bedt om denne på mobilenheder, når NFC-tilgængelighed registreres." + }, + "yubikeysUpdated": { + "message": "YubiKeys opdateret" + }, + "disableAllKeys": { + "message": "Deaktivér alle nøgler" + }, + "twoFactorDuoDesc": { + "message": "Indtast Bitwarden-programoplysningerne fra dit Duo-administrationspanel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integrationsnøgle" + }, + "twoFactorDuoSecretKey": { + "message": "Hemmelig nøgle" + }, + "twoFactorDuoApiHostname": { + "message": "API værtsnavn" + }, + "twoFactorEmailDesc": { + "message": "Følg disse trin for at konfigurere to-trins-login med e-mail:" + }, + "twoFactorEmailEnterEmail": { + "message": "Indtast den e-mail, som du ønsker skal modtage verifikationskoder" + }, + "twoFactorEmailEnterCode": { + "message": "Indtast den 6-cifrede verifikationskode fra e-mailen" + }, + "sendEmail": { + "message": "Send e-mail" + }, + "twoFactorU2fAdd": { + "message": "Tilføj en FIDO U2F sikkerhedsnøgle til din konto" + }, + "removeU2fConfirmation": { + "message": "Er du sikker på, at du vil fjerne denne sikkerhedsnøgle?" + }, + "twoFactorWebAuthnAdd": { + "message": "Føj en WebAuthn-sikkerhedsnøgle til din konto" + }, + "readKey": { + "message": "Læs nøgle" + }, + "keyCompromised": { + "message": "Nøglen er kompromitteret." + }, + "twoFactorU2fGiveName": { + "message": "Giv sikkerhedsnøglen et brugervenligt navn til at identificere den." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Sæt sikkerhedsnøglen i computerens USB-port, og klik på knappen \"Læs nøgle\"." + }, + "twoFactorU2fTouchButton": { + "message": "Hvis sikkerhedsnøglen har en knap, skal du trykke på den." + }, + "twoFactorU2fSaveForm": { + "message": "Gem formularen." + }, + "twoFactorU2fWarning": { + "message": "På grund af platformbegrænsninger kan FIDO U2F ikke bruges på alle Bitwarden-applikationer. Du bør aktivere en anden to-trins login udbyder, så du kan få adgang til din konto, når FIDO U2F ikke kan benyttes. Understøttede platforme:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web-boks og browserudvidelser på en desktop/laptop med en U2F-aktiveret browser (Chrome, Opera, Vivaldi eller Firefox med FIDO U2F aktiveret)." + }, + "twoFactorU2fWaiting": { + "message": "Venter på at du trykker på knappen på din sikkerhedsnøgle" + }, + "twoFactorU2fClickSave": { + "message": "Klik på \"Gem\" knappen nedenfor for at aktivere denne sikkerhedsnøgle til to-trins login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Der opstod et problem med at læse sikkerhedsnøglen. Prøv igen." + }, + "twoFactorWebAuthnWarning": { + "message": "På grund af platformsbegrænsninger kan WebAuthn ikke bruges på alle Bitwarden-applikationer. Du bør aktivere en anden to-trins loginudbyder, så du kan få adgang til din konto, når WebAuthn ikke kan benyttes. Understøttede platforme:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web-boks og browserudvidelser på en stationær/bærbar computer med en WebAuthn-aktiveret browser (Chrome, Opera, Vivaldi eller Firefox med FIDO U2F aktiveret)." + }, + "twoFactorRecoveryYourCode": { + "message": "Din Bitwarden to-trins-login gendannelseskode" + }, + "twoFactorRecoveryNoCode": { + "message": "Du har ikke aktiveret nogle to-trins-login-udbydere endnu. Når du har aktiveret en to-trins-login-udbyder, kan du se din gendannelseskode her." + }, + "printCode": { + "message": "Udskriv kode", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Rapporter" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Rapport over ikke-sikrede hjemmesider" + }, + "unsecuredWebsitesReportDesc": { + "message": "Brug af ikke-sikrede hjemmesider med http://-protokollen kan være farlig. Hvis hjemmesiden tillader det, skal du altid tilgå det ved hjælp af https://-protokollen, så din forbindelse er krypteret." + }, + "unsecuredWebsitesFound": { + "message": "Ikke-sikrede hjemmesider fundet" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Vi fandt $COUNT$ elementer i din boks med ikke-sikrede URI'er. Du bør ændre deres URI-protokol til https:// hvis hjemmesiden tillader det.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Ingen elementer i din boks har ikke-sikrede URI'er." + }, + "inactive2faReport": { + "message": "Rapport over inaktive 2FA" + }, + "inactive2faReportDesc": { + "message": "To-faktor autentificering (2FA) er en vigtig sikkerhedsindstilling, der hjælper med at sikre dine konti. Hvis hjemmesiden tilbyder det, skal du altid aktivere to-faktor autentificering." + }, + "inactive2faFound": { + "message": "Logins uden 2FA fundet" + }, + "inactive2faFoundDesc": { + "message": "Vi fandt $COUNT$ websted(er) i din boks, der muligvis ikke er konfigureret med to-faktor autentificering (ifølge 2fa.directory). For yderligere at beskytte disse konti bør du aktivere to-faktor autentificering.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Der blev ikke fundet nogen hjemmesider i din boks med manglende konfiguration af to-faktor autentificering." + }, + "instructions": { + "message": "Instruktioner" + }, + "exposedPasswordsReport": { + "message": "Rapport over afslørede adgangskoder" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "Afslørede adgangskoder fundet" + }, + "exposedPasswordsFoundDesc": { + "message": "Vi fandt $COUNT$ elementer i din boks, som har adgangskoder, der blev afsløret i kendte datalæk. Du bør ændre dem og bruge en ny adgangskode.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Ingen elementer i din boks har adgangskoder, der har været afsløret i kendte datalæk." + }, + "checkExposedPasswords": { + "message": "Tjek for afslørede adgangskoder" + }, + "exposedXTimes": { + "message": "Afsløret $COUNT$ gang(e)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Rapport over svage adgangskoder" + }, + "weakPasswordsReportDesc": { + "message": "Svage adgangskoder kan nemt gættes af hackere og automatiserede værktøjer, der bruges til at knække adgangskoder. Bitwarden adgangskodegenerator kan hjælpe dig med at oprette stærke adgangskoder." + }, + "weakPasswordsFound": { + "message": "Svage adgangskoder fundet" + }, + "weakPasswordsFoundDesc": { + "message": "Vi fandt $COUNT$ elementer i din boks med adgangskoder, der ikke er stærke. Du bør opdatere dem og bruge stærkere adgangskoder.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Ingen elementer i din boks har svage adgangskoder." + }, + "reusedPasswordsReport": { + "message": "Rapport over genbrugte adgangskoder" + }, + "reusedPasswordsReportDesc": { + "message": "Hvis en tjeneste, som du bruger, bliver kompromitteret, kan genbrug af samme adgangskode andetsteds tillade, at hackere nemt får adgang til flere af dine onlinekonti. Du bør bruge en unik adgangskode for hver konto eller tjeneste." + }, + "reusedPasswordsFound": { + "message": "Genbrugte adgangskoder fundet" + }, + "reusedPasswordsFoundDesc": { + "message": "Vi fandt $COUNT$ adgangskoder, der genbruges i din boks. Du bør ændre dem til unikke koder.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Ingen logins i din boks har adgangskoder, der genbruges." + }, + "reusedXTimes": { + "message": "Genbrugt $COUNT$ gange", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Datalæk rapport" + }, + "breachDesc": { + "message": "Et \"læk\" er en hændelse, hvor et websteds data er blevet ulovligt tilgået til af hackere og derefter offentliggjort. Gennemgå de typer af data, der blev kompromitteret (emailadresser, adgangskoder, kreditkort osv.) og træf passende foranstaltninger, som f.eks. ændring af adgangskoder." + }, + "breachCheckUsernameEmail": { + "message": "Kontroller eventuelle brugernavne eller e-mailadresser, som du bruger." + }, + "checkBreaches": { + "message": "Kontroller læk" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ blev ikke fundet i nogen kendte datalæk.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Gode nyheder", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ blev fundet i $COUNT$ online datalæk.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Lækkede konti fundet" + }, + "compromisedData": { + "message": "Kompromitterede data" + }, + "website": { + "message": "Hjemmeside" + }, + "affectedUsers": { + "message": "Berørte brugere" + }, + "breachOccurred": { + "message": "Læk forekom" + }, + "breachReported": { + "message": "Læk rapporteret" + }, + "reportError": { + "message": "Der opstod en fejl under forsøget på at indlæse rapporten. Prøv igen" + }, + "billing": { + "message": "Fakturering" + }, + "accountCredit": { + "message": "Kontoindestående", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Kontobalance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Indbetal beløb", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Beløb", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Indbetalte beløb vil blive vist på din konto, efter at betalingen er blevet fuldstændig behandlet. Nogle betalingsmetoder er forsinket og kan tage længere tid at behandle end andre." + }, + "makeSureEnoughCredit": { + "message": "Sørg for, at din konto har tilstrækkelig indestående til rådighed for dette køb. Hvis din konto ikke har tilstrækkelig indestående til rådighed, bruges din normale betalingsmetode til at dække forskellen. Du kan indbetale til din konto på faktureringssiden." + }, + "creditAppliedDesc": { + "message": "Din kontos indestående kan bruges til at foretage køb. Ledig indestående vil automatisk blive anvendt til fakturaer for denne konto." + }, + "goPremium": { + "message": "Skift til Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Du har opgraderet til premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Opgradér din konto til et premium-medlemskab og lås op for nogle fantastiske ekstra funktioner." + }, + "premiumSignUpStorage": { + "message": "1 GB krypteret lager til vedhæftede filer." + }, + "premiumSignUpTwoStep": { + "message": "Yderligere to-trins-loginmuligheder såsom YubiKey, FIDO U2F og Duo." + }, + "premiumSignUpEmergency": { + "message": "Nødadgang" + }, + "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!" + }, + "premiumPrice": { + "message": "Alt dette for kun $PRICE$ /år!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Tilføjelser" + }, + "premiumAccess": { + "message": "Premium adgang" + }, + "premiumAccessDesc": { + "message": "Du kan tilføje premium adgang til alle medlemmer af din organisation for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Ekstra lagerplads (GB)" + }, + "additionalStorageGbDesc": { + "message": "# af ekstra GB" + }, + "additionalStorageIntervalDesc": { + "message": "Dit abonnement indeholder $SIZE$ krypteret fillagring. Du kan tilføje ekstra lagerplads til $PRICE$ per GB / $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Resumé" + }, + "total": { + "message": "Samlet" + }, + "year": { + "message": "år" + }, + "month": { + "message": "måned" + }, + "monthAbbr": { + "message": "md.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Din valgte betalingsmetode vil blive opkrævet straks og derefter løbende hvert år. Du kan til enhver tid opsige." + }, + "paymentCharged": { + "message": "Din valgte betalingsmetode vil blive opkrævet straks og derefter løbende hvert $INTERVAL$. Du kan til enhver tid opsige.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Dit abonnement indeholder en gratis 7-dages prøveperiode. Din betalingsmetode vil ikke blive debiteret, før prøveperioden er slut. Du kan til enhver tid annullere." + }, + "paymentInformation": { + "message": "Betalingsoplysninger" + }, + "billingInformation": { + "message": "Faktureringsoplysninger" + }, + "creditCard": { + "message": "Betalingskort" + }, + "paypalClickSubmit": { + "message": "Klik på knappen PayPal for at logge ind på din PayPal-konto, og klik derefter på knappen Indsend herunder for at fortsætte." + }, + "cancelSubscription": { + "message": "Opsig abonnement" + }, + "subscriptionCanceled": { + "message": "Dit abonnement er opsagt." + }, + "pendingCancellation": { + "message": "Afventer opsigelse" + }, + "subscriptionPendingCanceled": { + "message": "Abonnementet er markeret til opsigelse i slutningen af den aktuelle faktureringsperiode." + }, + "reinstateSubscription": { + "message": "Gentegn abonnement" + }, + "reinstateConfirmation": { + "message": "Er du sikker på, at du vil fjerne den ventende opsigelse og gentegne dit abonnement?" + }, + "reinstated": { + "message": "Abonnementet er gentegnet." + }, + "cancelConfirmation": { + "message": "Er du sikker på at du vil opsige? Du vil miste adgangen til alle abonnementsfunktionerne ved afslutningen af denne faktureringsperiode." + }, + "canceledSubscription": { + "message": "Abonnementet er blevet opsagt." + }, + "neverExpires": { + "message": "Udløber aldrig" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Næste betaling" + }, + "details": { + "message": "Detaljer" + }, + "downloadLicense": { + "message": "Download licens" + }, + "updateLicense": { + "message": "Opdatér licens" + }, + "updatedLicense": { + "message": "Opdaterede licens" + }, + "manageSubscription": { + "message": "Håndtér abonnement" + }, + "storage": { + "message": "Lager" + }, + "addStorage": { + "message": "Tilføj lagerplads" + }, + "removeStorage": { + "message": "Fjern lagerplads" + }, + "subscriptionStorage": { + "message": "Dit abonnement har i alt $MAX_STORAGE$ GB krypteret fillagring. Du bruger i øjeblikket $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Betalingsmetode" + }, + "noPaymentMethod": { + "message": "Ingen betalingsmetode valgt." + }, + "addPaymentMethod": { + "message": "Tilføj betalingsmetode" + }, + "changePaymentMethod": { + "message": "Skift betalingsmetode" + }, + "invoices": { + "message": "Fakturaer" + }, + "noInvoices": { + "message": "Ingen fakturaer." + }, + "paid": { + "message": "Betalt", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Ikke betalt", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transaktioner", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Ingen transaktioner." + }, + "chargeNoun": { + "message": "Betaling", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Tilbagebetaling", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Eventuelle omkostninger vises på din opgørelse som $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB lagerplads at tilføje" + }, + "gbStorageRemove": { + "message": "GB lagerplads at fjerne" + }, + "storageAddNote": { + "message": "Tilføjelse af lagerplads vil resultere i justeringer af dine abonnementsudgifter og straks opkræve din valgte betalingsmetode. Den første afgift vil blive forholdsmæssigt for resten af den aktuelle faktureringsperiode." + }, + "storageRemoveNote": { + "message": "Fjernelse af lagerplads resulterer i justeringer af dine abonnementsudgifter, som vil blive krediteret forholdsmæssigt ved din næste betaling." + }, + "adjustedStorage": { + "message": "Justeret $AMOUNT$ GB lagerplads.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Kontakt kundesupport" + }, + "updatedPaymentMethod": { + "message": "Betalingsmetode opdateret." + }, + "purchasePremium": { + "message": "Køb premium" + }, + "licenseFile": { + "message": "Licensfil" + }, + "licenseFileDesc": { + "message": "Din licensfil vil blive navngivet noget ligesom $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "For at opgradere din konto til et premium-medlemskab skal du uploade en gyldig licensfil." + }, + "uploadLicenseFileOrg": { + "message": "For at oprette en lokal-hosted organisation, skal du uploade en gyldig licensfil." + }, + "accountEmailMustBeVerified": { + "message": "Din kontos e-mailadresse skal verificeres." + }, + "newOrganizationDesc": { + "message": "Organisationer giver dig mulighed for at dele dele af din boks med andre såvel som at håndtere relaterede brugere i en bestemt enhed som f.eks. en familie, et lille team eller et stort firma." + }, + "generalInformation": { + "message": "Generelle oplysninger" + }, + "organizationName": { + "message": "Organisationsnavn" + }, + "accountOwnedBusiness": { + "message": "Denne konto ejes af en virksomhed." + }, + "billingEmail": { + "message": "Fakturerings-email" + }, + "businessName": { + "message": "Firmanavn" + }, + "chooseYourPlan": { + "message": "Vælg dit abonnement" + }, + "users": { + "message": "Brugere" + }, + "userSeats": { + "message": "Antal brugere" + }, + "additionalUserSeats": { + "message": "Yderligere brugere" + }, + "userSeatsDesc": { + "message": "# brugere" + }, + "userSeatsAdditionalDesc": { + "message": "Dit abonnement indeholder $BASE_SEATS$ brugere. Du kan tilføje yderligere brugere til $SEAT_PRICE$ pr. bruger / måned.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Hvor mange brugere har du brug for? Du kan også tilføje yderligere brugere senere, hvis det er nødvendigt." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Til test eller personlige brugere for at dele med $COUNT$ anden/andre bruger(e).", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familier" + }, + "planDescFamilies": { + "message": "Til personlig brug, for at dele med familie og venner." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "Til virksomheder og andre organisationer med teams." + }, + "planNameEnterprise": { + "message": "Erhverv" + }, + "planDescEnterprise": { + "message": "Til virksomheder og andre store organisationer." + }, + "freeForever": { + "message": "Gratis for evigt" + }, + "includesXUsers": { + "message": "indeholder $COUNT$ brugere", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Yderligere brugere" + }, + "costPerUser": { + "message": "$COST$ pr. bruger", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Begrænset til $COUNT$ brugere (inklusive dig)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Begrænset til $COUNT$ samlinger", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Tilføj og del med op til $COUNT$ brugere", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Tilføj og del med ubegrænsede brugere" + }, + "createUnlimitedCollections": { + "message": "Opret ubegrænsede samlinger" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ krypteret filopbevaring", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Lokal-hosting (valgfri)" + }, + "usersGetPremium": { + "message": "Brugere får adgang til premium-funktioner" + }, + "controlAccessWithGroups": { + "message": "Kontroller brugeradgang med grupper" + }, + "syncUsersFromDirectory": { + "message": "Synkronisér dine brugere og grupper fra et kartotek" + }, + "trackAuditLogs": { + "message": "Spor brugerhandlinger med revisionslogfiler" + }, + "enforce2faDuo": { + "message": "Håndhæv 2FA med Duo" + }, + "priorityCustomerSupport": { + "message": "Prioriteret kundesupport" + }, + "xDayFreeTrial": { + "message": "$COUNT$ dages gratis prøveperiode, opsig når som helst", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Månedlig" + }, + "annually": { + "message": "Årlig" + }, + "basePrice": { + "message": "Grundpris" + }, + "organizationCreated": { + "message": "Organisation oprettet" + }, + "organizationReadyToGo": { + "message": "Din nye organisation er klar til brug!" + }, + "organizationUpgraded": { + "message": "Din organisation er blevet opgraderet." + }, + "leave": { + "message": "Forlad" + }, + "leaveOrganizationConfirmation": { + "message": "Er du sikker på, at du vil forlade denne organisation?" + }, + "leftOrganization": { + "message": "Du har forladt organisationen." + }, + "defaultCollection": { + "message": "Standardsamling" + }, + "getHelp": { + "message": "Få hjælp" + }, + "getApps": { + "message": "Hent apps" + }, + "loggedInAs": { + "message": "Logget ind som" + }, + "eventLogs": { + "message": "Hændelseslogfiler" + }, + "people": { + "message": "Personer" + }, + "policies": { + "message": "Politikker" + }, + "singleSignOn": { + "message": "Single Sign On" + }, + "editPolicy": { + "message": "Redigér politik" + }, + "groups": { + "message": "Grupper" + }, + "newGroup": { + "message": "Ny gruppe" + }, + "addGroup": { + "message": "Tilføj gruppe" + }, + "editGroup": { + "message": "Redigér Gruppe" + }, + "deleteGroupConfirmation": { + "message": "Er du sikker på, at du vil slette denne gruppe?" + }, + "removeUserConfirmation": { + "message": "Er du sikker på, at du vil fjerne denne bruger?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Advarsel! Denne bruger behøver Key Connector til krypteringshåndtering. Fjernes brugeren fra din organisation, deaktiveres vedkommendes konto permanent. Denne handling kan ikke fortrydes. Vil du fortsætte?" + }, + "externalId": { + "message": "Eksternt id" + }, + "externalIdDesc": { + "message": "Det eksterne id kan bruges som reference eller til at forbinde denne ressource til et eksternt system som f.eks. et brugerkartotek." + }, + "accessControl": { + "message": "Adgangskontrol" + }, + "groupAccessAllItems": { + "message": "Denne gruppe kan få adgang til og ændre alle elementer." + }, + "groupAccessSelectedCollections": { + "message": "Denne gruppe kan kun få adgang til de valgte samlinger." + }, + "readOnly": { + "message": "Læsetilladelse" + }, + "newCollection": { + "message": "Ny samling" + }, + "addCollection": { + "message": "Tilføj samling" + }, + "editCollection": { + "message": "Redigér samling" + }, + "deleteCollectionConfirmation": { + "message": "Er du sikker på, at du vil slette denne samling?" + }, + "editUser": { + "message": "Redigér bruger" + }, + "inviteUser": { + "message": "Invitér bruger" + }, + "inviteUserDesc": { + "message": "Inviter en ny bruger til din organisation ved at indtaste e-mailadressen på deres Bitwarden-konto nedenfor. Hvis de ikke allerede har en Bitwarden-konto, bliver de bedt om at oprette en ny konto." + }, + "inviteMultipleEmailDesc": { + "message": "Du kan invitere op til $COUNT$ brugere ad gangen ved at kommaseparere en liste med e-mailadresser.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Denne bruger benytter to-trins login for at beskytte kontoen." + }, + "userAccessAllItems": { + "message": "Denne bruger kan få adgang til og ændre alle elementer." + }, + "userAccessSelectedCollections": { + "message": "Denne bruger kan kun få adgang til de valgte samlinger." + }, + "search": { + "message": "Søg" + }, + "invited": { + "message": "Inviteret" + }, + "accepted": { + "message": "Accepteret" + }, + "confirmed": { + "message": "Bekræftet" + }, + "clientOwnerEmail": { + "message": "Klientejer e-mail" + }, + "owner": { + "message": "Ejer" + }, + "ownerDesc": { + "message": "Den bruger med højeste rettigheder, som kan håndtere alle aspekter af din organisation." + }, + "clientOwnerDesc": { + "message": "Denne bruger bør være uafhængig af udbyderen. Hvis udbyderen frakobles organisationen, bevarer denne bruger ejerskabet af organisationen." + }, + "admin": { + "message": "Administrator" + }, + "adminDesc": { + "message": "Administratorer kan få adgang til og håndtere alle elementer, samlinger og brugere i din organisation." + }, + "user": { + "message": "Bruger" + }, + "userDesc": { + "message": "En almindelig bruger med adgang til tildelte samlinger i din organisation." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managere kan få adgang til og håndtere tildelte samlinger i din organisation." + }, + "all": { + "message": "Alle" + }, + "refresh": { + "message": "Opdater" + }, + "timestamp": { + "message": "Tidsstempel" + }, + "event": { + "message": "Hændelse" + }, + "unknown": { + "message": "Ukendt" + }, + "loadMore": { + "message": "Indlæs mere" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Udvidelse", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Skrivebord", + "description": "Desktop app" + }, + "webVault": { + "message": "Web-boks" + }, + "loggedIn": { + "message": "Logget ind." + }, + "changedPassword": { + "message": "Ændrede konto kodeord." + }, + "enabledUpdated2fa": { + "message": "Aktiverede/opdaterede to-trins login." + }, + "disabled2fa": { + "message": "Deaktiverede to-trins-login." + }, + "recovered2fa": { + "message": "Gendannede konto fra to-trins-login." + }, + "failedLogin": { + "message": "Loginforsøg mislykkedes med forkert adgangskode." + }, + "failedLogin2fa": { + "message": "Loginforsøg mislykkedes med forkert to-trins-login." + }, + "exportedVault": { + "message": "Eksporterede boks." + }, + "exportedOrganizationVault": { + "message": "Eksporterede organisationsboks." + }, + "editedOrgSettings": { + "message": "Redigerede organisationsindstillinger." + }, + "createdItemId": { + "message": "Oprettede element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Redigerede element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Element $ID$ sendt til papirkurven.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Flyttede emnet $ID$ til en organisation.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viste element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viste adgangskode til element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viste skjult felt til element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viste sikkerhedskode til element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Kopierede adgangskode til element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Kopierede skjult felt til element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kopierede sikkerhedskode til element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Autoudfyldte element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Oprettede samling $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Redigerede samling $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Slettede samling $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Redigerede politik $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Oprettede gruppe $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Redigerede gruppe $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Slettede gruppe $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Slettede bruger $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Oprettede vedhæftning på element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Slettede vedhæftning på element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Redigerede samlinger for element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Inviterede bruger $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Bekræftede bruger $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Redigerede bruger $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Redigerede grupper for bruger $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Af-linket SSO for bruger $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Oprettet organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Tilføjet organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Fjernet organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Tilgået $ID$ organisationsboks.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Enhed" + }, + "view": { + "message": "Vis" + }, + "invalidDateRange": { + "message": "Ugyldigt datointerval." + }, + "errorOccurred": { + "message": "Der er opstået en fejl." + }, + "userAccess": { + "message": "Brugeradgang" + }, + "userType": { + "message": "Brugertype" + }, + "groupAccess": { + "message": "Gruppeadgang" + }, + "groupAccessUserDesc": { + "message": "Redigér de grupper, som denne bruger tilhører." + }, + "invitedUsers": { + "message": "Inviterede bruger(e)." + }, + "resendInvitation": { + "message": "Send invitation igen" + }, + "resendEmail": { + "message": "Send e-mail igen" + }, + "hasBeenReinvited": { + "message": "$USER$ er blevet inviteret igen.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Bekræft" + }, + "confirmUser": { + "message": "Bekræft bruger" + }, + "hasBeenConfirmed": { + "message": "$USER$ er blevet bekræftet.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Bekræft brugere" + }, + "usersNeedConfirmed": { + "message": "Du har brugere, der har accepteret deres invitation, men som mangler at blive bekræftet. Brugere har ikke adgang til organisationen, før de er bekræftet." + }, + "startDate": { + "message": "Startdato" + }, + "endDate": { + "message": "Slutdato" + }, + "verifyEmail": { + "message": "Bekræft e-mail" + }, + "verifyEmailDesc": { + "message": "Bekræft din e-mailadresse for at låse op for adgangen til alle funktioner." + }, + "verifyEmailFirst": { + "message": "Din kontos e-mailadresse skal først verificeres." + }, + "checkInboxForVerification": { + "message": "Tjek din e-mail indbakke for et bekræftelseslink." + }, + "emailVerified": { + "message": "Din e-mail er blevet bekræftet." + }, + "emailVerifiedFailed": { + "message": "Kan ikke bekræfte din e-mail. Prøv at sende en ny verifikations-email." + }, + "emailVerificationRequired": { + "message": "E-mailbekræftelse kræves" + }, + "emailVerificationRequiredDesc": { + "message": "Du skal bekræfte din e-mail for at bruge denne funktion." + }, + "updateBrowser": { + "message": "Opdatér browser" + }, + "updateBrowserDesc": { + "message": "Du bruger en ikke-understøttet webbrowser. Web-boksen fungerer muligvis ikke korrekt." + }, + "joinOrganization": { + "message": "Bliv medlem af organisation" + }, + "joinOrganizationDesc": { + "message": "Du er blevet inviteret til at blive medlem af organisationen anført ovenfor. For at acceptere invitationen skal du logge ind eller oprette en ny Bitwarden-konto." + }, + "inviteAccepted": { + "message": "Invitation accepteret" + }, + "inviteAcceptedDesc": { + "message": "Du kan få adgang til denne organisation, når en administrator bekræfter dit medlemskab. Vi sender dig en e-mail, når dette sker." + }, + "inviteAcceptFailed": { + "message": "Kan ikke acceptere invitationen. Bed en organisations-administrator om at sende en ny invitation." + }, + "inviteAcceptFailedShort": { + "message": "Kan ikke acceptere invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Husk e-mail" + }, + "recoverAccountTwoStepDesc": { + "message": "Hvis du ikke kan få adgang til din konto via dine normale to-trins-login metoder, kan du bruge din to-trins-login gendannelseskode til at deaktivere alle to-trins-udbydere på din konto." + }, + "recoverAccountTwoStep": { + "message": "Gendan to-trins-login på konto" + }, + "twoStepRecoverDisabled": { + "message": "To-trins-login er blevet deaktiveret på din konto." + }, + "learnMore": { + "message": "Få mere at vide" + }, + "deleteRecoverDesc": { + "message": "Indtast din e-mailadresse nedenfor for at gendanne og slette din konto." + }, + "deleteRecoverEmailSent": { + "message": "Hvis din konto findes, har vi sendt dig en e-mail med yderligere instruktioner." + }, + "deleteRecoverConfirmDesc": { + "message": "Du har bedt om at få slettet din Bitwarden-konto. Klik på knappen nedenfor for at bekræfte." + }, + "myOrganization": { + "message": "Min organisation" + }, + "deleteOrganization": { + "message": "Slet organisation" + }, + "deletingOrganizationContentWarning": { + "message": "Angiv hovedadgangskoden for at bekræfte sletning af $ORGANIZATION$ og alle tilknyttede data. Boks-data i $ORGANIZATION$ inkluderer:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Brugerkonti forbliver aktive efter sletning, men vil ikke længere være tilknyttet denne organisation." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Sletning af $ORGANIZATION$ er permanent og uigenkaldelig.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisation slettet" + }, + "organizationDeletedDesc": { + "message": "Organisationen og alle tilknyttede data er blevet slettet." + }, + "organizationUpdated": { + "message": "Organisation opdateret" + }, + "taxInformation": { + "message": "Skatteoplysninger" + }, + "taxInformationDesc": { + "message": "For kunder i USA er postnummer påkrævet for at opfylde momskrav, for andre lande kan du eventuelt angive et skatteidentifikationsnummer (CVR/GST) og/eller en adresse, der vises på dine fakturaer." + }, + "billingPlan": { + "message": "Abonnement", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgradér abonnement", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Opgradér din konto til et andet abonnement, ved at angive nedenstående oplysninger. Sørg for, at du har en aktiv betalingsmetode tilføjet til kontoen.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Vis faktura" + }, + "downloadInvoice": { + "message": "Download faktura" + }, + "verifyBankAccount": { + "message": "Bekræft bankkonto" + }, + "verifyBankAccountDesc": { + "message": "Vi har lavet to små indskud på din bankkonto (det kan tage 1-2 hverdage at blive vist). Indtast disse beløb for at bekræfte bankkontoen." + }, + "verifyBankAccountInitialDesc": { + "message": "Betaling med en bankkonto er kun tilgængelig for kunder i USA. Du bliver bedt om at bekræfte din bankkonto. Vi vil lave to små indskud inden for de næste 1-2 hverdage. Indtast disse beløb på organisationens faktureringsside for at bekræfte bankkontoen." + }, + "verifyBankAccountFailureWarning": { + "message": "Udelades det at bekræfte bankkontoen resulterer det i en manglende betaling, og dit abonnement deaktiveres." + }, + "verifiedBankAccount": { + "message": "Bankkonto er blevet bekræftet." + }, + "bankAccount": { + "message": "Bankkonto" + }, + "amountX": { + "message": "Beløb $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routingnummer", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Kontonummer" + }, + "accountHolderName": { + "message": "Kontoindehavers navn" + }, + "bankAccountType": { + "message": "Kontotype" + }, + "bankAccountTypeCompany": { + "message": "Firma (erhverv)" + }, + "bankAccountTypeIndividual": { + "message": "Individ (personlig)" + }, + "enterInstallationId": { + "message": "Indtast dit installations-id" + }, + "limitSubscriptionDesc": { + "message": "Indstil en pladsgrænse for dit abonnement. Når denne grænse er nået, vil du ikke kunne invitere nye brugere." + }, + "maxSeatLimit": { + "message": "Maksimal pladsgrænse (valgfrit)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maks. potentielle pladsudgift" + }, + "addSeats": { + "message": "Tilføj pladser", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Fjern pladser", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Justeringer af dit abonnement vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Hvis nyligt inviterede brugere overstiger dit abonnements pladsgrænse, vil du straks modtage en forholdsmæssig opkrævning for de ekstra brugere." + }, + "subscriptionUserSeats": { + "message": "Dit abonnement tillader i alt $COUNT$ brugere.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Begræns abonnement (valgfrit)" + }, + "subscriptionSeats": { + "message": "Abonnementspladser" + }, + "subscriptionUpdated": { + "message": "Abonnement opdateret" + }, + "additionalOptions": { + "message": "Yderligere indstillinger" + }, + "additionalOptionsDesc": { + "message": "For yderligere hjælp til håndtering af dit abonnement, kontakt venligst kundesupport." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Justeringer af dit abonnement vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Hvis nyligt inviterede brugere overstiger dine abonnementspladser, vil du straks modtage en forholdsmæssig opkrævning for de ekstra brugere." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Justeringer af dit abonnement vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Hvis nyligt inviterede brugere overskrider dine abonnementspladser, vil du straks modtage en forholdsmæssig opkrævning for de ekstra brugere, indtil din pladsgrænse på $MAX$ er nået.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Du kan ikke invitere mere end $COUNT$ brugere uden at opgradere dit abonnement.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Du kan ikke invitere mere end $COUNT$ brugere uden at opgradere dit abonnement. Kontakt venligst kundesupport for at opgradere.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Dit abonnement giver mulighed for i alt $COUNT$ brugere. Dit abonnement er sponsoreret og faktureret til en ekstern organisation.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Justeringer af dit abonnement vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Du kan ikke invitere flere end $COUNT$ brugere uden at øge dine abonnementspladser.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Pladser at tilføje" + }, + "seatsToRemove": { + "message": "Pladser at fjerne" + }, + "seatsAddNote": { + "message": "Tilføjelse af brugerpladser vil resultere i justeringer af dine abonnementsudgifter og straks opkræve din valgte betalingsmetode. Den første afgift vil blive forholdsmæssig for resten af den aktuelle faktureringsperiode." + }, + "seatsRemoveNote": { + "message": "Fjernelse af brugerpladser resulterer i justeringer af dine abonnementsudgifter, som vil blive krediteret forholdsmæssigt ved din næste betaling." + }, + "adjustedSeats": { + "message": "Justerede $AMOUNT$ brugerpladser.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Nøgle opdateret" + }, + "updateKeyTitle": { + "message": "Opdatér nøgle" + }, + "updateEncryptionKey": { + "message": "Opdatér Krypteringsnøgle" + }, + "updateEncryptionKeyShortDesc": { + "message": "Du bruger i øjeblikket en forældet krypteringsmetode." + }, + "updateEncryptionKeyDesc": { + "message": "Vi har skiftet til større krypteringsnøgler, der giver bedre sikkerhed og adgang til nyere funktioner. Opdatering af din krypteringsnøgle er hurtig og nem. Indtast bare din hovedadgangskode nedenfor. Denne opdatering bliver obligatorisk på et senere tidspunkt." + }, + "updateEncryptionKeyWarning": { + "message": "Efter opdatering af din krypteringsnøgle skal du logge ud og ind igen i alle Bitwarden-programmer, du bruger i øjeblikket (f.eks. mobilapp eller browserudvidelser). Hvis du ikke logger ud og ind (som downloader din nye krypteringsnøgle), kan det resultere i data korruption. Vi vil forsøge at logge dig ud automatisk, men det kan blive forsinket." + }, + "updateEncryptionKeyExportWarning": { + "message": "Enhver krypteret eksport du har gemt, vil også blive utilgængelig." + }, + "subscription": { + "message": "Abonnement" + }, + "loading": { + "message": "Indlæser" + }, + "upgrade": { + "message": "Opgrader" + }, + "upgradeOrganization": { + "message": "Opgradér organisation" + }, + "upgradeOrganizationDesc": { + "message": "Denne funktion er ikke tilgængelig for gratis organisationer. Skift til et betalt abonnement for at låse op for flere funktioner." + }, + "createOrganizationStep1": { + "message": "Opret organisation: Trin 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Før du opretter din organisation, skal du først oprette en gratis personlig konto." + }, + "refunded": { + "message": "Refunderet" + }, + "nothingSelected": { + "message": "Du har ikke valgt noget." + }, + "acceptPolicies": { + "message": "Ved at markere dette felt accepterer du følgende:" + }, + "acceptPoliciesError": { + "message": "Servicevilkår og fortrolighedspolitik er ikke blevet bekræftet." + }, + "termsOfService": { + "message": "Servicevilkår" + }, + "privacyPolicy": { + "message": "Privatlivspolitik" + }, + "filters": { + "message": "Filtre" + }, + "vaultTimeout": { + "message": "Boks timeout" + }, + "vaultTimeoutDesc": { + "message": "Vælg timeout for din boks, hvorefter den vil udføre den valgte handling." + }, + "oneMinute": { + "message": "1 minut" + }, + "fiveMinutes": { + "message": "5 minutter" + }, + "fifteenMinutes": { + "message": "15 minutter" + }, + "thirtyMinutes": { + "message": "30 minutter" + }, + "oneHour": { + "message": "1 time" + }, + "fourHours": { + "message": "4 timer" + }, + "onRefresh": { + "message": "Ved genstart af browseren" + }, + "dateUpdated": { + "message": "Opdateret", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Adgangskode opdateret", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisationen er deaktiveret." + }, + "licenseIsExpired": { + "message": "Licensen er udløbet." + }, + "updatedUsers": { + "message": "Opdaterede brugere" + }, + "selected": { + "message": "Valgt" + }, + "ownership": { + "message": "Ejerskab" + }, + "whoOwnsThisItem": { + "message": "Hvem ejer dette element?" + }, + "strong": { + "message": "Stærk", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "God", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Svag", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Meget svag", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Rotér også min kontos krypteringsnøgle" + }, + "rotateEncKeyTitle": { + "message": "Rotér krypteringsnøgle" + }, + "rotateEncKeyConfirmation": { + "message": "Er du sikker på, at du vil rotere din kontos krypteringsnøgle?" + }, + "attachmentsNeedFix": { + "message": "Dette element har gamle filvedhæftninger, der skal repareres." + }, + "attachmentFixDesc": { + "message": "Dette er en gammel filvedhæftning, der skal repareres. Klik for at lære mere." + }, + "fix": { + "message": "Reparér", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Der er gamle filvedhæftninger i din boks, der skal repareres, før du kan rotere din kontos krypteringsnøgle." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "For at sikre integriteten af dine krypteringsnøgler, bedes du bekræfte brugerens fingeraftrykssætning, inden du fortsætter.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Bed aldrig om at bekræfte fingeraftrykssætninger for inviterede brugere (anbefales ikke)", + "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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-nøgle" + }, + "apiKeyDesc": { + "message": "Din API-nøgle kan bruges til godkendelse mod det offentlige Bitwarden-API." + }, + "apiKeyRotateDesc": { + "message": "Hvis du roterer API-nøglen, bliver den forrige nøgle ugyldig. Du kan rotere din API-nøgle, hvis du mener at den nuværende nøgle ikke længere er sikker at bruge." + }, + "apiKeyWarning": { + "message": "Din API-nøgle har fuld adgang til organisationen. Den skal holdes hemmelig." + }, + "userApiKeyDesc": { + "message": "Din API-nøgle kan bruges til godkendelse i Bitwarden-CLI." + }, + "userApiKeyWarning": { + "message": "Din API-nøgle er en alternativ godkendelsesmekanisme. Den bør holdes hemmelig." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 legitimationsoplysninger", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Vis API-nøgle" + }, + "rotateApiKey": { + "message": "Rotér API-nøgle" + }, + "selectOneCollection": { + "message": "Du skal vælge minimum én samling." + }, + "couldNotChargeCardPayInvoice": { + "message": "Vi kunne ikke trække på dit kort. Se og betal den ubetalte faktura, der er anført nedenfor." + }, + "inAppPurchase": { + "message": "Køb i appen" + }, + "cannotPerformInAppPurchase": { + "message": "Du kan ikke udføre denne handling, når du bruger en 'køb i appen'-betalingsmetode." + }, + "manageSubscriptionFromStore": { + "message": "Du skal administrere dit abonnement fra den butik, hvor dit køb i appen blev foretaget." + }, + "minLength": { + "message": "Minimumslængde" + }, + "clone": { + "message": "Klon" + }, + "masterPassPolicyDesc": { + "message": "Angiv minimumskrav til styrken af hovedadgangskoden." + }, + "twoStepLoginPolicyDesc": { + "message": "Kræv at brugerne konfigurerer to-trins-login på deres personlige konti." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisationsmedlemmer, der ikke er ejere eller administratorer og ikke har to-trins login aktiveret på deres personlige konto, fjernes fra organisationen og modtager en e-mail med besked om ændringen." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Du er medlem af en organisation, der kræver at to-trins login er aktiveret på din brugerkonto. Hvis du deaktiverer alle to-trins login-udbydere, fjernes du automatisk fra disse organisationer." + }, + "passwordGeneratorPolicyDesc": { + "message": "Angiv minimumskrav til konfiguration af adgangskodegenerator." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Én eller flere organisationspolitikker påvirker dine generatorindstillinger." + }, + "masterPasswordPolicyInEffect": { + "message": "Én eller flere organisationspolitikker kræver din hovedadgangskode opfylder følgende 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 tal" + }, + "policyInEffectSpecial": { + "message": "Indeholder ét eller flere af følgende specialtegn $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Din nye hovedadgangskode opfylder ikke politikkravene." + }, + "minimumNumberOfWords": { + "message": "Minimum antal ord" + }, + "defaultType": { + "message": "Standard type" + }, + "userPreference": { + "message": "Brugerindstilling" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Søg i papirkurven" + }, + "permanentlyDelete": { + "message": "Slette permanent" + }, + "permanentlyDeleteSelected": { + "message": "Slet valgte elementer permanent" + }, + "permanentlyDeleteItem": { + "message": "Slet element permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Er du sikker på, at du vil slette dette element permanent?" + }, + "permanentlyDeletedItem": { + "message": "Element slettet permanent" + }, + "permanentlyDeletedItems": { + "message": "Elementer slettet permanent" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Du har valgt $COUNT$ element(er), der skal slettes permanent. Er du sikker på, at du vil slette alle disse elementer permanent?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Element $ID$ slettet permanent.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Gendan" + }, + "restoreSelected": { + "message": "Gendan valgte" + }, + "restoreItem": { + "message": "Gendan element" + }, + "restoredItem": { + "message": "Element gendannet" + }, + "restoredItems": { + "message": "Elementer gendannet" + }, + "restoreItemConfirmation": { + "message": "Er du sikker på, at du vil gendanne dette element?" + }, + "restoreItems": { + "message": "Gendan elementer" + }, + "restoreSelectedItemsDesc": { + "message": "Du har valgt $COUNT$ element(er), der skal gendannes. Er du sikker på, at du vil gendanne alle disse elementer?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Element $ID$ gendannet.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Skjul adgangskoder" + }, + "countryPostalCodeRequiredDesc": { + "message": "Vi benytter udelukkende disse oplysninger til beregning af moms og finansiel rapportering." + }, + "includeVAT": { + "message": "Inkludér momsoplysninger (valgfrit)" + }, + "taxIdNumber": { + "message": "Momsregistreringsnummer" + }, + "taxInfoUpdated": { + "message": "Skatteoplysninger opdateret." + }, + "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." + }, + "identifier": { + "message": "Identifikator" + }, + "organizationIdentifier": { + "message": "Organisationsidentifikator" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log ind vha. din organisations single sign-on portal. Angiv din organisations identifikator for at begynde." + }, + "enterpriseSingleSignOn": { + "message": "Virksomheds Single Sign On" + }, + "ssoHandOff": { + "message": "Du kan nu lukke denne fane og fortsætte i udvidelsen." + }, + "includeAllTeamsFeatures": { + "message": "Alle teamfunktioner, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO godkendelse via SAML2.0 og OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Virksomhedspolitikker" + }, + "ssoValidationFailed": { + "message": "SSO validering mislykkedes" + }, + "ssoIdentifierRequired": { + "message": "Organisationsidentifikator er påkrævet." + }, + "unlinkSso": { + "message": "Fjern SSO tilknytning" + }, + "unlinkSsoConfirmation": { + "message": "Er du sikker på, at du vil fjerne SSO-tilknytningen for denne organisation?" + }, + "linkSso": { + "message": "Tilknyt SSO" + }, + "singleOrg": { + "message": "Enkel organisation" + }, + "singleOrgDesc": { + "message": "Begræns brugere fra at kunne deltage i andre organisationer." + }, + "singleOrgBlockCreateMessage": { + "message": "Din nuværende organisation har en politik, der ikke tillader dig at deltage i mere end en organisation. Kontakt din organisations administratorer, eller tilmeld dig fra en anden Bitwarden-konto." + }, + "singleOrgPolicyWarning": { + "message": "Organisationsmedlemmer, der ikke er ejere eller administratorer og allerede er medlem af en anden organisation, fjernes fra din organisation." + }, + "requireSso": { + "message": "Single Sign-On autentificering" + }, + "requireSsoPolicyDesc": { + "message": "Kræv at brugerne logger ind med Virksomheds Single Sign-On-metoden." + }, + "prerequisite": { + "message": "Forudsætning" + }, + "requireSsoPolicyReq": { + "message": "Enkel organisations virksomhedspolitikken skal aktiveres, før denne politik aktiveres." + }, + "requireSsoPolicyReqError": { + "message": "Enkelt organisationspolitik er ikke aktiveret." + }, + "requireSsoExemption": { + "message": "Organisationsejere og administratorer er undtaget fra denne politik." + }, + "sendTypeFile": { + "message": "Fil" + }, + "sendTypeText": { + "message": "Tekst" + }, + "createSend": { + "message": "Opret ny Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Slet Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "whatTypeOfSend": { + "message": "Hvilken type Send er denne?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletionDate": { + "message": "Sletningsdato" + }, + "deletionDateDesc": { + "message": "Send slettes permanent 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." + }, + "expirationDate": { + "message": "Udløbsdato" + }, + "expirationDateDesc": { + "message": "Hvis opsat, udløber adgangen til denne Send 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": "Maksimal 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" + }, + "sendPasswordDesc": { + "message": "Valgfrit brugeradgangskodekrav for 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": "Fortrolige notater om denne Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Deaktiveret" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopiér Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Fjern adgangskode" + }, + "removedPassword": { + "message": "Adgangskode fjernet" + }, + "removePasswordConfirmation": { + "message": "Er du sikker på, at du vil fjerne adgangskoden?" + }, + "hideEmail": { + "message": "Skjul min e-mailadresse for modtagere." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Alle Send" + }, + "maxAccessCountReached": { + "message": "Maks. adgangsantal nået", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Afventer sletning" + }, + "expired": { + "message": "Udløbet" + }, + "searchSends": { + "message": "Søg Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Denne Send er beskyttet med en adgangskode. Indtast adgangskoden nedenfor for at fortsætte.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Kender du ikke adgangskoden? Bed afsenderen om den nødvendige adgangskode for at få adgang til denne Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Denne Send er som standard skjult. Du kan skifte synlighed ved hjælp af knappen nedenfor.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download fil" + }, + "sendAccessUnavailable": { + "message": "Den Send, du forsøger at tilgå, findes ikke eller er ikke længere tilgængelig.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Filen, der er knyttet til denne Send, blev ikke fundet.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Der er ingen Send at vise.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Nødadgang" + }, + "emergencyAccessDesc": { + "message": "Tildel og håndtér nødadgang for betroede kontakter. Betroede kontakter kan anmode om adgang til enten at se eller overtage din konto i nødstilfælde. Besøg vores hjælpeside for mere information og detaljer om, hvordan nul-videndeling fungerer." + }, + "emergencyAccessOwnerWarning": { + "message": "Du er ejer af en eller flere organisationer. Hvis du tildeler overtagelsesadgang til en nødkontakt, kan de bruge alle dine tilladelser som ejer efter en overtagelse." + }, + "trustedEmergencyContacts": { + "message": "Betroede nødkontakter" + }, + "noTrustedContacts": { + "message": "Du har endnu ikke tilføjet nødkontakter. Invitér en betroet kontakt for at komme i gang." + }, + "addEmergencyContact": { + "message": "Tilføj nødkontakt" + }, + "designatedEmergencyContacts": { + "message": "Udpeget som nødkontakt" + }, + "noGrantedAccess": { + "message": "Du er endnu ikke blevet udpeget som en nødkontakt for nogen." + }, + "inviteEmergencyContact": { + "message": "Invitér nødkontakt" + }, + "editEmergencyContact": { + "message": "Redigér nødkontakt" + }, + "inviteEmergencyContactDesc": { + "message": "Invitér en ny nødkontakt ved at angive e-mailadressen på vedkommendes Bitwarden-konto nedenfor. Har vedkommende ikke allerede en Bitwarden-konto, anmoders vedkommende om at oprette én." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Nødadgang igangsat" + }, + "emergencyAccessRecoveryApproved": { + "message": "Nødadgang godkendt" + }, + "viewDesc": { + "message": "Kan se alle elementer i din egen boks." + }, + "takeover": { + "message": "Overtagelse" + }, + "takeoverDesc": { + "message": "Kan nulstille din konto med en ny hovedadgangskode." + }, + "waitTime": { + "message": "Ventetid" + }, + "waitTimeDesc": { + "message": "Tid krævet inden automatisk adgangstildeling." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dage", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Inviteret bruger." + }, + "acceptEmergencyAccess": { + "message": "Du er inviteret som nødadgangskontakt for ovenfor anførte bruger. For at acceptere invitationen, så log først ind eller opret en ny Bitwarden-konto." + }, + "emergencyInviteAcceptFailed": { + "message": "Kan ikke acceptere invitation. Bed brugeren sende en ny invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Kan ikke acceptere invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Du kan tilgå nødindstillingerne for denne bruger, når din identitet er bekræftet. En e-mail sendes til dig, når det sker." + }, + "requestAccess": { + "message": "Anmod om adgang" + }, + "requestAccessConfirmation": { + "message": "Er du sikker på, at du vil anmode om nødadgang? Du vil opnå adgang efter $WAITTIME$ dag(e) eller når brugeren godkender anmodningen.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Nødadgang udbedt for $USER$. Du får besked via e-mail, når det er muligt at fortsætte.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Godkend" + }, + "reject": { + "message": "Afvis" + }, + "approveAccessConfirmation": { + "message": "Er du sikker på, at du vil godkende nødadgang? Dette vil tillade $USER$ at $ACTION$ din konto.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Nødadgang godkendt." + }, + "emergencyRejected": { + "message": "Nødadgang afvist" + }, + "passwordResetFor": { + "message": "Adgangskode nulstillet for $USER$. Du kan nu logge ind med den nye adgangskode.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personligt ejerskab" + }, + "personalOwnershipPolicyDesc": { + "message": "Kræv at brugere gemmer boks-elementer til en organisation ved at fjerne den personlige ejerskabsmulighed." + }, + "personalOwnershipExemption": { + "message": "Organisationsejere og administratorer er undtaget fra denne politik." + }, + "personalOwnershipSubmitError": { + "message": "Grundet en virksomhedspolitik kan du ikke gemme emner i din personlige boks. Skift ejerskabsindstillingen til en organisation, og vælg fra de tilgængelige samlinger." + }, + "disableSend": { + "message": "Deaktivér Send" + }, + "disableSendPolicyDesc": { + "message": "Tillad ikke brugere at oprette eller redigere en Bitwarden Send. Sletning af en eksisterende Send er stadig tilladt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organisationsbrugere, der kan håndtere organisationens politikker, er undtaget fra denne politiks håndhævelse." + }, + "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." + }, + "sendOptions": { + "message": "Send-valgmuligheder", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Angiv valg for oprettelse og redigering af Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organisationsbrugere, som kan håndtere organisationens politikker, er undtaget fra denne politiks håndhævelse." + }, + "disableHideEmail": { + "message": "Tillad ikke brugere at skjule deres e-mailadresse for modtagere når en Send oprettes eller redigeres.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Følgende organisationspolitikker er i øjeblikket gældende:" + }, + "sendDisableHideEmailInEffect": { + "message": "Brugere har ikke lov til at skjule deres e-mailadresser for modtagere når en Send oprettes eller redigeres.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Redigerede politik $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Abonnementspris" + }, + "estimatedTax": { + "message": "Anslået moms" + }, + "custom": { + "message": "Tilpasset" + }, + "customDesc": { + "message": "Tillader mere granulær kontrol af brugertilladelser for avancerede opsætninger." + }, + "permissions": { + "message": "Tilladelser" + }, + "accessEventLogs": { + "message": "Tilgå begivenhedslogger" + }, + "accessImportExport": { + "message": "Tilgå import/eksport" + }, + "accessReports": { + "message": "Tilgå rapporter" + }, + "missingPermissions": { + "message": "Du mangler de nødvendige tilladelser til at udføre denne handling." + }, + "manageAllCollections": { + "message": "Håndtér alle samlinger" + }, + "createNewCollections": { + "message": "Opret nye samlinger" + }, + "editAnyCollection": { + "message": "Redigér en samling" + }, + "deleteAnyCollection": { + "message": "Slet en samling" + }, + "manageAssignedCollections": { + "message": "Håndtér tildelte samlinger" + }, + "editAssignedCollections": { + "message": "Redigér tildelte samlinger" + }, + "deleteAssignedCollections": { + "message": "Slet tildelte samlinger" + }, + "manageGroups": { + "message": "Håndtér grupper" + }, + "managePolicies": { + "message": "Håndtér politikker" + }, + "manageSso": { + "message": "Håndtér SSO" + }, + "manageUsers": { + "message": "Håndtér brugere" + }, + "manageResetPassword": { + "message": "Håndtér nulstilling af adgangskode" + }, + "disableRequiredError": { + "message": "Du skal manuelt deaktivere $POLICYNAME$-politikken, før denne politik kan deaktiveres.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "En organisationspolitik påvirker dine ejerskabsmuligheder." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "En organisationspolitik har deaktiveret import af emner til din personlige boks." + }, + "personalOwnershipCheckboxDesc": { + "message": "Deaktivér personligt ejerskab for organisationsbrugere" + }, + "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." + }, + "sendNameDesc": { + "message": "Et venligt navn til at beskrive denne 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." + }, + "copySendLinkOnSave": { + "message": "Kopier linket for at dele denne Send til min udklipsholder ved gem." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send overfører nemt og sikkert følsomme, midlertidige oplysninger til andre.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Få mere at vide om", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Del tekst eller filer direkte med nogen." + }, + "sendVaultCardLearnMore": { + "message": "Få mere at vide", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "se", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "hvordan det fungerer", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "eller", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "prøv det nu", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "eller", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "tilmeld dig", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "for at prøve det i dag.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden bruger $USER_IDENTIFIER$ delte følgende med dig", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Bitwarden-brugeren, der oprettede denne Send, har valgt at skjule sin e-mailadresse. Du bør sikre dig, at du stoler på kilden til dette link, inden du bruger eller downloader dets indhold.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Den angivne udløbsdato er ugyldig." + }, + "deletionDateIsInvalid": { + "message": "Den angivne sletningsdato er ugyldig." + }, + "expirationDateAndTimeRequired": { + "message": "Der kræves en udløbsdato og -tid." + }, + "deletionDateAndTimeRequired": { + "message": "En sletningsdato og -tid er påkrævet." + }, + "dateParsingError": { + "message": "Der opstod en fejl under forsøget på at gemme dine sletnings- og udløbsdatoer." + }, + "webAuthnFallbackMsg": { + "message": "Klik på knappen nedenfor for at bekræfte din 2FA." + }, + "webAuthnAuthenticate": { + "message": "Godkend WebAuthn" + }, + "webAuthnNotSupported": { + "message": "Denne browser understøtter ikke WebAuthn." + }, + "webAuthnSuccess": { + "message": "WebAuthn bekræftet Du kan lukke denne fane." + }, + "hintEqualsPassword": { + "message": "Dit kodeordstip må ikke være identisk med din adgangskode." + }, + "enrollPasswordReset": { + "message": "Tilmeld til Adgangskodenulstilling" + }, + "enrolledPasswordReset": { + "message": "Tilmeldt Adgangskodenulstilling" + }, + "withdrawPasswordReset": { + "message": "Afmeld fra Adgangskodenulstilling" + }, + "enrollPasswordResetSuccess": { + "message": "Tilmelding lykkedes!" + }, + "withdrawPasswordResetSuccess": { + "message": "Afmelding lykkedes!" + }, + "eventEnrollPasswordReset": { + "message": "Bruger $ID$ tilmeldt hjælp til nulstilling af adgangskode.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Bruger $ID$ afmeldt hjælp til nulstilling af adgangskode.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Hovedadgangskode nulstillet for bruger $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Nulstil SSO-link for bruger $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ loggede ind med SSO for første gang", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Nulstil adgangskode" + }, + "resetPasswordLoggedOutWarning": { + "message": "Ved at fortsætte logges $NAME$ ud af sin nuværende session, hvilket kræver, at vedkommende logger ind igen. Aktive sessioner på andre enheder forbliver muligvis aktive i op til en time.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "denne bruger" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Én eller flere organisationspolitikker kræver, at hovedadgangskoden opfylder følgende krav:" + }, + "resetPasswordSuccess": { + "message": "Adgangskode nulstillet!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Indrullering vil tillade organisationsadministratorer at ændre din hovedadgangskode. Er du sikker på, at du vil indrullere dig?" + }, + "resetPasswordPolicy": { + "message": "Nulstil hovedadgangskode" + }, + "resetPasswordPolicyDescription": { + "message": "Tillad administratorer i organisationen at nulstille organisationsbrugeres hovedadgangskode." + }, + "resetPasswordPolicyWarning": { + "message": "Brugere i organisationen skal selvindrullere eller være auto-indrulleret, før administratorer kan nulstille deres hovedadgangskode." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Auto-indrullering" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Alle brugere vil automatisk blive tilmeldt adgangskodenulstilling, når deres invitation er accepteret og vil ikke have lov til at afmelde sig." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Brugere, som allerede er i organisationen, opsættes ikke med tilbagevirkende kraft til adgangskodenulstilling. De skal selvindrullere, før administratorer kan nulstille deres hovedadgangskode." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Kræv at nye brugere automatisk indrulleres" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Denne organisation har en virksomhedspolitik, der auto-opsætter dig til adgangskodenulstilling. Opsætningen giver organisationsadministratorer mulighed for at ændre din hovedadgangskode." + }, + "resetPasswordOrgKeysError": { + "message": "Organisationsnøgler svar er null" + }, + "resetPasswordDetailsError": { + "message": "Nulstil adgangskode detaljer svar er null" + }, + "trashCleanupWarning": { + "message": "Elementer, som har været i papirkurven i mere end 30 dage, slettes automatisk." + }, + "trashCleanupWarningSelfHosted": { + "message": "Elementer, som har været i papirkurven i et stykke tid, slettes automatisk." + }, + "passwordPrompt": { + "message": "Genanmodning om hovedadgangskode" + }, + "passwordConfirmation": { + "message": "Bekræftelse af hovedadgangskode" + }, + "passwordConfirmationDesc": { + "message": "Denne handling er beskyttet. For at fortsætte, angiv din hovedadgangskode igen for at bekræfte din identitet." + }, + "reinviteSelected": { + "message": "Gensend invitationer" + }, + "noSelectedUsersApplicable": { + "message": "Denne handling er ikke anvendelig for nogen af de valgte brugere." + }, + "removeUsersWarning": { + "message": "Er du sikker på, at du vil fjerne følgende brugere? Processen kan tage et par sekunder at fuldføre og kan ikke afbrydes eller annulleres." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Vælg et tema til din webboks." + }, + "themeSystem": { + "message": "Benyt systemtema" + }, + "themeDark": { + "message": "Mørkt" + }, + "themeLight": { + "message": "Lyst" + }, + "confirmSelected": { + "message": "Bekræft valgte" + }, + "bulkConfirmStatus": { + "message": "Status for massehandling" + }, + "bulkConfirmMessage": { + "message": "Bekræftet med succes." + }, + "bulkReinviteMessage": { + "message": "Geninviteret med succes." + }, + "bulkRemovedMessage": { + "message": "Fjernet med succes" + }, + "bulkFilteredMessage": { + "message": "Udelukket, ikke anvendeligt til denne handling." + }, + "fingerprint": { + "message": "Fingeraftryk" + }, + "removeUsers": { + "message": "Fjern brugere" + }, + "error": { + "message": "Fejl" + }, + "resetPasswordManageUsers": { + "message": "Administrér brugere skal også være aktiveret med tilladelsen Håndtér adgangskodenulstilling" + }, + "setupProvider": { + "message": "Udbyderopsætning" + }, + "setupProviderLoginDesc": { + "message": "Du er blevet inviteret til at oprette en ny udbyder. For at fortsætte skal du logge ind eller oprette en ny Bitwarden-konto." + }, + "setupProviderDesc": { + "message": "Angiv venligst nedenstående oplysninger for at fuldføre udbyderopsætningen. Kontakt kundesupport, hvis du har spørgsmål." + }, + "providerName": { + "message": "Udbydernavn" + }, + "providerSetup": { + "message": "Udbyderen er nu opsat." + }, + "clients": { + "message": "Klienter" + }, + "providerAdmin": { + "message": "Udbyder admin" + }, + "providerAdminDesc": { + "message": "Brugeren med den højeste adgang, der kan håndtere alle aspekter af din udbyder samt tilgå og håndtere klientorganisationer." + }, + "serviceUser": { + "message": "Servicebruger" + }, + "serviceUserDesc": { + "message": "Servicebrugere kan få adgang til samt administrere alle klientorganisationer." + }, + "providerInviteUserDesc": { + "message": "Invitér en ny bruger til din udbyder ved at angive deres Bitwarden-konto e-mailadresse nedenfor. Hvis de ikke allerede har en Bitwarden-konto, bliver de bedt om at oprette en ny konto." + }, + "joinProvider": { + "message": "Tilmeld dig udbyder" + }, + "joinProviderDesc": { + "message": "Du er blevet inviteret til at tilmelde dig udbyderen ovenfor. For at acceptere invitationen skal du logge ind eller oprette en ny Bitwarden-konto." + }, + "providerInviteAcceptFailed": { + "message": "Kan ikke acceptere invitationen. Bed en udbyder-admin om at sende en ny invitation." + }, + "providerInviteAcceptedDesc": { + "message": "Du kan få adgang til denne udbyder, når en administrator bekræfter dit medlemskab. Vi sender dig en e-mail, når det sker." + }, + "providerUsersNeedConfirmed": { + "message": "Du har brugere, der har accepteret deres invitation, men som stadig skal bekræftes. Brugere vil ikke have adgang til udbyderen, før de er bekræftet." + }, + "provider": { + "message": "Udbyder" + }, + "newClientOrganization": { + "message": "Ny klientorganisation" + }, + "newClientOrganizationDesc": { + "message": "Opret en ny klientorganisation, der vil blive knyttet til dig som udbyder. Du vil kunne tilgå og håndtere denne organisation." + }, + "addExistingOrganization": { + "message": "Tilføj eksisterende organisation" + }, + "myProvider": { + "message": "Min udbyder" + }, + "addOrganizationConfirmation": { + "message": "Er du sikker på, at du vil tilføje $ORGANIZATION$ som klient til $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organisation blev tilføjet udbyderen" + }, + "accessingUsingProvider": { + "message": "Tilgår organisation ved hjælp af udbyderen $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Udbyder er deaktiveret." + }, + "providerUpdated": { + "message": "Udbyder opdateret" + }, + "yourProviderIs": { + "message": "Din udbyder er $PROVIDER$. De har administrative- og faktureringsrettigheder for din organisation.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Organisationen $ORGANIZATION$ er blevet frigjort fra din udbyder.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Er du sikker på, at du vil frigøre denne organisation? Organisationen vil fortsætte med at eksistere, men vil ikke længere blive håndteret af udbyderen." + }, + "add": { + "message": "Tilføj" + }, + "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." + }, + "masterPasswordInvalidWarning": { + "message": "Din hovedadgangskode opfylder ikke organisationspolitikken. For at blive medlem af organisationen skal du opdatere din hovedadgangskode først. Hvis du fortsætter, logges du ud af din aktuelle session, hvilket kræver, at du logger ind igen. Aktive sessioner på andre enheder kan fortsat være aktive i op til én time." + }, + "maximumVaultTimeout": { + "message": "Boks-timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Opsæt en maksimal boks-timeout for alle brugere." + }, + "maximumVaultTimeoutLabel": { + "message": "Maksimal boks-timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Ugyldig maksimal boks-timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Tilpasset boks-timeout" + }, + "vaultTimeoutToLarge": { + "message": "Din boks-timeout overskrider den begrænsning, der er fastsat af din organisation." + }, + "disablePersonalVaultExport": { + "message": "Deaktivér eksport af personlig boks" + }, + "disablePersonalVaultExportDesc": { + "message": "Forbyder brugere at eksportere deres private boksdata." + }, + "vaultExportDisabled": { + "message": "Bokseksport deaktiveret" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flere organisationspolitikker forhindrer dig i at eksportere din personlige boks." + }, + "selectType": { + "message": "Vælg SSO-type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID-forbindelsesopsætning" + }, + "samlSpConfig": { + "message": "SAML-tjenesteudbyderopsætning" + }, + "samlIdpConfig": { + "message": "SAML-identitetsudbyderopsætning" + }, + "callbackPath": { + "message": "Callback-sti" + }, + "signedOutCallbackPath": { + "message": "Udlogget Callback-sti" + }, + "authority": { + "message": "Myndighed" + }, + "clientId": { + "message": "Klient-ID" + }, + "clientSecret": { + "message": "Klienthemmelighed" + }, + "metadataAddress": { + "message": "Metadataadresse" + }, + "oidcRedirectBehavior": { + "message": "OIDC-omdirigeringsadfærd" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Hent claims fra endpoint for brugeroplysninger" + }, + "additionalScopes": { + "message": "Brugerdefinerede omfang" + }, + "additionalUserIdClaimTypes": { + "message": "Tilpassede bruger-id claim-typer" + }, + "additionalEmailClaimTypes": { + "message": "E-mail claim-typer" + }, + "additionalNameClaimTypes": { + "message": "Tilpassede navne-claimtyper" + }, + "acrValues": { + "message": "Anmodet godkendelseskontekst klassereferenceværdier" + }, + "expectedReturnAcrValue": { + "message": "Forventet \"acr\"-claimværdi i svar" + }, + "spEntityId": { + "message": "SP Enheds-ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata-URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Navne-ID format" + }, + "spOutboundSigningAlgorithm": { + "message": "Udgående signeringsalgoritme" + }, + "spSigningBehavior": { + "message": "Signeringsadfærd" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum indgående signeringsalgoritme" + }, + "spWantAssertionsSigned": { + "message": "Forvent signerede assertions" + }, + "spValidateCertificates": { + "message": "Validér certifikater" + }, + "idpEntityId": { + "message": "Enheds-ID" + }, + "idpBindingType": { + "message": "Bindingstype" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign-On tjeneste URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out-tjeneste URL" + }, + "idpX509PublicCert": { + "message": "X509 offentligt certifikat" + }, + "idpOutboundSigningAlgorithm": { + "message": "Udgående signeringsalgoritme" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Tillad uopfordret godkendelsessvar" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Tillad udgående logout-anmodninger" + }, + "idpSignAuthenticationRequests": { + "message": "Signér godkendelsesanmodninger" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On opsætning blev gemt." + }, + "sponsoredFamilies": { + "message": "Gratis Bitwarden Familier" + }, + "sponsoredFamiliesEligible": { + "message": "Du og din familie er berettiget til gratis Bitwarden Familier. Indløs med din personlige e-mail for at holde dine data sikre, selv når du ikke er på arbejde." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Indløs dit gratis Bitwarden til Familier-abonnement i dag for at sikre dine data, selv når du ikke er på arbejde." + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden til Familier-abonnementet omfatter" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium-adgang for op til 6 brugere" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Delte samlinger til Familiehemmeligheder" + }, + "badToken": { + "message": "Linket er ikke længere gyldigt. Bed sponsoren sende et nyt tilbud." + }, + "reclaimedFreePlan": { + "message": "Konvertér til gratis abonnement" + }, + "redeem": { + "message": "Indløs" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Vælg den organisation, du gerne vil have sponsoreret" + }, + "familiesSponsoringOrgSelect": { + "message": "Hvilket gratis Familier-tilbud vil du gerne indløse?" + }, + "sponsoredFamiliesEmail": { + "message": "Angiv din personlige e-mail for at indløse Bitwarden Familier" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Forlader eller fjernes du fra sponsororganisationen, udløber dit Familier-abonnement ved faktureringsperiodens udløb." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Acceptér tilbud for en eksisterende organisation, eller opret en ny Familier-organisation." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Du er blevet tilbudt en gratis Bitwarden Familier-abonnement organisation. For at fortsætte skal du logge ind på den konto, der modtog tilbuddet." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Tilbuddet kan ikke accepteres. Gensend venligst tilbudsmailen fra din virksomhedskonto, og forsøg igen." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Kan ikke acceptere tilbud. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Acceptér gratis Bitwarden Familier" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Gratis Bitwarden Familier-tilbud er blevet indløst" + }, + "redeemed": { + "message": "Indløst" + }, + "redeemedAccount": { + "message": "Indløst konto" + }, + "revokeAccount": { + "message": "Ophæv kontoen $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Gensend sponsorat-e-mail til $NAME$ sponsorat", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Gratis Familier-abonnement" + }, + "redeemNow": { + "message": "Indløs nu" + }, + "recipient": { + "message": "Modtager" + }, + "removeSponsorship": { + "message": "Fjern sponsorat" + }, + "removeSponsorshipConfirmation": { + "message": "Efter at have fjernet et sponsorat, vil du være ansvarlig for dette abonnement og relaterede fakturaer. Er du sikker på, at du vil fortsætte?" + }, + "sponsorshipCreated": { + "message": "Sponsorat oprettet" + }, + "revoke": { + "message": "Tilbagekald" + }, + "emailSent": { + "message": "E-mail sendt" + }, + "revokeSponsorshipConfirmation": { + "message": "Efter at have fjernet denne konto, vil Familier-organisationens ejer være ansvarlig for dette abonnement og relaterede fakturaer. Er du sikker på, at du vil fortsætte?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsoratet fjernet" + }, + "ssoKeyConnectorUnavailable": { + "message": "Kan ikke kontakte Key Connector, forsøg igen senere." + }, + "keyConnectorUrl": { + "message": "Key Connector-URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Fjern hovedadgangskode" + }, + "removedMasterPassword": { + "message": "Hovedadgangskode fjernet." + }, + "allowSso": { + "message": "Tillad SSO-godkendelse" + }, + "allowSsoDesc": { + "message": "Når den er indstillet, vil din konfiguration blive gemt, og medlemmer vil være i stand til at autentificere ved hjælp af deres identitetsudbyder-akkreditiver." + }, + "ssoPolicyHelpStart": { + "message": "Aktivér", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO-godkendelsespolitik", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "for at kræve, at alle medlemmer logger ind med SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO-godkendelse og Enkel organisation-politikker er påkrævet for at konfigurere Key Connector-dekryptering." + }, + "memberDecryptionOption": { + "message": "Medlemsdekrypteringsindstillinger" + }, + "memberDecryptionPassDesc": { + "message": "Når godkendt, dekrypterer medlemmer boks-data ved hjælp af deres hovedadgangskode." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Forbind Login med SSO til din selv-hostede dekrypteringsnøgleserver. Ved at bruge denne mulighed behøver medlemmer ikke at bruge deres hovedadgangskoder til at dekryptere boksdata. Kontakt Bitwarden support for at få hjælp til opsætning." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login med SSO og Key Connector-dekryptering\" er aktiveret. Denne politik omfatter kun ejere og Admins." + }, + "enabledSso": { + "message": "SSO aktiveret" + }, + "disabledSso": { + "message": "SSO deaktiveret" + }, + "enabledKeyConnector": { + "message": "Key Connector aktiveret" + }, + "disabledKeyConnector": { + "message": "Key Connector deaktiveret" + }, + "keyConnectorWarning": { + "message": "Når medlemmer begynder at bruge Key Connector, kan din organisation ikke vende tilbage til hovedadgangskode-dekryptering. Fortsæt kun, hvis du er fortrolig med at implementere og administrere en nøgleserver." + }, + "migratedKeyConnector": { + "message": "Migreret til Key Connector" + }, + "paymentSponsored": { + "message": "Angiv en betalingsmetode der skal tilknyttes organisationen. Bare rolig, vi vil ikke opkræve dig noget, medmindre du vælger yderligere funktioner, eller dit sponsorat udløber." + }, + "orgCreatedSponsorshipInvalid": { + "message": "Sponsortilbuddet er udløbet. Du kan slette den organisation, du har oprettet, for at undgå en opkrævning ved udløbet af din 7-dages prøveperiode. Ellers kan du lukke denne prompt for at beholde organisationen og påtage dig faktureringsansvaret." + }, + "newFamiliesOrganization": { + "message": "Ny Familier-organisation" + }, + "acceptOffer": { + "message": "Acceptér tilbud" + }, + "sponsoringOrg": { + "message": "Sponsorerende organisation" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Succes! Key Connector nået." + }, + "keyConnectorTestFail": { + "message": "Key Connector kan ikke nås. Tjek URL'en." + }, + "sponsorshipTokenHasExpired": { + "message": "Sponsortilbuddet er udløbet." + }, + "freeWithSponsorship": { + "message": "GRATIS med sponsorat" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ felter ovenfor kræver din opmærksomhed.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 felt ovenfor kræver din opmærksomhed." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ er påkrævet.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "krævet" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Krævet, hvis enheds-id ikke er en URL." + }, + "openIdOptionalCustomizations": { + "message": "Valgfrie tilpasninger" + }, + "openIdAuthorityRequired": { + "message": "Påkrævet, hvis autoriteten ikke er gyldig." + }, + "separateMultipleWithComma": { + "message": "Adskil flere med et komma." + }, + "sessionTimeout": { + "message": "Din session er udløbet. Gå tilbage og prøv at logge ind igen." + }, + "exportingPersonalVaultTitle": { + "message": "Eksporterer personlig boks" + }, + "exportingOrganizationVaultTitle": { + "message": "Eksporterer organisationsboks" + }, + "exportingPersonalVaultDescription": { + "message": "Kun de personlige bokselementer tilknyttet $EMAIL$ eksporteres. Organisationsbokseelementer medtages ikke.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Kun organisationsboksen tilknyttet $ORGANIZATION$ eksporteres. Personlige bokseelementer, samt elementer fra andre organisationer, medtages ikke.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "Hvad vil du generere?" + }, + "passwordType": { + "message": "Adgangskodetype" + }, + "regenerateUsername": { + "message": "Regenerér brugernavn" + }, + "generateUsername": { + "message": "Generér brugernavn" + }, + "usernameType": { + "message": "Brugernavnstype" + }, + "plusAddressedEmail": { + "message": "Plus adresseret e-mail", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Brug e-mailudbyderens underadresseringsmuligheder." + }, + "catchallEmail": { + "message": "Fang-alle e-mail" + }, + "catchallEmailDesc": { + "message": "Brug den for domænet opsatte Fang-alle indbakke." + }, + "random": { + "message": "Tilfældig" + }, + "randomWord": { + "message": "Tilfældigt ord" + }, + "service": { + "message": "Tjeneste" + } +} diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json new file mode 100644 index 0000000000..1a8c8b4ca8 --- /dev/null +++ b/apps/web/src/locales/de/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web-Tresor", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Um welche Art von Eintrag handelt es sich hierbei?" + }, + "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": "Benutzername" + }, + "password": { + "message": "Passwort" + }, + "newPassword": { + "message": "Neues Passwort" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "Notizen" + }, + "customFields": { + "message": "Benutzerdefinierte Felder" + }, + "cardholderName": { + "message": "Name des Karteninhabers" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Marke" + }, + "expiration": { + "message": "Ablaufdatum" + }, + "securityCode": { + "message": "Kartenprüfnummer (CVV)" + }, + "identityName": { + "message": "Identitätsname" + }, + "company": { + "message": "Firma" + }, + "ssn": { + "message": "Sozialversicherungsnummer" + }, + "passportNumber": { + "message": "Reisepassnummer" + }, + "licenseNumber": { + "message": "Lizenznummer" + }, + "email": { + "message": "E-Mail" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Frau" + }, + "ms": { + "message": "Fr." + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Ablaufmonat" + }, + "expirationYear": { + "message": "Ablaufjahr" + }, + "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": "Boolescher Wert" + }, + "cfTypeLinked": { + "message": "Verknüpft", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Entfernen" + }, + "unassigned": { + "message": "Nicht zugeordnet" + }, + "noneFolder": { + "message": "Kein Ordner", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Ordner hinzufügen" + }, + "editFolder": { + "message": "Ordner bearbeiten" + }, + "baseDomain": { + "message": "Basisdomäne", + "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": "Genau" + }, + "startsWith": { + "message": "Beginnt mit" + }, + "regEx": { + "message": "Regulärer Ausdruck", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Übereinstimmungserkennung", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Standard Übereinstimmungserkennung", + "description": "Default URI match detection for auto-fill." + }, + "never": { + "message": "Niemals" + }, + "toggleVisibility": { + "message": "Sichtbarkeit umschalten" + }, + "toggleCollapse": { + "message": "Sammlung ein- / ausklappen", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Passwort generieren" + }, + "checkPassword": { + "message": "Überprüfen ob ihr Kennwort kompromittiert ist." + }, + "passwordExposed": { + "message": "Dieses Kennwort wurde $VALUE$ -mal in öffentlichen Passwortdatenbanken gefunden. Sie sollten es ändern.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Dieses Kennwort wurde in keinen bekannten Datendiebstählen gefunden. Es sollte sicher sein." + }, + "save": { + "message": "Speichern" + }, + "cancel": { + "message": "Abbrechen" + }, + "canceled": { + "message": "Abgebrochen" + }, + "close": { + "message": "Schließen" + }, + "delete": { + "message": "Löschen" + }, + "favorite": { + "message": "Favorit" + }, + "unfavorite": { + "message": "Aus Favoriten entfernen" + }, + "edit": { + "message": "Bearbeiten" + }, + "searchCollection": { + "message": "Sammlung durchsuchen" + }, + "searchFolder": { + "message": "Ordner durchsuchen" + }, + "searchFavorites": { + "message": "Favoriten durchsuchen" + }, + "searchType": { + "message": "Suchmodus", + "description": "Search item type" + }, + "searchVault": { + "message": "Tresor durchsuchen" + }, + "allItems": { + "message": "Alle Einträge" + }, + "favorites": { + "message": "Favoriten" + }, + "types": { + "message": "Typen" + }, + "typeLogin": { + "message": "Anmeldung" + }, + "typeCard": { + "message": "Karte" + }, + "typeIdentity": { + "message": "Identität" + }, + "typeSecureNote": { + "message": "Sichere Notiz" + }, + "typeLoginPlural": { + "message": "Zugangsdaten" + }, + "typeCardPlural": { + "message": "Karten" + }, + "typeIdentityPlural": { + "message": "Identitäten" + }, + "typeSecureNotePlural": { + "message": "Sichere Notizen" + }, + "folders": { + "message": "Ordner" + }, + "collections": { + "message": "Sammlungen" + }, + "firstName": { + "message": "Vorname" + }, + "middleName": { + "message": "Zweitname" + }, + "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" + }, + "shared": { + "message": "Geteilt" + }, + "attachments": { + "message": "Anhänge" + }, + "select": { + "message": "Auswählen" + }, + "addItem": { + "message": "Eintrag hinzufügen" + }, + "editItem": { + "message": "Eintrag bearbeiten" + }, + "viewItem": { + "message": "Eintrag anzeigen" + }, + "ex": { + "message": "Bsp.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Sonstiges" + }, + "share": { + "message": "Teilen" + }, + "moveToOrganization": { + "message": "In Organisation verschieben" + }, + "valueCopied": { + "message": "$VALUE$ kopiert", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Wert kopieren", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Passwort kopieren", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Benutzernamen kopieren", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Nummer kopieren", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Sicherheitscode kopieren", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "URI kopieren", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mein Tresor" + }, + "vault": { + "message": "Tresor" + }, + "moveSelectedToOrg": { + "message": "Auswahl zur Organisation verschieben" + }, + "deleteSelected": { + "message": "Auswahl löschen" + }, + "moveSelected": { + "message": "Auswahl verschieben" + }, + "selectAll": { + "message": "Alle auswählen" + }, + "unselectAll": { + "message": "Alle abwählen" + }, + "launch": { + "message": "Starten" + }, + "newAttachment": { + "message": "Neuen Anhang hinzufügen" + }, + "deletedAttachment": { + "message": "Gelöschter Anhang" + }, + "deleteAttachmentConfirmation": { + "message": "Möchten Sie diesen Anhang wirklich löschen?" + }, + "attachmentSaved": { + "message": "Der Anhang wurde gespeichert." + }, + "file": { + "message": "Datei" + }, + "selectFile": { + "message": "Wähle eine Datei." + }, + "maxFileSize": { + "message": "Die maximale Dateigröße beträgt 500 MB." + }, + "updateKey": { + "message": "Sie können diese Funktion nicht nutzen, bevor Sie Ihren Verschlüsselungscode aktualisiert haben." + }, + "addedItem": { + "message": "Eintrag hinzugefügt" + }, + "editedItem": { + "message": "Eintrag bearbeitet" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ verschoben nach $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Ausgewählte Einträge nach $ORGNAME$ verschoben", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Eintrag löschen" + }, + "deleteFolder": { + "message": "Ordner löschen" + }, + "deleteAttachment": { + "message": "Anhang löschen" + }, + "deleteItemConfirmation": { + "message": "Soll dieser Eintrag wirklich gelöscht werden?" + }, + "deletedItem": { + "message": "Element gelöscht" + }, + "deletedItems": { + "message": "Elemente gelöscht" + }, + "movedItems": { + "message": "Verschobene Einträge" + }, + "overwritePasswordConfirmation": { + "message": "Sind Sie sicher, dass Sie das aktuelle Passwort überschreiben möchten?" + }, + "editedFolder": { + "message": "Ordner bearbeitet" + }, + "addedFolder": { + "message": "Ordner hinzugefügt" + }, + "deleteFolderConfirmation": { + "message": "Soll dieser Ordner wirklich gelöscht werden?" + }, + "deletedFolder": { + "message": "Ordner gelöscht" + }, + "loggedOut": { + "message": "Ausgeloggt" + }, + "loginExpired": { + "message": "Ihre Anmeldungsitzung ist abgelaufen." + }, + "logOutConfirmation": { + "message": "Wollen Sie sich wirklich abmelden?" + }, + "logOut": { + "message": "Abmelden" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nein" + }, + "loginOrCreateNewAccount": { + "message": "Sie müssen sich anmelden oder ein neues Konto erstellen, um auf den Tresor zugreifen zu können." + }, + "createAccount": { + "message": "Konto erstellen" + }, + "logIn": { + "message": "Anmelden" + }, + "submit": { + "message": "Absenden" + }, + "emailAddressDesc": { + "message": "Verwenden Sie Ihre E-Mail-Adresse zur Anmeldung." + }, + "yourName": { + "message": "Ihr Name" + }, + "yourNameDesc": { + "message": "Wie sollen wir Sie nennen?" + }, + "masterPass": { + "message": "Master-Passwort" + }, + "masterPassDesc": { + "message": "Das Master-Passwort wird verwendet, um den Tresor zu öffnen. Es ist sehr wichtig, dass Sie das Passwort nicht vergessen, da es keine Möglichkeit gibt es zurückzusetzen." + }, + "masterPassHintDesc": { + "message": "Ein Master-Passwort-Hinweis kann Ihnen helfen, sich an das Passwort zu erinnern, wenn Sie es vergessen haben sollten." + }, + "reTypeMasterPass": { + "message": "Master-Passwort wiederholen" + }, + "masterPassHint": { + "message": "Master-Passwort-Hinweis (optional)" + }, + "masterPassHintLabel": { + "message": "Master-Passwort-Hinweis" + }, + "settings": { + "message": "Einstellungen" + }, + "passwordHint": { + "message": "Passwort-Hinweis" + }, + "enterEmailToGetHint": { + "message": "Geben Sie die E-Mail Adresse Ihres Kontos ein, um einen Hinweis auf ihr Master-Passwort zu erhalten." + }, + "getMasterPasswordHint": { + "message": "Hinweis zum Master-Passwort erhalten" + }, + "emailRequired": { + "message": "Die E-Mail Adresse wird benötigt." + }, + "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": "Master-Passwort-Bestätigung stimmt nicht überein." + }, + "newAccountCreated": { + "message": "Ihr neues Konto wurde erstellt! Sie können sich jetzt anmelden." + }, + "masterPassSent": { + "message": "Wir haben Ihnen eine E-Mail mit dem Master-Passwort-Hinweis zu gesendet." + }, + "unexpectedError": { + "message": "Ein unerwarteter Fehler ist aufgetreten." + }, + "emailAddress": { + "message": "E-Mail-Adresse" + }, + "yourVaultIsLocked": { + "message": "Ihr Tresor ist gesperrt. Überprüfen Sie Ihr Master-Passwort um fortzufahren." + }, + "unlock": { + "message": "Entsperren" + }, + "loggedInAsEmailOn": { + "message": "Angemeldet als $EMAIL$ auf $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ungültiges Master-Passwort" + }, + "lockNow": { + "message": "Jetzt sperren" + }, + "noItemsInList": { + "message": "Keine Einträge vorhanden." + }, + "noCollectionsInList": { + "message": "Keine Sammlungen vorhanden." + }, + "noGroupsInList": { + "message": "Keine Gruppen vorhanden." + }, + "noUsersInList": { + "message": "Keine Benutzer vorhanden." + }, + "noEventsInList": { + "message": "Keine Ereignisse vorhanden." + }, + "newOrganization": { + "message": "Neue Organisation" + }, + "noOrganizationsList": { + "message": "Sie gehören keiner Organisation an. Organisationen erlauben es Ihnen Passwörter sicher mit anderen zu teilen." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Geben Sie den 6-stelligen Verifizierungscode aus Ihrer Authentifizierungs-App ein." + }, + "enterVerificationCodeEmail": { + "message": "Geben Sie den 6-stelligen Verifizierungscode der an $EMAIL$ gesendet wurde an.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Bestätigungsmail wurde an $EMAIL$ gesendet.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Angemeldet bleiben" + }, + "sendVerificationCodeEmailAgain": { + "message": "E-Mail mit Bestätigungscode erneut versenden" + }, + "useAnotherTwoStepMethod": { + "message": "Verwenden sie eine andere Zwei-Faktor-Anmelde-Methode" + }, + "insertYubiKey": { + "message": "Stecken Sie Ihren YubiKey in einen USB-Port Ihres Computers und berühren Sie dessen Knopf." + }, + "insertU2f": { + "message": "Stecken Sie Ihren Sicherheitsschlüssel in einen USB-Port des Computers. Falls dieser einen Knopf hat, drücken Sie ihn." + }, + "loginUnavailable": { + "message": "Anmeldung nicht verfügbar" + }, + "noTwoStepProviders": { + "message": "Dieses Konto hat eine aktive Zwei-Faktor-Authentifizierung, allerdings wird keiner der konfigurierten Zwei-Faktor-Anbieter von diesem Browser unterstützt." + }, + "noTwoStepProviders2": { + "message": "Bitte benutzen Sie einen unterstützten Browser (z. B. Chrome) und / oder fügen Sie zusätzliche Anbieter hinzu, die von mehr Browsern unterstützt werden (z. B. eine Authentifizierungs-App)." + }, + "twoStepOptions": { + "message": "Optionen für Zwei-Faktor-Authentifizierung" + }, + "recoveryCodeDesc": { + "message": "Zugang zu allen Zwei-Faktor-Anbietern verloren? Benutzen Sie Ihren Wiederherstellungscode, um alle Zwei-Faktor-Anbieter in Ihrem Konto zu deaktivieren." + }, + "recoveryCodeTitle": { + "message": "Wiederherstellungscode" + }, + "authenticatorAppTitle": { + "message": "Authentifizierungs-App" + }, + "authenticatorAppDesc": { + "message": "Verwenden Sie 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. Funtioniert mit YubiKey 4, Nano 4, 4C und NEO Geräten." + }, + "duoDesc": { + "message": "Verifizieren Sie mit Duo Security, indem Sie die Duo Mobile App, SMS, Anrufe oder U2F Sicherheitsschlüssel benutzen.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Nutzen Sie Duo Security um sich mit der Duo Mobile App, SMS, per Anruf oder U2F Sicherheitsschlüssel Ihrer Organisation gegenüber zu verifizieren.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "u2fDesc": { + "message": "Benutzen Sie einen FIDO U2F-kompatiblen Sicherheitsschlüssel um auf Ihr Konto zuzugreifen." + }, + "u2fTitle": { + "message": "FIDO U2F Sicherheitsschlüssel" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Benutzen Sie einen kompatiblen WebAuthn Sicherheitsschlüssel, um auf Ihr Konto zuzugreifen." + }, + "webAuthnMigrated": { + "message": "(Von FIDO migriert)" + }, + "emailTitle": { + "message": "E-Mail" + }, + "emailDesc": { + "message": "Bestätigungscodes werden Ihnen per E-Mail zugesandt." + }, + "continue": { + "message": "Fortsetzen" + }, + "organization": { + "message": "Organisation" + }, + "organizations": { + "message": "Organisationen" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Wähle eine Organisation aus, in die du diese Einträge verschieben möchtest. Das Verschieben in eine Organisation überträgt das Eigentum der Einträge an diese Organisation. Du bist nicht mehr der direkte Besitzer dieser Einträge, sobald sie verschoben wurden." + }, + "collectionsDesc": { + "message": "Bearbeiten Sie die Sammlungen, mit denen dieser Eintrag geteilt wird. Nur Organisationsmitglieder mit Zugriff auf diese Sammlungen werden diesen Eintrag sehen können." + }, + "deleteSelectedItemsDesc": { + "message": "Sie haben $COUNT$ Eintrag/Einträge zum Löschen ausgewählt. Sind Sie sicher, dass alle diese Einträge gelöscht werden sollen?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Wählen Sie einen Ordner aus, in den Sie $COUNT$ ausgewählte(s) Objekt(e) verschieben möchten.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Du hast $COUNT$ Element(e) ausgewählt. $MOVEABLE_COUNT$ Element(e) können in eine Organisation verschoben werden, $NONMOVEABLE_COUNT$ nicht.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verifizierungscode (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiere Verifizierungscode" + }, + "warning": { + "message": "Warnung" + }, + "confirmVaultExport": { + "message": "Tresor-Export bestätigen" + }, + "exportWarningDesc": { + "message": "Dieser Export enthält Ihre Tresor-Daten in einem unverschlüsseltem Format. Sie sollten die Datei daher nicht über unsichere Kanäle (z.B. E-Mail) versenden oder speichern. Löschen Sie die Datei sofort nach ihrer Verwendung." + }, + "encExportKeyWarningDesc": { + "message": "Dieser Export verschlüsselt Ihre Daten mit dem Verschlüsselungscode Ihres Kontos. Falls Sie Ihren Verschlüsselungscode erneuern, sollten Sie den Export erneut durchführen, da Sie die zuvor erstellte Datei ansonsten nicht mehr entschlüsseln können." + }, + "encExportAccountWarningDesc": { + "message": "Die Verschlüsselungscodes eines Kontos sind für jedes Bitwarden Benutzerkonto einzigartig, deshalb können Sie keinen verschlüsselten Export in ein anderes Konto importieren." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Tresor exportieren" + }, + "fileFormat": { + "message": "Dateiformat" + }, + "exportSuccess": { + "message": "Ihre Daten wurden exportiert." + }, + "passwordGenerator": { + "message": "Passwortgenerator" + }, + "minComplexityScore": { + "message": "Kleinste Komplexitätsstufe" + }, + "minNumbers": { + "message": "Mindestanzahl Ziffern" + }, + "minSpecial": { + "message": "Mindestanzahl Sonderzeichen", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Mehrdeutige Zeichen vermeiden" + }, + "regeneratePassword": { + "message": "Passwort neu generieren" + }, + "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" + }, + "passwordHistory": { + "message": "Passwortverlauf" + }, + "noPasswordsInList": { + "message": "Keine Passwörter vorhanden." + }, + "clear": { + "message": "Löschen", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Konto aktualisiert" + }, + "changeEmail": { + "message": "E-Mail-Adresse ändern" + }, + "changeEmailTwoFactorWarning": { + "message": "Wenn du fortfährst, wird die E-Mail-Adresse deines Kontos geändert. Die E-Mail-Adresse für die Zwei-Faktor-Authentifizierung wird nicht geändert. Du kannst diese E-Mail-Adresse in den Zwei-Faktor Anmeldeeinstellungen ändern." + }, + "newEmail": { + "message": "Neue E-Mail-Adresse" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "Wir haben Ihnen einen Bestätigungscode an $EMAIL$ gesendet. Bitte prüfen Sie Ihre E-Mails und geben Sie den Code zur Bestätigung der E-Mail-Änderung unten ein.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Wenn Sie fortfahren, werden Sie aus Ihrer aktuellen Sitzung ausgeloggt. Aktive Sitzungen auf anderen Geräten können bis zu einer Stunde weiterhin verwendet werden." + }, + "emailChanged": { + "message": "E-Mail-Adresse geändert" + }, + "logBackIn": { + "message": "Bitte melden Sie sich erneut an." + }, + "logBackInOthersToo": { + "message": "Bitte melden Sie sich wieder an. Wenn Sie andere Bitwarden-Anwendungen verwenden, melden Sie sich auch dort ab und wieder neu an." + }, + "changeMasterPassword": { + "message": "Master-Passwort ändern" + }, + "masterPasswordChanged": { + "message": "Master-Passwort geändert" + }, + "currentMasterPass": { + "message": "Aktuelles Master-Passwort" + }, + "newMasterPass": { + "message": "Neues Master-Passwort" + }, + "confirmNewMasterPass": { + "message": "Neues Master-Passwort bestätigen" + }, + "encKeySettings": { + "message": "Verschlüsselungscode-Einstellungen" + }, + "kdfAlgorithm": { + "message": "KDF-Algorithmus" + }, + "kdfIterations": { + "message": "KDF-Iterationen" + }, + "kdfIterationsDesc": { + "message": "Eine höhere Anzahl von KDF-Iterationen hilft dabei, dein Master-Passwort besser vor Brute-Force-Angriffen zu schützen. Wir empfehlen einen Wert von $VALUE$ oder mehr.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Wenn du die Anzahl der KDF-Iterationen zu hoch setzt, kann es sein, dass das Einloggen in Bitwarden (und Entsperren) auf langsameren Geräten länger dauert. Wir empfehlen, dass du den Wert um $INCREMENT$ Schrittweise anhebest und es auf allen Geräten testest.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDF ändern" + }, + "encKeySettingsChanged": { + "message": "Verschlüsselungscode-Einstellungen wurden geändert" + }, + "dangerZone": { + "message": "Gefahrenzone" + }, + "dangerZoneDesc": { + "message": "Vorsicht, diese Aktionen sind nicht umkehrbar!" + }, + "deauthorizeSessions": { + "message": "Sitzungen abmelden" + }, + "deauthorizeSessionsDesc": { + "message": "Könnte es sein, dass Sie noch auf einem anderen Gerät angemeldet sind? Gehen Sie dazu wie folgt vor, um sich auf allen bisher benutzten Geräten abzumelden. Dieser Schritt wird empfohlen, wenn Sie sich auf einem öffentlichen Computer angemeldet haben, oder Ihr Passwort versehentlich auf einem fremden Gerät gespeichert haben. Dieser Schritt löscht außerdem alle zuvor gespeicherten Sitzungen mit Zwei-Faktor-Anmeldung." + }, + "deauthorizeSessionsWarning": { + "message": "Sollten Sie sich von allen Geräten abmelden, werden Sie auch vom jetzigen Gerät abgemeldet und müssen sich erneut anmelden. Sollten Sie die Zwei-Faktor-Anmeldung aktiviert haben, müssen Sie diese ebenfalls erneut auf diesem Gerät bestätigen. Es kann bis zu eine Stunde dauern, bis Sie auf allen Geräten abgemeldet sind." + }, + "sessionsDeauthorized": { + "message": "Alle Sitzungen wurden abgemeldet" + }, + "purgeVault": { + "message": "Tresor leeren" + }, + "purgedOrganizationVault": { + "message": "Gelöschter Organisations-Tresor." + }, + "vaultAccessedByProvider": { + "message": "Vom Anbieter zugegriffener Tresor." + }, + "purgeVaultDesc": { + "message": "Gehen Sie wie folgt vor, um alle Einträge und Ordner in Ihrem Tresor zu löschen. Einträge, die zu einer Organisation gehören, die Sie mit anderen teilen, werden nicht gelöscht." + }, + "purgeOrgVaultDesc": { + "message": "Fahren Sie fort, um alle Inhalte dieses Tresors zu löschen." + }, + "purgeVaultWarning": { + "message": "Die Leerung des Tresor ist permanent. Sie kann nicht rückgängig gemacht werden." + }, + "vaultPurged": { + "message": "Ihr Tresor wurde geleert." + }, + "deleteAccount": { + "message": "Konto löschen" + }, + "deleteAccountDesc": { + "message": "Gehen Sie wie folgt vor, um Ihr Konto und alle zugehörigen Daten zu löschen." + }, + "deleteAccountWarning": { + "message": "Die Kontolöschung ist permanent. Sie kann nicht rückgängig gemacht werden." + }, + "accountDeleted": { + "message": "Konto gelöscht" + }, + "accountDeletedDesc": { + "message": "Ihr Konto und alle zugehörigen Daten wurden gelöscht." + }, + "myAccount": { + "message": "Mein Konto" + }, + "tools": { + "message": "Werkzeuge" + }, + "importData": { + "message": "Daten importieren" + }, + "importError": { + "message": "Importfehler" + }, + "importErrorDesc": { + "message": "Es gab ein Problem mit den Daten, die Sie importieren wollten. Bitte beheben Sie die unten aufgeführten Fehler in Ihrer Quelldatei und versuchen Sie es erneut." + }, + "importSuccess": { + "message": "Daten wurden erfolgreich in Ihren Tresor importiert." + }, + "importWarning": { + "message": "Sie importieren Daten nach $ORGANIZATION$. Ihre Daten können mit Mitgliedern dieser Organisation geteilt werden. Möchten Sie fortfahren?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Die Daten sind nicht richtig formatiert. Kontrollieren Sie bitte Ihre Import-Datei und versuchen Sie es erneut." + }, + "importNothingError": { + "message": "Es wurde nichts importiert." + }, + "importEncKeyError": { + "message": "Fehler beim Entschlüsseln der exportierten Datei. Dein Verschlüsselungscode stimmt nicht mit dem beim Export verwendeten Verschlüsselungscode überein." + }, + "selectFormat": { + "message": "Wählen Sie das Format Ihrer Import-Datei" + }, + "selectImportFile": { + "message": "Wählen Sie die Import-Datei" + }, + "orCopyPasteFileContents": { + "message": "oder fügen Sie den Inhalt Ihrer Datei hier ein" + }, + "instructionsFor": { + "message": "Anleitung für $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Optionen" + }, + "optionsDesc": { + "message": "Passen Sie den Web-Tresor Ihren Bedürfnissen an." + }, + "optionsUpdated": { + "message": "Optionen aktualisiert" + }, + "language": { + "message": "Sprache" + }, + "languageDesc": { + "message": "Ändern Sie die Sprache für den Web-Tresor." + }, + "disableIcons": { + "message": "Website-Icons deaktivieren" + }, + "disableIconsDesc": { + "message": "Website-Icons zeigen ein wiedererkennbares Bild neben jedem Eintrag in Ihrem Tresor." + }, + "enableGravatars": { + "message": "Aktiviere Gravatare", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Nutze Profilbilder von gravatar.com." + }, + "enableFullWidth": { + "message": "Darstellung in voller Breite aktivieren", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Dem Web-Tresor erlauben, die volle Breite des Browserfensters zu benutzen." + }, + "default": { + "message": "Standard" + }, + "domainRules": { + "message": "Domain-Regeln" + }, + "domainRulesDesc": { + "message": "Wenn Sie die gleiche Anmeldung über mehrere verschiedene Webseitendomänen hinweg haben, können Sie die Webseite als \"gleichwertig\" markieren. \"Globale\" Domänen wurden bereits von Bitwarden für Sie angelegt." + }, + "globalEqDomains": { + "message": "Globale gleichwertige Domains" + }, + "customEqDomains": { + "message": "Benutzerdefinierte gleichwertige Domains" + }, + "exclude": { + "message": "Ausschließen" + }, + "include": { + "message": "Einschließen" + }, + "customize": { + "message": "Anpassen" + }, + "newCustomDomain": { + "message": "Neue benutzerdefinierte Domäne" + }, + "newCustomDomainDesc": { + "message": "Geben Sie eine mit Komma getrennte Liste von Domänen ein. Nur \"Basis\"-Domänen sind erlaubt. Geben Sie keine Sub-Domänen an. Geben Sie beispielsweise \"google.de\" anstelle von \"www.google.de\" an. Sie können auch \"androidapp://package.name\" eingeben, um Webseiten-Domänen einer Android-App zuzuordnen." + }, + "customDomainX": { + "message": "$INDEX$ benutzerdefinierte Domänen", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domänen aktualisiert" + }, + "twoStepLogin": { + "message": "Zwei-Faktor-Authentifizierung" + }, + "twoStepLoginDesc": { + "message": "Sichern Sie Ihr Konto mit Zwei-Faktor-Authentifizierung." + }, + "twoStepLoginOrganizationDesc": { + "message": "Zwei-Faktor-Authentifizierung für die Benutzer Ihrer Organisation verlangen, indem Sie Anbieter auf Organisationsebene konfigurieren." + }, + "twoStepLoginRecoveryWarning": { + "message": "Durch die Aktivierung der Zwei-Faktor-Authentifizierung könnten Sie sich dauerhaft aus Ihrem Bitwarden-Konto aussperren. Ein Wiederherstellungscode ermöglicht es Ihnen, auf Ihr Konto zuzugreifen, falls Sie Ihren normalen Zwei-Faktor-Anbieter nicht mehr verwenden können (z.B. wenn Sie Ihr Gerät verlieren). Der Bitwarden-Support kann Ihnen nicht helfen, wenn Sie den Zugang zu Ihrem Konto verlieren. Wir empfehlen Ihnen, den Wiederherstellungscode aufzuschreiben oder auszudrucken und an einem sicheren Ort aufzubewahren." + }, + "viewRecoveryCode": { + "message": "Wiederherstellungscode anzeigen" + }, + "providers": { + "message": "Anbieter", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Aktivieren" + }, + "enabled": { + "message": "Aktiviert" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium-Mitgliedschaft" + }, + "premiumRequired": { + "message": "Premium-Mitgliedschaft benötigt" + }, + "premiumRequiredDesc": { + "message": "Für diese Funktion ist eine Premium-Mitgliedschaft notwendig." + }, + "youHavePremiumAccess": { + "message": "Sie haben Zugriff auf Premium-Funktionen" + }, + "alreadyPremiumFromOrg": { + "message": "Sie haben bereits Zugriff auf Premiumfunktionen, weil Sie Mitglied einer Organisation sind." + }, + "manage": { + "message": "Verwalten" + }, + "disable": { + "message": "Deaktivieren" + }, + "twoStepLoginProviderEnabled": { + "message": "Dieser Zwei-Faktor-Authentifizierungsanbieter ist für Ihr Konto aktiviert." + }, + "twoStepLoginAuthDesc": { + "message": "Geben Sie Ihr Master-Passwort ein, um die Zwei-Faktor-Anmeldeeinstellungen zu ändern." + }, + "twoStepAuthenticatorDesc": { + "message": "Führen Sie diese Schritte aus, um eine Zwei-Faktor-Anmeldung mit einer Authentifizierungs-App einzurichten:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Laden Sie sich eine Zwei-Faktor-Authentifizierungs-App herunter" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Brauchen Sie eine Zwei-Faktor-Authentifizierungs-App? Laden Sie eine der folgenden Apps herunter" + }, + "iosDevices": { + "message": "iOS-Gerät" + }, + "androidDevices": { + "message": "Android-Gerät" + }, + "windowsDevices": { + "message": "Windows-Gerät" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Diese Apps sind Empfehlungen. Andere Authentifizierungs-Apps funktionieren allerdings auch." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scannen Sie diesen QR-Code mit Ihrer Authentifizierungs-App" + }, + "key": { + "message": "Schlüssel" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Geben Sie den 6-stelligen Bestätigungs-Code aus der App ein" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Falls Sie es zu einem anderen Gerät hinzufügen müssen, finden Sie unten den QR-Code (oder Schlüssel), der von Ihrer Authentifizierungs-App benötigt wird." + }, + "twoStepDisableDesc": { + "message": "Sind Sie sicher, dass Sie diesen Zwei-Faktor-Authentifizierungsanbieter deaktivieren möchten?" + }, + "twoStepDisabled": { + "message": "Zwei-Faktor-Authentifizierungsanbieter deaktiviert." + }, + "twoFactorYubikeyAdd": { + "message": "Einen neuen YubiKey zu Ihrem Konto hinzufügen" + }, + "twoFactorYubikeyPlugIn": { + "message": "Stecken Sie den YubiKey in den USB-Anschluss Ihres Computers." + }, + "twoFactorYubikeySelectKey": { + "message": "Selektieren Sie unten das erste YubiKey-Eingabefeld." + }, + "twoFactorYubikeyTouchButton": { + "message": "Drücken Sie die Taste des YubiKeys." + }, + "twoFactorYubikeySaveForm": { + "message": "Speichern des Formulars" + }, + "twoFactorYubikeyWarning": { + "message": "Aufgrund von Plattformbeschränkungen können YubiKeys nicht in allen Bitwarden-Anwendungen verwendet werden. Sie sollten einen anderen Zwei-Faktor-Authentifizierungsanbieter aktivieren, damit Sie auf Ihr Konto zugreifen können, wenn YubiKeys nicht verwendet werden können. Unterstützte Plattformen:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web-Tresor, Desktop-Anwendung, CLI und alle Browser-Erweiterungen auf einem Gerät mit USB-Anschluss, das Ihren YubiKey erkennen kann." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile Apps auf einem NFC-fähigen Gerät oder einem USB-Port, der Ihren YubiKey erkennen kann." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Schlüssel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Schlüssel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC-Unterstützung" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Einer meiner Schlüssel unterstützt NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Wenn eines Ihrer YubiKeys NFC (z. B. ein YubiKey NEO) unterstützt, werden Sie auf mobilen Geräten dazu aufgefordert, wenn NFC Verfügbarkeit erkannt wird." + }, + "yubikeysUpdated": { + "message": "YubiKeys aktualisiert" + }, + "disableAllKeys": { + "message": "Alle Schlüssel deaktivieren" + }, + "twoFactorDuoDesc": { + "message": "Geben Sie die Bitwarden-Anwendungsinformationen aus Ihrem Duo Admin-Panel ein." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integrationsschlüssel" + }, + "twoFactorDuoSecretKey": { + "message": "Geheimer Schlüssel" + }, + "twoFactorDuoApiHostname": { + "message": "API-Hostname" + }, + "twoFactorEmailDesc": { + "message": "Folgen Sie diesen Schritten, um eine Zwei-Faktor-Anmeldung per E-Mail einzurichten:" + }, + "twoFactorEmailEnterEmail": { + "message": "Geben Sie die E-Mail ein, unter der Sie Verifizierungscodes erhalten möchten" + }, + "twoFactorEmailEnterCode": { + "message": "Geben Sie den 6-stelligen Bestätigungs-Code aus der E-Mail ein" + }, + "sendEmail": { + "message": "E-Mail senden" + }, + "twoFactorU2fAdd": { + "message": "Fügen Sie Ihrem Konto einen FIDO U2F-Sicherheitsschlüssel hinzu" + }, + "removeU2fConfirmation": { + "message": "Sind Sie sich sicher, dass Sie diesen Sicherheitsschlüssel entfernen möchten?" + }, + "twoFactorWebAuthnAdd": { + "message": "Einen WebAuthn Sicherheitsschlüssel zu Ihrem Konto hinzufügen" + }, + "readKey": { + "message": "Schlüssel erfassen" + }, + "keyCompromised": { + "message": "Dieser Schlüssel ist bloßgestellt." + }, + "twoFactorU2fGiveName": { + "message": "Geben Sie dem Sicherheitsschlüssel einen eigenen Namen, um ihn zu erkennen." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Stecken Sie den Sicherheitsschlüssel in den USB-Port Ihres Computers und drücken Sie den \"Schlüssel erfassen\" Knopf." + }, + "twoFactorU2fTouchButton": { + "message": "Wenn der Sicherheitsschlüssel eine Taste hat, drücken Sie die." + }, + "twoFactorU2fSaveForm": { + "message": "Formular speichern." + }, + "twoFactorU2fWarning": { + "message": "Aufgrund von Plattformbeschränkungen kann FIDO U2F nicht mit allen Bitwarden-Anwendungen verwendet werden. Sie sollten einen anderen Zwei-Faktor-Authentifizierungsanbieter aktivieren, damit Sie auf Ihr Konto zugreifen können, wenn FIDO U2F nicht verwendet werden kann. Unterstützte Plattformen sind:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web-Tresor und Browser-Erweiterungen auf einem Desktop/Laptop mit einem U2F fähigen Browser (Chrome, Opera, Vivaldi oder Firefox mit FIDO U2F aktiviert)." + }, + "twoFactorU2fWaiting": { + "message": "Es wird darauf gewartet, dass Sie die Taste Ihres Sicherheitsschlüssels betätigen" + }, + "twoFactorU2fClickSave": { + "message": "Drücken Sie \"Speichern\", um den Sicherheitsschlüssel für die Zwei-Faktor Authentifizierung zu aktivieren." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Es gab ein Problem beim lesen des Sicherheitsschlüssels, bitte erneut versuchen." + }, + "twoFactorWebAuthnWarning": { + "message": "Aufgrund von Plattformbeschränkungen kann WebAuthn nicht in allen Bitwarden-Anwendungen verwendet werden. Sie sollten einen anderen Zwei-Faktor-Authentifizierungsanbieter aktivieren, damit Sie auf Ihr Konto zugreifen können, wenn WebAuthn nicht verwendet werden kann. Unterstützte Plattformen:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web-Tresor und Browser-Erweiterungen auf einem Desktop/Laptop mit einem WebAuthn-fähigen Browser (Chrome, Opera, Vivaldi oder Firefox mit aktiviertem FIDO U2F)." + }, + "twoFactorRecoveryYourCode": { + "message": "Ihr Wiederherstellungsschlüssel für die Zwei-Faktor-Anmeldung in Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Sie haben noch keine Variante der Zwei-Faktor-Anmeldung aktiviert. Nachdem Sie eine Zwei-Faktor-Anmeldung aktiviert haben, finden Sie hier Ihren Wiederherstellungs-Code." + }, + "printCode": { + "message": "Code drucken", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Berichte" + }, + "reportsDesc": { + "message": "Identifiziere und schließe Sicherheitslücken in deinen Online-Konten, indem du auf die Berichte unten klickst." + }, + "unsecuredWebsitesReport": { + "message": "Bericht über ungesicherte Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "Die Verwendung ungesicherter Webseiten mit dem http:// Präfix kann gefährlich sein. Wenn die Webseite es erlaubt, sollten Sie immer über das https:// Präfix darauf zugreifen, damit Ihre Verbindung verschlüsselt ist." + }, + "unsecuredWebsitesFound": { + "message": "Ungesicherte Webseiten gefunden" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Wir haben $COUNT$ Elemente in Ihrem Tresor mit ungesicherten URIs gefunden. Sie sollten ihr URI-Präfix auf https:// ändern, wenn die Webseite dies zulässt.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Es gibt keine Einträge in Ihrem Tresor, die unsichere URIs benutzen." + }, + "inactive2faReport": { + "message": "Bericht über inaktive 2FA" + }, + "inactive2faReportDesc": { + "message": "Die Zwei-Faktor-Authentifizierung (2FA) ist eine wichtige Sicherheitseinstellung, die Ihnen bei der Absicherung Ihrer Konten hilft. Wenn eine Webseite 2FA anbietet, sollten Sie es immer aktivieren." + }, + "inactive2faFound": { + "message": "Anmeldungen ohne 2FA gefunden" + }, + "inactive2faFoundDesc": { + "message": "Wir haben $COUNT$ Webseite(n) in Ihrem Tresor gefunden, die eine Zwei-Faktor Authentifizierung anbieten (laut 2fa.directory), aber bei denen diese Funktion möglicherweise nicht aktiviert ist. Um diese Accounts abzusichern, sollten Sie die Zwei-Faktor Authentifizierung aktivieren.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Es wurden keine Webseiten in Ihrem Tresor gefunden, bei denen eine Konfiguration der Zwei-Faktor Authentifizierung fehlt." + }, + "instructions": { + "message": "Anleitung" + }, + "exposedPasswordsReport": { + "message": "Bericht über kompromittierte Passwörter" + }, + "exposedPasswordsReportDesc": { + "message": "Kompromittierte Passwörter sind Passwörter, die in bekannten Datendiebstählen entdeckt und veröffentlicht wurden oder von Hackern im Dark Web verkauft wurden." + }, + "exposedPasswordsFound": { + "message": "Es wurden kompromittierte Passwörter gefunden" + }, + "exposedPasswordsFoundDesc": { + "message": "Wir haben $COUNT$ Einträge in Ihrem Tresor gefunden, die in bekannten Passwortdiebstahl Datenbanken veröffentlicht wurden. Sie sollten diese Passwörter so schnell wie möglich ändern.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Es scheint in Ihrem Tresor keine Passwörter zu geben, die in Passwortdiebstahl Datenbanken veröffentlicht wurden." + }, + "checkExposedPasswords": { + "message": "Auf kompromittierte Passwörter prüfen" + }, + "exposedXTimes": { + "message": "$COUNT$ mal kompromittiert", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Bericht über schwache Passwörter" + }, + "weakPasswordsReportDesc": { + "message": "Schwache Passwörter können von Angreifern und automatisierten Prozessen, die Passwörter knacken, leicht erraten werden. Der Passwortgenerator von Bitwarden kann Ihnen helfen, starke und sichere Passwörter zu generieren." + }, + "weakPasswordsFound": { + "message": "Schwache Passwörter gefunden" + }, + "weakPasswordsFoundDesc": { + "message": "Wir haben $COUNT$ Einträge mit schwachen Passwörtern in Ihrem Tresor gefunden. Sie sollten diese aktualisieren und ein sicheres Passwort verwenden.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Keine Einträge in Ihrem Tresor haben schwache Passwörter." + }, + "reusedPasswordsReport": { + "message": "Bericht über wiederverwendete Passwörter" + }, + "reusedPasswordsReportDesc": { + "message": "Wenn Sie Passwörter für mehrere Dienste gleichzeitig benutzen und einer dieser Dienste kompromittiert wird, ist es für Angreifer deutlich einfacher Zugriff zu den anderen Konten zu erlangen. Aus diesem Grund sollten Sie für jeden Dienst ein einzigartiges Passwort verwenden." + }, + "reusedPasswordsFound": { + "message": "Wiederverwendete Passwörter gefunden" + }, + "reusedPasswordsFoundDesc": { + "message": "Wir haben $COUNT$ Passwörter in Ihrem Tresor gefunden, die mehrfach benutzt wurden. Sie sollten diese ändern und jedes Passwort nur ein einziges Mal benutzen.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "In Ihrem Tresor wurden keine Einträge mit wiederverwendeten Passwörtern gefunden." + }, + "reusedXTimes": { + "message": "Bereits $COUNT$ mal verwendet", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Datendiebstahl-Bericht" + }, + "breachDesc": { + "message": "Ein Datendiebstahl ist ein Vorfall, bei dem sich Hacker illegal Zugriff auf Daten von einer Website verschafft haben und diese im Anschluss veröffentlicht wurden. Prüfen Sie die Art der Daten, welche kompromittiert wurden (E-Mail-Adressen, Kennwörter, Kreditkarteninformationen) und leiten Sie entsprechende Handlungen ein, wie z.B. das Ändern von Kennwörtern." + }, + "breachCheckUsernameEmail": { + "message": "Prüfen Sie alle Benutzernamen und E-Mail-Adressen, die Sie verwenden." + }, + "checkBreaches": { + "message": "Auf Datendiebstähle prüfen" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ wurde in keinem der bekannten Datendiebstahlvorfällen gefunden.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Gute Nachrichten", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ wurde in $COUNT$ Datendiebstahlvorfällen gefunden.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Betroffene Konten wurden gefunden" + }, + "compromisedData": { + "message": "Kompromittierte Daten" + }, + "website": { + "message": "Webseite" + }, + "affectedUsers": { + "message": "Betroffene Nutzer" + }, + "breachOccurred": { + "message": "Ein Datendiebstahl ist aufgetreten" + }, + "breachReported": { + "message": "Ein Datendiebstahl wurde gemeldet" + }, + "reportError": { + "message": "Ein Fehler ist aufgetreten, während der Bericht geladen wurde. Versuchen Sie es erneut" + }, + "billing": { + "message": "Rechnung" + }, + "accountCredit": { + "message": "Kontoguthaben", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Kontostand", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Guthaben hinzufügen", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Anzahl", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Aufgeladenes Guthaben wird auf Ihrem Konto verbucht, nachdem die Zahlung vollständig bearbeitet wurde. Einige Zahlungsarten brauchen mehr Zeit zum Bearbeiten als andere." + }, + "makeSureEnoughCredit": { + "message": "Bitte stellen Sie sicher, dass Ihr Konto über genügend Guthaben für diesen Kauf verfügt. Wenn Ihr Konto nicht über genügend Guthaben verfügt, wird Ihre hinterlegte Standard-Zahlungsart für den Ausgleich des Restbetrages verwendet. Über die Rechnungsseite können Sie Ihr Konto aufladen." + }, + "creditAppliedDesc": { + "message": "Das Guthaben Ihres Kontos kann für Einkäufe verwendet werden. Das verfügbare Guthaben wird automatisch auf die für dieses Konto erstellten Rechnungen angerechnet." + }, + "goPremium": { + "message": "Zu Premium wechseln", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Sie haben ein Premium-Abo aktiviert." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Machen Sie ein Upgrade Ihres Kontos auf eine Premium-Mitgliedschaft, um zusätzliche, großartige Funktionen freizuschalten." + }, + "premiumSignUpStorage": { + "message": "1 GB verschlüsselter Speicherplatz für Datei-Anhänge." + }, + "premiumSignUpTwoStep": { + "message": "Zusätzliche Zwei-Faktor-Authentifizierungsmöglichkeiten wie z.B. YubiKey, FIDO U2F und Duo." + }, + "premiumSignUpEmergency": { + "message": "Notfallzugriff" + }, + "premiumSignUpReports": { + "message": "Berichte über Passwort-Hygiene, Kontostatus und Datendiebstähle, um Ihren Tresor sicher zu halten." + }, + "premiumSignUpTotp": { + "message": "TOTP Verifizierungscode-Generator (2FA) für Konten in Ihrem Tresor." + }, + "premiumSignUpSupport": { + "message": "Vorrangiger Kundenservice." + }, + "premiumSignUpFuture": { + "message": "Alle zukünftigen Premium-Funktionen. Mehr in Kürze!" + }, + "premiumPrice": { + "message": "Alles für nur $PRICE$ pro Jahr!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Erweiterungen" + }, + "premiumAccess": { + "message": "Zugriff für Premium" + }, + "premiumAccessDesc": { + "message": "Sie können allen Mitgliedern Ihrer Organisation zum Preis von $PRICE$ pro $INTERVAL$ einen Premium-Zugang ermöglichen.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Zusätzlicher Speicher (GB)" + }, + "additionalStorageGbDesc": { + "message": "# zusätzliche GB" + }, + "additionalStorageIntervalDesc": { + "message": "Ihr Abo beinhaltet $SIZE$ verschlüsselten Datenspeicher. Sie können zusätzlichen Speicher für $PRICE$ pro GB im $INTERVAL$ hinzufügen.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Zusammenfassung" + }, + "total": { + "message": "Gesamt" + }, + "year": { + "message": "Jahr" + }, + "month": { + "message": "Monat" + }, + "monthAbbr": { + "message": "Mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Ihre Zahlungsmethode wird sofort und jährlich wiederkehrend belastet. Sie können jederzeit kündigen." + }, + "paymentCharged": { + "message": "Ihre Zahlungsmethode wird sofort belastet und darauf folgend einmal pro $INTERVAL$. Sie können jederzeit kündigen.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Ihr Abo startet mit einer kostenlosen Probezeit von 7 Tagen. Ihre Karte wird nicht belastet, bis die Probezeit abgelaufen ist. Die Rechnung kommt wiederkehrend jeden/jedes $INTERVAL$. Sie können jederzeit kündigen." + }, + "paymentInformation": { + "message": "Zahlungsinformationen" + }, + "billingInformation": { + "message": "Informationen zur Abrechnung" + }, + "creditCard": { + "message": "Kreditkarte" + }, + "paypalClickSubmit": { + "message": "Klicken Sie auf die Schaltfläche PayPal, um sich bei Ihrem PayPal-Konto anzumelden und anschließend auf die Schaltfläche Senden, um fortzufahren." + }, + "cancelSubscription": { + "message": "Abo kündigen" + }, + "subscriptionCanceled": { + "message": "Das Abo wurde gekündigt." + }, + "pendingCancellation": { + "message": "Ausstehende Kündigung" + }, + "subscriptionPendingCanceled": { + "message": "Das Abo wurde zum Ende des aktuellen Abrechnungszeitraums zur Kündigung vorgemerkt." + }, + "reinstateSubscription": { + "message": "Abo wiederherstellen" + }, + "reinstateConfirmation": { + "message": "Sind Sie sicher, dass Sie den ausstehenden Kündigungsantrag löschen und das Abo wieder aufnehmen möchten?" + }, + "reinstated": { + "message": "Das Abo wurde wieder aufgenommen." + }, + "cancelConfirmation": { + "message": "Sind Sie sicher, dass Sie kündigen wollen? Am Ende dieses Abrechnungszyklus verlieren Sie den Zugriff auf alle Funktionen dieses Abos." + }, + "canceledSubscription": { + "message": "Das Abo wurde gekündigt." + }, + "neverExpires": { + "message": "Läuft nie ab" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Nächste Abbuchung" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Lizenz herunterladen" + }, + "updateLicense": { + "message": "Lizenz aktualisieren" + }, + "updatedLicense": { + "message": "Aktualisierte Lizenz" + }, + "manageSubscription": { + "message": "Abo verwalten" + }, + "storage": { + "message": "Speicher" + }, + "addStorage": { + "message": "Speicherplatz erweitern" + }, + "removeStorage": { + "message": "Speicherplatz verringern" + }, + "subscriptionStorage": { + "message": "Ihr Abo hat insgesamt $MAX_STORAGE$ GB verschlüsselten Speicherplatz. Sie benutzen derzeit $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Zahlungsart" + }, + "noPaymentMethod": { + "message": "Keine Zahlungsmethode hinterlegt." + }, + "addPaymentMethod": { + "message": "Zahlungsmethode hinzufügen" + }, + "changePaymentMethod": { + "message": "Zahlungsmethode ändern" + }, + "invoices": { + "message": "Rechnungen" + }, + "noInvoices": { + "message": "Keine Rechnungen." + }, + "paid": { + "message": "Bezahlt", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unbezahlt", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Zahlungsvorgänge", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Keine Zahlungsvorgänge." + }, + "chargeNoun": { + "message": "Gebühr", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Rückerstattung", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Alle Gebühren werden auf Ihrem Kontoauszug als $STATEMENT_NAME$ angezeigt.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB an Speicherplatz hinzufügen" + }, + "gbStorageRemove": { + "message": "GB an Speicherplatz entfernen" + }, + "storageAddNote": { + "message": "Das Hinzufügen von Speicherplatz führt zu einer Anpassung Ihrer Rechnungssummen und belastet Ihre Zahlungsmethode sofort. Die erste Gebühr wird für den Rest des aktuellen Abrechnungszyklus anteilig berechnet." + }, + "storageRemoveNote": { + "message": "Das Entfernen des Speichers führt zu einer Anpassung Ihrer Rechnungssumme, die als Gutschrift auf Ihre nächste Rechnungssumme angerechnet wird." + }, + "adjustedStorage": { + "message": "$AMOUNT$ GB Speicherplatz angepasst.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Kundenservice kontaktieren" + }, + "updatedPaymentMethod": { + "message": "Zahlungsart aktualisiert." + }, + "purchasePremium": { + "message": "Premium-Mitgliedschaft erwerben" + }, + "licenseFile": { + "message": "Lizenzdatei" + }, + "licenseFileDesc": { + "message": "Ihre Lizenzdatei wird so ähnlich wie $FILE_NAME$ heißen", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Um Ihr Konto zu einer Premium-Mitgliedschaft hochzustufen, müssen Sie eine gültige Lizenzdatei hochladen." + }, + "uploadLicenseFileOrg": { + "message": "Um eine vor Ort gehostete Organisation zu erstellen, müssen Sie eine gültige Lizenzdatei hochladen." + }, + "accountEmailMustBeVerified": { + "message": "Die E-Mail-Adresse Ihres Kontos muss bestätigt werden." + }, + "newOrganizationDesc": { + "message": "Organisationen ermöglichen es Ihnen, Teile Ihres Tresors mit anderen zu teilen und verwandte Benutzer für eine bestimmte Gruppe wie eine Familie, ein kleines Team oder ein großes Unternehmen zu verwalten." + }, + "generalInformation": { + "message": "Allgemeine Informationen" + }, + "organizationName": { + "message": "Name der Organisation" + }, + "accountOwnedBusiness": { + "message": "Dieses Konto gehört einem Unternehmen." + }, + "billingEmail": { + "message": "E-Mail für Rechnung" + }, + "businessName": { + "message": "Firmenname" + }, + "chooseYourPlan": { + "message": "Wählen Sie Ihr Abo" + }, + "users": { + "message": "Benutzer" + }, + "userSeats": { + "message": "Benutzerplätze" + }, + "additionalUserSeats": { + "message": "Weitere Benutzerplätze" + }, + "userSeatsDesc": { + "message": "Anzahl der Benutzerplätze" + }, + "userSeatsAdditionalDesc": { + "message": "Ihr Abo beinhaltet $BASE_SEATS$ Benutzerplätze. Sie können weitere Benutzer für $SEAT_PRICE$ pro Benutzer/Monat hinzufügen.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Wie viele Benutzerplätze benötigen Sie? Bei Bedarf können Sie auch nachträglich weitere Plätze zu einem späteren Zeitpunkt hinzufügen." + }, + "planNameFree": { + "message": "Kostenlos", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Für Test- oder Privatanwender, die mit $COUNT$ anderen Benutzern teilen möchten.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familien" + }, + "planDescFamilies": { + "message": "Für den persönlichen Gebrauch, zum Teilen mit Familie und Freunden." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "Für Unternehmen und andere Teamorganisationen." + }, + "planNameEnterprise": { + "message": "Unternehmen" + }, + "planDescEnterprise": { + "message": "Für Unternehmen und andere große Organisationen." + }, + "freeForever": { + "message": "Dauerhaft kostenlos" + }, + "includesXUsers": { + "message": "beinhaltet $COUNT$ Benutzer", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Zusätzliche Benutzer" + }, + "costPerUser": { + "message": "$COST$ pro Benutzer", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limitiert auf $COUNT$ Benutzer (Sie eingeschlossen)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limitiert auf $COUNT$ Sammlungen", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Hinzufügen und Teilen mit bis zu $COUNT$ Benutzern", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Hinzufügen und Teilen mit einer unbegrenzten Anzahl von Benutzern" + }, + "createUnlimitedCollections": { + "message": "Erstelle eine unbegrenzte Anzahl von Sammlungen" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ verschlüsselter Datenspeicher", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Hosting auf eigenem Server (optional)" + }, + "usersGetPremium": { + "message": "Mitglieder erhalten Zugriff auf Premium-Funktionen" + }, + "controlAccessWithGroups": { + "message": "Zugriffskontrolle durch Gruppen" + }, + "syncUsersFromDirectory": { + "message": "Synchronisieren Sie Ihre Benutzer und Gruppen aus einem Verzeichnis" + }, + "trackAuditLogs": { + "message": "Nachverfolgung von Benutzeraktivitäten mittels Auditprotokollen" + }, + "enforce2faDuo": { + "message": "Zwei-Faktor mit Duo erzwingen" + }, + "priorityCustomerSupport": { + "message": "Vorrangiger Kundenservice" + }, + "xDayFreeTrial": { + "message": "$COUNT$ Tage kostenlose Testversion, jederzeit kündbar", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monatlich" + }, + "annually": { + "message": "Jährlich" + }, + "basePrice": { + "message": "Grundpreis" + }, + "organizationCreated": { + "message": "Organisation erstellt" + }, + "organizationReadyToGo": { + "message": "Ihre neue Organisation ist einsatzbereit!" + }, + "organizationUpgraded": { + "message": "Ihr Organisations-Tarif wurde aktualisiert." + }, + "leave": { + "message": "Verlassen" + }, + "leaveOrganizationConfirmation": { + "message": "Sind Sie sicher, dass Sie diese Organisation verlassen möchten?" + }, + "leftOrganization": { + "message": "Sie haben die Organisation verlassen." + }, + "defaultCollection": { + "message": "Standardsammlung" + }, + "getHelp": { + "message": "Hilfe erhalten" + }, + "getApps": { + "message": "Die Apps erhalten" + }, + "loggedInAs": { + "message": "angemeldet als" + }, + "eventLogs": { + "message": "Ereignisprotokolle" + }, + "people": { + "message": "Leute" + }, + "policies": { + "message": "Richtlinien" + }, + "singleSignOn": { + "message": "Single Sign-on" + }, + "editPolicy": { + "message": "Richtlinie bearbeiten" + }, + "groups": { + "message": "Gruppen" + }, + "newGroup": { + "message": "Neue Gruppe" + }, + "addGroup": { + "message": "Gruppe hinzufügen" + }, + "editGroup": { + "message": "Gruppe bearbeiten" + }, + "deleteGroupConfirmation": { + "message": "Sind Sie sich sicher, dass Sie diese Gruppe löschen wollen?" + }, + "removeUserConfirmation": { + "message": "Sind Sie sich sicher, dass Sie diesen Benutzer löschen wollen?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warnung! Dieser Benutzer benötigt Key Connector, um seine Verschlüsselung zu verwalten. Das Entfernen dieses Benutzers aus deiner Organisation wird sein Konto dauerhaft deaktivieren. Diese Aktion kann nicht rückgängig gemacht werden. Möchtest du fortfahren?" + }, + "externalId": { + "message": "Externe ID" + }, + "externalIdDesc": { + "message": "Die externe ID kann als Referenz oder zur Verbindung zu einem externen System, wie einem Benutzerverzeichnis, verwendet werden." + }, + "accessControl": { + "message": "Zugangskontrolle" + }, + "groupAccessAllItems": { + "message": "Diese Gruppe kann auf alle Einträge zugreifen und diese ändern." + }, + "groupAccessSelectedCollections": { + "message": "Diese Gruppe kann nur auf die ausgewählten Sammlungen zugreifen." + }, + "readOnly": { + "message": "Nur Lesen" + }, + "newCollection": { + "message": "Neue Sammlung" + }, + "addCollection": { + "message": "Der Sammlung hinzufügen" + }, + "editCollection": { + "message": "Sammlung bearbeiten" + }, + "deleteCollectionConfirmation": { + "message": "Möchten Sie diese Sammlung wirklich löschen?" + }, + "editUser": { + "message": "Benutzer bearbeiten" + }, + "inviteUser": { + "message": "Benutzer einladen" + }, + "inviteUserDesc": { + "message": "Lade einen neuen Benutzer zu deinem Anbieter ein, indem du die E-Mail-Adresse seines Bitwarden-Kontos unten einträgst. Falls dieser noch kein Bitwarden-Konto besitzt, wird er/sie zur Erstellung eines neuen Kontos aufgefordert." + }, + "inviteMultipleEmailDesc": { + "message": "Sie können bis zu $COUNT$ Benutzer auf einmal einladen, indem Sie eine Liste von E-Mail-Adressen mit je einem Komma trennen.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Dieser Benutzer hat seinen Account mit einer 2-Faktor-Anmeldung geschützt." + }, + "userAccessAllItems": { + "message": "Der Benutzer kann alle Einträge einsehen und verändern." + }, + "userAccessSelectedCollections": { + "message": "Der Benutzer kann nur auf ausgewählte Sammlungen zugreifen." + }, + "search": { + "message": "Suche" + }, + "invited": { + "message": "Eingeladen" + }, + "accepted": { + "message": "Akzeptiert" + }, + "confirmed": { + "message": "Bestätigt" + }, + "clientOwnerEmail": { + "message": "Kunden-E-Mail" + }, + "owner": { + "message": "Besitzer" + }, + "ownerDesc": { + "message": "Der Benutzer mit dem höchsten Berechtigungsgrad, der alle Aspekte Ihrer Organisation verwalten kann." + }, + "clientOwnerDesc": { + "message": "Dieser Benutzer sollte unabhängig vom Anbieter sein. Wenn der Anbieter von der Organisation getrennt wird, behält dieser Benutzer das Eigentum an der Organisation." + }, + "admin": { + "message": "Administrator" + }, + "adminDesc": { + "message": "Administratoren können auf alle Einträge, Sammlungen und Benutzer in der Organisation zugreifen und diese verwalten." + }, + "user": { + "message": "Benutzer" + }, + "userDesc": { + "message": "Ein normaler Benutzer mit Zugriff auf die ihm zugewiesenen Sammlungen der Organisation." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Manager können auf die für sie zugewiesene Sammlungen in der Organisation zugreifen und diese verwalten." + }, + "all": { + "message": "Alle" + }, + "refresh": { + "message": "Aktualisieren" + }, + "timestamp": { + "message": "Zeitstempel" + }, + "event": { + "message": "Ereignis" + }, + "unknown": { + "message": "Unbekannt" + }, + "loadMore": { + "message": "Weitere laden" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Erweiterung", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web-Tresor" + }, + "loggedIn": { + "message": "Eingeloggt." + }, + "changedPassword": { + "message": "Benutzerpasswort geändert." + }, + "enabledUpdated2fa": { + "message": "Zwei-Faktor-Anmeldung aktiviert/aktualisiert." + }, + "disabled2fa": { + "message": "Zwei-Faktor-Anmeldung deaktiviert." + }, + "recovered2fa": { + "message": "Konto aus der Zwei-Faktor-Anmeldung wiederhergestellt." + }, + "failedLogin": { + "message": "Anmeldeversuch mit falschem Passwort fehlgeschlagen." + }, + "failedLogin2fa": { + "message": "Anmeldeversuch mit falscher Zwei-Faktor-Anmeldung fehlgeschlagen." + }, + "exportedVault": { + "message": "Tresor exportiert." + }, + "exportedOrganizationVault": { + "message": "Tresor der Organisation exportiert." + }, + "editedOrgSettings": { + "message": "Organisationseinstellungen bearbeitet." + }, + "createdItemId": { + "message": "Eintrag $ID$ erstellt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Eintrag $ID$ bearbeitet.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Eintrag $ID$ in Papierkorb verschoben.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Eintrag $ID$ wurde in eine Organisation verschoben.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Eintrag $ID$ angesehen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Passwort für Eintrag $ID$ angesehen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Verstecktes Feld für Eintrag $ID$ angesehen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Sicherheitscode für Eintrag $ID$ angesehen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Passwort für Eintrag $ID$ kopiert.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Verstecktes Feld für Eintrag $ID$ kopiert.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Sicherheitscode für Eintrag $ID$ kopiert.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Eintrag $ID$ automatisch ausgefüllt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Sammlung $ID$ erstellt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Sammlung $ID$ bearbeitet.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Sammlung $ID$ gelöscht.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Richtlinie \"$ID$\" bearbeitet.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Gruppe $ID$ erstellt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Gruppe $ID$ bearbeitet.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Gruppe $ID$ gelöscht.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Benutzer $ID$ entfernt.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Anhang zum Eintrag $ID$ erstellt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Anhang zum Eintrag $ID$ gelöscht.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Sammlungen des Eintrags $ID$ bearbeitet.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Benutzer $ID$ eingeladen.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Benutzer $ID$ bestätigt.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Benutzer $ID$ bearbeitet.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Gruppen für den Benutzer $ID$ bearbeitet.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO-Verknüpfung für Benutzer $ID$ aufgehoben.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organisation $ID$ erstellt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organisation $ID$ hinzugefügt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organisation $ID$ entfernt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Auf den $ID$ Organisations-Tresor zugegriffen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Gerät" + }, + "view": { + "message": "Anzeigen" + }, + "invalidDateRange": { + "message": "Ungültiger Datenbereich." + }, + "errorOccurred": { + "message": "Ein Fehler ist aufgetreten." + }, + "userAccess": { + "message": "Benutzerzugriff" + }, + "userType": { + "message": "Benutzertyp" + }, + "groupAccess": { + "message": "Gruppenzugang" + }, + "groupAccessUserDesc": { + "message": "Die Gruppen bearbeiten, zu denen dieser Benutzer gehört." + }, + "invitedUsers": { + "message": "Benutzer eingeladen." + }, + "resendInvitation": { + "message": "Einladung erneut versenden" + }, + "resendEmail": { + "message": "E-Mail erneut senden" + }, + "hasBeenReinvited": { + "message": "$USER$ wurde erneut eingeladen.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Bestätigen" + }, + "confirmUser": { + "message": "Benutzer bestätigen" + }, + "hasBeenConfirmed": { + "message": "$USER$ wurde bestätigt.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Benutzer bestätigen" + }, + "usersNeedConfirmed": { + "message": "Sie haben Nutzer, die ihre Einladung angenommen haben, aber noch bestätigt werden müssen. Benutzer haben erst Zugriff auf die Organisation, wenn sie bestätigt wurden." + }, + "startDate": { + "message": "Startdatum" + }, + "endDate": { + "message": "Endatum" + }, + "verifyEmail": { + "message": "E-Mail-Adresse bestätigen" + }, + "verifyEmailDesc": { + "message": "Bestätigen Sie die E-Mail-Adresse Ihres Kontos, um den Zugriff auf alle Funktionen freizuschalten." + }, + "verifyEmailFirst": { + "message": "Die E-Mail-Adresse Ihres Kontos muss zuerst bestätigt werden." + }, + "checkInboxForVerification": { + "message": "Sehen Sie in Ihrem E-Mail-Posteingang nach, ob Sie Ihren Bestätigungscode erhalten haben" + }, + "emailVerified": { + "message": "Ihre E-Mail-Adresse wurde verifiziert" + }, + "emailVerifiedFailed": { + "message": "Ihre E-Mail kann nicht verifiziert werden. Versuchen Sie eine neue Bestätigungs-E-Mail zu senden." + }, + "emailVerificationRequired": { + "message": "E-Mail-Verifizierung erforderlich" + }, + "emailVerificationRequiredDesc": { + "message": "Sie müssen Ihre E-Mail verifizieren, um diese Funktion nutzen zu können." + }, + "updateBrowser": { + "message": "Browser aktualisieren" + }, + "updateBrowserDesc": { + "message": "Sie benutzen einen nicht unterstützten Webbrowser. Der Web-Tresor funktioniert möglicherweise nicht richtig." + }, + "joinOrganization": { + "message": "Organisation beitreten" + }, + "joinOrganizationDesc": { + "message": "Du wurdest eingeladen, dem oben genannten Anbieter beizutreten. Um die Einladung anzunehmen, musst du ein Bitwarden-Konto erstellen, oder dich mit deinem bestehenden Bitwarden-Konto anmelden." + }, + "inviteAccepted": { + "message": "Einladung angenommen" + }, + "inviteAcceptedDesc": { + "message": "Sie können der Organisation beitreten, sobald ein Administrator Ihre Mitgliedschaft bestätigt hat. Wir werden Sie dann per E-Mail benachrichtigen." + }, + "inviteAcceptFailed": { + "message": "Einladung konnte nicht akzeptiert werden. Zum Erhalten einer neuen Einladung, setzen Sie sich mit einem Administrator der Organisation in Verbindung." + }, + "inviteAcceptFailedShort": { + "message": "Die Einladung kann nicht angenommen werden. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "E-Mail-Adresse merken" + }, + "recoverAccountTwoStepDesc": { + "message": "Falls Sie nicht mit Ihren normalen Zwei-Faktor-Anmeldemethoden auf Ihren Account zugreifen können, nutzen Sie Ihren Zwei-Faktor-Wiederherstellungscode, um alle Zwei-Faktor-Anbieter für Ihr Konto zu deaktivieren." + }, + "recoverAccountTwoStep": { + "message": "Zwei-Faktor-Authentifizierung wiederherstellen" + }, + "twoStepRecoverDisabled": { + "message": "Zwei-Faktor-Authentifizierung wurde für Ihren Account deaktiviert." + }, + "learnMore": { + "message": "Erfahre mehr" + }, + "deleteRecoverDesc": { + "message": "Geben Sie hier Ihre E-Mail-Adresse ein, um Ihr Konto wiederherzustellen und zu löschen." + }, + "deleteRecoverEmailSent": { + "message": "Wir haben Ihnen eine E-Mail mit weiteren Anweisungen gesendet, sofern Ihr Konto existiert." + }, + "deleteRecoverConfirmDesc": { + "message": "Sie haben die Löschung Ihres Bitwarden-Kontos angefragt. Klicken Sie diesen Button, um die Löschung zu bestätigen." + }, + "myOrganization": { + "message": "Meine Organisation" + }, + "deleteOrganization": { + "message": "Organisation löschen" + }, + "deletingOrganizationContentWarning": { + "message": "Gebe das Master-Passwort ein, um das Löschen von $ORGANIZATION$ und allen zugehörigen Daten zu bestätigen. Die Tresordaten in $ORGANIZATION$ beinhalten:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Die Benutzerkonten bleiben nach dem Löschen aktiv, sind aber nicht mehr mit dieser Organisation verknüpft." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Das Löschen von $ORGANIZATION$ ist dauerhaft und unwiderruflich.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Die Organisation wurde gelöscht" + }, + "organizationDeletedDesc": { + "message": "Die Organisation und alle ihre zugehörigen Daten wurden gelöscht." + }, + "organizationUpdated": { + "message": "Organisation aktualisiert" + }, + "taxInformation": { + "message": "Informationen zur Steuer" + }, + "taxInformationDesc": { + "message": "Für Kunden innerhalb der USA ist die Postleitzahl erforderlich, um die Umsatzsteuer-Anforderungen zu erfüllen, für andere Länder können Sie optional eine Steuernummer (VAT/GST) und/oder eine Adresse angeben, die auf Ihren Rechnungen erscheint." + }, + "billingPlan": { + "message": "Abo", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Abo ändern", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Ändern sie ihr Konto zu einem anderen Tarif, indem Sie folgende Informationen bereitstellen. Bitte stellen Sie sicher, dass Sie eine aktive Zahlungsmethode zu ihren Konto hinzugefügt haben.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Rechnung #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Rechnung anzeigen" + }, + "downloadInvoice": { + "message": "Rechnung herunterladen" + }, + "verifyBankAccount": { + "message": "Bankkonto verifizieren" + }, + "verifyBankAccountDesc": { + "message": "Wir haben zwei Mikro-Transaktionen auf Ihr Bankkonto getätigt (es kann 1-2 Werktage dauern bis diese sichtbar werden). Geben Sie diese Daten ein um Ihr Bankkonto zu verifizieren." + }, + "verifyBankAccountInitialDesc": { + "message": "Zahlungen über ein Bankkonto ist nur für Benutzer in den Vereinigten Staaten verfügbar. Hierfür müssen Sie Ihr Bankkonto verifizieren. Wir werden dann innerhalb der nächsten 1-2 Werktage zwei Mikro-Transaktionen durchführen. Geben Sie im Anschluss die Höhe der Beträge auf der Organisationsseite ein, um Ihr Bankkonto zu verifizieren." + }, + "verifyBankAccountFailureWarning": { + "message": "Ein Fehlschlag bei der Verifizierung des Bankkontos wird zu einer versäumten Zahlung führen und Ihr Abo wird deaktiviert." + }, + "verifiedBankAccount": { + "message": "Ihr Bankkonto wurde verifiziert." + }, + "bankAccount": { + "message": "Bankkonto" + }, + "amountX": { + "message": "Betrag $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Bankleitzahl", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Kontonummer" + }, + "accountHolderName": { + "message": "Name des Kontoinhabers" + }, + "bankAccountType": { + "message": "Kontoart" + }, + "bankAccountTypeCompany": { + "message": "Firma" + }, + "bankAccountTypeIndividual": { + "message": "Person" + }, + "enterInstallationId": { + "message": "Geben Sie Ihre Installations-ID ein" + }, + "limitSubscriptionDesc": { + "message": "Lege ein Benutzerplätze-Limit für dein Abo fest. Sobald dieses Limit erreicht ist, kannst du keine neuen Benutzer mehr einladen." + }, + "maxSeatLimit": { + "message": "Maximales Benutzerplätze-Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maximal mögliche Benutzerplatz-Kosten" + }, + "addSeats": { + "message": "Benutzerplätze hinzufügen", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Benutzerplätze entfernen", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Anpassungen an deinem Abo führen zu anteiligen Änderungen an deiner Rechnungssumme. Wenn neu eingeladene Benutzer deine Abo-Benutzerplätze überschreiten, wird dir sofort eine anteilige Gebühr für die zusätzlichen Benutzer berechnet." + }, + "subscriptionUserSeats": { + "message": "Ihr Abo erlaubt insgesamt $COUNT$ Benutzer.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Abo begrenzen (optional)" + }, + "subscriptionSeats": { + "message": "Abo-Benutzerplätze" + }, + "subscriptionUpdated": { + "message": "Abo aktualisiert" + }, + "additionalOptions": { + "message": "Weitere Optionen" + }, + "additionalOptionsDesc": { + "message": "Für weitere Hilfe bei der Verwaltung deines Abos, wende dich bitte an den Kundenservice." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Anpassungen an deinem Abo führen zu anteiligen Änderungen an deiner Rechnungssumme. Wenn neu eingeladene Benutzer deine Abo-Benutzerplätze überschreiten, wird dir sofort eine anteilige Gebühr für die zusätzlichen Benutzer berechnet." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Anpassungen an deinem Abo führen zu anteiligen Änderungen an deiner Rechnungssumme. Wenn neu eingeladene Benutzer deine Abo-Benutzerplätze überschreiten, wird dir sofort eine anteilige Gebühr für die zusätzlichen Benutzer berechnet, bis dein Benutzerlimit von $MAX$ erreicht ist.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Du kannst nicht mehr als $COUNT$ Benutzer einladen ohne dein Abo hochzustufen.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Du kannst nicht mehr als $COUNT$ Benutzer einladen ohne dein Abo hochzustufen. Bitte kontaktiere dafür den Kundenservice.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Dein Abo erlaubt insgesamt $COUNT$ Benutzer. Dein Abo wird gefördert und von einer externen Organisation bezahlt.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Anpassungen an deinem Abo führen zu anteiligen Änderungen an deiner Rechnungssumme. Du kannst nicht mehr als $COUNT$ Benutzer einladen ohne deine Abo-Benutzerplätze zu erhöhen.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Hinzufügen von Benutzerplätzen" + }, + "seatsToRemove": { + "message": "Entfernen von Benutzerplätzen" + }, + "seatsAddNote": { + "message": "Das Hinzufügen von Benutzerplätzen führt zu einer Anpassung Ihrer Rechnungssummen und belastet Ihre Zahlungsmethode sofort. Die erste Gebühr wird für den Rest des aktuellen Abrechnungszyklus anteilig berechnet." + }, + "seatsRemoveNote": { + "message": "Das Entfernen von Benutzerplätzen führt zu einer Anpassung Ihrer Rechnungssumme, die als Gutschrift auf Ihre nächste Rechnung angerechnet wird." + }, + "adjustedSeats": { + "message": "$AMOUNT$ Benutzerplätze eingestellt.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Schlüssel aktualisiert" + }, + "updateKeyTitle": { + "message": "Schlüssel aktualisieren" + }, + "updateEncryptionKey": { + "message": "Verschlüsselungscode aktualisieren" + }, + "updateEncryptionKeyShortDesc": { + "message": "Sie verwenden derzeit ein veraltetes Verschlüsselungsschema." + }, + "updateEncryptionKeyDesc": { + "message": "Wir sind auf größere Verschlüsselungscodes umgestiegen, welche bessere Sicherheit und Zugang zu neuen Features bieten. Das Update Ihres Verschlüsselungscodes ist schnell und einfach. Geben Sie einfach hier Ihr Master-Passwort ein. Das Update wird irgendwann verpflichtend." + }, + "updateEncryptionKeyWarning": { + "message": "Nach der Aktualisierung Ihres Verschlüsselungscodes, müssen Sie sich bei allen Bitwarden-Anwendungen, welche Sie momentan benutzen, erneut anmelden (wie z. B. die mobile App oder die Browser-Erweiterungen). Fehler bei Ab- und Anmeldung (welche Ihren neuen Verschlüsselungscode bezieht) könnte zu einer Beschädigung der Daten führen. Wir werden versuchen Sie automatisch auszuloggen, was jedoch verzögert geschehen kann." + }, + "updateEncryptionKeyExportWarning": { + "message": "Alle verschlüsselten Exporte, die Sie gespeichert haben, werden ebenfalls ungültig." + }, + "subscription": { + "message": "Abo" + }, + "loading": { + "message": "Wird geladen" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Organisation hochstufen" + }, + "upgradeOrganizationDesc": { + "message": "Diese Funktion ist für kostenlose Organisationen nicht verfügbar. Wechseln Sie zu einem kostenpflichtigen Abo, um weitere Funktionen freizuschalten." + }, + "createOrganizationStep1": { + "message": "Organisation erstellen: Schritt 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Bevor Sie eine Organisation erstellen können, müssen Sie zuerst ein eigenes kostenloses Konto erstellen." + }, + "refunded": { + "message": "Erstattet" + }, + "nothingSelected": { + "message": "Sie haben keine Auswahl getroffen." + }, + "acceptPolicies": { + "message": "Durch Anwählen dieses Kästchens erklären Sie sich mit folgendem einverstanden:" + }, + "acceptPoliciesError": { + "message": "Die Nutzungsbedingungen und Datenschutzerklärung wurden nicht akzeptiert." + }, + "termsOfService": { + "message": "Allgemeine Geschäftsbedingungen" + }, + "privacyPolicy": { + "message": "Datenschutzerklärung" + }, + "filters": { + "message": "Filter" + }, + "vaultTimeout": { + "message": "Tresor-Timeout" + }, + "vaultTimeoutDesc": { + "message": "Legen Sie einen Timeout für den Tresor und die auszuführende Aktion fest." + }, + "oneMinute": { + "message": "1 Minute" + }, + "fiveMinutes": { + "message": "5 Minuten" + }, + "fifteenMinutes": { + "message": "15 Minuten" + }, + "thirtyMinutes": { + "message": "30 Minuten" + }, + "oneHour": { + "message": "1 Stunde" + }, + "fourHours": { + "message": "4 Stunden" + }, + "onRefresh": { + "message": "Bei Browser-Aktualisierung" + }, + "dateUpdated": { + "message": "Aktualisiert", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Passwort aktualisiert", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisation ist deaktiviert." + }, + "licenseIsExpired": { + "message": "Lizenz ist abgelaufen." + }, + "updatedUsers": { + "message": "Aktualisierte Benutzer" + }, + "selected": { + "message": "Ausgewählt" + }, + "ownership": { + "message": "Besitzer" + }, + "whoOwnsThisItem": { + "message": "Wem gehört dieser Eintrag?" + }, + "strong": { + "message": "Stark", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Gut", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Schwach", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Sehr schwach", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Schwaches Master-Passwort" + }, + "weakMasterPasswordDesc": { + "message": "Das Master-Passwort, welches Sie gewählt haben, ist schwach. Sie sollten ein starkes Master-Passwort auswählen, um Ihr Bitwarden-Konto ausreichend zu schützen. Sind Sie sicher, dass Sie dieses Master-Passwort verwenden wollen?" + }, + "rotateAccountEncKey": { + "message": "Auch den Verschlüsselungscode meines Kontos aktualisieren" + }, + "rotateEncKeyTitle": { + "message": "Verschlüsselungscode aktualisieren" + }, + "rotateEncKeyConfirmation": { + "message": "Sind Sie sich sicher, dass Sie ihren Verschlüsselungscode aktualisieren möchten?" + }, + "attachmentsNeedFix": { + "message": "Dieser Eintrag hat Anhänge, die repariert werden müssen." + }, + "attachmentFixDesc": { + "message": "Diese Dateianlage muss aufgrund ihres Alters aktualisiert werden. Klicken Sie hier, um mehr zu erfahren." + }, + "fix": { + "message": "Reparieren", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Es gibt alte Dateianhänge in ihrem Tresor, die repariert werden müssen, bevor Sie Ihren Verschlüsselungscode aktualisieren können." + }, + "yourAccountsFingerprint": { + "message": "Prüfschlüssel für Ihren 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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Um die Sicherheit ihres Verschlüsselungscodes zu gewähren, bestätigen Sie bitte den Prüfschlüssel des Benutzers.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Nicht erneut nach dem Prüfschlüssel fragen", + "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." + }, + "free": { + "message": "Kostenlos", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-Schlüssel" + }, + "apiKeyDesc": { + "message": "Dein API-Schlüssel kann zur Authentifizierung für die öffentlichen Bitwarden-API benutzt werden." + }, + "apiKeyRotateDesc": { + "message": "Mit der Erneuerung des API-Schlüssels wird der bisherige Schlüssel ungültig. Sie können Ihren API-Schlüssel erneuern, wenn die sichere Verwendung Ihres aktuellen Schlüssel nicht mehr gewährleistet ist." + }, + "apiKeyWarning": { + "message": "Ihr API-Schlüssel hat vollen Zugriff auf die Organisation. Er sollte geheim gehalten werden." + }, + "userApiKeyDesc": { + "message": "Ihr API-Schlüssel kann zur Authentifizierung im Bitwarden CLI verwendet werden." + }, + "userApiKeyWarning": { + "message": "Ihr API-Schlüssel ist ein alternativer Authentifizierungsmechanismus. Er sollte geheim gehalten werden." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Anmeldeinformationen", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API-Schlüssel anzeigen" + }, + "rotateApiKey": { + "message": "API-Schlüssel erneuern" + }, + "selectOneCollection": { + "message": "Sie müssen mindestens eine Sammlung auswählen." + }, + "couldNotChargeCardPayInvoice": { + "message": "Wir sind nicht in der Lage Ihre Kreditkarte zu belasten. Bitte bezahlen Sie den unten aufgelisteten noch nicht beglichenen Rechnungsbetrag." + }, + "inAppPurchase": { + "message": "In-App-Kauf" + }, + "cannotPerformInAppPurchase": { + "message": "Sie können diese Aktion nicht durchführen, wenn sie eine In-App-Kauf Zahlungsart nutzen." + }, + "manageSubscriptionFromStore": { + "message": "Sie müssen Ihr Abonnement im entsprechenden App Store verwalten, über dem Ihr In-App-Kauf getätigt wurde." + }, + "minLength": { + "message": "Mindestlänge" + }, + "clone": { + "message": "Duplizieren" + }, + "masterPassPolicyDesc": { + "message": "Mindestanforderungen für die Stärke des Master-Passworts festlegen." + }, + "twoStepLoginPolicyDesc": { + "message": "Benutzer müssen eine zweistufige Anmeldung für ihre persönlichen Konten einrichten." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisationsmitglieder, die keine zweistufige Anmeldung für ihr persönliches Konto aktiviert haben, werden aus der Organisation entfernt und erhalten eine E-Mail, die sie über die Änderung benachrichtigt." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Sie sind Mitglied einer Organisation, die eine Zwei-Faktor-Authentifizierung für Ihr Benutzerkonto verlangt. Wenn Sie alle Zwei-Faktor-Authentifizierungsanbieter deaktivieren, werden Sie automatisch aus diesen Organisationen entfernt." + }, + "passwordGeneratorPolicyDesc": { + "message": "Mindestanforderungen für die Passwortgenerator-Konfiguration festlegen." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien beeinflussen Ihre Generator-Einstellungen." + }, + "masterPasswordPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien erfordern, dass Ihr Master-Passwort die folgenden Anforderungen erfüllt:" + }, + "policyInEffectMinComplexity": { + "message": "Kleinste Komplexitätsstufe 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": "Ihr neues Master-Passwort entspricht nicht den Anforderungen der Richtlinie." + }, + "minimumNumberOfWords": { + "message": "Mindestzahl an Wörtern" + }, + "defaultType": { + "message": "Standardtyp" + }, + "userPreference": { + "message": "Benutzereinstellung" + }, + "vaultTimeoutAction": { + "message": "Aktion bei Tresor-Timeout" + }, + "vaultTimeoutActionLockDesc": { + "message": "Ein gesperrter Tresor erfordert die Eingabe des Master-Passworts, um erneut 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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Papierkorb durchsuchen" + }, + "permanentlyDelete": { + "message": "Dauerhaft löschen" + }, + "permanentlyDeleteSelected": { + "message": "Auswahl dauerhaft löschen" + }, + "permanentlyDeleteItem": { + "message": "Eintrag dauerhaft löschen" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Soll dieser Eintrag wirklich gelöscht werden?" + }, + "permanentlyDeletedItem": { + "message": "Eintrag dauerhaft gelöscht" + }, + "permanentlyDeletedItems": { + "message": "Dauerhaft gelöschte Einträge" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Sie haben $COUNT$ Eintrag/Einträge zum unwiderruflichen Löschen ausgewählt. Sind Sie sicher, dass Sie diese(n) Eintrag/Einträge dauerhaft löschen möchten?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Eintrag $ID$ dauerhaft gelöscht.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Wiederherstellen" + }, + "restoreSelected": { + "message": "Auswahl wiederherstellen" + }, + "restoreItem": { + "message": "Eintrag wiederherstellen" + }, + "restoredItem": { + "message": "Wiederhergestellter Eintrag" + }, + "restoredItems": { + "message": "Wiederhergestellte Einträge" + }, + "restoreItemConfirmation": { + "message": "Soll dieser Eintrag wirklich wiederhergestellt werden?" + }, + "restoreItems": { + "message": "Einträge wiederherstellen" + }, + "restoreSelectedItemsDesc": { + "message": "Sie haben $COUNT$ Eintrag/Einträge zum Wiederherstellen ausgewählt. Sind Sie sicher, dass Sie diese(n) Eintrag/Einträge dauerhaft löschen möchten?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Eintrag $ID$ wiederhergestellt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Nach dem Ausloggen verlieren Sie jeglichen Zugriff auf Ihren Tresor und es ist nach Ablauf der Timeout-Zeit eine Online-Authentifizierung erforderlich. Sind Sie sicher, dass Sie diese Einstellung nutzen möchten?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bestätigung der Timeout-Aktion" + }, + "hidePasswords": { + "message": "Passwörter verstecken" + }, + "countryPostalCodeRequiredDesc": { + "message": "Wir benötigen diese Informationen nur zur Berechnung der Umsatzsteuer und Finanzberichterstattung." + }, + "includeVAT": { + "message": "MwSt./GST-Informationen einschließen (optional)" + }, + "taxIdNumber": { + "message": "Umsatzsteuernummer" + }, + "taxInfoUpdated": { + "message": "Steuerinformationen aktualisiert." + }, + "setMasterPassword": { + "message": "Masterpasswort festlegen" + }, + "ssoCompleteRegistration": { + "message": "Bitte legen Sie ein Masterpasswort für den Schutz Ihres Tresors fest, um die Anmeldung über SSO abzuschließen." + }, + "identifier": { + "message": "Kennung" + }, + "organizationIdentifier": { + "message": "Organisationskennung" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Über den Single Sign-on Ihrer Organisation anmelden. Bitte geben Sie Ihre Organisationskennung an, um zu beginnen." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "Sie können diesen Tab nun schließen und in der Erweiterung fortfahren." + }, + "includeAllTeamsFeatures": { + "message": "Alle Teams Funktionen, zusätzlich:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentifikation über SAML2.0 und OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Unternehmensrichtlinien" + }, + "ssoValidationFailed": { + "message": "SSO Validierung fehlgeschlagen" + }, + "ssoIdentifierRequired": { + "message": "Unternehmenskennung ist erforderlich." + }, + "unlinkSso": { + "message": "SSO Verknüpfung aufheben" + }, + "unlinkSsoConfirmation": { + "message": "Bist du sicher, dass du SSO für diese Organisation aufheben möchtest?" + }, + "linkSso": { + "message": "SSO verknüpfen" + }, + "singleOrg": { + "message": "Einzelne Organisation" + }, + "singleOrgDesc": { + "message": "Benutzern verbieten, anderen Organisationen beizutreten." + }, + "singleOrgBlockCreateMessage": { + "message": "Ihre aktuelle Organisation hat eine Richtlinie, die es Ihnen nicht erlaubt, mehr als einer Organisation beizutreten. Bitte kontaktieren Sie die Administratoren Ihrer Organisation oder melden Sie sich mit einem anderen Bitwarden-Konto an." + }, + "singleOrgPolicyWarning": { + "message": "Organisationsmitglieder, die nicht Eigentümer oder Administratoren sind und bereits Mitglied einer anderen Organisation sind, werden aus Ihrer Organisation entfernt." + }, + "requireSso": { + "message": "Single Sign-On Authentifizierung" + }, + "requireSsoPolicyDesc": { + "message": "Benutzer müssen sich per Enterprise Single Sign-On anmelden." + }, + "prerequisite": { + "message": "Voraussetzung" + }, + "requireSsoPolicyReq": { + "message": "Die Unternehmensrichtlinie für eine einzelne Organisation muss aktiviert sein, bevor diese Richtlinie aktiviert werden kann." + }, + "requireSsoPolicyReqError": { + "message": "Richtlinie für eine einzelne Organisation nicht aktiviert." + }, + "requireSsoExemption": { + "message": "Organisationseigentümer und Administratoren sind von der Durchsetzung dieser Richtlinie ausgenommen." + }, + "sendTypeFile": { + "message": "Datei" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Neues Send erstellen", + "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." + }, + "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": "Send gelöscht", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSend": { + "message": "Send löschen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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": "Falls 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" + }, + "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." + }, + "disabled": { + "message": "Deaktiviert" + }, + "sendLink": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Send Link kopieren", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Passwort entfernen" + }, + "removedPassword": { + "message": "Passwort entfernt" + }, + "removePasswordConfirmation": { + "message": "Sind Sie sicher, dass Sie das Passwort entfernen möchten?" + }, + "hideEmail": { + "message": "Meine E-Mail-Adresse vor den Empfängern ausblenden." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Alle Sends" + }, + "maxAccessCountReached": { + "message": "Maximale Zugriffsanzahl erreicht", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Ausstehende Löschung" + }, + "expired": { + "message": "Abgelaufen" + }, + "searchSends": { + "message": "Sends suchen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Dieses Send ist mit einem Passwort geschützt. Bitte geben Sie unten das Passwort ein, um fortzufahren.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Kennen Sie das Passwort nicht? Fragen Sie den Absender nach dem benötigten Passwort, um auf dieses Send zuzugreifen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Dieses Send ist standardmäßig ausgeblendet. Sie können die Sichtbarkeit mit dem Button unten umschalten.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Datei herunterladen" + }, + "sendAccessUnavailable": { + "message": "Das Send, auf das Sie zugreifen möchten, existiert nicht oder ist nicht mehr verfügbar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Die mit diesem Send verbundene Datei konnte nicht gefunden werden.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Keine Sends zu finden.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Notfallzugriff" + }, + "emergencyAccessDesc": { + "message": "Gewähren und verwalten Sie einen Notfallzugriff für vertrauenswürdige Kontakte. Vertrauenswürdige Kontakte können im Notfall Zugriff verlangen, um Ihr Konto entweder einzusehen oder es zu übernehmen. Besuchen Sie unsere Hilfeseite für weitere Informationen und Details, wie der Austausch über Zero-Knowledge funktioniert." + }, + "emergencyAccessOwnerWarning": { + "message": "Sie sind Eigentümer einer oder mehrerer Organisationen. Wenn Sie einem Notfallkontakt Übernahmezugang gewähren, kann dieser nach einer Übernahme alle Ihre Berechtigungen als Eigentümer nutzen." + }, + "trustedEmergencyContacts": { + "message": "Vertrauenswürdige Notfallkontakte" + }, + "noTrustedContacts": { + "message": "Sie haben noch keine Notfallkontakte hinzugefügt, laden Sie einen vertrauenswürdigen Kontakt ein, um zu beginnen." + }, + "addEmergencyContact": { + "message": "Notfallkontakt hinzufügen" + }, + "designatedEmergencyContacts": { + "message": "Als Notfallkontakt benannt" + }, + "noGrantedAccess": { + "message": "Sie wurden noch nicht als Notfallkontakt für jemanden benannt." + }, + "inviteEmergencyContact": { + "message": "Notfallkontakt einladen" + }, + "editEmergencyContact": { + "message": "Notfallkontakt bearbeiten" + }, + "inviteEmergencyContactDesc": { + "message": "Laden Sie einen neuen Notfallkontakt ein, indem Sie die E-Mail-Adresse seines Bitwarden-Kontos unten eintragen. Falls dieser noch kein Bitwarden-Konto besitzt, wird er/sie zur Erstellung eines neuen Kontos aufgefordert." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Notfallzugriff ausgelöst" + }, + "emergencyAccessRecoveryApproved": { + "message": "Notfallzugriff genehmigt" + }, + "viewDesc": { + "message": "Kann alle Einträge in Ihrem eigenen Tresor sehen." + }, + "takeover": { + "message": "Übernahme" + }, + "takeoverDesc": { + "message": "Kann Ihr Konto mit einem neuen Master-Passwort zurücksetzen." + }, + "waitTime": { + "message": "Wartezeit" + }, + "waitTimeDesc": { + "message": "Benötigte Zeit, bevor der Zugang automatisch gewährt wird." + }, + "oneDay": { + "message": "1 Tag" + }, + "days": { + "message": "$DAYS$ Tage", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Eingeladener Benutzer." + }, + "acceptEmergencyAccess": { + "message": "Sie wurden eingeladen, ein Notfallkontakt für den oben genannten Benutzer zu werden. Um die Einladung anzunehmen, müssen Sie sich einloggen oder ein neues Bitwarden-Konto erstellen." + }, + "emergencyInviteAcceptFailed": { + "message": "Die Einladung konnte nicht angenommen werden. Bitten Sie den Benutzer, eine neue Einladung zu versenden." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Die Einladung kann nicht angenommen werden. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Sie können auf die Notfalloptionen für diesen Benutzer zugreifen, nachdem Ihre Identität bestätigt wurde. Wir senden Ihnen eine E-Mail, wenn dies geschieht." + }, + "requestAccess": { + "message": "Zugriff anfordern" + }, + "requestAccessConfirmation": { + "message": "Sind Sie sicher, dass Sie einen Notfallzugriff anfordern möchten? Sie erhalten nach $WAITTIME$ Tag(en) Zugang oder wann immer der Benutzer die Anfrage manuell genehmigt.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Notfallzugriff für $USER$ angefordert. Wir werden Sie per E-Mail benachrichtigen, wenn Sie fortfahren können.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Genehmigen" + }, + "reject": { + "message": "Ablehnen" + }, + "approveAccessConfirmation": { + "message": "Sind Sie sicher, dass Sie den Notfallzugriff genehmigen möchten? Dies gibt $USER$ folgende Berechtigung auf Ihr Konto: $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Notfallzugriff genehmigt." + }, + "emergencyRejected": { + "message": "Notfallzugriff abgelehnt" + }, + "passwordResetFor": { + "message": "Passwort für $USER$ zurückgesetzt. Sie können sich jetzt mit dem neuen Passwort anmelden.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Persönliches Eigentum" + }, + "personalOwnershipPolicyDesc": { + "message": "Benutzern vorschreiben, Tresoreinträge in einer Organisation zu speichern, indem sie die persönliche Eigentumsoption entfernen." + }, + "personalOwnershipExemption": { + "message": "Organisationseigentümer und Administratoren sind von der Durchsetzung dieser Richtlinie ausgenommen." + }, + "personalOwnershipSubmitError": { + "message": "Aufgrund einer Unternehmensrichtlinie dürfen Sie keine Einträge in Ihrem persönlichen Tresor speichern. Ändern Sie die Eigentümer-Option in eine Organisation und wählen Sie aus den verfügbaren Sammlungen." + }, + "disableSend": { + "message": "Send deaktivieren" + }, + "disableSendPolicyDesc": { + "message": "Benutzern das Erstellen oder Bearbeiten eines Bitwarden Sends nicht gestatten. Das Löschen eines bestehenden Sends ist weiterhin erlaubt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Benutzer der Organisation, die die Richtlinien der Organisation verwalten können, sind von der Durchsetzung dieser Richtlinie ausgenommen." + }, + "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 können Sie 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." + }, + "sendOptions": { + "message": "Send Einstellungen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Einstellungen zum Erstellen und Bearbeiten von Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Benutzer der Organisation, die die Richtlinien der Organisation verwalten können, sind von der Durchsetzung dieser Richtlinie ausgenommen." + }, + "disableHideEmail": { + "message": "Benutzern nicht gestatten, ihre E-Mail-Adresse vor Empfängern zu verstecken, wenn sie ein Send erstellen oder bearbeiten.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Die folgenden Organisationsrichtlinien sind derzeit gültig:" + }, + "sendDisableHideEmailInEffect": { + "message": "Benutzer dürfen ihre E-Mail-Adresse beim Erstellen oder Bearbeiten eines Sends nicht vor den Empfängern verstecken.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Richtlinie $ID$ geändert.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Abopreis" + }, + "estimatedTax": { + "message": "Voraussichtliche Steuern" + }, + "custom": { + "message": "Benutzerdefiniert" + }, + "customDesc": { + "message": "Feinere Kontrolle der Benutzer Berechtigungen für erweiterte Konfigurationen erlauben." + }, + "permissions": { + "message": "Berechtigungen" + }, + "accessEventLogs": { + "message": "Zugriff auf Ereignisprotokolle" + }, + "accessImportExport": { + "message": "Zugriff auf Import/Export" + }, + "accessReports": { + "message": "Zugriff auf Berichte" + }, + "missingPermissions": { + "message": "Dir fehlt die erforderliche Berechtigung, um diese Aktion auszuführen." + }, + "manageAllCollections": { + "message": "Alle Sammlungen verwalten" + }, + "createNewCollections": { + "message": "Neue Sammlungen erstellen" + }, + "editAnyCollection": { + "message": "Beliebige Sammlung bearbeiten" + }, + "deleteAnyCollection": { + "message": "Beliebige Sammlung löschen" + }, + "manageAssignedCollections": { + "message": "Zugewiesene Sammlungen verwalten" + }, + "editAssignedCollections": { + "message": "Zugewiesene Sammlungen bearbeiten" + }, + "deleteAssignedCollections": { + "message": "Zugewiesene Sammlungen löschen" + }, + "manageGroups": { + "message": "Gruppen verwalten" + }, + "managePolicies": { + "message": "Richtlinien verwalten" + }, + "manageSso": { + "message": "SSO verwalten" + }, + "manageUsers": { + "message": "Benutzer verwalten" + }, + "manageResetPassword": { + "message": "Passwort Zurücksetzung verwalten" + }, + "disableRequiredError": { + "message": "Du musst die $POLICYNAME$-Richtlinie manuell deaktivieren, bevor diese Richtlinie deaktiviert werden kann.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Eine Organisationsrichtlinie beeinflusst Ihre Eigentümer-Optionen." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Eine Organisationsrichtlinie hat das Importieren von Einträgen in deinem persönlichen Tresor deaktiviert." + }, + "personalOwnershipCheckboxDesc": { + "message": "Persönliches Eigentum für Organisationsbenutzer deaktivieren" + }, + "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." + }, + "sendNameDesc": { + "message": "Ein eigener Name, um dieses Send zu beschreiben.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Der Text, den Sie senden möchten." + }, + "sendFileDesc": { + "message": "Die Datei, die Sie senden möchten." + }, + "copySendLinkOnSave": { + "message": "Den Link zum Teilen dieses Sends beim Speichern in meine Zwischenablage kopieren." + }, + "sendLinkLabel": { + "message": "Send-Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send überträgt einfach und sicher sensible, temporäre Informationen an andere.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Mehr erfahren über", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Teile Text oder Dateien direkt mit jedermann." + }, + "sendVaultCardLearnMore": { + "message": "Mehr erfahren", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "sehen", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "wie es funktioniert", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "oder", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "probieren Sie es aus", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "oder", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "registrieren Sie sich", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "um es heute auszuprobieren.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden Benutzer $USER_IDENTIFIER$ hat Folgendes mit Ihnen geteilt", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Der Bitwarden Benutzer, der dieses Send erstellt hat, hat sich entschieden, seine E-Mail-Adresse zu verstecken. Sie sollten sicherstellen, dass Sie der Quelle dieses Links vertrauen, bevor Sie dessen Inhalt verwenden oder herunterladen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Das angegebene Verfallsdatum ist nicht gültig." + }, + "deletionDateIsInvalid": { + "message": "Das angegebene Löschdatum ist nicht gültig." + }, + "expirationDateAndTimeRequired": { + "message": "Ein Verfallsdatum und eine Zeit sind erforderlich." + }, + "deletionDateAndTimeRequired": { + "message": "Ein Löschdatum und eine Zeit sind erforderlich." + }, + "dateParsingError": { + "message": "Es gab einen Fehler beim Speichern Ihrer Lösch- und Verfallsdaten." + }, + "webAuthnFallbackMsg": { + "message": "Um Ihre 2FA zu verifizieren, klicken Sie bitte unten auf den Button." + }, + "webAuthnAuthenticate": { + "message": "Authentifiziere WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn wird in diesem Browser nicht unterstützt." + }, + "webAuthnSuccess": { + "message": "WebAuthn erfolgreich verifiziert!
Sie können diesen Tab nun schließen." + }, + "hintEqualsPassword": { + "message": "Dein Passwort-Hinweis darf nicht identisch mit deinem Passwort sein." + }, + "enrollPasswordReset": { + "message": "Für Passwort Zurücksetzung registrieren" + }, + "enrolledPasswordReset": { + "message": "Für Passwort Zurücksetzung registriert" + }, + "withdrawPasswordReset": { + "message": "Von Passwort Zurücksetzung abmelden" + }, + "enrollPasswordResetSuccess": { + "message": "Registrierung erfolgreich!" + }, + "withdrawPasswordResetSuccess": { + "message": "Abmeldung erfolgreich!" + }, + "eventEnrollPasswordReset": { + "message": "Der Benutzer $ID$ hat sich für die Unterstützung zum Zurücksetzen des Passworts registriert.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Der Benutzer $ID$ hat sich von der Unterstützung zum Zurücksetzten des Passworts abgemeldet.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master-Passwort für Benutzer $ID$ zurückgesetzt.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "SSO Link für Benutzer $ID$ zurücksetzen", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ hat sich zum ersten Mal mit SSO angemeldet", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Passwort zurücksetzen" + }, + "resetPasswordLoggedOutWarning": { + "message": "Wenn du fortfährst, wird $NAME$ aus seiner aktuellen Sitzung ausgeloggt und muss sich erneut einloggen. Aktive Sitzungen auf anderen Geräten können bis zu einer Stunde weiterhin aktiv bleiben.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "dieser Benutzer" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien erfordern, dass dein Master-Passwort die folgenden Anforderungen erfüllt:" + }, + "resetPasswordSuccess": { + "message": "Passwort erfolgreich zurückgesetzt!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Die Registrierung erlaubt Administratoren der Organisation, dein Master-Passwort zu ändern. Bist du sicher, dass du dich registrieren möchtest?" + }, + "resetPasswordPolicy": { + "message": "Master-Passwort zurücksetzen" + }, + "resetPasswordPolicyDescription": { + "message": "Administratoren in der Organisation erlauben, das Master-Passwort der Organisationsbenutzer zurückzusetzen." + }, + "resetPasswordPolicyWarning": { + "message": "Benutzer in der Organisation müssen sich selbst registrieren oder automatisch registriert sein, bevor Administratoren deren Master-Passwort zurücksetzen können." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatische Registrierung" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Alle Benutzer werden automatisch für das Zurücksetzen des Passworts registriert, sobald ihre Einladung angenommen wurde." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Benutzer, die bereits in der Organisation sind, werden nicht rückwirkend für das Zurücksetzen des Passworts registriert. Sie müssen sich selbst registrieren, bevor Administratoren deren Master-Passwort zurücksetzen können." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Neue Benutzer automatisch registrieren" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Diese Organisation hat eine Unternehmensrichtlinie, die dich automatisch zum Zurücksetzen deines Passworts registriert. Die Registrierung wird es Administratoren der Organisation erlauben, dein Master-Passwort zu ändern." + }, + "resetPasswordOrgKeysError": { + "message": "Die Rückmeldung der Organisationsschlüssel ist null" + }, + "resetPasswordDetailsError": { + "message": "Die Rückmeldung der Passwort Details Zurücksetzung ist null" + }, + "trashCleanupWarning": { + "message": "Einträge, die länger als 30 Tage im Papierkorb waren, werden automatisch gelöscht." + }, + "trashCleanupWarningSelfHosted": { + "message": "Einträge, die einige Zeit im Papierkorb waren, werden automatisch gelöscht." + }, + "passwordPrompt": { + "message": "Master-Passwort erneut abfragen" + }, + "passwordConfirmation": { + "message": "Master-Passwort bestätigen" + }, + "passwordConfirmationDesc": { + "message": "Diese Aktion ist geschützt. Um fortzufahren, geben Sie bitte Ihr Master-Passwort erneut ein, um Ihre Identität zu bestätigen." + }, + "reinviteSelected": { + "message": "Einladungen erneut senden" + }, + "noSelectedUsersApplicable": { + "message": "Diese Aktion ist für keinen der ausgewählten Benutzer anwendbar." + }, + "removeUsersWarning": { + "message": "Bist du sicher, dass du die folgenden Benutzer entfernen möchtest? Der Prozess kann einige Sekunden dauern und kann nicht unterbrochen oder abgebrochen werden." + }, + "theme": { + "message": "Design" + }, + "themeDesc": { + "message": "Wähle ein Design für deinen Web-Tresor." + }, + "themeSystem": { + "message": "Benutze Systemdesign" + }, + "themeDark": { + "message": "Dunkel" + }, + "themeLight": { + "message": "Hell" + }, + "confirmSelected": { + "message": "Auswahl bestätigen" + }, + "bulkConfirmStatus": { + "message": "Multi-Aktion Status" + }, + "bulkConfirmMessage": { + "message": "Erfolgreich bestätigt." + }, + "bulkReinviteMessage": { + "message": "Erfolgreich wieder eingeladen." + }, + "bulkRemovedMessage": { + "message": "Erfolgreich entfernt" + }, + "bulkFilteredMessage": { + "message": "Ausgeschlossen, nicht anwendbar für diese Aktion." + }, + "fingerprint": { + "message": "Fingerabdruck" + }, + "removeUsers": { + "message": "Benutzer entfernen" + }, + "error": { + "message": "Fehler" + }, + "resetPasswordManageUsers": { + "message": "Benutzer verwalten muss ebenfalls mit der Passwort zurücksetzen Berechtigung aktiviert werden" + }, + "setupProvider": { + "message": "Anbieter-Einrichtung" + }, + "setupProviderLoginDesc": { + "message": "Du wurdest eingeladen, einen neuen Anbieter einzurichten. Um fortzufahren, musst du dich anmelden oder ein neues Bitwarden-Konto erstellen." + }, + "setupProviderDesc": { + "message": "Bitte gib unten die Details ein, um die Anbieter-Einrichtung abzuschließen. Kontaktiere den Kundenservice, falls du Fragen hast." + }, + "providerName": { + "message": "Anbietername" + }, + "providerSetup": { + "message": "Der Anbieter wurde eingerichtet." + }, + "clients": { + "message": "Kunden" + }, + "providerAdmin": { + "message": "Anbieter-Administrator" + }, + "providerAdminDesc": { + "message": "Der Benutzer mit dem höchsten Zugriffsrechten, der alle Aspekte Ihres Anbieters verwalten kann, sowie auf die Kunden-Organisationen zugreifen und diese verwalten kann." + }, + "serviceUser": { + "message": "Service Benutzer" + }, + "serviceUserDesc": { + "message": "Service Benutzer können auf alle Kunden-Organisationen zugreifen und sie verwalten." + }, + "providerInviteUserDesc": { + "message": "Lade einen neuen Benutzer zu deinem Anbieter ein, indem du die E-Mail-Adresse seines Bitwarden-Kontos unten einträgst. Falls dieser noch kein Bitwarden-Konto besitzt, wird er/sie zur Erstellung eines neuen Kontos aufgefordert." + }, + "joinProvider": { + "message": "Anbieter beitreten" + }, + "joinProviderDesc": { + "message": "Du wurdest eingeladen, dem oben genannten Anbieter beizutreten. Um die Einladung anzunehmen, musst du ein Bitwarden-Konto erstellen, oder dich mit deinem bestehenden Bitwarden-Konto anmelden." + }, + "providerInviteAcceptFailed": { + "message": "Einladung konnte nicht angenommen werden. Bitte einen Anbieter-Administrator darum, eine neue Einladung zu versenden." + }, + "providerInviteAcceptedDesc": { + "message": "Du kannst dem Anbieter beitreten, sobald ein Administrator deine Mitgliedschaft bestätigt hat. Wir werden dich dann per E-Mail benachrichtigen." + }, + "providerUsersNeedConfirmed": { + "message": "Du hast Benutzer, die deine Einladung angenommen haben, aber noch bestätigt werden müssen. Benutzer haben erst Zugriff auf den Anbieter, wenn sie bestätigt wurden." + }, + "provider": { + "message": "Anbieter" + }, + "newClientOrganization": { + "message": "Neue Kunden-Organisation" + }, + "newClientOrganizationDesc": { + "message": "Erstelle eine neue Kunden-Organisation, die dir als Anbieter zugeordnet wird. Du kannst auf diese Organisation zugreifen und diese verwalten." + }, + "addExistingOrganization": { + "message": "Bestehende Organisation hinzufügen" + }, + "myProvider": { + "message": "Mein Anbieter" + }, + "addOrganizationConfirmation": { + "message": "Bist du sicher, dass du $ORGANIZATION$ als Kunde zu $PROVIDER$ hinzufügen möchtest?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organisation wurde erfolgreich zum Anbieter hinzugefügt" + }, + "accessingUsingProvider": { + "message": "Zugriff auf Organisation mit Anbieter $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Anbieter ist deaktiviert." + }, + "providerUpdated": { + "message": "Anbieter aktualisiert" + }, + "yourProviderIs": { + "message": "Dein Anbieter ist $PROVIDER$. Dieser hat Verwaltungs- und Abrechnungsrechte für deine Organisation.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Die Organisation $ORGANIZATION$ wurde von deinem Anbieter getrennt.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Bist du sicher, dass du diese Organisation trennen möchten? Die Organisation wird weiterhin existieren, wird aber nicht mehr vom Anbieter verwaltet." + }, + "add": { + "message": "Hinzufügen" + }, + "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 dein Master-Passwort 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." + }, + "masterPasswordInvalidWarning": { + "message": "Ihr Master-Passwort erfüllt nicht die Anforderungen dieser Organisation. Um der Organisation beizutreten, müssen Sie Ihr Master-Passwort jetzt aktualisieren. Ein Fortfahren wird Ihre aktuelle Sitzung abmelden. Danach müssen Sie sich wieder anmelden. Aktive Sitzungen auf anderen Geräten können bis zu einer Stunde weiterhin aktiv bleiben." + }, + "maximumVaultTimeout": { + "message": "Tresor-Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Konfiguriere ein maximales Tresor-Timeout für alle Benutzer." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximales Tresor-Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Ungültiger maximaler Tresor-Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Benutzerdefinierter Tresor-Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Dein Tresor-Timeout überschreitet die von deinem Unternehmen festgelegte Beschränkung." + }, + "disablePersonalVaultExport": { + "message": "Persönlichen Tresor-Export deaktivieren" + }, + "disablePersonalVaultExportDesc": { + "message": "Benutzern den Export ihrer privaten Tresor-Daten verbieten." + }, + "vaultExportDisabled": { + "message": "Tresor-Export deaktiviert" + }, + "personalVaultExportPolicyInEffect": { + "message": "Eine oder mehrere Unternehmensrichtlinien verhindern es, dass du deinen persönlichen Tresor exportieren kannst." + }, + "selectType": { + "message": "SSO-Typ auswählen" + }, + "type": { + "message": "Typ" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Konfiguration" + }, + "samlSpConfig": { + "message": "SAML Dienstanbieter Konfiguration" + }, + "samlIdpConfig": { + "message": "SAML Identitätsanbieter Konfiguration" + }, + "callbackPath": { + "message": "Rückruf Pfad" + }, + "signedOutCallbackPath": { + "message": "Rückruf Pfad abgemeldet" + }, + "authority": { + "message": "Zertifizierungsstelle" + }, + "clientId": { + "message": "Client-ID" + }, + "clientSecret": { + "message": "Client Geheimnis" + }, + "metadataAddress": { + "message": "Metadaten Adresse" + }, + "oidcRedirectBehavior": { + "message": "OIDC Weiterleitungsverhalten" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Ansprüche vom Benutzer Info-Endpunkt erhalten" + }, + "additionalScopes": { + "message": "Zusätzliche/Benutzerdefinierte Bereiche (durch Komma getrennt)" + }, + "additionalUserIdClaimTypes": { + "message": "Zusätzliche/benutzerdefinierte Client-ID Anspruchstypen (durch Komma getrennt)" + }, + "additionalEmailClaimTypes": { + "message": "Zusätzliche/Benutzerdefinierte E-Mail Anspruchstypen (durch Komma getrennt)" + }, + "additionalNameClaimTypes": { + "message": "Zusätzliche/Benutzerdefinierte Namen Anspruchstypen (durch Komma getrennt)" + }, + "acrValues": { + "message": "Angeforderte Authentifizierungskontextklassen Referenzwerte (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "\"acr\" Anspruchswert in Antwort erwartet (acr Validation)" + }, + "spEntityId": { + "message": "SP Entitäts-ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadaten-URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Namen ID-Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Ausgehender Signaturalgorithmus" + }, + "spSigningBehavior": { + "message": "Signaturverhalten" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimal eingehender Signaturalgorithmus" + }, + "spWantAssertionsSigned": { + "message": "Möchte Zusicherungen signieren" + }, + "spValidateCertificates": { + "message": "Zertifikate überprüfen" + }, + "idpEntityId": { + "message": "Entitäts-ID" + }, + "idpBindingType": { + "message": "Bindungstyp" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign-On Service-URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log-Out Service-URL" + }, + "idpX509PublicCert": { + "message": "Öffentliches X509-Zertifikat" + }, + "idpOutboundSigningAlgorithm": { + "message": "Ausgehender Signaturalgorithmus" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Erlaube unaufgeforderte Authentifizierungsantwort" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Ausgehende Abmeldeanfragen erlauben" + }, + "idpSignAuthenticationRequests": { + "message": "Signiere Authentifizierungsanfragen" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On Konfiguration wurde gespeichert." + }, + "sponsoredFamilies": { + "message": "Kostenloses Bitwarden Familienabo" + }, + "sponsoredFamiliesEligible": { + "message": "Du und deine Familie haben Anspruch auf ein kostenloses Bitwarden Familienabo. Mit deiner persönlichen E-Mail einlösen, um deine Daten zu schützen, auch wenn du nicht am Arbeitsplatz bist." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Löse dein kostenloses Bitwarden für Familien Abo heute ein, um deine Daten zu schützen, auch wenn du nicht am Arbeitsplatz bist." + }, + "sponsoredFamiliesInclude": { + "message": "Das Bitwarden für Familien Abo beinhaltet" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium-Zugang für bis zu 6 Benutzer" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Gemeinsame Sammlungen für Familiengeheimnisse" + }, + "badToken": { + "message": "Der Link ist nicht mehr gültig. Bitte lasse dir vom Förderer das Angebot erneut senden." + }, + "reclaimedFreePlan": { + "message": "Kostenloses Abo zurückgefordert" + }, + "redeem": { + "message": "Einlösen" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Wähle die Organisation aus, die du gerne fördern möchtest" + }, + "familiesSponsoringOrgSelect": { + "message": "Welches kostenlose Familienangebot möchtest du einlösen?" + }, + "sponsoredFamiliesEmail": { + "message": "Gebe deine persönliche E-Mail ein, um Bitwarden Familien einlösen zu können" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Wenn du diese Organisation verlässt oder aus ihr entfernt wirst, läuft dein Familien-Abo am Ende des Abrechnungszeitraums ab." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Angebot für eine bestehende Organisation akzeptieren oder eine neue Familien-Organisation erstellen." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Dir wurde ein kostenloses Bitwarden Familien-Organisationsabo angeboten. Um fortzufahren, musst du dich in das Konto einloggen, das das Angebot erhalten hat." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Angebot kann nicht angenommen werden. Bitte sende die Angebotsmail von deinem Unternehmenskonto erneut und versuche es noch einmal." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Angebot kann nicht angenommen werden. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Kostenloses Bitwarden Familien-Organisationsangebot einlösen" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Kostenloses Bitwarden Familien-Angebot erfolgreich eingelöst" + }, + "redeemed": { + "message": "Eingelöst" + }, + "redeemedAccount": { + "message": "Eingelöstes Konto" + }, + "revokeAccount": { + "message": "Konto $NAME$ zurückziehen", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Sponsoring-E-Mail erneut an $NAME$ Sponsoring senden", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Kostenloses Familien Abo" + }, + "redeemNow": { + "message": "Jetzt einlösen" + }, + "recipient": { + "message": "Empfänger" + }, + "removeSponsorship": { + "message": "Sponsoring entfernen" + }, + "removeSponsorshipConfirmation": { + "message": "Nachdem du eine Förderung entfernt hast, bist du für dieses Abo und die damit verbundenen Rechnungen verantwortlich. Bist du sicher, dass du fortfahren möchtest?" + }, + "sponsorshipCreated": { + "message": "Förderung erstellt" + }, + "revoke": { + "message": "Zurückziehen" + }, + "emailSent": { + "message": "E-Mail gesendet" + }, + "revokeSponsorshipConfirmation": { + "message": "Nach dem Entfernen dieses Kontos ist der Besitzer der Familienorganisation für dieses Abo und die damit verbundenen Rechnungen verantwortlich. Bist du sicher, dass du fortfahren möchtest?" + }, + "removeSponsorshipSuccess": { + "message": "Förderung entfernt" + }, + "ssoKeyConnectorUnavailable": { + "message": "Der Key Connector konnte nicht erreicht werden. Versuche es später erneut." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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 ist erforderlich." + }, + "invalidVerificationCode": { + "message": "Ungültiger Verifizierungscode" + }, + "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" + }, + "removeMasterPassword": { + "message": "Master-Passwort entfernen" + }, + "removedMasterPassword": { + "message": "Master-Passwort entfernt." + }, + "allowSso": { + "message": "SSO-Authentifizierung erlauben" + }, + "allowSsoDesc": { + "message": "Nach der Einrichtung wird deine Konfiguration gespeichert und die Mitglieder können sich mit ihren Identitätsanbieter-Anmeldedaten authentifizieren." + }, + "ssoPolicyHelpStart": { + "message": "Aktiviere die", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO-Richtlinie", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": ", um zu erzwingen, dass sich alle Mitglieder mit SSO anmelden.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO-Authentifizierung und Richtlinien für eine einzelne Organisation werden benötigt, um die Key Connector Entschlüsselung einzurichten." + }, + "memberDecryptionOption": { + "message": "Entschlüsselungsoptionen für Mitglieder" + }, + "memberDecryptionPassDesc": { + "message": "Einmal authentifiziert, entschlüsseln Mitglieder Tresordaten mit ihren Master-Passwörtern." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Verbinde die Anmeldung über SSO mit deinem selbst gehosteten Entschlüssel-Schlüssel-Server. Mit dieser Option müssen Mitglieder ihre Masterpasswörter nicht verwenden, um Tresordaten zu entschlüsseln." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Anmelden mit SSO und Key-Connector-Entschlüsselung\" ist aktiviert. Diese Richtlinie gilt nur für Eigentümer und Adminstratoren." + }, + "enabledSso": { + "message": "SSO aktiviert" + }, + "disabledSso": { + "message": "SSO deaktiviert" + }, + "enabledKeyConnector": { + "message": "Key Connector aktiviert" + }, + "disabledKeyConnector": { + "message": "Key Connector deaktiviert" + }, + "keyConnectorWarning": { + "message": "Sobald der Key Connector eingerichtet ist, können die Mitglieder-Entschlüsselungsoptionen nicht geändert werden." + }, + "migratedKeyConnector": { + "message": "Zum Key Connector migriert" + }, + "paymentSponsored": { + "message": "Bitte gib eine Zahlungsmethode an, die mit der Organisation verbunden wird. Keine Sorge, wir werden dir nichts berechnen, es sei denn, du wählst zusätzliche Funktionen aus oder deine Förderung läuft ab. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Das Förderangebot ist abgelaufen. Du kannst die Organisation, die du erstellt hast, löschen, um eine Gebühr am Ende deiner 7-Tage-Testversion zu vermeiden. Andernfalls kannst du diese Meldung schließen, um die Organisation zu behalten und die Rechnungsverantwortung zu übernehmen." + }, + "newFamiliesOrganization": { + "message": "Neue Familien-Organisation" + }, + "acceptOffer": { + "message": "Angebot annehmen" + }, + "sponsoringOrg": { + "message": "Förderorganisation" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Erfolg! Key Connector erreicht." + }, + "keyConnectorTestFail": { + "message": "Key Connector nicht erreichbar. URL überprüfen." + }, + "sponsorshipTokenHasExpired": { + "message": "Das Förderangebot ist abgelaufen." + }, + "freeWithSponsorship": { + "message": "KOSTENLOS mit Förderung" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ Felder oben müssen beachtet werden.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 Feld oben muss beachtet werden." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ ist erforderlich.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "erforderlich" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Erforderlich, wenn die Entitäts-ID keine URL ist." + }, + "openIdOptionalCustomizations": { + "message": "Optionale Anpassungen" + }, + "openIdAuthorityRequired": { + "message": "Erforderlich, wenn die Zertifizierungsstelle nicht gültig ist." + }, + "separateMultipleWithComma": { + "message": "Mehrere mit einem Komma trennen." + }, + "sessionTimeout": { + "message": "Deine Sitzung ist abgelaufen. Bitte gehe zurück und versuche dich erneut einzuloggen." + }, + "exportingPersonalVaultTitle": { + "message": "Persönlichen Tresor exportieren" + }, + "exportingOrganizationVaultTitle": { + "message": "Tresor der Organisation 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Nur der mit $ORGANIZATION$ verbundene Tresor der Organisation wird exportiert. Persönliche Tresoreinträge und Einträge anderer Organisationen werden nicht berücksichtigt.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Zurück zu den Berichten" + }, + "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": "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-E-Mail-Adresse" + }, + "catchallEmailDesc": { + "message": "Verwenden Sie den konfigurierten Catch-All-Posteingang Ihrer Domain." + }, + "random": { + "message": "Zufällig" + }, + "randomWord": { + "message": "Zufälliges Wort" + }, + "service": { + "message": "Dienst" + } +} diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json new file mode 100644 index 0000000000..720117e97c --- /dev/null +++ b/apps/web/src/locales/el/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "Κωδικός" + }, + "newPassword": { + "message": "Νέος Κωδικός" + }, + "passphrase": { + "message": "Συνθηματικό" + }, + "notes": { + "message": "Σημειώσεις" + }, + "customFields": { + "message": "Προσαρμοσμένα Πεδία" + }, + "cardholderName": { + "message": "Όνομα κατόχου της κάρτας" + }, + "number": { + "message": "Αριθμός" + }, + "brand": { + "message": "Μάρκα" + }, + "expiration": { + "message": "Λήξη" + }, + "securityCode": { + "message": "Κωδικός ασφαλείας (CVV)" + }, + "identityName": { + "message": "Όνομα Ταυτότητας" + }, + "company": { + "message": "Εταιρεία" + }, + "ssn": { + "message": "ΑΜΚΑ" + }, + "passportNumber": { + "message": "Αριθμός Διαβατηρίου" + }, + "licenseNumber": { + "message": "Αριθμός Άδειας" + }, + "email": { + "message": "Email" + }, + "phone": { + "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": "Δεκέμβριος" + }, + "title": { + "message": "Τίτλος" + }, + "mr": { + "message": "Κος" + }, + "mrs": { + "message": "Κα" + }, + "ms": { + "message": "Κα" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Μήνας Λήξης" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "Αφαίρεση" + }, + "unassigned": { + "message": "Χωρίς ανάθεση" + }, + "noneFolder": { + "message": "Χωρίς Φάκελο", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Προσθήκη Φακέλου" + }, + "editFolder": { + "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." + }, + "never": { + "message": "Ποτέ" + }, + "toggleVisibility": { + "message": "Εναλλαγή Ορατότητας" + }, + "toggleCollapse": { + "message": "Εναλλαγή Σύμπτυξης", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Δημιουργία Κωδικού" + }, + "checkPassword": { + "message": "Ελέγξτε εάν ο κωδικός έχει εκτεθεί." + }, + "passwordExposed": { + "message": "Αυτός ο κωδικός έχει εκτεθεί $VALUE$ φορά (ές) σε διαρροές δεδομένων. Πρέπει να τον αλλάξετε.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Αυτός ο κωδικός δεν βρέθηκε σε γνωστές παραβιάσεις δεδομένων. Πρέπει να είναι ασφαλής για χρήση." + }, + "save": { + "message": "Αποθήκευση" + }, + "cancel": { + "message": "Ακύρωση" + }, + "canceled": { + "message": "Ακυρώθηκε" + }, + "close": { + "message": "Κλείσιμο" + }, + "delete": { + "message": "Διαγραφή" + }, + "favorite": { + "message": "Αγαπημένο" + }, + "unfavorite": { + "message": "Μη αγαπημένο" + }, + "edit": { + "message": "Επεξεργασία" + }, + "searchCollection": { + "message": "Αναζήτηση στη συλλογή" + }, + "searchFolder": { + "message": "Αναζήτηση στον Φάκελο" + }, + "searchFavorites": { + "message": "Αναζήτηση στα Αγαπημένα" + }, + "searchType": { + "message": "Τύπος Αναζήτησης", + "description": "Search item type" + }, + "searchVault": { + "message": "Αναζήτηση στο Vault" + }, + "allItems": { + "message": "Όλα τα στοιχεία" + }, + "favorites": { + "message": "Αγαπημένα" + }, + "types": { + "message": "Τύποι" + }, + "typeLogin": { + "message": "Σύνδεση" + }, + "typeCard": { + "message": "Κάρτα" + }, + "typeIdentity": { + "message": "Ταυτότητα" + }, + "typeSecureNote": { + "message": "Ασφαλής Σημείωση" + }, + "typeLoginPlural": { + "message": "Συνδέσεις" + }, + "typeCardPlural": { + "message": "Κάρτες" + }, + "typeIdentityPlural": { + "message": "Ταυτότητες" + }, + "typeSecureNotePlural": { + "message": "Ασφαλείς Σημειώσεις" + }, + "folders": { + "message": "Φάκελοι" + }, + "collections": { + "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": "Χώρα" + }, + "shared": { + "message": "Κοινοποιήθηκε" + }, + "attachments": { + "message": "Συνημμένα" + }, + "select": { + "message": "Επιλογή" + }, + "addItem": { + "message": "Προσθήκη Στοιχείου" + }, + "editItem": { + "message": "Επεξεργασία Στοιχείου" + }, + "viewItem": { + "message": "Προβολή Στοιχείου" + }, + "ex": { + "message": "πχ.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Άλλο" + }, + "share": { + "message": "Κοινοποίηση" + }, + "moveToOrganization": { + "message": "Μετακίνηση στον Οργανισμό" + }, + "valueCopied": { + "message": "$VALUE$ αντιγράφηκε", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Αντιγραφή Τιμής", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Αντιγραφή Κωδικού", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Αντιγραφή Ονόματος Χρήστη", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Αντιγραφή Αριθμού", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Αντιγραφή Κωδικού Ασφαλείας", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Αντιγραφή URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Το Vault μου" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Μετακίνηση Επιλεγμένων στον Οργανισμό" + }, + "deleteSelected": { + "message": "Διαγραφή Επιλεγμένων" + }, + "moveSelected": { + "message": "Μετακίνηση Επιλεγμένων" + }, + "selectAll": { + "message": "Επιλογή Όλων" + }, + "unselectAll": { + "message": "Αποεπιλογή Ολων" + }, + "launch": { + "message": "Εκκίνηση" + }, + "newAttachment": { + "message": "Προσθήκη Νέου Συνημμένου" + }, + "deletedAttachment": { + "message": "Διαγραφή επισύναψης" + }, + "deleteAttachmentConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το συνημμένο;" + }, + "attachmentSaved": { + "message": "Η επισύναψη έχει αποθηκευτεί." + }, + "file": { + "message": "Αρχείο" + }, + "selectFile": { + "message": "Επιλέξτε ένα αρχείο." + }, + "maxFileSize": { + "message": "Το μέγιστο μέγεθος αρχείου είναι 500 MB." + }, + "updateKey": { + "message": "Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη δυνατότητα μέχρι να ενημερώσετε το κλειδί κρυπτογράφησης." + }, + "addedItem": { + "message": "Προστέθηκε στοιχείο" + }, + "editedItem": { + "message": "Επεξεργασμένο στοιχείο" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ μετακινήθηκε στο $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Τα επιλεγμένα αντικείμενα μετακινήθηκαν στο $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Διαγραφή στοιχείου" + }, + "deleteFolder": { + "message": "Διαγραφή Φακέλου" + }, + "deleteAttachment": { + "message": "Διαγραφή συνημμένου" + }, + "deleteItemConfirmation": { + "message": "Θέλετε πραγματικά να στείλετε στον κάδο απορριμμάτων;" + }, + "deletedItem": { + "message": "Διαγραμμένο στοιχείο" + }, + "deletedItems": { + "message": "Διαγραμμένα στοιχεία" + }, + "movedItems": { + "message": "Στοιχεία που έχουν μετακινηθεί" + }, + "overwritePasswordConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αντικαταστήσετε τον τρέχον κωδικό;" + }, + "editedFolder": { + "message": "Επεξεργασμένος φάκελος" + }, + "addedFolder": { + "message": "Προστέθηκε φάκελος" + }, + "deleteFolderConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν το φάκελο;" + }, + "deletedFolder": { + "message": "Διαγραφή φακέλου" + }, + "loggedOut": { + "message": "Αποσυνδεθήκατε" + }, + "loginExpired": { + "message": "Η περίοδος σύνδεσής σας έχει λήξει." + }, + "logOutConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;" + }, + "logOut": { + "message": "Αποσύνδεση" + }, + "ok": { + "message": "Οκ" + }, + "yes": { + "message": "Ναι" + }, + "no": { + "message": "Όχι" + }, + "loginOrCreateNewAccount": { + "message": "Συνδεθείτε ή δημιουργήστε νέο λογαριασμό για να αποκτήσετε πρόσβαση στο vault σας." + }, + "createAccount": { + "message": "Δημιουργία Λογαριασμού" + }, + "logIn": { + "message": "Είσοδος" + }, + "submit": { + "message": "Υποβολή" + }, + "emailAddressDesc": { + "message": "Θα χρησιμοποιήσετε τη διεύθυνση email σας για να συνδεθείτε." + }, + "yourName": { + "message": "Το όνομα σας" + }, + "yourNameDesc": { + "message": "Πως να σας φωνάζουμε;" + }, + "masterPass": { + "message": "Κύριος Κωδικός" + }, + "masterPassDesc": { + "message": "Ο κύριος κωδικός είναι ο κωδικός που χρησιμοποιείτε για την πρόσβαση στο vault σας. Είναι πολύ σημαντικό να μην ξεχάσετε τον κύριο κωδικό. Δεν υπάρχει τρόπος να τον ανακτήσετε σε περίπτωση που τον ξεχάσετε." + }, + "masterPassHintDesc": { + "message": "Η υπόδειξη του κύριου κωδικού μπορεί να σας βοηθήσει να θυμηθείτε τον κωδικό σας, σε περίπτωση που τον ξεχάσετε." + }, + "reTypeMasterPass": { + "message": "Εισάγετε Ξανά τον Κύριο Κωδικό σας" + }, + "masterPassHint": { + "message": "Υπόδειξη Κύριου Κωδικού (προαιρετικό)" + }, + "masterPassHintLabel": { + "message": "Υπόδειξη Κύριου Κωδικού" + }, + "settings": { + "message": "Ρυθμίσεις" + }, + "passwordHint": { + "message": "Υπόδειξη Κωδικού" + }, + "enterEmailToGetHint": { + "message": "Παρακαλούμε εισάγετε το email του λογαριασμού σας, ώστε να λάβετε την υπόδειξη του κύριου κωδικού πρόσβασης." + }, + "getMasterPasswordHint": { + "message": "Λήψη υπόδειξης κύριου κωδικού" + }, + "emailRequired": { + "message": "Απαιτείται μια διεύθυνση email." + }, + "invalidEmail": { + "message": "Μη έγκυρη διεύθυνση e-mail." + }, + "masterPassRequired": { + "message": "Απαιτείται κύριος κωδικός πρόσβασης." + }, + "masterPassLength": { + "message": "Ο κύριος κωδικός πρέπει να έχει μήκος τουλάχιστον 8 χαρακτήρες." + }, + "masterPassDoesntMatch": { + "message": "Η επιβεβαίωση του κύριου κωδικού δεν ταιριάζει." + }, + "newAccountCreated": { + "message": "Ο λογαριασμός σας έχει δημιουργηθεί! Τώρα μπορείτε να συνδεθείτε." + }, + "masterPassSent": { + "message": "Σας στείλαμε ένα email με την υπόδειξη του κύριου κωδικού." + }, + "unexpectedError": { + "message": "Παρουσιάστηκε ένα μη αναμενόμενο σφάλμα." + }, + "emailAddress": { + "message": "Διεύθυνση Email" + }, + "yourVaultIsLocked": { + "message": "Το vault σας είναι κλειδωμένο. Επαληθεύστε τον κύριο κωδικό πρόσβασης για να συνεχίσετε." + }, + "unlock": { + "message": "Ξεκλείδωμα" + }, + "loggedInAsEmailOn": { + "message": "Συνδεθήκατε ως $EMAIL$ στο $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Μη έγκυρος κύριος κωδικός πρόσβασης" + }, + "lockNow": { + "message": "Κλείδωμα Τώρα" + }, + "noItemsInList": { + "message": "Δεν υπάρχουν στοιχεία στη λίστα." + }, + "noCollectionsInList": { + "message": "Δεν υπάρχουν συλλογές στη λίστα." + }, + "noGroupsInList": { + "message": "Δεν υπάρχουν ομάδες στη λίστα." + }, + "noUsersInList": { + "message": "Δεν υπάρχουν χρήστες στη λίστα." + }, + "noEventsInList": { + "message": "Δεν υπάρχουν γεγονότα στη λίστα." + }, + "newOrganization": { + "message": "Νέος Οργανισμός" + }, + "noOrganizationsList": { + "message": "Δεν συμμετέχετε σε κάποιον οργανισμό. Οι οργανισμοί επιτρέπουν την ασφαλή κοινοποίηση στοιχείων με άλλους χρήστες." + }, + "versionNumber": { + "message": "Έκδοση $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "Αποστολή email κωδικού επαλήθευσης ξανά" + }, + "useAnotherTwoStepMethod": { + "message": "Χρήση άλλης μεθόδου δύο παραγόντων" + }, + "insertYubiKey": { + "message": "Τοποθετήστε το YubiKey στη θύρα USB του υπολογιστή σας και έπειτα πατήστε το κουμπί του." + }, + "insertU2f": { + "message": "Εισάγετε το κλειδί ασφαλείας στη θύρα USB του υπολογιστή σας. Αν υπάρχει κουμπί, πατήστε το." + }, + "loginUnavailable": { + "message": "Σύνδεση μη Διαθέσιμη" + }, + "noTwoStepProviders": { + "message": "Αυτός ο λογαριασμός έχει ενεργοποιημένη τη σύνδεση σε δύο βήματα, ωστόσο, κανένας από τους διαμορφωμένους παροχείς δύο βημάτων δεν υποστηρίζεται από αυτό το πρόγραμμα περιήγησης." + }, + "noTwoStepProviders2": { + "message": "Παρακαλούμε χρησιμοποιήστε ένα περιηγητή (όπως Chrome) και/ή προσθέστε επιπλέον παρόχους οι οποίοι υποστηρίζονται καλύτερα από τους περιηγητές internet (όπως για παράδειγμα μια εφαρμογή επαλήθευσης)." + }, + "twoStepOptions": { + "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, 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." + }, + "u2fDesc": { + "message": "Χρησιμοποιήστε οποιοδήποτε κλειδί ασφαλείας με δυνατότητα FIDO U2F για πρόσβαση στον λογαριασμό σας." + }, + "u2fTitle": { + "message": "Κλειδί Aσφαλείας FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Χρησιμοποιήστε οποιοδήποτε κλειδί ασφαλείας WebAuthn για να αποκτήσετε πρόσβαση στο λογαριασμό σας." + }, + "webAuthnMigrated": { + "message": "(Μετεγκατάσταση από το FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Οι κωδικοί επαλήθευσης θα σας αποσταλούν μέσω email." + }, + "continue": { + "message": "Συνέχεια" + }, + "organization": { + "message": "Οργανισμός" + }, + "organizations": { + "message": "Οργανισμοί" + }, + "moveToOrgDesc": { + "message": "Επιλέξτε έναν οργανισμό στον οποίο θέλετε να μετακινήσετε αυτό το στοιχείο. Η μετακίνηση σε έναν οργανισμό μεταβιβάζει την ιδιοκτησία του στοιχείου σε αυτό τον οργανισμό. Δεν θα είστε πλέον ο άμεσος ιδιοκτήτης αυτού του στοιχείου μόλις το μετακινήσετε." + }, + "moveManyToOrgDesc": { + "message": "Επιλέξτε έναν οργανισμό στον οποίο θέλετε να μετακινήσετε αυτά τα στοιχεία. Η μετακίνηση σε έναν οργανισμό μεταβιβάζει την ιδιοκτησία του στοιχείου σε αυτό τον οργανισμό. Δεν θα είστε πλέον ο άμεσος ιδιοκτήτης αυτού του στοιχείου μόλις το μετακινήσετε." + }, + "collectionsDesc": { + "message": "Επεξεργαστείτε τις συλλογές με τις οποίες μοιράζεται αυτό το στοιχείο. Μόνο οι χρήστες των οργανισμών που έχουν πρόσβαση σε αυτές τις συλλογές θα μπορούν να βλέπουν αυτό το στοιχείο." + }, + "deleteSelectedItemsDesc": { + "message": "Έχετε επιλέξει $COUNT$ στοιχείο(α) για διαγραφή. Είστε βέβαιοι ότι θέλετε να διαγράψετε όλα αυτά τα στοιχεία;", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Επιλέξτε ένα φάκελο στον οποίο θέλετε να μετακινήσετε το $COUNT$ επιλεγμένο(α) στοιχεία.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Έχετε επιλέξει $COUNT$ αντικείμενα. $MOVEABLE_COUNT$ αντικείμενα μπορούν να μετακινηθούν σε έναν οργανισμό, $NONMOVEABLE_COUNT$ δεν μπορεί.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Κωδικός Επαλήθευσης (TOTP)" + }, + "copyVerificationCode": { + "message": "Αντιγραφή Κωδικού Επαλήθευσης" + }, + "warning": { + "message": "Προειδοποίηση" + }, + "confirmVaultExport": { + "message": "Επιβεβαίωση εξαγωγής Vault" + }, + "exportWarningDesc": { + "message": "Αυτή η εξαγωγή περιέχει τα δεδομένα σε μη κρυπτογραφημένη μορφή. Δεν πρέπει να αποθηκεύετε ή να στείλετε το εξαγόμενο αρχείο μέσω μη ασφαλών τρόπων (όπως μέσω email). Διαγράψτε το αμέσως μόλις τελειώσετε με τη χρήση του." + }, + "encExportKeyWarningDesc": { + "message": "Αυτή η εξαγωγή κρυπτογραφεί τα δεδομένα σας χρησιμοποιώντας το κλειδί κρυπτογράφησης του λογαριασμού σας. Εάν ποτέ περιστρέψετε το κλειδί κρυπτογράφησης του λογαριασμού σας, θα πρέπει να κάνετε εξαγωγή ξανά, καθώς δεν θα μπορείτε να αποκρυπτογραφήσετε αυτό το αρχείο εξαγωγής." + }, + "encExportAccountWarningDesc": { + "message": "Τα κλειδιά κρυπτογράφησης λογαριασμού είναι μοναδικά για κάθε λογαριασμό χρήστη Bitwarden, οπότε δεν μπορείτε να εισάγετε μια κρυπτογραφημένη εξαγωγή σε διαφορετικό λογαριασμό." + }, + "export": { + "message": "Εξαγωγή" + }, + "exportVault": { + "message": "Εξαγωγή Vault" + }, + "fileFormat": { + "message": "Μορφή Αρχείου" + }, + "exportSuccess": { + "message": "Τα δεδομένα του vault σας έχουν εξαχθεί." + }, + "passwordGenerator": { + "message": "Γεννήτρια Κωδικού" + }, + "minComplexityScore": { + "message": "Ελάχιστος Βαθμός Πολυπλοκότητας" + }, + "minNumbers": { + "message": "Ελάχιστα Αριθμητικά Ψηφία" + }, + "minSpecial": { + "message": "Ελάχιστο Ειδικών Χαρακτήρων", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Αποφυγή Αμφιλεγόμενων Χαρακτήρων" + }, + "regeneratePassword": { + "message": "Επαναδημιουργία Κωδικού" + }, + "length": { + "message": "Μήκος" + }, + "numWords": { + "message": "Αριθμός Λέξεων" + }, + "wordSeparator": { + "message": "Διαχωριστής Λέξεων" + }, + "capitalize": { + "message": "Κεφαλαία", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Συμπερίληψη Αριθμών" + }, + "passwordHistory": { + "message": "Ιστορικό Κωδικού" + }, + "noPasswordsInList": { + "message": "Δεν υπάρχουν κωδικοί στη λίστα." + }, + "clear": { + "message": "Εκκαθάριση", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Ο Λογαριασμός Ενημερώθηκε" + }, + "changeEmail": { + "message": "Αλλαγή Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Η διαδικασία θα αλλάξει τη διεύθυνση email του λογαριασμού σας. Δεν θα αλλάξει το email που χρησιμοποιείται για έλεγχο ταυτότητας δύο παραγόντων. Μπορείτε να αλλάξετε αυτό το email στις ρυθμίσεις σύνδεσης δύο βημάτων." + }, + "newEmail": { + "message": "Νέο Email" + }, + "code": { + "message": "Κωδικός" + }, + "changeEmailDesc": { + "message": "Έχουμε στείλει έναν κωδικό επαλήθευσης στο $EMAIL$. Ελέγξτε το email σας για αυτόν τον κωδικό και πληκτρολογήστε τον παρακάτω, προκειμένου να ολοκληρώσετε την αλλαγή διεύθυνσης του email σας.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία και θα σας ζητήσει να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να παραμείνουν ενεργοποιημένες για έως και μία ώρα." + }, + "emailChanged": { + "message": "Το email άλλαξε" + }, + "logBackIn": { + "message": "Παρακαλούμε συνδεθείτε ξανά." + }, + "logBackInOthersToo": { + "message": "Παρακαλούμε συνδεθείτε ξανά. Εάν χρησιμοποιείτε άλλες εφαρμογές Bitwarden, αποσυνδεθείτε και επιστρέψτε σε αυτές επίσης." + }, + "changeMasterPassword": { + "message": "Αλλαγή Κύριου Κωδικού" + }, + "masterPasswordChanged": { + "message": "Ο Κύριος Κωδικός Αλλαξε" + }, + "currentMasterPass": { + "message": "Τρέχων Κύριος Κωδικός" + }, + "newMasterPass": { + "message": "Νέος Κύριος Κωδικός" + }, + "confirmNewMasterPass": { + "message": "Επιβεβαίωση Νέου Κύριου Κωδικού" + }, + "encKeySettings": { + "message": "Ρυθμίσεις Κλειδιού Κρυπτογράφησης" + }, + "kdfAlgorithm": { + "message": "Αλγόριθμος KDF" + }, + "kdfIterations": { + "message": "Επαναλήψεις KDF" + }, + "kdfIterationsDesc": { + "message": "Οι περισσότερες επαναλήψεις του KDF μπορούν να σας βοηθήσουν να προστατέψετε τον κύριο κωδικό από έναν εισβολέα.. Συνιστούμε μια τιμή $VALUE$ ή περισσότερο.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Η ρύθμιση των επαναλήψεων KDF σε υπερβολικά υψηλά επίπεδα μπορεί να οδηγήσει σε κακή απόδοση κατά τη σύνδεση (και ξεκλειδώματος) του Bitwarden σε συσκευές με βραδύτερους CPU. Σας συνιστούμε να αυξήσετε την τιμή σε $INCREMENT$ και στη συνέχεια να δοκιμάσετε όλες τις συσκευές σας.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Αλλαγή KDF" + }, + "encKeySettingsChanged": { + "message": "Οι Ρυθμίσεις του Κλειδιού Κρυπτογράφησης Αλλαξαν" + }, + "dangerZone": { + "message": "Επικίνδυνη Ζώνη" + }, + "dangerZoneDesc": { + "message": "Προσοχή, αυτές οι ενέργειες είναι μη αναστρέψιμες!" + }, + "deauthorizeSessions": { + "message": "Κατάργηση Εξουσιοδότησης Συνεδριών" + }, + "deauthorizeSessionsDesc": { + "message": "Σκέφτεστε μήπως έχει συνδεθεί άλλη συσκευή στον λογαριασμό σας; Συνεχίστε παρακάτω για να καταργήσετε την πρόσβαση σε όλους τους υπολογιστές ή συσκευές που είχατε χρησιμοποιήσει στο παρελθόν. Αυτό το βήμα ασφαλείας συνιστάται αν χρησιμοποιούσατε προηγουμένως έναν δημόσιο υπολογιστή ή αν αποθηκεύσατε κατά λάθος τον κωδικό σας, σε μια συσκευή που δεν είναι δική σας. Αυτό το βήμα θα καθαρίσει επίσης όλες τις προηγούμενες συνδέσεις δύο βημάτων που έγιναν." + }, + "deauthorizeSessionsWarning": { + "message": "Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία και θα σας ζητήσει να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να παραμείνουν ενεργοποιημένες για έως και μία ώρα." + }, + "sessionsDeauthorized": { + "message": "Η Ανακληθεί η Πρόσβαση από Όλες τις Συνεδρίες" + }, + "purgeVault": { + "message": "Εκκαθάριση Vault" + }, + "purgedOrganizationVault": { + "message": "Εκκαθάριση vault οργανισμού." + }, + "vaultAccessedByProvider": { + "message": "Vault με πρόσβαση από τον πάροχο." + }, + "purgeVaultDesc": { + "message": "Προχωρήστε παρακάτω για να διαγράψετε όλα τα στοιχεία και τους φακέλους στo vault σας. Τα στοιχεία που ανήκουν σε έναν οργανισμό των οποίων τα στοιχεία κοινοποιείτε, δεν θα διαγραφούν." + }, + "purgeOrgVaultDesc": { + "message": "Προχωρήστε παρακάτω για να διαγράψετε όλα τα στοιχεία του vault του οργανισμού." + }, + "purgeVaultWarning": { + "message": "Η εκκαθάριση του vault είναι μόνιμη. Αυτό δεν μπορεί να αναιρεθεί." + }, + "vaultPurged": { + "message": "Το vault σας έχει καθαριστεί." + }, + "deleteAccount": { + "message": "Διαγραφή Λογαριασμού" + }, + "deleteAccountDesc": { + "message": "Προχωρήστε παρακάτω για να διαγράψετε το λογαριασμό σας και όλα τα συσχετιζόμενα δεδομένα." + }, + "deleteAccountWarning": { + "message": "Η διαγραφή του λογαριασμού σας είναι μόνιμη. Δε μπορεί να αναιρεθεί." + }, + "accountDeleted": { + "message": "Ο Λογαριασμός Διαγράφηκε" + }, + "accountDeletedDesc": { + "message": "Ο λογαριασμός σας έκλεισε και όλα τα σχετικά δεδομένα διαγράφηκαν." + }, + "myAccount": { + "message": "Ο Λογαριασμός μου" + }, + "tools": { + "message": "Εργαλεία" + }, + "importData": { + "message": "Εισαγωγή Δεδομένων" + }, + "importError": { + "message": "Σφάλμα Εισαγωγής" + }, + "importErrorDesc": { + "message": "Παρουσιάστηκε πρόβλημα με τα δεδομένα που επιχειρήσατε να εισαγάγετε. Παρακαλώ επιλύστε τα σφάλματα που αναφέρονται παρακάτω στο αρχείο προέλευσης και προσπαθήστε ξανά." + }, + "importSuccess": { + "message": "Τα δεδομένα έχουν εισαχθεί με επιτυχία στο vault σας." + }, + "importWarning": { + "message": "Εισάγετε δεδομένα στο $ORGANIZATION$. Τα δεδομένα σας μπορεί να μοιραστούν με μέλη αυτού του οργανισμού. Θέλετε να προχωρήσετε;", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Τα δεδομένα δεν έχουν διαμορφωθεί σωστά. Ελέγξτε το αρχείο εισαγωγής και δοκιμάστε ξανά." + }, + "importNothingError": { + "message": "Δεν υπάρχει κάτι για εισαγωγή." + }, + "importEncKeyError": { + "message": "Σφάλμα αποκρυπτογράφησης του εξαγόμενου αρχείου. Το κλειδί κρυπτογράφησης δεν ταιριάζει με το κλειδί κρυπτογράφησης που χρησιμοποιήθηκε για την εξαγωγή των δεδομένων." + }, + "selectFormat": { + "message": "Επιλέξτε μορφή του αρχείου εισαγωγής" + }, + "selectImportFile": { + "message": "Επιλέξτε το αρχείο εισαγωγής" + }, + "orCopyPasteFileContents": { + "message": "ή αντιγράψτε/επικολλήστε τα περιεχόμενα του αρχείου εισαγωγής" + }, + "instructionsFor": { + "message": "$NAME$ Οδηγίες", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Επιλογές" + }, + "optionsDesc": { + "message": "Προσαρμόστε την εμπειρία σας στο web vault." + }, + "optionsUpdated": { + "message": "Οι επιλογές ενημερώθηκαν" + }, + "language": { + "message": "Γλώσσα" + }, + "languageDesc": { + "message": "Αλλάξτε γλώσσα που χρησιμοποιείται από το web vault." + }, + "disableIcons": { + "message": "Απενεργοποίηση Εικονιδίων Ιστοσελίδας" + }, + "disableIconsDesc": { + "message": "Τα εικονίδια ιστοσελίδων παρέχουν μια αναγνωρίσιμη εικόνα δίπλα σε κάθε στοιχείο σύνδεσης του vault σας." + }, + "enableGravatars": { + "message": "Ενεργοποίηση Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Χρήση εικόνων avatar από gravatar.com." + }, + "enableFullWidth": { + "message": "Ενεργοποίηση διάταξης πλήρους πλάτους", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Επιτρέψτε το web vault να επεκτείνει το πλήρες πλάτος του παραθύρου του Browser." + }, + "default": { + "message": "Προεπιλογή" + }, + "domainRules": { + "message": "Κανόνες Tομέα" + }, + "domainRulesDesc": { + "message": "Αν έχετε την ίδια σύνδεση σε πολλούς διαφορετικούς τομείς ιστοσελίδων, μπορείτε να την επισημάνετε \"Ταυτόσημη\". Οι \"Παγκόσμιοι\" τομείς θα δημιουργηθούν για εσάς από το Bitwarden." + }, + "globalEqDomains": { + "message": "Παγκόσμιοι Tαυτόσημοι Tομείς" + }, + "customEqDomains": { + "message": "Προσαρμογή Tαυτόσημων Tομέων" + }, + "exclude": { + "message": "Εξαίρεση" + }, + "include": { + "message": "Συμπερίληψη" + }, + "customize": { + "message": "Προσαρμογή" + }, + "newCustomDomain": { + "message": "Νέος Προσαρμοσμένος Τομέας" + }, + "newCustomDomainDesc": { + "message": "Καταχωρίστε μια λίστα με τομείς που χωρίζονται με κόμματα. Επιτρέπονται μόνο οι \"Βασικοί\" τομείς. Μην εισάγετε υποτομείς. Για παράδειγμα, πληκτρολογήστε \"google.com\" αντί για \"www.google.com\". Μπορείτε επίσης να εισαγάγετε το \"androidapp: //package.name\" για να συσχετίσετε μια εφαρμογή Android με άλλους τομείς ιστοσελίδων." + }, + "customDomainX": { + "message": "Προσαρμοσμένος Τομέας $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Οι Τομείς Ενημερώθηκαν" + }, + "twoStepLogin": { + "message": "Σύνδεση σε δύο βήματα" + }, + "twoStepLoginDesc": { + "message": "Ασφαλίστε το λογαριασμό σας απαιτώντας ένα επιπλέον βήμα κατά τη σύνδεση." + }, + "twoStepLoginOrganizationDesc": { + "message": "Απαιτήστε σύνδεση σε δύο βήματα για τους χρήστες του οργανισμού σας, ρυθμίζοντας τους παρόχους σε επίπεδο οργανισμού." + }, + "twoStepLoginRecoveryWarning": { + "message": "Η ενεργοποίηση σύνδεσης δύο βημάτων μπορεί να κλειδώσει οριστικά το λογαριασμό σας από το Bitwarden. Ένας κωδικός ανάκτησης σάς επιτρέπει να έχετε πρόσβαση στον λογαριασμό σας σε περίπτωση που δεν μπορείτε πλέον να χρησιμοποιήσετε τη σύνδεση δύο βημάτων (π. χ. χάνετε τη συσκευή σας). Η υποστήριξη πελατών του Bitwarden δεν θα είναι σε θέση να σας βοηθήσει αν χάσετε την πρόσβαση στο λογαριασμό σας. Συνιστούμε να γράψετε ή να εκτυπώσετε τον κωδικό ανάκτησης και να τον φυλάξετε σε ασφαλές μέρος." + }, + "viewRecoveryCode": { + "message": "Προβολή Κωδικού Ανάκτησης" + }, + "providers": { + "message": "Πάροχοι", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Ενεργοποίηση" + }, + "enabled": { + "message": "Ενεργοποιημένο" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Συνδρομή Premium" + }, + "premiumRequired": { + "message": "Απαιτείται η έκδοση Premium" + }, + "premiumRequiredDesc": { + "message": "Για να χρησιμοποιήσετε αυτό το χαρακτηριστικό, απαιτείται η έκδοση premium." + }, + "youHavePremiumAccess": { + "message": "Έχετε premium πρόσβαση" + }, + "alreadyPremiumFromOrg": { + "message": "Έχετε ήδη πρόσβαση σε χαρακτηριστικά premium λόγω ενός οργανισμού στον οποίο είστε μέλος." + }, + "manage": { + "message": "Διαχείριση" + }, + "disable": { + "message": "Απενεργοποίηση" + }, + "twoStepLoginProviderEnabled": { + "message": "Ο πάροχος σύνδεσης δύο βημάτων του λογαριασμού σας, είναι ενεργοποιημένος." + }, + "twoStepLoginAuthDesc": { + "message": "Εισάγετε τον κύριο κωδικό για να τροποποιήσετε τις ρυθμίσεις σύνδεσης δύο βημάτων." + }, + "twoStepAuthenticatorDesc": { + "message": "Ακολουθήστε αυτά τα βήματα για να ρυθμίσετε τη σύνδεση δύο βημάτων με μια εφαρμογή επαλήθευσης:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Λήψη μιας εφαρμογής επαλήθευσης, δύο παραγόντων" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Χρειάζεστε μια εφαρμογή επαλήθευσης δύο παραγόντων; Κατεβάστε μία από τις παρακάτω" + }, + "iosDevices": { + "message": "Συσκευές iOS" + }, + "androidDevices": { + "message": "Συσκευές Android" + }, + "windowsDevices": { + "message": "Συσκευές Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Προτείνονται αυτές οι εφαρμογές, ωστόσο, άλλες εφαρμογές επαλήθευσης θα λειτουργήσουν επίσης." + }, + "twoStepAuthenticatorScanCode": { + "message": "Σαρώστε αυτόν τον κώδικα QR με την εφαρμογή επαλήθευσης" + }, + "key": { + "message": "Κλειδί" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Καταχωρίστε τον 6ψήφιο κωδικό επαλήθευσης που προκύπτει από την εφαρμογή" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Σε περίπτωση που χρειαστεί να την προσθέσετε σε άλλη συσκευή, παρακάτω είναι ο κωδικός QR (ή το κλειδί) που απαιτείται από την εφαρμογή επαλήθευσης." + }, + "twoStepDisableDesc": { + "message": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε τη σύνδεση δύο βημάτων;" + }, + "twoStepDisabled": { + "message": "Η σύνδεση δύο βημάτων απενεργοποιήθηκε." + }, + "twoFactorYubikeyAdd": { + "message": "Προσθήκη νέου YubiKey στο λογαριασμό σας" + }, + "twoFactorYubikeyPlugIn": { + "message": "Συνδέστε το YubiKey στη θύρα USB του υπολογιστή σας." + }, + "twoFactorYubikeySelectKey": { + "message": "Επιλέξτε το πρώτο κενό πεδίο εισαγωγής YubiKey παρακάτω." + }, + "twoFactorYubikeyTouchButton": { + "message": "Πατήστε το κουμπί του YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Αποθηκεύστε τη φόρμα." + }, + "twoFactorYubikeyWarning": { + "message": "Λόγω περιορισμών της πλατφόρμας, το YubiKey δεν μπορεί να χρησιμοποιηθεί σε όλες τις εφαρμογές του Bitwarden. Θα πρέπει να ενεργοποιήσετε έναν άλλο πάροχο σύνδεσης δύο βημάτων, ώστε να έχετε πρόσβαση στον λογαριασμό σας όταν δεν θα μπορείτε να χρησιμοποιήσετε το YubiKey. Υποστηριζόμενες πλατφόρμες:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, εφαρμογή υπολογιστή, CLI και όλες τις επεκτάσεις του προγράμματος περιήγησης σε μια συσκευή με θύρα USB που μπορεί να δεχτεί YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Εφαρμογές κινητής σε μια συσκευή με δυνατότητες NFC ή θύρα USB, που να μπορεί να δεχτεί το YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Κλειδί $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Υποστήριξη NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Ένα από τα κλειδιά μου υποστηρίζει NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Εάν ένα από τα YubiKeys υποστηρίζει NFC (όπως YubiKey NEO), θα σας ζητηθεί σε κινητές συσκευές όποτε εντοπίζεται η διαθεσιμότητα NFC." + }, + "yubikeysUpdated": { + "message": "Τα YubiKeys ενημερώθηκαν" + }, + "disableAllKeys": { + "message": "Απενεργοποίηση Όλων των Κλειδιών" + }, + "twoFactorDuoDesc": { + "message": "Καταχωρίστε τις πληροφορίες εφαρμογής Bitwarden από τον πίνακα διαχειριστή Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Κλειδί Ολοκλήρωσης" + }, + "twoFactorDuoSecretKey": { + "message": "Μυστικό Κλειδί" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Ακολουθήστε αυτά τα βήματα για να ρυθμίσετε τη σύνδεση δύο βημάτων μέσω email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Εισάγετε τη διεύθυνση email που θέλετε να λαμβάνετε τους κωδικούς επαλήθευσης" + }, + "twoFactorEmailEnterCode": { + "message": "Εισάγετε τον 6ψήφιο κωδικό επαλήθευσης που λάβατε στο email σας" + }, + "sendEmail": { + "message": "Αποστολή Email" + }, + "twoFactorU2fAdd": { + "message": "Προσθήκη κλειδιού ασφαλείας FIDO U2F στο λογαριασμό σας" + }, + "removeU2fConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτό το κλειδί ασφαλείας;" + }, + "twoFactorWebAuthnAdd": { + "message": "Προσθέστε ένα κλειδί ασφαλείας WebAuthn στο λογαριασμό σας" + }, + "readKey": { + "message": "Ανάγνωση Κλειδιού" + }, + "keyCompromised": { + "message": "Το κλειδί έχει παραβιαστεί." + }, + "twoFactorU2fGiveName": { + "message": "Δώστε στο κλειδί ασφαλείας ένα φιλικό όνομα για να το αναγνωρίσετε." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Συνδέστε το κλειδί ασφαλείας στη θύρα USB του υπολογιστή σας, και κάντε κλικ στο κουμπί \"Ανάγνωση Κλειδιού\"." + }, + "twoFactorU2fTouchButton": { + "message": "Εάν το κλειδί ασφαλείας έχει κουμπί, πατήστε το." + }, + "twoFactorU2fSaveForm": { + "message": "Αποθηκεύστε τη φόρμα." + }, + "twoFactorU2fWarning": { + "message": "Λόγω περιορισμών της πλατφόρμας, το YubiKey δεν μπορεί να χρησιμοποιηθεί σε όλες τις εφαρμογές του Bitwarden. Θα πρέπει να ενεργοποιήσετε έναν άλλο πάροχο σύνδεσης δύο βημάτων, ώστε να έχετε πρόσβαση στον λογαριασμό σας όταν δεν μπορείτε να χρησιμοποιήσετε το YubiKey. Υποστηριζόμενες πλατφόρμες:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault και επεκτάσεις προγραμμάτων περιήγησης σε επιτραπέζιο/φορητό υπολογιστή με ενεργοποιημένη τη δυνατότητα U2F (Chrome, Opera, Vivaldi ή Firefox με ενεργοποιημένο το FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "Σας περιμένουμε να πατήστε το κουμπί του κλειδιού ασφαλείας" + }, + "twoFactorU2fClickSave": { + "message": "Κάντε κλικ στο κουμπί \"Αποθήκευση\" παρακάτω για να ενεργοποιήσετε το κλειδί ασφαλείας, με σύνδεση δύο βημάτων." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Παρουσιάστηκε πρόβλημα κατά την ανάγνωση του κλειδιού ασφαλείας. Προσπάθησε ξανά." + }, + "twoFactorWebAuthnWarning": { + "message": "Λόγω περιορισμών της πλατφόρμας, το WebAuthn δεν μπορεί να χρησιμοποιηθεί σε όλες τις εφαρμογές Bitwarden. Θα πρέπει να ενεργοποιήσετε έναν άλλο πάροχο σύνδεσης δύο βημάτων, ώστε να έχετε πρόσβαση στο λογαριασμό σας όταν δεν μπορεί να χρησιμοποιηθεί το WebAuthn. Υποστηριζόμενες πλατφόρμες:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault και επεκτάσεις browser σε έναν σταθερό / φορητό υπολογιστή με ένα πρόγραμμα περιήγησης WebAuthn (Chrome, Opera, Vivaldi, ή Firefox με FIDO U2F ενεργοποιημένο)." + }, + "twoFactorRecoveryYourCode": { + "message": "Ο Bitwarden κωδικός ανάκτησης, εισόδου δύο βημάτων" + }, + "twoFactorRecoveryNoCode": { + "message": "Δεν έχετε ενεργοποιήσει κάποιον πάροχο σύνδεσης δύο παραγόντων ακόμα. Αφού ενεργοποιήσετε έναν πάροχο σύνδεσης, μπορείτε να ελέγξετε εδώ, για τον κωδικό ανάκτησης." + }, + "printCode": { + "message": "Εκτύπωση Κωδικού", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Αναφορές" + }, + "reportsDesc": { + "message": "Προσδιορίστε και κλείστε τα κενά ασφαλείας στους online λογαριασμούς σας κάνοντας κλικ στις παρακάτω αναφορές." + }, + "unsecuredWebsitesReport": { + "message": "Αναφορά Μη-Ασφαλών Ιστοσελίδων" + }, + "unsecuredWebsitesReportDesc": { + "message": "Η χρήση μη ασφαλισμένων ιστοσελίδων με πρόθεμα http:// μπορεί να είναι επικίνδυνο. Αν η ιστοσελίδα το επιτρέπει, θα πρέπει πάντα να έχετε πρόσβαση σε αυτήν χρησιμοποιώντας το πρότυπο https://, έτσι ώστε η σύνδεσή σας να είναι κρυπτογραφημένη." + }, + "unsecuredWebsitesFound": { + "message": "Βρέθηκαν μη ασφαλής ιστοσελίδες" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Βρήκαμε $COUNT$ στοιχεία στο vault σας, με μη ασφαλές URI. Θα πρέπει να αλλάξετε το URI σε https:/ εφόσον το επιτρέπει η ιστοσελίδα.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Κανένα στοιχείο στο vault σας δεν διαθέτει ανασφάλιστα URIs." + }, + "inactive2faReport": { + "message": "Μη Ενεργή Αναφορά 2FA" + }, + "inactive2faReportDesc": { + "message": "Ο έλεγχος ταυτότητας δύο παραγόντων (2FA) είναι μια σημαντική ρύθμιση ασφαλείας που βοηθά στη διασφάλιση των λογαριασμών σας. Αν το υποστηρίζει η ιστοσελίδα, θα πρέπει πάντα να ενεργοποιείτε τον έλεγχο ταυτότητας δύο παραγόντων." + }, + "inactive2faFound": { + "message": "Βρέθηκαν Συνδέσεις Χωρίς 2FA" + }, + "inactive2faFoundDesc": { + "message": "Βρήκαμε $COUNT$ ιστοσελίδα(ες) στο vault σας, που ενδέχεται να μην έχει ρυθμιστεί ο έλεγχος ταυτότητας δύο παραγόντων (σύμφωνα με το twofactorauth.org). Για επιπλέον προστασία αυτών των λογαριασμών, θα πρέπει να ενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Δεν βρέθηκαν ιστοσελίδες στο vault σας που να μην έχει οριστεί, η επαλήθευση δύο παραγόντων." + }, + "instructions": { + "message": "Οδηγίες" + }, + "exposedPasswordsReport": { + "message": "Αναφορά Κωδικών που έχουν Εκτεθεί" + }, + "exposedPasswordsReportDesc": { + "message": "Οι εκτεθειμένοι κωδικοί, είναι κωδικοί που έχουν εμφανιστεί σε γνωστές διαρροές δεδομένων, και που κυκλοφόρησαν δημόσια ή πουλήθηκαν στο dark web από χάκερς." + }, + "exposedPasswordsFound": { + "message": "Βρέθηκαν Εκτεθειμένοι Κωδικοί" + }, + "exposedPasswordsFoundDesc": { + "message": "Βρήκαμε $COUNT$ στοιχεία στο vault σας, που έχουν εκτεθειμένους κωδικούς σε γνωστές παραβιάσεις δεδομένων. Θα πρέπει να τους αλλάξετε προκειμένου να χρησιμοποιήσετε έναν νέο κωδικό.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Κανένα στοιχείο του vault σας δεν περιέχει κωδικούς που να έχουν εκτεθεί σε γνωστές παραβιάσεις δεδομένων." + }, + "checkExposedPasswords": { + "message": "Έλεγχος Εκτεθειμένων Κωδικών" + }, + "exposedXTimes": { + "message": "Εκτέθηκε $COUNT$ φορά(ές)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Αναφορά Αδύναμων Κωδικών" + }, + "weakPasswordsReportDesc": { + "message": "Οι αδύναμοι κωδικοί μπορούν εύκολα να βρεθούν από τους χάκερ με τα αυτοματοποιημένα εργαλεία που χρησιμοποιούν για να σπάσουν τους κωδικούς. Η γεννήτρια κωδικού του Bitwarden μπορεί να σας βοηθήσει να δημιουργήσετε ισχυρούς κωδικούς." + }, + "weakPasswordsFound": { + "message": "Βρέθηκαν Αδύναμοι Κωδικοί" + }, + "weakPasswordsFoundDesc": { + "message": "Βρήκαμε $COUNT$ στοιχεία στο vault σας, με κωδικούς που δεν είναι ισχυροί. Θα πρέπει να τους ενημερώσετε και να χρησιμοποιήσετε ισχυρότερους κωδικούς.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Κανένα απο τα στοιχεία στο vault σας δεν έχει αδύναμους κωδικούς." + }, + "reusedPasswordsReport": { + "message": "Αναφορά Επανα-χρησιμοποιημένων Κωδικών" + }, + "reusedPasswordsReportDesc": { + "message": "Εάν μια υπηρεσία ή λογαριασμός που χρησιμοποιείτε έχει εκτεθεί, η επαναλαμβανόμενη χρήση του ίδιου κωδικού, μπορεί να επιτρέψει στους χάκερς να αποκτήσουν εύκολα πρόσβαση σε περισσότερους λογαριασμούς σας στο διαδίκτυο. Θα πρέπει να χρησιμοποιείτε έναν μοναδικό κωδικό για κάθε λογαριασμό ή υπηρεσία." + }, + "reusedPasswordsFound": { + "message": "Βρέθηκαν Επανα-χρησιμοποιούμενοι Κωδικοί" + }, + "reusedPasswordsFoundDesc": { + "message": "Βρήκαμε $COUNT$ κωδικούς που επανα-χρησιμοποιούνται στο vault σας. Θα πρέπει να αλλάξετε τον κάθε ένα, σε κάτι μοναδικό.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Δεν υπάρχουν συνδέσεις στο vault σας, οι οποίες να περιέχουν κωδικούς που επανα-χρησιμοποιούνται." + }, + "reusedXTimes": { + "message": "Επαναχρησιμοποιείται $COUNT$ φορές", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Αναφορά Παραβίασης Δεδομένων" + }, + "breachDesc": { + "message": "Μια \"παραβίαση\" είναι ένα περιστατικό όπου τα δεδομένα μίας ιστοσελίδας, έχουν παραβιαστεί από χάκερς, αποκτούν πρόσβαση και στη συνέχεια τα δημοσιοποιούν. Ελέγξτε τους τύπους των δεδομένων που διακυβεύονται (διευθύνσεις email, κωδικοί, πιστωτικές κάρτες κλπ.) και ακολουθήστε τις κατάλληλες ενέργειες, όπως η αλλαγή των κωδικών." + }, + "breachCheckUsernameEmail": { + "message": "Ελέγξτε τυχόν ονόματα χρήστη ή διευθύνσεις email που χρησιμοποιείτε." + }, + "checkBreaches": { + "message": "Έλεγχος Παραβιάσεων" + }, + "breachUsernameNotFound": { + "message": "Το $USERNAME$ δεν βρέθηκε σε καμία γνωστή παραβίαση δεδομένων.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Καλά Νέα", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "Το $USERNAME$ βρέθηκε $COUNT$ φορά (ες) σε παραβιάσεις δεδομένων στο διαδίκτυο.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Βρέθηκαν Παραβιασμένοι Λογαριασμοί" + }, + "compromisedData": { + "message": "Δεδομένα που έχουν παραβιαστεί" + }, + "website": { + "message": "Ιστοσελίδα" + }, + "affectedUsers": { + "message": "Επηρεαζόμενοι Χρήστες" + }, + "breachOccurred": { + "message": "Προέκυψε Παραβίαση" + }, + "breachReported": { + "message": "Αναφέρθηκε Παραβίαση" + }, + "reportError": { + "message": "Παρουσιάστηκε σφάλμα κατά την φόρτωση της αναφοράς. Προσπάθησε ξανά" + }, + "billing": { + "message": "Χρέωση" + }, + "accountCredit": { + "message": "Λογαριασμός Πίστωσης", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Υπόλοιπο Λογαριασμού", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Προσθήκη Μονάδων", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Ποσό", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Οι μονάδες που προστέθηκαν, θα εμφανιστούν στο λογαριασμό σας μετά την πλήρη επεξεργασία της πληρωμής. Ορισμένες μέθοδοι πληρωμής καθυστερούν και μπορεί να διαρκέσουν περισσότερο από άλλες." + }, + "makeSureEnoughCredit": { + "message": "Βεβαιωθείτε ότι ο λογαριασμός σας έχει αρκετές μονάδες για αυτήν την αγορά. Αν ο λογαριασμός σας δεν διαθέτει αρκετές μονάδες, θα χρησιμοποιηθεί η προκαθορισμένη μέθοδος πληρωμής για τη διαφορά. Μπορείτε να προσθέσετε μονάδες στο λογαριασμό σας από τη σελίδα Χρέωσης." + }, + "creditAppliedDesc": { + "message": "Οι μονάδες του λογαριασμού σας, μπορούν να χρησιμοποιηθούν για να κάνετε αγορές. Κάθε διαθέσιμη μονάδα θα εφαρμοστεί αυτόματα στα παραστατικά που δημιουργούνται για αυτόν το λογαριασμό." + }, + "goPremium": { + "message": "Αποκτήστε Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Έχετε αναβαθμίσει σε premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Αναβαθμίστε το λογαριασμό σας σε premium και ξεκλειδώστε μερικές επιπλέον σπουδαίες λειτουργίες." + }, + "premiumSignUpStorage": { + "message": "1 GB κρυπτογραφημένο αποθηκευτικό χώρο για συνημμένα αρχεία." + }, + "premiumSignUpTwoStep": { + "message": "Πρόσθετες επιλογές σύνδεσης δύο παραγόντων, όπως το YubiKey, το FIDO U2F και το Duo." + }, + "premiumSignUpEmergency": { + "message": "Πρόσβαση Έκτακτης Ανάγκης" + }, + "premiumSignUpReports": { + "message": "Ασφάλεια κωδικών, υγεία λογαριασμού και αναφορές διαρροής δεδομένων, προκειμένου να διατηρήσετε ασφαλές το vault σας." + }, + "premiumSignUpTotp": { + "message": "TOTP κωδικός επαλήθευσης (2FA) για συνδέσεις στο vault σας." + }, + "premiumSignUpSupport": { + "message": "Προτεραιότητα υποστήριξης πελατών." + }, + "premiumSignUpFuture": { + "message": "Όλα τα μελλοντικά χαρακτηριστικά premium. Περισσότερα σύντομα!" + }, + "premiumPrice": { + "message": "Όλα για μόνο $PRICE$ /έτος!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Πρόσθετα" + }, + "premiumAccess": { + "message": "Πρόσβαση Premium" + }, + "premiumAccessDesc": { + "message": "Μπορείτε να προσθέσετε premium πρόσβαση σε όλα τα μέλη του οργανισμού σας για $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Επιπλέον χώρος αποθήκευσης (GB)" + }, + "additionalStorageGbDesc": { + "message": "# επιπλέον GB" + }, + "additionalStorageIntervalDesc": { + "message": "Το πακέτο σας έρχεται με $SIZE$ κρυπτογραφημένης αποθήκευσης αρχείων. Μπορείτε να προσθέσετε επιπλέον αποθηκευτικό χώρο για $PRICE$ ανά GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Σύνοψη" + }, + "total": { + "message": "Σύνολο" + }, + "year": { + "message": "έτος" + }, + "month": { + "message": "μήνας" + }, + "monthAbbr": { + "message": "μην.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Η μέθοδος πληρωμής θα χρεωθεί αμέσως και στη συνέχεια σε πάγια βάση κάθε χρόνο. Μπορείτε να το ακυρώσετε οποιαδήποτε στιγμή." + }, + "paymentCharged": { + "message": "Ο τρόπος πληρωμής σας θα χρεωθεί αμέσως και στη συνέχεια ανά τακτά χρονικά διαστήματα κάθε $INTERVAL$. Μπορείτε να το ακυρώσετε οποιαδήποτε στιγμή.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Το πακέτο σας έρχεται με δωρεάν δοκιμή 7 ημερών. Ο τρόπος πληρωμής σας δεν θα χρεωθεί μέχρι να τελειώσει η δοκιμή. Η χρέωση θα πραγματοποιείται σε επαναλαμβανόμενη βάση κάθε $INTERVAL$. Μπορείτε να το ακυρώσετε οποιαδήποτε στιγμή." + }, + "paymentInformation": { + "message": "Πληροφορίες Πληρωμής" + }, + "billingInformation": { + "message": "Πληροφορίες Χρέωσης" + }, + "creditCard": { + "message": "Πιστωτική Κάρτα" + }, + "paypalClickSubmit": { + "message": "Κάντε κλικ στο κουμπί PayPal για να συνδεθείτε στον λογαριασμό σας στο PayPal και στη συνέχεια, κάντε κλικ στο κουμπί Υποβολή παρακάτω για να συνεχίσετε." + }, + "cancelSubscription": { + "message": "Ακύρωση Συνδρομής" + }, + "subscriptionCanceled": { + "message": "Η συνδρομή ακυρώθηκε." + }, + "pendingCancellation": { + "message": "Εν αναμονή ακύρωσης" + }, + "subscriptionPendingCanceled": { + "message": "Η συνδρομή έχει επισημανθεί για ακύρωση στο τέλος της τρέχουσας περιόδου χρέωσης." + }, + "reinstateSubscription": { + "message": "Επαναφορά συνδρομής" + }, + "reinstateConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να καταργήσετε το αίτημα ακύρωσης που εκκρεμεί και να επαναφέρετε τη συνδρομή σας;" + }, + "reinstated": { + "message": "Η συνδρομή έχει αποκατασταθεί." + }, + "cancelConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να ακυρώσετε; Θα χάσετε την πρόσβαση σε όλες τις λειτουργίες αυτής της συνδρομής στο τέλος αυτού του κύκλου χρέωσης." + }, + "canceledSubscription": { + "message": "Η συνδρομή ακυρώθηκε." + }, + "neverExpires": { + "message": "Χωρίς λήξη" + }, + "status": { + "message": "Κατάσταση" + }, + "nextCharge": { + "message": "Επόμενη Χρέωση" + }, + "details": { + "message": "Λεπτομέρειες" + }, + "downloadLicense": { + "message": "Λήψη Άδειας" + }, + "updateLicense": { + "message": "Ενημέρωση Άδειας" + }, + "updatedLicense": { + "message": "Η άδεια ενημερώθηκε" + }, + "manageSubscription": { + "message": "Διαχείριση Συνδρομής" + }, + "storage": { + "message": "Αποθήκευση" + }, + "addStorage": { + "message": "Προσθήκη αποθηκευτικού χώρου" + }, + "removeStorage": { + "message": "Κατάργηση αποθήκευσης" + }, + "subscriptionStorage": { + "message": "Η συνδρομή σας έχει συνολικά $MAX_STORAGE$ GB κρυπτογραφημένης αποθήκευσης αρχείων. Αυτήν τη στιγμή χρησιμοποιείτε $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Τρόπος Πληρωμής" + }, + "noPaymentMethod": { + "message": "Δεν υπάρχει καμία μέθοδος πληρωμής." + }, + "addPaymentMethod": { + "message": "Προσθήκη Τρόπου Πληρωμής" + }, + "changePaymentMethod": { + "message": "Αλλαγή Τρόπου Πληρωμής" + }, + "invoices": { + "message": "Παραστατικά" + }, + "noInvoices": { + "message": "Δεν υπάρχουν παραστατικά." + }, + "paid": { + "message": "Πληρωμένα", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Απλήρωτο", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Συναλλαγές", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Δεν υπάρχουν συναλλαγές." + }, + "chargeNoun": { + "message": "Χρέωση", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Επιστροφή", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Τυχόν χρεώσεις θα εμφανιστούν στη κατάσταση ως $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB αποθήκευσης για προσθήκη" + }, + "gbStorageRemove": { + "message": "GB αποθήκευσης για κατάργηση" + }, + "storageAddNote": { + "message": "Η προσθήκη χώρου αποθήκευσης θα έχει ως αποτέλεσμα προσαρμογές στα σύνολα χρέωσης και θα χρεώσει αμέσως τον τρόπο πληρωμής σας στο αρχείο. Η πρώτη χρέωση θα είναι αναλογική για το υπόλοιπο του τρέχοντος κύκλου χρέωσης." + }, + "storageRemoveNote": { + "message": "Η κατάργηση χώρου αποθήκευσης θα έχει ως αποτέλεσμα να γίνει προσαρμογή των στοιχείων χρέωσης σας, οι οποίες θα αναλογούν ως πίστωση στην επόμενη τιμολόγηση σας." + }, + "adjustedStorage": { + "message": "Προσαρμογή $AMOUNT$ GB αποθήκευσης.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Επικοινωνήστε με την Υποστήριξη πελατών" + }, + "updatedPaymentMethod": { + "message": "Ενημερωμένος τρόπος πληρωμής." + }, + "purchasePremium": { + "message": "Αγορά Premium έκδοσης" + }, + "licenseFile": { + "message": "Αρχείο Άδειας" + }, + "licenseFileDesc": { + "message": "Το όνομα αρχείου αδείας θα ονομάζεται κάτι σαν $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Για να αναβαθμίσετε το λογαριασμό σας στην έκδοση premium, πρέπει να ανεβάσετε ένα έγκυρο αρχείο άδειας χρήσης." + }, + "uploadLicenseFileOrg": { + "message": "Για να δημιουργήσετε έναν οργανισμό που φιλοξενείται στο χώρο της εγκατάστασης, πρέπει να ανεβάσετε ένα έγκυρο αρχείο άδειας χρήσης." + }, + "accountEmailMustBeVerified": { + "message": "Η διεύθυνση email του λογαριασμού σας πρέπει να επαληθευτεί." + }, + "newOrganizationDesc": { + "message": "Οι οργανισμοί σας επιτρέπουν να μοιράζεστε τμήματα του vault σας με άλλους, καθώς και να διαχειρίζεστε σχετικούς χρήστες για μια συγκεκριμένη οντότητα, όπως οικογένεια, μικρή ομάδα ή μεγάλη εταιρεία." + }, + "generalInformation": { + "message": "Γενικές Πληροφορίες" + }, + "organizationName": { + "message": "Όνομα Οργανισμού" + }, + "accountOwnedBusiness": { + "message": "Αυτός ο λογαριασμός ανήκει σε μια επιχείρηση." + }, + "billingEmail": { + "message": "Email Χρέωσης" + }, + "businessName": { + "message": "Όνομα Επιχείρησης" + }, + "chooseYourPlan": { + "message": "Επιλέξτε το Πακέτο σας" + }, + "users": { + "message": "Χρήστες" + }, + "userSeats": { + "message": "Θέσεις Χρηστών" + }, + "additionalUserSeats": { + "message": "Επιπλέον Θέσεις Χρηστών" + }, + "userSeatsDesc": { + "message": "# θέσεις χρηστών" + }, + "userSeatsAdditionalDesc": { + "message": "Το πλάνο σας έρχεται με $BASE_SEATS$ θέσεις χρηστών. Μπορείτε να προσθέσετε επιπλέον χρήστες για $SEAT_PRICE$ ανά χρήστη /μήνα.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Πόσες θέσεις χρηστών χρειάζεστε; Μπορείτε επίσης να προσθέσετε επιπλέον θέσεις αργότερα, αν χρειαστεί." + }, + "planNameFree": { + "message": "Δωρεάν", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Για δοκιμή ή προσωπική χρήση μπορείτε να μοιραστείτε $COUNT$ με άλλο χρήστη.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Οικογένειες" + }, + "planDescFamilies": { + "message": "Για προσωπική χρήση, για να μοιραστείτε με την οικογένεια και τους φίλους σας." + }, + "planNameTeams": { + "message": "Ομάδες" + }, + "planDescTeams": { + "message": "Για επιχειρήσεις και οργανισμούς." + }, + "planNameEnterprise": { + "message": "Επιχείρηση" + }, + "planDescEnterprise": { + "message": "Για επιχειρήσεις και άλλους μεγάλους οργανισμούς." + }, + "freeForever": { + "message": "Δωρεάν Για Πάντα" + }, + "includesXUsers": { + "message": "περιλαμβάνει $COUNT$ χρήστες", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Επιπλέον Χρήστες" + }, + "costPerUser": { + "message": "$COST$ ανά χρήστη", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Περιορίζεται σε $COUNT$ χρήστες (συμπεριλαμβανομένου εσένα)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Περιορίζεται σε $COUNT$ συλλογές", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Προσθήκη και κοινή χρήση με έως και $COUNT$ χρήστες", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Προσθήκη και κοινή χρήση με απεριόριστους χρήστες" + }, + "createUnlimitedCollections": { + "message": "Δημιουργία απεριόριστων συλλογών" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ κρυπτογραφημένη αποθήκευση αρχείων", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Υποδομή φιλοξενίας (προαιρετικό)" + }, + "usersGetPremium": { + "message": "Απόκτηση πρόσβασης χρηστών σε χαρακτηριστικά premium έκδοσης" + }, + "controlAccessWithGroups": { + "message": "Έλεγχος πρόσβασης χρηστών με ομάδες" + }, + "syncUsersFromDirectory": { + "message": "Συγχρονισμός χρηστών και ομάδων από έναν κατάλογο" + }, + "trackAuditLogs": { + "message": "Παρακολούθηση ενεργειών χρήστη με αρχεία καταγραφής ελέγχου" + }, + "enforce2faDuo": { + "message": "Επιβολή 2FA με Duo" + }, + "priorityCustomerSupport": { + "message": "Προτεραιότητα υποστήριξης πελατών" + }, + "xDayFreeTrial": { + "message": "$COUNT$ ημέρες δωρεάν δοκιμής, ακυρώστε ανά πάσα στιγμή", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Μηνιαία" + }, + "annually": { + "message": "Ετησίως" + }, + "basePrice": { + "message": "Βασική Τιμή" + }, + "organizationCreated": { + "message": "Ο οργανισμός δημιουργήθηκε" + }, + "organizationReadyToGo": { + "message": "Ο νέος σας οργανισμός είναι έτοιμος!" + }, + "organizationUpgraded": { + "message": "Ο οργανισμός σας έχει αναβαθμιστεί." + }, + "leave": { + "message": "Αποχώρηση" + }, + "leaveOrganizationConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να φύγετε από αυτόν τον οργανισμό;" + }, + "leftOrganization": { + "message": "Έχετε φύγει από τον οργανισμό." + }, + "defaultCollection": { + "message": "Προεπιλεγμένη Συλλογή" + }, + "getHelp": { + "message": "Ζητήστε Βοήθεια" + }, + "getApps": { + "message": "Αποκτήστε τις Εφαρμογές" + }, + "loggedInAs": { + "message": "Συνδεδεμένος ως" + }, + "eventLogs": { + "message": "Αρχείο Καταγραφής" + }, + "people": { + "message": "Άτομα" + }, + "policies": { + "message": "Πολιτικές" + }, + "singleSignOn": { + "message": "Απλή Σύνδεση" + }, + "editPolicy": { + "message": "Επεξεργασία Πολιτικής" + }, + "groups": { + "message": "Ομάδες" + }, + "newGroup": { + "message": "Νέα ομάδα" + }, + "addGroup": { + "message": "Προσθήκη Ομάδας" + }, + "editGroup": { + "message": "Επεξεργασία Ομάδας" + }, + "deleteGroupConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την ομάδα;" + }, + "removeUserConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε αυτό τον χρήστη;" + }, + "removeUserConfirmationKeyConnector": { + "message": "Προσοχή! Αυτός ο χρήστης απαιτεί σύνδεση κλειδιού για τη διαχείριση της κρυπτογράφησης του. Η αφαίρεση αυτού του χρήστη από τον οργανισμό σας θα απενεργοποιήσει οριστικά τον λογαριασμό του. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Θέλετε να συνεχίσετε;" + }, + "externalId": { + "message": "Εξωτερικό ID" + }, + "externalIdDesc": { + "message": "Το εξωτερικό αναγνωριστικό id μπορεί να χρησιμοποιηθεί ως αναφορά ή να συνδέσει αυτόν τον πόρο με ένα εξωτερικό σύστημα, όπως έναν κατάλογο χρηστών." + }, + "accessControl": { + "message": "Έλεγχος Πρόσβασης" + }, + "groupAccessAllItems": { + "message": "Αυτή η ομάδα μπορεί να έχει πρόσβαση και να τροποποιεί όλα τα στοιχεία." + }, + "groupAccessSelectedCollections": { + "message": "Αυτή η ομάδα μπορεί να έχει πρόσβαση μόνο στις επιλεγμένες συλλογές." + }, + "readOnly": { + "message": "Μόνο για ανάγνωση" + }, + "newCollection": { + "message": "Νέα Συλλογή" + }, + "addCollection": { + "message": "Προσθήκη συλλογής" + }, + "editCollection": { + "message": "Επεξεργασία συλλογής" + }, + "deleteCollectionConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή τη συλλογή;" + }, + "editUser": { + "message": "Επεξεργασία Χρήστη" + }, + "inviteUser": { + "message": "Προσκαλέστε Χρήστη" + }, + "inviteUserDesc": { + "message": "Προσκαλέστε έναν νέο χρήστη στον οργανισμό σας εισάγοντας παρακάτω τη διεύθυνση email του λογαριασμού Bitwarden. Αν δεν έχουν ήδη λογαριασμό Bitwarden, θα τους ζητηθεί να δημιουργήσουν ένα νέο λογαριασμό." + }, + "inviteMultipleEmailDesc": { + "message": "Μπορείτε να προσκαλέσετε στη λίστα σας μέχρι $COUNT$ χρήστες κάθε φορά διαχωρίζοντας με κόμμα κάθε διεύθυνση email.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Αυτός ο χρήστης χρησιμοποιεί τρόπο σύνδεσης δύο βημάτων για να προστατεύσει το λογαριασμό του." + }, + "userAccessAllItems": { + "message": "Αυτός ο χρήστης μπορεί να έχει πρόσβαση και να τροποποιεί όλα τα στοιχεία." + }, + "userAccessSelectedCollections": { + "message": "Αυτός ο χρήστης μπορεί να έχει πρόσβαση μόνο στις επιλεγμένες συλλογές." + }, + "search": { + "message": "Αναζήτηση" + }, + "invited": { + "message": "Προσκεκλημένος" + }, + "accepted": { + "message": "Αποδεκτή" + }, + "confirmed": { + "message": "Επιβεβαιωμένο" + }, + "clientOwnerEmail": { + "message": "Email Ιδιοκτήτη Πελάτη" + }, + "owner": { + "message": "Ιδιοκτήτης" + }, + "ownerDesc": { + "message": "Χρήστης με υψηλό βαθμό πρόσβασης που μπορεί να διαχειριστεί όλες τις πτυχές του οργανισμού σας." + }, + "clientOwnerDesc": { + "message": "Αυτός ο χρήστης πρέπει να είναι ανεξάρτητος από τον Πάροχο. Εάν ο Πάροχος δεν συνδέεται με τον οργανισμό, αυτός ο χρήστης θα διατηρήσει την ιδιοκτησία του οργανισμού." + }, + "admin": { + "message": "Διαχειριστής" + }, + "adminDesc": { + "message": "Οι διαχειριστές μπορούν να έχουν πρόσβαση και να διαχειρίζονται όλα τα στοιχεία, τις συλλογές και τους χρήστες του οργανισμού σας." + }, + "user": { + "message": "Χρήστης" + }, + "userDesc": { + "message": "Ένας κανονικός χρήστης με πρόσβαση σε ανατεθείσες συλλογές στον οργανισμό σας." + }, + "manager": { + "message": "Διαχειριστης" + }, + "managerDesc": { + "message": "Οι διαχειριστές μπορούν να έχουν πρόσβαση και να διαχειρίζονται εκχωρημένες συλλογές στον οργανισμό σας." + }, + "all": { + "message": "Όλα" + }, + "refresh": { + "message": "Ανανέωση" + }, + "timestamp": { + "message": "Χρονική σήμανση" + }, + "event": { + "message": "Συμβάν" + }, + "unknown": { + "message": "Άγνωστο" + }, + "loadMore": { + "message": "Φόρτωση περισσότερων" + }, + "mobile": { + "message": "Κινητό", + "description": "Mobile app" + }, + "extension": { + "message": "Επέκταση", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Επιφάνειας Εργασίας", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Συνδεδεμένος." + }, + "changedPassword": { + "message": "Αλλαγή κωδικού λογαριασμού." + }, + "enabledUpdated2fa": { + "message": "Ενεργοποίηση/Ενημέρωση σύνδεσης δύο βημάτων." + }, + "disabled2fa": { + "message": "Απενεργοποίηση σύνδεσης δύο βημάτων." + }, + "recovered2fa": { + "message": "Ανάκτηση λογαριασμού από τη σύνδεση δύο βημάτων." + }, + "failedLogin": { + "message": "Η προσπάθεια σύνδεσης απέτυχε λόγω εσφαλμένου κωδικού πρόσβασης." + }, + "failedLogin2fa": { + "message": "Η προσπάθεια σύνδεσης απέτυχε λόγω λανθασμένης σύνδεσης δύο βημάτων." + }, + "exportedVault": { + "message": "Εξαγωγή Vault." + }, + "exportedOrganizationVault": { + "message": "Εξαγωγή λίστας οργανισμού." + }, + "editedOrgSettings": { + "message": "Επεξεργασία ρυθμίσεων οργανισμού." + }, + "createdItemId": { + "message": "Δημιουργία στοιχείου $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Επεξεργασμένο στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Διεγραμμένο στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Μετακινήθηκε το στοιχείο $ID$ σε έναν οργανισμό.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Προβεβλημένο στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Προβεβλημένος κωδικός για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Προβεβλημένο κρυμμένο πεδίο για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Προβεβλημένος κωδικός ασφαλείας για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Αντιγραμμένος κωδικός για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Αντιγραμμένο κρυφό πεδίο για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Αντιγραμμένος κωδικός ασφαλείας για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Αυτόματη συμπλήρωση στοιχείου $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Δημιουργημένη συλλογή $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Επεξεργασμένη συλλογή $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Διεγραμμένη συλλογή $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Επεξεργασμένη πολιτική $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Δημιουργημένη ομάδα $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Επεξεργασμένη ομάδα $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Διεγραμμένη ομάδα $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Χρήστης που αφαιρέθηκε $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Συννημένο που δημιουργήθηκε για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Συννημένο που διαγράφηκε για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Επεξεργασμένες συλλογές για το στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Προσκεκλημένος χρήστης $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Επιβεβαιωμένος χρήστης $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Επεξεργασία χρήστη $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Επεξεργασμένες ομάδων από χρήστη $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Αποσυνδεδεμένο SSO για το χρήστη $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Δημιουργήθηκε οργανισμός $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Προστέθηκε οργανισμός $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Ο οργανισμός $ID$ αφαιρέθηκε.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Πρόσβαση στο $ID$ vault οργανισμού.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Συσκευή" + }, + "view": { + "message": "Προβολή" + }, + "invalidDateRange": { + "message": "Μη έγκυρο εύρος ημερομηνιών." + }, + "errorOccurred": { + "message": "Παρουσιάστηκε σφάλμα." + }, + "userAccess": { + "message": "Πρόσβαση Χρήστη" + }, + "userType": { + "message": "Τύπος Χρήστη" + }, + "groupAccess": { + "message": "Πρόσβασης Ομάδας" + }, + "groupAccessUserDesc": { + "message": "Επεξεργασία ομάδων στις οποίες ανήκει ο συγκεκριμένος χρήστης." + }, + "invitedUsers": { + "message": "Προσκεκλημένος χρήστης (ες)." + }, + "resendInvitation": { + "message": "Αποστολή Πρόσκλησης Ξανά" + }, + "resendEmail": { + "message": "Επαναποστολή e-mail" + }, + "hasBeenReinvited": { + "message": "$USER$ έχει ξανα-προσκληθεί.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Επιβεβαίωση" + }, + "confirmUser": { + "message": "Επιβεβαίωση Χρήστη" + }, + "hasBeenConfirmed": { + "message": "$USER$ έχει επιβεβαιωθεί.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Επιβεβαίωση Χρηστών" + }, + "usersNeedConfirmed": { + "message": "Έχετε χρήστες που έχουν αποδεχθεί την πρόσκληση τους, αλλά πρέπει να επιβεβαιωθούν. Οι χρήστες δεν θα έχουν πρόσβαση στον οργανισμό μέχρι να επιβεβαιωθούν." + }, + "startDate": { + "message": "Ημερομηνία Έναρξης" + }, + "endDate": { + "message": "Ημερομηνία Λήξης" + }, + "verifyEmail": { + "message": "Επιβεβαίωση Email" + }, + "verifyEmailDesc": { + "message": "Επαληθεύστε τη διεύθυνση email του λογαριασμού σας για να ξεκλειδώσετε την πρόσβαση σε όλες τις λειτουργίες." + }, + "verifyEmailFirst": { + "message": "Η διεύθυνση email του λογαριασμού σας, πρέπει πρώτα να επαληθευτεί." + }, + "checkInboxForVerification": { + "message": "Ελέγξτε τα εισερχόμενα στο email σας για έναν σύνδεσμο επαλήθευσης." + }, + "emailVerified": { + "message": "Το email σας έχει επαληθευτεί." + }, + "emailVerifiedFailed": { + "message": "Δεν είναι δυνατή η επαλήθευση του email σας. Δοκιμάστε να στείλετε νέο email επαλήθευσης." + }, + "emailVerificationRequired": { + "message": "Απαιτείται Επαλήθευση Email" + }, + "emailVerificationRequiredDesc": { + "message": "Πρέπει να επαληθεύσετε το email σας για να χρησιμοποιήσετε αυτή τη δυνατότητα." + }, + "updateBrowser": { + "message": "Ενημερώστε τον Browser" + }, + "updateBrowserDesc": { + "message": "Χρησιμοποιείτε ένα μη υποστηριζόμενο browser. Το web vault ενδέχεται να μην λειτουργεί σωστά." + }, + "joinOrganization": { + "message": "Εγγραφή στον οργανισμό" + }, + "joinOrganizationDesc": { + "message": "Έχετε προσκληθεί να συμμετάσχετε στον παραπάνω οργανισμό. Για να αποδεχτείτε την πρόσκληση, πρέπει να συνδεθείτε ή να δημιουργήσετε ένα νέο λογαριασμό Bitwarden." + }, + "inviteAccepted": { + "message": "Η Πρόσκληση έγινε αποδεκτή" + }, + "inviteAcceptedDesc": { + "message": "Μπορείτε να αποκτήσετε πρόσβαση σε αυτόν τον οργανισμό μόλις ο διαχειριστής σας επιβεβαιώσει την ιδιότητα μέλους. Θα σας στείλουμε ένα email όταν αυτό συμβεί." + }, + "inviteAcceptFailed": { + "message": "Δεν είναι δυνατή η αποδοχή πρόσκλησης. Ζητήστε από έναν διαχειριστή του οργανισμού να στείλει μια νέα πρόσκληση." + }, + "inviteAcceptFailedShort": { + "message": "Δεν είναι δυνατή η αποδοχή πρόσκλησης. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Απομνημόνευση email" + }, + "recoverAccountTwoStepDesc": { + "message": "Εάν δεν μπορείτε να αποκτήσετε πρόσβαση στο λογαριασμό σας μέσω των συνήθων μεθόδων σύνδεσης δύο βημάτων, μπορείτε να χρησιμοποιήσετε τον κωδικό ανάκτησης σύνδεσης δύο βημάτων για να απενεργοποιήσετε όλους τους παροχείς δύο βημάτων στο λογαριασμό σας." + }, + "recoverAccountTwoStep": { + "message": "Ανάκτηση Λογαριασμού Σύνδεσης Δύο Βημάτων" + }, + "twoStepRecoverDisabled": { + "message": "Η σύνδεση δύο βημάτων έχει απενεργοποιηθεί στο λογαριασμό σας." + }, + "learnMore": { + "message": "Μάθετε περισσότερα" + }, + "deleteRecoverDesc": { + "message": "Εισάγετε την παρακάτω διεύθυνση email για να ανακτήσετε και να διαγράψετε το λογαριασμό σας." + }, + "deleteRecoverEmailSent": { + "message": "Εάν ο λογαριασμός σας υπάρχει ήδη, θα δείτε να σας έχουμε στείλει ένα email με περεταίρω οδηγίες." + }, + "deleteRecoverConfirmDesc": { + "message": "Ζητήσατε να διαγράψετε το λογαριασμό Bitwarden. Κάντε κλικ στο παρακάτω κουμπί για επιβεβαίωση." + }, + "myOrganization": { + "message": "Ο οργανισμός μου" + }, + "deleteOrganization": { + "message": "Διαγραφή Οργανισμού" + }, + "deletingOrganizationContentWarning": { + "message": "Εισάγετε τον κύριο κωδικό πρόσβασης για να επιβεβαιώσετε τη διαγραφή του $ORGANIZATION$ και όλων των σχετικών δεδομένων. Τα δεδομένα vault στο $ORGANIZATION$ περιλαμβάνουν:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Οι λογαριασμοί χρήστη θα παραμείνουν ενεργοί μετά τη διαγραφή αλλά δεν θα συσχετίζονται πλέον με αυτόν τον οργανισμό." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Η διαγραφή του $ORGANIZATION$ είναι μόνιμη και μη αναστρέψιμη.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Ο Οργανισμός Διαγράφηκε" + }, + "organizationDeletedDesc": { + "message": "Ο οργανισμός και όλα τα συσχετιζόμενα δεδομένα έχουν διαγραφεί." + }, + "organizationUpdated": { + "message": "Ο οργανισμός ενημερώθηκε" + }, + "taxInformation": { + "message": "Φορολογικές πληροφορίες" + }, + "taxInformationDesc": { + "message": "Επικοινωνήστε με την υποστήριξη για να δώσετε (ή να ενημερώσετε) φορολογικά στοιχεία για τα παραστατικά σας." + }, + "billingPlan": { + "message": "Πακέτο", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Αλλαγή Πακέτου", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Αναβαθμίστε το λογαριασμό σας σε κάποιο άλλο πακέτο παρέχοντας τις παρακάτω πληροφορίες. Βεβαιωθείτε ότι έχετε προσθέσει έναν ενεργό τρόπο πληρωμής στο λογαριασμό.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Παραστατικό #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Προβολή Παραστατικού" + }, + "downloadInvoice": { + "message": "Λήψη Παραστατικού" + }, + "verifyBankAccount": { + "message": "Επαλήθευση Τραπεζικού Λογαριασμού" + }, + "verifyBankAccountDesc": { + "message": "Έχουμε κάνει δύο μικρο-καταθέσεις στον τραπεζικό σας λογαριασμό (μπορεί να χρειαστούν 1-2 εργάσιμες ημέρες για να εμφανιστούν). Καταχωρίστε αυτά τα ποσά για να επαληθεύσετε τον τραπεζικό λογαριασμό." + }, + "verifyBankAccountInitialDesc": { + "message": "Η πληρωμή με τραπεζικό λογαριασμό είναι διαθέσιμη μόνο σε πελάτες στις Ηνωμένες Πολιτείες. Θα σας ζητηθεί να επαληθεύσετε τον τραπεζικό σας λογαριασμό. Θα πραγματοποιήσουμε δύο μικρο-καταθέσεις εντός των επόμενων 1-2 εργάσιμων ημερών. Καταχωρίστε αυτά τα ποσά στη σελίδα χρέωσης του οργανισμού για να επαληθεύσετε τον τραπεζικό λογαριασμό." + }, + "verifyBankAccountFailureWarning": { + "message": "Η αδυναμία επαλήθευσης του τραπεζικού λογαριασμού θα έχει ως αποτέλεσμα τη μη πραγματοποίηση πληρωμής και την απενεργοποίηση της συνδρομής σας." + }, + "verifiedBankAccount": { + "message": "Ο Τραπεζικός Λογαριασμός έχει Επαληθευτεί." + }, + "bankAccount": { + "message": "Τραπεζικός Λογαριασμός" + }, + "amountX": { + "message": "Ποσό $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Αριθμός Δρομολόγησης", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Αριθμός Λογαριασμού" + }, + "accountHolderName": { + "message": "Όνομα Κατόχου Λογαριασμού" + }, + "bankAccountType": { + "message": "Είδος Λογαριασμού" + }, + "bankAccountTypeCompany": { + "message": "Εταιρεία (Επιχειρήσεις)" + }, + "bankAccountTypeIndividual": { + "message": "Ατομικό (Προσωπικό)" + }, + "enterInstallationId": { + "message": "Εισάγετε το αναγνωριστικό εγκατάστασης" + }, + "limitSubscriptionDesc": { + "message": "Ορίστε ένα όριο θέσης για τη συνδρομή σας. Μόλις συμπληρωθεί αυτό το όριο, δεν θα μπορείτε να προσκαλέσετε νέους χρήστες." + }, + "maxSeatLimit": { + "message": "Μέγιστο Όριο Θέσης (Προαιρετικό)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Μέγιστο δυνητικό κόστος θέσης" + }, + "addSeats": { + "message": "Προσθήκη Θέσεων", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Αφαίρεση Θέσεων", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Οι προσαρμογές της συνδρομής σας θα έχουν ως αποτέλεσμα αλλαγές στα σύνολα τιμολόγησης. Εάν οι νεοπροσκεκλημένοι χρήστες υπερβούν τις συνδρομητικές σας θέσεις, θα λάβετε αμέσως μια αναθεωρημένη χρέωση για τους πρόσθετους χρήστες." + }, + "subscriptionUserSeats": { + "message": "Η συνδρομή σας, επιτρέπει συνολικά $COUNT$ χρήστες.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Όριο Συνδρομής (Προαιρετικό)" + }, + "subscriptionSeats": { + "message": "Θέσεις Συνδρομής" + }, + "subscriptionUpdated": { + "message": "Η συνδρομή ενημερώθηκε" + }, + "additionalOptions": { + "message": "Πρόσθετες Επιλογές" + }, + "additionalOptionsDesc": { + "message": "Για πρόσθετη βοήθεια στη διαχείριση της συνδρομής σας, επικοινωνήστε με την Υποστήριξη πελατών." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Οι προσαρμογές της συνδρομής σας θα έχουν ως αποτέλεσμα αλλαγές στα σύνολα τιμολόγησης. Εάν οι νεοπροσκεκλημένοι χρήστες υπερβούν τις συνδρομητικές σας θέσεις, θα λάβετε αμέσως μια αναθεωρημένη χρέωση για τους πρόσθετους χρήστες." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Οι προσαρμογές της συνδρομής σας θα έχουν ως αποτέλεσμα αλλαγές στα σύνολα τιμολόγησης. Εάν οι νεοπροσκεκλημένοι χρήστες υπερβούν τις θέσεις συνδρομής, θα λάβετε αμέσως μια τροποποιημένη χρέωση για τους επιπλέον χρήστες μέχρι να συμπληρωθεί το όριο θέσης $MAX$ σας.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Δεν μπορείτε να προσκαλέσετε περισσότερους από $COUNT$ χρήστες χωρίς αναβάθμιση του σχεδίου σας.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Δεν μπορείτε να προσκαλέσετε περισσότερους από $COUNT$ χρήστες χωρίς αναβάθμιση του προγράμματός σας. Επικοινωνήστε με την Υποστήριξη πελατών για αναβάθμιση.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Η συνδρομή σας επιτρέπει συνολικά $COUNT$ χρήστες. Το πρόγραμμα σας χορηγείται και χρεώνεται σε εξωτερικό οργανισμό.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Οι προσαρμογές της συνδρομής σας θα οδηγήσουν σε αναλογικές αλλαγές στα συνολικά τιμολόγιά σας. Δεν μπορείτε να προσκαλέσετε περισσότερους από $COUNT$ χρήστες χωρίς να αυξήσετε τις συνδρομητικές σας θέσεις.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Θέσεις για Προσθήκη" + }, + "seatsToRemove": { + "message": "Θέσεις για Κατάργηση" + }, + "seatsAddNote": { + "message": "Η προσθήκη θέσης χρηστών, θα έχει ως αποτέλεσμα προσαρμογές στα σύνολα χρέωσης και θα χρεώσει αμέσως τον τρόπο πληρωμής σας στο αρχείο. Η πρώτη χρέωση θα είναι αναλογική για το υπόλοιπο του τρέχοντος κύκλου χρέωσης." + }, + "seatsRemoveNote": { + "message": "Η κατάργηση της θέσης χρηστών θα έχει ως αποτέλεσμα προσαρμογές των λεπτομερειών χρέωσης σας, οι οποίες θα αναλογούν ως πίστωση στην επόμενη τιμολόγηση σας." + }, + "adjustedSeats": { + "message": "$AMOUNT$ Προσαρμοσμένες θέσεις χρηστών.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Το Κλειδί Ενημερώθηκε" + }, + "updateKeyTitle": { + "message": "Ενημέρωση Κλειδιού" + }, + "updateEncryptionKey": { + "message": "Ενημέρωση Κλειδιού Κρυπτογράφησης" + }, + "updateEncryptionKeyShortDesc": { + "message": "Αυτήν τη στιγμή χρησιμοποιείτε ένα ξεπερασμένο σύστημα κρυπτογράφησης." + }, + "updateEncryptionKeyDesc": { + "message": "Έχουμε μετακινηθεί σε μεγαλύτερα κλειδιά κρυπτογράφησης που παρέχουν καλύτερη ασφάλεια και πρόσβαση σε νεότερες λειτουργίες. Η ενημέρωση του κλειδιού κρυπτογράφησης είναι γρήγορη και εύκολη. Απλά πληκτρολογήστε τον κύριο κωδικό σας παρακάτω. Αυτή η ενημέρωση τελικά θα καταστεί υποχρεωτική." + }, + "updateEncryptionKeyWarning": { + "message": "Μετά την ενημέρωση του κλειδιού κρυπτογράφησης, πρέπει να αποσυνδεθείτε και να επιστρέψετε σε όλες τις εφαρμογές Bitwarden που χρησιμοποιείτε αυτήν τη στιγμή (όπως η εφαρμογή για κινητά ή οι επεκτάσεις του προγράμματος περιήγησης). Η αποτυχία αποσύνδεσης και επαναφοράς (στην οποία γίνεται λήψη του νέου κλειδιού κρυπτογράφησης) ενδέχεται να προκαλέσει καταστροφή δεδομένων. Θα προσπαθήσουμε να αποσυνδεθείτε αυτόματα, ωστόσο αυτό μπορεί να καθυστερήσει." + }, + "updateEncryptionKeyExportWarning": { + "message": "Οποιεσδήποτε κρυπτογραφημένες εξαγωγές που έχετε αποθηκεύσει θα είναι επίσης άκυρες." + }, + "subscription": { + "message": "Συνδρομή" + }, + "loading": { + "message": "Φόρτωση" + }, + "upgrade": { + "message": "Αναβάθμιση" + }, + "upgradeOrganization": { + "message": "Αναβάθμιση Οργανισμού" + }, + "upgradeOrganizationDesc": { + "message": "Αυτή η λειτουργία, δεν είναι διαθέσιμη στους δωρεάν οργανισμούς. Μεταβείτε σε ένα πακέτο επί πληρωμής για να ξεκλειδώσετε περισσότερες λειτουργίες." + }, + "createOrganizationStep1": { + "message": "Δημιουργία Οργανισμού: Βήμα 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Πριν δημιουργήσετε τον οργανισμό σας, πρέπει πρώτα να δημιουργήσετε έναν δωρεάν προσωπικό λογαριασμό." + }, + "refunded": { + "message": "Επιστράφηκαν" + }, + "nothingSelected": { + "message": "Δεν έχετε επιλέξει τίποτα." + }, + "acceptPolicies": { + "message": "Επιλέγοντας αυτό το πλαίσιο, συμφωνείτε με τα εξής:" + }, + "acceptPoliciesError": { + "message": "Οι Όροι Παροχής Υπηρεσιών και η Πολιτική Απορρήτου δεν έχουν αναγνωριστεί." + }, + "termsOfService": { + "message": "Όροι Χρήσης" + }, + "privacyPolicy": { + "message": "Πολιτική Απορρήτου" + }, + "filters": { + "message": "Φίλτρα" + }, + "vaultTimeout": { + "message": "Χρόνος Λήξης Vault" + }, + "vaultTimeoutDesc": { + "message": "Επιλέξτε πότε θα λήξει το vault και πραγματοποιήστε την επιλεγμένη ενέργεια." + }, + "oneMinute": { + "message": "1 λεπτό" + }, + "fiveMinutes": { + "message": "5 λεπτά" + }, + "fifteenMinutes": { + "message": "15 λεπτά" + }, + "thirtyMinutes": { + "message": "30 λεπτά" + }, + "oneHour": { + "message": "1 ώρα" + }, + "fourHours": { + "message": "4 ώρες" + }, + "onRefresh": { + "message": "Κατά την Ανανέωση του Browser" + }, + "dateUpdated": { + "message": "Ενημερώθηκε", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Ο Κωδικός Ενημερώθηκε", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Ο οργανισμός είναι απενεργοποιημένος." + }, + "licenseIsExpired": { + "message": "Η άδεια χρήσης έληξε." + }, + "updatedUsers": { + "message": "Οι χρήστες ενημερώθηκαν" + }, + "selected": { + "message": "Επιλεγμένα" + }, + "ownership": { + "message": "Ιδιοκτησία" + }, + "whoOwnsThisItem": { + "message": "Ποιος κατέχει αυτό το στοιχείο;" + }, + "strong": { + "message": "Ισχυρό", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Καλός", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Αδύναμος", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Πολύ αδύναμος", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Αδύναμος Κύριος Κωδικός" + }, + "weakMasterPasswordDesc": { + "message": "Ο κύριος κωδικός που έχετε επιλέξει είναι αδύναμος. Θα πρέπει να χρησιμοποιήσετε έναν ισχυρό κύριο κωδικό (ή μια φράση) για την κατάλληλη προστασία του λογαριασμού Bitwarden. Είστε βέβαιοι ότι θέλετε να χρησιμοποιήσετε αυτόν τον κύριο κωδικό;" + }, + "rotateAccountEncKey": { + "message": "Επίσης, περιστροφή κλειδιού κρυπτογράφησης του λογαριασμού μου" + }, + "rotateEncKeyTitle": { + "message": "Περιστροφή κλειδιού κρυπτογράφησης" + }, + "rotateEncKeyConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να γίνει περιστροφή του κλειδιού κρυπτογράφησης του λογαριασμού σας;" + }, + "attachmentsNeedFix": { + "message": "Αυτό το στοιχείο έχει παλιά συνημμένα αρχεία που πρέπει να διορθωθούν." + }, + "attachmentFixDesc": { + "message": "Αυτό είναι ένα παλιό συνημμένο αρχείο που πρέπει να διορθωθεί. Κάντε κλικ για να μάθετε περισσότερα." + }, + "fix": { + "message": "Επιδιόρθωση", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Υπάρχουν στο παρελθόν παλιά συνημμένα αρχεία που πρέπει να διορθωθούν πριν την περιστροφή κλειδιού κρυπτογράφησης του λογαριασμού σας." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "message": "Ποτέ μην παρακινείτε να επαληθεύσετε φράσεις 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." + }, + "free": { + "message": "Δωρεάν", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Kλειδί API" + }, + "apiKeyDesc": { + "message": "Το κλειδί API μπορεί να χρησιμοποιηθεί για τον έλεγχο ταυτότητας στο δημόσιο API Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Η περιστροφή του κλειδιού API θα ακυρώσει το προηγούμενο κλειδί. Μπορείτε να περιστρέψετε το κλειδί API αν πιστεύετε ότι το τρέχον κλειδί δεν είναι πλέον ασφαλές στη χρήση." + }, + "apiKeyWarning": { + "message": "Το κλειδί API έχει πλήρη πρόσβαση στον οργανισμό. Πρέπει να το κρατήσετε μυστικό." + }, + "userApiKeyDesc": { + "message": "Το κλειδί API σας μπορεί να χρησιμοποιηθεί για έλεγχο ταυτότητας στο Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Το κλειδί API σας είναι ένας εναλλακτικός μηχανισμός ελέγχου ταυτότητας. Θα πρέπει να κρατηθεί μυστικό." + }, + "oauth2ClientCredentials": { + "message": "Πιστοποιητικά πελάτη OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Προβολή κλειδιού API" + }, + "rotateApiKey": { + "message": "Περιστροφή κλειδιού API" + }, + "selectOneCollection": { + "message": "Πρέπει να επιλέξετε τουλάχιστον μία συλλογή." + }, + "couldNotChargeCardPayInvoice": { + "message": "Δεν ήταν δυνατή η χρέωση της κάρτας σας. Παρακαλούμε δείτε και πληρώστε το μη πληρωθέν παραστατικό που παρατίθεται παρακάτω." + }, + "inAppPurchase": { + "message": "Αγορές εντός εφαρμογής" + }, + "cannotPerformInAppPurchase": { + "message": "Δεν μπορείτε να εκτελέσετε αυτήν την ενέργεια κατά τη χρήση μεθόδου αγοράς και πληρωμής μέσω εφαρμογής." + }, + "manageSubscriptionFromStore": { + "message": "Πρέπει να διαχειριστείτε τη συνδρομή σας από το κατάστημα όπου έγινε η αγορά σας μέσω εφαρμογής." + }, + "minLength": { + "message": "Ελάχιστο Μήκος" + }, + "clone": { + "message": "Κλώνος" + }, + "masterPassPolicyDesc": { + "message": "Ορίστε ελάχιστες απαιτήσεις, για ισχύ του κύριου κωδικού." + }, + "twoStepLoginPolicyDesc": { + "message": "Να απαιτείτε από τους χρήστες να ορίσουν τη σύνδεση σε δύο βήματα στους προσωπικούς τους λογαριασμούς." + }, + "twoStepLoginPolicyWarning": { + "message": "Τα μέλη του οργανισμού που δεν έχουν ενεργοποιημένη τη σύνδεση σε δύο βήματα για τον προσωπικό τους λογαριασμό θα αφαιρεθούν από τον οργανισμό και θα λάβουν ένα μήνυμα ηλεκτρονικού ταχυδρομείου που θα τους ειδοποιεί για την αλλαγή." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Είστε μέλος ενός οργανισμού που απαιτεί την ενεργοποίηση σύνδεσης σε δύο βήματα στον λογαριασμό σας. Εάν απενεργοποιήσετε όλους τους παροχείς σύνδεσης σε δύο βήματα, θα αφαιρεθείτε αυτόματα από αυτούς τους οργανισμούς." + }, + "passwordGeneratorPolicyDesc": { + "message": "Ελάχιστες απαιτήσεις διαμόρφωσης γεννήτριας κωδικών." + }, + "passwordGeneratorPolicyInEffect": { + "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": "Ο νέος κύριος κωδικός δεν πληροί τις απαιτήσεις πολιτικής." + }, + "minimumNumberOfWords": { + "message": "Ελάχιστος Αριθμός Χαρακτήρων" + }, + "defaultType": { + "message": "Προεπιλεγμένος Τύπος" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Αναζήτηση Κάδου" + }, + "permanentlyDelete": { + "message": "Μόνιμη Διαγραφή" + }, + "permanentlyDeleteSelected": { + "message": "Επιλέχτηκε Μόνιμη Διαγραφή" + }, + "permanentlyDeleteItem": { + "message": "Μόνιμη Διαγραφή Αντικειμένου" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα αυτό το στοιχείο;" + }, + "permanentlyDeletedItem": { + "message": "Μόνιμα Διεγραμμένο Στοιχείο" + }, + "permanentlyDeletedItems": { + "message": "Μόνιμα Διεγραμμένα Στοιχεία" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Έχετε επιλέξει $COUNT$ στοιχείο(α) για μόνιμη διαγραφή. Είστε βέβαιοι ότι θέλετε να διαγράψετε για πάντα όλα αυτά τα στοιχεία;", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Μόνιμα Διεγραμμένο Στοιχείο $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Ανάκτηση" + }, + "restoreSelected": { + "message": "Επαναφορά Επιλεγμένων" + }, + "restoreItem": { + "message": "Ανάκτηση Στοιχείου" + }, + "restoredItem": { + "message": "Στοιχείο που έχει Ανακτηθεί" + }, + "restoredItems": { + "message": "Στοιχεία που έχουν Ανακτηθεί" + }, + "restoreItemConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να ανακτήσετε αυτό το στοιχείο;" + }, + "restoreItems": { + "message": "Ανάκτηση Στοιχείων" + }, + "restoreSelectedItemsDesc": { + "message": "Έχετε επιλέξει $COUNT$ στοιχείο(α) για ανάκτηση. Είστε βέβαιοι ότι θέλετε να ανακτήσετε όλα αυτά τα στοιχεία;", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Στοιχείο που έχει ανακτηθεί $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Η αποσύνδεση θα καταργήσει όλη την πρόσβαση στο vault σας και απαιτεί online έλεγχο ταυτότητας μετά το χρονικό όριο λήξης. Είστε βέβαιοι ότι θέλετε να χρησιμοποιήσετε αυτήν τη ρύθμιση;" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Επιβεβαίωση Ενέργειας Χρονικού Ορίου" + }, + "hidePasswords": { + "message": "Απόκρυψη Κωδικών" + }, + "countryPostalCodeRequiredDesc": { + "message": "Χρειαζόμαστε αυτές τις πληροφορίες μόνο για τον υπολογισμό του φόρου επί των πωλήσεων και των οικονομικών αναφορών." + }, + "includeVAT": { + "message": "Συμπερίληψη πληροφοριών ΦΠΑ / GST (προαιρετικά)" + }, + "taxIdNumber": { + "message": "Αναγνωριστικό φόρου ΦΠΑ / GST" + }, + "taxInfoUpdated": { + "message": "Τα φορολογικά στοιχεία ενημερώθηκαν." + }, + "setMasterPassword": { + "message": "Ορισμός Κύριου Κωδικού" + }, + "ssoCompleteRegistration": { + "message": "Για να ολοκληρώσετε τη σύνδεση με SSO, ορίστε έναν κύριο κωδικό πρόσβασης για πρόσβαση και προστασία του vault σας." + }, + "identifier": { + "message": "Αναγνωριστικό" + }, + "organizationIdentifier": { + "message": "Αναγνωριστικό οργανισμού" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Συνδεθείτε χρησιμοποιώντας την πύλη μεμονωμένης σύνδεσης του οργανισμού σας. Εισάγετε το αναγνωριστικό του οργανισμού σας για να ξεκινήσετε." + }, + "enterpriseSingleSignOn": { + "message": "Ενιαία είσοδος για επιχειρήσεις" + }, + "ssoHandOff": { + "message": "Μπορείτε να κλείσετε αυτήν την καρτέλα τώρα και να συνεχίσετε στην επέκταση." + }, + "includeAllTeamsFeatures": { + "message": "Όλα τα χαρακτηριστικά του Teams, συν:" + }, + "includeSsoAuthentication": { + "message": "Έλεγχος ταυτότητας SSO μέσω SAML2.0 και OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Επιχειρηματικές πολιτικές" + }, + "ssoValidationFailed": { + "message": "Η επικύρωση SSO απέτυχε" + }, + "ssoIdentifierRequired": { + "message": "Απαιτείται αναγνωριστικό οργανισμού." + }, + "unlinkSso": { + "message": "Αποσύνδεση SSO" + }, + "unlinkSsoConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αποσυνδέσετε το SSO για αυτόν τον οργανισμό;" + }, + "linkSso": { + "message": "Σύνδεσμος SSO" + }, + "singleOrg": { + "message": "Ενιαίος οργανισμός" + }, + "singleOrgDesc": { + "message": "Περιορίστε τους χρήστες να μην μπορούν να συμμετάσχουν σε άλλους οργανισμούς." + }, + "singleOrgBlockCreateMessage": { + "message": "Ο τρέχων οργανισμός σας έχει μια πολιτική που δεν σας επιτρέπει να συμμετάσχετε σε περισσότερους από έναν οργανισμούς. Επικοινωνήστε με τους διαχειριστές του οργανισμού σας ή εγγραφείτε από διαφορετικό λογαριασμό Bitwarden." + }, + "singleOrgPolicyWarning": { + "message": "Τα μέλη του οργανισμού που δεν είναι κάτοχοι ή διαχειριστές και είναι ήδη μέλη άλλου οργανισμού θα αφαιρεθούν από τον οργανισμό σας." + }, + "requireSso": { + "message": "Έλεγχος ταυτότητας μεμονωμένης σύνδεσης" + }, + "requireSsoPolicyDesc": { + "message": "Απαιτήστε από τους χρήστες να συνδεθούν με τη μέθοδο Enterprise Single Sign-On." + }, + "prerequisite": { + "message": "Προαπαιτούμενο" + }, + "requireSsoPolicyReq": { + "message": "Απαιτήστε από τους χρήστες να συνδεθούν με τη μέθοδο Enterprise Single Sign-On." + }, + "requireSsoPolicyReqError": { + "message": "Η πολιτική ενός οργανισμού δεν ενεργοποιήθηκε." + }, + "requireSsoExemption": { + "message": "Οι κάτοχοι και οι διαχειριστές του οργανισμού εξαιρούνται από την εφαρμογή αυτής της πολιτικής." + }, + "sendTypeFile": { + "message": "Αρχείο" + }, + "sendTypeText": { + "message": "Κείμενο" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "Διαγραφή Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το Send;", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "Τι είδους Send είναι αυτό;", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "Τρέχων Αριθμός Πρόσβασης" + }, + "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." + }, + "disabled": { + "message": "Απενεργοποιημένο" + }, + "sendLink": { + "message": "Αποστολή Συνδέσμου", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Αντιγραφή Συνδέσμου Αποστολής", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Αφαίρεση κωδικού" + }, + "removedPassword": { + "message": "Καταργήθηκε κωδικός πρόσβασης" + }, + "removePasswordConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να καταργήσετε τον κωδικό πρόσβασης;" + }, + "hideEmail": { + "message": "Απόκρυψη της διεύθυνσης email μου από τους παραλήπτες." + }, + "disableThisSend": { + "message": "Απενεργοποιήστε αυτό το Send έτσι ώστε κανείς να μην μπορεί να έχει πρόσβαση σε αυτό.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "Όλα τα Sends" + }, + "maxAccessCountReached": { + "message": "Φτάσατε στον μέγιστο αριθμό πρόσβασης", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Εκκρεμεί διαγραφή" + }, + "expired": { + "message": "Έληξε" + }, + "searchSends": { + "message": "Αναζήτηση Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Αυτό το Send προστατεύεται με κωδικό πρόσβασης. Πληκτρολογήστε τον κωδικό πρόσβασης παρακάτω για να συνεχίσετε.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Δεν γνωρίζετε τον κωδικό; Ζητήστε από τον αποστολέα τον κωδικό που απαιτείται για την πρόσβαση σε αυτό το Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Αυτό το send είναι κρυμμένο από προεπιλογή. Μπορείτε να αλλάξετε την ορατότητά του χρησιμοποιώντας το παρακάτω κουμπί.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Λήψη Αρχείου" + }, + "sendAccessUnavailable": { + "message": "Το Send που προσπαθείτε να αποκτήσετε πρόσβαση, δεν υπάρχει ή δεν είναι πλέον διαθέσιμο.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Το αρχείο που σχετίζεται με αυτό το Send δεν βρέθηκε.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Δεν υπάρχουν Sends στη λίστα.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Πρόσβαση Έκτακτης Ανάγκης" + }, + "emergencyAccessDesc": { + "message": "Εκχώρηση και διαχείριση πρόσβασης έκτακτης ανάγκης για αξιόπιστες επαφές. Οι επαφές εμπίστευσης μπορούν να ζητήσουν πρόσβαση είτε στην Προβολή είτε στην ανάληψη του λογαριασμού σας σε περίπτωση έκτακτης ανάγκης. Επισκεφθείτε τη σελίδα βοήθειας μας για περισσότερες πληροφορίες και λεπτομέρειες σχετικά με το πώς λειτουργεί o μηδενικός διαμοιρασμός πληροφοριών." + }, + "emergencyAccessOwnerWarning": { + "message": "Είστε ιδιοκτήτης ενός ή περισσότερων οργανισμών. Αν δώσετε πρόσβαση σε μια επαφή έκτακτης ανάγκης, θα είναι σε θέση να χρησιμοποιήσουν όλα τα δικαιώματά σας ως Ιδιοκτήτη μετά από μια εξαγορά." + }, + "trustedEmergencyContacts": { + "message": "Έμπιστες επαφές έκτακτης ανάγκης" + }, + "noTrustedContacts": { + "message": "Δεν έχετε προσθέσει ακόμη επαφές έκτακτης ανάγκης, προσκαλέστε μια αξιόπιστη επαφή για να ξεκινήσετε." + }, + "addEmergencyContact": { + "message": "Προσθήκη επαφής έκτακτης ανάγκης" + }, + "designatedEmergencyContacts": { + "message": "Χαρακτηρίστηκε ως επαφή έκτακτης ανάγκης" + }, + "noGrantedAccess": { + "message": "Δεν έχετε ορίσει ως επαφή έκτακτης ανάγκης για κανέναν ακόμα." + }, + "inviteEmergencyContact": { + "message": "Πρόσκληση επαφής έκτακτης ανάγκης" + }, + "editEmergencyContact": { + "message": "Επεξεργασία επαφής έκτακτης ανάγκης" + }, + "inviteEmergencyContactDesc": { + "message": "Προσκαλέστε μια νέα επαφή έκτακτης ανάγκης, εισάγοντας την διεύθυνση email τους, του λογαριασμού Bitwarden, παρακάτω. Εάν δεν έχουν ήδη λογαριασμό Bitwarden, θα τους ζητηθεί να δημιουργήσουν ένα νέο λογαριασμό." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Έναρξη Πρόσβασης Έκτακτης Ανάγκης" + }, + "emergencyAccessRecoveryApproved": { + "message": "Εγκεκριμένη Πρόσβαση Έκτακτης Ανάγκης" + }, + "viewDesc": { + "message": "Μπορείτε να δείτε όλα τα στοιχεία, στο δικό σας vault." + }, + "takeover": { + "message": "Ανάληψη" + }, + "takeoverDesc": { + "message": "Μπορείτε να επαναφέρετε το λογαριασμό σας με ένα νέο κύριο κωδικό πρόσβασης." + }, + "waitTime": { + "message": "Χρόνος Αναμονής" + }, + "waitTimeDesc": { + "message": "Χρόνος που απαιτείται πριν από την αυτόματη χορήγηση πρόσβασης." + }, + "oneDay": { + "message": "1 ημέρα" + }, + "days": { + "message": "$DAYS$ ημέρες", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Προσκεκλημένος χρήστης." + }, + "acceptEmergencyAccess": { + "message": "Έχετε προσκληθεί να γίνετε μια επαφή έκτακτης ανάγκης για τον χρήστη που αναφέρεται παραπάνω. Για να αποδεχτείτε την πρόσκληση, πρέπει να συνδεθείτε ή να δημιουργήσετε ένα νέο λογαριασμό Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Αδυναμία αποδοχής πρόσκλησης. Ζητήστε από τον χρήστη να στείλει μια νέα πρόσκληση." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Δεν είναι δυνατή η αποδοχή πρόσκλησης. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Μπορείτε να αποκτήσετε πρόσβαση στις επιλογές έκτακτης ανάγκης για αυτόν τον χρήστη μετά την επιβεβαίωση της ταυτότητας σας. Θα σας στείλουμε ένα email όταν συμβεί αυτό." + }, + "requestAccess": { + "message": "Αίτηση Πρόσβασης" + }, + "requestAccessConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να ζητήσετε πρόσβαση έκτακτης ανάγκης? Θα σας δοθεί η πρόσβαση μετά από $WAITTIME$ ημέρα(ες) ή όποτε ο χρήστης εγκρίνει χειροκίνητα το αίτημα.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Ζητήθηκε πρόσβαση έκτακτης ανάγκης για το $USER$. Θα σας ειδοποιήσουμε με email όταν είναι εφικτό να συνεχίσετε.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Έγκριση" + }, + "reject": { + "message": "Απόρριψη" + }, + "approveAccessConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να εγκρίνετε την πρόσβαση έκτακτης ανάγκης? Αυτό θα επιτρέψει στο $USER$ να $ACTION$ το λογαριασμό σας.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Η πρόσβαση έκτακτης ανάγκης εγκρίθηκε." + }, + "emergencyRejected": { + "message": "Η πρόσβαση έκτακτης ανάγκης απορρίφθηκε" + }, + "passwordResetFor": { + "message": "Επαναφορά κωδικού πρόσβασης για το $USER$. Τώρα μπορείτε να συνδεθείτε χρησιμοποιώντας το νέο κωδικό πρόσβασης.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Προσωπική Ιδιοκτησία" + }, + "personalOwnershipPolicyDesc": { + "message": "Απαιτείται από τους χρήστες να αποθηκεύσουν στοιχεία vault σε έναν οργανισμό, αφαιρώντας την επιλογή προσωπικής ιδιοκτησίας." + }, + "personalOwnershipExemption": { + "message": "Οι κάτοχοι και οι διαχειριστές του οργανισμού εξαιρούνται από την εφαρμογή αυτής της πολιτικής." + }, + "personalOwnershipSubmitError": { + "message": "Λόγω μιας Πολιτικής Επιχειρήσεων, δεν επιτρέπεται η αποθήκευση στοιχείων στο προσωπικό σας vault. Αλλάξτε την επιλογή Ιδιοκτησίας σε έναν οργανισμό και επιλέξτε από τις διαθέσιμες Συλλογές." + }, + "disableSend": { + "message": "Απενεργοποίηση Αποστολής" + }, + "disableSendPolicyDesc": { + "message": "Μην επιτρέπετε στους χρήστες να δημιουργήσουν ή να επεξεργαστούν μια Αποστολή Bitwarden. Η διαγραφή μιας υπάρχουσας Αποστολής εξακολουθεί να επιτρέπεται.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Οι χρήστες του οργανισμού που μπορούν να διαχειριστούν τις πολιτικές του οργανισμού εξαιρούνται από την εφαρμογή αυτής της πολιτικής." + }, + "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." + }, + "sendOptions": { + "message": "Επιλογές Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Καθορίστε επιλογές για τη δημιουργία και επεξεργασία sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Οι χρήστες του οργανισμού που μπορούν να διαχειριστούν τις πολιτικές του οργανισμού εξαιρούνται από την εφαρμογή αυτής της πολιτικής." + }, + "disableHideEmail": { + "message": "Μην επιτρέπετε στους χρήστες να αποκρύψουν τη διεύθυνση email τους από τους παραλήπτες κατά τη δημιουργία ή την επεξεργασία ενός send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Οι ακόλουθες οργανωτικές πολιτικές εφαρμόζονται επί του παρόντος:" + }, + "sendDisableHideEmailInEffect": { + "message": "Οι χρήστες δεν επιτρέπεται να αποκρύψουν τη διεύθυνση email τους από τους παραλήπτες κατά τη δημιουργία ή την επεξεργασία ενός send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Τροποποιημένη πολιτική $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Τιμή Πακέτου" + }, + "estimatedTax": { + "message": "Εκτιμώμενος φόρος" + }, + "custom": { + "message": "Προσαρμοσμένο" + }, + "customDesc": { + "message": "Επιτρέπει πιο κοκκώδη έλεγχο, των δικαιωμάτων χρήστη για προηγμένες ρυθμίσεις." + }, + "permissions": { + "message": "Άδειες" + }, + "accessEventLogs": { + "message": "Αρχείο Καταγραφής Πρόσβασης" + }, + "accessImportExport": { + "message": "Πρόσβαση Εισαγωγή/Εξαγωγή" + }, + "accessReports": { + "message": "Αναφορές Πρόσβασης" + }, + "missingPermissions": { + "message": "Δεν έχετε τα απαραίτητα δικαιώματα για να εκτελέσετε αυτήν την ενέργεια." + }, + "manageAllCollections": { + "message": "Διαχείριση Όλων Των Συλλογών" + }, + "createNewCollections": { + "message": "Δημιουργία Νέων Συλλογών" + }, + "editAnyCollection": { + "message": "Επεξεργασία Οποιασδήποτε Συλλογής" + }, + "deleteAnyCollection": { + "message": "Διαγραφή Οποιασδήποτε Συλλογής" + }, + "manageAssignedCollections": { + "message": "Διαχείριση Αντιστοιχισμένων Συλλογών" + }, + "editAssignedCollections": { + "message": "Επεξεργασία Αντιστοιχισμένων Συλλογών" + }, + "deleteAssignedCollections": { + "message": "Διαγραφή Ανατεθειμένων Συλλογών" + }, + "manageGroups": { + "message": "Διαχείριση Ομάδων" + }, + "managePolicies": { + "message": "Διαχείριση Πολιτικών" + }, + "manageSso": { + "message": "Διαχείριση SSO" + }, + "manageUsers": { + "message": "Διαχείριση Χρηστών" + }, + "manageResetPassword": { + "message": "Διαχείριση Επαναφοράς Κωδικού Πρόσβασης" + }, + "disableRequiredError": { + "message": "Πρέπει να απενεργοποιήσετε χειροκίνητα την πολιτική $POLICYNAME$ πριν απενεργοποιηθεί αυτή η πολιτική.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Μια πολιτική οργάνωσης επηρεάζει τις επιλογές ιδιοκτησίας σας." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Μια οργανωτική πολιτική έχει απενεργοποιήσει την εισαγωγή στοιχείων στο προσωπικό θησαυ/κιο σας." + }, + "personalOwnershipCheckboxDesc": { + "message": "Απενεργοποίηση προσωπικής ιδιοκτησίας για χρήστες οργανισμού" + }, + "textHiddenByDefault": { + "message": "Κατά την πρόσβαση στην αποστολή, απόκρυψη του κειμένου από προεπιλογή", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "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": "Το αρχείο που θέλετε να στείλετε." + }, + "copySendLinkOnSave": { + "message": "Αντιγράψτε το σύνδεσμο, για να μοιραστείτε αυτό το Send στο πρόχειρο μου, κατά την αποθήκευση." + }, + "sendLinkLabel": { + "message": "Σύνδεσμος Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Το Bitwarden Send μεταδίδει ευαίσθητες, προσωρινές πληροφορίες σε άλλους, εύκολα και με ασφάλεια.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Περισσότερες πληροφορίες για", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Κοινή χρήση κειμένου ή αρχείων απευθείας με οποιονδήποτε." + }, + "sendVaultCardLearnMore": { + "message": "Μάθετε περισσότερα", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "δείτε", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "πώς λειτουργεί", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "ή", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "δοκιμάστε το τώρα", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "ή", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "εγγραφείτε", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "για να το δοκιμάσετε σήμερα.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Ο χρήστης Bitwarden $USER_IDENTIFIER$ κοινοποίησε τα ακόλουθα μαζί σας", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Ο χρήστης Bitwarden που δημιούργησε αυτό το send έχει επιλέξει να κρύψει τη διεύθυνση email του. Πρέπει να διασφαλίσετε ότι εμπιστεύεστε την πηγή αυτού του συνδέσμου πριν χρησιμοποιήσετε ή κατεβάσετε το περιεχόμενό του.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Η ημερομηνία λήξης που δόθηκε δεν είναι έγκυρη." + }, + "deletionDateIsInvalid": { + "message": "Η ημερομηνία διαγραφής που δόθηκε δεν είναι έγκυρη." + }, + "expirationDateAndTimeRequired": { + "message": "Απαιτείται ημερομηνία και ώρα λήξης." + }, + "deletionDateAndTimeRequired": { + "message": "Απαιτείται ημερομηνία και ώρα διαγραφής." + }, + "dateParsingError": { + "message": "Παρουσιάστηκε σφάλμα κατά την αποθήκευση των ημερομηνιών διαγραφής και λήξης." + }, + "webAuthnFallbackMsg": { + "message": "Για να επαληθεύσετε τον 2FA σας παρακαλώ κάντε κλικ στο παρακάτω κουμπί." + }, + "webAuthnAuthenticate": { + "message": "Ταυτοποίηση WebAutn" + }, + "webAuthnNotSupported": { + "message": "Το WebAuthn δεν υποστηρίζεται σε αυτό το πρόγραμμα περιήγησης." + }, + "webAuthnSuccess": { + "message": "Το WebAuthn επαληθεύτηκε επιτυχώς!
Μπορείτε να κλείσετε αυτή την καρτέλα." + }, + "hintEqualsPassword": { + "message": "Η υπόδειξη κωδικού πρόσβασης, δεν μπορεί να είναι η ίδια με τον κωδικό πρόσβασης σας." + }, + "enrollPasswordReset": { + "message": "Επαναφορά κωδικού πρόσβασης" + }, + "enrolledPasswordReset": { + "message": "Εγγεγραμμένος στην επαναφορά κωδικού πρόσβασης" + }, + "withdrawPasswordReset": { + "message": "Επαναφορά κωδικού πρόσβασης" + }, + "enrollPasswordResetSuccess": { + "message": "Επιτυχής εγγραφή!" + }, + "withdrawPasswordResetSuccess": { + "message": "Επιτυχής απόσυρση!" + }, + "eventEnrollPasswordReset": { + "message": "Ο χρήστης $ID$ έχει εγγραφεί στη βοήθεια επαναφοράς κωδικού πρόσβασης.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Ο χρήστης $ID$ αποσύρθηκε από τη βοήθεια επαναφοράς κωδικού πρόσβασης.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Επαναφορά κύριου κωδικού πρόσβασης για το χρήστη $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Επαναφορά συνδέσμου Sso για το χρήστη $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ συνδέθηκε χρησιμοποιώντας το Sso για πρώτη φορά", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Επαναφορά Κωδικού" + }, + "resetPasswordLoggedOutWarning": { + "message": "Η διαδικασία θα αποσυνδέσει το $NAME$ από την τρέχουσα περίοδο λειτουργίας του, απαιτώντας από αυτούς να συνδεθούν. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να συνεχίσουν να είναι ενεργές για μία ώρα.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "αυτός ο χρήστης" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Σε μία ή περισσότερες πολιτικές του οργανισμού απαιτείται ο κύριος κωδικός να πληρεί τις ακόλουθες απαιτήσεις:" + }, + "resetPasswordSuccess": { + "message": "Επιτυχία επαναφοράς κωδικού!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Η εγγραφή θα επιτρέψει στους διαχειριστές του οργανισμού να αλλάξουν τον κύριο κωδικό σας. Είστε σίγουροι ότι θέλετε να εγγραφείτε;" + }, + "resetPasswordPolicy": { + "message": "Επαναφορά Κύριου Κωδικού Πρόσβασης" + }, + "resetPasswordPolicyDescription": { + "message": "Επιτρέψτε στους διαχειριστές του οργανισμού να επαναφέρουν τον κύριο κωδικό πρόσβασης των χρηστών." + }, + "resetPasswordPolicyWarning": { + "message": "Οι χρήστες του οργανισμού θα πρέπει να αυτο-εγγραφούν ή να εγγραφούν αυτόματα πριν οι διαχειριστές μπορούν να επαναφέρουν τον κύριο κωδικό πρόσβασής τους." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Αυτόματη Εγγραφή" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Όλοι οι χρήστες θα εγγραφούν αυτόματα στην επαναφορά κωδικού πρόσβασης μόλις γίνει αποδεκτή η πρόσκληση τους." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Οι χρήστες που βρίσκονται ήδη στον οργανισμό δεν θα εγγραφούν αναδρομικά στην επαναφορά κωδικού πρόσβασης. Θα χρειαστεί να κάνουν αυτόματη εγγραφή πριν οι διαχειριστές μπορέσουν να επαναφέρουν τον κωδικό πρόσβασης τους." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Αυτόματη εγγραφή νέων χρηστών" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Αυτός ο οργανισμός έχει μια επιχειρηματική πολιτική που θα σας εγγράψει αυτόματα στην επαναφορά κωδικού. Η εγγραφή θα επιτρέψει στους διαχειριστές του οργανισμού να αλλάξουν τον κύριο κωδικό πρόσβασης σας." + }, + "resetPasswordOrgKeysError": { + "message": "Η απάντηση των κλειδιών οργανισμού είναι κενή" + }, + "resetPasswordDetailsError": { + "message": "Επαναφορά κωδικού πρόσβασης Η απάντηση λεπτομερειών είναι κενή" + }, + "trashCleanupWarning": { + "message": "Τα Ciphers που βρίσκονται σε κάδο απορριμμάτων περισσότερες από 30 ημέρες θα διαγράφονται αυτόματα." + }, + "trashCleanupWarningSelfHosted": { + "message": "Τα Ciphers που βρίσκονται στον κάδο απορριμμάτων για λίγο θα διαγράφονται αυτόματα." + }, + "passwordPrompt": { + "message": "Προτροπή νέου κωδικού πρόσβασης" + }, + "passwordConfirmation": { + "message": "Επιβεβαίωση κύριου κωδικού πρόσβασης" + }, + "passwordConfirmationDesc": { + "message": "Αυτή η ενέργεια προστατεύεται. Για να συνεχίσετε, πληκτρολογήστε ξανά τον κύριο κωδικό πρόσβασης για να επαληθεύσετε την ταυτότητά σας." + }, + "reinviteSelected": { + "message": "Επαναποστολή Προσκλήσεων" + }, + "noSelectedUsersApplicable": { + "message": "Αυτή η ενέργεια δεν ισχύει για κανέναν από τους επιλεγμένους χρήστες." + }, + "removeUsersWarning": { + "message": "Είστε βέβαιοι ότι θέλετε να καταργήσετε τους ακόλουθους χρήστες? Η διαδικασία μπορεί να διαρκέσει μερικά δευτερόλεπτα για να ολοκληρωθεί και δεν μπορεί να διακοπεί ή να ακυρωθεί." + }, + "theme": { + "message": "Θέμα" + }, + "themeDesc": { + "message": "Επιλέξτε ένα θέμα για το web vault." + }, + "themeSystem": { + "message": "Χρήση Θέματος Συστήματος" + }, + "themeDark": { + "message": "Σκοτεινό" + }, + "themeLight": { + "message": "Φωτεινό" + }, + "confirmSelected": { + "message": "Επιβεβαίωση Επιλεγμένων" + }, + "bulkConfirmStatus": { + "message": "Κατάσταση μαζικής ενέργειας" + }, + "bulkConfirmMessage": { + "message": "Επιβεβαιώθηκε επιτυχώς." + }, + "bulkReinviteMessage": { + "message": "Επιτυχής ανάκληση." + }, + "bulkRemovedMessage": { + "message": "Καταργήθηκε με επιτυχία" + }, + "bulkFilteredMessage": { + "message": "Εξαιρείται, δεν ισχύει για αυτήν την ενέργεια." + }, + "fingerprint": { + "message": "Αποτύπωμα" + }, + "removeUsers": { + "message": "Αφαίρεση Χρηστών" + }, + "error": { + "message": "Σφάλμα" + }, + "resetPasswordManageUsers": { + "message": "Οι Διαχειριστές Χρηστών πρέπει επίσης να είναι ενεργοποιημένοι με την άδεια Διαχείρισης Κωδικού Επαναφοράς" + }, + "setupProvider": { + "message": "Ρύθμιση Παρόχου" + }, + "setupProviderLoginDesc": { + "message": "Έχετε προσκληθεί να ρυθμίσετε έναν νέο πάροχο. Για να συνεχίσετε, πρέπει να συνδεθείτε ή να δημιουργήσετε ένα νέο λογαριασμό Bitwarden." + }, + "setupProviderDesc": { + "message": "Παρακαλούμε εισάγετε τα παρακάτω στοιχεία για να ολοκληρώσετε την εγκατάσταση του παρόχου. Επικοινωνήστε με την Υποστήριξη πελατών αν έχετε οποιεσδήποτε απορίες." + }, + "providerName": { + "message": "Όνομα παρόχου" + }, + "providerSetup": { + "message": "Ο πάροχος έχει ρυθμιστεί." + }, + "clients": { + "message": "Πελάτες" + }, + "providerAdmin": { + "message": "Διαχειριστής Παρόχου" + }, + "providerAdminDesc": { + "message": "Ο χρήστης με την υψηλότερη πρόσβαση που μπορεί να διαχειριστεί όλες τις πτυχές του παρόχου σας, καθώς και την πρόσβαση και τη διαχείριση των οργανισμών-πελατών." + }, + "serviceUser": { + "message": "Υπηρεσία Χρήστη" + }, + "serviceUserDesc": { + "message": "Οι χρήστες υπηρεσιών μπορούν να έχουν πρόσβαση και να διαχειρίζονται όλους τους οργανισμούς πελατών." + }, + "providerInviteUserDesc": { + "message": "Προσκαλέστε έναν νέο χρήστη στον πάροχο σας εισάγοντας το email λογαριασμού Bitwarden παρακάτω. Εάν δεν έχουν ήδη λογαριασμό Bitwarden, θα τους ζητηθεί να δημιουργήσουν ένα νέο λογαριασμό." + }, + "joinProvider": { + "message": "Συμμετοχή Στον Πάροχο" + }, + "joinProviderDesc": { + "message": "Έχετε προσκληθεί να συμμετάσχετε στον παραπάνω πάροχο. Για να αποδεχτείτε την πρόσκληση, πρέπει να συνδεθείτε ή να δημιουργήσετε ένα νέο λογαριασμό Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "Αδυναμία αποδοχής πρόσκλησης. Ζητήστε από τον διαχειριστή του παρόχου να στείλει μια νέα πρόσκληση." + }, + "providerInviteAcceptedDesc": { + "message": "Μπορείτε να αποκτήσετε πρόσβαση σε αυτόν τον πάροχο μόλις ένας διαχειριστής επιβεβαιώσει τη συμμετοχή σας. Θα σας στείλουμε ένα email όταν συμβεί αυτό." + }, + "providerUsersNeedConfirmed": { + "message": "Έχετε χρήστες που έχουν αποδεχθεί την πρόσκληση τους, αλλά πρέπει ακόμα να επιβεβαιωθούν. Οι χρήστες δεν θα έχουν πρόσβαση στον πάροχο μέχρι να επιβεβαιωθούν." + }, + "provider": { + "message": "Πάροχος" + }, + "newClientOrganization": { + "message": "Νέος Οργανισμός Πελάτη" + }, + "newClientOrganizationDesc": { + "message": "Δημιουργήστε ένα νέο οργανισμό πελάτη που θα συσχετιστεί με εσάς ως πάροχο. Θα είστε σε θέση να έχετε πρόσβαση και να διαχειριστείτε αυτόν τον οργανισμό." + }, + "addExistingOrganization": { + "message": "Προσθήκη Υπάρχοντος Οργανισμού" + }, + "myProvider": { + "message": "Ο Πάροχος Μου" + }, + "addOrganizationConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να προσθέσετε $ORGANIZATION$ ως πελάτης στο $PROVIDER$;", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Ο οργανισμός προστέθηκε με επιτυχία στον πάροχο" + }, + "accessingUsingProvider": { + "message": "Πρόσβαση στον οργανισμό χρησιμοποιώντας τον πάροχο $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Ο πάροχος είναι απενεργοποιημένος." + }, + "providerUpdated": { + "message": "Ο πάροχος ενημερώθηκε" + }, + "yourProviderIs": { + "message": "Ο πάροχος σας είναι $PROVIDER$. Έχουν δικαιώματα διαχείρισης και χρέωσης για τον οργανισμό σας.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Ο οργανισμός $ORGANIZATION$ έχει αποσπαστεί από τον πάροχο σας.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αποσυνδέσετε αυτόν τον οργανισμό? Ο οργανισμός θα συνεχίσει να υπάρχει, αλλά δεν θα διαχειρίζεται πλέον από τον πάροχο." + }, + "add": { + "message": "Προσθήκη" + }, + "updatedMasterPassword": { + "message": "Ενημερώθηκε ο κύριος κωδικός πρόσβασης" + }, + "updateMasterPassword": { + "message": "Ενημερώστε τον κύριο κωδικό πρόσβασης" + }, + "updateMasterPasswordWarning": { + "message": "Ο Κύριος Κωδικός Πρόσβασης σας άλλαξε πρόσφατα από διαχειριστή στον οργανισμό σας. Για να αποκτήσετε πρόσβαση στο vault, πρέπει να ενημερώσετε το κύριο κωδικό τώρα. Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία σας, απαιτώντας από εσάς να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να συνεχίσουν να είναι ενεργές για μία ώρα." + }, + "masterPasswordInvalidWarning": { + "message": "Ο Κύριος κωδικός πρόσβασης δεν πληροί τις απαιτήσεις πολιτικής αυτού του οργανισμού. Για να γίνετε μέλος του οργανισμού, πρέπει να ενημερώσετε το Κύριο Συνθηματικό σας τώρα. Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία σας, απαιτώντας από εσάς να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να συνεχίσουν να είναι ενεργές για μία ώρα." + }, + "maximumVaultTimeout": { + "message": "Χρόνος Λήξης Vault" + }, + "maximumVaultTimeoutDesc": { + "message": "Ρύθμιση μέγιστου χρονικού ορίου vault για όλους τους χρήστες." + }, + "maximumVaultTimeoutLabel": { + "message": "Μέγιστο Χρονικό Όριο Vault" + }, + "invalidMaximumVaultTimeout": { + "message": "Μη Έγκυρο Μέγιστο Χρονικό Όριο Vault." + }, + "hours": { + "message": "Ώρες" + }, + "minutes": { + "message": "Λεπτά" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Οι πολιτικές του οργανισμού σας επηρεάζουν το χρονικό όριο vault σας. Το μέγιστο επιτρεπόμενο Χρονικό όριο Vault είναι $HOURS$ ώρα(ες) και $MINUTES$ λεπτό(ά)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "customVaultTimeout": { + "message": "Προσαρμοσμένο Χρονικό Όριο Vault" + }, + "vaultTimeoutToLarge": { + "message": "Το χρονικό όριο του vault υπερβαίνει τον περιορισμό που ορίστηκε από τον οργανισμό σας." + }, + "disablePersonalVaultExport": { + "message": "Απενεργοποίηση Εξαγωγής Προσωπικών Vault" + }, + "disablePersonalVaultExportDesc": { + "message": "Προσελκύει τους χρήστες να εξάγουν τα προσωπικά τους δεδομένα από το vault." + }, + "vaultExportDisabled": { + "message": "Εξαγωγή vault Απενεργοποιημένη" + }, + "personalVaultExportPolicyInEffect": { + "message": "Μία ή περισσότερες οργανωτικές πολιτικές σας αποτρέπει από την εξαγωγή του προσωπικού vault." + }, + "selectType": { + "message": "Επιλογή Τύπου SSO" + }, + "type": { + "message": "Τύπος" + }, + "openIdConnectConfig": { + "message": "Ρύθμιση Σύνδεσης OpenID" + }, + "samlSpConfig": { + "message": "Ρύθμιση Παροχής Υπηρεσιών SAML" + }, + "samlIdpConfig": { + "message": "Ρύθμιση Παρόχου Ταυτότητας SAML" + }, + "callbackPath": { + "message": "Διαδρομή Κλήσης" + }, + "signedOutCallbackPath": { + "message": "Διαδρομή Κλήσης Αποσύνδεσης" + }, + "authority": { + "message": "Αρχή" + }, + "clientId": { + "message": "Ταυτότητα Πελάτη" + }, + "clientSecret": { + "message": "Μυστικό Πελάτη" + }, + "metadataAddress": { + "message": "Διεύθυνση Μεταδεδομένων" + }, + "oidcRedirectBehavior": { + "message": "Συμπεριφορά Ανακατεύθυνσης OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Λήψη Αιτημάτων Από Το Τελικό Σημείο Πληροφοριών Χρήστη" + }, + "additionalScopes": { + "message": "Προσαρμοσμένα Πεδία" + }, + "additionalUserIdClaimTypes": { + "message": "Προσαρμοσμένοι Τύποι Ιδιότητας Χρήστη" + }, + "additionalEmailClaimTypes": { + "message": "Προσαρμοσμένοι Τύποι Διεκδίκησης Email" + }, + "additionalNameClaimTypes": { + "message": "Προσαρμοσμένος Τύπος Διεκδίκησης Ονόματος" + }, + "acrValues": { + "message": "Ζητούμενες τιμές αναφοράς κατηγορίας πλαισίου ελέγχου ταυτότητας (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Αναμενόμενη τιμή διεκδίκησης \"acr\" στην απάντηση (επικύρωση acr)" + }, + "spEntityId": { + "message": "SP ID Οντότητας" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Διεύθυνση Url Υπηρεσίας Καταναλωτών (ACS)" + }, + "spNameIdFormat": { + "message": "Μορφή ID Ονόματος" + }, + "spOutboundSigningAlgorithm": { + "message": "Αλγόριθμος Εξερχόμενης Υπογραφής" + }, + "spSigningBehavior": { + "message": "Συμπεριφορά Υπογραφής" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Ελάχιστος Εισερχόμενος Αλγόριθμος Υπογραφής" + }, + "spWantAssertionsSigned": { + "message": "Αναμονή υπογεγραμμένων ισχυρισμών" + }, + "spValidateCertificates": { + "message": "Επικύρωση Πιστοποιητικών" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Τύπος Σύνδεσης" + }, + "idpSingleSignOnServiceUrl": { + "message": "Διεύθυνση Url Υπηρεσίας Ενιαίας Εγγραφής" + }, + "idpSingleLogoutServiceUrl": { + "message": "Διεύθυνση Url Υπηρεσίας Ενιαίας Αποσύνδεσης" + }, + "idpX509PublicCert": { + "message": "X509 Δημόσιο Πιστοποιητικό" + }, + "idpOutboundSigningAlgorithm": { + "message": "Αλγόριθμος Εξερχόμενης Υπογραφής" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Να Επιτρέπεται Μη Αιτούμενη Απόκριση Ταυτοποίησης" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Να επιτρέπονται αιτήματα εξερχόμενης αποσύνδεσης" + }, + "idpSignAuthenticationRequests": { + "message": "Υπογραφή αιτήσεων ταυτοποίησης" + }, + "ssoSettingsSaved": { + "message": "Οι ρυθμίσεις για απλή σύνδεση αποθηκεύτηκαν." + }, + "sponsoredFamilies": { + "message": "Δωρεάν Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "Εσείς και η οικογένεια σας έχετε δικαίωμα για Δωρεάν Bitwarden Families. Εξαργυρώστε με το προσωπικό σας email για να διατηρείτε τα δεδομένα σας ασφαλή ακόμα και όταν δεν εργάζεστε." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Εξαργυρώστε το Δωρεάν Bitwarden Families σήμερα για να διατηρήσουν τα δεδομένα σας ασφαλή ακόμα και όταν δεν είστε στη δουλειά." + }, + "sponsoredFamiliesInclude": { + "message": "Το πλάνο Bitwarden Families περιλαμβάνει" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium πρόσβαση για έως 6 χρήστες" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Κοινές συλλογές για οικογενειακά μυστικά" + }, + "badToken": { + "message": "Ο σύνδεσμος δεν είναι πλέον έγκυρος. Παρακαλώ στείλτε ξανά την προσφορά." + }, + "reclaimedFreePlan": { + "message": "Επαναλαμβανόμενο ελεύθερο πλάνο" + }, + "redeem": { + "message": "Εξαργύρωση" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Επιλέξτε τον οργανισμό που θα θέλατε" + }, + "familiesSponsoringOrgSelect": { + "message": "Ποια Free Families προσφορά θα θέλατε να εξαργυρώσετε;" + }, + "sponsoredFamiliesEmail": { + "message": "Εισάγετε το προσωπικό σας email για να εξαργυρώσετε το Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Αν φύγετε ή απομακρυνθείτε από αυτόν τον οργανισμό, το πλάνο Families θα λήξει στο τέλος της περιόδου τιμολόγησης." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Αποδοχή προσφοράς για έναν υπάρχοντα οργανισμό ή δημιουργία ενός νέου οργανισμού οικογενειών." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Έχετε προσφερθεί έναn δωρεάν οργανισμό πλάνου Bitwarden Families. Για να συνεχίσετε, πρέπει να συνδεθείτε στο λογαριασμό που έλαβε την προσφορά." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Δεν είναι δυνατή η αποδοχή προσφοράς. Παρακαλώ στείλτε ξανά το email προσφοράς από τον λογαριασμό επιχείρησής σας και προσπαθήστε ξανά." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Αδυναμία αποδοχής προσφοράς. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Αποδοχή Δωρεάν Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "H Δωρεάν προσφορά Bitwarden Families, εξαργυρώθηκε με επιτυχία" + }, + "redeemed": { + "message": "Εξαργυρώθηκε" + }, + "redeemedAccount": { + "message": "Εξαργυρωμένος Λογαριασμός" + }, + "revokeAccount": { + "message": "Ανάκληση λογαριασμού $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Επαναποστολή email χορηγίας σε $NAME$ χορηγία", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Δωρεάν Πλάνο Families" + }, + "redeemNow": { + "message": "Εξαργυρώστε Τώρα" + }, + "recipient": { + "message": "Παραλήπτης" + }, + "removeSponsorship": { + "message": "Αφαίρεση Χορηγίας" + }, + "removeSponsorshipConfirmation": { + "message": "Μετά την αφαίρεση μιας χορηγίας, θα είστε υπεύθυνοι για αυτή τη συνδρομή και τα σχετικά τιμολόγια. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;" + }, + "sponsorshipCreated": { + "message": "Χορηγία Δημιουργήθηκε" + }, + "revoke": { + "message": "Ανάκληση" + }, + "emailSent": { + "message": "Το Email Εστάλη" + }, + "revokeSponsorshipConfirmation": { + "message": "Μετά την αφαίρεση αυτού του λογαριασμού, ο ιδιοκτήτης του οργανισμού families θα είναι υπεύθυνος για αυτή τη συνδρομή και τα σχετικά τιμολόγια. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;" + }, + "removeSponsorshipSuccess": { + "message": "Χορηγία Αφαιρέθηκε" + }, + "ssoKeyConnectorUnavailable": { + "message": "Δεν είναι δυνατή η πρόσβαση στον σύνδεσμο κλειδιού, προσπαθήστε ξανά αργότερα." + }, + "keyConnectorUrl": { + "message": "URL Σύνδεσης Κλειδιού" + }, + "sendVerificationCode": { + "message": "Στείλτε έναν κωδικό επαλήθευσης στο email σας" + }, + "sendCode": { + "message": "Αποστολή Κωδικού" + }, + "codeSent": { + "message": "Ο Κωδικός Στάλθηκε" + }, + "verificationCode": { + "message": "Κωδικός Επαλήθευσης" + }, + "confirmIdentity": { + "message": "Επιβεβαιώστε την ταυτότητα σας για να συνεχίσετε." + }, + "verificationCodeRequired": { + "message": "Απαιτείται ο κωδικός επαλήθευσης." + }, + "invalidVerificationCode": { + "message": "Μη έγκυρος κωδικός επαλήθευσης" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ χρησιμοποιεί SSO με έναν αυτοεξυπηρετητή κλειδιών. Ένας κύριος κωδικός πρόσβασης δεν απαιτείται πλέον για να συνδεθείτε για τα μέλη αυτού του οργανισμού.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Αποχώρηση από τον οργανισμό" + }, + "removeMasterPassword": { + "message": "Αφαίρεση Κύριου Κωδικού Πρόσβασης" + }, + "removedMasterPassword": { + "message": "Ο κύριος κωδικός αφαιρέθηκε." + }, + "allowSso": { + "message": "Να επιτρέπεται έλεγχος ταυτότητας SSO" + }, + "allowSsoDesc": { + "message": "Μόλις συσταθεί, οι ρυθμίσεις σας θα αποθηκευτούν και τα μέλη θα είναι σε θέση να πιστοποιήσουν τον έλεγχο ταυτότητας χρησιμοποιώντας τα διαπιστευτήρια του παρόχου ταυτότητας." + }, + "ssoPolicyHelpStart": { + "message": "Ενεργοποίηση του", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Πολιτική ελέγχου ταυτότητας SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "για να απαιτήσει από όλα τα μέλη να συνδεθούν με SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Απαιτούνται πολιτικές ελέγχου ταυτότητας και ενιαίου οργανισμού για τη δημιουργία αποκρυπτογράφησης κλειδιών σύνδεσης." + }, + "memberDecryptionOption": { + "message": "Επιλογές Αποκρυπτογράφησης Μελών" + }, + "memberDecryptionPassDesc": { + "message": "Μόλις ελεγχθεί, τα μέλη θα αποκρυπτογραφήσουν τα δεδομένα vault χρησιμοποιώντας τους Κύριους Κωδικούς Πρόσβασης." + }, + "keyConnector": { + "message": "Σύνδεσμος Κλειδιού" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Συνδεθείτε με SSO στον αυτο-φιλοξενημένο διακομιστή κλειδιών αποκρυπτογράφησης. Χρησιμοποιώντας αυτή την επιλογή, τα μέλη δεν θα χρειαστεί να χρησιμοποιήσουν τους Κύριους κωδικούς πρόσβασης τους για να αποκρυπτογραφήσουν τα δεδομένα θησαυ/κιου." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Σύνδεση με αποκρυπτογράφηση SSO και Key Connector \" είναι ενεργοποιημένη. Αυτή η πολιτική θα ισχύει μόνο για Ιδιοκτήτες και Διαχειριστές." + }, + "enabledSso": { + "message": "Ενεργοποιημένο SSO" + }, + "disabledSso": { + "message": "Απενεργοποιημένο SSO" + }, + "enabledKeyConnector": { + "message": "Ενεργοποιημένος Σύνδεσμος Κλειδιών" + }, + "disabledKeyConnector": { + "message": "Απενεργοποιημένη Σύνδεση Κλειδιών" + }, + "keyConnectorWarning": { + "message": "Μόλις τα μέλη αρχίσουν να χρησιμοποιούν το Key Connector, ο Οργανισμός σας δεν μπορεί να επανέλθει στην αποκρυπτογράφηση Master Password. Προχωρήστε μόνο εάν είστε άνετοι στην ανάπτυξη και διαχείριση ενός εξυπηρετητή κλειδιών." + }, + "migratedKeyConnector": { + "message": "Μετεγκατάσταση στον σύνδεσμο κλειδιού" + }, + "paymentSponsored": { + "message": "Παρακαλώ δώστε μια μέθοδο πληρωμής για να συσχετίσετε με τον οργανισμό. Μην ανησυχείτε, δεν θα σας χρεώσουμε τίποτα, εκτός αν επιλέξετε πρόσθετες λειτουργίες ή η εγγυοδοσία σας λήξει. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Η προσφορά χορηγίας έχει λήξει. Μπορείτε να διαγράψετε τον οργανισμό που δημιουργήσατε για να αποφύγετε μια χρέωση στο τέλος της δοκιμής 7 ημερών. Διαφορετικά, μπορείτε να κλείσετε αυτή την προτροπή για να κρατήσει την οργάνωση και να αναλάβει την ευθύνη χρέωσης." + }, + "newFamiliesOrganization": { + "message": "Νέος Οργανισμός Families" + }, + "acceptOffer": { + "message": "Αποδοχή Προσφοράς" + }, + "sponsoringOrg": { + "message": "Χορηγούμενος Οργανισμός" + }, + "keyConnectorTest": { + "message": "Δοκιμή" + }, + "keyConnectorTestSuccess": { + "message": "Επιτυχία! Η σύνδεση με τα πλήκτρα έφτασε." + }, + "keyConnectorTestFail": { + "message": "Αδύνατη η πρόσβαση στον σύνδεσμο κλειδιού. Ελέγξτε το URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Η προσφορά χορηγίας έχει λήξει." + }, + "freeWithSponsorship": { + "message": "ΔΩΡΕΑΝ με χορηγία" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ πεδία παραπάνω χρειάζονται την προσοχή σας.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 πεδίο παραπάνω χρειάζεται την προσοχή σας." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ απαιτείται.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "απαιτείται" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Απαιτείται εάν το ID οντότητας δεν είναι URL." + }, + "openIdOptionalCustomizations": { + "message": "Προαιρετικές Προσαρμογές" + }, + "openIdAuthorityRequired": { + "message": "Απαιτείται εάν η Αρχή δεν είναι έγκυρη." + }, + "separateMultipleWithComma": { + "message": "Διαχωρίστε το πολλαπλάσιο με κόμμα." + }, + "sessionTimeout": { + "message": "Έχει λήξει το χρονικό όριο. Παρακαλώ επιστρέψτε και προσπαθήστε να συνδεθείτε ξανά." + }, + "exportingPersonalVaultTitle": { + "message": "Εξαγωγή Προσωπικού Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Εξαγωγή Vault Οργανισμού" + }, + "exportingPersonalVaultDescription": { + "message": "Θα εξαχθούν μόνο τα προσωπικά αντικείμενα Vault που σχετίζονται με το $EMAIL$. Τα αντικείμενα Vault οργανισμού δεν θα συμπεριληφθούν.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Μόνο το vault οργανισμού που σχετίζεται με το $ORGANIZATION$ θα εξαχθεί. Προσωπικά αντικείμενα και αντικείμενα από άλλους οργανισμούς δεν θα συμπεριληφθούν.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Επιστροφή στις Αναφορές" + }, + "generator": { + "message": "Γεννήτρια" + }, + "whatWouldYouLikeToGenerate": { + "message": "Τι θα θέλατε να δημιουργήσετε;" + }, + "passwordType": { + "message": "Τύπος Κωδικού" + }, + "regenerateUsername": { + "message": "Επαναδημιουργία Ονόματος Χρήστη" + }, + "generateUsername": { + "message": "Δημιουργία Ονόματος Χρήστη" + }, + "usernameType": { + "message": "Τύπος Ονόματος Χρήστη" + }, + "plusAddressedEmail": { + "message": "Συν Διεύθυνση Email", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Χρησιμοποιήστε τις δυνατότητες δευτερεύουσας διεύθυνσης του παρόχου email σας." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Χρησιμοποιήστε τα διαμορφωμένα εισερχόμενα catch-all του domain σας." + }, + "random": { + "message": "Τυχαίο" + }, + "randomWord": { + "message": "Τυχαία Λέξη" + }, + "service": { + "message": "Υπηρεσία" + } +} diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json new file mode 100644 index 0000000000..6cd0bbd02d --- /dev/null +++ b/apps/web/src/locales/en/messages.json @@ -0,0 +1,5073 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "What type of item is this?" + }, + "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" + }, + "newPassword": { + "message": "New Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code (CVV)" + }, + "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" + }, + "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" + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "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." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Canceled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "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" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add Item" + }, + "editItem": { + "message": "Edit Item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Other" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copy Password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copy Username", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "me": { + "message": "Me" + }, + "myVault": { + "message": "My Vault" + }, + "allVaults": { + "message": "All Vaults" + }, + "vault": { + "message": "Vault" + }, + "vaults": { + "message": "Vaults" + }, + "vaultItems": { + "message": "Vault Items" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Delete Selected" + }, + "moveSelected": { + "message": "Move Selected" + }, + "selectAll": { + "message": "Select All" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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." + }, + "emailAddress": { + "message": "Email Address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New Organization" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "length": { + "message": "Length" + }, + "uppercase": { + "message": "Uppercase (A-Z)", + "description": "Include uppercase letters in the password generator." + }, + "lowercase": { + "message": "Lowercase (a-z)", + "description": "Include lowercase letters in the password generator." + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "preferences": { + "message": "Preferences" + }, + "preferencesDesc": { + "message": "Customize your web vault experience." + }, + "preferencesUpdated": { + "message": "Preferences updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below.", + "description": "Vault Health Reports can be used to evaluate the security of your Bitwarden Personal or Organization Vault." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you remove an offer or are removed from the sponsoring organization, your Families sponsorship will expire at the next renewal date." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families plan sponsorship will expire at the end of the billing period. You will not be able to redeem a new sponsorship offer until the existing one expires. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorError": { + "message": "Key Connector error: make sure Key Connector is available and working correctly." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "viewBillingSyncToken": { + "message": "View Billing Sync Token" + }, + "generateBillingSyncToken": { + "message": "Generate Billing Sync Token" + }, + "copyPasteBillingSync": { + "message": "Copy and paste this token into the Billing Sync settings of your self-hosted organization." + }, + "billingSyncCanAccess": { + "message": "Your Billing Sync token can access and edit this organization's subscription settings." + }, + "manageBillingSync": { + "message": "Manage Billing Sync" + }, + "setUpBillingSync": { + "message": "Set Up Billing Sync" + }, + "generateToken": { + "message": "Generate Token" + }, + "rotateToken": { + "message": "Rotate Token" + }, + "rotateBillingSyncTokenWarning": { + "message": "If you proceed, you will need to re-setup billing sync on your self-hosted server." + }, + "rotateBillingSyncTokenTitle": { + "message": "Rotating the Billing Sync Token will invalidate the previous token." + }, + "selfHostingTitle": { + "message": "Self-Hosting" + }, + "selfHostingEnterpriseOrganizationSectionCopy": { + "message": "To set-up your organization on your own server, you will need to upload your license file. To support Free Families plans and advanced billing capabilities for your self-hosted organization, you will need to set up billing sync." + }, + "billingSyncApiKeyRotated": { + "message": "Token rotated." + }, + "billingSync": { + "message": "Billing Sync" + }, + "billingSyncDesc": { + "message": "Billing Sync provides Free Families plans for members and advanced billing capabilities by linking your self-hosted Bitwarden to the Bitwarden cloud server." + }, + "billingSyncKeyDesc": { + "message": "A Billing Sync Token from your cloud organization's subscription settings is required to complete this form." + }, + "billingSyncKey": { + "message": "Billing Sync Token" + }, + "active": { + "message": "Active" + }, + "inactive": { + "message": "Inactive" + }, + "sentAwaitingSync": { + "message": "Sent (Awaiting Sync)" + }, + "sent": { + "message": "Sent" + }, + "requestRemoved": { + "message": "Removed (Awaiting Sync)" + }, + "requested": { + "message": "Requested" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "accessDenied": { + "message": "Access Denied. You do not have permission to view this page." + }, + "masterPassword": { + "message": "Master Password" + }, + "security": { + "message": "Security" + }, + "keys": { + "message": "Keys" + }, + "billingHistory": { + "message": "Billing History" + }, + "backToReports": { + "message": "Back to Reports" + }, + "organizationPicker": { + "message": "Organization picker" + }, + "currentOrganization": { + "message": "Current organization", + "description": "This is used by screen readers to indicate the organization that is currently being shown to the user." + }, + "accountSettings": { + "message": "Account Settings" + }, + "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", + "description": "Generates domain-based username using random letters" + }, + "randomWord": { + "message": "Random Word" + }, + "service": { + "message": "Service" + }, + "unknownCipher": { + "message": "Unknown Item, you may need to request permission to access this item." + }, + "cannotSponsorSelf": { + "message": "You cannot redeem for the active account. Enter a different email." + }, + "revokeWhenExpired": { + "message": "Expires $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "12/31/2020" + } + } + }, + "awaitingSyncSingular": { + "message": "Token rotated $DAYS$ day ago. Update the billing sync token in your self-hosted organization settings.", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "awaitingSyncPlural": { + "message": "Token rotated $DAYS$ days ago. Update the billing sync token in your self-hosted organization settings.", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "lastSync": { + "message": "Last Sync", + "Description": "Used as a prefix to indicate the last time a sync occured. Example \"Last sync 1968-11-16 00:00:00\"" + }, + "sponsorshipsSynced": { + "message": "Self-hosted sponsorships synced." + }, + "billingManagedByProvider": { + "message": "Managed by $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "Managed Services Company" + } + } + }, + "billingContactProviderForAssistance": { + "message": "Please reach out to them for further assistance", + "description": "This text is displayed if an organization's billing is managed by a Provider. It tells the user to contact the Provider for assistance." + }, + "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" + } +} diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json new file mode 100644 index 0000000000..e41f5ebab4 --- /dev/null +++ b/apps/web/src/locales/en_GB/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "What type of item is this?" + }, + "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" + }, + "newPassword": { + "message": "New password" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom fields" + }, + "cardholderName": { + "message": "Cardholder name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security code (CVV)" + }, + "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" + }, + "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" + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration month" + }, + "expirationYear": { + "message": "Expiration year" + }, + "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." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add folder" + }, + "editFolder": { + "message": "Edit folder" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle visibility" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Cancelled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favourite" + }, + "unfavorite": { + "message": "Unfavourite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchFavorites": { + "message": "Search favourites" + }, + "searchType": { + "message": "Search type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search vault" + }, + "allItems": { + "message": "All items" + }, + "favorites": { + "message": "Favourites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "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" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add item" + }, + "editItem": { + "message": "Edit item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "e.g.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Other" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organisation" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copy password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copy username", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy security code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organisation" + }, + "deleteSelected": { + "message": "Delete selected" + }, + "moveSelected": { + "message": "Move selected" + }, + "selectAll": { + "message": "Select all" + }, + "unselectAll": { + "message": "Unselect all" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to bin" + }, + "deletedItems": { + "message": "Items sent to bin" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master password hint" + }, + "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." + }, + "emailAddress": { + "message": "Email address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New organisation" + }, + "noOrganizationsList": { + "message": "You do not belong to any organisations. Organisations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step login options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F security key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organisation" + }, + "organizations": { + "message": "Organisations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organisation that you wish to move these items to. Moving to an organisation transfers ownership of the items to that organisation. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organisation users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organisation, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy verification code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export vault" + }, + "fileFormat": { + "message": "File format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password generator" + }, + "minComplexityScore": { + "message": "Minimum complexity score" + }, + "minNumbers": { + "message": "Minimum numbers" + }, + "minSpecial": { + "message": "Minimum special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid ambiguous characters" + }, + "regeneratePassword": { + "message": "Regenerate password" + }, + "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" + }, + "passwordHistory": { + "message": "Password history" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account updated" + }, + "changeEmail": { + "message": "Change email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalise the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications, log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change master password" + }, + "masterPasswordChanged": { + "message": "Master password changed" + }, + "currentMasterPass": { + "message": "Current master password" + }, + "newMasterPass": { + "message": "New master password" + }, + "confirmNewMasterPass": { + "message": "Confirm new master password" + }, + "encKeySettings": { + "message": "Encryption key settings" + }, + "kdfAlgorithm": { + "message": "KDF algorithm" + }, + "kdfIterations": { + "message": "KDF iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption key settings changed" + }, + "dangerZone": { + "message": "Danger zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorise sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorise all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All sessions deauthorised" + }, + "purgeVault": { + "message": "Purge vault" + }, + "purgedOrganizationVault": { + "message": "Purged organisation vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organisation that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organisation's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organisation. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customise your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable website icons" + }, + "disableIconsDesc": { + "message": "Website icons provide a recognisable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable full width layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global equivalent domains" + }, + "customEqDomains": { + "message": "Custom equivalent domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customise" + }, + "newCustomDomain": { + "message": "New custom domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter sub-domains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an Android app with other website domains." + }, + "customDomainX": { + "message": "Custom domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organisation's users by configuring providers at the organisation level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (e.g. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View recovery code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium membership" + }, + "premiumRequired": { + "message": "Premium required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organisation of which you are a member." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended. However, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a USB port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable all keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret key" + }, + "twoFactorDuoApiHostname": { + "message": "API hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecured websites report" + }, + "unsecuredWebsitesReportDesc": { + "message": "Using unsecured websites with the http:// scheme can be dangerous. If the website allows, you should always access it using the https:// scheme so that your connection is encrypted." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured websites found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive 2FA report" + }, + "inactive2faReportDesc": { + "message": "Two-factor authentication (2FA) is an important security setting that helps secure your accounts. If the website offers it, you should always enable two-factor authentication." + }, + "inactive2faFound": { + "message": "Logins without 2FA found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to twofactorauth.org). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed passwords report" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords that have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "Exposed passwords found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check exposed passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak passwords report" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can easily be guessed by hackers and automated tools that are used to crack passwords. The Bitwarden password generator can help you create strong passwords." + }, + "weakPasswordsFound": { + "message": "Weak passwords found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused passwords report" + }, + "reusedPasswordsReportDesc": { + "message": "If a service that you use is compromised, reusing the same password elsewhere can allow hackers to easily gain access to more of your online accounts. You should use a unique password for every account or service." + }, + "reusedPasswordsFound": { + "message": "Reused passwords found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data breach report" + }, + "breachDesc": { + "message": "A \"breach\" is an incident where a site's data has been illegally accessed by hackers and then released publicly. Review the types of data that were compromised (email addresses, passwords, credit cards etc.) and take appropriate action, such as changing passwords." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good news", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached accounts found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected users" + }, + "breachOccurred": { + "message": "Breach occurred" + }, + "breachReported": { + "message": "Breach reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Add-ons" + }, + "premiumAccess": { + "message": "Premium access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organisation for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mon.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been cancelled." + }, + "pendingCancellation": { + "message": "Pending cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been cancelled." + }, + "neverExpires": { + "message": "Never expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download licence" + }, + "updateLicense": { + "message": "Update licence" + }, + "updatedLicense": { + "message": "Updated licence" + }, + "manageSubscription": { + "message": "Manage subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add storage" + }, + "removeStorage": { + "message": "Remove storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add payment method" + }, + "changePaymentMethod": { + "message": "Change payment method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of storage to add" + }, + "gbStorageRemove": { + "message": "GB of storage to remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase premium" + }, + "licenseFile": { + "message": "Licence file" + }, + "licenseFileDesc": { + "message": "Your licence file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid licence file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organisation you need to upload a valid licence file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organisations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General information" + }, + "organizationName": { + "message": "Organisation name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing email" + }, + "businessName": { + "message": "Business name" + }, + "chooseYourPlan": { + "message": "Choose your plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User seats" + }, + "additionalUserSeats": { + "message": "Additional user seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other users.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organisations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organisations." + }, + "freeForever": { + "message": "Free forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to premium features" + }, + "controlAccessWithGroups": { + "message": "Control user access with groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base price" + }, + "organizationCreated": { + "message": "Organisation created" + }, + "organizationReadyToGo": { + "message": "Your new organisation is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organisation has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organisation?" + }, + "leftOrganization": { + "message": "You have left the organisation." + }, + "defaultCollection": { + "message": "Default collection" + }, + "getHelp": { + "message": "Get help" + }, + "getApps": { + "message": "Get the apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New group" + }, + "addGroup": { + "message": "Add group" + }, + "editGroup": { + "message": "Edit group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organisation will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External ID" + }, + "externalIdDesc": { + "message": "The external ID can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read only" + }, + "newCollection": { + "message": "New collection" + }, + "addCollection": { + "message": "Add collection" + }, + "editCollection": { + "message": "Edit collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit user" + }, + "inviteUser": { + "message": "Invite user" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organisation by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organisation." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organisation, this user will maintain ownership of the organisation." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organisation." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organisation." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organisation." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load more" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organisation vault." + }, + "editedOrgSettings": { + "message": "Edited organisation settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to bin.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organisation.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organisation vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User access" + }, + "userType": { + "message": "User type" + }, + "groupAccess": { + "message": "Group access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm user" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organisation until they are confirmed." + }, + "startDate": { + "message": "Start date" + }, + "endDate": { + "message": "End date" + }, + "verifyEmail": { + "message": "Verify email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address must first be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join organisation" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organisation listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organisation once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organisation admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover account two-step login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My organisation" + }, + "deleteOrganization": { + "message": "Delete organisation" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organisation." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisation deleted" + }, + "organizationDeletedDesc": { + "message": "The organisation and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organisation updated" + }, + "taxInformation": { + "message": "Tax information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements; for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View invoice" + }, + "downloadInvoice": { + "message": "Download invoice" + }, + "verifyBankAccount": { + "message": "Verify bank account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organisation's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Sort code", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account number" + }, + "accountHolderName": { + "message": "Account holder name" + }, + "bankAccountType": { + "message": "Account type" + }, + "bankAccountTypeCompany": { + "message": "Company (business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (personal)" + }, + "enterInstallationId": { + "message": "Enter your installation ID" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organisation.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats to add" + }, + "seatsToRemove": { + "message": "Seats to remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key updated" + }, + "updateKeyTitle": { + "message": "Update key" + }, + "updateEncryptionKey": { + "message": "Update encryption key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, although this may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade organisation" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organisations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create organisation: step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organisation, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of service and privacy policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of service" + }, + "privacyPolicy": { + "message": "Privacy policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On browser refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisation is disabled." + }, + "licenseIsExpired": { + "message": "Licence is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate encryption key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organisation. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 client credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API key" + }, + "rotateApiKey": { + "message": "Rotate API key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisation members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organisation and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organisation that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organisations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organisation policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum number of words" + }, + "defaultType": { + "message": "Default type" + }, + "userPreference": { + "message": "User preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search bin" + }, + "permanentlyDelete": { + "message": "Permanently delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently delete selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently delete item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore selected" + }, + "restoreItem": { + "message": "Restore item" + }, + "restoredItem": { + "message": "Restored item" + }, + "restoredItems": { + "message": "Restored items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organisation identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organisation's single sign-on portal. Please enter your organisation's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise single sign-on" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise policies" + }, + "ssoValidationFailed": { + "message": "SSO validation failed" + }, + "ssoIdentifierRequired": { + "message": "Organisation identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organisation?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single organisation" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organisations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organisation has a policy that does not allow you to join more than one organisation. Please contact your organisation admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organisation members who are not Owners or Administrators and are already a member of another organisation will be removed from your organisation." + }, + "requireSso": { + "message": "Single sign-on authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organisation enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organisation policy not enabled." + }, + "requireSsoExemption": { + "message": "Organisation Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create new 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove password" + }, + "removedPassword": { + "message": "Removed password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the sender for the password needed to access this send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download file" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of a emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organisations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet; invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organisation by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organisation Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organisation users that can manage the organisation's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organisation users that can manage the organisation's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organisation policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organisation policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organisation policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organisation users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrolment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organisation policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organisation administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organisation to reset organisation users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organisation will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organisation will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Automatically enroll new users" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organisation Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or cancelled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organisations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organisations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organisation" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organisation that will be associated with you as the provider. You will be able to access and manage this organisation." + }, + "addExistingOrganization": { + "message": "Add Existing Organisation" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organisation was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organisation using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organisation.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organisation $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organisation? The organisation will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organisation. In order to join the organisation, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organisation." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organisation policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get Claims From User Info Endpoint" + }, + "additionalScopes": { + "message": "Additional/Custom Scopes (comma delimited)" + }, + "additionalUserIdClaimTypes": { + "message": "Additional/Custom User ID Claim Types (comma delimited)" + }, + "additionalEmailClaimTypes": { + "message": "Additional/Custom Email Claim Types (comma delimited)" + }, + "additionalNameClaimTypes": { + "message": "Additional/Custom Name Claim Types (comma delimited)" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response (acr validation)" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Want Assertions Signed" + }, + "spValidateCertificates": { + "message": "Validate Certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow Unsolicited Authentication Response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organisation you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organisation, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organisation or create a new Families organisation." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organisation. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organisation owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organisation policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organisation cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organisation. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organisation you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organisation and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organisation" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organisation" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customisations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organisation 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organisation vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organisations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json new file mode 100644 index 0000000000..3f88812b29 --- /dev/null +++ b/apps/web/src/locales/en_IN/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "What type of item is this?" + }, + "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" + }, + "newPassword": { + "message": "New Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom fields" + }, + "cardholderName": { + "message": "Cardholder name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security code (CVV)" + }, + "identityName": { + "message": "Identity name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Aadhar Number" + }, + "passportNumber": { + "message": "Passport number" + }, + "licenseNumber": { + "message": "Licence number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "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" + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration month" + }, + "expirationYear": { + "message": "Expiration year" + }, + "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." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add folder" + }, + "editFolder": { + "message": "Edit folder" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle visibility" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Cancelled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favourite" + }, + "unfavorite": { + "message": "Unfavourite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchFavorites": { + "message": "Search favourites" + }, + "searchType": { + "message": "Search type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search vault" + }, + "allItems": { + "message": "All items" + }, + "favorites": { + "message": "Favourites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "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 / Union territory" + }, + "zipPostalCode": { + "message": "Postcode" + }, + "country": { + "message": "Country" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add item" + }, + "editItem": { + "message": "Edit item" + }, + "viewItem": { + "message": "View item" + }, + "ex": { + "message": "e.g.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Other" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organisation" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copy password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copy username", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy security code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organisation" + }, + "deleteSelected": { + "message": "Delete selected" + }, + "moveSelected": { + "message": "Move selected" + }, + "selectAll": { + "message": "Select all" + }, + "unselectAll": { + "message": "Unselect all" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Delete item" + }, + "deleteFolder": { + "message": "Delete folder" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteItemConfirmation": { + "message": "Are you sure you want to delete this item?" + }, + "deletedItem": { + "message": "Item sent to bin" + }, + "deletedItems": { + "message": "Items sent to bin" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master password hint" + }, + "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." + }, + "emailAddress": { + "message": "Email address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New organisation" + }, + "noOrganizationsList": { + "message": "You do not belong to any organisations. Organisations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step login options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F security key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organisation" + }, + "organizations": { + "message": "Organisations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organisation that you wish to move these items to. Moving to an organisation transfers ownership of the items to that organisation. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organisation users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organisation, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy verification code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export vault" + }, + "fileFormat": { + "message": "File format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password generator" + }, + "minComplexityScore": { + "message": "Minimum complexity score" + }, + "minNumbers": { + "message": "Minimum numbers" + }, + "minSpecial": { + "message": "Minimum special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid ambiguous characters" + }, + "regeneratePassword": { + "message": "Regenerate password" + }, + "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" + }, + "passwordHistory": { + "message": "Password history" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account updated" + }, + "changeEmail": { + "message": "Change email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalise the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications, log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change master password" + }, + "masterPasswordChanged": { + "message": "Master password changed" + }, + "currentMasterPass": { + "message": "Current master password" + }, + "newMasterPass": { + "message": "New master password" + }, + "confirmNewMasterPass": { + "message": "Confirm new master password" + }, + "encKeySettings": { + "message": "Encryption key settings" + }, + "kdfAlgorithm": { + "message": "KDF algorithm" + }, + "kdfIterations": { + "message": "KDF iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption key settings changed" + }, + "dangerZone": { + "message": "Danger zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorise sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorise all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All sessions deauthorised" + }, + "purgeVault": { + "message": "Purge vault" + }, + "purgedOrganizationVault": { + "message": "Purged organisation vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organisation that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organisation's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customise your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable website icons" + }, + "disableIconsDesc": { + "message": "Website icons provide a recognisable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable full width layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global equivalent domains" + }, + "customEqDomains": { + "message": "Custom equivalent domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customise" + }, + "newCustomDomain": { + "message": "New custom domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter sub-domains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an Android app with other website domains." + }, + "customDomainX": { + "message": "Custom domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organisation's users by configuring providers at the organisation level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (e.g. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View recovery code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium membership" + }, + "premiumRequired": { + "message": "Premium required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organisation of which you are a member." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended. However, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a USB port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable all keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret key" + }, + "twoFactorDuoApiHostname": { + "message": "API hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecured websites report" + }, + "unsecuredWebsitesReportDesc": { + "message": "Using unsecured websites with the http:// scheme can be dangerous. If the website allows, you should always access it using the https:// scheme so that your connection is encrypted." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured websites found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive 2FA report" + }, + "inactive2faReportDesc": { + "message": "Two-factor authentication (2FA) is an important security setting that helps secure your accounts. If the website offers it, you should always enable two-factor authentication." + }, + "inactive2faFound": { + "message": "Logins without 2FA found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to twofactorauth.org). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed passwords report" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords that have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "Exposed passwords found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check exposed passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak passwords report" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can easily be guessed by hackers and automated tools that are used to crack passwords. The Bitwarden password generator can help you create strong passwords." + }, + "weakPasswordsFound": { + "message": "Weak passwords found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused passwords report" + }, + "reusedPasswordsReportDesc": { + "message": "If a service that you use is compromised, reusing the same password elsewhere can allow hackers to easily gain access to more of your online accounts. You should use a unique password for every account or service." + }, + "reusedPasswordsFound": { + "message": "Reused passwords found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data breach report" + }, + "breachDesc": { + "message": "A \"breach\" is an incident where a site's data has been illegally accessed by hackers and then released publicly. Review the types of data that were compromised (email addresses, passwords, credit cards etc.) and take appropriate action, such as changing passwords." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good news", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached accounts found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected users" + }, + "breachOccurred": { + "message": "Breach occurred" + }, + "breachReported": { + "message": "Breach reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Add-ons" + }, + "premiumAccess": { + "message": "Premium access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organisation for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mon.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. Billing will occur on a recurring basis each $INTERVAL$. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been cancelled." + }, + "pendingCancellation": { + "message": "Pending cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been cancelled." + }, + "neverExpires": { + "message": "Never expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download licence" + }, + "updateLicense": { + "message": "Update licence" + }, + "updatedLicense": { + "message": "Updated licence" + }, + "manageSubscription": { + "message": "Manage subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add storage" + }, + "removeStorage": { + "message": "Remove storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add payment method" + }, + "changePaymentMethod": { + "message": "Change payment method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of storage to add" + }, + "gbStorageRemove": { + "message": "GB of storage to remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase premium" + }, + "licenseFile": { + "message": "Licence file" + }, + "licenseFileDesc": { + "message": "Your licence file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid licence file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organisation you need to upload a valid licence file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organisations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General information" + }, + "organizationName": { + "message": "Organisation name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing email" + }, + "businessName": { + "message": "Business name" + }, + "chooseYourPlan": { + "message": "Choose your plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User seats" + }, + "additionalUserSeats": { + "message": "Additional user seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other users.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organisations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organisations." + }, + "freeForever": { + "message": "Free forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to premium features" + }, + "controlAccessWithGroups": { + "message": "Control user access with groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base price" + }, + "organizationCreated": { + "message": "Organisation created" + }, + "organizationReadyToGo": { + "message": "Your new organisation is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organisation has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organisation?" + }, + "leftOrganization": { + "message": "You have left the organisation." + }, + "defaultCollection": { + "message": "Default collection" + }, + "getHelp": { + "message": "Get help" + }, + "getApps": { + "message": "Get the apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New group" + }, + "addGroup": { + "message": "Add group" + }, + "editGroup": { + "message": "Edit group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External ID" + }, + "externalIdDesc": { + "message": "The external ID can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read only" + }, + "newCollection": { + "message": "New collection" + }, + "addCollection": { + "message": "Add collection" + }, + "editCollection": { + "message": "Edit collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit user" + }, + "inviteUser": { + "message": "Invite user" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organisation by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organisation." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organisation." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organisation." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organisation." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load more" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organisation vault." + }, + "editedOrgSettings": { + "message": "Edited organisation settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to bin.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organisation.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User access" + }, + "userType": { + "message": "User type" + }, + "groupAccess": { + "message": "Group access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm user" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organisation until they are confirmed." + }, + "startDate": { + "message": "Start date" + }, + "endDate": { + "message": "End date" + }, + "verifyEmail": { + "message": "Verify email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address must first be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join organisation" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organisation listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organisation once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organisation admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover account two-step login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My organisation" + }, + "deleteOrganization": { + "message": "Delete organisation" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisation deleted" + }, + "organizationDeletedDesc": { + "message": "The organisation and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organisation updated" + }, + "taxInformation": { + "message": "Tax information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements; for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Change plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View invoice" + }, + "downloadInvoice": { + "message": "Download invoice" + }, + "verifyBankAccount": { + "message": "Verify bank account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organisation's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Sort code", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account number" + }, + "accountHolderName": { + "message": "Account holder name" + }, + "bankAccountType": { + "message": "Account type" + }, + "bankAccountTypeCompany": { + "message": "Company (business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (personal)" + }, + "enterInstallationId": { + "message": "Enter your installation ID" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats to add" + }, + "seatsToRemove": { + "message": "Seats to remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key updated" + }, + "updateKeyTitle": { + "message": "Update key" + }, + "updateEncryptionKey": { + "message": "Update encryption key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, although this may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade organisation" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organisations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create organisation: step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organisation, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of service" + }, + "privacyPolicy": { + "message": "Privacy policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On browser refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisation is disabled." + }, + "licenseIsExpired": { + "message": "Licence is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate encryption key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Don't ask to verify fingerprint phrase again", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organisation. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 client credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API key" + }, + "rotateApiKey": { + "message": "Rotate API key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisation members who do not have two-step login enabled for their personal account will be removed from the organisation and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organisation that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organisations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organisation policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum number of words" + }, + "defaultType": { + "message": "Default type" + }, + "userPreference": { + "message": "User preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search bin" + }, + "permanentlyDelete": { + "message": "Permanently delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently delete selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently delete item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore selected" + }, + "restoreItem": { + "message": "Restore item" + }, + "restoredItem": { + "message": "Restored item" + }, + "restoredItems": { + "message": "Restored items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organisation identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organisation's single sign-on portal. Please enter your organisation's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise single sign-on" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise policies" + }, + "ssoValidationFailed": { + "message": "SSO validation failed" + }, + "ssoIdentifierRequired": { + "message": "Organisation identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of a emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Send options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organisation users that can manage the organisation's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organisation policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organisation policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organisation administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organisation to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organisation will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organisation will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Automatically enroll new users" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organisation Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json new file mode 100644 index 0000000000..e9dce0799c --- /dev/null +++ b/apps/web/src/locales/eo/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Reta Volbo", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Kia speco de ero estas ĉi tio?" + }, + "name": { + "message": "Nomo" + }, + "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": "Uzantnomo" + }, + "password": { + "message": "Pasvorto" + }, + "newPassword": { + "message": "Nova pasvorto" + }, + "passphrase": { + "message": "Pasfrazo" + }, + "notes": { + "message": "Notoj" + }, + "customFields": { + "message": "Propraj Kampoj" + }, + "cardholderName": { + "message": "Nomo de Kartposedanto" + }, + "number": { + "message": "Numero" + }, + "brand": { + "message": "Marko" + }, + "expiration": { + "message": "Finiĝo" + }, + "securityCode": { + "message": "Sekureca Kodo (CVV)" + }, + "identityName": { + "message": "Identeca Nomo" + }, + "company": { + "message": "Kompanio" + }, + "ssn": { + "message": "Socia Sekureca Numero" + }, + "passportNumber": { + "message": "Pasporta Numero" + }, + "licenseNumber": { + "message": "Permesila Numero" + }, + "email": { + "message": "Retpoŝto" + }, + "phone": { + "message": "Telefono" + }, + "january": { + "message": "januaro" + }, + "february": { + "message": "februaro" + }, + "march": { + "message": "marto" + }, + "april": { + "message": "aprilo" + }, + "may": { + "message": "majo" + }, + "june": { + "message": "junio" + }, + "july": { + "message": "julio" + }, + "august": { + "message": "aŭgusto" + }, + "september": { + "message": "septembro" + }, + "october": { + "message": "oktobro" + }, + "november": { + "message": "novembro" + }, + "december": { + "message": "decembro" + }, + "title": { + "message": "Titolo" + }, + "mr": { + "message": "S-ro" + }, + "mrs": { + "message": "Sinjorino" + }, + "ms": { + "message": "Sinjorino" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Finiĝa Monato" + }, + "expirationYear": { + "message": "Finiĝa Jaro" + }, + "authenticatorKeyTotp": { + "message": "Aŭtentiga Ŝlosilo (TOTP)" + }, + "folder": { + "message": "Dosierujo" + }, + "newCustomField": { + "message": "Nova Propra Kampo" + }, + "value": { + "message": "Valoro" + }, + "dragToSort": { + "message": "Trenu por ordigi" + }, + "cfTypeText": { + "message": "Teksto" + }, + "cfTypeHidden": { + "message": "Kaŝita" + }, + "cfTypeBoolean": { + "message": "Bulea" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Forigi" + }, + "unassigned": { + "message": "Neasignita" + }, + "noneFolder": { + "message": "Neniu dosierujo", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Aldoni dosierujon" + }, + "editFolder": { + "message": "Redakti dosierujon" + }, + "baseDomain": { + "message": "Baza domajno", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Gastiganto", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Ĝusta" + }, + "startsWith": { + "message": "Komencas per" + }, + "regEx": { + "message": "Regula esprimo", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Match", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Defaŭlta kongrua detekto", + "description": "Default URI match detection for auto-fill." + }, + "never": { + "message": "Neniam" + }, + "toggleVisibility": { + "message": "Baskuli videblecon" + }, + "toggleCollapse": { + "message": "Baskuli Fali", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generi Pasvorton" + }, + "checkPassword": { + "message": "Kontrolu ĉu pasvorto estis elmontrita." + }, + "passwordExposed": { + "message": "Ĉi tiu pasvorto estis elmontrita $VALUE$ tempo (j) en datumaj rompoj. Vi devas ŝanĝi ĝin.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Ĉi tiu pasvorto ne troviĝis en iuj konataj rompo de datumoj. Ĝi estu sekure uzebla." + }, + "save": { + "message": "Konservi" + }, + "cancel": { + "message": "Nuligi" + }, + "canceled": { + "message": "Nuligita" + }, + "close": { + "message": "Fermi" + }, + "delete": { + "message": "Forigi" + }, + "favorite": { + "message": "Plej ŝatata" + }, + "unfavorite": { + "message": "Malfavoras" + }, + "edit": { + "message": "Redakti" + }, + "searchCollection": { + "message": "Serĉi Kolekton" + }, + "searchFolder": { + "message": "Serĉi dosierujon" + }, + "searchFavorites": { + "message": "Serĉi Favoratojn" + }, + "searchType": { + "message": "Serĉspeco", + "description": "Search item type" + }, + "searchVault": { + "message": "Serĉi Volbon" + }, + "allItems": { + "message": "Ĉiuj Eroj" + }, + "favorites": { + "message": "Ŝatataj" + }, + "types": { + "message": "Tipoj" + }, + "typeLogin": { + "message": "Ensaluti" + }, + "typeCard": { + "message": "Karto" + }, + "typeIdentity": { + "message": "Identeco" + }, + "typeSecureNote": { + "message": "Sekura Noto" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Dosierujoj" + }, + "collections": { + "message": "Kolektoj" + }, + "firstName": { + "message": "Antaŭnomo" + }, + "middleName": { + "message": "Meza nomo" + }, + "lastName": { + "message": "Lasta nomo" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Adreso 1" + }, + "address2": { + "message": "Adreso 2" + }, + "address3": { + "message": "Adreso 3" + }, + "cityTown": { + "message": "Urbo / Urbo" + }, + "stateProvince": { + "message": "Ŝtato / Provinco" + }, + "zipPostalCode": { + "message": "Poŝtkodo / Poŝtkodo" + }, + "country": { + "message": "Lando" + }, + "shared": { + "message": "Kunhavigita" + }, + "attachments": { + "message": "Aldonaĵoj" + }, + "select": { + "message": "Elektu" + }, + "addItem": { + "message": "Aldoni Artikolon" + }, + "editItem": { + "message": "Redakti Artikolon" + }, + "viewItem": { + "message": "Vidigi Artikolon" + }, + "ex": { + "message": "ekz.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Aliaj" + }, + "share": { + "message": "Kunhavigi" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ kopiita", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopii valoron", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopii pasvorton", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopii uzantnomon", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopii Numeron", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiu Sekureckodon", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopii URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mia Volbo" + }, + "vault": { + "message": "Volbo" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Forigi Elektitajn" + }, + "moveSelected": { + "message": "Movi Elektitan" + }, + "selectAll": { + "message": "Elekti ĉiujn" + }, + "unselectAll": { + "message": "Malelekti ĉiujn" + }, + "launch": { + "message": "Lanĉo" + }, + "newAttachment": { + "message": "Aldoni Novan Aldonaĵon" + }, + "deletedAttachment": { + "message": "Forigita aldonaĵo" + }, + "deleteAttachmentConfirmation": { + "message": "Ĉu vi certe volas forigi ĉi tiun aldonaĵon?" + }, + "attachmentSaved": { + "message": "La aldonaĵo estas konservita." + }, + "file": { + "message": "Dosiero" + }, + "selectFile": { + "message": "Elektu dosieron." + }, + "maxFileSize": { + "message": "Maksimuma dosiergrandeco estas 500 MB." + }, + "updateKey": { + "message": "Vi ne povas uzi ĉi tiun funkcion antaŭ ol vi ĝisdatigos vian ĉifran ŝlosilon." + }, + "addedItem": { + "message": "Aldonita ero" + }, + "editedItem": { + "message": "Redaktita ero" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Forigi Artikolon" + }, + "deleteFolder": { + "message": "Forigi dosierujon" + }, + "deleteAttachment": { + "message": "Forigi Aldonaĵon" + }, + "deleteItemConfirmation": { + "message": "Ĉu vi vere volas sendi al la rubujo?" + }, + "deletedItem": { + "message": "Artikolo sendita al rubujo" + }, + "deletedItems": { + "message": "Eroj senditaj al rubujo" + }, + "movedItems": { + "message": "Movitaj eroj" + }, + "overwritePasswordConfirmation": { + "message": "Ĉu vi certe volas anstataŭigi la nunan pasvorton?" + }, + "editedFolder": { + "message": "Redaktita dosierujo" + }, + "addedFolder": { + "message": "Aldonita dosierujo" + }, + "deleteFolderConfirmation": { + "message": "Ĉu vi certe volas forigi ĉi tiun dosierujon?" + }, + "deletedFolder": { + "message": "Forigita dosierujo" + }, + "loggedOut": { + "message": "Elsalutita" + }, + "loginExpired": { + "message": "Via ensaluta kunsido eksvalidiĝis." + }, + "logOutConfirmation": { + "message": "Ĉu vi certe volas elsaluti?" + }, + "logOut": { + "message": "Eliri" + }, + "ok": { + "message": "Bone" + }, + "yes": { + "message": "Jes" + }, + "no": { + "message": "Ne" + }, + "loginOrCreateNewAccount": { + "message": "Ensalutu aŭ kreu novan konton por aliri vian sekuran trezorejon." + }, + "createAccount": { + "message": "Krei konton" + }, + "logIn": { + "message": "Ensaluti" + }, + "submit": { + "message": "Sendu" + }, + "emailAddressDesc": { + "message": "Vi uzos vian retpoŝtan adreson por ensaluti." + }, + "yourName": { + "message": "Via nomo" + }, + "yourNameDesc": { + "message": "Kiel ni nomu vin?" + }, + "masterPass": { + "message": "Majstra Pasvorto" + }, + "masterPassDesc": { + "message": "La ĉefa pasvorto estas la pasvorto, kiun vi uzas por aliri vian trezorejon. Tre gravas, ke vi ne forgesu vian ĉefan pasvorton. Ne eblas retrovi la pasvorton, se vi forgesos ĝin." + }, + "masterPassHintDesc": { + "message": "Majstra pasvorta sugesto povas helpi vin memori vian pasvorton se vi forgesas ĝin." + }, + "reTypeMasterPass": { + "message": "Retajpu Majstran Pasvorton" + }, + "masterPassHint": { + "message": "Majstra Pasvorta Konsilo (nedeviga)" + }, + "masterPassHintLabel": { + "message": "Majstra Pasvorta Konsilo" + }, + "settings": { + "message": "Agordoj" + }, + "passwordHint": { + "message": "Pasvorta Konsilo" + }, + "enterEmailToGetHint": { + "message": "Enigu vian retpoŝtadreson por ricevi vian ĉefan pasvortan aludon." + }, + "getMasterPasswordHint": { + "message": "Akiru ĉefan pasvortan sugeston" + }, + "emailRequired": { + "message": "Retpoŝta adreso estas bezonata." + }, + "invalidEmail": { + "message": "Nevalida retpoŝta adreso." + }, + "masterPassRequired": { + "message": "Majstra pasvorto necesas." + }, + "masterPassLength": { + "message": "Majstra pasvorto devas havi almenaŭ 8 signojn." + }, + "masterPassDoesntMatch": { + "message": "Majstra pasvorta konfirmo ne kongruas." + }, + "newAccountCreated": { + "message": "Via nova konto kreiĝis! Vi nun povas ensaluti." + }, + "masterPassSent": { + "message": "Ni sendis al vi retpoŝton kun via ĉefa pasvorta sugesto." + }, + "unexpectedError": { + "message": "Neatendita eraro okazis." + }, + "emailAddress": { + "message": "Retpoŝta Adreso" + }, + "yourVaultIsLocked": { + "message": "Via trezorejo estas ŝlosita. Kontrolu vian ĉefan pasvorton por daŭrigi." + }, + "unlock": { + "message": "Malŝlosi" + }, + "loggedInAsEmailOn": { + "message": "Ensalutinta kiel $EMAIL$ ĉe $HOSTNAME $.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Nevalida majstra pasvorto" + }, + "lockNow": { + "message": "Ŝlosi Nun" + }, + "noItemsInList": { + "message": "Ne estas listigendaj eroj." + }, + "noCollectionsInList": { + "message": "Estas neniuj kolektoj listigeblaj." + }, + "noGroupsInList": { + "message": "Estas neniuj grupoj listigeblaj." + }, + "noUsersInList": { + "message": "Estas neniuj uzantoj listigeblaj." + }, + "noEventsInList": { + "message": "Ne estas eventoj listigeblaj." + }, + "newOrganization": { + "message": "Nova Organizo" + }, + "noOrganizationsList": { + "message": "Vi ne apartenas al iuj organizoj. Organizoj permesas al vi sekure dividi erojn kun aliaj uzantoj." + }, + "versionNumber": { + "message": "Versio $VERSION_NUMBER $", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Enigu la 6-ciferan konfirmkodon de via aŭtentikiga programo." + }, + "enterVerificationCodeEmail": { + "message": "Enigu la 6-ciferan konfirmkodon, kiu estis retpoŝta al $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Kontrola retpoŝto sendita al $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Memoru min" + }, + "sendVerificationCodeEmailAgain": { + "message": "Sendu retpoŝtan kontrol-kodon denove" + }, + "useAnotherTwoStepMethod": { + "message": "Uzu alian du-paŝan ensalutan metodon" + }, + "insertYubiKey": { + "message": "Enmetu vian YubiKey en la USB-havenon de via komputilo, tiam tuŝu ĝian butonon." + }, + "insertU2f": { + "message": "Enmetu vian sekurecan ŝlosilon en la USB-havenon de via komputilo. Se ĝi havas butonon, tuŝu ĝin." + }, + "loginUnavailable": { + "message": "Ensaluto Neatingebla" + }, + "noTwoStepProviders": { + "message": "Ĉi tiu konto havas du-paŝan ensaluton ebligita, tamen neniu el la agorditaj du-paŝaj provizantoj estas subtenata de ĉi tiu retumilo." + }, + "noTwoStepProviders2": { + "message": "Bonvolu uzi subtenatan tTT-legilon (kiel Chrome) kaj / aŭ aldoni pliajn provizantojn pli bone subtenatajn tra tTT-legiloj (kiel aŭtentikiga programo)." + }, + "twoStepOptions": { + "message": "Duŝtupaj Ensalutaj Elektoj" + }, + "recoveryCodeDesc": { + "message": "Ĉu vi perdis aliron al ĉiuj viaj du-faktoraj provizantoj? Uzu vian reakiran kodon por malŝalti ĉiujn du-faktorajn provizantojn de via konto." + }, + "recoveryCodeTitle": { + "message": "Rekuperiga Kodo" + }, + "authenticatorAppTitle": { + "message": "Aŭtentiga Programo" + }, + "authenticatorAppDesc": { + "message": "Uzu aŭtentikan programon (kiel Authy aŭ Google Authenticator) por generi tempokontrolajn kodojn.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Sekureca Ŝlosilo de YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Uzu YubiKey por aliri vian konton. Funkcias kun YubiKey 4-serio, 5-serio kaj NEO-aparatoj." + }, + "duoDesc": { + "message": "Kontrolu per Duo-Sekureco per la Duo Mobile-programo, SMS, telefona alvoko aŭ U2F-sekureca ŝlosilo.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Kontrolu kun Duo Security por via organizo per la Duo Mobile-programo, SMS, telefona alvoko aŭ U2F-sekureca ŝlosilo.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "u2fDesc": { + "message": "Uzu iun ajn sekurecan ŝlosilon FIDO U2F por aliri vian konton." + }, + "u2fTitle": { + "message": "Sekureca Ŝlosilo FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Retpoŝto" + }, + "emailDesc": { + "message": "Kontrolaj kodoj estos retpoŝtigitaj al vi." + }, + "continue": { + "message": "Daŭrigi" + }, + "organization": { + "message": "Organizo" + }, + "organizations": { + "message": "Organizoj" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Redaktu la kolektojn kun kiuj ĉi tiu ero estas dividita. Nur organizaj uzantoj kun aliro al ĉi tiuj kolektoj povos vidi ĉi tiun eron." + }, + "deleteSelectedItemsDesc": { + "message": "Vi elektis $COUNT $eron (j) por forigi. Ĉu vi certe volas forigi ĉiujn ĉi tiujn erojn?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Elektu dosierujon al kiu vi ŝatus movi la elektitajn erojn $COUNT$.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Kontrola Kodo (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopii Konfirman Kodon" + }, + "warning": { + "message": "Averto" + }, + "confirmVaultExport": { + "message": "Konfirmi Volbon-Eksportadon" + }, + "exportWarningDesc": { + "message": "Ĉi tiu eksportado enhavas viajn volbajn datumojn en neĉifrita formato. Vi ne devas stoki aŭ sendi la eksportitan dosieron per nesekuraj kanaloj (kiel retpoŝto). Forigu ĝin tuj post kiam vi finuzos ĝin." + }, + "encExportKeyWarningDesc": { + "message": "Ĉi tiu eksporto ĉifras viajn datumojn per la ĉifra ŝlosilo de via konto. Se vi iam turnos la ĉifran ŝlosilon de via konto, vi devas eksporti denove, ĉar vi ne povos deĉifri ĉi tiun eksportan dosieron." + }, + "encExportAccountWarningDesc": { + "message": "Kontaj ĉifraj ŝlosiloj estas unikaj por ĉiu Bitwarden-uzanto-konto, do vi ne povas importi ĉifritan eksportadon en alian konton." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Eksporti Volbon" + }, + "fileFormat": { + "message": "Dosierformato" + }, + "exportSuccess": { + "message": "Viaj volbaj datumoj estis eksportitaj." + }, + "passwordGenerator": { + "message": "Pasvorta Generilo" + }, + "minComplexityScore": { + "message": "Minimuma Komplekseca Poentaro" + }, + "minNumbers": { + "message": "Minimumaj Nombroj" + }, + "minSpecial": { + "message": "Minimuma Specialaĵo", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evitu Dusignajn Karakterojn" + }, + "regeneratePassword": { + "message": "Regeneri Pasvorton" + }, + "length": { + "message": "Longo" + }, + "numWords": { + "message": "Nombro de Vortoj" + }, + "wordSeparator": { + "message": "Vortdisigilo" + }, + "capitalize": { + "message": "Majuskligi", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inkluzivi numeron" + }, + "passwordHistory": { + "message": "Pasvorta Historio" + }, + "noPasswordsInList": { + "message": "Ne estas listigitaj pasvortoj." + }, + "clear": { + "message": "Malplenigi", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Konto ĝisdatigita" + }, + "changeEmail": { + "message": "Ŝanĝi retpoŝton" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Nova retpoŝto" + }, + "code": { + "message": "Kodo" + }, + "changeEmailDesc": { + "message": "Ni sendis retpoŝtan kontrolkodon al $EMAIL$. Bonvolu kontroli vian retpoŝton pri ĉi tiu kodo kaj enigu ĝin sube por fini la retpoŝtan adresŝanĝon.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Daŭrigi vin elsalutos de via nuna sesio, postulante vin denove ensaluti. Aktivaj sesioj sur aliaj aparatoj povas daŭre resti aktivaj ĝis unu horo." + }, + "emailChanged": { + "message": "Retpoŝto Ŝanĝis" + }, + "logBackIn": { + "message": "Bonvolu ensaluti denove." + }, + "logBackInOthersToo": { + "message": "Bonvolu ensaluti. Se vi uzas aliajn Bitwarden-programojn, elsalutu kaj reen al tiuj ankaŭ." + }, + "changeMasterPassword": { + "message": "Ŝanĝi Majstran Pasvorton" + }, + "masterPasswordChanged": { + "message": "Majstra pasvorto ŝanĝita" + }, + "currentMasterPass": { + "message": "Nuna Majstra Pasvorto" + }, + "newMasterPass": { + "message": "Nova Majstra Pasvorto" + }, + "confirmNewMasterPass": { + "message": "Konfirmi Novan Majstran Pasvorton" + }, + "encKeySettings": { + "message": "Agordoj de Ĉifroklavo" + }, + "kdfAlgorithm": { + "message": "KDF-Algoritmo" + }, + "kdfIterations": { + "message": "KDF-Ripetoj" + }, + "kdfIterationsDesc": { + "message": "Pli altaj KDF-ripetoj povas helpi protekti vian ĉefan pasvorton kontraŭ malpura devigo de atakanto. Ni rekomendas valoron de $VALUE$ aŭ pli.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Agordi viajn KDF-ripetojn tro alte povus rezultigi malbonan rendimenton kiam vi ensalutas (kaj malŝlosas) Bitwarden sur aparatoj kun pli malrapidaj CPUoj. Ni rekomendas, ke vi pliigu la valoron en pliigoj de $INCREMENT$ kaj poste provu ĉiujn viajn aparatojn. . ", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Ŝanĝi KDF" + }, + "encKeySettingsChanged": { + "message": "Ŝanĝaj Ŝlosilaj Agordoj Ŝanĝiĝis" + }, + "dangerZone": { + "message": "Danĝera Zono" + }, + "dangerZoneDesc": { + "message": "Atentu, ĉi tiuj agoj ne estas reigeblaj!" + }, + "deauthorizeSessions": { + "message": "Senrajtigi Sesiojn" + }, + "deauthorizeSessionsDesc": { + "message": "Ĉu vi zorgas pri tio, ke via konto estas ensalutinta sur alia aparato? Sekvu sube por senrajtigi ĉiujn komputilojn aŭ aparatojn, kiujn vi antaŭe uzis. Ĉi tiu sekureca paŝo rekomendas se vi antaŭe uzis publikan komputilon aŭ hazarde konservis vian pasvorton sur aparato, kiu ne estas via. Ĉi tiu paŝo ankaŭ malplenigos ĉiujn antaŭe memoritajn du-paŝajn ensalutajn sesiojn. " + }, + "deauthorizeSessionsWarning": { + "message": "La daŭrigo ankaŭ elsalutos vin de via nuna sesio, postulante vin denove ensaluti. Oni ankaŭ petos vin du-ŝtupa ensaluto, se ĝi estas ebligita. Aktivaj sesioj sur aliaj aparatoj povas daŭre resti aktivaj ĝis ĝis unu horo. " + }, + "sessionsDeauthorized": { + "message": "Ĉiuj Sesioj Neaŭtorizitaj" + }, + "purgeVault": { + "message": "Purigi Volbon" + }, + "purgedOrganizationVault": { + "message": "Purigita organizo-volbo." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Sekvu sube por forigi ĉiujn erojn kaj dosierujojn en via trezorejo. Eroj apartenantaj al organizo kun kiu vi dividas ne estos forigitaj." + }, + "purgeOrgVaultDesc": { + "message": "Sekvu sube por forigi ĉiujn erojn en la trezorejo de la organizo." + }, + "purgeVaultWarning": { + "message": "Purigi vian trezorejon estas konstanta. Ĝi ne povas esti malfarita." + }, + "vaultPurged": { + "message": "Via trezorejo estis elpurigita." + }, + "deleteAccount": { + "message": "Forigi konton" + }, + "deleteAccountDesc": { + "message": "Sekvu sube por forigi vian konton kaj ĉiujn rilatajn datumojn." + }, + "deleteAccountWarning": { + "message": "Forigi vian konton estas konstanta. Ĝi ne povas esti malfarita." + }, + "accountDeleted": { + "message": "Konto Forigita" + }, + "accountDeletedDesc": { + "message": "Via konto estis fermita kaj ĉiuj rilataj datumoj estis forigitaj." + }, + "myAccount": { + "message": "Mia Konto" + }, + "tools": { + "message": "Iloj" + }, + "importData": { + "message": "Importi Datumojn" + }, + "importError": { + "message": "Importa Eraro" + }, + "importErrorDesc": { + "message": "Estis problemo pri la datumoj, kiujn vi provis importi. Bonvolu solvi la erarojn listigitajn sube en via fontdosiero kaj reprovi." + }, + "importSuccess": { + "message": "Datumoj sukcese importiĝis en vian trezorejon." + }, + "importWarning": { + "message": "Vi importas datumojn al $ORGANIZATION$. Viaj datumoj povas esti dividitaj kun membroj de ĉi tiu organizo. Ĉu vi volas daŭrigi?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Datumoj ne estas ĝuste formatitaj. Bonvolu kontroli vian importan dosieron kaj reprovi." + }, + "importNothingError": { + "message": "Nenio estis importita." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Elektu la formaton de la importa dosiero" + }, + "selectImportFile": { + "message": "Elektu la importan dosieron" + }, + "orCopyPasteFileContents": { + "message": "aŭ kopii / alglui la importan dosieron enhavon" + }, + "instructionsFor": { + "message": "Instrukcioj pri $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opcioj" + }, + "optionsDesc": { + "message": "Agordu vian sperton pri retejo." + }, + "optionsUpdated": { + "message": "Opcioj ĝisdatigitaj" + }, + "language": { + "message": "Lingvo" + }, + "languageDesc": { + "message": "Ŝanĝi la lingvon uzatan de la retejo-volbo." + }, + "disableIcons": { + "message": "Malebligi retejajn piktogramojn" + }, + "disableIconsDesc": { + "message": "Retejaj piktogramoj donas rekoneblan bildon apud ĉiu ensaluta ero en via trezorejo." + }, + "enableGravatars": { + "message": "Ebligi Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Uzu avatarajn bildojn ŝarĝitajn de gravatar.com." + }, + "enableFullWidth": { + "message": "Ebligi plenan larĝan aranĝon", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Permesu al la arka volbo pligrandigi la tutan larĝon de la retumila fenestro." + }, + "default": { + "message": "Apriora" + }, + "domainRules": { + "message": "Regaj Reguloj" + }, + "domainRulesDesc": { + "message": "Se vi havas la saman ensaluton tra multaj malsamaj retejaj domajnoj, vi povas marki la retejon kiel \" ekvivalenta \". \" Tutmondaj \" domajnoj estas jam kreitaj por vi de Bitwarden." + }, + "globalEqDomains": { + "message": "Tutmondaj Ekvivalentaj Domajnoj" + }, + "customEqDomains": { + "message": "Propraj Ekvivalentaj Domajnoj" + }, + "exclude": { + "message": "Ekskludi" + }, + "include": { + "message": "Inkluzivi" + }, + "customize": { + "message": "Agordi" + }, + "newCustomDomain": { + "message": "Nova Propra Domajno" + }, + "newCustomDomainDesc": { + "message": "Enmetu liston de domajnoj apartigitaj per komoj. Nur domajnoj \" bazaj \" estas permesataj. Ne enmetu subdomajnojn. Ekzemple enigu \" google.com \"anstataŭ \" www.google.com \". Vi ankaŭ povas enigi \" androidapp: //package.name \"por asocii android-programon kun aliaj retejaj domajnoj." + }, + "customDomainX": { + "message": "Propra Domajno $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domajnoj ĝisdatigitaj" + }, + "twoStepLogin": { + "message": "Du-ŝtupa ensaluto" + }, + "twoStepLoginDesc": { + "message": "Sekurigu vian konton postulante plian paŝon kiam vi ensalutas." + }, + "twoStepLoginOrganizationDesc": { + "message": "Postuli du-paŝan ensaluton por la uzantoj de via organizo per agordo de provizantoj je la organiza nivelo." + }, + "twoStepLoginRecoveryWarning": { + "message": "Ebligi du-paŝan ensaluton povas konstante elŝlosi vin el via Bitwarden-konto. Rekuperiga kodo permesas vin aliri vian konton, se vi ne plu povas uzi vian normalan du-paŝan ensalutan provizanton (ekz. vi perdas Bitwarden-subteno ne povos helpi vin se vi perdos aliron al via konto. Ni rekomendas al vi skribi aŭ presi la reakiran kodon kaj konservi ĝin en sekura loko. " + }, + "viewRecoveryCode": { + "message": "Rigardi Rekuperan Kodon" + }, + "providers": { + "message": "Provizantoj", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Ebligi" + }, + "enabled": { + "message": "Enŝaltita" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Altkvalita Membreco" + }, + "premiumRequired": { + "message": "Supra Postulo" + }, + "premiumRequiredDesc": { + "message": "Altkvalita membreco necesas por uzi ĉi tiun funkcion." + }, + "youHavePremiumAccess": { + "message": "Vi havas superan aliron" + }, + "alreadyPremiumFromOrg": { + "message": "Vi jam havas aliron al superaj funkcioj pro organizo, en kiu vi membras." + }, + "manage": { + "message": "Administri" + }, + "disable": { + "message": "Malebligi" + }, + "twoStepLoginProviderEnabled": { + "message": "Ĉi tiu du-ŝtupa ensaluta provizanto estas ebligita en via konto." + }, + "twoStepLoginAuthDesc": { + "message": "Enigu vian ĉefan pasvorton por modifi du-paŝajn ensalutajn agordojn." + }, + "twoStepAuthenticatorDesc": { + "message": "Sekvu ĉi tiujn paŝojn por agordi du-paŝan ensaluton per aŭtentikiga programo:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Elŝuti du-paŝan aŭtentikigan programon" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Ĉu vi bezonas du-paŝan aŭtentikigan programon? Elŝutu unu el la jenaj" + }, + "iosDevices": { + "message": "iOS-aparatoj" + }, + "androidDevices": { + "message": "Android-aparatoj" + }, + "windowsDevices": { + "message": "Vindozaj aparatoj" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Ĉi tiuj programoj estas rekomendindaj, tamen ankaŭ aliaj aŭtentikigaj programoj funkcios." + }, + "twoStepAuthenticatorScanCode": { + "message": "Skani ĉi tiun QR-kodon per via aŭtentikiga programo" + }, + "key": { + "message": "Ŝlosilo" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enigu la rezultan 6-ciferan konfirmkodon de la programo" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Se vi bezonas aldoni ĝin al alia aparato, sube estas la QR-kodo (aŭ ŝlosilo) postulita de via aŭtentikiga programo." + }, + "twoStepDisableDesc": { + "message": "Ĉu vi certas, ke vi volas malŝalti ĉi tiun du-paŝan ensalutan provizanton?" + }, + "twoStepDisabled": { + "message": "Du-ŝtupa ensaluta provizanto malŝaltita." + }, + "twoFactorYubikeyAdd": { + "message": "Aldoni novan YubiKey al via konto" + }, + "twoFactorYubikeyPlugIn": { + "message": "Enŝovu la YubiKey en la USB-havenon de via komputilo." + }, + "twoFactorYubikeySelectKey": { + "message": "Elektu la unuan malplenan enigan kampon YubiKey sube." + }, + "twoFactorYubikeyTouchButton": { + "message": "Tuŝu la butonon de YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Konservu la formularon." + }, + "twoFactorYubikeyWarning": { + "message": "Pro platformaj limigoj, YubiKeys ne povas esti uzata en ĉiuj Bitwarden-aplikaĵoj. Vi rajtigu alian du-paŝan ensalutan provizanton, por ke vi povu aliri vian konton kiam YubiKeys ne povas esti uzata. Subtenitaj platformoj:" + }, + "twoFactorYubikeySupportUsb": { + "message": "TTT-volbo, labortabla aplikaĵo, CLI kaj ĉiuj retumilaj etendaĵoj sur aparato kun USBa haveno, kiu povas akcepti vian YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Poŝtelefonaj programoj sur aparato kun NFC-kapabloj aŭ datuma haveno, kiu povas akcepti vian YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F-Ŝlosilo $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC-Subteno" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Unu el miaj klavoj subtenas NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Se unu el viaj YubiKeys subtenas NFC (kiel YubiKey NEO), vi estos instigita per poŝtelefonoj kiam ajn NFC-havebleco estas detektita." + }, + "yubikeysUpdated": { + "message": "YubiKeys ĝisdatigis" + }, + "disableAllKeys": { + "message": "Malebligi ĉiujn ŝlosilojn" + }, + "twoFactorDuoDesc": { + "message": "Enmetu la informojn pri Bitwarden-aplikaĵo de via panelo de Duo Admin." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integriĝa Ŝlosilo" + }, + "twoFactorDuoSecretKey": { + "message": "Sekreta Ŝlosilo" + }, + "twoFactorDuoApiHostname": { + "message": "API Gastiganta Nomo" + }, + "twoFactorEmailDesc": { + "message": "Sekvu ĉi tiujn paŝojn por agordi du-paŝan ensaluton per retpoŝto:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enigu la retpoŝton, ke vi volas ricevi kontrolajn kodojn" + }, + "twoFactorEmailEnterCode": { + "message": "Enigu la rezultan 6-ciferan konfirmkodon el la retpoŝto" + }, + "sendEmail": { + "message": "Sendi retpoŝton" + }, + "twoFactorU2fAdd": { + "message": "Aldonu sekurecan ŝlosilon FIDO U2F al via konto" + }, + "removeU2fConfirmation": { + "message": "Ĉu vi certe volas forigi ĉi tiun sekurecan ŝlosilon?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Legi Ŝlosilon" + }, + "keyCompromised": { + "message": "Ŝlosilo estas kompromitita." + }, + "twoFactorU2fGiveName": { + "message": "Donu al la sekureca ŝlosilo amikan nomon por identigi ĝin." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Enŝovu la sekurecan ŝlosilon en la USB-havenon de via komputilo kaj alklaku la butonon \" Legu Ŝlosilon \"." + }, + "twoFactorU2fTouchButton": { + "message": "Se la sekureca ŝlosilo havas butonon, tuŝu ĝin." + }, + "twoFactorU2fSaveForm": { + "message": "Konservu la formularon." + }, + "twoFactorU2fWarning": { + "message": "Pro platformaj limigoj, FIDO U2F ne povas esti uzata en ĉiuj Bitwarden-aplikaĵoj. Vi rajtigu alian du-paŝan ensalutan provizanton, por ke vi povu aliri vian konton kiam FIDO U2F ne povas esti uzata. Subtenitaj platformoj:" + }, + "twoFactorU2fSupportWeb": { + "message": "Reta volbo kaj retumilaj etendaĵoj sur labortablo / tekkomputilo kun U2F-ebligita retumilo (Chrome, Opera, Vivaldi aŭ Firefox kun FIDO U2F ebligita)." + }, + "twoFactorU2fWaiting": { + "message": "Atendante, ke vi tuŝu la butonon de via sekureca ŝlosilo" + }, + "twoFactorU2fClickSave": { + "message": "Alklaku la suban butonon \" Konservi \"por ebligi ĉi tiun sekurecan ŝlosilon por du-ŝtupa ensaluto." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Via Bitwarden-du-ŝtupa ensaluta reakiro-kodo" + }, + "twoFactorRecoveryNoCode": { + "message": "Vi ankoraŭ ne ebligis du-paŝajn ensalutajn provizantojn. Post kiam vi ebligis du-ŝtupan ensalut-provizanton, vi povas kontroli ĉi tie vian reakiran kodon." + }, + "printCode": { + "message": "Presi Kodon", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Raportoj" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Raporto pri Nesekurigitaj Retejoj" + }, + "unsecuredWebsitesReportDesc": { + "message": "Uzi nesekurigitajn retejojn kun la http: // skemo povas esti danĝera. Se la retejo permesas, vi ĉiam devas aliri ĝin per la skemo https: // tiel ke via konekto estas ĉifrita." + }, + "unsecuredWebsitesFound": { + "message": "Trovitaj Nesekurigitaj Retejoj" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Ni trovis $COUNT$ erojn en via trezorejo kun nesekurigitaj URI-oj. Vi devas ŝanĝi ilian URI-skemon al https: // se la retejo permesas ĝin.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Raporto 2FA neaktiva" + }, + "inactive2faReportDesc": { + "message": "Dufakta aŭtentokontrolo (2FA) estas grava sekureca agordo, kiu helpas sekurigi viajn kontojn. Se la retejo ofertas ĝin, vi devas ĉiam ebligi dufakturan aŭtentikigon." + }, + "inactive2faFound": { + "message": "Ensalutoj Sen 2FA Trovitaj" + }, + "inactive2faFoundDesc": { + "message": "Ni trovis $COUNT$ retejon (j) en via trezorejo, kiu eble ne estas agordita kun dufakta aŭtentokontrolo (laŭ 2fa.directory). Por plue protekti ĉi tiujn kontojn, vi devas ebligi dufaktoran aŭtentikigon.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Neniuj retejoj troviĝis en via trezorejo kun mankanta dufakta aŭtentiga agordo." + }, + "instructions": { + "message": "Instrukcioj" + }, + "exposedPasswordsReport": { + "message": "Raporto pri Malkaŝitaj Pasvortoj" + }, + "exposedPasswordsReportDesc": { + "message": "Malkaŝitaj pasvortoj estas pasvortoj malkovritaj en konataj datumrompoj publikigitaj aŭ venditaj en la malluma retejo de retpiratoj." + }, + "exposedPasswordsFound": { + "message": "Trovitaj Pasvortoj Trovitaj" + }, + "exposedPasswordsFoundDesc": { + "message": "Ni trovis $COUNT$ erojn en via trezorejo, kiuj havas pasvortojn elmontritajn en konataj rompo de datumoj. Vi devas ŝanĝi ilin por uzi novan pasvorton.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Neniuj eroj en via trezorejo havas pasvortojn elmontritajn en konataj rompo de datumoj." + }, + "checkExposedPasswords": { + "message": "Kontroli Malkaŝitajn Pasvortojn" + }, + "exposedXTimes": { + "message": "Elmontritaj $COUNT$ tempo (j)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Raporto pri Malfortaj Pasvortoj" + }, + "weakPasswordsReportDesc": { + "message": "Malfortaj pasvortoj facile diveneblas per retpiratoj kaj aŭtomataj iloj, kiuj estas uzataj por rompi pasvortojn. La Bitwarden-pasvorta generatoro povas helpi vin krei fortajn pasvortojn." + }, + "weakPasswordsFound": { + "message": "Malfortaj Pasvortoj Trovitaj" + }, + "weakPasswordsFoundDesc": { + "message": "Ni trovis $COUNT$ erojn en via trezorejo kun pasvortoj ne fortaj. Vi devas ĝisdatigi ilin por uzi pli fortajn pasvortojn.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Neniuj eroj en via trezorejo havas malfortajn pasvortojn." + }, + "reusedPasswordsReport": { + "message": "Raporto pri recikligitaj pasvortoj" + }, + "reusedPasswordsReportDesc": { + "message": "Se servo, kiun vi uzas, estas kompromitita, reuzi la saman pasvorton aliloke povas permesi al retpiratoj facile aliri al pli da viaj retaj kontoj. Vi devas uzi unikan pasvorton por ĉiu konto aŭ servo." + }, + "reusedPasswordsFound": { + "message": "Reuzitaj Pasvortoj Trovitaj" + }, + "reusedPasswordsFoundDesc": { + "message": "Ni trovis $COUNT$ pasvortojn reuzatajn en via trezorejo. Vi devas ŝanĝi ilin al unika valoro.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Neniuj ensalutoj en via trezorejo havas pasvortojn reuzatajn." + }, + "reusedXTimes": { + "message": "Reuzita $COUNT$ fojojn", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Raporto pri Malobservo de Datumoj" + }, + "breachDesc": { + "message": "\" breĉo \"estas okazaĵo, kie la datumoj de retejo estis kontraŭleĝe aliritaj de retpiratoj kaj poste publikigitaj publike. Revizii la tipojn de datumoj kompromititaj (retpoŝtadresoj, pasvortoj, kreditkartoj ktp.) taŭga ago, kiel ŝanĝi pasvortojn. " + }, + "breachCheckUsernameEmail": { + "message": "Kontrolu iujn ajn uzantnomojn aŭ retpoŝtadresojn, kiujn vi uzas." + }, + "checkBreaches": { + "message": "Kontroli breĉojn" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ ne estis trovita en iuj konataj rompo de datumoj.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Bonaj Novaĵoj", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ estis trovita en $COUNT$ malsamaj datumaj rompoj interrete.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Malobservitaj Kontoj Trovitaj" + }, + "compromisedData": { + "message": "Kompromisitaj datumoj" + }, + "website": { + "message": "Retejo" + }, + "affectedUsers": { + "message": "Afektitaj Uzantoj" + }, + "breachOccurred": { + "message": "Malobservo Okazis" + }, + "breachReported": { + "message": "Malobservo raportita" + }, + "reportError": { + "message": "Eraro okazis provante ŝarĝi la raporton. Provu denove" + }, + "billing": { + "message": "Fakturado" + }, + "accountCredit": { + "message": "Kredita Konto", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Konta Bilanco", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Aldoni Krediton", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Kvanto", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Aldonita kredito aperos en via konto post kiam la pago estos plene prilaborita. Iuj pagmanieroj malfruas kaj povas daŭri pli longe ol aliaj." + }, + "makeSureEnoughCredit": { + "message": "Bonvolu certigi, ke via konto havas sufiĉe da kredito havebla por ĉi tiu aĉeto. Se via konto ne havas sufiĉe da kredito havebla, via defaŭlta pagmaniero uzata por la diferenco. Vi povas aldoni krediton al via konto de la Faktura paĝo. " + }, + "creditAppliedDesc": { + "message": "La kredito de via konto povas esti uzata por aĉeti. Ĉiu havebla kredito aŭtomate aplikiĝos al fakturoj generitaj por ĉi tiu konto." + }, + "goPremium": { + "message": "Iru Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Vi ĝisdatigis al premio." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Altgradigu vian konton al supera membreco kaj malŝlosu iujn bonegajn aldonajn funkciojn." + }, + "premiumSignUpStorage": { + "message": "1 GB ĉifrita stokado por dosieraj aldonaĵoj." + }, + "premiumSignUpTwoStep": { + "message": "Pliaj du-paŝaj ensalutaj opcioj kiel YubiKey, FIDO U2F kaj Duo." + }, + "premiumSignUpEmergency": { + "message": "Kriza Aliro" + }, + "premiumSignUpReports": { + "message": "Raportoj pri pasvorta higieno, sanstato de kontoj kaj rompo de datumoj por protekti vian trezorejon." + }, + "premiumSignUpTotp": { + "message": "Generilo de TOTP-kontrola kodo (2FA) por ensalutoj en via trezorejo." + }, + "premiumSignUpSupport": { + "message": "Prioritata klienta subteno." + }, + "premiumSignUpFuture": { + "message": "Ĉiuj estontaj premiaj funkcioj. Pli baldaŭ!" + }, + "premiumPrice": { + "message": "Ĉio kontraŭ nur $PRICE$ / jaro!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Aldonaĵoj" + }, + "premiumAccess": { + "message": "Altkvalita Aliro" + }, + "premiumAccessDesc": { + "message": "Vi povas aldoni altkvalitan aliron al ĉiuj membroj de via organizo kontraŭ $PRICE$ / $INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Aldona Stokado (GB)" + }, + "additionalStorageGbDesc": { + "message": "Nombro da pliaj GB" + }, + "additionalStorageIntervalDesc": { + "message": "Via plano venas kun $SIZE$ da ĉifrita dosier-stokado. Vi povas aldoni plian stokadon kontraŭ $PRICE$ po GB / $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Resumo" + }, + "total": { + "message": "Entute" + }, + "year": { + "message": "jaro" + }, + "month": { + "message": "monato" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Via pagmaniero estos ŝargita tuj kaj poste ripetiĝante ĉiujare. Vi rajtas nuligi iam ajn." + }, + "paymentCharged": { + "message": "Via pagmaniero tuj estos ŝargita kaj poste ripetiĝante ĉiu $INTERVAL$. Vi rajtas nuligi iam ajn.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Via plano venas kun senpaga 7-taga provado. Via pagmaniero ne estos ŝargita ĝis la proceso finiĝos. Fakturado okazos ĉiufoje $INTERVAL$. Vi rajtas nuligi iam ajn." + }, + "paymentInformation": { + "message": "Pagaj Informoj" + }, + "billingInformation": { + "message": "Fakturaj Informoj" + }, + "creditCard": { + "message": "Kreditkarto" + }, + "paypalClickSubmit": { + "message": "Alklaku la butonon PayPal por ensaluti vian konton PayPal, poste alklaku la butonon Sendu sube por daŭrigi." + }, + "cancelSubscription": { + "message": "Nuligi Abonon" + }, + "subscriptionCanceled": { + "message": "La abono estis nuligita." + }, + "pendingCancellation": { + "message": "Atendanta Nuligo" + }, + "subscriptionPendingCanceled": { + "message": "La abono estis markita por nuligo ĉe la fino de la nuna faktura periodo." + }, + "reinstateSubscription": { + "message": "Reinstali Abonon" + }, + "reinstateConfirmation": { + "message": "Ĉu vi certe volas forigi la pritraktatan nuligan peton kaj reinstali vian abonon?" + }, + "reinstated": { + "message": "La abono estis reinstalita." + }, + "cancelConfirmation": { + "message": "Ĉu vi certas, ke vi volas nuligi? Vi perdos aliron al ĉiuj funkcioj de ĉi tiu abono fine de ĉi tiu faktura ciklo." + }, + "canceledSubscription": { + "message": "La abono estis nuligita." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Stato" + }, + "nextCharge": { + "message": "Sekva Akuzo" + }, + "details": { + "message": "Detaloj" + }, + "downloadLicense": { + "message": "Elŝuti Permesilon" + }, + "updateLicense": { + "message": "Ĝisdatigi Permesilon" + }, + "updatedLicense": { + "message": "Ĝisdatigita permesilo" + }, + "manageSubscription": { + "message": "Administri Abonon" + }, + "storage": { + "message": "Stokado" + }, + "addStorage": { + "message": "Aldoni Stokadon" + }, + "removeStorage": { + "message": "Forigi Stokadon" + }, + "subscriptionStorage": { + "message": "Via abono havas entute $MAX_STORAGE$ GB da ĉifrita dosier-stokado. Vi nun uzas $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Pagmaniero" + }, + "noPaymentMethod": { + "message": "Neniu pagmaniero registrita." + }, + "addPaymentMethod": { + "message": "Aldoni Pagmanieron" + }, + "changePaymentMethod": { + "message": "Ŝanĝi Pagmanieron" + }, + "invoices": { + "message": "Fakturoj" + }, + "noInvoices": { + "message": "Neniuj fakturoj." + }, + "paid": { + "message": "Pagita", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Sensalajra", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transakcioj", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Sen transakcioj." + }, + "chargeNoun": { + "message": "Akuzo", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Repago", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Ĉiuj akuzoj aperos en via deklaro kiel $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Aldoni GB-Stokadon" + }, + "gbStorageRemove": { + "message": "Forigi GB-Stokadon" + }, + "storageAddNote": { + "message": "Aldonado de stokado rezultigos ĝustigojn al viaj fakturaj sumoj kaj tuj ŝargos vian pagmanieron en dosiero. La unua ŝarĝo estos proporciigita por la resto de la aktuala faktura ciklo." + }, + "storageRemoveNote": { + "message": "Forigi stokadon rezultigos ĝustigojn al viaj fakturaj sumoj, kiuj estos proratigitaj kiel kreditoj al via sekva faktura ŝarĝo." + }, + "adjustedStorage": { + "message": "Ĝustigita $AMOUNT$ GB da stokado.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Kontakti Klientan Subtenon" + }, + "updatedPaymentMethod": { + "message": "Ĝisdatigita pagmaniero." + }, + "purchasePremium": { + "message": "Aĉetu Superpagon" + }, + "licenseFile": { + "message": "Permesila Dosiero" + }, + "licenseFileDesc": { + "message": "Via licenca dosiero nomiĝos kiel $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Por ĝisdatigi vian konton al altkvalita membreco vi devas alŝuti validan licencdosieron." + }, + "uploadLicenseFileOrg": { + "message": "Por krei lokan gastigitan organizon, vi devas alŝuti validan licencdosieron." + }, + "accountEmailMustBeVerified": { + "message": "La retpoŝta adreso de via konto devas esti kontrolita." + }, + "newOrganizationDesc": { + "message": "Organizoj permesas al vi dividi partojn de via trezorejo kun aliaj kaj administri rilatajn uzantojn por specifa ento kiel familio, malgranda teamo aŭ granda kompanio." + }, + "generalInformation": { + "message": "Ĝeneralaj Informoj" + }, + "organizationName": { + "message": "Organiza nomo" + }, + "accountOwnedBusiness": { + "message": "Ĉi tiu konto estas posedata de kompanio." + }, + "billingEmail": { + "message": "Faktura Retpoŝto" + }, + "businessName": { + "message": "Komerca nomo" + }, + "chooseYourPlan": { + "message": "Elektu Vian Planon" + }, + "users": { + "message": "Uzantoj" + }, + "userSeats": { + "message": "Uzantaj Sidlokoj" + }, + "additionalUserSeats": { + "message": "Pliaj Uzaj Lokoj" + }, + "userSeatsDesc": { + "message": "Nombro de uzantaj lokoj" + }, + "userSeatsAdditionalDesc": { + "message": "Via plano venas kun $BASE_SEATS$ uzanto-seĝoj. Vi povas aldoni pliajn uzantojn kontraŭ $SEAT_PRICE$ po uzanto / monato.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Kiom da uzantaj seĝoj vi bezonas? Vi ankaŭ povas aldoni pliajn seĝojn poste se necese." + }, + "planNameFree": { + "message": "Senpaga", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Por testado aŭ personaj uzantoj dividi kun $COUNT$ alia uzanto.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familioj" + }, + "planDescFamilies": { + "message": "Por persona uzo, dividi kun familio kaj amikoj." + }, + "planNameTeams": { + "message": "Teamoj" + }, + "planDescTeams": { + "message": "Por entreprenoj kaj aliaj teamaj organizoj." + }, + "planNameEnterprise": { + "message": "Entrepreno" + }, + "planDescEnterprise": { + "message": "Por entreprenoj kaj aliaj grandaj organizoj." + }, + "freeForever": { + "message": "Senpaga Eterne" + }, + "includesXUsers": { + "message": "inkluzivas $COUN$ uzantojn", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Pliaj Uzantoj" + }, + "costPerUser": { + "message": "$COST$ por uzanto", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limigita al $COUNT$ uzantoj (inkluzive de vi)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limigita al $COUNT$ -kolektoj", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Aldoni kaj dividi kun ĝis $COUNT$ uzantoj", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Aldoni kaj dividi kun senlimaj uzantoj" + }, + "createUnlimitedCollections": { + "message": "Krei senlimajn Kolektojn" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ ĉifrita dosier-stokado", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Surloka gastigado (nedeviga)" + }, + "usersGetPremium": { + "message": "Uzantoj ricevas aliron al Premiaj Trajtoj" + }, + "controlAccessWithGroups": { + "message": "Kontroli la aliron de uzanto per Grupoj" + }, + "syncUsersFromDirectory": { + "message": "Sinkronigu viajn uzantojn kaj grupojn de dosierujo" + }, + "trackAuditLogs": { + "message": "Spuri agojn de uzanto per kontrolaj protokoloj" + }, + "enforce2faDuo": { + "message": "Devigi 2FA kun Duo" + }, + "priorityCustomerSupport": { + "message": "Prioritata klienta subteno" + }, + "xDayFreeTrial": { + "message": "$COUNT$ taga senpaga provo, nuligu iam ajn", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monata" + }, + "annually": { + "message": "Ĉiujare" + }, + "basePrice": { + "message": "Baza Prezo" + }, + "organizationCreated": { + "message": "Organizo kreita" + }, + "organizationReadyToGo": { + "message": "Via nova organizo pretas!" + }, + "organizationUpgraded": { + "message": "Via organizo estis plibonigita." + }, + "leave": { + "message": "Foriri" + }, + "leaveOrganizationConfirmation": { + "message": "Ĉu vi certe volas forlasi ĉi tiun organizon?" + }, + "leftOrganization": { + "message": "Vi forlasis la organizon." + }, + "defaultCollection": { + "message": "Apriora Kolekto" + }, + "getHelp": { + "message": "Akiri Helpon" + }, + "getApps": { + "message": "Akiru la Programojn" + }, + "loggedInAs": { + "message": "Ensalutinta kiel" + }, + "eventLogs": { + "message": "Eventaj Registroj" + }, + "people": { + "message": "Homoj" + }, + "policies": { + "message": "Politikoj" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Redakti politikon" + }, + "groups": { + "message": "Grupoj" + }, + "newGroup": { + "message": "Nova Grupo" + }, + "addGroup": { + "message": "Aldoni grupon" + }, + "editGroup": { + "message": "Redakti grupon" + }, + "deleteGroupConfirmation": { + "message": "Ĉu vi certe volas forigi ĉi tiun grupon?" + }, + "removeUserConfirmation": { + "message": "Ĉu vi certe volas forigi ĉi tiun uzanton?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "Ekstera identigilo" + }, + "externalIdDesc": { + "message": "La ekstera identigilo povas esti uzata kiel referenco aŭ por ligi ĉi tiun rimedon al ekstera sistemo kiel uzantdosierujo." + }, + "accessControl": { + "message": "Alirkontrolo" + }, + "groupAccessAllItems": { + "message": "Ĉi tiu grupo povas aliri kaj modifi ĉiujn erojn." + }, + "groupAccessSelectedCollections": { + "message": "Ĉi tiu grupo povas aliri nur la elektitajn kolektojn." + }, + "readOnly": { + "message": "Nurlegebla" + }, + "newCollection": { + "message": "Nova Kolekto" + }, + "addCollection": { + "message": "Aldoni Kolekton" + }, + "editCollection": { + "message": "Redakti Kolekton" + }, + "deleteCollectionConfirmation": { + "message": "Ĉu vi certe volas forigi ĉi tiun kolekton?" + }, + "editUser": { + "message": "Redakti uzanton" + }, + "inviteUser": { + "message": "Inviti uzanton" + }, + "inviteUserDesc": { + "message": "Invitu novan uzanton al via organizo enigante ĉi-sube sian retpoŝtan adreson Bitwarden. Se ili ne havas Bitwarden-konton jam, ili estos petataj krei novan konton." + }, + "inviteMultipleEmailDesc": { + "message": "Vi povas inviti ĝis $COUNT$ uzantojn samtempe per komo apartigante liston de retpoŝtadresoj.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Ĉi tiu uzanto uzas du-paŝan ensaluton por protekti sian konton." + }, + "userAccessAllItems": { + "message": "Ĉi tiu uzanto povas aliri kaj modifi ĉiujn erojn." + }, + "userAccessSelectedCollections": { + "message": "Ĉi tiu uzanto povas aliri nur la elektitajn kolektojn." + }, + "search": { + "message": "Serĉi" + }, + "invited": { + "message": "Invitita" + }, + "accepted": { + "message": "Akceptita" + }, + "confirmed": { + "message": "Konfirmita" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Posedanto" + }, + "ownerDesc": { + "message": "La plej alt-alira uzanto, kiu povas administri ĉiujn aspektojn de via organizo." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Administranto" + }, + "adminDesc": { + "message": "Administrantoj povas aliri kaj administri ĉiujn erojn, kolektojn kaj uzantojn en via organizo." + }, + "user": { + "message": "Uzanto" + }, + "userDesc": { + "message": "Regula uzanto kun aliro al asignitaj kolektoj en via organizo." + }, + "manager": { + "message": "Administranto" + }, + "managerDesc": { + "message": "Administrantoj povas aliri kaj administri asignitajn kolektojn en via organizo." + }, + "all": { + "message": "Ĉiuj" + }, + "refresh": { + "message": "Refreŝigi" + }, + "timestamp": { + "message": "Horstampo" + }, + "event": { + "message": "Evento" + }, + "unknown": { + "message": "Nekonata" + }, + "loadMore": { + "message": "Ŝargi Pli" + }, + "mobile": { + "message": "Poŝtelefono", + "description": "Mobile app" + }, + "extension": { + "message": "Etendaĵo", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Labortablo", + "description": "Desktop app" + }, + "webVault": { + "message": "Reta Volbo" + }, + "loggedIn": { + "message": "Ensalutinta." + }, + "changedPassword": { + "message": "Ŝanĝis pasvorton de konto." + }, + "enabledUpdated2fa": { + "message": "Ebligita / ĝisdatigita du-ŝtupa ensaluto." + }, + "disabled2fa": { + "message": "Malebligita du-ŝtupa ensaluto." + }, + "recovered2fa": { + "message": "Rekuperita konto post du-ŝtupa ensaluto." + }, + "failedLogin": { + "message": "Ensaluta provo malsukcesis kun malĝusta pasvorto." + }, + "failedLogin2fa": { + "message": "Ensaluta provo malsukcesis kun malĝusta du-ŝtupa ensaluto." + }, + "exportedVault": { + "message": "Eksportita trezorejo." + }, + "exportedOrganizationVault": { + "message": "Eksportita organizo-volbo." + }, + "editedOrgSettings": { + "message": "Redaktitaj organizaj agordoj." + }, + "createdItemId": { + "message": "Kreita ero $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Redaktita ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sendita ero $ID $al rubujo.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Vidita ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Vidita pasvorto por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Vidita kaŝita kampo por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Vidita sekureca kodo por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Kopiita pasvorto por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Kopiita kaŝita kampo por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kopiita sekureca kodo por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Aŭtomate plenigita ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Kreita kolekto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Redaktita kolekto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Forigita kolekto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Redaktita politiko $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Kreita grupo $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Redaktita grupo $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Forigita grupo $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Forigita uzanto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Kreita aldonaĵo por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Forigita aldonaĵo por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Redaktitaj kolektoj por ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invitita uzanto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Konfirmita uzanto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Redaktita uzanto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Redaktitaj grupoj por uzanto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Senligita SSO por uzanto $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Aparato" + }, + "view": { + "message": "Vidigi" + }, + "invalidDateRange": { + "message": "Nevalida datintervalo." + }, + "errorOccurred": { + "message": "Eraro okazis." + }, + "userAccess": { + "message": "Uzanto-Aliro" + }, + "userType": { + "message": "Uzanto-Tipo" + }, + "groupAccess": { + "message": "Grupaliro" + }, + "groupAccessUserDesc": { + "message": "Redaktu la grupojn al kiuj apartenas ĉi tiu uzanto." + }, + "invitedUsers": { + "message": "Invititaj uzantoj." + }, + "resendInvitation": { + "message": "Resendi Inviton" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ estis reenvitita.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Konfirmi" + }, + "confirmUser": { + "message": "Konfirmi uzanton" + }, + "hasBeenConfirmed": { + "message": "$USER$ estas konfirmita.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Konfirmi Uzantojn" + }, + "usersNeedConfirmed": { + "message": "Vi havas uzantojn, kiuj akceptis sian inviton, sed tamen devas esti konfirmitaj. Uzantoj ne havos aliron al la organizo antaŭ ol ili estos konfirmitaj." + }, + "startDate": { + "message": "Komenca dato" + }, + "endDate": { + "message": "Fina dato" + }, + "verifyEmail": { + "message": "Kontroli retpoŝton" + }, + "verifyEmailDesc": { + "message": "Kontrolu la retpoŝtadreson de via konto por malŝlosi aliron al ĉiuj funkcioj." + }, + "verifyEmailFirst": { + "message": "La retpoŝta adreso de via konto unue devas esti kontrolita." + }, + "checkInboxForVerification": { + "message": "Kontrolu vian retpoŝtan enirkeston por kontroli ligon." + }, + "emailVerified": { + "message": "Via retpoŝto estis kontrolita." + }, + "emailVerifiedFailed": { + "message": "Ne eblas kontroli vian retpoŝton. Provu sendi novan kontrolan retpoŝton." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Ĝisdatigi retumilon" + }, + "updateBrowserDesc": { + "message": "Vi uzas nesubtenatan tTT-legilon. La ttt-volbo eble ne funkcias ĝuste." + }, + "joinOrganization": { + "message": "Aliĝi al Organizo" + }, + "joinOrganizationDesc": { + "message": "Vi estis invitita aliĝi al la organizo supre listigita. Por akcepti la inviton, vi devas ensaluti aŭ krei novan Bitwarden-konton." + }, + "inviteAccepted": { + "message": "Invito Akceptita" + }, + "inviteAcceptedDesc": { + "message": "Vi povas aliri ĉi tiun organizon post kiam administranto konfirmos vian membrecon. Ni sendos al vi retpoŝton kiam tio okazos." + }, + "inviteAcceptFailed": { + "message": "Ne eblas akcepti inviton. Petu administranton de organizo sendi novan inviton." + }, + "inviteAcceptFailedShort": { + "message": "Ne eblas akcepti inviton. $DESCRIPTION $", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Memoru retpoŝton" + }, + "recoverAccountTwoStepDesc": { + "message": "Se vi ne povas aliri vian konton per viaj normalaj du-ŝtupaj ensalutaj metodoj, vi povas uzi vian du-ŝtupan ensalutan rekuperan kodon por malŝalti ĉiujn du-ŝtupajn provizantojn en via konto." + }, + "recoverAccountTwoStep": { + "message": "Rekuperi Ensaluton Du-Paŝan" + }, + "twoStepRecoverDisabled": { + "message": "Du-ŝtupa ensaluto estas malŝaltita en via konto." + }, + "learnMore": { + "message": "Lernu pli" + }, + "deleteRecoverDesc": { + "message": "Enigu vian retpoŝtan adreson sube por rekuperi kaj forigi vian konton." + }, + "deleteRecoverEmailSent": { + "message": "Se via konto ekzistas, ni sendis al vi retpoŝton kun pliaj instrukcioj." + }, + "deleteRecoverConfirmDesc": { + "message": "Vi petis forigi vian Bitwarden-konton. Alklaku la butonon sube por konfirmi." + }, + "myOrganization": { + "message": "Mia Organizo" + }, + "deleteOrganization": { + "message": "Forigi Organizon" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organizo Forigita" + }, + "organizationDeletedDesc": { + "message": "La organizo kaj ĉiuj rilataj datumoj estis forigitaj." + }, + "organizationUpdated": { + "message": "Organizo ĝisdatigita" + }, + "taxInformation": { + "message": "Impostaj Informoj" + }, + "taxInformationDesc": { + "message": "Por klientoj en Usono, poŝtkodo necesas por plenumi vendimpostajn postulojn, por aliaj landoj vi rajtas laŭvole doni impostan identigan numeron (VAT / GST) kaj / aŭ adreson por aperi sur viaj fakturoj." + }, + "billingPlan": { + "message": "Plani", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Ŝanĝi Planon", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Ĝisdatigu vian konton al alia plano donante la informojn sube. Bonvolu certigi, ke vi havas aktivan pagmanieron aldonitan al la konto.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Fakturo # $NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Vidi Fakturon" + }, + "downloadInvoice": { + "message": "Elŝuti Fakturon" + }, + "verifyBankAccount": { + "message": "Kontroli bankan konton" + }, + "verifyBankAccountDesc": { + "message": "Ni faris du mikrodeponejojn al via banka konto (ĝi povas daŭri 1-2 labortagojn por aperi). Enigu ĉi tiujn sumojn por kontroli la bankan konton." + }, + "verifyBankAccountInitialDesc": { + "message": "Pago per banka konto disponeblas nur al klientoj en Usono. Vi devos kontroli vian bankan konton. Ni faros du mikro-deponejojn en la venontaj 1-2 labortagoj. Enigu ĉi tiujn sumojn en la faktura paĝo de la organizo por kontroli la bankan konton. " + }, + "verifyBankAccountFailureWarning": { + "message": "Malsukceso kontroli la bankan konton rezultigos mankan pagon kaj via abono malŝaltita." + }, + "verifiedBankAccount": { + "message": "Banka konto estas kontrolita." + }, + "bankAccount": { + "message": "Banka Konto" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Numero de Vojo", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Konta Numero" + }, + "accountHolderName": { + "message": "Nomo de Konto-Posedanto" + }, + "bankAccountType": { + "message": "Kontospeco" + }, + "bankAccountTypeCompany": { + "message": "Kompanio (Komerco)" + }, + "bankAccountTypeIndividual": { + "message": "Individua (Persona)" + }, + "enterInstallationId": { + "message": "Enigu vian instalan identigilon" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Aldoni Sidlokojn", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Forigi Sidlokojn", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Via abono permesas entute $COUNT$ uzantojn.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Aldonaj Seĝoj" + }, + "seatsToRemove": { + "message": "Forigeblaj Seĝoj" + }, + "seatsAddNote": { + "message": "Aldoni uzantajn seĝojn rezultigos ĝustigojn al viaj fakturaj sumoj kaj tuj ŝargos vian pagmanieron en dosiero. La unua ŝarĝo estos proporciigita por la resto de la aktuala faktura ciklo." + }, + "seatsRemoveNote": { + "message": "Forigi uzantajn seĝojn rezultigos ĝustigojn al viaj fakturaj sumoj, kiuj estos proratigitaj kiel kreditoj al via sekva faktura kosto." + }, + "adjustedSeats": { + "message": "Ĝustigitaj $AMOUNT$ uzanto-seĝoj.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Ŝlosilo ĝisdatigita" + }, + "updateKeyTitle": { + "message": "Ĝisdatiga Ŝlosilo" + }, + "updateEncryptionKey": { + "message": "Ĝisdatigi Ĉifran Ŝlosilon" + }, + "updateEncryptionKeyShortDesc": { + "message": "Vi nun uzas malmodernan ĉifran skemon." + }, + "updateEncryptionKeyDesc": { + "message": "Ni transloĝiĝis al pli grandaj ĉifraj ŝlosiloj, kiuj donas pli bonan sekurecon kaj aliron al pli novaj funkcioj. Ĝisdatigi vian ĉifran ŝlosilon estas rapide kaj facile. Simple tajpu vian ĉefan pasvorton sube. Ĉi tiu ĝisdatigo fine fariĝos deviga." + }, + "updateEncryptionKeyWarning": { + "message": "Post ĝisdatigi vian ĉifradan ŝlosilon, vi devas elsaluti kaj reeniri al ĉiuj Bitwarden-aplikaĵoj, kiujn vi nun uzas (kiel la poŝtelefona programo aŭ retumila etendaĵoj). Malsukceso elsaluti kaj reeniri (kiu elŝutas via nova ĉifra ŝlosilo) povas rezultigi korupton de datumoj. Ni provos elsaluti vin aŭtomate, tamen ĝi eble prokrastos. " + }, + "updateEncryptionKeyExportWarning": { + "message": "Ĉiuj ĉifritaj eksportaĵoj, kiujn vi konservis, ankaŭ malvalidiĝos." + }, + "subscription": { + "message": "Abono" + }, + "loading": { + "message": "Ŝarĝante" + }, + "upgrade": { + "message": "Ĝisdatigi" + }, + "upgradeOrganization": { + "message": "Altgradiga Organizo" + }, + "upgradeOrganizationDesc": { + "message": "Ĉi tiu funkcio ne haveblas por senpagaj organizoj. Ŝanĝu al pagita plano por malŝlosi pli da funkcioj." + }, + "createOrganizationStep1": { + "message": "Krei Organizon: Paŝo 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Antaŭ ol krei vian organizon, vi unue devas krei senpagan personan konton." + }, + "refunded": { + "message": "Repagita" + }, + "nothingSelected": { + "message": "Vi elektis nenion." + }, + "acceptPolicies": { + "message": "Markante ĉi tiun keston vi konsentas pri jeno:" + }, + "acceptPoliciesError": { + "message": "Kondiĉoj pri Servo kaj Privateca Politiko ne estis agnoskitaj." + }, + "termsOfService": { + "message": "Kondiĉoj por Servo" + }, + "privacyPolicy": { + "message": "Privateca Politiko" + }, + "filters": { + "message": "Filtriloj" + }, + "vaultTimeout": { + "message": "Tempomezuro de Volbo" + }, + "vaultTimeoutDesc": { + "message": "Elektu kiam via trezorejo eksvalidiĝos kaj plenumos la elektitan agon." + }, + "oneMinute": { + "message": "1 minuto" + }, + "fiveMinutes": { + "message": "5 minutoj" + }, + "fifteenMinutes": { + "message": "15 minutoj" + }, + "thirtyMinutes": { + "message": "30 minutoj" + }, + "oneHour": { + "message": "1 horo" + }, + "fourHours": { + "message": "4 horoj" + }, + "onRefresh": { + "message": "Sur Retumila Aktualigo" + }, + "dateUpdated": { + "message": "Ĝisdatigita", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Pasvorto Ĝisdatigita", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organizo estas malŝaltita." + }, + "licenseIsExpired": { + "message": "Licenco eksvalidiĝis." + }, + "updatedUsers": { + "message": "Ĝisdatigitaj uzantoj" + }, + "selected": { + "message": "Elektita" + }, + "ownership": { + "message": "Posedo" + }, + "whoOwnsThisItem": { + "message": "Kiu posedas ĉi tiun eron?" + }, + "strong": { + "message": "Forta", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Bona", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Malforta", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Tre Malforta", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Malforta Majstra Pasvorto" + }, + "weakMasterPasswordDesc": { + "message": "La majstra pasvorto, kiun vi elektis, estas malforta. Vi devas uzi fortan majstran pasvorton (aŭ pasfrazon) por ĝuste protekti vian Bitwarden-konton. Ĉu vi certe volas uzi ĉi tiun ĉefan pasvorton?" + }, + "rotateAccountEncKey": { + "message": "Ankaŭ turnu la ĉifran ŝlosilon de mia konto" + }, + "rotateEncKeyTitle": { + "message": "Rotacii Ĉifran Ŝlosilon" + }, + "rotateEncKeyConfirmation": { + "message": "Ĉu vi certe volas turni la ĉifran ŝlosilon de via konto?" + }, + "attachmentsNeedFix": { + "message": "Ĉi tiu ero havas malnovajn dosierajn aldonaĵojn, kiujn necesas ripari." + }, + "attachmentFixDesc": { + "message": "Ĉi tio estas malnova riparenda dosiero, kiun necesas ripari. Alklaku por lerni pli." + }, + "fix": { + "message": "Ripari", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Estas malnovaj dosieraj aldonaĵoj en via trezorejo, kiuj devas esti riparitaj antaŭ ol vi povas turni la ĉifran ŝlosilon de via konto." + }, + "yourAccountsFingerprint": { + "message": "Fingrospuro de via konto", + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Por certigi la integrecon de viaj ĉifradaj ŝlosiloj, bonvolu kontroli la fingrospuran frazon de la uzanto antaŭ ol daŭrigi.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Ne petu kontroli denove fingrospuran frazon", + "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." + }, + "free": { + "message": "Senpaga", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-Ŝlosilo" + }, + "apiKeyDesc": { + "message": "Via API-ŝlosilo povas esti uzata por aŭtentikigi al la publika API de Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Rotacii la API-ŝlosilon nuligos la antaŭan ŝlosilon. Vi povas turni vian API-ŝlosilon se vi kredas, ke la nuna ŝlosilo ne plu estas sekura uzi." + }, + "apiKeyWarning": { + "message": "Via API-ŝlosilo havas plenan aliron al la organizo. Ĝi estu tenata sekreta." + }, + "userApiKeyDesc": { + "message": "Via API-ŝlosilo povas esti uzata por aŭtentikigi en la Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Via API-ŝlosilo estas alternativa aŭtentikiga me mechanismanismo. Ĝi devas esti sekretigita." + }, + "oauth2ClientCredentials": { + "message": "Klientaj Atestiloj de OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Vidi API-Ŝlosilon" + }, + "rotateApiKey": { + "message": "Rotacii API-Ŝlosilon" + }, + "selectOneCollection": { + "message": "Vi devas elekti almenaŭ unu kolekton." + }, + "couldNotChargeCardPayInvoice": { + "message": "Ni ne povis ŝargi vian karton. Bonvolu vidi kaj pagi la senpagitan fakturon listigitan sube." + }, + "inAppPurchase": { + "message": "En-aĉeta aĉeto" + }, + "cannotPerformInAppPurchase": { + "message": "Vi ne povas plenumi ĉi tiun agon dum vi uzas en-programan aĉetan pagmanieron." + }, + "manageSubscriptionFromStore": { + "message": "Vi devas administri vian abonon de la butiko, kie via aĉeta aĉeto estis farita." + }, + "minLength": { + "message": "Minimuma longeco" + }, + "clone": { + "message": "Kloni" + }, + "masterPassPolicyDesc": { + "message": "Agordi minimumajn postulojn por majstra pasvorta forto." + }, + "twoStepLoginPolicyDesc": { + "message": "Postuli uzantojn agordi du-ŝtupan ensaluton en siaj personaj kontoj." + }, + "twoStepLoginPolicyWarning": { + "message": "Organizaj membroj, kiuj ne estas Posedantoj aŭ Administrantoj kaj ne havas du-paŝan ensaluton ebligita por sia persona konto, estos forigitaj de la organizo kaj ricevos retpoŝton sciigantan ilin pri la ŝanĝo." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Vi estas membro de organizo, kiu bezonas du-paŝan ensaluton por esti ebligita en via uzantokonto. Se vi malŝaltas ĉiujn du-paŝajn ensalutajn provizantojn, vi aŭtomate estos forigita de ĉi tiuj organizoj." + }, + "passwordGeneratorPolicyDesc": { + "message": "Agordi minimumajn postulojn por agordi pasvortan generilon." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Unu aŭ pluraj organizaj politikoj influas viajn generatorajn agordojn." + }, + "masterPasswordPolicyInEffect": { + "message": "Unu aŭ pluraj organizaj politikoj postulas vian ĉefan pasvorton por plenumi la jenajn postulojn:" + }, + "policyInEffectMinComplexity": { + "message": "Minimuma kompleksa poentaro de $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimuma longo de $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Enhavas unu aŭ plurajn majusklajn literojn" + }, + "policyInEffectLowercase": { + "message": "Enhavas unu aŭ plurajn minusklojn" + }, + "policyInEffectNumbers": { + "message": "Enhavas unu aŭ plurajn numerojn" + }, + "policyInEffectSpecial": { + "message": "Enhavas unu aŭ pli el la jenaj specialaj signoj $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Via nova majstra pasvorto ne plenumas la politikajn postulojn." + }, + "minimumNumberOfWords": { + "message": "Minimuma Nombro de Vortoj" + }, + "defaultType": { + "message": "Apriora Tipo" + }, + "userPreference": { + "message": "Uzanta Prefero" + }, + "vaultTimeoutAction": { + "message": "Volta Tempolima Ago" + }, + "vaultTimeoutActionLockDesc": { + "message": "Ŝlosita trezorejo postulas, ke vi reenmetu vian ĉefan pasvorton por aliri ĝin denove." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Ensalutita volbo postulas, ke vi denove aŭtentikigu por aliri ĝin denove." + }, + "lock": { + "message": "Ŝlosi", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Rubujo", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Serĉi rubujon" + }, + "permanentlyDelete": { + "message": "Konstante Forigi" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Konstante Forigi Artikolon" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Ĉu vi certe volas konstante forigi ĉi tiun eron?" + }, + "permanentlyDeletedItem": { + "message": "Konstante forigita ero" + }, + "permanentlyDeletedItems": { + "message": "Konstante Forigitaj Eroj" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Vi elektis $COUNT$ eron (j) por konstante forigi. Ĉu vi certas, ke vi volas forigi konstante ĉiujn ĉi tiujn erojn?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Konstante Forigita ero $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restarigi" + }, + "restoreSelected": { + "message": "Restarigi elektitajn" + }, + "restoreItem": { + "message": "Restarigi Artikolon" + }, + "restoredItem": { + "message": "Restarigita elemento" + }, + "restoredItems": { + "message": "Restarigitaj Eroj" + }, + "restoreItemConfirmation": { + "message": "Ĉu vi certe volas restarigi ĉi tiun eron?" + }, + "restoreItems": { + "message": "Restarigi erojn" + }, + "restoreSelectedItemsDesc": { + "message": "Vi elektis $COUNT$ eron (j) por restarigi. Ĉu vi certe volas restarigi ĉiujn ĉi tiujn erojn?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Elsaluti forigos ĉian aliron al via trezorejo kaj postulas interretan aŭtentikigon post la limtempo. Ĉu vi certas, ke vi volas uzi ĉi tiun agordon?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Konfirmado de Tempolima Ago" + }, + "hidePasswords": { + "message": "Kaŝi Pasvortojn" + }, + "countryPostalCodeRequiredDesc": { + "message": "Ni postulas ĉi tiujn informojn nur por kalkuli vendimposton kaj financan raportadon." + }, + "includeVAT": { + "message": "Inkluzivi informojn pri VAT / GST (nedeviga)" + }, + "taxIdNumber": { + "message": "Imposta ID de VAT / GST" + }, + "taxInfoUpdated": { + "message": "Impostaj informoj ĝisdatigitaj." + }, + "setMasterPassword": { + "message": "Agordi Majstran Pasvorton" + }, + "ssoCompleteRegistration": { + "message": "Por kompletigi ensalutadon per SSO, bonvolu agordi ĉefan pasvorton por aliri kaj protekti vian trezorejon." + }, + "identifier": { + "message": "Identigilo" + }, + "organizationIdentifier": { + "message": "Organiza Identigilo" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Ensalutu per la unika ensaluta portalo de via organizo. Bonvolu enigi la identigilon de via organizo por komenci." + }, + "enterpriseSingleSignOn": { + "message": "Entreprena Ununura Ensaluto" + }, + "ssoHandOff": { + "message": "Vi povas nun fermi ĉi tiun langeton kaj daŭrigi en la etendaĵo." + }, + "includeAllTeamsFeatures": { + "message": "Ĉiuj funkcioj de teamoj, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO-Aŭtentikigo per SAML2.0 kaj OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Entreprenaj Politikoj" + }, + "ssoValidationFailed": { + "message": "SSO-Validado Malsukcesis" + }, + "ssoIdentifierRequired": { + "message": "Organiza Identigilo necesas." + }, + "unlinkSso": { + "message": "Malkonekti SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Ligi SSO" + }, + "singleOrg": { + "message": "Ununura Organizo" + }, + "singleOrgDesc": { + "message": "Limigi uzantojn povi aliĝi al iuj aliaj organizoj." + }, + "singleOrgBlockCreateMessage": { + "message": "Via nuna organizo havas politikon, kiu ne permesas vin aliĝi al pli ol unu organizo. Bonvolu kontakti administrantojn de via organizo aŭ registriĝi de alia Bitwarden-konto." + }, + "singleOrgPolicyWarning": { + "message": "Organizaj membroj, kiuj ne estas Posedantoj aŭ Administrantoj kaj jam estas membro de alia organizo, estos forigitaj de via organizo." + }, + "requireSso": { + "message": "Ununura Ensaluta Aŭtentikigo" + }, + "requireSsoPolicyDesc": { + "message": "Postuli uzantojn ensaluti per la entrepreno pri sola ensaluto." + }, + "prerequisite": { + "message": "Antaŭkondiĉo" + }, + "requireSsoPolicyReq": { + "message": "La entreprena politiko pri Ununura Organizo devas esti ebligita antaŭ ol aktivigi ĉi tiun politikon." + }, + "requireSsoPolicyReqError": { + "message": "Politiko pri Ununura Organizo ne ebligita." + }, + "requireSsoExemption": { + "message": "Organizaj Posedantoj kaj Administrantoj estas esceptitaj de la apliko de ĉi tiu politiko." + }, + "sendTypeFile": { + "message": "Dosiero" + }, + "sendTypeText": { + "message": "Teksto" + }, + "createSend": { + "message": "Krei novan sendon", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Redakti Sendu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Kreita Sendo", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Redaktita Sendo", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Forigita Sendo", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSend": { + "message": "Forigi Sendu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Ĉu vi certe volas forigi ĉi tiun Sendon?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "Kia Sendo estas ĉi tio?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletionDate": { + "message": "Dato de Forigo" + }, + "deletionDateDesc": { + "message": "La Sendo estos definitive forigita en la specifaj dato kaj horo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Findato" + }, + "expirationDateDesc": { + "message": "Se agordita, aliro al ĉi tiu Sendo eksvalidiĝos je la specifaj dato kaj horo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksimuma Aliro-Kalkulo" + }, + "maxAccessCountDesc": { + "message": "Se agordite, uzantoj ne plu povos aliri ĉi tiun sendon post kiam la maksimuma alira kalkulo estos atingita.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Nuna Alira Kalkulo" + }, + "sendPasswordDesc": { + "message": "Laŭvole postulas pasvorton por uzantoj aliri ĉi tiun Sendon.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Privataj notoj pri ĉi tiu Sendo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Malebligita" + }, + "sendLink": { + "message": "Sendi ligon", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopii Sendu Ligilon", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Forigi pasvorton" + }, + "removedPassword": { + "message": "Forigita Pasvorto" + }, + "removePasswordConfirmation": { + "message": "Ĉu vi certe volas forigi la pasvorton?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "message": "Malŝalti ĉi tiun Sendon por ke neniu povu aliri ĝin.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "Ĉiuj Sendoj" + }, + "maxAccessCountReached": { + "message": "Maksimuma alirnombro atingis", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Atendanta forigo" + }, + "expired": { + "message": "Eksvalidiĝis" + }, + "searchSends": { + "message": "Serĉaj Sendoj", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Ĉi tiu Sendo estas protektita per pasvorto. Bonvolu tajpi la pasvorton sube por daŭrigi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Ĉu vi ne scias la pasvorton? Petu al la Sendinto la pasvorton bezonatan por aliri ĉi tiun Sendon.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Ĉi tiu sendado estas kaŝita defaŭlte. Vi povas ŝalti ĝian videblecon per la suba butono.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Elŝuti dosieron" + }, + "sendAccessUnavailable": { + "message": "La Sendo, kiun vi provas aliri, ne ekzistas aŭ ne plu haveblas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "La dosiero asociita kun ĉi tiu Sendo ne estis trovebla.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Estas neniuj Sendoj por listigi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Kriza Aliro" + }, + "emergencyAccessDesc": { + "message": "Donu kaj administru krizan aliron por fidindaj kontaktoj. Fidindaj kontaktoj povas peti aliron al aŭ Vidi aŭ Transpreni vian konton en kazo de krizo. Vizitu nian helpopaĝon por pliaj informoj kaj detaloj pri kiel funkcias nula scio-dividado." + }, + "emergencyAccessOwnerWarning": { + "message": "Vi estas Posedanto de unu aŭ pluraj organizoj. Se vi donas transprenan aliron al urĝa kontakto, ili povos uzi ĉiujn viajn permesojn kiel Posedanto post transpreno." + }, + "trustedEmergencyContacts": { + "message": "Fidindaj krizaj kontaktoj" + }, + "noTrustedContacts": { + "message": "Vi ankoraŭ ne aldonis krizajn kontaktojn, invitu fidindan kontakton por komenci." + }, + "addEmergencyContact": { + "message": "Aldoni krizan kontakton" + }, + "designatedEmergencyContacts": { + "message": "Elektita kiel kriz-kontakto" + }, + "noGrantedAccess": { + "message": "Vi ankoraŭ ne estis nomumita kiel urĝa kontakto por iu ajn." + }, + "inviteEmergencyContact": { + "message": "Inviti krizan kontakton" + }, + "editEmergencyContact": { + "message": "Redakti krizan kontakton" + }, + "inviteEmergencyContactDesc": { + "message": "Invitu novan krizan kontakton enigante sube sian retpoŝtan adreson Bitwarden. Se ili ne havas Bitwarden-konton jam, ili estos petataj krei novan konton." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Kriza Aliro Komencita" + }, + "emergencyAccessRecoveryApproved": { + "message": "Akutaliro aprobita" + }, + "viewDesc": { + "message": "Povas vidi ĉiujn erojn en via propra trezorejo." + }, + "takeover": { + "message": "Transpreno" + }, + "takeoverDesc": { + "message": "Povas reagordi vian konton per nova majstra pasvorto." + }, + "waitTime": { + "message": "Atendotempo" + }, + "waitTimeDesc": { + "message": "Tempo bezonata antaŭ ol aŭtomate doni aliron." + }, + "oneDay": { + "message": "1 tago" + }, + "days": { + "message": "$TAGOJ$ tagoj", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invitita uzanto." + }, + "acceptEmergencyAccess": { + "message": "Vi estis invitita fariĝi urĝa kontakto por la supre listigita uzanto. Por akcepti la inviton, vi devas ensaluti aŭ krei novan Bitwarden-konton." + }, + "emergencyInviteAcceptFailed": { + "message": "Ne eblas akcepti inviton. Petu la uzanton sendi novan inviton." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Ne eblas akcepti inviton. $DESCRIPTION $", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Vi povas aliri la krizajn eblojn por ĉi tiu uzanto post kiam via identeco estis konfirmita. Ni sendos al vi retpoŝton kiam tio okazos." + }, + "requestAccess": { + "message": "Peti Aliron" + }, + "requestAccessConfirmation": { + "message": "Ĉu vi certe volas peti krizan aliron? Vi ricevos aliron post $WAITTIME$ tago (j) aŭ kiam la uzanto mane aprobos la peton.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Kriza aliro petita por $USER $. Ni sciigos vin per retpoŝto kiam eblas daŭrigi.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Aprovi" + }, + "reject": { + "message": "Malakcepti" + }, + "approveAccessConfirmation": { + "message": "Ĉu vi certe volas aprobi krizan aliron? Ĉi tio permesos $USER$ al $ACTION$ via konto.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Akutaliro aprobita." + }, + "emergencyRejected": { + "message": "Krizaliro malakceptita" + }, + "passwordResetFor": { + "message": "Pasvorta restarigo por $USER $. Vi nun povas ensaluti per la nova pasvorto.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Persona Posedo" + }, + "personalOwnershipPolicyDesc": { + "message": "Postuli uzantojn konservi trezorejojn al organizo forigante la opcion pri persona posedo." + }, + "personalOwnershipExemption": { + "message": "Organizaj Posedantoj kaj Administrantoj estas esceptitaj de la apliko de ĉi tiu politiko." + }, + "personalOwnershipSubmitError": { + "message": "Pro entreprena politiko, vi ne rajtas konservi artikolojn al via persona trezorejo. Ŝanĝu la opcion Proprieto al organizo kaj elektu el disponeblaj Kolektoj." + }, + "disableSend": { + "message": "Malebligi Sendi" + }, + "disableSendPolicyDesc": { + "message": "Ne permesu al uzantoj krei aŭ redakti Bitwarden Sendon. Forigi ekzistantan Sendon estas ankoraŭ permesita.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organizaj uzantoj, kiuj povas administri la politikojn de la organizo, estas esceptitaj de la devigo de ĉi tiu politiko." + }, + "sendDisabled": { + "message": "Sendu malebligita", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Pro entreprena politiko, vi nur povas forigi ekzistantan Sendon.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modifita politiko $ID $.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plana prezo" + }, + "estimatedTax": { + "message": "Taksita imposto" + }, + "custom": { + "message": "Propra" + }, + "customDesc": { + "message": "Permesas pli detalan kontrolon de uzaj permesoj por progresintaj agordoj." + }, + "permissions": { + "message": "Permesoj" + }, + "accessEventLogs": { + "message": "Aliri Eventajn Registrojn" + }, + "accessImportExport": { + "message": "Aliri Importi / Eksporti" + }, + "accessReports": { + "message": "Aliraj Raportoj" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Administri ĉiujn kolektojn" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Administri Asignitajn Kolektojn" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Administri Grupojn" + }, + "managePolicies": { + "message": "Administri Politikojn" + }, + "manageSso": { + "message": "Administri SSO" + }, + "manageUsers": { + "message": "Administri Uzantojn" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Organiza politiko influas viajn posedopciojn." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Malebligi personan posedon por organizaj uzantoj" + }, + "textHiddenByDefault": { + "message": "Alirante la Sendon, kaŝu la tekston defaŭlte", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Amika nomo por priskribi ĉi tiun Sendon.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "La teksto, kiun vi volas sendi." + }, + "sendFileDesc": { + "message": "La dosiero, kiun vi volas sendi." + }, + "copySendLinkOnSave": { + "message": "Kopiu la ligon por dividi ĉi tion Sendu al mia tondujo post konservado." + }, + "sendLinkLabel": { + "message": "Sendi ligon", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Sendi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transdonas sentemajn provizorajn informojn al aliaj facile kaj sekure.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Lernu pli pri", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Kunhavigi tekston aŭ dosierojn rekte kun iu ajn." + }, + "sendVaultCardLearnMore": { + "message": "Lernu pli", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "vidu", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "kiel ĝi funkcias", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "aŭ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "provu ĝin nun", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "aŭ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "aliĝi", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "provi ĝin hodiaŭ.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden-uzanto $USER_IDENTIFIER$ dividis la jenon kun vi", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "La donita eksvalidiĝa dato ne validas." + }, + "deletionDateIsInvalid": { + "message": "La forigita dato donita ne validas." + }, + "expirationDateAndTimeRequired": { + "message": "Eksvalidiĝa dato kaj horo necesas." + }, + "deletionDateAndTimeRequired": { + "message": "Forigo de dato kaj horo estas bezonataj." + }, + "dateParsingError": { + "message": "Estis eraro konservante viajn forigajn kaj eksvalidajn datojn." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json new file mode 100644 index 0000000000..de85c2d157 --- /dev/null +++ b/apps/web/src/locales/es/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Caja fuerte Web", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "¿Qué tipo de elemento es este?" + }, + "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" + }, + "newPassword": { + "message": "Nueva contraseña" + }, + "passphrase": { + "message": "Frase de contraseña" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Campos personalizados" + }, + "cardholderName": { + "message": "Nombre en la tarjeta" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Expiración" + }, + "securityCode": { + "message": "Código de seguridad (CVV)" + }, + "identityName": { + "message": "Nombre de la identidad" + }, + "company": { + "message": "Empresa" + }, + "ssn": { + "message": "Número de la seguridad social" + }, + "passportNumber": { + "message": "Número de pasaporte" + }, + "licenseNumber": { + "message": "Número de licencia" + }, + "email": { + "message": "Correo electrónico" + }, + "phone": { + "message": "Teléfono" + }, + "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" + }, + "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" + }, + "authenticatorKeyTotp": { + "message": "Clave de autenticación (TOTP)" + }, + "folder": { + "message": "Carpeta" + }, + "newCustomField": { + "message": "Nuevo campo personalizado" + }, + "value": { + "message": "Valor" + }, + "dragToSort": { + "message": "Arrastra 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." + }, + "remove": { + "message": "Eliminar" + }, + "unassigned": { + "message": "No asignado" + }, + "noneFolder": { + "message": "Sin carpeta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Añadir carpeta" + }, + "editFolder": { + "message": "Editar carpeta" + }, + "baseDomain": { + "message": "Dominio 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": "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." + }, + "never": { + "message": "Nunca" + }, + "toggleVisibility": { + "message": "Alternar visibilidad" + }, + "toggleCollapse": { + "message": "Colapsar/Expandir", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generar contraseña" + }, + "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." + }, + "save": { + "message": "Guardar" + }, + "cancel": { + "message": "Cancelar" + }, + "canceled": { + "message": "Cancelado" + }, + "close": { + "message": "Cerrar" + }, + "delete": { + "message": "Eliminar" + }, + "favorite": { + "message": "Favorito" + }, + "unfavorite": { + "message": "Eliminar favorito" + }, + "edit": { + "message": "Editar" + }, + "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" + }, + "searchVault": { + "message": "Buscar en caja fuerte" + }, + "allItems": { + "message": "Todos los elementos" + }, + "favorites": { + "message": "Favoritos" + }, + "types": { + "message": "Tipos" + }, + "typeLogin": { + "message": "Inicio de sesión" + }, + "typeCard": { + "message": "Tarjeta" + }, + "typeIdentity": { + "message": "Identidad" + }, + "typeSecureNote": { + "message": "Nota segura" + }, + "typeLoginPlural": { + "message": "Inicios de sesión" + }, + "typeCardPlural": { + "message": "Tarjetas" + }, + "typeIdentityPlural": { + "message": "Identidades" + }, + "typeSecureNotePlural": { + "message": "Notas seguras" + }, + "folders": { + "message": "Carpetas" + }, + "collections": { + "message": "Colecciones" + }, + "firstName": { + "message": "Nombre" + }, + "middleName": { + "message": "2º nombre" + }, + "lastName": { + "message": "Apellido" + }, + "fullName": { + "message": "Nombre completo" + }, + "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" + }, + "shared": { + "message": "Compartido" + }, + "attachments": { + "message": "Adjuntos" + }, + "select": { + "message": "Seleccionar" + }, + "addItem": { + "message": "Añadir elemento" + }, + "editItem": { + "message": "Editar elemento" + }, + "viewItem": { + "message": "Ver elemento" + }, + "ex": { + "message": "ej.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Otro" + }, + "share": { + "message": "Compartir" + }, + "moveToOrganization": { + "message": "Mover a la organización" + }, + "valueCopied": { + "message": "Valor de $VALUE$ copiado", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copiar valor", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copiar contraseña", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copiar usuario", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copiar número", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copiar código de seguridad", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copiar URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mi caja fuerte" + }, + "vault": { + "message": "Caja fuerte" + }, + "moveSelectedToOrg": { + "message": "Mover los seleccionados a la organización" + }, + "deleteSelected": { + "message": "Eliminar selección" + }, + "moveSelected": { + "message": "Mover selección" + }, + "selectAll": { + "message": "Seleccionar todo" + }, + "unselectAll": { + "message": "Deseleccionar todo" + }, + "launch": { + "message": "Iniciar" + }, + "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." + }, + "addedItem": { + "message": "Elemento añadido" + }, + "editedItem": { + "message": "Elemento editado" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ se desplazó a $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Elementos seleccionados movidos a $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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" + }, + "deletedItems": { + "message": "Elementos eliminados" + }, + "movedItems": { + "message": "Elementos movidos" + }, + "overwritePasswordConfirmation": { + "message": "¿Estás seguro de que quieres sobreescribir la contraseña actual?" + }, + "editedFolder": { + "message": "Carpeta editada" + }, + "addedFolder": { + "message": "Carpeta añadida" + }, + "deleteFolderConfirmation": { + "message": "¿Estás seguro de querer eliminar esta carpeta?" + }, + "deletedFolder": { + "message": "Carpeta eliminada" + }, + "loggedOut": { + "message": "Sesión terminada" + }, + "loginExpired": { + "message": "Tu sesión ha expirado." + }, + "logOutConfirmation": { + "message": "¿Estás seguro de querer cerrar la sesión?" + }, + "logOut": { + "message": "Cerrar sesión" + }, + "ok": { + "message": "Aceptar" + }, + "yes": { + "message": "Sí" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "Utilizarás tu correo electrónico para acceder." + }, + "yourName": { + "message": "Tu nombre" + }, + "yourNameDesc": { + "message": "¿Cómo deberíamos llamarte?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Pista de contraseña maestra" + }, + "settings": { + "message": "Configuración" + }, + "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." + }, + "emailAddress": { + "message": "Correo electrónico" + }, + "yourVaultIsLocked": { + "message": "Tu caja fuerte está bloqueada. Verifica tu contraseña maestra para continuar." + }, + "unlock": { + "message": "Desbloquear" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Bloquear" + }, + "noItemsInList": { + "message": "No hay elementos que listar." + }, + "noCollectionsInList": { + "message": "No hay colecciones que listar." + }, + "noGroupsInList": { + "message": "No hay grupos que listar." + }, + "noUsersInList": { + "message": "No hay usuarios que listar." + }, + "noEventsInList": { + "message": "No hay eventos que listar." + }, + "newOrganization": { + "message": "Nueva organización" + }, + "noOrganizationsList": { + "message": "No perteneces a ninguna organización. Las organizaciones te permiten compartir elementos con otros usuarios de forma segura." + }, + "versionNumber": { + "message": "Versión $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "loginUnavailable": { + "message": "Entrada no disponible" + }, + "noTwoStepProviders": { + "message": "Esta cuenta tiene autenticación en dos pasos habilitado, pero ninguno de lo métodos configurados es soportado por este navegador web." + }, + "noTwoStepProviders2": { + "message": "Por favor, utiliza un navegador soportado (como Chrome) y/o añade métodos de autenticación adicionales que tengan mejor soporte en diferentes navegadores web (como una aplicación de autenticación)." + }, + "twoStepOptions": { + "message": "Opciones de la autenticación en dos pasos" + }, + "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." + }, + "u2fDesc": { + "message": "Usa cualquier llave de seguridad FIDO U2F habilitada para acceder a tu cuenta." + }, + "u2fTitle": { + "message": "Llave de seguridad FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Utilice cualquier clave de seguridad WebAuthn habilitada para acceder a su cuenta." + }, + "webAuthnMigrated": { + "message": "(Migrado del FIDO)" + }, + "emailTitle": { + "message": "Correo electrónico" + }, + "emailDesc": { + "message": "Los códigos de verificación te serán enviados por correo electrónico." + }, + "continue": { + "message": "Continuar" + }, + "organization": { + "message": "Organización" + }, + "organizations": { + "message": "Organizaciones" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Elija una organización a la que desea mover estos elementos. Moviendo a una organización transfiere la propiedad de los elementos a esa organización. Ya no serás el dueño directo de estos objetos una vez que hayan sido movidos." + }, + "collectionsDesc": { + "message": "Elige las colecciones con la que este elemento va a ser compartido. Solo los miembros de la organización que puedan acceder a esas colecciones podrán ver el elemento." + }, + "deleteSelectedItemsDesc": { + "message": "Has seleccionado $COUNT$ elementos a eliminar. ¿Estás seguro de que quieres eliminar todos estos elementos?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Selecciona una carpeta a la que quieras mover los $COUNT$ elementos seleccionados.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Ha seleccionado $COUNT$ elemento(s). $MOVEABLE_COUNT$ elemento(s) pueden ser movidos a una organización, $NONMOVEABLE_COUNT$ no puede.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Código de verificación (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiar código de verificación" + }, + "warning": { + "message": "Advertencia" + }, + "confirmVaultExport": { + "message": "Confirmar la exportación de la bóveda" + }, + "exportWarningDesc": { + "message": "Esta exportación contiene los datos de tu 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 sus datos usando la clave de cifrado de su cuenta. Si alguna vez gira la clave de cifrado de su cuenta debe volver a exportar, ya que no podrá descifrar este archivo de exportación." + }, + "encExportAccountWarningDesc": { + "message": "Las claves de cifrado de cuenta son únicas para cada cuenta de usuario de Bitwarden, por lo que no puede importar una exportación cifrada a una cuenta diferente." + }, + "export": { + "message": "Exportar" + }, + "exportVault": { + "message": "Exportar caja fuerte" + }, + "fileFormat": { + "message": "Formato de archivo" + }, + "exportSuccess": { + "message": "El contenido de tu caja fuerte ha sido exportado." + }, + "passwordGenerator": { + "message": "Generador de contraseñas" + }, + "minComplexityScore": { + "message": "Puntuación de Complejidad Mínima" + }, + "minNumbers": { + "message": "Mínimo de caracteres numéricos" + }, + "minSpecial": { + "message": "Mínimo de caracteres especiales", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evitar caracteres ambiguos" + }, + "regeneratePassword": { + "message": "Regenerar contraseña" + }, + "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" + }, + "passwordHistory": { + "message": "Historial de contraseñas" + }, + "noPasswordsInList": { + "message": "No hay contraseñas que listar." + }, + "clear": { + "message": "Limpiar", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Cuenta actualizada" + }, + "changeEmail": { + "message": "Cambiar correo electrónico" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceder cambiará la dirección de correo electrónico de su cuenta. No cambiará la dirección de correo electrónico utilizada para la autenticación de dos factores. Puede cambiar esta dirección de correo electrónico en la configuración de inicio de sesión en dos pasos." + }, + "newEmail": { + "message": "Nuevo correo electrónico" + }, + "code": { + "message": "Código" + }, + "changeEmailDesc": { + "message": "Te hemos enviado un código de verificación a $EMAIL$. Por favor, comprueba tu correo electrónico e introduce el código abajo para finalizar el cambio de cuenta de correo electrónico.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Proceder cerrará tu sesión actual, requiriendo que vuelvas a acceder. Las sesiones activas en otros dispositivos pueden seguir activas hasta dentro de una hora." + }, + "emailChanged": { + "message": "Correo electrónico cambiado" + }, + "logBackIn": { + "message": "Por favor, vuelve a acceder." + }, + "logBackInOthersToo": { + "message": "Por favor, vuelve a acceder. Si estás utilizando otras aplicaciones de Bitwarden, cierra sesión y vuelva a acceder en ellas también." + }, + "changeMasterPassword": { + "message": "Cambiar contraseña maestra" + }, + "masterPasswordChanged": { + "message": "Contraseña maestra cambiada" + }, + "currentMasterPass": { + "message": "Contraseña maestra actual" + }, + "newMasterPass": { + "message": "Nueva contraseña maestra" + }, + "confirmNewMasterPass": { + "message": "Confirma la nueva contraseña maestra" + }, + "encKeySettings": { + "message": "Configuración de clave de cifrado" + }, + "kdfAlgorithm": { + "message": "Algoritmo KDF" + }, + "kdfIterations": { + "message": "Iteraciones de KDF" + }, + "kdfIterationsDesc": { + "message": "Mientras más iteraciones KDF, mejor la protección a su contraseña maestra de ser descubierta por un ataque de fuerza bruta. Recomendamos un valor de $VALUE$ o más.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Establecer las iteraciones KDF con un valor muy alto, podría resultar en un rendimiento pobre al ingresar, y/o desbloquear Bitwarden en dispositivos con CPUs lentos. Recomendamos que aumente el valor en incrementos de $INCREMENT$ y luego pruebe en todos sus dispositivos.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Modificar KDF" + }, + "encKeySettingsChanged": { + "message": "Se cambió la configuración de clave de cifrado" + }, + "dangerZone": { + "message": "Zona peligrosa" + }, + "dangerZoneDesc": { + "message": "¡Cuidado, estas acciones no son reversibles!" + }, + "deauthorizeSessions": { + "message": "Desautorizar sesiones" + }, + "deauthorizeSessionsDesc": { + "message": "¿Te preocupa que tu cuenta esté identificada en otro dispositivo? Utiliza la opción de abajo para desautorizar otros equipos o dispositivos que hayas usado anteriormente. Este paso es recomendable si anteriormente has utilizando un equipo pública o has guardado tu contraseña por error en un dispositivo que no es tuyo. Esto también eliminará cualquier autenticación en dos pasos anteriormente recordada." + }, + "deauthorizeSessionsWarning": { + "message": "Proceder también cerrará tu sesión actual, requiriendo que vuelvas a identificarte. También se te pedirá nuevamente tu autenticación en dos pasos en caso de que la tengas habilitada. Las sesiones activas en otros dispositivos pueden mantenerse activas hasta una hora más." + }, + "sessionsDeauthorized": { + "message": "Desautorizadas todas las sesiones" + }, + "purgeVault": { + "message": "Caja fuerte purgada" + }, + "purgedOrganizationVault": { + "message": "Caja fuerte de organización purgada." + }, + "vaultAccessedByProvider": { + "message": "Caja fuerte a la que accede el proveedor." + }, + "purgeVaultDesc": { + "message": "Proceder eliminará todos los elementos y carpetas de tu caja fuerte. Los elementos que pertenezcan a una organización con la que compartes contenido, no serán eliminados." + }, + "purgeOrgVaultDesc": { + "message": "Proceder para eliminar todos los elementos de la caja fuerte de la organización." + }, + "purgeVaultWarning": { + "message": "Purgar tu caja fuerte es permanente. No se puede deshacer." + }, + "vaultPurged": { + "message": "Tu caja fuerte ha sido purgada." + }, + "deleteAccount": { + "message": "Eliminar cuenta" + }, + "deleteAccountDesc": { + "message": "Proceder eliminará tu cuenta y todo el contenido asociado a ella." + }, + "deleteAccountWarning": { + "message": "Eliminar tu cuenta es permanente. No se puede deshacer." + }, + "accountDeleted": { + "message": "Cuenta eliminada" + }, + "accountDeletedDesc": { + "message": "Tu cuenta ha sido cerrada y toda la información asociada ha sido eliminada." + }, + "myAccount": { + "message": "Mi cuenta" + }, + "tools": { + "message": "Herramientas" + }, + "importData": { + "message": "Importar datos" + }, + "importError": { + "message": "Error al importar" + }, + "importErrorDesc": { + "message": "Hubo un problema con los datos que intentaste importar. Por favor, resuelve los errores listados a continuación en tu archivo de origen e inténtalo de nuevo." + }, + "importSuccess": { + "message": "La información ha sido importada correctamente en tu caja fuerte." + }, + "importWarning": { + "message": "Estás importando datos a $ORGANIZATION$. Tus datos pueden ser compartidos con miembros de esta organización. ¿Quieres continuar?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "El formato de la información no es correcto. Por favor, comprueba el fichero y prueba de nuevo." + }, + "importNothingError": { + "message": "No se ha importado nada." + }, + "importEncKeyError": { + "message": "Error al descifrar el archivo exportado. Su clave de cifrado no coincide con la clave de cifrado utilizada para exporta los datos." + }, + "selectFormat": { + "message": "Selecciona el formato del fichero a importar" + }, + "selectImportFile": { + "message": "Seleccionar el fichero a importar" + }, + "orCopyPasteFileContents": { + "message": "o copia/pega el contenido del fichero a importar" + }, + "instructionsFor": { + "message": "Instrucciones para $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opciones" + }, + "optionsDesc": { + "message": "Personaliza tu caja fuerte." + }, + "optionsUpdated": { + "message": "Opciones actualizadas" + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Cambiar el idioma utilizado en la caja fuerte web." + }, + "disableIcons": { + "message": "Deshabilitar iconos de sitios web" + }, + "disableIconsDesc": { + "message": "Los iconos de sitios web añaden una imagen reconocible al lado de cada entrada de tu caja fuerte." + }, + "enableGravatars": { + "message": "Habilitar Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Usa imágenes de avatares cargadas desde gravatar.com." + }, + "enableFullWidth": { + "message": "Habilitar diseño de ancho completo", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Permite que la caja fuerte web se amplíe al ancho completo de la ventana del navegador." + }, + "default": { + "message": "Por defecto" + }, + "domainRules": { + "message": "Reglas de dominios" + }, + "domainRulesDesc": { + "message": "Si tienes los mismos datos de acceso en diferentes dominios de una página web, puedes marcar esa web como \"equivalente\". Los dominios \"globales\" son equivalencias que Bitwarden ha creado por ti." + }, + "globalEqDomains": { + "message": "Dominios equivalentes globales" + }, + "customEqDomains": { + "message": "Dominios equivalentes personalizados" + }, + "exclude": { + "message": "Excluir" + }, + "include": { + "message": "Incluir" + }, + "customize": { + "message": "Personalizar" + }, + "newCustomDomain": { + "message": "Nuevo dominio personalizado" + }, + "newCustomDomainDesc": { + "message": "Introduce una lista de dominios separados por comas. Solo se permiten dominios \"base\". No introduzcas subdominios. Por ejemplo, introduce \"google.com\" en vez de \"www.google.com\". También puedes introducir \"androidapp://package.name\" para asociar una aplicación de android con otros dominios web." + }, + "customDomainX": { + "message": "Dominio personalizado $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Dominios actualizados" + }, + "twoStepLogin": { + "message": "Autenticación en dos pasos" + }, + "twoStepLoginDesc": { + "message": "Protege tu cuenta requiriendo un paso adicional a la hora de acceder." + }, + "twoStepLoginOrganizationDesc": { + "message": "Requiere autenticación en dos pasos para los usuarios de tu organización configurando los proveedores a nivel de organización." + }, + "twoStepLoginRecoveryWarning": { + "message": "Habilitar la autenticación en dos pasos puede impedirte acceder permanentemente a tu cuenta de Bitwarden. Un código de recuperación te permite acceder a la cuenta en caso de que no puedas usar más tu proveedor de autenticación en dos pasos (ej. si pierdes tu dispositivo). El soporte de Bitwarden no será capaz de asistirte si pierdes acceso a tu cuenta. Te recomendamos que escribas o imprimas este código y lo guardes en un lugar seguro." + }, + "viewRecoveryCode": { + "message": "Ver código de recuperación" + }, + "providers": { + "message": "Proveedores", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Activar" + }, + "enabled": { + "message": "Activado" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Suscripción Premium" + }, + "premiumRequired": { + "message": "Premium requerido" + }, + "premiumRequiredDesc": { + "message": "Se quiere membrasía Premium para poder utilizar esta característica." + }, + "youHavePremiumAccess": { + "message": "Tienes acceso premium" + }, + "alreadyPremiumFromOrg": { + "message": "Ya tienes acceso a las características premium, debido a que eres miembro de una organización." + }, + "manage": { + "message": "Gestionar" + }, + "disable": { + "message": "Desactivar" + }, + "twoStepLoginProviderEnabled": { + "message": "Este proveedor de autenticación en dos pasos está habilitado para tu cuenta." + }, + "twoStepLoginAuthDesc": { + "message": "Introduce tu contraseña maestra para modificar las opciones de autenticación en dos pasos." + }, + "twoStepAuthenticatorDesc": { + "message": "Sigue estos pasos para configurar la autenticación en dos pasos con una aplicación autenticadora:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Descarga una aplicación autenticadora en dos pasos" + }, + "twoStepAuthenticatorNeedApp": { + "message": "¿Necesitas una aplicación de autenticación en dos pasos? Descarga una de las siguientes" + }, + "iosDevices": { + "message": "Dispositivos iOS" + }, + "androidDevices": { + "message": "Dispositivos Android" + }, + "windowsDevices": { + "message": "Dispositivos Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Estas aplicaciones son recomendadas, sin embargo, otras aplicaciones autenticadoras también funcionarán." + }, + "twoStepAuthenticatorScanCode": { + "message": "Escanea este código QR con tu aplicación de autenticación" + }, + "key": { + "message": "Clave" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Introduzca el código de verificación de 6 dígitos generado en la aplicación de autentificación" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "En caso de que necesite agregarlo a otro dispositivo, a continuación se indica el código QR (o clave) requerido por su aplicación autenticadora." + }, + "twoStepDisableDesc": { + "message": "¿Estás seguro de que desea deshabilitar este proveedor de autenticación en dos pasos?" + }, + "twoStepDisabled": { + "message": "Proveedor de autenticación ee dos pasos deshabilitado." + }, + "twoFactorYubikeyAdd": { + "message": "Añade un nuevo YubiKey a tu cuenta" + }, + "twoFactorYubikeyPlugIn": { + "message": "Conecta la YubiKey (NEO o serie 4) al puerto USB de tu ordenador." + }, + "twoFactorYubikeySelectKey": { + "message": "Elije el primer campo de entrada vacío de YubiKey de abajo." + }, + "twoFactorYubikeyTouchButton": { + "message": "Toca el botón del YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Guarda el formulario." + }, + "twoFactorYubikeyWarning": { + "message": "Debido a las limitaciones de la plataforma, YubiKeys no pueden ser utilizadas en todas las aplicaciones Bitwarden. Debes habilitar otro proveedor de autenticación en pasos para que puedas tener acceso a tu cuenta cuando no se puedan utilizar YubiKeys. Plataformas soportadas:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Caja fuerte Web, aplicación de escritorio, CLI y todas las extensiones de navegador en un dispositivo con un puerto USB que pueden aceptar tu YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Aplicaciones móviles en un dispositivo con capacidades NFC o un puerto USB que puede aceptar su YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Llave U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Soporte NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Una de mis llaves soporta NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Si uno de tus YubiKeys es compatible con NFC (como un YubiKey NEO), se te requerirá en dispositivos móviles cuando se detecte la disponibilidad de NFC." + }, + "yubikeysUpdated": { + "message": "YubiKeys actualizado" + }, + "disableAllKeys": { + "message": "Deshabilitar todas las llaves" + }, + "twoFactorDuoDesc": { + "message": "Introduce la información de la aplicación Bitwarden de tu panel de administración Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Clave de integración" + }, + "twoFactorDuoSecretKey": { + "message": "Clave secreta" + }, + "twoFactorDuoApiHostname": { + "message": "Nombre de host de API" + }, + "twoFactorEmailDesc": { + "message": "Sigue estos pasos para configurar la autenticación en dos pasos con una aplicación autenticadora:" + }, + "twoFactorEmailEnterEmail": { + "message": "Introduce el correo electrónico donde deseas recibir los códigos de verificación" + }, + "twoFactorEmailEnterCode": { + "message": "Introduce el código de verificación de 6 dígitos enviado a tu correo electrónico" + }, + "sendEmail": { + "message": "Enviar correo electrónico" + }, + "twoFactorU2fAdd": { + "message": "Agregar una clave de seguridad U2F FIDO a tu cuenta" + }, + "removeU2fConfirmation": { + "message": "¿Estás seguro de que quieres eliminar esta clave de seguridad?" + }, + "twoFactorWebAuthnAdd": { + "message": "Añadir una clave de seguridad WebAuthn a tu cuenta" + }, + "readKey": { + "message": "Leer llave" + }, + "keyCompromised": { + "message": "La clave está comprometida." + }, + "twoFactorU2fGiveName": { + "message": "Asigna un nombre descriptivo a la llave de seguridad." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Conecta la llave de seguridad al puerto USB de tu ordenador y haz clic en el botón \"Leer llave\"." + }, + "twoFactorU2fTouchButton": { + "message": "Si la clave de seguridad tiene un botón, tócalo." + }, + "twoFactorU2fSaveForm": { + "message": "Guardar el formulario." + }, + "twoFactorU2fWarning": { + "message": "Debido a limitaciones de la plataforma, FIDO U2F no puede ser usado en todas las aplicaciones de Bitwarden. Deberías habilitar otro proveedor de inicio de sesión de dos pasos, para que puedas acceder a tu cuenta cuando FIDO U2F no pueda ser utilizado. Plataformas soportadas:" + }, + "twoFactorU2fSupportWeb": { + "message": "Caja fuerte web y extensiones de navegador en un escritorio/portátil con un navegador compatible con U2F (Chrome, Opera, Vivaldi, o Firefox con FIDO U2F activado)." + }, + "twoFactorU2fWaiting": { + "message": "Esperando a que toques el botón de tu llave de seguridad" + }, + "twoFactorU2fClickSave": { + "message": "Haz clic en el botón \"guardar\" para habilitar esta llave de seguridad para el inicio de sesión de dos pasos." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Hubo un problema al leer la llave de seguridad. Inténtalo de nuevo." + }, + "twoFactorWebAuthnWarning": { + "message": "Debido a las limitaciones de la plataforma, WebAuthn no puede ser utilizado en todas las aplicaciones de Bitwarden. Debería habilitar otro proveedor de inicio de sesión en dos-pasos para que pueda acceder a su cuenta cuando WebAuthn no pueda ser usado. Plataformas soportadas:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Bóveda web y extensiones de navegador en un escritorio/portátil con un navegador WebAuthn habilitado (Chrome, Opera, Vivaldi o Firefox con FIDO U2F habilitado)." + }, + "twoFactorRecoveryYourCode": { + "message": "Tu código de recuperación de inicio de sesión de dos pasos de Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Aún no has habilitado ningún proveedor de inicio de sesión en dos pasos. Después de haber habilitado un proveedor de inicio de sesión en dos pasos, puedes volver aquí para ver el código de recuperación." + }, + "printCode": { + "message": "Imprimir código", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Informes" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Informes de sitios web no seguros" + }, + "unsecuredWebsitesReportDesc": { + "message": "Usar sitios web no seguros con el esquema http:// puede ser peligroso. Si el sitio web lo permite, se debe acceder siempre usando el esquema https:// para que la conexión esté cifrada." + }, + "unsecuredWebsitesFound": { + "message": "Sitios web no seguros encontrados" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Hemos encontrado $COUNT$ elemento(s) en su caja fuerte con URIs no seguras. Si el sitio web lo permite debe cambiar su esquema URI a https://.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No hay elementos en su caja fuerte con URIs no seguras." + }, + "inactive2faReport": { + "message": "Informe 2FA inactivo" + }, + "inactive2faReportDesc": { + "message": "La autenticación de dos factores (2FA) es una configuración de seguridad importante que ayuda a proteger sus cuentas. Si el sitio web lo ofrece, siempre debe habilitar la autenticación de dos factores." + }, + "inactive2faFound": { + "message": "Inicios de sesión sin 2FA encontrados" + }, + "inactive2faFoundDesc": { + "message": "Hemos encontrado $COUNT$ sitio(s) web en su caja fuerte que no pueden ser configuradas con autenticación de dos factores (según twofactorauth.org). Para proteger estas cuentas, debe habilitar autenticación de dos factores.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No se han encontrado sitios web en su caja fuerte sin una configuración de autenticación de dos factores." + }, + "instructions": { + "message": "Instrucciones" + }, + "exposedPasswordsReport": { + "message": "Infome de contraseñas expuestas" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "Contraseñas expuestas encontradas" + }, + "exposedPasswordsFoundDesc": { + "message": "Hemos encontrado $COUNT$ elementos en su caja fuerte que tienen contraseñas que fueron expuestas en violaciones de datos conocidas. Debe cambiarlos para utilizar una contraseña nueva.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No hay elementos en su caja fuerte que tengan contraseñas que hayan sido expuestas en violaciones de datos conocidas." + }, + "checkExposedPasswords": { + "message": "Compruebe las contraseñas expuestas" + }, + "exposedXTimes": { + "message": "Expuestas $COUNT$ vez/veces", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Informe de contraseñas débiles" + }, + "weakPasswordsReportDesc": { + "message": "Contraseñas débiles pueden ser fácilmente adivinadas por hackers y herramientas automatizadas que se utilizan para descifrar contraseñas- El generador de contraseñas de Bitwarden puede ayudarle a crear contraseñas fuertes." + }, + "weakPasswordsFound": { + "message": "Contraseñas débiles encontradas" + }, + "weakPasswordsFoundDesc": { + "message": "Hemos encontrado $COUNT$ elemento(s) en su caja fuerte con contraseñas que no son fuertes. Se deben actualizar para usar contraseñas más fuertes.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No hay elementos en su caja fuerte que tengan contraseñas débiles." + }, + "reusedPasswordsReport": { + "message": "Informe de contraseñas reutilizadas" + }, + "reusedPasswordsReportDesc": { + "message": "Si un servicio que usa está comprometido, reutilizar la misma contraseña en otros lugares puede permitir que los hackers accedan fácilmente a más de sus cuentas en línea. Debe utilizar una contraseña única para cada cuenta o servicio." + }, + "reusedPasswordsFound": { + "message": "Contraseñas reutilizadas encontradas" + }, + "reusedPasswordsFoundDesc": { + "message": "Hemos encontrado $COUNT$ contraseña(s) que están siendo reutilizadas en su caja fuerte. Debe cambiarlas a un valor único.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No hay inicios de sesión en su caja fuerte que tengan contraseñas que esten siendo reutilizadas." + }, + "reusedXTimes": { + "message": "Reutilizada $COUNT$ vez/veces", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Informe de violación de datos" + }, + "breachDesc": { + "message": "Una \"filtración\" es un incidente en el que los delincuentes informáticos han accedido ilegalmente a los datos de un sitio y los han hecho públicos. Revisa los tipos de datos que fueron comprometidos (direcciones de correo electrónico, contraseñas, tarjetas de crédito, etc.) y toma las medidas apropiadas, como cambiar las contraseñas." + }, + "breachCheckUsernameEmail": { + "message": "Verifica cualquier nombre de usuario o dirección de correo electrónico que utilices." + }, + "checkBreaches": { + "message": "Comprobar filtraciones" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ no se encontró en ninguna filtración de datos conocida.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Buenas Noticias", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ fue encontrado en $COUNT$ filtración/es de datos en línea.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Cuentas comprometidas encontradas" + }, + "compromisedData": { + "message": "Datos comprometidos" + }, + "website": { + "message": "Página web" + }, + "affectedUsers": { + "message": "Usuarios afectados" + }, + "breachOccurred": { + "message": "Se ha producido una filtración" + }, + "breachReported": { + "message": "Filtración reportada" + }, + "reportError": { + "message": "Se ha producido un error al intentar cargar el informe. Vuelve a intentarlo" + }, + "billing": { + "message": "Facturación" + }, + "accountCredit": { + "message": "Crédito de la cuenta", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo de la Cuenta", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Agregar crédito", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Importe", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "El crédito añadido aparecerá en tu cuenta después de que el pago haya sido procesado por completo. Algunos métodos de pago se retrasan y pueden tomar más tiempo para procesar que otros." + }, + "makeSureEnoughCredit": { + "message": "Por favor, asegúrese de que su cuenta tiene suficiente crédito disponible para esta compra. Si su cuenta no tiene suficiente crédito disponible, su método de pago por defecto se utilizará para la diferencia. Puede agregar crédito a su cuenta desde la página de facturación." + }, + "creditAppliedDesc": { + "message": "El crédito de su cuenta puede utilizarse para realizar compras. Cualquier crédito disponible se aplicará automáticamente a las facturas generadas para esta cuenta." + }, + "goPremium": { + "message": "Hazte Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Has actualizado a premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Actualice su cuenta a una membresía premium y desbloquee estupendas características adicionales." + }, + "premiumSignUpStorage": { + "message": "1 GB de almacenamiento de archivos cifrados." + }, + "premiumSignUpTwoStep": { + "message": "Opciones adicionales de inicio de sesión de dos pasos como YubiKey, Fido U2F y Duo." + }, + "premiumSignUpEmergency": { + "message": "Acceso de emergencia" + }, + "premiumSignUpReports": { + "message": "Higiene de contraseña, salud de la cuenta e informes de violaciones de datos para mantener su caja fuerte segura." + }, + "premiumSignUpTotp": { + "message": "Generador de código de verificación TOTP (2FA) para iniciar sesión en su caja fuerte." + }, + "premiumSignUpSupport": { + "message": "Atención prioritaria al cliente." + }, + "premiumSignUpFuture": { + "message": "Acceso a nuevas características premium en el futuro. ¡Hay más en camino!" + }, + "premiumPrice": { + "message": "Todo por sólo $PRICE$ /año!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Complementos" + }, + "premiumAccess": { + "message": "Acceso Premium" + }, + "premiumAccessDesc": { + "message": "Puede Agregar acceso premium a todos los miembros de su organización por $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Almacenamiento adicional (GB)" + }, + "additionalStorageGbDesc": { + "message": "# de GB adicional" + }, + "additionalStorageIntervalDesc": { + "message": "Su plan viene con $SIZE$ de almacenamiento de archivos cifrados. Puede agregar almacenamiento adicional por $PRICE$ por GB/$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Resumen" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "año" + }, + "month": { + "message": "mes" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Tu método de pago será cobrado inmediatamente y luego de forma recurrente cada $INTERVAL$. Puedes cancelar en cualquier momento.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your card will not be charged until the trial has ended and on a recurring basis each $INTERVAL$. You may cancel at any time." + }, + "paymentInformation": { + "message": "Información de pago" + }, + "billingInformation": { + "message": "Información de Facturación" + }, + "creditCard": { + "message": "Tarjeta de crédito" + }, + "paypalClickSubmit": { + "message": "Pulse el botón PayPal para iniciar sesión en su cuenta PayPal y, a continuación, pulse el botón Enviar para continuar." + }, + "cancelSubscription": { + "message": "Cancelar suscripción" + }, + "subscriptionCanceled": { + "message": "La suscripción ha sido cancelada." + }, + "pendingCancellation": { + "message": "Cancelación pendiente" + }, + "subscriptionPendingCanceled": { + "message": "La suscripción ha sido marcada para cancelación al final del período de facturación actual." + }, + "reinstateSubscription": { + "message": "Restablecer la suscripción" + }, + "reinstateConfirmation": { + "message": "¿Está seguro de que desea eliminar la solicitud de cancelación pendiente y restablecer su suscripción?" + }, + "reinstated": { + "message": "La suscripción ha sido restablecida." + }, + "cancelConfirmation": { + "message": "¿Estás seguro de que quieres cancelar? Perderá el acceso a todas las funciones de esta suscripción al final de este ciclo de facturación." + }, + "canceledSubscription": { + "message": "La suscripción ha sido cancelada." + }, + "neverExpires": { + "message": "Nunca caduca" + }, + "status": { + "message": "Estado" + }, + "nextCharge": { + "message": "Cargo siguiente" + }, + "details": { + "message": "Detalles" + }, + "downloadLicense": { + "message": "Descargar licencia" + }, + "updateLicense": { + "message": "Actualizar Licencia" + }, + "updatedLicense": { + "message": "Licencia actualizada" + }, + "manageSubscription": { + "message": "Administrar suscripción" + }, + "storage": { + "message": "Almacenamiento" + }, + "addStorage": { + "message": "Añadir almacenamiento" + }, + "removeStorage": { + "message": "Eliminar almacenamiento" + }, + "subscriptionStorage": { + "message": "Su suscripción tiene un total de $MAX_STORAGE$ GB de almacenamiento de archivos cifrados. Actualmente está utilizando $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Método de Pago" + }, + "noPaymentMethod": { + "message": "No hay ningún método de pago en el archivo." + }, + "addPaymentMethod": { + "message": "Añadir método de pago" + }, + "changePaymentMethod": { + "message": "Cambiar Método de Pago" + }, + "invoices": { + "message": "Facturas" + }, + "noInvoices": { + "message": "Sin facturas." + }, + "paid": { + "message": "Pagado", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "No pagado", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transacciones", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Sin transacciones." + }, + "chargeNoun": { + "message": "Cargo", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Reembolso", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Cualquier cargo aparecerá en su estado de cuenta como $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB de almacenamiento que añadir" + }, + "gbStorageRemove": { + "message": "GB de almacenamiento a eliminar" + }, + "storageAddNote": { + "message": "Agregar almacenamiento dará como resultado ajustes en sus totales de facturación e inmediatamente cargará su método de pago en el archivo. El primer cargo será prorrateado por el resto del ciclo de facturación actual." + }, + "storageRemoveNote": { + "message": "Al eliminar el almacenamiento, se realizarán ajustes en los totales de facturación que se prorratearán como créditos para su próximo cargo de facturación." + }, + "adjustedStorage": { + "message": "$AMOUNT$ GB de almacenamiento ajustado.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Póngase en contacto con el servicio de atención al cliente" + }, + "updatedPaymentMethod": { + "message": "Método de pago actualizado." + }, + "purchasePremium": { + "message": "Comprar Premium" + }, + "licenseFile": { + "message": "Archivo de licencia" + }, + "licenseFileDesc": { + "message": "El nombre de tu archivo del licecncia será algo como $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Para actualizar tu cuenta a una membresía premium necesitas subir un archivo de licencia válido." + }, + "uploadLicenseFileOrg": { + "message": "Para crear una organización en un alojamiento propio necesitas subir un archivo de licencia válido." + }, + "accountEmailMustBeVerified": { + "message": "El correo electrónico de tu cuenta debe ser verificado." + }, + "newOrganizationDesc": { + "message": "Las organizaciones te permiten compartir partes de tu caja fuerte con otras personas así como gestionar que usuarios están relacionado con una entidad concreta como familia, un pequeño equipo o una gran empresa." + }, + "generalInformation": { + "message": "Información general" + }, + "organizationName": { + "message": "Nombre de la organización" + }, + "accountOwnedBusiness": { + "message": "Esta cuenta es propiedad de una empresa." + }, + "billingEmail": { + "message": "Correo electrónico de facturación" + }, + "businessName": { + "message": "Nombre de la empresa" + }, + "chooseYourPlan": { + "message": "Elige tu plan" + }, + "users": { + "message": "Usuarios" + }, + "userSeats": { + "message": "Puestos" + }, + "additionalUserSeats": { + "message": "Puestos adicionales" + }, + "userSeatsDesc": { + "message": "# de puestos" + }, + "userSeatsAdditionalDesc": { + "message": "Tu plan viene con $BASE_SEATS$ puestos. Puedes añadir puestos adicionales por $SEAT_PRICE$ por usuario/mes.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "¿Cuantos puestos necesitas? Puedes añadir más puestos más adelante si es necesario." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Para usuarios de prueba o personales, permite compartir con $COUNT$ usuario más.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familias" + }, + "planDescFamilies": { + "message": "Para uso personal, compartir con la familia o con amigos." + }, + "planNameTeams": { + "message": "Equipos" + }, + "planDescTeams": { + "message": "Para empresas u otros equipos organizados." + }, + "planNameEnterprise": { + "message": "Empresas" + }, + "planDescEnterprise": { + "message": "Para empresas u otras organizaciones grandes." + }, + "freeForever": { + "message": "Gratis para siempre" + }, + "includesXUsers": { + "message": "incluye $COUNT$ usuarios", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Usuarios adicionales" + }, + "costPerUser": { + "message": "$COST$ por usuario", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limitado a $COUNT$ usuarios (incluyéndote a ti)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limitado a $COUNT$ colecciones", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Añade y comparte hasta con $COUNT$ usuarios", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Añade y comparte con usuarios ilimitados" + }, + "createUnlimitedCollections": { + "message": "Crea colecciones ilimitadas" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ de almacenamiento de archivos cifrado", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Alojamiento propio (opcional)" + }, + "usersGetPremium": { + "message": "Los usuarios obtienen acceso a las características de una membresía premium" + }, + "controlAccessWithGroups": { + "message": "Control el acceso de usuarios con grupos" + }, + "syncUsersFromDirectory": { + "message": "Sincroniza tus usuarios y grupos desde un directorio" + }, + "trackAuditLogs": { + "message": "Rastrea acciones de usuarios con logs de auditoría" + }, + "enforce2faDuo": { + "message": "Forzar uso de 2FA con Duo" + }, + "priorityCustomerSupport": { + "message": "Soporte prioritario" + }, + "xDayFreeTrial": { + "message": "$COUNT$ días de prueba, cancela en cualquier momento", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Mensual" + }, + "annually": { + "message": "Anual" + }, + "basePrice": { + "message": "Precio base" + }, + "organizationCreated": { + "message": "Organización creada" + }, + "organizationReadyToGo": { + "message": "¡Tu nueva organización está lista para comenzar!" + }, + "organizationUpgraded": { + "message": "Tu organización ha sido actualizada." + }, + "leave": { + "message": "Salir" + }, + "leaveOrganizationConfirmation": { + "message": "¿Estás seguro de que quieres dejar esta organización?" + }, + "leftOrganization": { + "message": "Usted ha dejado la organización." + }, + "defaultCollection": { + "message": "Colección por defecto" + }, + "getHelp": { + "message": "Consigue ayuda" + }, + "getApps": { + "message": "Consigue las apps" + }, + "loggedInAs": { + "message": "Conectado como" + }, + "eventLogs": { + "message": "Registro de Eventos" + }, + "people": { + "message": "Personas" + }, + "policies": { + "message": "Políticas" + }, + "singleSignOn": { + "message": "Inicio de sesión único" + }, + "editPolicy": { + "message": "Editar política" + }, + "groups": { + "message": "Grupos" + }, + "newGroup": { + "message": "Nuevo Grupo" + }, + "addGroup": { + "message": "Añadir grupo" + }, + "editGroup": { + "message": "Editar grupo" + }, + "deleteGroupConfirmation": { + "message": "¿Estás seguro de que deseas eliminar este grupo?" + }, + "removeUserConfirmation": { + "message": "¿Estás seguro de que deseas eliminar a este usuario?" + }, + "removeUserConfirmationKeyConnector": { + "message": "¡Advertencia! Este usuario requiere Conector de Clave para administrar su cifrado. Eliminar a este usuario de tu organización deshabilitará permanentemente su cuenta. Esta acción no se puede deshacer. ¿Quieres continuar?" + }, + "externalId": { + "message": "Id externo" + }, + "externalIdDesc": { + "message": "El Id externo puede ser usado como una referencia o para enlazar este recurso a un sistema externo, por ejemplo, un directorio de usuario." + }, + "accessControl": { + "message": "Control de Acceso" + }, + "groupAccessAllItems": { + "message": "Este grupo puede acceder y modificar todos los elementos." + }, + "groupAccessSelectedCollections": { + "message": "Este grupo sólo puede acceder a las colecciones seleccionadas." + }, + "readOnly": { + "message": "Sólo lectura" + }, + "newCollection": { + "message": "Nueva colección" + }, + "addCollection": { + "message": "Añadir colección" + }, + "editCollection": { + "message": "Editar colección" + }, + "deleteCollectionConfirmation": { + "message": "¿Seguro que quieres eliminar esta colección?" + }, + "editUser": { + "message": "Editar usuario" + }, + "inviteUser": { + "message": "Invitar usuario" + }, + "inviteUserDesc": { + "message": "Invite a un nuevo usuario a su organización introduciendo la dirección de correo electrónico de su cuenta Bitwarden a continuación. Si aún no tienen una cuenta Bitwarden, se les pedirá que creen una nueva cuenta." + }, + "inviteMultipleEmailDesc": { + "message": "Puede invitar hasta $COUNT$ usuarios a la vez separando por comas las direcciones de correo electrónico.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Este usuario está usando autenticación de dos pasos para proteger su cuenta." + }, + "userAccessAllItems": { + "message": "Este usuario puede acceder y modificar todos los elementos." + }, + "userAccessSelectedCollections": { + "message": "Este usuario sólo puede acceder a las colecciones seleccionadas." + }, + "search": { + "message": "Buscar" + }, + "invited": { + "message": "Invitado" + }, + "accepted": { + "message": "Aceptado" + }, + "confirmed": { + "message": "Confirmado" + }, + "clientOwnerEmail": { + "message": "Correo electrónico del propietario del cliente" + }, + "owner": { + "message": "Propietario" + }, + "ownerDesc": { + "message": "El usuario de acceso más alto que puede administrar todos los aspectos de su organización." + }, + "clientOwnerDesc": { + "message": "Este usuario debe ser independiente del Proveedor. Si el Proveedor está desasociado con la organización, este usuario mantendrá la propiedad de la organización." + }, + "admin": { + "message": "Administrador" + }, + "adminDesc": { + "message": "Los administradores pueden acceder y gestionar todos los elementos, colecciones y usuarios de la organización." + }, + "user": { + "message": "Usuario" + }, + "userDesc": { + "message": "Un usuario regular con acceso a las colecciones de su organización." + }, + "manager": { + "message": "Gestor" + }, + "managerDesc": { + "message": "Los gestores pueden acceder y gestionar colecciones asignadas en tu organización." + }, + "all": { + "message": "Todo" + }, + "refresh": { + "message": "Actualizar" + }, + "timestamp": { + "message": "Marca de tiempo" + }, + "event": { + "message": "Evento" + }, + "unknown": { + "message": "Desconocido" + }, + "loadMore": { + "message": "Cargar más" + }, + "mobile": { + "message": "Móvil", + "description": "Mobile app" + }, + "extension": { + "message": "Extensión", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Escritorio", + "description": "Desktop app" + }, + "webVault": { + "message": "Caja fuerte Web" + }, + "loggedIn": { + "message": "Identificado." + }, + "changedPassword": { + "message": "Contraseña de la cuenta cambiada." + }, + "enabledUpdated2fa": { + "message": "Autenticación en dos pasos habilitado/actualizado." + }, + "disabled2fa": { + "message": "Autenticación en dos pasos deshabilitada." + }, + "recovered2fa": { + "message": "Cuenta recuperada de autenticación en dos pasos." + }, + "failedLogin": { + "message": "Intento de acceso fallido con contraseña incorrecta." + }, + "failedLogin2fa": { + "message": "Intento de acceso fallido con autenticación en dos pasos incorrecta." + }, + "exportedVault": { + "message": "Caja fuerte exportada." + }, + "exportedOrganizationVault": { + "message": "Caja fuerte de organización exportada." + }, + "editedOrgSettings": { + "message": "Ajustes de la organización editados." + }, + "createdItemId": { + "message": "Elemento $ID$ creado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Elemento $ID$ editado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Elemento $ID$ eliminado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Se ha movido el elemento $ID$ a una organización.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Elemento $ID$ visto.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Contraseña para el elemento $ID$ vista.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Campo oculto para el elemento $ID$ visto.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Código de seguridad para el elemento $ID$ visto.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Contraseña para el elemento $ID$ copiada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Campo oculto para el elemento $ID$ copiado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Código de seguridad para el elemento $ID$ copiado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Elemento $ID$ autorrellenado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Colección $ID$ creada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Colección $ID$ editada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Colección $ID$ eliminada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Política $ID$ editada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Grupo $ID$ creado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Grupo $ID$ editado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Grupo $ID$ eliminado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Usuario $ID$ eliminado.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Adjunto del elemento $ID$ creado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Adjunto del elemento $ID$ eliminado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Colecciones del elemento $ID$ editadas.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Usuario $ID$ invitado.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Usuario $ID$ confirmado.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Usuario $ID$ editado.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Grupos del usuario $ID$ editados.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO desvinculado para el usuario $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organización $ID$ creada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organización $ID$ añadida.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organización $ID$ eliminada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Se ha accedido a la caja fuerte de la organización $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Dispositivo" + }, + "view": { + "message": "Ver" + }, + "invalidDateRange": { + "message": "Rango de datos no válido." + }, + "errorOccurred": { + "message": "Ha ocurrido un error." + }, + "userAccess": { + "message": "Acceso del usuario" + }, + "userType": { + "message": "Tipo de usuario" + }, + "groupAccess": { + "message": "Acceso del grupo" + }, + "groupAccessUserDesc": { + "message": "Edita los grupos a los que pertenece este usuario." + }, + "invitedUsers": { + "message": "Usuario(s) invitados." + }, + "resendInvitation": { + "message": "Reenviar invitación" + }, + "resendEmail": { + "message": "Reenviar correo" + }, + "hasBeenReinvited": { + "message": "El usuario $USER$ ha sido reinvitado.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirmar" + }, + "confirmUser": { + "message": "Confirmar usuario" + }, + "hasBeenConfirmed": { + "message": "El usuario $USER$ ha sido confirmado.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirmar usuarios" + }, + "usersNeedConfirmed": { + "message": "Tienes usuarios que han aceptado su invitación pero necesitan ser confirmados. Los usuarios no tendrán acceso a la organización hasta que estén confirmados." + }, + "startDate": { + "message": "Fecha de inicio" + }, + "endDate": { + "message": "Fecha de finalización" + }, + "verifyEmail": { + "message": "Verificar correo electrónico" + }, + "verifyEmailDesc": { + "message": "Verifica el correo electrónico de tu cuenta para desbloquear todas estas características." + }, + "verifyEmailFirst": { + "message": "El correo electrónico de tu cuenta debe ser verificado primero." + }, + "checkInboxForVerification": { + "message": "Comprueba el enlace de verificación en tu cuenta de correo." + }, + "emailVerified": { + "message": "Tu cuenta de correo ha sido verificada." + }, + "emailVerifiedFailed": { + "message": "No se ha podido verificar tu cuenta de correo electrónico. Prueba a enviar un nuevo correo de verificación." + }, + "emailVerificationRequired": { + "message": "Verificación de correo electrónico requerida" + }, + "emailVerificationRequiredDesc": { + "message": "Debes verificar tu correo electrónico para usar esta característica." + }, + "updateBrowser": { + "message": "Actualizar navegador" + }, + "updateBrowserDesc": { + "message": "Está utilizando un navegador web no compatible. Es posible que la caja fuerte web no funcione correctamente." + }, + "joinOrganization": { + "message": "Únete a la organización" + }, + "joinOrganizationDesc": { + "message": "Usted ha sido invitado a unirse a la organización mencionada anteriormente. Para aceptar la invitación, debe iniciar sesión o crear una nueva cuenta de Bitwarden." + }, + "inviteAccepted": { + "message": "Invitación Aceptada" + }, + "inviteAcceptedDesc": { + "message": "Puede acceder a esta organización una vez que un administrador confirme su membresía. Te enviaremos un correo electrónico cuando eso suceda." + }, + "inviteAcceptFailed": { + "message": "No se puede aceptar la invitación. Pida a un administrador de la organización que envíe una nueva invitación." + }, + "inviteAcceptFailedShort": { + "message": "No se puede aceptar la invitación. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Recordar correo electrónico" + }, + "recoverAccountTwoStepDesc": { + "message": "Si no puedes acceder a tu cuenta utilizando tus métodos normales de autenticación en dos pasos, puedes utilizar el código de recuperación de autenticación en dos pasos para deshabilitar todos los proveedores de tu cuenta." + }, + "recoverAccountTwoStep": { + "message": "Recuperar autenticación en dos pasos" + }, + "twoStepRecoverDisabled": { + "message": "La autenticación en dos pasos ha sido deshabilitada para tu cuenta." + }, + "learnMore": { + "message": "Más información" + }, + "deleteRecoverDesc": { + "message": "Introduce tu correo electrónico debajo para recuperar y eliminar tu cuenta." + }, + "deleteRecoverEmailSent": { + "message": "Si tu cuenta existe, enviaremos un correo electrónico con más instrucciones." + }, + "deleteRecoverConfirmDesc": { + "message": "Has solicitado eliminar tu cuenta de Bitwarden. Pulsa en el botón inferior para confirmar." + }, + "myOrganization": { + "message": "Mi organización" + }, + "deleteOrganization": { + "message": "Eliminar organización" + }, + "deletingOrganizationContentWarning": { + "message": "Introduzca la contraseña maestra para confirmar la eliminación de $ORGANIZATION$ y todos los datos asociados. Los datos de la bóveda de $ORGANIZATION$ incluyen:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Las cuentas de usuario permanecerán activas después de la eliminación, pero ya no estarán asociadas a esta organización." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "La eliminación de $ORGANIZATION$ es permanente y irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organización eliminada" + }, + "organizationDeletedDesc": { + "message": "La organización y todo el contenido asociado ha sido eliminado." + }, + "organizationUpdated": { + "message": "Organización actualizada" + }, + "taxInformation": { + "message": "Información sobre impuestos" + }, + "taxInformationDesc": { + "message": "Para los clientes dentro de los Estados Unidos, el código postal es necesario para satisfacer los requisitos de impuestos sobre las ventas. para otros países usted puede proporcionar opcionalmente un número de identificación fiscal (IVA/GST) y/o dirección para que aparezca en sus facturas." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Cambiar plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Actualiza tu cuenta a otro plan proporcionando la información de abajo. Por favor, asegúrate de que tienes un método de pago activo añadido a la cuenta.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Factura $NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Ver Factura" + }, + "downloadInvoice": { + "message": "Descargar Factura" + }, + "verifyBankAccount": { + "message": "Verificar cuenta bancaria" + }, + "verifyBankAccountDesc": { + "message": "Hemos hecho dos pequeños cargos en tu cuenta bancaria (pueden tardar de 1 a 2 días laborables en aparecer). Introduce esas cantidades para verificar tu cuenta bancaria." + }, + "verifyBankAccountInitialDesc": { + "message": "El pago con cuenta bancaria solo está disponible para clientes en los Estados Unidos. Tendrá que verificar su cuenta bancaria. Realizaremos dos pequeños cargos en los siguientes 1-2 días laborables. Introduzca esas cantidades en la página de facturación de la organización para verificar la cuenta bancaria." + }, + "verifyBankAccountFailureWarning": { + "message": "Si falla la verificación de la cuenta bancaria, como resultado se saltará el pago y tu suscripción será deshabilitada." + }, + "verifiedBankAccount": { + "message": "La cuenta bancaria ha sido verificada." + }, + "bankAccount": { + "message": "Cuenta bancaria" + }, + "amountX": { + "message": "Cantidad $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Número de ruta bancaria", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Número de cuenta" + }, + "accountHolderName": { + "message": "Nombre del titular de la cuenta" + }, + "bankAccountType": { + "message": "Tipo de cuenta" + }, + "bankAccountTypeCompany": { + "message": "Compañia (Empresa)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Introduce tu ID de instalación" + }, + "limitSubscriptionDesc": { + "message": "Establezca un límite de asientos para su suscripción. Una vez alcanzado este límite, no podrá invitar a nuevos usuarios." + }, + "maxSeatLimit": { + "message": "Límite máximo de asientos (opcional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Coste potencial máximo del asiento" + }, + "addSeats": { + "message": "Añadir puestos", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Quitar puestos", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Los ajustes a su suscripción provocarán cambios prorrateados en su facturación total. Si los usuarios recién invitados exceden sus asientos de suscripción, recibirá inmediatamente un cargo prorrateado para los usuarios adicionales." + }, + "subscriptionUserSeats": { + "message": "Tu suscripción permite un total de $COUNT$ usuarios.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limitar suscripción (opcional)" + }, + "subscriptionSeats": { + "message": "Asientos de suscripción" + }, + "subscriptionUpdated": { + "message": "Suscripción actualizada" + }, + "additionalOptions": { + "message": "Opciones adicionales" + }, + "additionalOptionsDesc": { + "message": "Para ayuda adicional en la gestión de tu suscripción, por favor contacta con Atención al Cliente." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Los ajustes a su suscripción provocarán cambios prorrateados en su facturación total. Si los usuarios recién invitados exceden sus asientos de suscripción, recibirá inmediatamente un cargo prorrateado para los usuarios adicionales." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Los ajustes a su suscripción provocarán cambios prorrateados en su facturación total. Si los usuarios recién invitados exceden sus asientos de suscripción, recibirás inmediatamente un cargo prorrateado para los usuarios adicionales hasta que alcances tu límite de $MAX$ asientos.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "No puedes invitar a más de $COUNT$ usuarios sin actualizar tu plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "No puede invitar a más de $COUNT$ usuarios sin actualizar su plan. Póngase en contacto con el Servicio de Atención al Cliente para actualizarlo.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Su suscripción permite un total de $COUNT$ usuarios. Su plan es patrocinado y facturado a una organización externa.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Los ajustes de tu suscripción darán como resultado cambios prorrateados en tus facturación total. No puedes invitar a más de $COUNT$ usuarios sin aumentar tus asientos de suscripción.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Puesto a añadir" + }, + "seatsToRemove": { + "message": "Puestos a quitar" + }, + "seatsAddNote": { + "message": "Añadir puestos hará ajustes en el total de tu facturación y se realizará un cargo sobre tu método de pago inmediatamente. El primer cargo se prorrateará por el número de días restantes del ciclo de facturación actual." + }, + "seatsRemoveNote": { + "message": "Quitar puestos hará cambios en el total de tu facturación que será prorratada como creditos de cara al siguiente cargo." + }, + "adjustedSeats": { + "message": "Ajustados $AMOUNT$ puestos.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Clave actualizada" + }, + "updateKeyTitle": { + "message": "Actualizar clave" + }, + "updateEncryptionKey": { + "message": "Actualizar clave de cifrado" + }, + "updateEncryptionKeyShortDesc": { + "message": "Actualmente utilizas un esquema de cifrado desactualizado." + }, + "updateEncryptionKeyDesc": { + "message": "Hemos cambiado a unas claves de cifrado más grandes para ofrecer una mayor seguridad y acceso a nuevas características. Actualizar tu clave de cifrado actual es fácil y rápido. Solo necesitas escribir tu contraseña maestra debajo. Esta actualización en algún momento se volverá obligatoria." + }, + "updateEncryptionKeyWarning": { + "message": "Una vez actualices tu clave de cifrado, será necesario que cierres sesión y vuelvas a identificarte en todas las aplicaciones de Bitwarden que estés utilizando (como la aplicación móvil o la extensión de navegador). Si la reautenticación falla (la cual descargaría la nueva clave de cifrad) puede producirse corrupción de datos. Intentaremos cerrar tu sesión automáticamente, pero puede tardar un tiempo." + }, + "updateEncryptionKeyExportWarning": { + "message": "Cualquier exportación cifrada que hayas guardado también será inválida." + }, + "subscription": { + "message": "Suscripción" + }, + "loading": { + "message": "Cargando" + }, + "upgrade": { + "message": "Mejorar" + }, + "upgradeOrganization": { + "message": "Mejorar organización" + }, + "upgradeOrganizationDesc": { + "message": "Esta características no está disponible para organizaciones gratuitas. Cambiar a una organización de pago para desbloquear más características." + }, + "createOrganizationStep1": { + "message": "Crear organización: Paso 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Antes de crear tu organización, necesitas tener una cuenta gratuita de uso personal." + }, + "refunded": { + "message": "Reembolsado" + }, + "nothingSelected": { + "message": "No has seleccionado nada." + }, + "acceptPolicies": { + "message": "Al seleccionar esta casilla, acepta lo siguiente:" + }, + "acceptPoliciesError": { + "message": "Todavía no has aceptado los términos del servicio y la política de privacidad." + }, + "termsOfService": { + "message": "Términos y condiciones del servicio" + }, + "privacyPolicy": { + "message": "Política de privacidad" + }, + "filters": { + "message": "Filtros" + }, + "vaultTimeout": { + "message": "Tiempo de espera de la bóveda" + }, + "vaultTimeoutDesc": { + "message": "Elije cuando se agotará el tiempo de espera de tu caja fuerte y se ejecutará la acción seleccionada." + }, + "oneMinute": { + "message": "1 minuto" + }, + "fiveMinutes": { + "message": "5 minutos" + }, + "fifteenMinutes": { + "message": "15 minutos" + }, + "thirtyMinutes": { + "message": "30 minutos" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 horas" + }, + "onRefresh": { + "message": "Al recargar la página" + }, + "dateUpdated": { + "message": "Actualizada", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Contraseña actualizada", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "La organización está desactivada." + }, + "licenseIsExpired": { + "message": "Licencia expirada." + }, + "updatedUsers": { + "message": "Usuarios actualizados" + }, + "selected": { + "message": "Seleccionado" + }, + "ownership": { + "message": "Propiedad" + }, + "whoOwnsThisItem": { + "message": "¿Quién posee este elemento?" + }, + "strong": { + "message": "Fuerte", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Bueno", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Débil", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Muy débil", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "También rotar la clave de encriptación de mi cuenta" + }, + "rotateEncKeyTitle": { + "message": "Rotar clave de encriptación" + }, + "rotateEncKeyConfirmation": { + "message": "¿Está seguro de que desea rotar la clave de encriptación de su cuenta?" + }, + "attachmentsNeedFix": { + "message": "Este elemento tiene archivos adjuntos antiguos que deben ser corregidos." + }, + "attachmentFixDesc": { + "message": "Este es un archivo adjunto antiguo que necesita ser corregido. Haga clic para obtener más información." + }, + "fix": { + "message": "Arreglar", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Hay archivos adjuntos antiguos en la caja fuerte que necesitan ser corregidos antes de poder rotar la clave de encriptación de su cuenta." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Para asegurar la integridad de sus claves de encriptación, por favor verifique la frase de la huella digital del usuario antes de continuar.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "No pida verificar la frase de la huella dactilar de nuevo", + "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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Clave API" + }, + "apiKeyDesc": { + "message": "Su clave API puede ser usada para autenticar la API pública de Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Rotar la clave API invalidará la clave anterior. Puede rotar la clave API si cree que la clave actual ya no es segura de usar." + }, + "apiKeyWarning": { + "message": "Su clave API tiene acceso completo a la organización. Debe mantenerse en secreto." + }, + "userApiKeyDesc": { + "message": "Su clave API puede ser usada para autenticarse en el CLI de Bitwarden." + }, + "userApiKeyWarning": { + "message": "Su clave API es un mecanismo alternativo de autenticación. Debe mantenerse en secreto." + }, + "oauth2ClientCredentials": { + "message": "Credenciales de cliente OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Ver Clave API" + }, + "rotateApiKey": { + "message": "Rotar clave API" + }, + "selectOneCollection": { + "message": "Debes seleccionar al menos una colección." + }, + "couldNotChargeCardPayInvoice": { + "message": "No pudimos realizar el cobro a su tarjeta de crédito. Por favor, vea y pague la factura no pagada que se indica a continuación." + }, + "inAppPurchase": { + "message": "Compra desde la aplicación" + }, + "cannotPerformInAppPurchase": { + "message": "No puedes realizar esta acción mientras usas un método de pago de compra en la aplicación." + }, + "manageSubscriptionFromStore": { + "message": "Debes administrar tu suscripción desde la tienda donde se hizo tu compra en la aplicación." + }, + "minLength": { + "message": "Longitud mínima" + }, + "clone": { + "message": "Clonar" + }, + "masterPassPolicyDesc": { + "message": "Establecer requisitos mínimos para la fortaleza de la contraseña maestra." + }, + "twoStepLoginPolicyDesc": { + "message": "Requiere que los usuarios establezcan un inicio de sesión en dos pasos en sus cuentas personales." + }, + "twoStepLoginPolicyWarning": { + "message": "Los miembros de la organización que no tengan habilitado el inicio de sesión en dos pasos para su cuenta personal serán eliminados de la organización y recibirán un correo electrónico notificándoles del cambio." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Usted es miembro de una organización que requiere que el inicio de sesión en dos pasos esté habilitado en su cuenta de usuario. Si desactiva todos los proveedores de inicio de sesión en dos pasos, será automáticamente eliminado de estas organizaciones." + }, + "passwordGeneratorPolicyDesc": { + "message": "Establecer requisitos mínimos para la configuración del generador de contraseñas." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una o más políticas de la organización están afectando su configuración del generador." + }, + "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": "Contiene uno o más caracteres en mayúsculas" + }, + "policyInEffectLowercase": { + "message": "Contiene uno o más caracteres en minúsculas" + }, + "policyInEffectNumbers": { + "message": "Contiene uno o más números" + }, + "policyInEffectSpecial": { + "message": "Contienen 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." + }, + "minimumNumberOfWords": { + "message": "Número mínimo de palabras" + }, + "defaultType": { + "message": "Tipo por defecto" + }, + "userPreference": { + "message": "Preferencia de usuario" + }, + "vaultTimeoutAction": { + "message": "Acción de tiempo de espera de la caja fuerte" + }, + "vaultTimeoutActionLockDesc": { + "message": "Una bóveda bloqueada requiere que introduzcas de nuevo tu contraseña maestra para acceder nuevamente." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Cerrar sesión en la bóveda 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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Buscar en la Papelera" + }, + "permanentlyDelete": { + "message": "Eliminar de forma permanente" + }, + "permanentlyDeleteSelected": { + "message": "Eliminar selecciones de forma permanente" + }, + "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" + }, + "permanentlyDeletedItems": { + "message": "Elementos eliminados de forma permanente" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Has seleccionado $COUNT$ elemento(s) a eliminar de forma permanente. ¿Estás seguro de que quieres eliminar de forma permanente todos estos elementos?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Elemento $ID$ eliminado de forma permanente.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restaurar" + }, + "restoreSelected": { + "message": "Restaurar seleccionados" + }, + "restoreItem": { + "message": "Restaurar elemento" + }, + "restoredItem": { + "message": "Elemento restaurado" + }, + "restoredItems": { + "message": "Elementos restaurados" + }, + "restoreItemConfirmation": { + "message": "¿Estás seguro de que quieres restaurar este elemento?" + }, + "restoreItems": { + "message": "Restaurar elementos" + }, + "restoreSelectedItemsDesc": { + "message": "Has seleccionado $COUNT$ elemento(s) para restaurar. ¿Estás seguro de que quieres restaurar todos estos elementos?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Elemento $ID$ restaurado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Cerrar sesión eliminará todo el acceso a su bóveda y requiere autenticación en línea después del período de espera. ¿Estás seguro de que quieres usar esta configuración?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmación de periodo de espera" + }, + "hidePasswords": { + "message": "Ocultar contraseñas" + }, + "countryPostalCodeRequiredDesc": { + "message": "Requerimos esta información sólo para calcular el impuesto sobre las ventas y la información financiera." + }, + "includeVAT": { + "message": "Incluye información IVA/GST (opcional)" + }, + "taxIdNumber": { + "message": "ID impuesto IVA/GST" + }, + "taxInfoUpdated": { + "message": "Información fiscal actualizada." + }, + "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." + }, + "identifier": { + "message": "Identificador" + }, + "organizationIdentifier": { + "message": "Identificador de la organización" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Inicie sesión utilizando el portal de inicio de sesión único de su organización. Introduzca el identificador de su organización para comenzar." + }, + "enterpriseSingleSignOn": { + "message": "Inicio de sesión único empresarial" + }, + "ssoHandOff": { + "message": "Ya puedes cerrar esta pestaña y continuar en la extensión." + }, + "includeAllTeamsFeatures": { + "message": "Todas las características de Equipos y además:" + }, + "includeSsoAuthentication": { + "message": "Autenticación SSO vía SAML2.0 y OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Políticas empresariales" + }, + "ssoValidationFailed": { + "message": "Error de validación SSO" + }, + "ssoIdentifierRequired": { + "message": "Se requiere un identificador de organización." + }, + "unlinkSso": { + "message": "Desenlazar SSO" + }, + "unlinkSsoConfirmation": { + "message": "¿Está seguro que desea desvincular SSO para esta organización?" + }, + "linkSso": { + "message": "Enlazar SSO" + }, + "singleOrg": { + "message": "Organización única" + }, + "singleOrgDesc": { + "message": "Restringir a los usuarios de ser capaces de unirse a otras organizaciones." + }, + "singleOrgBlockCreateMessage": { + "message": "Su organización actual tiene una política que no le permite unirse a más de una organización. Póngase en contacto con los administradores de su organización o acceda desde una cuenta de Bitwarden diferente." + }, + "singleOrgPolicyWarning": { + "message": "Los miembros de la organización que no son dueños o administradores y que ya son miembros de otra organización serán eliminados de su organización." + }, + "requireSso": { + "message": "Autenticación de inicio de sesión único" + }, + "requireSsoPolicyDesc": { + "message": "Requiere que los usuarios inicien sesión con el método Enterprise Single Sign-On." + }, + "prerequisite": { + "message": "Prerequisito" + }, + "requireSsoPolicyReq": { + "message": "Es necesario habilitar la política de empresa de la Organización Única antes de activar esta política." + }, + "requireSsoPolicyReqError": { + "message": "Política de organización única no habilitada." + }, + "requireSsoExemption": { + "message": "Los propietarios y administradores de la organización están exentos de la aplicación de esta política." + }, + "sendTypeFile": { + "message": "Archivo" + }, + "sendTypeText": { + "message": "Texto" + }, + "createSend": { + "message": "Crear nuevo 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." + }, + "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." + }, + "deleteSend": { + "message": "Eliminar Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "¿Estás seguro de eliminar este Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "¿Qué tipo de Send es este?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletionDate": { + "message": "Fecha de eliminación" + }, + "deletionDateDesc": { + "message": "El envío se eliminará permanentemente 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 Expiración" + }, + "expirationDateDesc": { + "message": "Si se establece, el acceso a este envío caducará 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 envío 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": "Número de accesos actuales" + }, + "sendPasswordDesc": { + "message": "Opcionalmente se requiere una contraseña para que los usuarios accedan a este Envío.", + "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 Envío.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Deshabilitado" + }, + "sendLink": { + "message": "Enlace Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copiar enlace Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Eliminar contraseña" + }, + "removedPassword": { + "message": "Contraseña Eliminada" + }, + "removePasswordConfirmation": { + "message": "¿Está seguro que desea eliminar la contraseña?" + }, + "hideEmail": { + "message": "Ocultar mi dirección de correo electrónico a los destinatarios." + }, + "disableThisSend": { + "message": "Deshabilita este envío 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." + }, + "allSends": { + "message": "Todos los Sends" + }, + "maxAccessCountReached": { + "message": "Número máximo de accesos alcanzado", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Borrado pendiente" + }, + "expired": { + "message": "Caducado" + }, + "searchSends": { + "message": "Buscar Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Este Send está protegido con una contraseña. Por favor, escriba la contraseña abajo para continuar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "¿No conoce la contraseña? Pídele al remitente la contraseña necesaria para acceder a este enviar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Este Send está oculto por defecto. Puede cambiar su visibilidad usando el botón de abajo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Descargar archivo" + }, + "sendAccessUnavailable": { + "message": "El envío al que está intentando acceder no existe o ya no está disponible.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "No se pudo encontrar el archivo asociado con este Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "No hay Sends que listar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Acceso de emergencia" + }, + "emergencyAccessDesc": { + "message": "Conceder y administrar el acceso de emergencia para los contactos de confianza. Los contactos de confianza pueden solicitar acceso a Ver o Tomar su cuenta en caso de emergencia. Visite nuestra página de ayuda para obtener más información y detalles sobre cómo funciona el intercambio de conocimiento cero." + }, + "emergencyAccessOwnerWarning": { + "message": "Usted es un propietario de una o más organizaciones. Si concede acceso a la adquisición de un contacto de emergencia, podrán utilizar todos sus permisos como propietario después de una adquisición." + }, + "trustedEmergencyContacts": { + "message": "Contactos de emergencia confiables" + }, + "noTrustedContacts": { + "message": "Aún no has añadido ningún contacto de emergencia, invita a un contacto de confianza para empezar." + }, + "addEmergencyContact": { + "message": "Añadir contacto de emergencia" + }, + "designatedEmergencyContacts": { + "message": "Diseñado como contacto de emergencia" + }, + "noGrantedAccess": { + "message": "Aún no has sido designado como un contacto de emergencia para nadie." + }, + "inviteEmergencyContact": { + "message": "Invitar contacto de emergencia" + }, + "editEmergencyContact": { + "message": "Editar contacto de emergencia" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a un nuevo contacto de emergencia introduciendo su dirección de correo electrónico de su cuenta de Bitwarden. Si no tienen una cuenta de Bitwarden, se les pedirá que creen una cuenta." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Acceso de emergencia iniciado" + }, + "emergencyAccessRecoveryApproved": { + "message": "Acceso de emergencia aprobado" + }, + "viewDesc": { + "message": "Puede ver todos los elementos en su propia bóveda." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Puede restablecer su cuenta con una nueva contraseña maestra." + }, + "waitTime": { + "message": "Tiempo de espera" + }, + "waitTimeDesc": { + "message": "Tiempo requerido antes de conceder el acceso automáticamente." + }, + "oneDay": { + "message": "1 día" + }, + "days": { + "message": "$DAYS$ días", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Usuario invitado." + }, + "acceptEmergencyAccess": { + "message": "Has sido invitado a ser un contacto de emergencia para el usuario mencionado anteriormente. Para aceptar la invitación, necesitas iniciar sesión o crear una cuenta de Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "No se puede aceptar la invitación. Pídele al usuario que envíe una nueva invitación." + }, + "emergencyInviteAcceptFailedShort": { + "message": "No se puede aceptar la invitación. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Puedes acceder a las opciones de emergencia de este usuario después de que tu identidad haya sido confirmada. Te enviaremos un correo electrónico cuando eso suceda." + }, + "requestAccess": { + "message": "Solicitar acceso" + }, + "requestAccessConfirmation": { + "message": "¿Está seguro que desea solicitar acceso de emergencia? Se le proporcionará acceso después de $WAITTIME$ día(s) o cuando el usuario apruebe manualmente la solicitud.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Acceso de emergencia solicitado para $USER$. Te avisaremos por correo electrónico cuando sea posible continuar.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Aprobar" + }, + "reject": { + "message": "Rechazar" + }, + "approveAccessConfirmation": { + "message": "¿Estás seguro de que quieres aprobar el acceso de emergencia? Esto permitirá a $USER$ a $ACTION$ tu cuenta.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Acceso de emergencia aprobado." + }, + "emergencyRejected": { + "message": "Acceso de emergencia rechazado" + }, + "passwordResetFor": { + "message": "Restablecimiento de contraseña para $USER$. Ahora puede iniciar sesión usando la nueva contraseña.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Propiedad personal" + }, + "personalOwnershipPolicyDesc": { + "message": "Requiere que los usuarios guarden los elementos de la bóveda en una organización por eliminando la opción de propiedad personal." + }, + "personalOwnershipExemption": { + "message": "Los propietarios y administradores de la organización están exentos de esta política." + }, + "personalOwnershipSubmitError": { + "message": "Debido a una política empresarial, usted está restringido a guardar artículos en su bóveda personal. Cambie la opción Propiedad a una organización y elija de entre las colecciones disponibles." + }, + "disableSend": { + "message": "Desactivar envío" + }, + "disableSendPolicyDesc": { + "message": "No permitir a los usuarios crear o editar un Send de Bitwarden. Eliminar un Send existente todavía está permitido.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Los usuarios de la organización que pueden administrar las políticas de la organización están exentos de esta política." + }, + "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 empresarial, sólo puede eliminar un Send existente.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptions": { + "message": "Opciones del Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Establecer opciones para crear y editar los Send.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Los usuarios de la organización que pueden administrar las políticas de la organización están exentos del cumplimiento de esta política." + }, + "disableHideEmail": { + "message": "No permitir a los usuarios ocultar su dirección de correo electrónico a los destinatarios al crear o editar un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Las siguientes políticas de organización están actualmente en vigor:" + }, + "sendDisableHideEmailInEffect": { + "message": "Los usuarios no pueden ocultar su dirección de correo electrónico a los destinatarios al crear o editar un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Política modificada $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Precio del plan" + }, + "estimatedTax": { + "message": "Impuesto estimado" + }, + "custom": { + "message": "Personalizado" + }, + "customDesc": { + "message": "Permite un control más granulado de los permisos de usuario para configuraciones avanzadas." + }, + "permissions": { + "message": "Permisos" + }, + "accessEventLogs": { + "message": "Acceder a los registros de eventos" + }, + "accessImportExport": { + "message": "Acceso importar/exportar" + }, + "accessReports": { + "message": "Informes de acceso" + }, + "missingPermissions": { + "message": "No tiene los permisos necesarios para realizar esta acción." + }, + "manageAllCollections": { + "message": "Administrar todas las colecciones" + }, + "createNewCollections": { + "message": "Crear nuevas colecciones" + }, + "editAnyCollection": { + "message": "Editar cualquier colección" + }, + "deleteAnyCollection": { + "message": "Eliminar cualquier colección" + }, + "manageAssignedCollections": { + "message": "Administrar colecciones asignadas" + }, + "editAssignedCollections": { + "message": "Editar colecciones asignadas" + }, + "deleteAssignedCollections": { + "message": "Eliminar colecciones asignadas" + }, + "manageGroups": { + "message": "Administrar grupos" + }, + "managePolicies": { + "message": "Administrar políticas" + }, + "manageSso": { + "message": "Gestionar SSO" + }, + "manageUsers": { + "message": "Administrar usuarios" + }, + "manageResetPassword": { + "message": "Gestionar restablecimiento de contraseña" + }, + "disableRequiredError": { + "message": "Debe deshabilitar manualmente la política $POLICYNAME$ antes de que esta política pueda ser deshabilitada.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Una política de organización está afectando sus opciones de propiedad." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Una política de organización ha desactivado la importación de elementos en su caja fuerte personal." + }, + "personalOwnershipCheckboxDesc": { + "message": "Desactivar la propiedad personal para los usuarios de la organización" + }, + "textHiddenByDefault": { + "message": "Al acceder al Enviar, oculta el texto por defecto", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Un nombre amigable para describir este Envío.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "El texto que desea enviar." + }, + "sendFileDesc": { + "message": "El archivo que desea enviar." + }, + "copySendLinkOnSave": { + "message": "Copia el enlace para compartir este envío a mi portapapeles al guardar." + }, + "sendLinkLabel": { + "message": "Enviar enlace", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Enviar", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmite información sensible y temporal a otros de forma fácil y segura.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Aprende más sobre", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Compartir texto o archivos directamente con cualquiera." + }, + "sendVaultCardLearnMore": { + "message": "Aprende más", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "ver", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "cómo funciona", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "pruébalo ahora", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "registrarse", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "pruébalo hoy.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Usuario $USER_IDENTIFIER$ de Bitwarden compartió contigo", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "El usuario Bitwarden que creó este Send ha elegido ocultar su dirección de correo electrónico. Deberías asegurarte de que confías en la fuente de este enlace antes de usar o descargar su contenido.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "La fecha de caducidad proporcionada no es válida." + }, + "deletionDateIsInvalid": { + "message": "La fecha de eliminación proporcionada no es válida." + }, + "expirationDateAndTimeRequired": { + "message": "Se requiere una fecha y hora de caducidad." + }, + "deletionDateAndTimeRequired": { + "message": "Se requiere una fecha y hora de eliminación." + }, + "dateParsingError": { + "message": "Hubo un error al guardar las fechas de eliminación y caducidad." + }, + "webAuthnFallbackMsg": { + "message": "Para verificar su 2FA por favor haga clic en el botón de abajo." + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn no es compatible con este navegador." + }, + "webAuthnSuccess": { + "message": "¡WebAuthn verificado con éxito! Puede cerrar esta pestaña." + }, + "hintEqualsPassword": { + "message": "La pista de su contraseña no puede ser la misma que la contraseña." + }, + "enrollPasswordReset": { + "message": "Inscribirse en el restablecimiento de contraseña" + }, + "enrolledPasswordReset": { + "message": "Inscrito en el restablecimiento de contraseña" + }, + "withdrawPasswordReset": { + "message": "Retirar del restablecimiento de contraseña" + }, + "enrollPasswordResetSuccess": { + "message": "Inscripción exitosa!" + }, + "withdrawPasswordResetSuccess": { + "message": "¡Retiro exitoso!" + }, + "eventEnrollPasswordReset": { + "message": "Usuario $ID$ inscrito en la asistencia para restablecer contraseña.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "El usuario $ID$ se retiró de la asistencia para restablecer contraseña.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Contraseña maestra restablecida para el usuario $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Restablecer enlace de Inicio de Sesión Único para el usuario $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ ha iniciado sesión usando SSO por primera vez", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Restablecer contraseña" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceder cerrará la sesión de $NAME$ de su sesión actual, obligándoles a volver a iniciar sesión. Las sesiones activas en otros dispositivos pueden seguir estando activas durante hasta una hora.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "este usuario" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Una o más políticas de organización requieren la contraseña maestra para cumplir con los siguientes requisitos:" + }, + "resetPasswordSuccess": { + "message": "¡Contraseña restablecida!" + }, + "resetPasswordEnrollmentWarning": { + "message": "La inscripción permitirá a los administradores de la organización cambiar su contraseña maestra. ¿Está seguro de que desea inscribirse?" + }, + "resetPasswordPolicy": { + "message": "Restablecer contraseña maestra" + }, + "resetPasswordPolicyDescription": { + "message": "Permitir a los administradores de la organización restablecer la contraseña maestra de los usuarios de la organización." + }, + "resetPasswordPolicyWarning": { + "message": "Los usuarios de la organización tendrán que autoinscribirse o estar inscritos antes de que los administradores puedan restablecer su contraseña maestra." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscripción automática" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Todos los usuarios se inscribirán automáticamente en el restablecimiento de contraseña una vez que se acepte su invitación." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Los usuarios que ya están en la organización no estarán inscritos de forma retroactiva en el restablecimiento de contraseña. Necesitarán autoinscribirse antes de que los administradores puedan restablecer su contraseña maestra." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Inscribir nuevos usuarios automáticamente" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "La respuesta de las claves de la organización es nula" + }, + "resetPasswordDetailsError": { + "message": "Resetear los detalles de la contraseña es nulo" + }, + "trashCleanupWarning": { + "message": "Los artículos que han estado en la papelera de más de 30 días se eliminarán automáticamente." + }, + "trashCleanupWarningSelfHosted": { + "message": "Los elementos que han estado en la papelera durante un tiempo se eliminarán automáticamente." + }, + "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." + }, + "reinviteSelected": { + "message": "Reenviar invitaciones" + }, + "noSelectedUsersApplicable": { + "message": "Esta acción no es aplicable a ninguno de los usuarios seleccionados." + }, + "removeUsersWarning": { + "message": "¿Está seguro que desea eliminar los siguientes usuarios? El proceso puede tardar unos segundos en completarse y no puede interrumpirse o cancelarse." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Elige un tema para tu caja fuerte web." + }, + "themeSystem": { + "message": "Usar tema del sistema" + }, + "themeDark": { + "message": "Oscuro" + }, + "themeLight": { + "message": "Claro" + }, + "confirmSelected": { + "message": "Confirmar Seleccionado" + }, + "bulkConfirmStatus": { + "message": "Estado de acción masiva" + }, + "bulkConfirmMessage": { + "message": "Confirmada con éxito." + }, + "bulkReinviteMessage": { + "message": "Reinvitado con éxito." + }, + "bulkRemovedMessage": { + "message": "Eliminado con éxito" + }, + "bulkFilteredMessage": { + "message": "Excluido, no aplicable a esta acción." + }, + "fingerprint": { + "message": "Huella digital" + }, + "removeUsers": { + "message": "Eliminar usuarios" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Administrar usuarios también debe estar habilitado con el permiso de Gestionar Contraseña Restablecer" + }, + "setupProvider": { + "message": "Configurador del proveedor" + }, + "setupProviderLoginDesc": { + "message": "Ha sido invitado a configurar un nuevo proveedor. Para continuar, debe iniciar sesión o crear una nueva cuenta en Bitwarden." + }, + "setupProviderDesc": { + "message": "Por favor, introduzca los siguientes datos para completar la configuración del proveedor. Si tiene alguna duda, le rogamos se ponga en contacto con el servicio de atención al cliente." + }, + "providerName": { + "message": "Nombre del proveedor" + }, + "providerSetup": { + "message": "El proveedor ha sido configurado." + }, + "clients": { + "message": "Clientes" + }, + "providerAdmin": { + "message": "Administrador del Proveedor" + }, + "providerAdminDesc": { + "message": "El usuario de mayor rango que puede gestionar todos los aspectos de su proveedor, así como acceder y gestionar las organizaciones de los clientes." + }, + "serviceUser": { + "message": "Usuario del servicio" + }, + "serviceUserDesc": { + "message": "Los usuarios del servicio pueden acceder y gestionar todas las organizaciones de clientes." + }, + "providerInviteUserDesc": { + "message": "Invite a un nuevo usuario a su proveedor, introduciendo la dirección de correo electrónico con la que éste se registró en Bitwarden. Si no tiene una cuenta en Bitwarden, se le pedirá que creen una." + }, + "joinProvider": { + "message": "Únase al proveedor" + }, + "joinProviderDesc": { + "message": "Ha sido invitado a unirte al proveedor que aparece indicado en la parte superior. Para aceptar la invitación, debe iniciar sesión o crear una nueva cuenta de Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "No se puede aceptar la invitación. Pide a un administrador del proveedor que le envíe una nueva invitación." + }, + "providerInviteAcceptedDesc": { + "message": "Podrá acceder a este proveedor una vez que un administrador confirme su registro. Le enviaremos un correo electrónico cuando esto suceda." + }, + "providerUsersNeedConfirmed": { + "message": "Dispone de usuarios que han aceptado su invitación, pero que aún deben ser confirmados. Los usuarios no tendrán acceso al proveedor hasta que estén confirmados." + }, + "provider": { + "message": "Proveedor" + }, + "newClientOrganization": { + "message": "Nueva organización del cliente" + }, + "newClientOrganizationDesc": { + "message": "Cree una nueva organización de clientes que estará asociada a usted como proveedor. Usted poddrá acceder y gestionar esta organización." + }, + "addExistingOrganization": { + "message": "Añadir una organización existente" + }, + "myProvider": { + "message": "Mi proveedor" + }, + "addOrganizationConfirmation": { + "message": "¿Está seguro que quiere añadir $ORGANIZATION$ como cliente a $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "La organización se ha añadido con éxito al proveedor" + }, + "accessingUsingProvider": { + "message": "Acceso a la organización mediante el proveedor $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "El servicio está desactivado." + }, + "providerUpdated": { + "message": "Proveedor actualizado" + }, + "yourProviderIs": { + "message": "Su proveedor es $PROVIDER$. Ellos tienen privilegios administrativos y de facturación para su organización.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "La organización $ORGANIZATION$ ha sido separada de su proveedor.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "¿Está seguro que desea separar esta organización? La organización continuará existiendo pero ya no será administrada por el proveedor." + }, + "add": { + "message": "Añadir" + }, + "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 bóveda, debe actualizar su contraseña maestra 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 hasta una hora." + }, + "masterPasswordInvalidWarning": { + "message": "Su contraseña maestra no cumple con los requisitos de la política de esta organización. Para unirse a la organización, debe actualizar su contraseña maestra 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 hasta una hora." + }, + "maximumVaultTimeout": { + "message": "Tiempo de espera de la bóveda" + }, + "maximumVaultTimeoutDesc": { + "message": "Configurar un de tiempo de espera máximo para la bóveda de todos los usuarios." + }, + "maximumVaultTimeoutLabel": { + "message": "Tiempo de espera máximo de la bóveda" + }, + "invalidMaximumVaultTimeout": { + "message": "Tiempo de espera máximo de la bóveda inválido." + }, + "hours": { + "message": "Horas" + }, + "minutes": { + "message": "Minutos" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Las políticas de tu organización están afectando el tiempo de espera de tu bóveda. 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" + } + } + }, + "customVaultTimeout": { + "message": "Tiempo de espera personalizado para la bóveda" + }, + "vaultTimeoutToLarge": { + "message": "El tiempo de espera de tu bóveda excede la restricción establecida por tu organización." + }, + "disablePersonalVaultExport": { + "message": "Desactivar exportación de bóveda personal" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohíbe a los usuarios exportar sus datos privados de bóveda." + }, + "vaultExportDisabled": { + "message": "Exportación de bóveda desactivada" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una o más políticas de tu organización te impiden exportar tu bóveda personal." + }, + "selectType": { + "message": "Seleccionar tipo de SSO" + }, + "type": { + "message": "Tipo" + }, + "openIdConnectConfig": { + "message": "Configuración de OpenID Connect" + }, + "samlSpConfig": { + "message": "Configuración del proveedor de servicios SAML" + }, + "samlIdpConfig": { + "message": "Configuración del proveedor de identidad SAML" + }, + "callbackPath": { + "message": "Ruta de llamada" + }, + "signedOutCallbackPath": { + "message": "Ruta de devolución de llamada cerrada" + }, + "authority": { + "message": "Autoridad" + }, + "clientId": { + "message": "ID de cliente" + }, + "clientSecret": { + "message": "Secreto de cliente" + }, + "metadataAddress": { + "message": "Dirección de metadatos" + }, + "oidcRedirectBehavior": { + "message": "Comportamiento de la redirección de OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "El plan de Bitwarden para familias incluye" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Acceso Premium para hasta 6 usuarios" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "No se puede aceptar la oferta. Por favor, reenvíe el correo electrónico de la oferta desde su cuenta de empresa e inténtelo de nuevo." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "No se puede aceptar la oferta. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Aceptar Familias Bitwarden gratuito" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "La oferta de Familias Bitwarden gratis ha sido canjeada con éxito" + }, + "redeemed": { + "message": "Canjeado" + }, + "redeemedAccount": { + "message": "Cuenta canjeada" + }, + "revokeAccount": { + "message": "Revocar cuenta $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Reenviar correo electrónico de patrocinios a $NAME$ apadrinamiento", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Plan Familias Gratuito" + }, + "redeemNow": { + "message": "Canjear ahora" + }, + "recipient": { + "message": "Destinatario" + }, + "removeSponsorship": { + "message": "Eliminar patrocinio" + }, + "removeSponsorshipConfirmation": { + "message": "Después de eliminar un patrocinio, usted será responsable de esta suscripción y las facturas relacionadas. ¿Está seguro de que desea continuar?" + }, + "sponsorshipCreated": { + "message": "Patrocinio creado" + }, + "revoke": { + "message": "Revocar" + }, + "emailSent": { + "message": "Correo electrónico enviado" + }, + "revokeSponsorshipConfirmation": { + "message": "Después de eliminar esta cuenta, el propietario de la organización familiar será responsable de esta suscripción y de las facturas relacionadas. ¿Está seguro de que desea continuar?" + }, + "removeSponsorshipSuccess": { + "message": "Patrocinio eliminado" + }, + "ssoKeyConnectorUnavailable": { + "message": "No se puede conectar con el Conector de Claves, inténtelo de nuevo más tarde." + }, + "keyConnectorUrl": { + "message": "URL del Conector de Claves" + }, + "sendVerificationCode": { + "message": "Envía un código de verificación a su correo electrónico" + }, + "sendCode": { + "message": "Enviar código" + }, + "codeSent": { + "message": "Código enviado" + }, + "verificationCode": { + "message": "Código de verificación" + }, + "confirmIdentity": { + "message": "Confirme su identidad para continuar." + }, + "verificationCodeRequired": { + "message": "El código de verificación es requerido." + }, + "invalidVerificationCode": { + "message": "Código de verificación no válido" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ está usando SSO con un servidor de claves autoalojado. Una contraseña maestra ya no es necesaria para iniciar sesión para los miembros de esta organización.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Abandonar organización" + }, + "removeMasterPassword": { + "message": "Eliminar contraseña maestra" + }, + "removedMasterPassword": { + "message": "Contraseña maestra eliminada." + }, + "allowSso": { + "message": "Permitir autenticación SSO" + }, + "allowSsoDesc": { + "message": "Una vez configurado, su configuración será guardada y los miembros podrán autenticarse usando sus credenciales de proveedor de identidad." + }, + "ssoPolicyHelpStart": { + "message": "Activar el", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Política de autenticación SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "para requerir que todos los miembros inicien sesión con SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Se requieren políticas de autenticación de SSO y de una Única Organización para configurar el descifrado del Conector de Claves." + }, + "memberDecryptionOption": { + "message": "Opciones de descifrado de miembros" + }, + "memberDecryptionPassDesc": { + "message": "Una vez autenticados, los miembros descifrarán los datos de la bóveda usando sus contraseñas maestras." + }, + "keyConnector": { + "message": "Conector de claves" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Conecte el inicio de sesión con SSO a su servidor de claves de descifrado autoalojado. Usando esta opción, los miembros no necesitarán usar sus contraseñas maestras para descifrar datos de bóveda. Póngase en contacto con el soporte de Bitwarden para asistencia en la configuración." + }, + "keyConnectorPolicyRestriction": { + "message": "Está habilitado \"Iniciar sesión con SSO y el descifrado del Conectore de claves\" Esta política sólo se aplicará a propietarios y administradores." + }, + "enabledSso": { + "message": "SSO habilitado" + }, + "disabledSso": { + "message": "SSO desactivado" + }, + "enabledKeyConnector": { + "message": "Conector de claves habilitado" + }, + "disabledKeyConnector": { + "message": "Conector de claves desactivado" + }, + "keyConnectorWarning": { + "message": "Una vez que los miembros comiencen a usar el Conector de claves, su Organización no puede revertir a la descifración de Contraseña Maestra. Proceda sólo si está cómodamente desplegando y gestionando un servidor clave." + }, + "migratedKeyConnector": { + "message": "Migrado al Conector de Clave" + }, + "paymentSponsored": { + "message": "Por favor, proporcione un método de pago para asociar con la organización. No se preocupe, no le cobraremos nada a menos que elija características adicionales o que su patrocinio expire. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "La oferta de patrocinio ha caducado. Puede eliminar la organización creada para evitar un cargo al final de su prueba de 7 días. De lo contrario, puede cerrar esta petición para mantener la organización y asumir la responsabilidad de facturar." + }, + "newFamiliesOrganization": { + "message": "Nueva organización de familias" + }, + "acceptOffer": { + "message": "Aceptar oferta" + }, + "sponsoringOrg": { + "message": "Organización patrocinadora" + }, + "keyConnectorTest": { + "message": "Probar" + }, + "keyConnectorTestSuccess": { + "message": "¡Éxito! Conector de clave alcanzado." + }, + "keyConnectorTestFail": { + "message": "No se puede acceder al conector de clave. Compruebe la URL." + }, + "sponsorshipTokenHasExpired": { + "message": "La oferta de patrocinio expiró." + }, + "freeWithSponsorship": { + "message": "GRATIS con patrocinio" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Su sesión ha expirado. Por favor, vuelva e intente iniciar sesión de nuevo." + }, + "exportingPersonalVaultTitle": { + "message": "Exportando bóveda personal" + }, + "exportingOrganizationVaultTitle": { + "message": "Exportando bóveda de organización" + }, + "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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Solo se exportará la bóveda de la organización asociada con $ORGANIZATION$. No se incluirán objetos y elementos personales de otras organizaciones.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json new file mode 100644 index 0000000000..6e2aea1195 --- /dev/null +++ b/apps/web/src/locales/et/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Veebihoidla", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Mis tüüpi kirje see on?" + }, + "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" + }, + "newPassword": { + "message": "Uus Parool" + }, + "passphrase": { + "message": "Paroolifraas" + }, + "notes": { + "message": "Märkmed" + }, + "customFields": { + "message": "Kohandatud väljad" + }, + "cardholderName": { + "message": "Kaardiomaniku nimi" + }, + "number": { + "message": "Kaardi number" + }, + "brand": { + "message": "Väljastaja" + }, + "expiration": { + "message": "Aegumiskuupäev" + }, + "securityCode": { + "message": "Kaardi turvakood (CVV)" + }, + "identityName": { + "message": "Identiteedi nimi" + }, + "company": { + "message": "Ettevõte" + }, + "ssn": { + "message": "Isikukood" + }, + "passportNumber": { + "message": "Passi number" + }, + "licenseNumber": { + "message": "Litsentsi number" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefoninumber" + }, + "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" + }, + "title": { + "message": "Pealkiri" + }, + "mr": { + "message": "Hr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Pr" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Aegumise kuu" + }, + "expirationYear": { + "message": "Aegumise aasta" + }, + "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." + }, + "remove": { + "message": "Eemalda" + }, + "unassigned": { + "message": "Määramata" + }, + "noneFolder": { + "message": "Kaust puudub", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Kausta lisamine" + }, + "editFolder": { + "message": "Muuda kausta" + }, + "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": "Tavaline sobivuse tuvastamine", + "description": "Default URI match detection for auto-fill." + }, + "never": { + "message": "Ära tuvasta" + }, + "toggleVisibility": { + "message": "Näita sisu" + }, + "toggleCollapse": { + "message": "Ava", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Loo parool" + }, + "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." + }, + "save": { + "message": "Salvesta" + }, + "cancel": { + "message": "Tühista" + }, + "canceled": { + "message": "Tühistatud" + }, + "close": { + "message": "Sulge" + }, + "delete": { + "message": "Kustuta" + }, + "favorite": { + "message": "Lemmik" + }, + "unfavorite": { + "message": "Eemalda lemmikutest" + }, + "edit": { + "message": "Muuda" + }, + "searchCollection": { + "message": "Otsi kogumikku" + }, + "searchFolder": { + "message": "Otsi andmeid" + }, + "searchFavorites": { + "message": "Otsi lemmikute hulgast" + }, + "searchType": { + "message": "Otsingu tüüp", + "description": "Search item type" + }, + "searchVault": { + "message": "Otsi hoidlast" + }, + "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" + }, + "typeLoginPlural": { + "message": "Kontod" + }, + "typeCardPlural": { + "message": "Kaardid" + }, + "typeIdentityPlural": { + "message": "Identiteedid" + }, + "typeSecureNotePlural": { + "message": "Turvalised märkmed" + }, + "folders": { + "message": "Kaustad" + }, + "collections": { + "message": "Kogumikud" + }, + "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" + }, + "shared": { + "message": "Jagatud" + }, + "attachments": { + "message": "Manused" + }, + "select": { + "message": "Vali" + }, + "addItem": { + "message": "Lisa kirje" + }, + "editItem": { + "message": "Kirje muutmine" + }, + "viewItem": { + "message": "Kirje vaatamine" + }, + "ex": { + "message": "nt.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Muu" + }, + "share": { + "message": "Jaga" + }, + "moveToOrganization": { + "message": "Teisalda organisatsiooni" + }, + "valueCopied": { + "message": "$VALUE$ on kopeeritud", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopeeri kirje", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopeeri parool", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopeeri kasutajanimi", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopeeri number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopeeri turvakood", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopeeri URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Minu hoidla" + }, + "vault": { + "message": "Hoidla" + }, + "moveSelectedToOrg": { + "message": "Teisalda valitud organisatsiooni" + }, + "deleteSelected": { + "message": "Kustuta valitud" + }, + "moveSelected": { + "message": "Liiguta valitud" + }, + "selectAll": { + "message": "Vali kõik" + }, + "unselectAll": { + "message": "Tühista valik" + }, + "launch": { + "message": "Ava" + }, + "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." + }, + "addedItem": { + "message": "Kirje on lisatud" + }, + "editedItem": { + "message": "Kirje on muudetud" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ teisaldati $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Valitud kirjed teisaldati $ORGNAME$-le", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Kustuta kirje" + }, + "deleteFolder": { + "message": "Kustuta kaust" + }, + "deleteAttachment": { + "message": "Kustuta manus" + }, + "deleteItemConfirmation": { + "message": "Soovid tõesti selle kirje kustutada?" + }, + "deletedItem": { + "message": "Kirje on prügikasti teisaldatud" + }, + "deletedItems": { + "message": "Kirjed on prügikasti teisaldatud" + }, + "movedItems": { + "message": "Kirjed on teisaldatud" + }, + "overwritePasswordConfirmation": { + "message": "Oled kindel, et soovid olemas olevat parooli üle kirjutada?" + }, + "editedFolder": { + "message": "Kaust on muudetud" + }, + "addedFolder": { + "message": "Kaust on lisatud" + }, + "deleteFolderConfirmation": { + "message": "Oled kindel, et soovid seda kausta kustutada?" + }, + "deletedFolder": { + "message": "Kaust on kustutatud" + }, + "loggedOut": { + "message": "Välja logitud" + }, + "loginExpired": { + "message": "Sessioon on aegunud." + }, + "logOutConfirmation": { + "message": "Oled kindel, et soovid välja logida?" + }, + "logOut": { + "message": "Logi välja" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Jah" + }, + "no": { + "message": "Ei" + }, + "loginOrCreateNewAccount": { + "message": "Logi sisse või loo uus konto." + }, + "createAccount": { + "message": "Konto loomine" + }, + "logIn": { + "message": "Logi sisse" + }, + "submit": { + "message": "Kinnita" + }, + "emailAddressDesc": { + "message": "E-posti aadressi kasutatakse sisselogimiseks." + }, + "yourName": { + "message": "Sinu nimi" + }, + "yourNameDesc": { + "message": "Kuidas me sind kutsume?" + }, + "masterPass": { + "message": "Ülemparool" + }, + "masterPassDesc": { + "message": "Ülemparooliga 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)" + }, + "masterPassHintLabel": { + "message": "Ülemparooli vihje" + }, + "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! Saad nüüd sellesse sisse logida." + }, + "masterPassSent": { + "message": "Ülemparooli vihje saadeti sinu e-posti aadressile." + }, + "unexpectedError": { + "message": "Tekkis ootamatu viga." + }, + "emailAddress": { + "message": "E-posti aadress" + }, + "yourVaultIsLocked": { + "message": "Hoidla on lukus. Jätkamiseks sisesta ülemparool." + }, + "unlock": { + "message": "Lukusta lahti" + }, + "loggedInAsEmailOn": { + "message": "Sisse logitud kontosse $EMAIL$ aadressil $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Vale ülemparool" + }, + "lockNow": { + "message": "Lukusta paroolihoidla" + }, + "noItemsInList": { + "message": "Puuduvad kirjed, mida kuvada." + }, + "noCollectionsInList": { + "message": "Puuduvad kollektsioonid, mida kuvada." + }, + "noGroupsInList": { + "message": "Puuduvad grupid, mida kuvada." + }, + "noUsersInList": { + "message": "Puuduvad kasutajad, keda kuvada." + }, + "noEventsInList": { + "message": "Puuduvad sündmused, mida kuvada." + }, + "newOrganization": { + "message": "Uus organisatsioon" + }, + "noOrganizationsList": { + "message": "Sa ei kuulu ühessegi organisatsiooni. Organisatsioonid võimaldavad sul kirjeid turvaliselt teiste kasutajatega jagada." + }, + "versionNumber": { + "message": "Versioon $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 e-postile uus kinnituskood" + }, + "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." + }, + "loginUnavailable": { + "message": "Sisselogimine ei ole saadaval" + }, + "noTwoStepProviders": { + "message": "Sellel kontol on aktiveeritud kaheastmeline kinnitus. Siiski ei toeta konkreetne brauser ühtegi aktiveeritud kaheastmelise kinnitamise teenust." + }, + "noTwoStepProviders2": { + "message": "Palun kasuta ühilduvat brauserit (näiteks Chrome) ja/või lisa uus kaheastmelise teenuse pakkuja, mis töötab rohkemates brauserites (näiteks mõni autentimise rakendus)." + }, + "twoStepOptions": { + "message": "Kaheastmelise sisselogimise valikud" + }, + "recoveryCodeDesc": { + "message": "Sul ei ole ligipääsu ühelegi 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": "Kasuta autentimise rakendust (näiteks Authy või Google Authenticator), et kasutada sisselogimiseks ajal baseeruvat kinnituskoodi.", + "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, 5 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." + }, + "u2fDesc": { + "message": "Kasuta mistahes FIDO U2F toetavat turvalist võtit, et oma kontole ligi pääseda." + }, + "u2fTitle": { + "message": "FIDO U2F Turvaline võti" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Kasuta kontole ligipääsemiseks mistahes WebAuthn toetavat turvalist võtit." + }, + "webAuthnMigrated": { + "message": "(pärineb FIDO'lt)" + }, + "emailTitle": { + "message": "E-post" + }, + "emailDesc": { + "message": "Kinnituskoodid saadetakse e-postiga." + }, + "continue": { + "message": "Jätka" + }, + "organization": { + "message": "Organisatsioon" + }, + "organizations": { + "message": "Organisatsioon" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Vali organisatsioon, kuhu soovid seda kirjet teisaldada. Teisaldamisega saab kirje omanikuks organisatsioon. Pärast kirje teisaldamist ei ole sa enam selle otsene omanik." + }, + "collectionsDesc": { + "message": "Muuda kollektsioone, millega seda kirjet jagatakse. Seda kirjet näevad üksnes organisatsiooni kasutajad, kes omavad nendele kollektsioonidele ligipääsu." + }, + "deleteSelectedItemsDesc": { + "message": "Oled kustutamiseks valinud $COUNT$ kirjet. Oled kindel, et soovid kõik need kirjed kustutada?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Vali kaust, kuhu soovid need $COUNT$ kirjet liigutada.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Valisid $COUNT$ kirje(t). $MOVEABLE_COUNT$ kirje(t) saab teisaldada organisatsiooni, $NONMOVEABLE_COUNT$ ei saa.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Kinnituskood (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopeeri kinnituskood" + }, + "warning": { + "message": "Hoiatus" + }, + "confirmVaultExport": { + "message": "Hoidla eksportimise kinnitamine" + }, + "exportWarningDesc": { + "message": "Eksporditav fail on krüpteeringuta ja sisaldab hoidla sisu. 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." + }, + "export": { + "message": "Ekspordi" + }, + "exportVault": { + "message": "Hoidla sisu eksportimine" + }, + "fileFormat": { + "message": "Failivorming" + }, + "exportSuccess": { + "message": "Hoidla on eksporditud." + }, + "passwordGenerator": { + "message": "Parooli genereerimine" + }, + "minComplexityScore": { + "message": "Minimaalne keerulisuse skoor" + }, + "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" + }, + "regeneratePassword": { + "message": "Genereeri parool uuesti" + }, + "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" + }, + "passwordHistory": { + "message": "Paroolide ajalugu" + }, + "noPasswordsInList": { + "message": "Puuduvad paroolid, mida kuvada." + }, + "clear": { + "message": "Tühjenda", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Konto uuendatud" + }, + "changeEmail": { + "message": "E-posti aadressi muutmine" + }, + "changeEmailTwoFactorWarning": { + "message": "Jätkamisel muudetakse konto e-posti aadress. Pane tähele, et see ei muuda kaheastmeliseks kinnitamiseks kasutatavat e-posti aadressi. Selle e-posti aadressi muutmine on võimalik kaheastmelise kinnitamise seadetes." + }, + "newEmail": { + "message": "Uus e-posti aadress" + }, + "code": { + "message": "Kood" + }, + "changeEmailDesc": { + "message": "Kinnituskood on saadetud e-postile $EMAIL$. Kontrolli oma e-posti ning sisesta see kood allolevasse kasti, et e-posti aadressi muutmine lõpule viia.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Jätkates logitakse sind praegusest sessioonis välja, mistõttu pead kontosse uuesti sisse logima. Teised kontoga ühendatud seadmed võivad jääda sisselogituks kuni üheks tunniks." + }, + "emailChanged": { + "message": "E-post on muudetud" + }, + "logBackIn": { + "message": "Palun logi uuesti sisse." + }, + "logBackInOthersToo": { + "message": "Palun logi uuesti sisse. Kui kasutad teisi Bitwardeni rakendusi, pead ka nendes uuesti sisse logima." + }, + "changeMasterPassword": { + "message": "Muuda ülemparooli" + }, + "masterPasswordChanged": { + "message": "Ülemparool on muudetud" + }, + "currentMasterPass": { + "message": "Praegune ülemparool" + }, + "newMasterPass": { + "message": "Uus ülemparool" + }, + "confirmNewMasterPass": { + "message": "Kinnita uus ülemparool" + }, + "encKeySettings": { + "message": "Krüpteerimise võtme seaded" + }, + "kdfAlgorithm": { + "message": "KDF algoritm" + }, + "kdfIterations": { + "message": "KDF iteratsioonid" + }, + "kdfIterationsDesc": { + "message": "Suuremad KDF iteratsioonid aitavad ülemparooli paremini jõhkra jõu rünnete vastu kaitsta. Soovitame kasutada väärtust $VALUE$ või suuremat.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Seadistades KDF-i liiga pikaks, võib Bitwardenisse sisselogimisel (ja lahtilukustamisel) tekkida jõudlusprobleeme ja hangumisi. Seda eriti aeglasemate protsessoritega seadmetes. Soovitame kasutada pikkust ligikaudu $INCREMENT$ ja testida jõudlust kõikides oma seadmetes.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Muuda KDF-i" + }, + "encKeySettingsChanged": { + "message": "Krüpteerimise võtme seaded on muudetud" + }, + "dangerZone": { + "message": "Ohtlik tsoon" + }, + "dangerZoneDesc": { + "message": "Ettevaatust, neid toiminguid ei saa tagasi võtta!" + }, + "deauthorizeSessions": { + "message": "Sessioonide tühistamine" + }, + "deauthorizeSessionsDesc": { + "message": "Muretsed, et sinu kontosse on võõra seadme alt sisse logitud? Kasuta allolevat valikut, et kõikidest seadmetest välja logida. See võib olla kasulik näiteks juhtudel, kus oled kasutanud avalikku arvutit või salvestasid kogemata parooli seadmes, mis ei kuulu sinule. Samuti nullib see tegevus kõik varasemad kaheastmelise kinnitamise poolt meelde jäetud seadmed." + }, + "deauthorizeSessionsWarning": { + "message": "Jätkatest logitakse sind ka käimasolevast sessioonist välja, mistõttu pead kontosse uuesti sisse logima. Lisaks võidakse küsida kaheastmelist kinnitust, kui see on sisse lülitatud. Teised kontoga ühendatud seadmed võivad jääda sisselogituks kuni üheks tunniks." + }, + "sessionsDeauthorized": { + "message": "Kõikidest seadmetest on välja logitud" + }, + "purgeVault": { + "message": "Likvideeri Hoidla" + }, + "purgedOrganizationVault": { + "message": "Organisatsiooni hoidla on likvideeritud." + }, + "vaultAccessedByProvider": { + "message": "Teenuse osutaja vaatas hoidla sisu." + }, + "purgeVaultDesc": { + "message": "Jätkates kustutatakse kõik hoidlas olevad kirjed ja kaustad. Andmed, mis kuuluvad organisatsioonile, jäävad puutumata." + }, + "purgeOrgVaultDesc": { + "message": "Jätka allpool, et kõik organisatsiooni kirjed hoidlast likvideerida." + }, + "purgeVaultWarning": { + "message": "Hoidla likvideerimine on ühekordne tegevus. Seda ei saa tagasi võtta." + }, + "vaultPurged": { + "message": "Hoidla on likvideeritud." + }, + "deleteAccount": { + "message": "Kustuta konto" + }, + "deleteAccountDesc": { + "message": "Jätkates kustutatakse sinu konto ja kõik sellega seonduvad andmed." + }, + "deleteAccountWarning": { + "message": "Konto kustutamine on ühekordne tegevus. Seda ei saa tagasi võtta." + }, + "accountDeleted": { + "message": "Konto on kustutatud" + }, + "accountDeletedDesc": { + "message": "Konto on suletud ja kõik sellega seonduvad andmed on kustutatud." + }, + "myAccount": { + "message": "Minu konto" + }, + "tools": { + "message": "Tööriistad" + }, + "importData": { + "message": "Andmete importimine" + }, + "importError": { + "message": "Viga importimisel" + }, + "importErrorDesc": { + "message": "Andmete importimisel ilmnes tõrge. Paranda originaalfailis olevad vead (kuvatud all) ning proovi uuesti." + }, + "importSuccess": { + "message": "Andmed on edukalt hoidlasse imporditud." + }, + "importWarning": { + "message": "Impordid andmeid organisatsiooni $ORGANIZATION$. Imporditavaid andmeid võidakse jagada teiste organisatsiooni liikmetega. Soovid jätkata?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Andmed ei ole korrektse vorminguga. Palun kontrolli imporditavat faili ja proovi uuesti." + }, + "importNothingError": { + "message": "Midagi ei imporditud." + }, + "importEncKeyError": { + "message": "Eksporditud faili dekrüpteerimine nurjus. Sinu krüpteerimisvõti ei ühti selle võtmega, mida kasutati andmete eksportimisel." + }, + "selectFormat": { + "message": "Vali imporditava faili vorming" + }, + "selectImportFile": { + "message": "Vali imporditav fail" + }, + "orCopyPasteFileContents": { + "message": "või kopeeri/kleebi imporditava faili sisu" + }, + "instructionsFor": { + "message": "$NAME$ Kasutusjuhend", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Valikud" + }, + "optionsDesc": { + "message": "Siit leiad erinevad Veebihoidla kohandamise valikud." + }, + "optionsUpdated": { + "message": "Muudatused on rakendatud" + }, + "language": { + "message": "Keel" + }, + "languageDesc": { + "message": "Siin saab veebihoidla keelt muuta." + }, + "disableIcons": { + "message": "Lülita veebisaidi ikoonid välja" + }, + "disableIconsDesc": { + "message": "Veebisaidi ikoonid aitavad hoidlas olevaid kontosid paremini eristada." + }, + "enableGravatars": { + "message": "Luba Gravatarid", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Luba avatari pildid, mida laaditakse lehelt gravatar.com." + }, + "enableFullWidth": { + "message": "Lülita sisse veebihoidla laiem vaade", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "See valik muudab veebihoidla laiust selliselt, et see ulatuks üle terve brauseri." + }, + "default": { + "message": "Vaikimisi" + }, + "domainRules": { + "message": "Domeeni reeglid" + }, + "domainRulesDesc": { + "message": "Kui sul on erinevatel domeenidel samade andmetega kontod, võid need domeenid märkida \"võrdväärseteks\". \"Globaalsed\" domeenid on need, mille Bitwarden juba eelseadistanud on." + }, + "globalEqDomains": { + "message": "Globaalsed võrdväärsed domeenid" + }, + "customEqDomains": { + "message": "Teised võrdväärsed domeenid" + }, + "exclude": { + "message": "Jäta välja" + }, + "include": { + "message": "Kaasa" + }, + "customize": { + "message": "Kohanda" + }, + "newCustomDomain": { + "message": "Uus võrdväärne domeen" + }, + "newCustomDomainDesc": { + "message": "Sisesta domeenid, eraldades need komadega. Lubatud on ainult \"põhi\" domeenid. Ära sisesta alamdomeene. Nt: sisesta \"google.com\", aga mitte \"www.google.com\". Võid ka sisestada \"androidapp://package.name\", et seostada Androidi äpp mistahes veebilehtede domeenidega." + }, + "customDomainX": { + "message": "Kohandatud domeeni $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domeenid on uuendatud" + }, + "twoStepLogin": { + "message": "Kaheastmeline kinnitamine" + }, + "twoStepLoginDesc": { + "message": "Kaitse oma kontot, nõudes sisselogimisel lisakinnitust." + }, + "twoStepLoginOrganizationDesc": { + "message": "Nõua organisatsiooni liikmetelt kaheastmelist kinnitamist, seadistades taolise teenuse pakkujad organisatsiooni tasemel." + }, + "twoStepLoginRecoveryWarning": { + "message": "Kaheastmelise kinnitamine aktiveerimine võib luua olukorra, kus sul on võimatu oma Bitwardeni kontosse sisse logida. Näiteks kui kaotad oma nutiseadme. Taastamise kood võimaldab aga kontole ligi pääseda ka olukorras, kus kaheastmelist kinnitamist ei ole võimalik läbi viia. Sellistel juhtudel ei saa ka Bitwardeni klienditugi sinu kontole ligipääsu taastada. Selle tõttu soovitame taastekoodi välja printida ja seda turvalises kohas hoida." + }, + "viewRecoveryCode": { + "message": "Vaata taastamise koodi" + }, + "providers": { + "message": "Teenused", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Lülita sisse" + }, + "enabled": { + "message": "Sisselülitatud" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium versioon" + }, + "premiumRequired": { + "message": "Nõutav on Premium konto" + }, + "premiumRequiredDesc": { + "message": "Selle funktsiooni kasutamiseks on vajalik premium kontot omada." + }, + "youHavePremiumAccess": { + "message": "Sul on premium ligipääs" + }, + "alreadyPremiumFromOrg": { + "message": "Organisatsiooni kuulumise tõttu on sul juba juurdepääs premium funktsioonidele." + }, + "manage": { + "message": "Haldus" + }, + "disable": { + "message": "Keela" + }, + "twoStepLoginProviderEnabled": { + "message": "See kaheastmelise kinnitamise teenus on sinu kontol sisse lülitatud." + }, + "twoStepLoginAuthDesc": { + "message": "Kaheastmelise kinnitamise seadete muutmiseks pead sisestama ülemparooli." + }, + "twoStepAuthenticatorDesc": { + "message": "Järgnevad juhised aitavad sul kaheastmelise kinnituse äpi ära seadistada:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Laadi kaheastmelise kinnitamise äpp alla" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Vajad kaheastmelise kinnitamise äppi? Proovi mõnda järgnevatest" + }, + "iosDevices": { + "message": "iOS seadmed" + }, + "androidDevices": { + "message": "Android seadmed" + }, + "windowsDevices": { + "message": "Windows seadmed" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Need äpid on soovituslikud. Saad ka teisi autentimise äppe kasutada." + }, + "twoStepAuthenticatorScanCode": { + "message": "Skaneeri seda QR koodi oma autentimisrakendusega" + }, + "key": { + "message": "Võti" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Sisesta äpi kuvatav 6 kohaline kinnituskood" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Kui soovid lisada veel seadmeid, siis all on kuvatud QR kood (ehk võti), mida autentimisrakendusega kasutada saad." + }, + "twoStepDisableDesc": { + "message": "Oled kindel, et soovid selle kaheastmelise kinnitamise teenuse välja lülitada?" + }, + "twoStepDisabled": { + "message": "Kaheastmelise sisselogimise teenus on keelatud." + }, + "twoFactorYubikeyAdd": { + "message": "Lisa oma kontole uus YubiKey" + }, + "twoFactorYubikeyPlugIn": { + "message": "Sisesta YubiKey (NEO või 4. seeria) arvuti USB pessa." + }, + "twoFactorYubikeySelectKey": { + "message": "Vali esimene tühi YubiKey sisendväli allpool." + }, + "twoFactorYubikeyTouchButton": { + "message": "Puuduta YubiKey nuppu." + }, + "twoFactorYubikeySaveForm": { + "message": "Salvesta vorm." + }, + "twoFactorYubikeyWarning": { + "message": "Mõnede platvormi piirangute tõttu ei saa YubiKeysid kõikide Bitwardeni rakendustega kasutada. Võiksid kaaluda teise kaheastmelise kinnitamise aktiveerimist olukordadeks, kus YubiKeyde kasutamine ei ole võimalik. Toetatud platvormid:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Veebihoidla, töölaua rakendus, CLI ja kõikide brauserite laiendid seadmes, mille USB port võimaldab YubiKeyd kasutada." + }, + "twoFactorYubikeySupportMobile": { + "message": "NFC toega seadmel olevad äpid või USB port, mis võimaldab YubiKeyd kasutada." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F võtme $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn võti $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC tugi" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Üks minu võtmetest toetab NFC-d." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Kui üks sinu YubiKeydest (nt YubiKey Neo) toetab NFC-d, küsitakse sinult seda nutitelefonis, kui NFC olemasolu tuvastatakse." + }, + "yubikeysUpdated": { + "message": "YubiKeyd on uuendatud" + }, + "disableAllKeys": { + "message": "Blokeeri kõik Võtmed" + }, + "twoFactorDuoDesc": { + "message": "Sisesta oma Bitwardeni rakenduse informatsioon Duo admini paneelist." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integratsiooni võti" + }, + "twoFactorDuoSecretKey": { + "message": "Salajane võti" + }, + "twoFactorDuoApiHostname": { + "message": "API hostinimi" + }, + "twoFactorEmailDesc": { + "message": "Järgi allolevaid juhiseid, et võimaldada kaheastmeline kinnitamine e-posti teel:" + }, + "twoFactorEmailEnterEmail": { + "message": "Sisesta e-post, kuhu soovid kinnituskoode saada" + }, + "twoFactorEmailEnterCode": { + "message": "Sisesta e-postile saadetud 6 kohaline kinnituskood" + }, + "sendEmail": { + "message": "Saada e-kiri" + }, + "twoFactorU2fAdd": { + "message": "Lisa oma kontole FIDO U2F turvavõti" + }, + "removeU2fConfirmation": { + "message": "Oled kindel, et soovid selle turvavõtme eemaldada?" + }, + "twoFactorWebAuthnAdd": { + "message": "Lisa oma kontole WebAuthn turvavõti" + }, + "readKey": { + "message": "Loe võtit" + }, + "keyCompromised": { + "message": "Võti on ohus." + }, + "twoFactorU2fGiveName": { + "message": "Anna turvavõtmele lihtne nimi, et seda oleks lihtsam ära tunda." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Sisesta turvavõti arvuti USB pessa ning kliki \"Loe võtit\" nupul." + }, + "twoFactorU2fTouchButton": { + "message": "Kui turvavõtmel on nupp, siis vajuta seda." + }, + "twoFactorU2fSaveForm": { + "message": "Salvesta vorm." + }, + "twoFactorU2fWarning": { + "message": "Mõnede platvormi piirangute tõttu ei saa FIDO U2F-i kõikide Bitwardeni rakendustega kasutada. Võiksid kaaluda teise kaheastmelise kinnitamise aktiveerimist olukordadeks, kus FIDO U2F-i ei saa kasutada. Toetatud platvormid:" + }, + "twoFactorU2fSupportWeb": { + "message": "Veebihoidla- ja brauseri laiendused laua- ja sülearvutis, kus on U2F toega brauser (Chrome, Opera, Vivaldi või Firefox, kus on FIDO U2F sisse lülitatud)." + }, + "twoFactorU2fWaiting": { + "message": "Ootame, kuni puudutad turvavõtmel olevat nuppu" + }, + "twoFactorU2fClickSave": { + "message": "Kliki all olevale \"Salvesta\" nupule, et kaheastmeline kinnitamine läbi selle turvavõtme sisse lülitada." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Turvavõtme lugemisel tekkis tõrge. Proovi uuesti." + }, + "twoFactorWebAuthnWarning": { + "message": "Mõnede platvormi piirangute tõttu ei saa WebAuthn'i kõikide Bitwardeni rakendustega kasutada. Võiksid kaaluda teise kaheastmelise kinnitamise aktiveerimist olukordadeks, kus WebAuthn'i ei saa kasutada. Toetatud platvormid:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Veebihoidla- ja brauseri laiendused laua- ja sülearvutis, kus on WebAuthn toega brauser (Chrome, Opera, Vivaldi või Firefox, kus on FIDO U2F sisse lülitatud)." + }, + "twoFactorRecoveryYourCode": { + "message": "Bitwardeni kaheastmelise logimise varukood" + }, + "twoFactorRecoveryNoCode": { + "message": "Sa ei ole veel ühtegi kaheastmelise kinnituse teenust sisse lülitanud. Tule siia lehele pärast kaheastmelise kinnitamise sisselülitamist tagasi. Siis näed siin ka varukoodi, millega saad hädakorral kaheastmelise kinnitamise välja lülitada." + }, + "printCode": { + "message": "Prindi kood", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Raportid" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Ebaturvalise veebilehtede raport" + }, + "unsecuredWebsitesReportDesc": { + "message": "Ebaturvalise (http://) veebilehte kasutamine võib olla ohtlik. Kui veebileht seda võimaldab, siis soovitame tungivalt kasutada https:// versioon. Nii on ühendus ja saadetavad andmed krüpteeringuga kaitstud. " + }, + "unsecuredWebsitesFound": { + "message": "Leiti ebaturvalisi veebilehti" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Leidsime hoidlast $COUNT$ ebaturvalist veebilehte.\nKui võimalik, soovitame nende veebilehtede alguse tungivalt https:// -ks muuta. ", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Hoidlas olevad kirjed ei kasuta ebaturvalisi URI-sid." + }, + "inactive2faReport": { + "message": "Sisselülitamata 2FA raport" + }, + "inactive2faReportDesc": { + "message": "Kaheastmeline kinnitamine (2FA) on tähtis turvalisust lisav seadistus, mis aitab kontoandmeid kaitsta. Kui veebileht seda võimaldab, soovitame tungivalt kaheastmelise kinnituse sisse lülitada." + }, + "inactive2faFound": { + "message": "Kaheastmelise kinnituseta kontod" + }, + "inactive2faFoundDesc": { + "message": "Leidsime sinu hoidlast $COUNT$ veebilehte, kus kaheastmeline kinnitamine ei pruugi olla sisselülitatud (kontrolliks kasutatakse twofactorauth.org). Nende kontode paremaks kaitsmiseks soovitame kaheastmelise kinnitamise sisse lülitada.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Hoidlast ei leitud kontosid, kus kaheastmelise kinnitamise seadistus on välja lülitatud." + }, + "instructions": { + "message": "Juhised" + }, + "exposedPasswordsReport": { + "message": "Lekkinud paroolide raport" + }, + "exposedPasswordsReportDesc": { + "message": "Lekkinud paroolid on paroolid, mis pärinevad andmeleketest. Neid paroole võidakse müüa tumeveebis ning samuti võidakse nende kaudu ligi pääseda sinu teistesse kontodesse." + }, + "exposedPasswordsFound": { + "message": "Avastatud on lekkinud paroole" + }, + "exposedPasswordsFoundDesc": { + "message": "Leidsime sinu hoidlast $COUNT$ kirjet, millede paroolid on teadaolevate andmelekete tagajärjel avalikustatud. Soovitame tungivalt need paroolid ära vahetada.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Hoidlast ei leitud kirjeid, mis oleksid teadaolevate andmelekete kaudu avalikustatud." + }, + "checkExposedPasswords": { + "message": "Kontrolli lekkinud paroole" + }, + "exposedXTimes": { + "message": "Lekkinud $COUNT$ korda", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Nõrkade paroolide raport" + }, + "weakPasswordsReportDesc": { + "message": "Nõrgad paroolid on häkkerite poolt vägagi lihtsasti lahtimurtavad, sest selleks kasutatakse automatiseeritud tööriistu. Bitwardeni parooli genereerija aitab sul luua paroole, mida on märksa keerulisem lahti murda." + }, + "weakPasswordsFound": { + "message": "Avastatud on nõrgad paroolid" + }, + "weakPasswordsFoundDesc": { + "message": "Leidsime sinu hoidlast $COUNT$ kirjet, milledel on nõrgad paroolid. Soovitame tungivalt need paroolid tugevamate vastu välja vahetada.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Hoidlas olevatest kirjetest ei leitud nõrku paroole." + }, + "reusedPasswordsReport": { + "message": "Korduvate paroolide raport" + }, + "reusedPasswordsReportDesc": { + "message": "Kui sinu poolt kasutatav teenus või veebileht langeb rünnaku ohvriks, võib samasuguse parooli kasutamine anda häkkeritele ligipääsu sinu teistesse kasutajakontodesse. Soovitame tungivalt igas teenuses või kasutajakontos unikaalset parooli kasutada." + }, + "reusedPasswordsFound": { + "message": "Leiti korduvalt kasutatud paroole" + }, + "reusedPasswordsFoundDesc": { + "message": "Leidsime sinu hoidlast $COUNT$ parooli, mis on kasutusel rohkem kui üks kord Soovitame need paroolid unikaalseteks muuta.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Hoidlas puuduvad paroolid, mida kasutatakse rohkem kui üks kord." + }, + "reusedXTimes": { + "message": "Kasutusel $COUNT$ korral.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Andmelekke raport" + }, + "breachDesc": { + "message": "Andmeleke on intsident, kus sinu kasutajakonto andmed on lekkinud või häkkerite poolt varastatud. Soovitame tungivalt üle kontrollida lekkinud andmed (e-posti aadress, paroolid, krediitkaardi andmed jne) ning võtta kasutusele meetmed nende turvamiseks. Näiteks paroolivahetus." + }, + "breachCheckUsernameEmail": { + "message": "Kontrollitakse mistahes kasutajanimesid või e-posti aadresse, mida kontodes kasutatakse." + }, + "checkBreaches": { + "message": "Kontrolli lekkeid" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ ei leitud ühestki teadaolevast andmelekkest.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Head uudised!", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ esineb kokku $COUNT$ erinevas andmelekkes.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Lekkinud kontod" + }, + "compromisedData": { + "message": "Ohus olevad andmed" + }, + "website": { + "message": "Veebileht" + }, + "affectedUsers": { + "message": "Mõjutatud kasutajad" + }, + "breachOccurred": { + "message": "Leke toimus" + }, + "breachReported": { + "message": "Lekkest teatati" + }, + "reportError": { + "message": "Raporti laadimisel ilmes viga. Proovi uuesti" + }, + "billing": { + "message": "Maksmine" + }, + "accountCredit": { + "message": "Konto krediit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Kontojääk", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Krediidi lisamine", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Summa", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Lisatav krediit ilmub nähtavale pärast makse kinnitamist. Mõned maksemeetodid võivad olla aeglasemad ning nende kinnitamine võib võtta natukene aega." + }, + "makeSureEnoughCredit": { + "message": "Veendu, et kontol on selle ostu tegemiseks piisavalt krediiti. Ebapiisava krediidi puhul võetakse puuduolev summa teiselt (vaike) maksemeetodilt. Kontole saab krediiti lisada \"Maksmine\" menüü alt." + }, + "creditAppliedDesc": { + "message": "Konto krediiti saab kasutada maksete tegemiseks. Uue arve laekumisel kasutatakse selle tasumiseks esmajärjekorras kontol olevat krediiti." + }, + "goPremium": { + "message": "Hangi Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Oled nüüd Premium konto omanik." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Muuda oma konto premium kontoks ning saa osa paljudest lisahüvedest, mis sellega kaasnevad." + }, + "premiumSignUpStorage": { + "message": "1 GB ulatuses krüpteeritud salvestusruum." + }, + "premiumSignUpTwoStep": { + "message": "Lisavõimalused kaheastmeliseks kinnitamiseks, näiteks YubiKey, FIDO U2F ja Duo." + }, + "premiumSignUpEmergency": { + "message": "Hädaolukorra ligipääs" + }, + "premiumSignUpReports": { + "message": "Paroolide seisukorra ülevaade ja andmelekete raportid aitavad hoidla sisu turvalisena hoida." + }, + "premiumSignUpTotp": { + "message": "TOTP kinnituskoodide (2FA) genereerija hoidlas olevatele kasutajakontodele." + }, + "premiumSignUpSupport": { + "message": "Kiirem klienditugi." + }, + "premiumSignUpFuture": { + "message": "Kõik tulevased premium funktsioonid - tasuta!" + }, + "premiumPrice": { + "message": "Kõik see ainult $PRICE$ / aastas!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Lisad" + }, + "premiumAccess": { + "message": "Premium ligipääs" + }, + "premiumAccessDesc": { + "message": "Saad kõikidele organisatsiooni liikmetele anda ligipääsu premium funktsioonidele - hinnaga $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Lisaruum (GB)" + }, + "additionalStorageGbDesc": { + "message": "# lisa GB" + }, + "additionalStorageIntervalDesc": { + "message": "Sul on kasutada $SIZE$ krüpteeritud failiruumi. Soovi korral saad osta lisaruumi hinnaga $PRICE$ GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Kokkuvõte" + }, + "total": { + "message": "Kokku" + }, + "year": { + "message": "aasta" + }, + "month": { + "message": "kuu" + }, + "monthAbbr": { + "message": "kuu", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Makse sooritatakse kohe pärast tellimuse esitamist. Järgmine makse toimub aasta pärast. Tellimust on võimalik igal ajal tühistada." + }, + "paymentCharged": { + "message": "Esimene makse sooritatakse kohe pärast tellimuse esitamist. Järgmine makse toimub iga $INTERVAL$. Tellimust on võimalik igal ajal tühistada.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Valitud pakett sisaldab 7 päevast prooviperioodi. Krediitkaardilt ei võeta raha enne, kui prooviperiood läbi saab. Väljatoodud summa debiteeritakse iga $INTERVAL$. Tellimust on võimalik igal ajal tühistada." + }, + "paymentInformation": { + "message": "Maksemeetod" + }, + "billingInformation": { + "message": "Arveldusandmed" + }, + "creditCard": { + "message": "Krediitkaart" + }, + "paypalClickSubmit": { + "message": "Kliki PayPali nupul. Seejärel logi oma PayPali kontosse sisse ning kliki jätkamiseks \"Submit/Saada\" nupul." + }, + "cancelSubscription": { + "message": "Tühista tellimus" + }, + "subscriptionCanceled": { + "message": "Tellimus on tühistatud." + }, + "pendingCancellation": { + "message": "Tühistamise ootel" + }, + "subscriptionPendingCanceled": { + "message": "Tellimus on märgitud tühistatuks. Tellimus tühistatakse lõplikult käimasoleva arveperioodi lõpus." + }, + "reinstateSubscription": { + "message": "Tellimuse uuesti aktiveerimine" + }, + "reinstateConfirmation": { + "message": "Oled kindel, et soovid tühistamise tagasi võtta ja tellimuse uuesti aktiveerida?" + }, + "reinstated": { + "message": "Tellimus on uuesti aktiveeritud." + }, + "cancelConfirmation": { + "message": "Oled kindel, et soovid tellimuse tühistada? Kaotad sellega arveperioodi lõpus kõik tellimisega kaasnevad eelised." + }, + "canceledSubscription": { + "message": "Tellimus on tühistatud." + }, + "neverExpires": { + "message": "Ei aegu kunagi" + }, + "status": { + "message": "Olek" + }, + "nextCharge": { + "message": "Järgmine makse" + }, + "details": { + "message": "Andmed" + }, + "downloadLicense": { + "message": "Laadi litsents alla" + }, + "updateLicense": { + "message": "Uuenda litsentsi" + }, + "updatedLicense": { + "message": "Litsents on uuendatud" + }, + "manageSubscription": { + "message": "Tellimuse haldamine" + }, + "storage": { + "message": "Salvestusruum" + }, + "addStorage": { + "message": "Lisa ruumi" + }, + "removeStorage": { + "message": "Vähenda salvestusruumi" + }, + "subscriptionStorage": { + "message": "Sinu tellimus lubab kasutada maksimaalselt $MAX_STORAGE$ GB krüpteeritud salvestusruumi. Praegu on kasutusel $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Makseviis" + }, + "noPaymentMethod": { + "message": "Makseviisid puuduvad." + }, + "addPaymentMethod": { + "message": "Lisa makseviis" + }, + "changePaymentMethod": { + "message": "Muuda makseviisi" + }, + "invoices": { + "message": "Arved" + }, + "noInvoices": { + "message": "Arved puuduvad." + }, + "paid": { + "message": "Makstud", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Tasumata", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Tehingud", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Tehingud puuduvad." + }, + "chargeNoun": { + "message": "Makse", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Tagasimakse", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Mistahes maksed ilmuvad väljavõttes nimega $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Lisatav GB hulk" + }, + "gbStorageRemove": { + "message": "Eemaldatav GB hulk" + }, + "storageAddNote": { + "message": "Salvestusruumi suurendamisel võetakse kehtiva maksemeetodi vahendusel koheselt selle eest ka tasu. Esimene makse tehakse proportsionaalselt koos järelejäänud summaga, mis sel arveldusperioodil tasuda tuleb." + }, + "storageRemoveNote": { + "message": "Salvestusmahu vähendamisel arvestatakse järelejäänud summa järgmisest maksest krediidina maha." + }, + "adjustedStorage": { + "message": "Kohandati $AMOUNT$ GB salvestusruumi.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Võta klienditoega ühendust" + }, + "updatedPaymentMethod": { + "message": "Maksemeetod on muudetud." + }, + "purchasePremium": { + "message": "Osta Premium" + }, + "licenseFile": { + "message": "Litsentsifail" + }, + "licenseFileDesc": { + "message": "Litsentsi nimi on sarnane $FILE_NAME$-le", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Muutmaks oma konto premiumiks, pead üles laadima kehtiva litsentsifaili." + }, + "uploadLicenseFileOrg": { + "message": "Loomaks asutusesiseseselt majutatud organisatsiooni, pead üles laadima kehtiva litsentsifaili." + }, + "accountEmailMustBeVerified": { + "message": "Vajalik on konto e-posti aadressi kinnitamine." + }, + "newOrganizationDesc": { + "message": "Organisatsioonid võimaldavad hoidla sisu osaliselt või täielikult jagada. Lisaks on võimalik kõiki kasutajaid liigitada näiteks perekonda, väiksesse meeskonda või suurde ettevõttesse." + }, + "generalInformation": { + "message": "Üldine Informatsioon" + }, + "organizationName": { + "message": "Organisatsiooni nimi" + }, + "accountOwnedBusiness": { + "message": "Seda kontot omab ettevõte." + }, + "billingEmail": { + "message": "Arve saaja e-posti aadress" + }, + "businessName": { + "message": "Ettevõtte nimi" + }, + "chooseYourPlan": { + "message": "Vali pakett" + }, + "users": { + "message": "Kasutajad" + }, + "userSeats": { + "message": "Kasutajad" + }, + "additionalUserSeats": { + "message": "Lisakasutajad" + }, + "userSeatsDesc": { + "message": "# kasutajaid" + }, + "userSeatsAdditionalDesc": { + "message": "Sinu pakett sisaldab $BASE_SEATS$ kasutajat. Soovi korral saad lisada kasutajaid juurde hinnaga $SEAT_PRICE$ kasutaja / kuus.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Vali vajalik arv kasutajaid. Neid on võimalik iga kell juurde lisada või eemaldada." + }, + "planNameFree": { + "message": "Tasuta", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Testimiseks ja isiklikuks kasutamiseks, jagamaks $COUNT$ teise Bitwardeni kasutajaga.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Perekond" + }, + "planDescFamilies": { + "message": "Isiklikuks kasutamiseks, jagamaks sõprade ja perega." + }, + "planNameTeams": { + "message": "Meeskond" + }, + "planDescTeams": { + "message": "Ettevõtetele ja teistele meeskondadele ja organisatsioonidele." + }, + "planNameEnterprise": { + "message": "Suurettevõte" + }, + "planDescEnterprise": { + "message": "Suurtele ettevõtetele ja organisatsioonidele." + }, + "freeForever": { + "message": "Igavesti tasuta" + }, + "includesXUsers": { + "message": "sisaldab $COUNT$ kasutajat", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Lisakasutajad" + }, + "costPerUser": { + "message": "$COST$ kasutaja kohta", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limiit $COUNT$ kasutajat (sh sina)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limiit $COUNT$ kollektsiooni", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Lisa ja jaga kuni $COUNT$ kasutajaga", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Lisa ja jaga kirjeid piiramatul hulgal kasutajatega" + }, + "createUnlimitedCollections": { + "message": "Loo piiramatul hulgal kollektsioone" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ ulatuses krüpteeritud salvestusruumi", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Ise majutamise võimalus (valikuline)" + }, + "usersGetPremium": { + "message": "Liikmed saavad automaatse juurdepääsu premium funktsioonidele" + }, + "controlAccessWithGroups": { + "message": "Halda gruppide abil kasutajate ligipääsu õigusi" + }, + "syncUsersFromDirectory": { + "message": "Sünkroniseeri kasutajaid ja gruppe kataloogist" + }, + "trackAuditLogs": { + "message": "Jälgi kasutaja tegevusi auditi logidega" + }, + "enforce2faDuo": { + "message": "Jõusta 2FA Duo-ga" + }, + "priorityCustomerSupport": { + "message": "Kiirem klienditugi" + }, + "xDayFreeTrial": { + "message": "$COUNT$ päevane prooviversioon, mida saab iga kell tühistada", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Igakuiselt" + }, + "annually": { + "message": "Tasumine aasta kaupa" + }, + "basePrice": { + "message": "Baashind" + }, + "organizationCreated": { + "message": "Organisatsioon on loodud" + }, + "organizationReadyToGo": { + "message": "Uus organisatsioon on kasutamiseks valmis!" + }, + "organizationUpgraded": { + "message": "Organisatsioon on täiendatud." + }, + "leave": { + "message": "Lahku" + }, + "leaveOrganizationConfirmation": { + "message": "Kas oled kindel, et soovid sellest organisatsioonist lahkuda?" + }, + "leftOrganization": { + "message": "Oled organisatsioonist lahkunud." + }, + "defaultCollection": { + "message": "Vaikekogumik" + }, + "getHelp": { + "message": "Klienditugi" + }, + "getApps": { + "message": "Hangi rakendused" + }, + "loggedInAs": { + "message": "Sisse logitud kui" + }, + "eventLogs": { + "message": "Sündmuste logid" + }, + "people": { + "message": "Liikmed" + }, + "policies": { + "message": "Poliitikad" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Muuda poliitikat" + }, + "groups": { + "message": "Grupid" + }, + "newGroup": { + "message": "Uus grupp" + }, + "addGroup": { + "message": "Lisa grupp" + }, + "editGroup": { + "message": "Muuda gruppi" + }, + "deleteGroupConfirmation": { + "message": "Tahad kindlasti selle grupi kustutada?" + }, + "removeUserConfirmation": { + "message": "Tahad kindlasti selle kasutaja eemaldada?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "Väline ID" + }, + "externalIdDesc": { + "message": "Välist Id-d kasutatakse viitena või näiteks selleks, et siduda need ressursid välise süsteemiga, nagu näites kasutaja kataloog." + }, + "accessControl": { + "message": "Ligipääsu haldamine" + }, + "groupAccessAllItems": { + "message": "See grupp pääseb ligi ja saab muuta kõiki kirjeid." + }, + "groupAccessSelectedCollections": { + "message": "See grupp pääseb ligi ainult valitud kirjetele." + }, + "readOnly": { + "message": "Saab ainult lugeda" + }, + "newCollection": { + "message": "Uus kogumik" + }, + "addCollection": { + "message": "Lisa kogumik" + }, + "editCollection": { + "message": "Muuda kogumikku" + }, + "deleteCollectionConfirmation": { + "message": "Oled kindel, et soovid selle kogumiku kustutada?" + }, + "editUser": { + "message": "Kasutaja muutmine" + }, + "inviteUser": { + "message": "Kutsu kasutaja" + }, + "inviteUserDesc": { + "message": "Kutsu organisatsiooni uusi kasutajaid, sisestades alla nende Bitwardeni konto e-posti aadressid. Kui neil ei ole veel Bitwardeni kontot, pakutakse neile võimalus see luua." + }, + "inviteMultipleEmailDesc": { + "message": "Saad kutsuda kuni $COUNT$ kasutajat. Eralda nende e-posti aadressid komaga.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Sellel kasutajal on kaheastmeline kinnitamine sisse lülitatud." + }, + "userAccessAllItems": { + "message": "See kasutaja pääseb ligi ja saab muuta kõiki kirjeid." + }, + "userAccessSelectedCollections": { + "message": "See kasutaja pääseb ligi ja saab muuta ainult valitud kollektsioone." + }, + "search": { + "message": "Otsi" + }, + "invited": { + "message": "Kutsutud" + }, + "accepted": { + "message": "Nõustunud" + }, + "confirmed": { + "message": "Kinnitatud" + }, + "clientOwnerEmail": { + "message": "Kliendist omaniku e-post" + }, + "owner": { + "message": "Omanik" + }, + "ownerDesc": { + "message": "Kõige suurema ligipääsuga kasutaja, kes saab hallata kõike organisatsiooniga seonduvat." + }, + "clientOwnerDesc": { + "message": "See kasutaja peaks olema teenuse osutajast erinev. Kui teenuse osutaja ei kuulu enam organisatsiooni, jääb see kasutaja organisatsiooni omanikuks." + }, + "admin": { + "message": "Administraator" + }, + "adminDesc": { + "message": " Administraatorid pääsevad ligi ja haldavad kõiki organisatsiooni kirjeid, kollektsioone ja kasutajaid." + }, + "user": { + "message": "Kasutaja" + }, + "userDesc": { + "message": "Tavaline kasutaja, kel on ligipääsu organisatsiooni kirjetele." + }, + "manager": { + "message": "Haldaja" + }, + "managerDesc": { + "message": "Administraatorid pääsevad ligi ja saavad hallata organisatsiooni poolt määratud kollektsioone." + }, + "all": { + "message": "Kõik" + }, + "refresh": { + "message": "Värskenda" + }, + "timestamp": { + "message": "Ajatempel" + }, + "event": { + "message": "Sündmus" + }, + "unknown": { + "message": "Tundmatu" + }, + "loadMore": { + "message": "Laadi veel" + }, + "mobile": { + "message": "Mobiil", + "description": "Mobile app" + }, + "extension": { + "message": "Laiendus", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Töölaud", + "description": "Desktop app" + }, + "webVault": { + "message": "Veebihoidla" + }, + "loggedIn": { + "message": "Logis sisse." + }, + "changedPassword": { + "message": "Muuda konto parooli." + }, + "enabledUpdated2fa": { + "message": "Lülitasime sisse/uuendasime kaheastmelist kinnitamist." + }, + "disabled2fa": { + "message": "Keela kaheastmeline kinnitamine." + }, + "recovered2fa": { + "message": "Konto on taastatud kaheastmelisest kinnitamisest." + }, + "failedLogin": { + "message": "Sisselogimine nurjus vale parooli tõttu." + }, + "failedLogin2fa": { + "message": "Sisselogimine nurjus vale kaheastmelise kinnituse tõttu." + }, + "exportedVault": { + "message": "Eksportis hoidla." + }, + "exportedOrganizationVault": { + "message": "Eksportis organisatsiooni hoidla." + }, + "editedOrgSettings": { + "message": "Organisatsiooni seaded on muudetud." + }, + "createdItemId": { + "message": "Lõi kirje $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Muutis kirjet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Kustutas kirje $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Kirje $ID$ on teisaldatud organisatsiooni.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Vaatas kirjet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Vaatas kirje $ID$ parooli.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Vaatas kirje $ID$ peidetud välja.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Vaatas kirje $ID$ turvakoodi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Kopeeris kirje $ID$ parooli.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Kopeeris kirje $ID$ peidetud välja.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kopeeris kirje $ID$ turvakoodi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Sisestas kirje $ID$ automaatselt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Lõi kollektsiooni $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Muutis kollektsiooni $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Kustutas kollektsiooni $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Muutis poliitikat $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Lõi grupi $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Muutis gruppi $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Kustutas grupi $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Kasutaja $ID$ on eemaldatud.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Lisas kirjele $ID$ manuse.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Kustutas kirje $ID$ manuse.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Muutis kirje $ID$ kollektsioone.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Kutsus kasutaja $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Kinnitas kasutaja $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Muutis kasutajat $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Muutis kasutaja $ID$ gruppe.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Kasutaja $ID$ SSO on eemaldatud.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Lõi organisatsiooni $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Lisas organisatsiooni $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Eemaldas organisatsiooni $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Vaatas organisatsiooni $ID$ hoidlat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Seade" + }, + "view": { + "message": "Vaata" + }, + "invalidDateRange": { + "message": "Vale andmevahemik." + }, + "errorOccurred": { + "message": "Ilmnes viga." + }, + "userAccess": { + "message": "Kasutaja ligipääs" + }, + "userType": { + "message": "Kasutaja tüüp" + }, + "groupAccess": { + "message": "Grupi ligipääs" + }, + "groupAccessUserDesc": { + "message": "Muuda gruppe, kuhu see kasutaja kuulub." + }, + "invitedUsers": { + "message": "Kutse on saadetud." + }, + "resendInvitation": { + "message": "Saada kutse uuesti" + }, + "resendEmail": { + "message": "Saada e-kiri uuesti" + }, + "hasBeenReinvited": { + "message": "$USER$ on uuesti kutsutud.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Kinnita" + }, + "confirmUser": { + "message": "Kinnita kasutaja" + }, + "hasBeenConfirmed": { + "message": "Kasutaja $USER$ on kinnitatud.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Kasutajate kinnitamine" + }, + "usersNeedConfirmed": { + "message": "Osad kasutajad on küll organisatsiooniga liitunud, aga vajavad veel eraldi kinnitamist. Kasutajad ei pääse organisatsiooni kirjetele ligi enne, kui nad on kinnitatud." + }, + "startDate": { + "message": "Alguskuupäev" + }, + "endDate": { + "message": "Lõpukuupäev" + }, + "verifyEmail": { + "message": "E-posti aadressi kinnitamine" + }, + "verifyEmailDesc": { + "message": "Kõikide funktsioonide kasutamiseks pead oma konto e-posti aadressi kinnitama." + }, + "verifyEmailFirst": { + "message": "Esmalt pead kinnitama konto e-poesti aadressi." + }, + "checkInboxForVerification": { + "message": "E-posti aadressile saadeti kinnituslink." + }, + "emailVerified": { + "message": "E-posti aadress on kinnitatud." + }, + "emailVerifiedFailed": { + "message": "E-posti kinnitamine nurjus. Proovi uut kinnituskirja saata." + }, + "emailVerificationRequired": { + "message": "Vajalik on e-posti kinnitamine" + }, + "emailVerificationRequiredDesc": { + "message": "Enne selle funktsiooni kasutamist pead oma e-posti kinnitama." + }, + "updateBrowser": { + "message": "Uuenda brauserit" + }, + "updateBrowserDesc": { + "message": "Kasutad brauserit, mida ei toetata. Veebihoidla ei pruugi hästi töötada." + }, + "joinOrganization": { + "message": "Liitu organisatsiooniga" + }, + "joinOrganizationDesc": { + "message": "Sind on kutsutud ülal oleva organisatsiooniga liituma. Liitumise kinnitamiseks pead oma Bitwardeni kontosse sisse logima. Kui sul ei ole veel kontot, saad selle luua." + }, + "inviteAccepted": { + "message": "Kutse on vastu võetud" + }, + "inviteAcceptedDesc": { + "message": "Pääsed organisatsiooni kirjetele ligi niipea, kui administraator sinu liikmelisuse kinnitab. Teavitame sind sellest e-posti teel." + }, + "inviteAcceptFailed": { + "message": "Kutse vastuvõtmine nurjus. Palu organisatsiooni administraatoril uus kutse saata." + }, + "inviteAcceptFailedShort": { + "message": "Kutset ei õnnestu vastu võtta. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Pea e-posti aadressi meeles" + }, + "recoverAccountTwoStepDesc": { + "message": "Kui sa ei pääse oma kontole ühegi kaheastmeliste kinnitamise meetodi abiga ligi, saad selle välja lülitada. Selleks kasuta kaheastmelise kinnitamise tühistamise koodi." + }, + "recoverAccountTwoStep": { + "message": "Taasta kaheastmelise kinnitamise ligipääs" + }, + "twoStepRecoverDisabled": { + "message": "Sinu konto kaheastmeline kinnitamine on välja lülitatud." + }, + "learnMore": { + "message": "Rohkem teavet" + }, + "deleteRecoverDesc": { + "message": "Sisesta e-posti aadress oma konto taastamiseks ja kustutamiseks." + }, + "deleteRecoverEmailSent": { + "message": "Kui sinu konto eksisteerib, saatsime e-postile edasised juhised." + }, + "deleteRecoverConfirmDesc": { + "message": "Oled avaldanud soovi oma Bitwardeni konto kustutamiseks. Selle kinnitamiseks kliki allolevale nupule." + }, + "myOrganization": { + "message": "Minu organisatsioon" + }, + "deleteOrganization": { + "message": "Kustuta organisatsioon" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisatsioon on kustutatud" + }, + "organizationDeletedDesc": { + "message": "Organisatsioon ja kõik sellega seonduvad andmed on kustutatud." + }, + "organizationUpdated": { + "message": "Organisatsiooni on uuendatud" + }, + "taxInformation": { + "message": "Käibemaksu info" + }, + "taxInformationDesc": { + "message": "Käibemaksu informatsiooni uuendamiseks võta ühendust klienditoega." + }, + "billingPlan": { + "message": "Pakett", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Muuda paketti", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Vii oma konto järgmisele tasemele, sisestades selleks all nõutud info. Enne selle tegemist veendu, et kontol on olemas toimiv maksemeetod.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Arve #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Vaata arvet" + }, + "downloadInvoice": { + "message": "Laadi arve alla" + }, + "verifyBankAccount": { + "message": "Pangakonto kinnitamine" + }, + "verifyBankAccountDesc": { + "message": "Tegime sinu pangakontole kaks väikest ülekannet (nende kohalejõudmine võib võtta 1-2 tööpäeva). Selleks, et pangakonto kinnitada, sisesta need summad siia." + }, + "verifyBankAccountInitialDesc": { + "message": "Pangaülekandega tasumine on saadaval ainult Ameerika Ühendriikide klientidele. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Pangakonto mittekinnitamine tähendab seda, et makset ei toimu ning konto kaotab oma tellimusega kaasnevad eelised." + }, + "verifiedBankAccount": { + "message": "Pangakonto on kinnitatud." + }, + "bankAccount": { + "message": "Pangakontoga" + }, + "amountX": { + "message": "Summa $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Konto tüüp" + }, + "bankAccountTypeCompany": { + "message": "Ettevõte (äri)" + }, + "bankAccountTypeIndividual": { + "message": "Eraisik (personaalne)" + }, + "enterInstallationId": { + "message": "Sisesta oma paigalduse id" + }, + "limitSubscriptionDesc": { + "message": "Määra maksimaalne kasutajate limiit. Limiidi täitumisel ei saa enam uusi kasutajaid kutsuda." + }, + "maxSeatLimit": { + "message": "Maksimaalne kasutajate limiit (valikuline)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Lisa kasutajaid", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Eemalda kasutajaid", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Sinu tellimus lubab kasutada/luua kokku $COUNT$ kasutajakontot.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Lisatavad kasutajad" + }, + "seatsToRemove": { + "message": "Eemaldatavad kasutajad" + }, + "seatsAddNote": { + "message": "Kasutajate hulga suurendamisel võetakse kehtiva maksemeetodi vahendusel selle eest koheselt ka tasu. Esimene makse tehakse proportsionaalselt koos järelejäänud summaga, mis sel arveldusperioodil tasuda tuleb." + }, + "seatsRemoveNote": { + "message": "Kasutajate eemaldamisel arvestatakse järelejäänud summa järgmisest maksest krediidina maha." + }, + "adjustedSeats": { + "message": "Kohandas $AMOUNT$ kasutaja kohta.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Võti on uuendatud" + }, + "updateKeyTitle": { + "message": "Uuenda võtit" + }, + "updateEncryptionKey": { + "message": "Uuenda krüpteerimisvõtit" + }, + "updateEncryptionKeyShortDesc": { + "message": "Kasutad hetkeseisuga aegunud krüpteerimise skeemi." + }, + "updateEncryptionKeyDesc": { + "message": "Oleme kasutusele võtnud suuremad krüpteerimise võtmed, mis pakuvad paremat turvalisust ja uusi funktsioone. Krüpteerimisvõtmete uuendamine on lihtne ja kiire. Piisab ainult ülemparooli sisestamisest. See uuendus on möödapääsmatu ja tuleb ära teha." + }, + "updateEncryptionKeyWarning": { + "message": "Pärast krüpteerimisvõtme uuendamist pead kõikides seadmetes, kus Bitwardeni rakendust kasutad, oma kontosse uuesti sisse logima (nt nutitelefonis ja brauseris). Välja- ja sisselogimise (mis ühtlasi laadib ka uue krüpteerimisvõtme) nurjumine võib tingida andmete riknemise. Üritame sinu seadmetest ise välja logida, aga see võib võtta natukene aega." + }, + "updateEncryptionKeyExportWarning": { + "message": "Mistahes krüpteeritud, eksporditud andmed muutuvad samuti vigaseks." + }, + "subscription": { + "message": "Tellimus" + }, + "loading": { + "message": "Laadimine" + }, + "upgrade": { + "message": "Täienda" + }, + "upgradeOrganization": { + "message": "Täienda organisatsiooni" + }, + "upgradeOrganizationDesc": { + "message": "See funktsioon ei ole tasuta organisatsioonidele saadaval. Hangi tasuline versioon, mis sisaldab rohkem funktsioone." + }, + "createOrganizationStep1": { + "message": "Organisatsiooni loomine: Samm 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Enne organisatsiooni loomist pead registreerima tasuta konto." + }, + "refunded": { + "message": "Tagasi makstud" + }, + "nothingSelected": { + "message": "Midagi pole valitud." + }, + "acceptPolicies": { + "message": "Märkeruudu markeerimisel nõustud järgnevaga:" + }, + "acceptPoliciesError": { + "message": "Kasutustingimuste ja Privaatsuspoliitikaga pole nõustutud." + }, + "termsOfService": { + "message": "Kasutustingimused" + }, + "privacyPolicy": { + "message": "Privaatsuspoliitika" + }, + "filters": { + "message": "Filtrid" + }, + "vaultTimeout": { + "message": "Hoidla ajalõpp" + }, + "vaultTimeoutDesc": { + "message": "Vali aeg, peale mida sooritatakse allpool valitud tegevus." + }, + "oneMinute": { + "message": "1 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" + }, + "onRefresh": { + "message": "Brauseri sulgemisel" + }, + "dateUpdated": { + "message": "Uuendatud", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parool on uuendatud", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisatsioon on välja lülitatud." + }, + "licenseIsExpired": { + "message": "Litsents on aegunud." + }, + "updatedUsers": { + "message": "Kasutajad on uuendatud" + }, + "selected": { + "message": "Valitud" + }, + "ownership": { + "message": "Omanik" + }, + "whoOwnsThisItem": { + "message": "Kes on selle kirje omanik?" + }, + "strong": { + "message": "Tugev", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Hea", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Nõrk", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Väga nõrk", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Nõrk ülemparool" + }, + "weakMasterPasswordDesc": { + "message": "Valitud ülemparool on nõrk. Oma Bitwardeni konto paremaks kaitsmiseks peaksid kasutama tugevamat parooli. Oled kindel, et soovid valitud parooli ülemparoolina kasutada?" + }, + "rotateAccountEncKey": { + "message": "Roteeri ka minu konto krüpteerimise võtit" + }, + "rotateEncKeyTitle": { + "message": "Roteeri krüpteerimise võtit" + }, + "rotateEncKeyConfirmation": { + "message": "Oled kindel, et soovid oma konto krüpteerimise võtit roteerida?" + }, + "attachmentsNeedFix": { + "message": "Sellel kirjel on vanu manuseid, mille peab parandama." + }, + "attachmentFixDesc": { + "message": "See on vana failimanus, mille peab parandama. Rohkema teabe saamiseks kliki siia." + }, + "fix": { + "message": "Paranda", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Hoidlas on vanu failimanuseid, mida peab enne konto krüpteerimise võtme roteerimist parandama." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Selleks, et sinu krüpteeringu terviklikkus säiliks, pead jätkamiseks kinnitama kasutaja sõrmejälje fraasi.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Ära enam sõrmejälje fraasi kinnitamist kü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." + }, + "free": { + "message": "Tasuta", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API võti" + }, + "apiKeyDesc": { + "message": "Sinu API võtit saab kasutada Bitwardeni avalikus API-s autentimiseks." + }, + "apiKeyRotateDesc": { + "message": "API roteerimine muudab eelmise võtme kehtetuks. API võtme roteerimine on kasulik olukordades, kus on oht, et aktiivne võti ei pruugi enam turvaline olla." + }, + "apiKeyWarning": { + "message": "Sinu API võtmel on täielik ligipääs organisatsioonile. Seda võtit peab salajas hoidma ja kaitsma." + }, + "userApiKeyDesc": { + "message": "Sinu API võtit saab kasutada Bitwardeni CLI-s autentimiseks." + }, + "userApiKeyWarning": { + "message": "API võti on alternatiivne autentimise mehhanism. Seda tuleks salajas hoida." + }, + "oauth2ClientCredentials": { + "message": "OAuthi 2.0 kliendi tunnistus", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Vaata API võtit" + }, + "rotateApiKey": { + "message": "API võtme roteerimine" + }, + "selectOneCollection": { + "message": "Pead valima vähemalt ühe kollektsiooni." + }, + "couldNotChargeCardPayInvoice": { + "message": "Meil ei õnnestunud kaardil olevat raha kasutada. Palun vaata all olevat arvet ja maksa see käsitsi." + }, + "inAppPurchase": { + "message": "Äpi sisene maksmine" + }, + "cannotPerformInAppPurchase": { + "message": "Seda tegevust ei saa sooritada, sest kasutad äpi sisest maksemeetodit." + }, + "manageSubscriptionFromStore": { + "message": "Saad oma tellimust hallata poest, kust äpi sisese ostu sooritasid." + }, + "minLength": { + "message": "Minimaalne pikkus" + }, + "clone": { + "message": "Klooni" + }, + "masterPassPolicyDesc": { + "message": "Määra minimaalsed ülemparooli tugevuse tingimused." + }, + "twoStepLoginPolicyDesc": { + "message": "Nõua, et kasutajad seadistaksid oma kontodes kaheastmelise kinnituse." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisatsiooni liikmed, kel pole kaheastmeline kinnitamine sisse lülitatud, eemaldatakse organisatsioonist ning neile saadetakse sellekohane e-kiri." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Kuulud organisatsiooni, mis nõuab kontol kaheastmelise kinnitamise sisselülitamist.\nKui lülitad välja kõik Kaheastmelise kinnitamise valikud, eemaldatakse sind organisatsioonist." + }, + "passwordGeneratorPolicyDesc": { + "message": "Määra parooli genereerija konfiguratsiooni tingimused." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Organisatsiooni seaded mõjutavad parooli genereerija sätteid." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimaalne sõnade arv" + }, + "defaultType": { + "message": "Vaiketüüp" + }, + "userPreference": { + "message": "Kasutaja eelistus" + }, + "vaultTimeoutAction": { + "message": "Sooritatav tegevus" + }, + "vaultTimeoutActionLockDesc": { + "message": "Lukustamisel nõutakse hoidlale uuesti ligi pääsemiseks ülemparooli." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Väljalogimisel nõutakse hoidlale uuesti ligi pääsemiseks autentimist." + }, + "lock": { + "message": "Lukusta", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Prügikast", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Otsi prügikastist" + }, + "permanentlyDelete": { + "message": "Kustuta kirje jäädavalt" + }, + "permanentlyDeleteSelected": { + "message": "Kustuta valitud jäädavalt" + }, + "permanentlyDeleteItem": { + "message": "Kustuta kirje jäädavalt" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Oled kindel, et soovid selle kirje jäädavalt kustutada?" + }, + "permanentlyDeletedItem": { + "message": "Kirje on jäädavalt kustutatud" + }, + "permanentlyDeletedItems": { + "message": "Kirjed on jäädavalt kustutatud" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Oled valinud jäädavaks kustutamiseks $COUNT$ kirje(t). Oled kindel, et soovid need kirjed jäädavalt kustutada?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "$ID$ kirjet on jäädavalt kustutatud.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Taasta" + }, + "restoreSelected": { + "message": "Taasta valitud" + }, + "restoreItem": { + "message": "Taasta kirje" + }, + "restoredItem": { + "message": "Kirje on taastatud" + }, + "restoredItems": { + "message": "Kirjed on taastatud" + }, + "restoreItemConfirmation": { + "message": "Oled kindel, et soovid selle kirje taastada?" + }, + "restoreItems": { + "message": "Taasta kirjed" + }, + "restoreSelectedItemsDesc": { + "message": "Oled taastamiseks valinud $COUNT$ kirje(t). Oled kindel, et soovid kõik need kirjed taastada?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Taastas kirje $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Väljalogimine tähendab, et hoidlale ei pääse enam ligi ning sisselogimiseks peab konto uuesti autentima. Oled kindel, et soovid seda valikut kasutada?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Ajalõpu tegevuse kinnitamine" + }, + "hidePasswords": { + "message": "Peida paroolid" + }, + "countryPostalCodeRequiredDesc": { + "message": "Vajame seda informatsiooni ainult käibemaksu arvutamiseks ja finantsraportite jaoks." + }, + "includeVAT": { + "message": "Lisa KM andmed (valikuline)" + }, + "taxIdNumber": { + "message": "KMKR nr" + }, + "taxInfoUpdated": { + "message": "Käibemaksu informatsioon on uuendatud." + }, + "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." + }, + "identifier": { + "message": "Identifikaator" + }, + "organizationIdentifier": { + "message": "Organisatsiooni identifikaator" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Sisselogimine läbi organisatsiooni ühekordse sisselogimise portaali. Jätkamiseks sisesta ettevõtte identifikaator." + }, + "enterpriseSingleSignOn": { + "message": "Ettevõtte Single Sign-On" + }, + "ssoHandOff": { + "message": "Võid nüüd selle vahelehe sulgeda ning jätkata brauseri laienduses." + }, + "includeAllTeamsFeatures": { + "message": "Kõik Meeskonna funktsioonid, lisaks:" + }, + "includeSsoAuthentication": { + "message": "SSO autentimine läbi SAML2.0 ja OpenID Connect-i" + }, + "includeEnterprisePolicies": { + "message": "Ettevõtte poliitikate rakendamine" + }, + "ssoValidationFailed": { + "message": "SSO kinnitamine nurjus" + }, + "ssoIdentifierRequired": { + "message": "Nõutud on organisatsioon identifikaator." + }, + "unlinkSso": { + "message": "Ühenda SSO lahti" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Ühenda SSO" + }, + "singleOrg": { + "message": "Üksainus organisatsioon" + }, + "singleOrgDesc": { + "message": "Keela kasutajatel teiste organisatsioonidega liitumine." + }, + "singleOrgBlockCreateMessage": { + "message": "Sinu praeguse organisatsiooni poliitika kohaselt ei saa sa olla rohkem kui ühe organisatsiooni liige. Palun kontakteeru oma praeguse organisatsiooni administraatoritega või kasuta liitumiseks teist Bitwardeni kontot." + }, + "singleOrgPolicyWarning": { + "message": "Sisselülitamisel eemaldatakse organisatsioonist liikmed, kes on juba mõne teise organisatsiooniga liitunud. See ei puuduta liikmeid, kelle staatus on Omanik või Administraator." + }, + "requireSso": { + "message": "Single Sign-On autentimine" + }, + "requireSsoPolicyDesc": { + "message": "Nõua kasutajatelt sisselogimist läbi Ettevõtte Single Sign-On meetodi." + }, + "prerequisite": { + "message": "Eeltingimus" + }, + "requireSsoPolicyReq": { + "message": "Selle poliitika aktiveerimise eelduseks on valiku „Üksainus organisatsioon“ sisselülitamine." + }, + "requireSsoPolicyReqError": { + "message": "Poliitika „Üksainus organisatsioon“ ei ole sisse lülitatud." + }, + "requireSsoExemption": { + "message": "Selle poliitika rakendamine ei puuduta Omanikke ega Administraatoreid." + }, + "sendTypeFile": { + "message": "Fail" + }, + "sendTypeText": { + "message": "Tekst" + }, + "createSend": { + "message": "Loo uus Send", + "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." + }, + "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": "Muutis Sendi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Kustutas Sendi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSend": { + "message": "Kustuta Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Keelatud" + }, + "sendLink": { + "message": "Sendi link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopeeri Sendi link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Eemalda parool" + }, + "removedPassword": { + "message": "Eemaldas parooli" + }, + "removePasswordConfirmation": { + "message": "Soovid kindlasti selle parooli eemaldada?" + }, + "hideEmail": { + "message": "Ära näita saajatele minu e-posti aadressi." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Kõik Sendid" + }, + "maxAccessCountReached": { + "message": "Maksimaalne ligipääsude arv on saavutatud", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Kustutamise ootel" + }, + "expired": { + "message": "Aegunud" + }, + "searchSends": { + "message": "Otsi Sende", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "See Send on parooliga kaitstud. Jätkamiseks sisesta parool allolevale väljale.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Sa ei tea parooli? Küsi seda konkreetse Sendi saatjalt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "See Send on vaikeseades peidetud. Saad selle nähtavust alloleva nupu abil seadistada.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Laadi fail alla" + }, + "sendAccessUnavailable": { + "message": "Send, millele üritad ligi pääseda, ei eksisteeri või see pole enam saadaval.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Sendiga seotud faili ei suudetud leida.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Puuduvad Sendid, mida kuvada.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Hädaolukorra ligipääs" + }, + "emergencyAccessDesc": { + "message": "Siin saad hallata ning seadistada usaldusväärseid kontakte, kes saavad hädaolukorral sinu Hoidla sisu kas Vaadata või Üle võtta. Rohkema info saamiseks vaata meie abilehekülge. Tegemist on turvalise ja „zero-knowledge“ lahendusega." + }, + "emergencyAccessOwnerWarning": { + "message": "Oled ühe või enama organisatsiooni omanik. Andes ligipääsu hädaolukorra kontaktile, saab ta pärast konto ülevõtmist ka Organisatsiooni õiguseid kasutada." + }, + "trustedEmergencyContacts": { + "message": "Usaldusväärsed hädaolukorra kontaktid" + }, + "noTrustedContacts": { + "message": "Hetkel pole ühtei kontakti määratud. Alustamiseks saada usaldusväärsele kontaktile kutse." + }, + "addEmergencyContact": { + "message": "Lisa hädaolukorra kontakt" + }, + "designatedEmergencyContacts": { + "message": "Oled järgnevate kontode hädaolukorra kontakt" + }, + "noGrantedAccess": { + "message": "Sind ei ole hetkel ühelegi kontole hädaolukorra kontaktiks määratud." + }, + "inviteEmergencyContact": { + "message": "Hädaolukorra kontakti loomine" + }, + "editEmergencyContact": { + "message": "Hädaolukorra kontakti muutmine" + }, + "inviteEmergencyContactDesc": { + "message": "Kutsu oma hädaolukorra kontaktiks usaldusväärne kasutaja. Selleks sisestades alla tema Bitwardeni konto e-posti aadress. Kui tal ei ole veel Bitwardeni kontot, pakutakse talle võimalus see luua." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Hädaolukorra ligipääs on käivitatud" + }, + "emergencyAccessRecoveryApproved": { + "message": "Hädaolukorra ligipääs on kinnitatud" + }, + "viewDesc": { + "message": "Saab vaadata sinu Hoidla täit sisu." + }, + "takeover": { + "message": "Ülevõtmine" + }, + "takeoverDesc": { + "message": "Saab määrata kontole uue ülemparooli." + }, + "waitTime": { + "message": "Ooteaeg" + }, + "waitTimeDesc": { + "message": "Aeg, peale mida võimaldatakse määratud isikule automaatne ligipääs." + }, + "oneDay": { + "message": "1 päev" + }, + "days": { + "message": "$DAYS$ päeva", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Kasutaja on kutsutud." + }, + "acceptEmergencyAccess": { + "message": "Sind on kutsutud ülal oleva kasutaja hädaolukorra kontaktiks. Liitumise kinnitamiseks pead oma Bitwardeni kontosse sisse logima. Kui sul ei ole veel kontot, saad selle luua." + }, + "emergencyInviteAcceptFailed": { + "message": "Kutse vastuvõtmine nurjus. Palu kasutajal uus kutse saata." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Kutset ei õnnestu vastu võtta. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Selle kasutaja hädaolukorra valikutele ligipääsuks on vajalik identiteedi kinnitamine. Pärast kinnitamist saadame sulle vastavasisulise e-kirja." + }, + "requestAccess": { + "message": "Taotle ligipääsu" + }, + "requestAccessConfirmation": { + "message": "Oled kindel, et soovid esitada hädaolukorra ligipääsu taotluse? Ligipääsu võimaldatakse pärast $WAITTIME$ päev(a) või niipea, kui teine kasutaja sinu selle heaks kiidab.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Kasutajale $USER$ on saadet hädaolukorra ligipääsu kutse. Anname e-kirjaga märku, kui saad selle seadistamisega edasi minna.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Kinnita" + }, + "reject": { + "message": "Keeldu" + }, + "approveAccessConfirmation": { + "message": "Oled kindel, et soovid hädaolukorra ligipääsu päringu heaks kiita? See võimaldab kasutajal $USER$ sinu kontoga teha järgnevat: $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Hädaolukorra ligipääs on kinnitatud." + }, + "emergencyRejected": { + "message": "Hädaolukorra ligipääsust keelduti" + }, + "passwordResetFor": { + "message": "$USER$ parool on lähtestatud. Saad nüüd uue parooliga sisse logida.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personaalne salvestamine" + }, + "personalOwnershipPolicyDesc": { + "message": "Nõua kasutajatelt andmete salvestamist organisatsiooni hoidlasse, eemaldades personaalse hoidla valiku." + }, + "personalOwnershipExemption": { + "message": "Selle poliitika rakendamine ei puuduta Omanikke ega Administraatoreid." + }, + "personalOwnershipSubmitError": { + "message": "Ettevõtte poliitika tõttu ei saa sa andmeid oma personaalsesse Hoidlasse salvestada. Vali Omanikuks organisatsioon ja vali mõni saadavaolevatest Kogumikest." + }, + "disableSend": { + "message": "Keela Send" + }, + "disableSendPolicyDesc": { + "message": "Ära võimalda kasutajatel Bitwardeni Sende luua või muuta. Olemasolevate Sendide kustutamise võimalikkus säilib.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "See muudatus ei mõjuta neid organisatsiooni liikmeid, kes saavad hallata organisatsiooni poliitikaid." + }, + "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." + }, + "sendOptions": { + "message": "Sendi valikud", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Määra valikud Sendi loomiseks ja muutmiseks.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "See muudatus ei mõjuta neid organisatsiooni liikmeid, kes saavad hallata organisatsiooni poliitikaid." + }, + "disableHideEmail": { + "message": "Ära luba kasutajatel Sendi loomisel või muutmisel oma e-posti aadressi saajate eest peita.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Hetkel on kehtivad järgmised organisatsiooni poliitikad:" + }, + "sendDisableHideEmailInEffect": { + "message": "Kasutajatel pole lubatud Sendi loomisel või muutmisel oma e-posti aadressi saajate eest peita.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Muutis poliitikat $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Hind" + }, + "estimatedTax": { + "message": "Eeldatavad maksud" + }, + "custom": { + "message": "Kohandatud" + }, + "customDesc": { + "message": "Pakub kasutajate haldamiseks ja õiguste määramiseks rohkem võimalusi." + }, + "permissions": { + "message": "Õigused" + }, + "accessEventLogs": { + "message": "Ligipääs sündmuste logile" + }, + "accessImportExport": { + "message": "Ligipääs impordile/ekspordile" + }, + "accessReports": { + "message": "Ligipääs raportitele" + }, + "missingPermissions": { + "message": "Sul pole selle toimingu tegemiseks luba." + }, + "manageAllCollections": { + "message": "Saab hallata kõiki kollektsioone" + }, + "createNewCollections": { + "message": "Luua uusi kollektsioone" + }, + "editAnyCollection": { + "message": "Muuta mistahes kollektsiooni" + }, + "deleteAnyCollection": { + "message": "Kustutada mistahes kollektsiooni" + }, + "manageAssignedCollections": { + "message": "Saab hallata määratud kollektsioone" + }, + "editAssignedCollections": { + "message": "Hallata määratud kollektsioone" + }, + "deleteAssignedCollections": { + "message": "Kustutada määratud kollektsioone" + }, + "manageGroups": { + "message": "Gruppide haldamine" + }, + "managePolicies": { + "message": "Poliitikate haldamine" + }, + "manageSso": { + "message": "SSO haldamine" + }, + "manageUsers": { + "message": "Kasutajate haldamine" + }, + "manageResetPassword": { + "message": "Parooli lähtestamise haldamine" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Organisatsiooni poliitika on seadnud omaniku valikutele piirangu." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Keela organisatsiooni liikmetel paroolide salvestamine isiklikku Hoidlasse" + }, + "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." + }, + "sendNameDesc": { + "message": "Sisesta Sendi nimi (kohustuslik).", + "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." + }, + "copySendLinkOnSave": { + "message": "Salvestamisel kopeeri Sendi jagamise link lõikepuhvrisse." + }, + "sendLinkLabel": { + "message": "Sendi link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwardeni Send võimaldab sensitiivset, ajutist informatsiooni hõlpsasti ning turvaliselt edastada.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Rohkem infot", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Jaga tekste või faile ükskõik kellega." + }, + "sendVaultCardLearnMore": { + "message": "Rohkem infot", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "vaata", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "kuidas see töötab", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "või", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "proovi ise järele", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "või", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "loo konto,", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "et seda ise proovida.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwardeni kasutaja $USER_IDENTIFIER$ jagas sinuga järgnevat", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Selle Sendi looja ei soovi oma e-posti aadressi avaldada. Palun veendu, et see pärineb usaldusväärsest allikast, enne kui asud selle sisu kasutama või faile alla laadima.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Valitud aegumiskuupäev ei ole õige." + }, + "deletionDateIsInvalid": { + "message": "Valitud kustutamise kuupäev ei ole õige." + }, + "expirationDateAndTimeRequired": { + "message": "Nõutav on aegumiskuupäev ja kellaaeg." + }, + "deletionDateAndTimeRequired": { + "message": "Nõutav on kustutamise kuupäev ja kellaaeg." + }, + "dateParsingError": { + "message": "Kustutamis- ja aegumiskuupäevade salvestamisel ilmnes tõrge." + }, + "webAuthnFallbackMsg": { + "message": "2FA kinnitamiseks kliki alloleval nupul." + }, + "webAuthnAuthenticate": { + "message": "WebAuthn kinnitamine" + }, + "webAuthnNotSupported": { + "message": "Sinu brauser ei toeta WebAuthn'i." + }, + "webAuthnSuccess": { + "message": "WebAuthn on edukalt kinnitatud! Võid selle vahelehe sulgeda." + }, + "hintEqualsPassword": { + "message": "Parooli vihje ei saa olla sama mis parool ise." + }, + "enrollPasswordReset": { + "message": "Liitu parooli lähtestamise valikuga" + }, + "enrolledPasswordReset": { + "message": "Liitusid parooli lähtestamise valikuga" + }, + "withdrawPasswordReset": { + "message": "Tühista nõusolek parooli lähtestamiseks" + }, + "enrollPasswordResetSuccess": { + "message": "Liitumine õnnestus!" + }, + "withdrawPasswordResetSuccess": { + "message": "Tühistamine õnnestus!" + }, + "eventEnrollPasswordReset": { + "message": "Kasutaja $ID$ liitus parooli lähtestamise valikuga.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Kasutaja $ID$ tühistas parooli taastamise valiku nõusuoleku.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Kasutaja $ID$ ülemparool on lähtestatud.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logis esimest korda läbi SSO sisse", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Lähtesta parool" + }, + "resetPasswordLoggedOutWarning": { + "message": "Jätkates logitakse $NAME$ praegusest sessioonis välja, mistõttu peavad nad kontosse uuesti sisse logima. Teised kontoga ühendatud seadmed võivad jääda sisselogituks kuni üheks tunniks.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "see kasutaja" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Üks või enam organisatsiooni eeskirja nõuavad, et ülemparool vastaks nendele nõudmistele:" + }, + "resetPasswordSuccess": { + "message": "Parool on edukalt lähtestatud!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Liitumine võimaldab organisatsiooni administraatoritel sinu ülemparooli muuta. Oled kindel, et soovid liituda?" + }, + "resetPasswordPolicy": { + "message": "Ülemparooli lähtestamine" + }, + "resetPasswordPolicyDescription": { + "message": "Võimalda organisatsiooni administraatoritel kasutajate ülemparooli lähtestada." + }, + "resetPasswordPolicyWarning": { + "message": "Organisatsiooni kuuluvad kasutajad peavad ise liituma või nad liidetakse automaatselt, enne kui nende ülemparooli lähtestada saab." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automaatne liitumine" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Kõik kasutajad, kes aktsepteerivad kutse, liidetakse automaatselt parooli lähtestamise funktsiooniga." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Kasutajad, kes on juba organisatsiooni liikmed, liidetakse parooli lähtestamise valikuga tagasiulatuvalt. Nad peavad selle ise üle kinnitama, enne kui administraatoritel tekib võimalus nende paroole lähtestada." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Liida uued kasutajad automaatselt" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Selle organisatsiooni poliitika kohaselt liidetakse sind automaatselt ülemparooli lähtestamise funktsiooniga. Liitumisel saavad organisatsiooni administraatorid sinu ülemparooli muuta." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Salakirjad, mis on olnud prügikastis enam kui 30 päeva, kustutatakse automaatselt." + }, + "trashCleanupWarningSelfHosted": { + "message": "Salakirjad, mis on olnud mõnda aega prügikastis, kustutatakse automaatselt." + }, + "passwordPrompt": { + "message": "Nõutav on ülemparool" + }, + "passwordConfirmation": { + "message": "Ülemparooli kinnitamine" + }, + "passwordConfirmationDesc": { + "message": "See tegevus on kaitstud. Jätkamiseks sisesta oma ülemparool." + }, + "reinviteSelected": { + "message": "Saada kutsed uuesti" + }, + "noSelectedUsersApplicable": { + "message": "See valik rakendub mistahes valitud kasutajatele." + }, + "removeUsersWarning": { + "message": "Oled kindel, et soovid järgnevaid kasutajaid eemaldada? See tegevus võib võtta paar sekundit ning seda ei saa katkestada." + }, + "theme": { + "message": "Teema" + }, + "themeDesc": { + "message": "Vali oma veebihoidlale teema." + }, + "themeSystem": { + "message": "Kasuta süsteemi teemat" + }, + "themeDark": { + "message": "Tume" + }, + "themeLight": { + "message": "Hele" + }, + "confirmSelected": { + "message": "Kinnita valitud" + }, + "bulkConfirmStatus": { + "message": "Masstegevuse staatus" + }, + "bulkConfirmMessage": { + "message": "Edukalt kinnitatud." + }, + "bulkReinviteMessage": { + "message": "Edukalt uuesti kutsutud." + }, + "bulkRemovedMessage": { + "message": "Edukalt eemaldatud" + }, + "bulkFilteredMessage": { + "message": "Välja jäetud, ei rakendu sellel tegevuse puhul." + }, + "fingerprint": { + "message": "Sõrmejälg" + }, + "removeUsers": { + "message": "Kasutajate eemaldamine" + }, + "error": { + "message": "Viga" + }, + "resetPasswordManageUsers": { + "message": "\"Parooli lähtestamise haldamine\" nõuab ka valiku \"Kasutajate haldamine\" sisselülitamist" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Lisa" + }, + "updatedMasterPassword": { + "message": "Uuendas ülemparooli" + }, + "updateMasterPassword": { + "message": "Ülemparooli uuendamine" + }, + "updateMasterPasswordWarning": { + "message": "Organisatsiooni administraator muutis hiljuti sinu ülemparooli. Hoidlale ligi pääsemiseks pead ülemparooli 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Hoidla ajalõpp" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "E-kiri on saadetud" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Ühenduse loomine Key Connectoriga ebaõnnestus. Proovi hiljem uuesti." + }, + "keyConnectorUrl": { + "message": "Key Connectori URL" + }, + "sendVerificationCode": { + "message": "Saada kinnituskood oma e-postile" + }, + "sendCode": { + "message": "Saada kood" + }, + "codeSent": { + "message": "Kood on saadetud" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Jätkamiseks kinnita oma identiteet." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Testi" + }, + "keyConnectorTestSuccess": { + "message": "Õnnestus! Key Connectoriga saadi ühendust." + }, + "keyConnectorTestFail": { + "message": "Key Connectoriga ei saa ühendust. Kontrolli URL-i." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json new file mode 100644 index 0000000000..b47697bb92 --- /dev/null +++ b/apps/web/src/locales/fi/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$-verkkoholvi", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Minkä tyyppinen kohde tämä on?" + }, + "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" + }, + "newPassword": { + "message": "Uusi salasana" + }, + "passphrase": { + "message": "Salauslauseke" + }, + "notes": { + "message": "Merkinnät" + }, + "customFields": { + "message": "Lisäkentät" + }, + "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öpostiosoite" + }, + "phone": { + "message": "Puhelinnumero" + }, + "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" + }, + "title": { + "message": "Titteli" + }, + "mr": { + "message": "Hra" + }, + "mrs": { + "message": "Rva" + }, + "ms": { + "message": "Nti" + }, + "dr": { + "message": "Tri" + }, + "expirationMonth": { + "message": "Erääntymiskuukausi" + }, + "expirationYear": { + "message": "Erääntymisvuosi" + }, + "authenticatorKeyTotp": { + "message": "Todennusmenetelmän avain (TOTP)" + }, + "folder": { + "message": "Kansio" + }, + "newCustomField": { + "message": "Uusi lisäkenttä" + }, + "value": { + "message": "Arvo" + }, + "dragToSort": { + "message": "Järjestele 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." + }, + "remove": { + "message": "Poista" + }, + "unassigned": { + "message": "Määrittämätön" + }, + "noneFolder": { + "message": "Ei kansiota", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Lisää kansio" + }, + "editFolder": { + "message": "Muokkaa kansiota" + }, + "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." + }, + "never": { + "message": "Ei koskaan" + }, + "toggleVisibility": { + "message": "Näytä tai piilota" + }, + "toggleCollapse": { + "message": "Laajenna tai pienennä", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Luo salasana" + }, + "checkPassword": { + "message": "Tarkasta, onko salasana paljastunut." + }, + "passwordExposed": { + "message": "Salasana on paljastunut $VALUE$ tietovuodossa ja se tulisi vaihtaa.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Salasanaa ei löytynyt tunnetuista tietovuodoista ja sen pitäisi olla turvallinen." + }, + "save": { + "message": "Tallenna" + }, + "cancel": { + "message": "Peruuta" + }, + "canceled": { + "message": "Peruttu" + }, + "close": { + "message": "Sulje" + }, + "delete": { + "message": "Poista" + }, + "favorite": { + "message": "Suosikki" + }, + "unfavorite": { + "message": "Poista suosikeista" + }, + "edit": { + "message": "Muokkaa" + }, + "searchCollection": { + "message": "Hae kokoelmasta" + }, + "searchFolder": { + "message": "Hae kansiosta" + }, + "searchFavorites": { + "message": "Hae suosikeista" + }, + "searchType": { + "message": "Hae tyypeistä", + "description": "Search item type" + }, + "searchVault": { + "message": "Hae holvista" + }, + "allItems": { + "message": "Kaikki kohteet" + }, + "favorites": { + "message": "Suosikit" + }, + "types": { + "message": "Tyypit" + }, + "typeLogin": { + "message": "Käyttäjätunnus" + }, + "typeCard": { + "message": "Kortti" + }, + "typeIdentity": { + "message": "Henkilöllisyys" + }, + "typeSecureNote": { + "message": "Salattu muistio" + }, + "typeLoginPlural": { + "message": "Kirjautumistiedot" + }, + "typeCardPlural": { + "message": "Kortit" + }, + "typeIdentityPlural": { + "message": "Henkilöllisyydet" + }, + "typeSecureNotePlural": { + "message": "Salatut muistiot" + }, + "folders": { + "message": "Kansiot" + }, + "collections": { + "message": "Kokoelmat" + }, + "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" + }, + "shared": { + "message": "Jaettu" + }, + "attachments": { + "message": "Liitteet" + }, + "select": { + "message": "Valitse" + }, + "addItem": { + "message": "Lisää kohde" + }, + "editItem": { + "message": "Muokkaa kohdetta" + }, + "viewItem": { + "message": "Näytä kohde" + }, + "ex": { + "message": "esim.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Muut" + }, + "share": { + "message": "Jaa" + }, + "moveToOrganization": { + "message": "Siirrä organisaatiolle" + }, + "valueCopied": { + "message": "$VALUE$ kopioitu", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopioi arvo", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopioi salasana", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopioi käyttäjätunnus", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopioi numero", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopioi turvakoodi", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopioi URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Oma holvi" + }, + "vault": { + "message": "Holvi" + }, + "moveSelectedToOrg": { + "message": "Siirrä valitut organisaatiolle" + }, + "deleteSelected": { + "message": "Poista valitut" + }, + "moveSelected": { + "message": "Siirrä valitut" + }, + "selectAll": { + "message": "Valitse kaikki" + }, + "unselectAll": { + "message": "Tyhjennä valinnat" + }, + "launch": { + "message": "Avaa" + }, + "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." + }, + "addedItem": { + "message": "Kohde lisätty" + }, + "editedItem": { + "message": "Kohdetta muokattu" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ siirrettiin organisaatiolle $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Valitut kohteet siirrettiin organisaatiolle $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Poista kohde" + }, + "deleteFolder": { + "message": "Poista kansio" + }, + "deleteAttachment": { + "message": "Poista tiedostoliite" + }, + "deleteItemConfirmation": { + "message": "Haluatko varmasti siirtää kohteen roskakoriin?" + }, + "deletedItem": { + "message": "Kohde siirrettiin roskakoriin" + }, + "deletedItems": { + "message": "Kohteet siirrettiin roskakoriin" + }, + "movedItems": { + "message": "Kohteet siirretty" + }, + "overwritePasswordConfirmation": { + "message": "Haluatko varmasti korvata nykyisen salasanan?" + }, + "editedFolder": { + "message": "Kansiota muokattu" + }, + "addedFolder": { + "message": "Kansio lisätty" + }, + "deleteFolderConfirmation": { + "message": "Haluatko varmasti poistaa kansion?" + }, + "deletedFolder": { + "message": "Kansio poistettu" + }, + "loggedOut": { + "message": "Kirjauduttu ulos" + }, + "loginExpired": { + "message": "Kirjautumisistuntosi on erääntynyt." + }, + "logOutConfirmation": { + "message": "Haluatko varmasti kirjautua ulos?" + }, + "logOut": { + "message": "Kirjaudu ulos" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Kyllä" + }, + "no": { + "message": "Ei" + }, + "loginOrCreateNewAccount": { + "message": "Kirjaudu sisään tai luo uusi tili päästäksesi salattuun holviisi." + }, + "createAccount": { + "message": "Luo tili" + }, + "logIn": { + "message": "Kirjaudu sisään" + }, + "submit": { + "message": "Jatka" + }, + "emailAddressDesc": { + "message": "Käytät sähköpostiosoitettasi sisäänkirjautumiseen." + }, + "yourName": { + "message": "Nimesi" + }, + "yourNameDesc": { + "message": "Millä nimellä meidän tulee kutsua sinua?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Pääsalasanan vihje" + }, + "settings": { + "message": "Asetukset" + }, + "passwordHint": { + "message": "Salasanavihje" + }, + "enterEmailToGetHint": { + "message": "Syötä tilisi sähköpostiosoite saadaksesi pääsalasanasi 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 sähköpostitse." + }, + "unexpectedError": { + "message": "Tapahtui odottamaton virhe." + }, + "emailAddress": { + "message": "Sähköpostiosoite" + }, + "yourVaultIsLocked": { + "message": "Holvisi on lukittu. Syötä pääsalasana jatkaaksesi." + }, + "unlock": { + "message": "Avaa" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lukitse nyt" + }, + "noItemsInList": { + "message": "Ei näytettäviä kohteita." + }, + "noCollectionsInList": { + "message": "Ei näytettäviä kokoelmia." + }, + "noGroupsInList": { + "message": "Ei näytettäviä ryhmiä." + }, + "noUsersInList": { + "message": "Ei näytettäviä käyttäjiä." + }, + "noEventsInList": { + "message": "Ei näytettäviä tapahtumia." + }, + "newOrganization": { + "message": "Uusi organisaatio" + }, + "noOrganizationsList": { + "message": "Et kuulu mihinkään organisaatioon. Organisaatioiden avulla voit jakaa kohteita turvallisesti muiden käyttäjien kanssa." + }, + "versionNumber": { + "message": "Versio $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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ä." + }, + "loginUnavailable": { + "message": "Kirjautuminen ei ole käytettävissä" + }, + "noTwoStepProviders": { + "message": "Tilillä on käytössä kaksivaiheinen kirjautuminen, mutta tämä selain ei tue käytettävissä olevia todentajia." + }, + "noTwoStepProviders2": { + "message": "Käytä tuettua selainta (kuten Chrome) ja lisää/tai ota käyttöön laajemmin tuettu todentaja (kuten todennussovellus)." + }, + "twoStepOptions": { + "message": "Kaksivaiheisen kirjautumisen asetukset" + }, + "recoveryCodeDesc": { + "message": "Etkö pysty käyttämään kaksivaiheisen kirjautumisen todentajiasi? Poista kaikki tilisi menetelmät käytöstä palautuskoodillasi." + }, + "recoveryCodeTitle": { + "message": "Palautuskoodi" + }, + "authenticatorAppTitle": { + "message": "Todennussovellus" + }, + "authenticatorAppDesc": { + "message": "Käytä todennussovellusta (kuten Authy tai Google/Microsoft Authenticator) luodaksesi aikarajallisia todennuskoodeja.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Käytä YubiKey-todennuslaitetta tilisi avaukseen. Toimii YubiKey 4 ja 5 -sarjojen sekä NEO -laitteiden kanssa." + }, + "duoDesc": { + "message": "Vahvista kirjautuminen 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 kirjautuminen 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." + }, + "u2fDesc": { + "message": "Käytä tilisi avaukseen mitä tahansa FIDO U2F ‑yhteensopivaa todennuslaitetta." + }, + "u2fTitle": { + "message": "FIDO U2F ‑todennuslaite" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Käytä mitä tahansa WebAuthn‑yhteensopivaa todennuslaitetta päästäksesi käsiksi tiliisi." + }, + "webAuthnMigrated": { + "message": "(siirretty FIDO:sta)" + }, + "emailTitle": { + "message": "Sähköpostiosoite" + }, + "emailDesc": { + "message": "Todennuskoodit lähetetään sinulle sähköpostitse." + }, + "continue": { + "message": "Jatka" + }, + "organization": { + "message": "Organisaatio" + }, + "organizations": { + "message": "Organisaatiot" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Valitse organisaatio, jolle haluat siirtää kohteet. Tämä siirtää kohteet organisaation omistukseen, etkä tämän jälkeen ole enää niiden suora omistaja." + }, + "collectionsDesc": { + "message": "Muokkaa kokoelmia, joihin tämä kohde on jaettu. Kohteen näkevät vain ne organisaation käyttäjät, joilla on käyttöoikeus näihin kokoelmiin." + }, + "deleteSelectedItemsDesc": { + "message": "Olet valinnut $COUNT$ kohdetta poistettavaksi. Haluatko varmasti poistaa ne kaikki?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Valitse kansio, johon haluat siirtää $COUNT$ kohdetta.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Olet valinnut $COUNT$ kohdetta. $MOVEABLE_COUNT$ kohdetta voidaan siirtää organisaatioon, $NONMOVEABLE_COUNT$ ei.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Todennuskoodi (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopioi todennuskoodi" + }, + "warning": { + "message": "Varoitus" + }, + "confirmVaultExport": { + "message": "Vahvista holvin vienti" + }, + "exportWarningDesc": { + "message": "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": "Vienti salaa tietosi käyttäen tilisi salausavainta. Jos joskus uudistat tilisi salausavaimen, tulisi vienti suorittaa 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." + }, + "export": { + "message": "Vie" + }, + "exportVault": { + "message": "Vie holvi" + }, + "fileFormat": { + "message": "Tiedostomuoto" + }, + "exportSuccess": { + "message": "Holvisi tiedot on viety." + }, + "passwordGenerator": { + "message": "Salasanageneraattori" + }, + "minComplexityScore": { + "message": "Monimutkaisuuden vähimmäispistemäärä" + }, + "minNumbers": { + "message": "Numeroita vähintään" + }, + "minSpecial": { + "message": "Erikoismerkkejä vähintään", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Vältä epäselviä merkkejä" + }, + "regeneratePassword": { + "message": "Luo uusi salasana" + }, + "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" + }, + "passwordHistory": { + "message": "Salasanahistoria" + }, + "noPasswordsInList": { + "message": "Ei näytettäviä salasanoja." + }, + "clear": { + "message": "Tyhjennä", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Tili päivitetty" + }, + "changeEmail": { + "message": "Vaihda sähköpostiosoite" + }, + "changeEmailTwoFactorWarning": { + "message": "Jatkamalla tilisi sähköpostiosoite vaihtuu, muttei kaksivaiheiseen kirjautumiseen käytettävä osoite. Sen voit vaihtaa kaksivaiheisen kirjautumisen asetuksista." + }, + "newEmail": { + "message": "Uusi sähköpostiosoite" + }, + "code": { + "message": "Koodi" + }, + "changeEmailDesc": { + "message": "Olemme lähettäneet todennuskoodin sähköpostitse osoitteeseen $EMAIL$. Tarkasta sähköpostisi ja syötä koodi alle viimeistelläksesi sähköpostiosoitteen vaihdon.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Jatkamalla kirjaudut ulos nykyisestä istunnostasi ja joudut kirjautumaan uudelleen. Aktiiviset istunnot toisilla laitteilla saattavat pysyä aktiivisina vielä tunnin ajan." + }, + "emailChanged": { + "message": "Sähköpostiosoite vaihdettu" + }, + "logBackIn": { + "message": "Kirjaudu sisään uudelleen." + }, + "logBackInOthersToo": { + "message": "Kirjaudu uudelleen sisään. Jos käytät muita Bitwarden-sovelluksia, kirjaudu myös niihin uudelleen." + }, + "changeMasterPassword": { + "message": "Vaihda pääsalasana" + }, + "masterPasswordChanged": { + "message": "Pääsalasana vaihdettu" + }, + "currentMasterPass": { + "message": "Nykyinen pääsalasana" + }, + "newMasterPass": { + "message": "Uusi pääsalasana" + }, + "confirmNewMasterPass": { + "message": "Vahvista uusi pääsalasana" + }, + "encKeySettings": { + "message": "Salausavaimen asetukset" + }, + "kdfAlgorithm": { + "message": "KDF-algoritmi" + }, + "kdfIterations": { + "message": "KDF-toistot" + }, + "kdfIterationsDesc": { + "message": "Korkeampi KDF-toistojen määrä suojaa sinua raakaa laskentatehoa hyväksikäyttäviltä murtoyrityksiltä. Suosittelemme arvoksi vähintään $VALUE$.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Liian korkea KDF-toistojen määrä saattaa hidastaa kirjautumista ja holvin avausta heikkotehoisilla laitteilla. Suosittelemme toistomäärän nostoa $INCREMENT$ välein ja muutosten koekäyttöä kaikilla laitteillasi.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Vaihda KDF-asetuksia" + }, + "encKeySettingsChanged": { + "message": "Salausavaimen asetukset muutettu" + }, + "dangerZone": { + "message": "Vaaravyöhyke" + }, + "dangerZoneDesc": { + "message": "Ole varovainen, näiden toimintojen peruminen ei ole mahdollista!" + }, + "deauthorizeSessions": { + "message": "Mitätöi kaikki istunnot" + }, + "deauthorizeSessionsDesc": { + "message": "Oletko huolissasi, että tilisi on kirjautuneena muissa laitteissa? Jatka alla kirjataksesi ulos kaikki aiemmin käyttämäsi tietokoneet ja muut laitteet. Tämä turvallisuustoimenpide on suositeltava, jos olet aiemmin käyttänyt esimerkiksi julkista tietokonetta tai vahingossa tallentanut kirjautumisesi laitteeseen, joka ei ole sinun. Tämä mitätöi myös kaikki aiemmin muistetut kaksivaiheiset kirjautumiset." + }, + "deauthorizeSessionsWarning": { + "message": "Jatkamalla kirjaudut ulos nykyisestä istunnostasi ja joudut kirjautumaan uudelleen. Myös kaksivaiheinen kirjautuminen on tehtävä uudelleen. Aktiiviset istunnot toisilla laitteilla saattavat pysyä aktiivisina vielä tunnin ajan." + }, + "sessionsDeauthorized": { + "message": "Kaikki istunnot mitätöity" + }, + "purgeVault": { + "message": "Tyhjennä holvi" + }, + "purgedOrganizationVault": { + "message": "Organisaation holvi tyhjennetty." + }, + "vaultAccessedByProvider": { + "message": "Todentaja on käyttänyt holvia." + }, + "purgeVaultDesc": { + "message": "Jatka alla poistaaksesi kaikki holvisi kohteet ja kansiot. Kohteita, jotka on jaettu ja kuuluvat organisaatiolle, ei poisteta." + }, + "purgeOrgVaultDesc": { + "message": "Jatka alla poistaaksesi kaikki organisaatiosi holvissa olevat kohteet." + }, + "purgeVaultWarning": { + "message": "Tilin poisto on pysyvä toimenpide, eikä sen peruminen ole mahdollista." + }, + "vaultPurged": { + "message": "Holvisi tiedot on tyhjennetty." + }, + "deleteAccount": { + "message": "Poista tili" + }, + "deleteAccountDesc": { + "message": "Jatka alla poistaaksesi tilisi ja kaikki siihen liittyvät tiedot." + }, + "deleteAccountWarning": { + "message": "Tilin poisto on pysyvä toimenpide, eikä sen peruminen ole mahdollista." + }, + "accountDeleted": { + "message": "Tili poistettu" + }, + "accountDeletedDesc": { + "message": "Tilisi on suljettu ja kaikki siihen liittyvät tiedot on poistettu." + }, + "myAccount": { + "message": "Oma tili" + }, + "tools": { + "message": "Työkalut" + }, + "importData": { + "message": "Tuo tietoja" + }, + "importError": { + "message": "Tuontivirhe" + }, + "importErrorDesc": { + "message": "Tiedoissa, joita yritit tuoda, havaittiin ongelma. Korjaa alla listatut virheet lähdetiedostosta ja yritä uudelleen." + }, + "importSuccess": { + "message": "Tietojen tuonti holviisi onnistui." + }, + "importWarning": { + "message": "Olet tuomassa tietoja organisaatioon $ORGANIZATION$. Tietojasi saatetaan jakaa organisaation jäsenten kesken. Haluatko jatkaa?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Tietoja ei ole muotoiltu oikein. Tarkista tuotava tiedosto ja yritä uudelleen." + }, + "importNothingError": { + "message": "Mitään ei tuotu." + }, + "importEncKeyError": { + "message": "Virhe purettaessa viedyn tiedoston salausta. Salausavaimesi ei vastaa viennissä käytettyä salausavainta." + }, + "selectFormat": { + "message": "Valitse tuotavan tiedoston muoto" + }, + "selectImportFile": { + "message": "Valitse tuotava tiedosto" + }, + "orCopyPasteFileContents": { + "message": "tai kopioi ja liitä tuotavan tiedoston sisältö" + }, + "instructionsFor": { + "message": "$NAME$ -ohjeet", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Asetukset" + }, + "optionsDesc": { + "message": "Muokkaa verkkoholvisi käyttökokemusta." + }, + "optionsUpdated": { + "message": "Asetukset päivitetty" + }, + "language": { + "message": "Kieli" + }, + "languageDesc": { + "message": "Vaihda verkkoholvissa käytettävää kieltä." + }, + "disableIcons": { + "message": "Älä näytä sivustokuvakkeita" + }, + "disableIconsDesc": { + "message": "Kirjautumistietojen vieressä näytettävät sivustojen kuvakkeet helpottavat kohteiden tunnistusta." + }, + "enableGravatars": { + "message": "Käytä Gravatareja", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Käytä avatar-profiilikuvia Gravatar.com-palvelusta." + }, + "enableFullWidth": { + "message": "Käytä täyden leveyden asettelua", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Salli verkkoholvin laajentua selainikkunan koko leveydelle." + }, + "default": { + "message": "Oletus" + }, + "domainRules": { + "message": "Verkkotunnusten vastaavuudet" + }, + "domainRulesDesc": { + "message": "Jos kirjautumistietosi ovat samat useille verkkotunnuksille, voit merkata sivustot vastaavanlaisiksi. Bitwarden on luonut sinulle valmiiksi joitakin globaaleja verkkotunnuksia." + }, + "globalEqDomains": { + "message": "Globaalit verkkotunnusten vastaavuudet" + }, + "customEqDomains": { + "message": "Omat verkkotunnusten vastaavuudet" + }, + "exclude": { + "message": "Älä käytä sääntöä" + }, + "include": { + "message": "Käytä sääntöä" + }, + "customize": { + "message": "Muokkaa sääntöä" + }, + "newCustomDomain": { + "message": "Lisää oma verkkotunnus" + }, + "newCustomDomainDesc": { + "message": "Syötä verkkotunnukset pilkulla eroteltuina. Vain \"juuritason\" verkkotunnukset sallitaan, ei aliverkkotunnuksia. Eli syötä esimerkiksi \"www.google.com\" sijasta \"google.com\". Voit syöttää myös \"androidapp://package.name\" -muotoisia osoitteita yhdistääksesi Android-sovelluksia verkkotunnuksiin." + }, + "customDomainX": { + "message": "Oma verkkotunnus $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Verkkotunnukset päivitetty" + }, + "twoStepLogin": { + "message": "Kaksivaiheinen kirjautuminen" + }, + "twoStepLoginDesc": { + "message": "Suojaa tilisi vaatimalla sisäänkirjautumiseen toinen todennusvaihe." + }, + "twoStepLoginOrganizationDesc": { + "message": "Vaadi kaksivaiheinen kirjautuminen organisaatiosi käyttäjille määrittämällä todentajat organisaation tasolla." + }, + "twoStepLoginRecoveryWarning": { + "message": "Kaksivaiheisen kirjautumisen käyttöönotto voi lukita sinut pysyvästi ulos Bitwaren-tililtäsi. Palautuskoodi mahdollistaa pääsyn tilillesi myös silloin, kun et voi käyttää normaaleja kaksivaiheisen kirjautumisen todentajiasi (esim. hävität todennuslaitteesi tai se varastetaan). Myöskään Bitwardenin tuki ei voi auttaa sinua, jos menetät pääsyn tillesi. Suosittelemme, että kirjoitat muistiin tai tulostat palautuskoodin ja pidät sen tallessa turvallisessa paikassa (esim. kassakaapissa tai pankin tallelokerossa)." + }, + "viewRecoveryCode": { + "message": "Näytä palautuskoodi" + }, + "providers": { + "message": "Todennustarjoajat", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Ota käyttöön" + }, + "enabled": { + "message": "Käytössä" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium-jäsenyys" + }, + "premiumRequired": { + "message": "Premium vaaditaan" + }, + "premiumRequiredDesc": { + "message": "Käyttääksesi tätä toimintoa tarvitset Premium-jäsenyyden." + }, + "youHavePremiumAccess": { + "message": "Sinulla on Premium-käyttöoikeus" + }, + "alreadyPremiumFromOrg": { + "message": "Premium-toiminnot ovat jo käytettävissäsi, johtuen organisaatiosta, jonka jäsen olet." + }, + "manage": { + "message": "Hallinnoi" + }, + "disable": { + "message": "Poista käytöstä" + }, + "twoStepLoginProviderEnabled": { + "message": "Tämä kaksivaiheisen kirjautumisen todentaja on käytössä tililläsi." + }, + "twoStepLoginAuthDesc": { + "message": "Syötä pääsalasana muokataksesi kaksivaiheisen kirjautumisen asetuksia." + }, + "twoStepAuthenticatorDesc": { + "message": "Seuraa näitä vaiheita ottaaksesi käyttöön kaksivaiheisen kirjautumisen todennussovelluksella:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Lataa kaksivaiheisen kirjautumisen todennussovellus" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Tarvitsetko todennussovelluksen kaksivaiheista kirjautumista varten? Lataa jokin seuraavista" + }, + "iosDevices": { + "message": "iOS-laitteet" + }, + "androidDevices": { + "message": "Android-laitteet" + }, + "windowsDevices": { + "message": "Windows-laitteet" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Näitä sovelluksia suositellaan, mutta myös muut todennussovellukset toimivat." + }, + "twoStepAuthenticatorScanCode": { + "message": "Skannaa tämä QR-koodi todennussovelluksellasi" + }, + "key": { + "message": "Avain" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Syötä 6-numeroinen todennuskoodi todennussovelluksesta" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Jos sinun on lisättävä tai siirrettävä todennus toiseen laitteeseen, löydät alta todennussovelluksesi tarvitseman QR-koodin (tai avaimen)." + }, + "twoStepDisableDesc": { + "message": "Haluatko varmasti poistaa kaksivaiheisen kirjautumisen todentajan käytöstä?" + }, + "twoStepDisabled": { + "message": "Kaksivaiheisen kirjautumisen todentaja on poistettu käytöstä." + }, + "twoFactorYubikeyAdd": { + "message": "Lisää tilillesi YubiKey-todennuslaite" + }, + "twoFactorYubikeyPlugIn": { + "message": "Kytke YubiKey-todennuslaitteesi tietokoneesi USB-porttiin." + }, + "twoFactorYubikeySelectKey": { + "message": "Valitse alta ensimmäinen tyhjä YubiKey-syöttökenttä." + }, + "twoFactorYubikeyTouchButton": { + "message": "Paina YubiKey-todennuslaitteen painiketta." + }, + "twoFactorYubikeySaveForm": { + "message": "Tallenna lomake." + }, + "twoFactorYubikeyWarning": { + "message": "Alustan rajoitusten vuoksi, YubiKey-todennuslaitteen käyttö ei ole mahdollista kaikissa Bitwarden-sovelluksissa. Sinun tulisi ottaa käyttöön eri kaksivaiheisen kirjautumisen todentaja, jotta pääset tilillesi myös silloin kun YubiKey-laitteen käyttö ei onnistu. Tuetut alustat:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Verkkoholvi, työpöytäsovellus, CLI ja kaikki selainlaajennukset laitteessa, jossa on YubiKey-todennuslaitteen käyttöön soveltuva USB-portti." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobiilisovellukset laitteessa, jossa on NFC-ominaisuus tai YubiKey-todennuslaitteen kanssa yhteensopiva tietoliikenneportti." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn-todennuslaite $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC-tuki" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Jokin laitteeni tukee NFC-tekniikkaa." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Jos jokin YubiKey-todennuslaitteesi tukee NFC-tekniikkaa (kuten YubiKey NEO), näytetään mobiililaitteissa kehote NFC:n ollessa käytettävissä." + }, + "yubikeysUpdated": { + "message": "YubiKey-todennuslaitteet päivitetty" + }, + "disableAllKeys": { + "message": "Poista kaikki todennuslaitteet käytöstä" + }, + "twoFactorDuoDesc": { + "message": "Syötä Bitwarden-sovelluksen tiedot Duo Security -tilisi hallintapaneelista." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Seuraa näitä vaiheita ottaaksesi käyttöön kaksivaiheisen kirjautumisen todennuksen sähköpostitse:" + }, + "twoFactorEmailEnterEmail": { + "message": "Syötä sähköpostiosoite, johon haluat vastaanottaa todennuskoodit" + }, + "twoFactorEmailEnterCode": { + "message": "Syötä 6-numeroinen todennuskoodi sähköpostista" + }, + "sendEmail": { + "message": "Lähetä sähköposti" + }, + "twoFactorU2fAdd": { + "message": "Lisää tilillesi FIDO U2F -todennuslaite" + }, + "removeU2fConfirmation": { + "message": "Haluatko varmasti poistaa todennuslaitteen?" + }, + "twoFactorWebAuthnAdd": { + "message": "Lisää tilillesi WebAuthn-todennuslaite" + }, + "readKey": { + "message": "Lue todennuslaite" + }, + "keyCompromised": { + "message": "Avain on vaarantunut." + }, + "twoFactorU2fGiveName": { + "message": "Anna todennuslaitteelle helposti tunnistettava nimi." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Kytke todennuslaitteesi tietokoneen USB-porttiin ja klikkaa \"Lue todennuslaite\" -painiketta." + }, + "twoFactorU2fTouchButton": { + "message": "Jos todennuslaitteessa on painike, paina sitä." + }, + "twoFactorU2fSaveForm": { + "message": "Tallenna lomake." + }, + "twoFactorU2fWarning": { + "message": "Alustan rajoitusten vuoksi, FIDO U2F -todennuslaitteen käyttö ei ole mahdollista kaikissa Bitwarden-sovelluksissa. Sinun tulisi ottaa käyttöön eri kaksivaiheisen kirjautumisen todentaja, jotta pääset tilillesi myös silloin kun FIDO U2F -laitteen käyttö ei onnistu. Tuetut alustat:" + }, + "twoFactorU2fSupportWeb": { + "message": "Verkkoholvi ja selainlaajennukset pöytäkoneissa/kannettavissa, joissa on U2F-tekniikkaa tukeva selain (Chrome, Opera, Vivaldi tai Firefox FIDO U2F käyttöön otettuna)." + }, + "twoFactorU2fWaiting": { + "message": "Odotetaan, että painat todennuslaitteesi painiketta" + }, + "twoFactorU2fClickSave": { + "message": "Klikkaa alta \"Tallenna\" käyttääksesi tätä todennuslaitetta kaksivaiheiseen kirjautumiseen." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Todennuslaittetta luettaessa havaittiin ongelma. Yritä uudelleen." + }, + "twoFactorWebAuthnWarning": { + "message": "Alustan rajoitusten vuoksi, WebAuthn-todennuslaitteen käyttö ei ole mahdollista kaikissa Bitwarden-sovelluksissa. Sinun tulisi ottaa käyttöön eri kaksivaiheisen kirjautumisen todentaja, jotta pääset tilillesi myös silloin kun WebAuthn-laitteen käyttö ei onnistu. Tuetut alustat:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Verkkoholvi ja selainlaajennukset pöytäkoneissa/kannettavissa, joissa on WebAuthn-tekniikkaa tukeva selain (Chrome, Opera, Vivaldi tai Firefox FIDO U2F käyttöön otettuna)." + }, + "twoFactorRecoveryYourCode": { + "message": "Bitwardenin kaksivaiheisen kirjautumisen palautuskoodisi" + }, + "twoFactorRecoveryNoCode": { + "message": "Et ole vielä ottanut käyttöön yhtään kaksivaiheisen kirjautumisen tadentajaa. Otettuasi todennusmenetelmän käyttöön, löydät palautuskoodin täältä." + }, + "printCode": { + "message": "Tulosta koodi", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Raportit" + }, + "reportsDesc": { + "message": "Tunnista ja paikkaa verkkopalvelutunnustesi tietoturva-aukkoja painamalla alla olevia raportteja." + }, + "unsecuredWebsitesReport": { + "message": "Suojaamattomat sivustot" + }, + "unsecuredWebsitesReportDesc": { + "message": "Osoitteet, jotka alkavat http://, eivät hyödynnä parasta mahdollista salausta. Vaihda tällaiset kirjatumisosoitteet https://-muotoisiksi turvallisempaa selausta varten." + }, + "unsecuredWebsitesFound": { + "message": "Suojaamattomia verkkosivustoja löytyi" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Löysimme holvistasi $COUNT$ kohdetta suojaamattomilla URI-osoitteilla. Sinun tulisi muuttaa niiden URI suojattuun \"https://\" -muotoon, jos sivusto tukee sitä.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Holviisi tallennetuista kirjautumistiedoista ei löydetty suojaamattomia URI-osoitteita." + }, + "inactive2faReport": { + "message": "Tunnusten 2FA-tila" + }, + "inactive2faReportDesc": { + "message": "Kaksivaiheinen kirjautuminen (2FA) lisää tileillesi yhden suojaustason. Voit käyttää kaksivaiheiseen kirjautumiseen Bitwarden-todentajaa tai vaihtoehtoisia menetelmiä." + }, + "inactive2faFound": { + "message": "Tunnuksia ilman kaksivaiheista kirjautumista löytyi" + }, + "inactive2faFoundDesc": { + "message": "Löysimme holvistasi $COUNT$ sivustoa, joita ei ehkä ole määritetty käyttämään kaksivaiheista kirjautumista (2fa.directory -sivuston mukaan). Suojataksesi nämä tilit paremmin, sinun tulisi ottaa kaksivaiheinen kirjautuminen käyttöön.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Holvistasi ei löytynyt sivustoja, joille ei ole määritetty kaksivaiheista kirjautumista." + }, + "instructions": { + "message": "Ohjeet" + }, + "exposedPasswordsReport": { + "message": "Paljastuneet salasanat" + }, + "exposedPasswordsReportDesc": { + "message": "Tietovuodoissa paljastuneet salasanat ovat helppoja kohteita hyökkääjille. Vaihda nämä salasanat estääksesi mahdolliset murrot." + }, + "exposedPasswordsFound": { + "message": "Paljastuneita salasanoja löytyi" + }, + "exposedPasswordsFoundDesc": { + "message": "Löysimme holvistasi $COUNT$ kohdetta, jotka sisältävät tunnetuissa tietovuodoissa paljastuneita salasanoja. Näiden palveluiden salasanat tulisi vaihtaa.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Holviisi tallennetuista kirjautumistiedoista ei löydetty tunnetuissa tietovuodoissa paljastuneita salasanoja." + }, + "checkExposedPasswords": { + "message": "Tarkasta paljastuneet salasanat" + }, + "exposedXTimes": { + "message": "Paljastunut $COUNT$ kertaa", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Heikot salasanat" + }, + "weakPasswordsReportDesc": { + "message": "Heikot salasanat ovat hyökkääjien helposti arvattavissa. Bitwardenin salasanageneraattorin avulla voit luoda vahvoja salasanoja." + }, + "weakPasswordsFound": { + "message": "Heikkoja salasanoja löytyi" + }, + "weakPasswordsFoundDesc": { + "message": "Löysimme holvistasi $COUNT$ kohdetta, joiden salasanat eivät ole vahvoja. Nämä tulisi korvata vahvemmilla salasanoilla.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Holviisi tallennetuista kirjautumistiedoista ei löydetty heikkoja salasanoja." + }, + "reusedPasswordsReport": { + "message": "Toistuvat salasanat" + }, + "reusedPasswordsReportDesc": { + "message": "Samojen salasanojen toistuva käyttö helpottaa hakkereiden pääsyä useille käyttäjätileille. Vaihda kaikki nämä salasanat yksilöllisiksi." + }, + "reusedPasswordsFound": { + "message": "Toistuvia salasanoja löytyi" + }, + "reusedPasswordsFoundDesc": { + "message": "Löysimme holvistasi $COUNT$ toistuvasti käytettyä salasanaa. Ne tulisi vaihtaa yksilöllisiksi.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Holvissasi ei ole toistuvasti käytettyjä salasanoja." + }, + "reusedXTimes": { + "message": "Käytetty toistuvasti $COUNT$ kertaa", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Tietovuodot" + }, + "breachDesc": { + "message": "Murretut tilit saattavat paljastaa henkilötietosi. Suojaa tilit kaksivaiheisella todennuksella tai vahvemmilla salasanoilla." + }, + "breachCheckUsernameEmail": { + "message": "Tarkista kaikki käyttämäsi käyttäjätunnukset tai sähköpostiosoitteet." + }, + "checkBreaches": { + "message": "Tarkasta tietovuodot" + }, + "breachUsernameNotFound": { + "message": "Käyttäjätunnusta $USERNAME$ ei löytynyt yhdestäkään tunnetusta tietovuodosta.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Hyviä uutisia", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "Käyttäjätunnus $USERNAME$ löytyi $COUNT$ tapahtuneesta tietovuodosta.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Vuotaneita kirjautumistietoja löytyi" + }, + "compromisedData": { + "message": "Vaarantuneet tiedot" + }, + "website": { + "message": "Verkkosivusto" + }, + "affectedUsers": { + "message": "Koskee käyttäjiä" + }, + "breachOccurred": { + "message": "Tietovuoto tapahtui" + }, + "breachReported": { + "message": "Tietovuoto paljastui" + }, + "reportError": { + "message": "Raporttia ladatessa tapahtui virhe. Yritä uudelleen" + }, + "billing": { + "message": "Laskutus" + }, + "accountCredit": { + "message": "Tilin saldo", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Tilin saldo", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Lisää saldoa", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Summa", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Lisätty saldo näkyy tililläsi kun maksu on käsitelty loppuun. Joissakin maksutavoissa on viivettä ja niiden käsittely saattaa kestää kauemmin muita maksutapoja pidempään." + }, + "makeSureEnoughCredit": { + "message": "Varmista, että tililläsi on riittävästi saldoa tälle ostolle. Jos tililläsi ei ole tarpeeksi saldoa, voidaan erotus veloittaa tallennettua oletusmaksutapaa käyttäen. Voit lisätä tilillesi saldoa \"Laskutus\" -sivulta." + }, + "creditAppliedDesc": { + "message": "Tilisi saldoa voidaan käyttää ostoksiin. Kaikki käytettävissä oleva saldo kohdistetaan automaattisesti tälle tilille luotuihin laskuihin." + }, + "goPremium": { + "message": "Päivitä Premiumiin", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Olet päivittänyt Premiumiin." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Päivitä tilisi Premium-jäsenyyteen ja avaa joitakin hienoja lisäominaisuuksia." + }, + "premiumSignUpStorage": { + "message": "1 Gt salattua tallennustilaa tiedostoliitteille." + }, + "premiumSignUpTwoStep": { + "message": "Muita kaksivaiheisen kirjautumisen todentajia, kuten YubiKey, FIDO U2F ja Duo Security." + }, + "premiumSignUpEmergency": { + "message": "Varmuuskäyttö" + }, + "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-ominaisuudet. Lisää tulossa pian!" + }, + "premiumPrice": { + "message": "Kaikki tämä vain $PRICE$/vuosi!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Laajennukset" + }, + "premiumAccess": { + "message": "Premium-käyttöoikeus" + }, + "premiumAccessDesc": { + "message": "Voit lisätä Premium-käyttöoikeuden kaikille organisaatiosi jäsenille $PRICE$/$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Lisää tallennustilaa (Gt)" + }, + "additionalStorageGbDesc": { + "message": "Gigatavujen määrä" + }, + "additionalStorageIntervalDesc": { + "message": "Tilaukseesi sisältyy $SIZE$ salattua tallennustilaa. Voit saada lisätilaa $PRICE$ per Gt/$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Yhteenveto" + }, + "total": { + "message": "Yhteensä" + }, + "year": { + "message": "vuosi" + }, + "month": { + "message": "kuukausi" + }, + "monthAbbr": { + "message": "kk", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Maksutapaasi veloitetaan välittömästi ja jatkossa kerran vuodessa. Voit irtisanoa tilauksen koska tahansa." + }, + "paymentCharged": { + "message": "Maksutapaasi veloitetaan välittömästi ja jatkossa joka $INTERVAL$. Voit irtisanoa tilauksen koska tahansa.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Tilauksesi sisältää ilmaisen 7 päivän kokeilujakson. Maksutapaasi ei veloiteta ennen kokeilujakson päättymistä. Voit irtisanoa tilauksen koska tahansa." + }, + "paymentInformation": { + "message": "Maksutiedot" + }, + "billingInformation": { + "message": "Laskutustiedot" + }, + "creditCard": { + "message": "Maksukortti" + }, + "paypalClickSubmit": { + "message": "Klikkaa PayPal-painiketta kirjautuaksesi PayPal-tilillesi ja sen jälkeen alta \"Jatka\"." + }, + "cancelSubscription": { + "message": "Irtisano tilaus" + }, + "subscriptionCanceled": { + "message": "Tilaus on irtisanottu." + }, + "pendingCancellation": { + "message": "Odottaa irtisanomista" + }, + "subscriptionPendingCanceled": { + "message": "Tilaus on merkitty päättymään kuluvan laskutuskauden lopussa." + }, + "reinstateSubscription": { + "message": "Palauta tilaus voimaan" + }, + "reinstateConfirmation": { + "message": "Haluatko varmasti poistaa odottavan irtisanomispyynnön ja pitää tilauksesi voimassa?" + }, + "reinstated": { + "message": "Tilauksesi on palautettu voimaan." + }, + "cancelConfirmation": { + "message": "Haluatko varmasti irtisanoa tilauksen? Menetät pääsyn kaikkiin tilauksen tarjoamiin ominaisuuksiin kuluvan laskutuskauden lopussa." + }, + "canceledSubscription": { + "message": "Tilaus on irtisanottu." + }, + "neverExpires": { + "message": "Ei eräänny koskaan" + }, + "status": { + "message": "Tila" + }, + "nextCharge": { + "message": "Seuraava veloitus" + }, + "details": { + "message": "Tiedot" + }, + "downloadLicense": { + "message": "Lataa lisenssi" + }, + "updateLicense": { + "message": "Päivitä lisenssi" + }, + "updatedLicense": { + "message": "Lisenssi päivitetty" + }, + "manageSubscription": { + "message": "Hallinnoi tilausta" + }, + "storage": { + "message": "Tallennustila" + }, + "addStorage": { + "message": "Kasvata tallennustilaa" + }, + "removeStorage": { + "message": "Pienennä tallennustilaa" + }, + "subscriptionStorage": { + "message": "Tilaukseesi sisältyy $MAX_STORAGE$ Gt salattua tallennustilaa, josta $USED_STORAGE$ on tällä hetkellä käytössä.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Maksutapa" + }, + "noPaymentMethod": { + "message": "Maksutapoja ei ole tallennettu." + }, + "addPaymentMethod": { + "message": "Lisää maksutapa" + }, + "changePaymentMethod": { + "message": "Vaihda maksutapaa" + }, + "invoices": { + "message": "Laskut" + }, + "noInvoices": { + "message": "Laskuja ei ole." + }, + "paid": { + "message": "Maksettu", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Ei maksettu", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Tapahtumat", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Tapahtumia ei ole." + }, + "chargeNoun": { + "message": "Veloitus", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Hyvitys", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Mahdolliset kulut näkyvät tiliotteessasi nimellä $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Lisättävän tallennustilan määrä (Gt)" + }, + "gbStorageRemove": { + "message": "Poistettava tallennustila, Gt" + }, + "storageAddNote": { + "message": "Tallennuskapasiteetin lisäys muuttaa kokonaislaskutustasi ja korotus veloitetaan tilillesi tallennetulta maksutavalta välittömästi. Ensimmäinen veloitus sovitetaan nykyisen laskutuskautesi jäljellä olevalle ajalle." + }, + "storageRemoveNote": { + "message": "Tallennuskapasiteetin vähennys muuttaa kokonaislaskutustasi ja tämä huomioidaan seuraavan veloituksen yhteydessä." + }, + "adjustedStorage": { + "message": "Tallennustilaa muutettiin $AMOUNT$ Gt.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Ota yhteyttä asiakaspalveluun" + }, + "updatedPaymentMethod": { + "message": "Maksutapa päivitetty." + }, + "purchasePremium": { + "message": "Osta Premium" + }, + "licenseFile": { + "message": "Lisenssitiedosto" + }, + "licenseFileDesc": { + "message": "Lisenssitiedostosi nimeksi tulee $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Päivittääksesi tilisi Premium-jäsenyyteen, on sinun ladattava voimassa oleva lisenssitiedosto." + }, + "uploadLicenseFileOrg": { + "message": "Luodaksesi omassa palvelinympäristössäsi isännöitävän organisaation, on sinun ladattava voimassa oleva lisenssitiedosto." + }, + "accountEmailMustBeVerified": { + "message": "Tilisi sähköpostiosoite tulee vahvistaa." + }, + "newOrganizationDesc": { + "message": "Organisaatioiden avulla voit jakaa osia holvisi sisällöstä muiden kanssa sekä hallita yhteisöihin kuuluvia käyttäjiä kuten perhettä, pientä tiimiä tai suurta yritystä." + }, + "generalInformation": { + "message": "Yleiset tiedot" + }, + "organizationName": { + "message": "Organisaation nimi" + }, + "accountOwnedBusiness": { + "message": "Tlin omistaa yritys." + }, + "billingEmail": { + "message": "Laskutuksen sähköpostiosoite" + }, + "businessName": { + "message": "Yrityksen nimi" + }, + "chooseYourPlan": { + "message": "Valitse tilaustyyppi" + }, + "users": { + "message": "Käyttäjät" + }, + "userSeats": { + "message": "Käyttäjäpaikat" + }, + "additionalUserSeats": { + "message": "Lisättävät käyttäjäpaikat" + }, + "userSeatsDesc": { + "message": "Käyttäjäpaikkojen määrä" + }, + "userSeatsAdditionalDesc": { + "message": "Tilaukseesi kuuluu $BASE_SEATS$ käyttäjäpaikkaa. Voit lisätä käyttäjäpaikkoja hintaan $SEAT_PRICE$ per käyttäjä/kuukausi.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Kuinka monta käyttäjäpaikkaa tarvitset? Voit myös hankkia paikkoja tarvittaessa lisää myöhemmin." + }, + "planNameFree": { + "message": "Ilmainen", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Koekäyttöön tai yksityiseen käyttöön jaettavaksi $COUNT$ käyttäjän kanssa.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Perheille" + }, + "planDescFamilies": { + "message": "Henkilökohtaiseen käyttöön, jaettavaksi perheen ja ystävien kanssa." + }, + "planNameTeams": { + "message": "Tiimit" + }, + "planDescTeams": { + "message": "Yrityksille ja muille yhteisöille." + }, + "planNameEnterprise": { + "message": "Yritykset" + }, + "planDescEnterprise": { + "message": "Yrityksille ja muille suurille organisaatioille." + }, + "freeForever": { + "message": "Ilmainen ikuisesti" + }, + "includesXUsers": { + "message": "sisältää $COUNT$ käyttäjää", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Lisättävät käyttäjät" + }, + "costPerUser": { + "message": "$COST$ per käyttäjä", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Rajoitettu $COUNT$ käyttäjään (sinut mukaanlukien)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Rajoitettu $COUNT$ kokoelmaan", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Lisää ja jaa enintään $COUNT$ käyttäjän kanssa", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Lisää ja jaa rajattoman käyttäjämäärän kanssa" + }, + "createUnlimitedCollections": { + "message": "Luo rajattomasti kokoelmia" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ salattua tallennustilaa", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Suoritus omassa palvelinympäristössä (valinnainen)" + }, + "usersGetPremium": { + "message": "Käyttäjät saavat Premium-ominaisuuksien käyttöoikeuden" + }, + "controlAccessWithGroups": { + "message": "Hallinnoi käyttäjien oikeuksia ryhmillä" + }, + "syncUsersFromDirectory": { + "message": "Synkronoi käyttäjät ja ryhmät käyttäjähakemistosta" + }, + "trackAuditLogs": { + "message": "Seuraa käyttäjien toimia auditointilokeilla" + }, + "enforce2faDuo": { + "message": "Pakota kaksivaiheinen kirjautuminen Duo Securityn kautta" + }, + "priorityCustomerSupport": { + "message": "Ensisijainen asiakastuki" + }, + "xDayFreeTrial": { + "message": "$COUNT$ päivän ilmainen kokeilujakso, irtisano koska tahansa", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Kuukausittainen" + }, + "annually": { + "message": "Vuotuinen" + }, + "basePrice": { + "message": "Lähtöhinta" + }, + "organizationCreated": { + "message": "Organisaatio luotu" + }, + "organizationReadyToGo": { + "message": "Uusi organisaatiosi on valmis käyttöön!" + }, + "organizationUpgraded": { + "message": "Organisaatiosi tilausta on päivitetty." + }, + "leave": { + "message": "Eroa" + }, + "leaveOrganizationConfirmation": { + "message": "Haluatko varmasti erota organisaatiosta?" + }, + "leftOrganization": { + "message": "Olet poistunut organisaatiosta." + }, + "defaultCollection": { + "message": "Oletuskokoelma" + }, + "getHelp": { + "message": "Hanki apua" + }, + "getApps": { + "message": "Hanki sovellukset" + }, + "loggedInAs": { + "message": "Kirjautuneena käyttäjänä" + }, + "eventLogs": { + "message": "Tapahtumalokit" + }, + "people": { + "message": "Ihmiset" + }, + "policies": { + "message": "Käytännöt" + }, + "singleSignOn": { + "message": "Kertakirjautuminen" + }, + "editPolicy": { + "message": "Muokkaa käytäntöä" + }, + "groups": { + "message": "Ryhmät" + }, + "newGroup": { + "message": "Uusi ryhmä" + }, + "addGroup": { + "message": "Lisää ryhmä" + }, + "editGroup": { + "message": "Muokkaa ryhmää" + }, + "deleteGroupConfirmation": { + "message": "Haluatko varmasti poistaa ryhmän?" + }, + "removeUserConfirmation": { + "message": "Haluatko varmasti poistaa käyttäjän?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Varoitus! Tämä käyttäjä tarvitsee salauksensa hallintaan Key Connectoria. Käyttäjän poistaminen organisaatiostasi poistaa heidän tilinsä käytöstä pysvästi. Toimenpide on pysyvä, eikä sen peruminen ole mahdollista. Haluatko jatkaa?" + }, + "externalId": { + "message": "Ulkoinen ID" + }, + "externalIdDesc": { + "message": "Ulkoista ID-tunnusta voidaan käyttää viitteenä tai linkittää tämä resurssi ulkoiseen järjestelmään, kuten käyttäjähakemistoon." + }, + "accessControl": { + "message": "Käyttöoikeuden laajuus" + }, + "groupAccessAllItems": { + "message": "Tällä ryhmällä on käyttö- ja muokkausoikeudet kaikkiin kohteisiin." + }, + "groupAccessSelectedCollections": { + "message": "Ryhmällä on käyttöoikeus vain valittuihin kokoelmiin." + }, + "readOnly": { + "message": "Vain luku" + }, + "newCollection": { + "message": "Uusi kokoelma" + }, + "addCollection": { + "message": "Lisää kokoelma" + }, + "editCollection": { + "message": "Muokkaa kokoelmaa" + }, + "deleteCollectionConfirmation": { + "message": "Haluatko varmasti poistaa kokoelman?" + }, + "editUser": { + "message": "Muokkaa käyttäjää" + }, + "inviteUser": { + "message": "Kutsu käyttäjä" + }, + "inviteUserDesc": { + "message": "Kutsu organisaatioosi uusi käyttäjä syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, heitä pyydetään luomaan uusi tili." + }, + "inviteMultipleEmailDesc": { + "message": "Voit kutsua korkeintaan $COUNT$ käyttäjää kerrallaan, erottelemalla listan sähköpostiosoitteista pilkuilla.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Käyttäjä on ottanut kaksivaiheisen kirjautumisen käyttöön tilinsä suojaamiseksi." + }, + "userAccessAllItems": { + "message": "Käyttäjällä on käyttö- ja muokkausoikeus kaikkiin kohteisiin." + }, + "userAccessSelectedCollections": { + "message": "Käyttäjällä on käyttöoikeus vain valittuihin kokoelmiin." + }, + "search": { + "message": "Hae" + }, + "invited": { + "message": "Kutsuttu" + }, + "accepted": { + "message": "Hyväksytty" + }, + "confirmed": { + "message": "Vahvistettu" + }, + "clientOwnerEmail": { + "message": "Asiakkaan omistajan sähköposti" + }, + "owner": { + "message": "Omistaja" + }, + "ownerDesc": { + "message": "Korkeimman käyttöoikeustason käyttäjä, jolla on käyttö- ja hallintaoikeus koko organisaatioosi." + }, + "clientOwnerDesc": { + "message": "Tämän käyttäjän on oltava todentajariippumaton. Jos todentajan yhteys organisaatioon katkaistaan, säilyttää tämä käyttäjä organisaation omistajuuden." + }, + "admin": { + "message": "Ylläpitäjä" + }, + "adminDesc": { + "message": "Ylläpitäjillä on käyttö- ja hallintaoikeus kaikkiin organisaatiosi kohteisiin, kokoelmiin ja käyttäjiin." + }, + "user": { + "message": "Käyttäjä" + }, + "userDesc": { + "message": "Tavallinen käyttäjä, jolla on käyttöoikeus valittuihin organisaatiosi kokoelmiin." + }, + "manager": { + "message": "Valvoja" + }, + "managerDesc": { + "message": "Valvojilla on käyttö- ja määritysoikeus organisaatiosi kokoelmiin." + }, + "all": { + "message": "Kaikki" + }, + "refresh": { + "message": "Päivitä" + }, + "timestamp": { + "message": "Aikaleima" + }, + "event": { + "message": "Tapahtuma" + }, + "unknown": { + "message": "Tuntematon" + }, + "loadMore": { + "message": "Lataa lisää" + }, + "mobile": { + "message": "Mobiili", + "description": "Mobile app" + }, + "extension": { + "message": "Laajennus", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Työpöytä", + "description": "Desktop app" + }, + "webVault": { + "message": "Verkkoholvi" + }, + "loggedIn": { + "message": "Kirjauduttu sisään." + }, + "changedPassword": { + "message": "Tilin salasana vaihdettu." + }, + "enabledUpdated2fa": { + "message": "Kaksivaiheinen kirjautuminen otettiin käyttöön/päivitettiin." + }, + "disabled2fa": { + "message": "Kaksivaiheinen kirjautuminen poistettiin käytöstä." + }, + "recovered2fa": { + "message": "Tili vapautettiin kaksivaiheisesta kirjautumisesta." + }, + "failedLogin": { + "message": "Sisäänkirjautumisyritys epäonnistui väärän salasanan vuoksi." + }, + "failedLogin2fa": { + "message": "Kirjautuminen epäonnistui virheellisen kaksivaiheisen kirjautumisen todennuksen vuoksi." + }, + "exportedVault": { + "message": "Holvi viety." + }, + "exportedOrganizationVault": { + "message": "Organisaation holvi viety." + }, + "editedOrgSettings": { + "message": "Organisaation asetuksia muokattu." + }, + "createdItemId": { + "message": "Kohde $ID$ luotu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Kohdetta $ID$ muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sirrettiin kohde $ID$ roskakoriin.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Kohde $ID$ siirrettiin organisaatiolle.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Kohdetta $ID$ tarkasteltu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Tarkasteltiin kohteen $ID$ salasanaa.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Tarkasteltiin kohteen $ID$ piilotettua kenttää.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Tarkasteltiin kohteen $ID$ turvakoodia.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Kopioitiin kohteen $ID$ salasana.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Kopioitiin kohteen $ID$ piilotettu kenttä.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kohteen $ID$ turvakoodi kopioitu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Kohde $ID$ täytetty automaattisesti.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Kokoelma $ID$ luotu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Kokoelmaa $ID$ muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Kokoelma $ID$ poistettu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Käytäntöä $ID$ muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Ryhmä $ID$ luotu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Ryhmää $ID$ muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Ryhmä $ID$ poistettu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Käyttäjä $ID$ poistettu.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Tiedostoliite luotu kohteelle $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Kohteen $ID$ tiedostoliite poistettu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Kohteen $ID$ kokoelmia muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Käyttäjä $ID$ kutsuttu.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Käyttäjä $ID$ vahvistettu.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Käyttäjää $ID$ muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Käyttäjän $ID$ ryhmiä muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Kertakirjautumisen (SSO) liitos poistettiin käyttäjältä $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organisaatio $ID$ luotu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organisaatio $ID$ luotu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organisaatio $ID$ poistettu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Organisaation $ID$ holvia käytetty.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Laite" + }, + "view": { + "message": "Näytä" + }, + "invalidDateRange": { + "message": "Virheellinen ajanjakso." + }, + "errorOccurred": { + "message": "Tapahtui virhe." + }, + "userAccess": { + "message": "Käyttäjien käyttöoikeudet" + }, + "userType": { + "message": "Käyttäjän tyyppi" + }, + "groupAccess": { + "message": "Ryhmän käyttöoikeudet" + }, + "groupAccessUserDesc": { + "message": "Muokkaa ryhmiä, joihin tämä käyttäjä kuuluu." + }, + "invitedUsers": { + "message": "Kutsutut käyttäjät." + }, + "resendInvitation": { + "message": "Lähetä kutsu uudelleen" + }, + "resendEmail": { + "message": "Lähetä sähköposti uudelleen" + }, + "hasBeenReinvited": { + "message": "$USER$ on kutsuttu uudelleen.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Vahvista" + }, + "confirmUser": { + "message": "Vahvista käyttäjä" + }, + "hasBeenConfirmed": { + "message": "$USER$ on vahvistettu.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Vahvista käyttäjät" + }, + "usersNeedConfirmed": { + "message": "Sinulla on käyttäjiä, jotka ovat hyväksyneet kutsunsa, mutta heidän liittymisensä tulee vielä vahvistaa. Käyttäjillä ei ole organisaation käyttöoikeutta ennen vahvistusta." + }, + "startDate": { + "message": "Aloituspäivä" + }, + "endDate": { + "message": "Päättymispäivä" + }, + "verifyEmail": { + "message": "Vahvista sähköpostiosoite" + }, + "verifyEmailDesc": { + "message": "Vahvista käyttäjätilisi sähköpostiosoite käyttääksesi kaikkia ominaisuuksia." + }, + "verifyEmailFirst": { + "message": "Tilisi sähköpostiosoite tulee ensin vahvistaa." + }, + "checkInboxForVerification": { + "message": "Tarkasta, onko vahvistuslinkki sähköpostissasi." + }, + "emailVerified": { + "message": "Sähköpostiosoitteesi on vahvistettu." + }, + "emailVerifiedFailed": { + "message": "Sähköpostiosoitteesi vahvistus ei onnistunut. Yritä lähettää uusi vahvistussähköposti." + }, + "emailVerificationRequired": { + "message": "Sähköpostiosoitteen vahvistus vaaditaan" + }, + "emailVerificationRequiredDesc": { + "message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi tätä ominaisuutta." + }, + "updateBrowser": { + "message": "Päivitä selain" + }, + "updateBrowserDesc": { + "message": "Käytät selainta, jota ei tueta. Verkkoholvi ei välttämättä toimi oikein." + }, + "joinOrganization": { + "message": "Liity organisaatioon" + }, + "joinOrganizationDesc": { + "message": "Sinut on kutsuttu liittymään yllä mainittuun organisaatioon. Hyväksyäksesi kutsun, sinun tulee kirjautua tilillesi tai luoda uusi Bitwarden-tili." + }, + "inviteAccepted": { + "message": "Kutsu hyväksytty" + }, + "inviteAcceptedDesc": { + "message": "Saat organisaation käyttöoikeuden ylläpitäjän vahvistettua jäsentyytesi. Saat vahvistuksesta ilmoituksen sähköpostitse." + }, + "inviteAcceptFailed": { + "message": "Kutsun hyväksyntä ei onnistu. Pyydä organisaation ylläpitäjää lähettämään uusi kutsu." + }, + "inviteAcceptFailedShort": { + "message": "Kutsua ei voitu hyväksyä. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Muista sähköpostiosoite" + }, + "recoverAccountTwoStepDesc": { + "message": "Jos et pääse tilillesi käyttämilläsi kaksivaiheisen kirjautumisen todentajilla, voit kaksivaiheisen kirjautumisen palautuskoodilla poistaa kaikki tilillesi määritetyt todentajat käytöstä." + }, + "recoverAccountTwoStep": { + "message": "Vapauta tilin kaksivaiheinen kirjautuminen" + }, + "twoStepRecoverDisabled": { + "message": "Kaksivaiheinen kirjautuminen on poistettu käytöstä tililtäsi." + }, + "learnMore": { + "message": "Lue lisää" + }, + "deleteRecoverDesc": { + "message": "Kirjoita sähköpostiosoitteesi alle palauttaaksesi ja poistaaksesi tilisi." + }, + "deleteRecoverEmailSent": { + "message": "Jos tilisi on olemassa, olemme lähettäneet sinulle lisäohjeita sähköpostitse." + }, + "deleteRecoverConfirmDesc": { + "message": "Olet pyytänyt Bitwarden-tilisi poistoa. Paina alla olevaa painiketta vahvistaaksesi." + }, + "myOrganization": { + "message": "Oma organisaatio" + }, + "deleteOrganization": { + "message": "Poista organisaatio" + }, + "deletingOrganizationContentWarning": { + "message": "Vahvista organisaation $ORGANIZATION$ ja kaikkien sen kohteiden poisto syöttämällä pääsalasanasi. Organisaation $ORGANIZATION$ tiedot holvissa:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Käyttäjätilit pysyvät poiston jälkeen toiminnassa, mutta niiden kytkös tähän organisaatioon poistuu." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Organisaation $ORGANIZATION$ poisto on pysyvää, eikä sitä ole mahdollista perua.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisaatio poistettu" + }, + "organizationDeletedDesc": { + "message": "Organisaatio ja kaikki siihen liittyvät tiedot on poistettu." + }, + "organizationUpdated": { + "message": "Organisaatio päivitetty" + }, + "taxInformation": { + "message": "Verotiedot" + }, + "taxInformationDesc": { + "message": "Yhdysvalloissa olevilta asiakkailta vaaditaan postinumero myyntiverotuksen vaatimusten vuoksi. Muiden maiden asiakkaat voivat halutessaan toimittaa verotunnistenumeron (ALV/GST) ja/tai osoitteen, joka kirjataan laskuihin." + }, + "billingPlan": { + "message": "Tilaustyyppi", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Vaihda tilaustyyppiä", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Päivitä tilisi toiseen tilaustyyppiin toimittamalla alla olevat tiedot. Varmistathan, että tilillesi on lisätty toimiva maksutapa.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Lasku #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Näytä lasku" + }, + "downloadInvoice": { + "message": "Lataa lasku" + }, + "verifyBankAccount": { + "message": "Vahvista pankkitili" + }, + "verifyBankAccountDesc": { + "message": "Olemme tehneet kaksi pientä mikrotalletusta pankkitilillesi (nämä saattavat näkyä vasta 1-2 työpäivän kuluttua). Kirjoita talletusten määrät vahvistaaksesi pankkitilin." + }, + "verifyBankAccountInitialDesc": { + "message": "Maksu tilisiirrolla on vain Yhdysvaltalaisten asiakkaiden käytettävissä ja sinun on vahvistettava pankkitilisi. Teemme kaksi pientä mikrotalletusta seuraavien 1-2 arkipäivän aikana. Syötä tallennetut määrät organisaation laskutussivulle vahvistaaksesi pankkitilin." + }, + "verifyBankAccountFailureWarning": { + "message": "Pankkitilin vahvistamatta jättäminen johtaa maksamattomaan laskuun ja tilauksesi käytöstä poistoon." + }, + "verifiedBankAccount": { + "message": "Pankkitili on vahvistettu." + }, + "bankAccount": { + "message": "Pankkitili" + }, + "amountX": { + "message": "Summa $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Reititysnumero", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Tilinumero" + }, + "accountHolderName": { + "message": "Tilin omistajan nimi" + }, + "bankAccountType": { + "message": "Tilin tyyppi" + }, + "bankAccountTypeCompany": { + "message": "Yritys tai yhteisö" + }, + "bankAccountTypeIndividual": { + "message": "Yksityinen" + }, + "enterInstallationId": { + "message": "Syötä asennuksesi ID-tunnus" + }, + "limitSubscriptionDesc": { + "message": "Rajoita tilauksesi käyttäjäpaikkojen määrää. Kun määrä täyttyy, et voi kutsua uusia käyttäjiä." + }, + "maxSeatLimit": { + "message": "Käyttäjäpaikkojen enimmäismäärä (valinnainen)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Käyttäjäpaikkojen hintaennuste" + }, + "addSeats": { + "message": "Lisää käyttäjäpaikkoja", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Poista käyttäjäpaikkoja", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Tilausmuutokset aiheuttavat muutoksia laskutukseesi. Jos hiljattain kutsuttujen käyttäjien määrä ylittää tilauksesi käyttäjäpaikkojen enimmäismäärän, veloitetaan suhteutettu hinta uusista käyttäjistä välittömästi." + }, + "subscriptionUserSeats": { + "message": "Tilauksesi kattaa kaikkiaan $COUNT$ käyttäjää.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Rajoita tilausta (valinnainen)" + }, + "subscriptionSeats": { + "message": "Tilauksen käyttäjäpaikat" + }, + "subscriptionUpdated": { + "message": "Tilaus päivitetty" + }, + "additionalOptions": { + "message": "Lisävalinnat" + }, + "additionalOptionsDesc": { + "message": "Jos tarvitset apua tilauksesi hallinnassa, ota yhteyttä asiakaspalveluun." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Tilausmuutokset aiheuttavat muutoksia laskutukseesi. Jos hiljattain lisättyjen käyttäjien määrä ylittää tilauksesi käyttäjäpaikkojen enimmäismäärän, veloitetaan suhteutettu hinta uusista käyttäjistä välittömästi." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Tilausmuutokset johtavat suhteutettuihin muutoksiin laskutuksessasi. Jos hiljattain lisättyjen käyttäjien määrä ylittää tilauksesi käyttäjäpaikkojen enimmäismäärän, veloitetaan suhteutettu hinta uusista käyttäjistä välittömästi, kunnes $MAX$ paikan enimmäismäärä saavutetaan.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Voit kutsua enintään $COUNT$ käyttäjää päivittämättä tilaustasi.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Voit kutsua enintään $COUNT$ käyttäjää päivittämättä tilaustasi. Ota yhteyttä tukeen päivittääksesi.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Tilauksesi kattaa kaikkiaan $COUNT$ käyttäjää. Tilauksesi on sponsoroitu ja se laskutetaan ulkoiselta organisaatiolta.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Tilausmuutokset johtavat suhteutettuihin muutoksiin laskutuksessasi. Voit kutsua enintään $COUNT$ käyttäjää kasvattamatta tilauksesi käyttäjäpaikkojen määrää.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Lisättävät käyttäjäpaikat" + }, + "seatsToRemove": { + "message": "Poistettavat käyttäjäpaikat" + }, + "seatsAddNote": { + "message": "Käyttäjäpaikkojen lisäys muuttaa kokonaislaskutustasi ja korotus veloitetaan tilillesi tallennetulta maksutavalta välittömästi. Ensimmäinen veloitus sovitetaan nykyisen laskutuskautesi jäljellä olevalle ajalle." + }, + "seatsRemoveNote": { + "message": "Käyttäjäpaikkojen vähennys muuttaa kokonaislaskutustasi ja tämä huomioidaan seuraavan veloituksen yhteydessä." + }, + "adjustedSeats": { + "message": "Muutettu $AMOUNT$ käyttäjäpaikkaa.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Avain päivitetty" + }, + "updateKeyTitle": { + "message": "Päivitä avain" + }, + "updateEncryptionKey": { + "message": "Päivitä salausavain" + }, + "updateEncryptionKeyShortDesc": { + "message": "Käytät tällä hetkellä vanhentunutta salausjärjestelmää." + }, + "updateEncryptionKeyDesc": { + "message": "Olemme siirtyneet suurempiin salausavaimiin, jotka tarjoavat parempaa suojausta sekä uudempia toimintoja. Salausavaimesi päivitys on helppoa: syötä vain pääsalasanasi alle. Tästä päivityksestä tulee myöhemmin pakollinen." + }, + "updateEncryptionKeyWarning": { + "message": "Salausavaimesi päivityksen jälkeen, sinun tulee kirjautua ulos ja sitten takaisin sisään kaikissa Bitwarden-sovelluksissa, jotka ovat käytössäsi (esim. mobiilisovellus ja selainlaajennukset). Uudelleenkirjautumisen (joka lataa uuden salausavaimen) suorittamatta jättäminen saattaa johtaa tietojen vaurioitumiseen. Yritämme kirjata sinut ulos autmaattisesti, mutta tämä voi tapahtua vasta jonkin ajan kuluttua." + }, + "updateEncryptionKeyExportWarning": { + "message": "Tallentamistasi salatuista vienneistä tulee käyttökelvottomia." + }, + "subscription": { + "message": "Tilaus" + }, + "loading": { + "message": "Ladataan" + }, + "upgrade": { + "message": "Päivitä" + }, + "upgradeOrganization": { + "message": "Päivitä organisaatio" + }, + "upgradeOrganizationDesc": { + "message": "Ominaisuus ei ole käytettävissä ilmaisille organisaatioille. Vaihda maksulliseen tilaustyyppiin avataksesi enemmän ominaisuuksia." + }, + "createOrganizationStep1": { + "message": "Luo organisaatio: Vaihe 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Ennen kuin voit luoda organisaation, sinun tulee luoda ilmainen henkilökohtainen tili." + }, + "refunded": { + "message": "Hyvitetty" + }, + "nothingSelected": { + "message": "Et ole valinnut mitään." + }, + "acceptPolicies": { + "message": "Valitsemalla tämän ruudun hyväksyt seuraavat:" + }, + "acceptPoliciesError": { + "message": "Käyttöehtoja ja tietosuojakäytäntöä ei ole vahvistettu." + }, + "termsOfService": { + "message": "Käyttöehdot" + }, + "privacyPolicy": { + "message": "Tietosuojakäytäntö" + }, + "filters": { + "message": "Suodattimet" + }, + "vaultTimeout": { + "message": "Holvin aikakatkaisu" + }, + "vaultTimeoutDesc": { + "message": "Valitse milloin holvin aikakatkaisu tapahtuu ja suorita valittu toiminto." + }, + "oneMinute": { + "message": "1 minuutti" + }, + "fiveMinutes": { + "message": "5 minuuttia" + }, + "fifteenMinutes": { + "message": "15 minuuttia" + }, + "thirtyMinutes": { + "message": "30 minuuttia" + }, + "oneHour": { + "message": "1 tunti" + }, + "fourHours": { + "message": "4 tuntia" + }, + "onRefresh": { + "message": "Selaimen sivun päivityksen yhteydessä" + }, + "dateUpdated": { + "message": "Päivitetty", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Salasana päivitetty", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisaatio on poistettu käytöstä." + }, + "licenseIsExpired": { + "message": "Lisenssi on erääntynyt." + }, + "updatedUsers": { + "message": "Päivitetyt käyttäjät" + }, + "selected": { + "message": "Valittu" + }, + "ownership": { + "message": "Omistus" + }, + "whoOwnsThisItem": { + "message": "Kuka omistaa tämän kohteen?" + }, + "strong": { + "message": "Vahva", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Hyvä", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Heikko", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Erittäin heikko", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Kierrätä myös tilini salausavain" + }, + "rotateEncKeyTitle": { + "message": "Kierrätä salausavain" + }, + "rotateEncKeyConfirmation": { + "message": "Haluatko varmasti kierrättää tilisi salausavaimen?" + }, + "attachmentsNeedFix": { + "message": "Kohteella on vanhoja tiedostoliitteitä, jotka on korjattava." + }, + "attachmentFixDesc": { + "message": "Vanha tiedostoliite, joka on korjattava. Klikkaa lukeaksesi lisää." + }, + "fix": { + "message": "Korjaa", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Holvissasi on vanhoja tiedostoliitteitä, jotka on korjattava ennen kuin voit uudistaa tilisi salausavaimen." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Varmistaaksesi salausavaintesi eheyden, vahvista käyttäjän tunnistelauseke ennen kuin jatkat.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Älä koskaan kehota vahvistamaan kutsuttujen käyttäjien tunnistelausekkeita (ei suositella)", + "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." + }, + "free": { + "message": "Ilmainen", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-avain" + }, + "apiKeyDesc": { + "message": "API-avainta voi käyttää tunnistautumiseen Bitwardenin julkista rajapintaa vasten." + }, + "apiKeyRotateDesc": { + "message": "API-avaimen kierrättäminen mitätöi edellisen avaimen. Voit kierrättää API-avaimen, jos uskot, ettei nykyisen avaimen käyttö ole enää turvallista." + }, + "apiKeyWarning": { + "message": "API-avaimellasi on täysi käyttöoikeus organisaatioon ja se tulee pitää turvassa." + }, + "userApiKeyDesc": { + "message": "API-avaintasi voi käyttää tunnistautumiseen Bitwardenin komentokehotteessa (CLI)." + }, + "userApiKeyWarning": { + "message": "API-avaimesi on vaihtoehtoinen todennusmekanismi. Avain tulee pitää turvassa." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 -asiakkaan tunnistetiedot", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Näytä API-avain" + }, + "rotateApiKey": { + "message": "Kierrätä API-avain" + }, + "selectOneCollection": { + "message": "Valitse ainakin yksi kokoelma." + }, + "couldNotChargeCardPayInvoice": { + "message": "Emme voineet veloittaa korttiasi. Tarkasta ja maksa alla oleva maksamaton lasku, kiitos." + }, + "inAppPurchase": { + "message": "Sovelluksen sisäinen osto" + }, + "cannotPerformInAppPurchase": { + "message": "Et voi suorittaa tätä toimintoa kun käytössä oleva maksutapa on sovelluksen sisäinen osto." + }, + "manageSubscriptionFromStore": { + "message": "Sinun on hallittava tilaustasi sen kaupan kautta, jossa sovelluksen sisäinen ostos tehtiin." + }, + "minLength": { + "message": "Vähimmäispituus" + }, + "clone": { + "message": "Kloonaa" + }, + "masterPassPolicyDesc": { + "message": "Aseta pääsalasanan vahvuuden vähimmäisvaatimukset." + }, + "twoStepLoginPolicyDesc": { + "message": "Vaadi käyttäjiä ottamaan kaksivaiheinen kirjautuminen käyttöön henkilökohtaisilla tileillään." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisaation jäsenet, jotka eivät ole sen omistajia tai ylläpitäjiä, eivätkä ole ottaneet kaksivaiheista kirjautumista käyttöön henkilökohtaisilla tileillään, poistetaan organisaatiosta ja heille ilmoitetaan muutoksesta sähköpostitse." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Olet jäsenenä organisaatiossa, joka vaatii kaksivaiheisen kirjautumisen käyttöä käyttäjätililläsi. Jos poistat kaikki kaksivaiheisen kirjautumisen todentajat käytöstä, sinut poistetaan automaattisesti näistä organisaatioista." + }, + "passwordGeneratorPolicyDesc": { + "message": "Aseta salasanageneraattorin määritysten vähimmäisvaatimukset." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Yksi tai useampi organisaatiokäytäntö vaikuttaa generaattorisi asetuksiin." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Sanojen vähimmäismäärä" + }, + "defaultType": { + "message": "Oletustyyppi" + }, + "userPreference": { + "message": "Käyttäjän asetus" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Hae roskakorista" + }, + "permanentlyDelete": { + "message": "Poista pysyvästi" + }, + "permanentlyDeleteSelected": { + "message": "Poista valitut pysyvästi" + }, + "permanentlyDeleteItem": { + "message": "Poista kohde pysyvästi" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Haluatko varmasti poistaa kohteen pysyvästi?" + }, + "permanentlyDeletedItem": { + "message": "Kohde poistettu pysyvästi" + }, + "permanentlyDeletedItems": { + "message": "Kohteet poistettu pysyvästi" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Olet valinnut $COUNT$ kohdetta pysyvästi poistettavaksi. Haluatko varmasti poistaa ne kaikki pysyvästi?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Kohde $ID$ poistettu pysyvästi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Palauta" + }, + "restoreSelected": { + "message": "Palauta valitut" + }, + "restoreItem": { + "message": "Palauta kohde" + }, + "restoredItem": { + "message": "Kohde palautettu" + }, + "restoredItems": { + "message": "Kohteet palautettu" + }, + "restoreItemConfirmation": { + "message": "Haluatko varmasti palauttaa kohteen?" + }, + "restoreItems": { + "message": "Palauta kohteet" + }, + "restoreSelectedItemsDesc": { + "message": "Olet valinnut $COUNT$ kohdetta palautettavaksi. Haluatko varmasti palauttaa kaikki nämä kohteet?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Kohde $ID$ palautettu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Uloskirjautuminen estää pääsyn holviisi ja vaatii ajan umpeuduttua todennuksen internet-yhteyden välityksellä. Haluatko varmasti käyttää tätä asetusta?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Aikakatkaisun toiminnon vahvistus" + }, + "hidePasswords": { + "message": "Piilota salasanat" + }, + "countryPostalCodeRequiredDesc": { + "message": "Tarvitsemme näitä tietoja ainoastaan liikevaihtoveroa ja tilinpäätöstä varten." + }, + "includeVAT": { + "message": "Sisällytä ALV/GST-tiedot (valinnainen)" + }, + "taxIdNumber": { + "message": "ALV/GST-verotustunniste" + }, + "taxInfoUpdated": { + "message": "Verotiedot päivitetty." + }, + "setMasterPassword": { + "message": "Aseta pääsalasana" + }, + "ssoCompleteRegistration": { + "message": "Kirjautuaksesi sisään käyttäen kertakirjautumista (SSO), suojaa holvisi pääsalasanalla." + }, + "identifier": { + "message": "Tunniste" + }, + "organizationIdentifier": { + "message": "Organisaation tunniste" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Kirjaudu sisään käyttäen organisaatiosi kertakirjautumista (SSO). Syötä organisaatiosi tunniste aloittaaksesi." + }, + "enterpriseSingleSignOn": { + "message": "Yrityksen kertakirjautuminen (SSO)" + }, + "ssoHandOff": { + "message": "Voit nyt sulkea tämän välilehden ja jatkaa laajennuksessa." + }, + "includeAllTeamsFeatures": { + "message": "Kaikki Tiimit-tilauksen ominaisuudet, sekä:" + }, + "includeSsoAuthentication": { + "message": "Kertakirjautumisen (SSO) todennus SAML 2.0 ja OpenID Connect -todentajilla" + }, + "includeEnterprisePolicies": { + "message": "Yrityksen käytännöt" + }, + "ssoValidationFailed": { + "message": "Kertakirjautumisen (SSO) todennus epäonnistui" + }, + "ssoIdentifierRequired": { + "message": "Organisaation tunniste vaaditaan." + }, + "unlinkSso": { + "message": "Poista kertakirjautumisen (SSO) liitos" + }, + "unlinkSsoConfirmation": { + "message": "Haluatko varmasti poistaa organisaation kertakirjautumisen (SSO) liitoksen?" + }, + "linkSso": { + "message": "Liitä kertakirjautumiseen (SSO)" + }, + "singleOrg": { + "message": "Yksittäinen organisaatio" + }, + "singleOrgDesc": { + "message": "Estä käyttäjiä liittymästä muihin organisaatioihin." + }, + "singleOrgBlockCreateMessage": { + "message": "Nykyisen organisaatiosi käytäntö ei salli liittymistä useampaan kuin yhteen organisaatioon. Ota yhteyttä organisaatiosi ylläpitäjiin tai liity eri Bitwarden-tilin kautta." + }, + "singleOrgPolicyWarning": { + "message": "Organisaation jäsenet, jotka eivät ole omistajia tai ylläpitäjiä ja jotka ovat jo toisen organisaation jäseniä, poistetaan organisaatiostasi." + }, + "requireSso": { + "message": "Kertakirjautumisen (SSO) todennus" + }, + "requireSsoPolicyDesc": { + "message": "Vaadi käyttäjiä kirjautumaan sisään käyttäen yrityksen kertakirjautumista (SSO)." + }, + "prerequisite": { + "message": "Edellytys" + }, + "requireSsoPolicyReq": { + "message": "\"Yksittäinen organisaatio\" -käytäntö on otettava käyttöön ennen tämän käytännön käyttöönottoa." + }, + "requireSsoPolicyReqError": { + "message": "\"Yksittäinen organisaatio\" -käytäntö ei ole käytössä." + }, + "requireSsoExemption": { + "message": "Organisaation omistajat ja ylläpitäjät on vapautettu tämän käytännön piiristä." + }, + "sendTypeFile": { + "message": "Tiedosto" + }, + "sendTypeText": { + "message": "Teksti" + }, + "createSend": { + "message": "Luo uusi Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Poista Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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ökertojen 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ä" + }, + "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." + }, + "disabled": { + "message": "Poistettu käytöstä" + }, + "sendLink": { + "message": "Send-linkki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopioi Sendin linkki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Poista salasana" + }, + "removedPassword": { + "message": "Salasana poistettu" + }, + "removePasswordConfirmation": { + "message": "Haluatko varmasti poistaa salasanan?" + }, + "hideEmail": { + "message": "Piilota sähköpostiosoitteeni vastaanottajilta." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Kaikki Sendit" + }, + "maxAccessCountReached": { + "message": "Käyttökertojen enimmäismäärä saavutettu", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Odottaa poistoa" + }, + "expired": { + "message": "Erääntynyt" + }, + "searchSends": { + "message": "Hae Sendeistä", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Tämä Send on suojattu salasanalla. Syötä salasana alle jatkaaksesi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Etkö tiedä salasanaa? Pyydä lähettäjältä tämän Sendin avaukseen tarvittavaa salasanaa.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Tämä Send on oletusarvoisesti piilotettu. Voit vaihtaa sen näkyvyyttä alla olevalla painikkeella.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Lataa tiedosto" + }, + "sendAccessUnavailable": { + "message": "Sendiä, jota yrität avata, ei ole olemassa tai se ei ole enää käytettävissä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Sendiin liittyvää tiedostoa ei löytynyt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Ei näytettäviä Sendejä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Varmuuskäyttö" + }, + "emergencyAccessDesc": { + "message": "Myönnä ja hallinnoi luotettujen kontaktien varmuuskäyttöoikeuksia. Luotetut kontaktit voivat anoa oikeutta tilisi tarkasteluun tai hallintaan ongelmatilanteissa. Käy ohjesivullamme saadaksesi lisätietoja ja tarkempia tietoja siitä, miten Zero Knowledge -jako toimii (englanniksi)." + }, + "emergencyAccessOwnerWarning": { + "message": "Olet yhden tai useamman organisaation omistaja. Jos myönnät varmuuskontaktille hallintaoikeuden, on heillä haltuunoton jälkeen samat oikeudet." + }, + "trustedEmergencyContacts": { + "message": "Luotetut varmuuskontaktit" + }, + "noTrustedContacts": { + "message": "Et ole vielä lisännyt varmuuskontakteja. Kutsu luotettu kontakti aloittaaksesi." + }, + "addEmergencyContact": { + "message": "Lisää varmuuskontakti" + }, + "designatedEmergencyContacts": { + "message": "Määritetty varmuuskontaktiksi" + }, + "noGrantedAccess": { + "message": "Sinua ei ole vielä määritetty kenenkään varmuuskontaktiksi." + }, + "inviteEmergencyContact": { + "message": "Kutsu varmuuskontakti" + }, + "editEmergencyContact": { + "message": "Muokkaa varmuuskontaktia" + }, + "inviteEmergencyContactDesc": { + "message": "Kutsu uusi varmuuskontakti syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, heitä pyydetään luomaan uusi tili." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Varmuuskäyttö aloitettu" + }, + "emergencyAccessRecoveryApproved": { + "message": "Varmuuskäyttö sallittu" + }, + "viewDesc": { + "message": "Voi tarkastella kaikkia holvisi kohteita." + }, + "takeover": { + "message": "Haltuunotto" + }, + "takeoverDesc": { + "message": "Voi palauttaa tilisi luomalla uuden pääsalasanan." + }, + "waitTime": { + "message": "Odotusaika" + }, + "waitTimeDesc": { + "message": "Aika, joka vaaditaan ennen kuin pääsy myönnetään automaattisesti." + }, + "oneDay": { + "message": "1 päivä" + }, + "days": { + "message": "$DAYS$ päivää", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Kutsuttu käyttäjä." + }, + "acceptEmergencyAccess": { + "message": "Sinut on kutsuttu yllä mainitun käyttäjän varmuuskontaktiksi. Hyväksyäksesi kutsun, sinun tulee kirjautua tilillesi tai luoda uusi Bitwarden tili." + }, + "emergencyInviteAcceptFailed": { + "message": "Kutsun hyväksyntä ei onnistu. Pyydä käyttäjää lähettämään uusi kutsu." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Kutsua ei voitu hyväksyä. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Voit käyttää tämän käyttäjän varmuusvalintoja kun henkilöllisyytesi on vahvistettu. Saat vahvistuksesta ilmoituksen sähköpostitse." + }, + "requestAccess": { + "message": "Pyydä käyttöoikeutta" + }, + "requestAccessConfirmation": { + "message": "Haluatko varmasti anoa varmuuskäyttöä? Pääsy myönnetään $WAITTIME$ päivän kuluttua tai käyttäjän hyväksyessä käyttöoikeuden manuaalisesti.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Varmuuskäyttöä pyydetty käyttäjältä $USER$. Kun voit jatkaa, saat ilmoituksen sähköpostitse.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Salli" + }, + "reject": { + "message": "Hylkää" + }, + "approveAccessConfirmation": { + "message": "Haluatko varmasti sallia varmuuskäytön? Tämä sallii käyttäjälle $USER$ tiliisi oikeuden: $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Varmuuskäyttö sallittu." + }, + "emergencyRejected": { + "message": "Varmuuskäyttö hylätty." + }, + "passwordResetFor": { + "message": "Käyttäjän $USER$ salasana on palautettu. Voit nyt kirjautua sisään käyttäen uutta salasanaa.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Henkilökohtainen omistus" + }, + "personalOwnershipPolicyDesc": { + "message": "Vaadi käyttäjiä tallentamaan holvin kohteet organisaatiolle poistamalla henkilökohtaisen omistuksen valinta." + }, + "personalOwnershipExemption": { + "message": "Organisaation omistajat ja ylläpitäjät on vapautettu tämän käytännön piiristä." + }, + "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." + }, + "disableSend": { + "message": "Poista Send käytöstä" + }, + "disableSendPolicyDesc": { + "message": "Älä salli käyttäjien luoda tai muokata Bitwarden Sendejä. Olemassa olevan Sendin poisto sallitaan edelleen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Käytäntöä ei pakoteta käyttöön niille organisaation käyttäjille, joilla on organisaation käytäntöjen hallintaoikeudet." + }, + "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." + }, + "sendOptions": { + "message": "Send-asetukset", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Määritä Sendien luonti- ja muokkausasetukset.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Käytäntöä ei pakoteta käyttöön niille organisaation käyttäjille, joilla on organisaation käytäntöjen hallintaoikeudet." + }, + "disableHideEmail": { + "message": "Estä käyttäjiltä sähköpostiosoitteen piilotus kun he luovat tai muokkaavat Sendiä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Seuraavat organisaatiokäytännöt ovat aktiivisia:" + }, + "sendDisableHideEmailInEffect": { + "message": "Käyttäjiltä on estetty sähköpostiosoitteen piilotus kun he luovat tai muokkaavat Sendiä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Käytäntöä $ID$ muokattu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Tilauksen hinta" + }, + "estimatedTax": { + "message": "Arvioitu vero" + }, + "custom": { + "message": "Mukautettu" + }, + "customDesc": { + "message": "Mahdollistaa käyttäjien oikeuksien tarkemman hallinnan edistyneemmissä käyttöympäristöissä." + }, + "permissions": { + "message": "Käyttöoikeudet" + }, + "accessEventLogs": { + "message": "Tapahtumalokien käyttö" + }, + "accessImportExport": { + "message": "Tuonnin/viennin käyttö" + }, + "accessReports": { + "message": "Raporttien käyttö" + }, + "missingPermissions": { + "message": "Sinulla ei ole tarvittavia oikeuksia toiminnon suorittamiseen." + }, + "manageAllCollections": { + "message": "Kaikkien kokoelmien hallinta" + }, + "createNewCollections": { + "message": "Luo uusia kokoelmia" + }, + "editAnyCollection": { + "message": "Muokkaa kokoelmia" + }, + "deleteAnyCollection": { + "message": "Poista kokoelmia" + }, + "manageAssignedCollections": { + "message": "Kokoelmamääritysten hallinta" + }, + "editAssignedCollections": { + "message": "Muokkaa kokoelmamäärityksiä" + }, + "deleteAssignedCollections": { + "message": "Poista kokoelmamäärityksiä" + }, + "manageGroups": { + "message": "Ryhmien hallinta" + }, + "managePolicies": { + "message": "Käytäntöjen hallinta" + }, + "manageSso": { + "message": "Kertakirjautumisen (SSO) hallinta" + }, + "manageUsers": { + "message": "Käyttäjien hallinta" + }, + "manageResetPassword": { + "message": "Salasanan palautusavun hallinta" + }, + "disableRequiredError": { + "message": "Käytäntö $POLICYNAME$ on poistettava käytöstä manuaalisesti ennen tämän käytännön käytöstä poistoa.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Organisaation käytäntö estää kohteiden tuonnin henkilökohtaiseen holviisi." + }, + "personalOwnershipCheckboxDesc": { + "message": "Poista henkilökohtaisen omistajuuden valinta käytöstä organisaation käyttäjiltä" + }, + "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." + }, + "sendNameDesc": { + "message": "Kuvaava nimi Sendille.", + "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ää." + }, + "copySendLinkOnSave": { + "message": "Kopioi Sendin linkki leikepöydälle tallennettaessa." + }, + "sendLinkLabel": { + "message": "Send-linkki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send lähettää arkaluonteisia, väliaikaisia tietoja muille helposti ja turvallisesti.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Lue lisää", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Jaa tekstiä tai tiedostoja suoraan kenen tahansa kanssa." + }, + "sendVaultCardLearnMore": { + "message": "Lue lisää", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "näe", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "miten se toimii", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "tai", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "kokeile sitä nyt", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "tai", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "liity", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "kokeillaksesi sitä tänään.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden-käyttäjä $USER_IDENTIFIER$ jakoi kanssasi seuraavat", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Sendin luonut Bitwarden-käyttäjä on piilottanut sähköpostiosoitteensa. Varmista, että linkin lähde on luotettava ennen kuin käytät tai lataat sen sisältöä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Määritetty erääntymismisajankohta on virheellinen." + }, + "deletionDateIsInvalid": { + "message": "Määritetty poistoajankohta on virheellinen." + }, + "expirationDateAndTimeRequired": { + "message": "Erääntymispäivä ja -aika vaaditaan." + }, + "deletionDateAndTimeRequired": { + "message": "Poistopäivä ja -aika vaaditaan." + }, + "dateParsingError": { + "message": "Tapahtui virhe tallennettaessa poisto- ja erääntymisajankohtia." + }, + "webAuthnFallbackMsg": { + "message": "Vahvista kaksivaiheinen kirjautuminen (2FA) klikkaamalla alla olevaa painiketta." + }, + "webAuthnAuthenticate": { + "message": "WebAuthn-todennus" + }, + "webAuthnNotSupported": { + "message": "WebAuthn ei ole tuettu tässä selaimessa." + }, + "webAuthnSuccess": { + "message": "WebAuthn-todennus onnistui! Voit sulkea välilehden." + }, + "hintEqualsPassword": { + "message": "Salasanavihjeesi ei voi olla sama kuin salasanasi." + }, + "enrollPasswordReset": { + "message": "Liity salasanan palautusapuun" + }, + "enrolledPasswordReset": { + "message": "Liitetty salasanan palautusapuun" + }, + "withdrawPasswordReset": { + "message": "Eroa salasanan palautusavusta" + }, + "enrollPasswordResetSuccess": { + "message": "Liitos onnistui!" + }, + "withdrawPasswordResetSuccess": { + "message": "Eroaminen onnistui!" + }, + "eventEnrollPasswordReset": { + "message": "Käyttäjä $ID$ liittyi salasanan palautusapuun.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Käyttäjä $ID$ erosi salasanan palautusavusta.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Käyttäjän $ID$ pääsalasanan palautus.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Nollaa käyttäjän $ID$ SSO-linkki", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ kirjautui ensimmäistä kertaa käyttäen SSO-kirjautumista", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Palauta salasana" + }, + "resetPasswordLoggedOutWarning": { + "message": "Jatkamalla kirjataan käyttäjät $NAME$ ulos nykyisistä istunnoistaan, jonka jälkeen heidän on kirjauduttava uudelleen. Aktiiviset istunnot toisilla laitteilla saattavat pysyä aktiivisina vielä tunnin ajan.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "tämä käyttäjä" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Yksi tai useampi organisaatiokäytäntö edellyttää, että pääsalasanasi täyttää seuraavat vaatimukset:" + }, + "resetPasswordSuccess": { + "message": "Salasanan palautus onnistui!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Liitos sallii organisaation ylläpitäjien vaihtaa pääsalasanasi. Haluatko varmasti liittyä?" + }, + "resetPasswordPolicy": { + "message": "Pääsalasanan palautus" + }, + "resetPasswordPolicyDescription": { + "message": "Salli organisaation ylläpitäjien palauttaa organisaation käyttäjien pääsalasanat." + }, + "resetPasswordPolicyWarning": { + "message": "Organisaation käyttäjien on liityttävä itse tai automaattisen liitoksen välityksellä ennen kuin ylläpitäjät voivat palauttaa heidän pääsalasanojaan." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automaattinen liitos" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Kaikki käyttäjät liitetään salasanan palautusapuun automaattisesti, kun heidän kutsunsa on hyväksytty, jonka jälkeen he eivät voi erota siitä." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Vanhoja organisaation käyttäjiä ei liitetä salasanan palautusapuun takautuvasti, vaan heidän on itse liityttävä siihen ennen kuin ylläpitäjät voivat palauttaa heidän pääsalasanojaan." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Vaadi uusien käyttäjien automaattinen liitos" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Organisaatiolla on käytäntö, joka liittää tilisi automaattisesti salasanan palautusapuun. Liitos sallii organisaation ylläpitäjien vaihtaa pääsalasanasi." + }, + "resetPasswordOrgKeysError": { + "message": "Organisaatioavainten vastaus on tyhjä" + }, + "resetPasswordDetailsError": { + "message": "Salasanan palautuksen tietojen vastaus on tyhjä" + }, + "trashCleanupWarning": { + "message": "Roskakorissa yli 30 päivää olleet kohteet poistetaan automaattisesti." + }, + "trashCleanupWarningSelfHosted": { + "message": "Roskakorissa jonkin aikaa olleet kohteet poistetaan automaattisesti." + }, + "passwordPrompt": { + "message": "Pääsalasanan uudelleenkysely" + }, + "passwordConfirmation": { + "message": "Pääsalasanan vahvistus" + }, + "passwordConfirmationDesc": { + "message": "Toiminto on suojattu. Jatkaaksesi, syötä pääsalasanasi uudelleen vahvistaaksesi henkilöllisyytesi." + }, + "reinviteSelected": { + "message": "Lähetä kutsut uudelleen" + }, + "noSelectedUsersApplicable": { + "message": "Toiminto ei koske valittuja käyttäjiä." + }, + "removeUsersWarning": { + "message": "Haluatko varmasti poistaa poistaa seuraavat käyttäjät? Toiminto saattaa kestää muutamia sekunteja, eikä sen keskeytys tai peruminen ole mahdollista." + }, + "theme": { + "message": "Teema" + }, + "themeDesc": { + "message": "Valitse verkkoholvin teema." + }, + "themeSystem": { + "message": "Järjestelmä" + }, + "themeDark": { + "message": "Tumma" + }, + "themeLight": { + "message": "Vaalea" + }, + "confirmSelected": { + "message": "Vahvista valitut" + }, + "bulkConfirmStatus": { + "message": "Joukkotoiminnon tila" + }, + "bulkConfirmMessage": { + "message": "Vahvistettu onnistuneesti." + }, + "bulkReinviteMessage": { + "message": "Kutsuttu uudelleen onnistuneesti." + }, + "bulkRemovedMessage": { + "message": "Poistettu onnistuneesti." + }, + "bulkFilteredMessage": { + "message": "Ohitettu, ei koske tätä toimintoa." + }, + "fingerprint": { + "message": "Sormenjälki" + }, + "removeUsers": { + "message": "Poista käyttäjiä" + }, + "error": { + "message": "Virhe" + }, + "resetPasswordManageUsers": { + "message": "Myös \"Käyttäjien hallinta\" -oikeuden on oltava käytössä \"Salasanan palautusavun hallinta\" -oikeuden kanssa" + }, + "setupProvider": { + "message": "Todentajan määritys" + }, + "setupProviderLoginDesc": { + "message": "Sinut on kutsuttu määrittämään uusi todentaja. Jatkaaksesi, sinun on kirjauduttava Bitwarden-tilillesi tai luotava uusi tili." + }, + "setupProviderDesc": { + "message": "Syötä alla pyydetyt tiedot viimeistelläksesi todentajan määrityksen. Jos sinulla on kysyttävää, ota yhteyttä asiakaspalveluun." + }, + "providerName": { + "message": "Todentajan nimi" + }, + "providerSetup": { + "message": "Todentaja on määritetty." + }, + "clients": { + "message": "Asiakkaat" + }, + "providerAdmin": { + "message": "Todentajan ylläpitäjä" + }, + "providerAdminDesc": { + "message": "Korkeimman käyttöoikeuden käyttäjä, joka voi hallinnoida todentajaasi kokonaisvaltaisesti sekä käyttää ja hallita asiakasorganisaatioita." + }, + "serviceUser": { + "message": "Palvelun käyttäjä" + }, + "serviceUserDesc": { + "message": "Palvelun käyttäjät voivat käyttää ja hallita kaikkia asiakasorganisaatioita." + }, + "providerInviteUserDesc": { + "message": "Kutsu todentajallesi uusi käyttäjä syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, pyydetään heitä luomaan uusi tili." + }, + "joinProvider": { + "message": "Liity todennustarjoajaan" + }, + "joinProviderDesc": { + "message": "Sinut on kutsuttu liittymään yllä mainittuun todentajaan. Hyväksyäksesi kutsun, sinun tulee kirjautua tilillesi tai luoda uusi Bitwarden-tili." + }, + "providerInviteAcceptFailed": { + "message": "Kutsua ei voida hyväksyä. Pyydä todentajan ylläpitäjää lähettämään uusi kutsu." + }, + "providerInviteAcceptedDesc": { + "message": "Pääset käyttämään todentajaa ylläpitäjän vahvistettua jäsentyytesi. Saat tästä ilmoituksen sähköpostitse." + }, + "providerUsersNeedConfirmed": { + "message": "Sinulla on kutsunsa hyväksyneitä käyttäjiä, jotka on vielä vahvistettava. Käyttäjät eivät voi käyttää todentajaa ennen vahvistusta." + }, + "provider": { + "message": "Todennustarjoaja" + }, + "newClientOrganization": { + "message": "Uusi asiakasorganisaatio" + }, + "newClientOrganizationDesc": { + "message": "Luo uusi asiakasorganisaatio, joka liitetään sinuun todentajana. Voit käyttää ja hallinnoida tätä organisaatiota." + }, + "addExistingOrganization": { + "message": "Lisää olemassa oleva organisaatio" + }, + "myProvider": { + "message": "Oma todennustarjoaja" + }, + "addOrganizationConfirmation": { + "message": "Haluatko varmasti lisätä organisaation $ORGANIZATION$ todentajan $PROVIDER$ asiakkaaksi?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organisaatio lisättiin todentajaan onnistuneesti" + }, + "accessingUsingProvider": { + "message": "Käytetään organisaatiota todentajalla $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Todentaja ei ole käytössä." + }, + "providerUpdated": { + "message": "Todentaja on päivitetty" + }, + "yourProviderIs": { + "message": "Todentajasi on $PROVIDER$. Heillä on hallinta- ja laskutusoikeudet organisaatioosi.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Organisaatio $ORGANIZATION$ on irrotettu todentajastasi.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Haluatko varmasti irrottaa organisaation? Organisaatio on edelleen olemassa, mutta todentaja ei enää hallinnoi sitä." + }, + "add": { + "message": "Lisää" + }, + "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." + }, + "masterPasswordInvalidWarning": { + "message": "Pääsalasanasi ei vastaa organisaation käytäntöä. Liittyäksesi organisaatioon, on sinun päivitettävä se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." + }, + "maximumVaultTimeout": { + "message": "Holvin aikakatkaisu" + }, + "maximumVaultTimeoutDesc": { + "message": "Määritä holvin aikakatkaisun enimmäisviive kaikille käyttäjille." + }, + "maximumVaultTimeoutLabel": { + "message": "Holvin aikakatkaisun enimmäisviive" + }, + "invalidMaximumVaultTimeout": { + "message": "Virheellinen holvin aikakatkaisun enimmäisviive." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Mukautettu holvin aikakatkaisuviive" + }, + "vaultTimeoutToLarge": { + "message": "Holvisi aikakatkaisuviive ylittää organisaatiosi asettamat rajoitukset." + }, + "disablePersonalVaultExport": { + "message": "Poista henkilökohtaisen holvin vienti käytöstä" + }, + "disablePersonalVaultExportDesc": { + "message": "Estää käyttäjiä viemästä yksityisen holvinsa tietoja." + }, + "vaultExportDisabled": { + "message": "Holvin vienti on poistettu käytöstä" + }, + "personalVaultExportPolicyInEffect": { + "message": "Yksi tai useampi organisaation käytäntö estää henkilökohtaisen holvisi viennin." + }, + "selectType": { + "message": "Valitse SSO-tyyppi" + }, + "type": { + "message": "Tyyppi" + }, + "openIdConnectConfig": { + "message": "OpenID Connect -määritykset" + }, + "samlSpConfig": { + "message": "SAML-todennustarjoajan määritykset" + }, + "samlIdpConfig": { + "message": "SAML-tunnistustietojen tarjoajan määritykset" + }, + "callbackPath": { + "message": "Callback-polku" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback -polku" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client-salaisuus" + }, + "metadataAddress": { + "message": "Metadata-osoite" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect -käyttäytyminen" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Hanki Claim-arvot käyttäjätietojen päätepisteestä" + }, + "additionalScopes": { + "message": "Mukautetut Scopes-arvot" + }, + "additionalUserIdClaimTypes": { + "message": "Mukautetut käyttäjätunnuksen Claim-tyypit" + }, + "additionalEmailClaimTypes": { + "message": "Sähköpostin Claim-tyypit" + }, + "additionalNameClaimTypes": { + "message": "Mukautetut nimen Claim-tyypit" + }, + "acrValues": { + "message": "Pyydetyt Authentication Context Class -viitearvot" + }, + "expectedReturnAcrValue": { + "message": "Odotettu \"acr\" Claim-arvo vastauksessa" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID -muoto" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing -algoritmi" + }, + "spSigningBehavior": { + "message": "Signing-käyttäytyminen" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Pienin sallittu Incoming Signing -algoritmi" + }, + "spWantAssertionsSigned": { + "message": "Odota Assertion-lähetysten allekirjoitusta" + }, + "spValidateCertificates": { + "message": "Vahvista varmenteet" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Sidontatyyppi" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "Julkinen X509 -varmenne" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing -algoritmi" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Salli Unsolicited-todennusvastaus" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Salli lähtevät uloskirjautumispyynnöt" + }, + "idpSignAuthenticationRequests": { + "message": "Allekirjoita todennuspyynnöt" + }, + "ssoSettingsSaved": { + "message": "Kertakirjautumisen (SSO) määritykset tallennettiin." + }, + "sponsoredFamilies": { + "message": "Ilmainen Bitwarden Perheille" + }, + "sponsoredFamiliesEligible": { + "message": "Sinä ja perheesi olette oikeutettuja ilmaiseen Bitwarden Perheille -tilaukseen. Lunasta tarjous henkilökohtaisella sähköpostillasi suojataksesi tietosi myös töiden ulkopuolella." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Lunasta ilmainen Bitwarden Perheille -tilauksesi tänään suojataksesi tietosi myös töiden ulkopuolella." + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden Perheille -tilaus sisältää" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium-käyttöoikeuden 6 käyttäjälle" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Jaetut kokoelmat perheen salaisuuksille" + }, + "badToken": { + "message": "Linkki ei ole enää voimassa. Pyydä sponsoria lähettämään tarjous uudelleen." + }, + "reclaimedFreePlan": { + "message": "Lunastettu ilmaistilaus" + }, + "redeem": { + "message": "Lunasta" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Valitse organisaatio, jota haluat sponsoroida" + }, + "familiesSponsoringOrgSelect": { + "message": "Minkä ilmaisen Perheille-tilauksen tarjouksen haluaisit lunastaa?" + }, + "sponsoredFamiliesEmail": { + "message": "Syötä henkilökohtainen sähköpostiosoitteesi lunastaaksesi Bitwarden Perheille -tilauksen" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Jos eroat tai sinut erotetaan sponsoroivasta organisaatiosta, päättyy Perheille-tilauksesi kuluvan laskutuskauden lopussa." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Hyväksy tarjous olemassa olevalla organisaatiolla tai luo uusi Perheille-organisaatio." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Sinulle on tarjottu ilmaista Bitwarden Perheille -organisaatiota. Jatkaaksesi sinun on kirjauduttava tarjouksen saaneelle tilille." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Tarjousta ei voida hyväksyä. Lähetä tarjoussähköposti uudestaan yritystililtäsi ja yritä uudelleen." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Tarjousta ei voida hyväksyä. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Hyväksy ilmainen Bitwarden Perheille" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Ilmainen Bitwarden Perheille -tarjous on lunastettu" + }, + "redeemed": { + "message": "Lunastettu" + }, + "redeemedAccount": { + "message": "Lunastettu tili" + }, + "revokeAccount": { + "message": "Irtisano tili $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Lähetä sponsorointisähköposti uudelleen edunsaajalle $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Ilmainen Perheille-tilaus" + }, + "redeemNow": { + "message": "Lunasta nyt" + }, + "recipient": { + "message": "Vastaanottaja" + }, + "removeSponsorship": { + "message": "Poista sponsorointi" + }, + "removeSponsorshipConfirmation": { + "message": "Sponsoroinnin poiston jälkeen olet vastuussa tilauksesta ja siihen liittyvistä laskuista. Haluatko varmasti jatkaa?" + }, + "sponsorshipCreated": { + "message": "Sponsorointi on luotu" + }, + "revoke": { + "message": "Irtisano" + }, + "emailSent": { + "message": "Sähköposti on lähetetty" + }, + "revokeSponsorshipConfirmation": { + "message": "Tämän tilin poiston jälkeen, on Perheille-organisaation omistaja jatkossa vastuussa tilauksesta ja siihen liittyvistä laskuista. Haluatko varmasti jatkaa?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorointi on poistettu" + }, + "ssoKeyConnectorUnavailable": { + "message": "Key Connectoria ei tavoiteta. Yritä myöhemmin uudelleen." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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 todennuskoodi" + }, + "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": "Eroa organisaatiosta" + }, + "removeMasterPassword": { + "message": "Poista pääsalasana" + }, + "removedMasterPassword": { + "message": "Pääsalasana on poistettu." + }, + "allowSso": { + "message": "Salli SSO-todennus" + }, + "allowSsoDesc": { + "message": "Määrityksen jälkeen asetukset tallennetaan ja käyttäjät voivat tunnistautua käyttäen tunnistustietojen tarjoajansa (Identity Provider) tietoja." + }, + "ssoPolicyHelpStart": { + "message": "Ota", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO-todennuskäytäntö", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "käyttöön pakottaaksesi kertakirjautumisen kaikille jäsenille.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "\"SSO-todennus\" ja \"Yksittäinen organisaatio\" -käytännöt vaaditaan Key Connector -salauksenpurun määritykseen." + }, + "memberDecryptionOption": { + "message": "Jäsenen salauksenpurkuvalinnat" + }, + "memberDecryptionPassDesc": { + "message": "Kun jäsenet on todennettu, he voivat purkaa holvin salauksen omilla pääsalasanoillaan." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Liitä kertakirjautuminen (SSO) omaan salauksenpurkuavainpalvelimeesi. Tätä valintaa käyttämällä jäsenten ei tarvitse käyttää pääsalasanojaan holvin salauksen purkuun. Ota yhtettä Bitwardenin tukeen saadaksesi apua määritykseen." + }, + "keyConnectorPolicyRestriction": { + "message": "Kertakirjautuminen (SSO) Key Connector -salauksenpurulla on käytössä. Käytäntö vaikuttaa vain omistajiin ja ylläpitäjiin." + }, + "enabledSso": { + "message": "SSO otettiin käyttöön" + }, + "disabledSso": { + "message": "SSO poistettiin käytöstä" + }, + "enabledKeyConnector": { + "message": "Key Connector otettiin käyttöön" + }, + "disabledKeyConnector": { + "message": "Key Connector poistettiin käytöstä" + }, + "keyConnectorWarning": { + "message": "Kun käyttäjät alkavat käyttämään Key Connectoria, organisaatiosi ei voi palata takaisin pääsalasanalla tapahtuvaan salauksenpurkuun. Jatka ainoastaan siinä tapauksessa, jos olet valmis määrittämään avainpalvelimen ja myös ylläpitämään sitä." + }, + "migratedKeyConnector": { + "message": "Siirretty käyttämään Key Connectoria" + }, + "paymentSponsored": { + "message": "Ilmoita organisaatioon liitettävä maksutapa. Voit olla huoletta, sillä emme veloita sinulta mitään, ellet itse valitse lisäominaisuuksia tai sponsorointisi pääty." + }, + "orgCreatedSponsorshipInvalid": { + "message": "Sponsorointitarjous on päättynyt. Voit poistaa luomasi organisaation välttääksesi veloituksen 7- päivän kokeilujaksosi päättyessä. Muussa tapauksessa voit sulkea ilmoituksen, jolloin organisaatio säilyy sinulla ja vastaat jatkossa siihen liittyvistä laskuista." + }, + "newFamiliesOrganization": { + "message": "Uusi Perheille-organisaatio" + }, + "acceptOffer": { + "message": "Hyväksy tarjous" + }, + "sponsoringOrg": { + "message": "Sponsoroiva organisaatio" + }, + "keyConnectorTest": { + "message": "Testaa" + }, + "keyConnectorTestSuccess": { + "message": "Onnistui! Key Connectori tavoitettiin." + }, + "keyConnectorTestFail": { + "message": "Key Connectoria ei tavoiteta. Tarkista URL-osoite." + }, + "sponsorshipTokenHasExpired": { + "message": "Sponsorointitarjous on päättynyt." + }, + "freeWithSponsorship": { + "message": "ILMAINEN sponsoroinnilla" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ yllä olevaa kenttää vaatii huomiotasi.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 yllä oleva kenttä vaatii huomiotasi." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ on pakollinen.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "pakollinen" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Vaaditaan, jos Entity ID ei ole kelvollinen URL-osoite." + }, + "openIdOptionalCustomizations": { + "message": "Valinnaiset mukautukset" + }, + "openIdAuthorityRequired": { + "message": "Vaaditaan jos viranomainen ei ole kelvollinen." + }, + "separateMultipleWithComma": { + "message": "Erota useita pilkuilla." + }, + "sessionTimeout": { + "message": "Istuntosi on aikakatkaistu. Palaa takaisin ja yritä kirjautua uudelleen." + }, + "exportingPersonalVaultTitle": { + "message": "Henkilökohtaisen holvin vienti" + }, + "exportingOrganizationVaultTitle": { + "message": "Organisaation 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Vain organisaatioon $ORGANIZATION$ liitetyt holvin kohteet viedään. Henkilökohtaiset ja muiden organisaatioiden kohteet eivät sisälly tähän.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Palaa raportteihin" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "service": { + "message": "Palvelu" + } +} diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json new file mode 100644 index 0000000000..5956fa88e4 --- /dev/null +++ b/apps/web/src/locales/fil/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "What type of item is this?" + }, + "name": { + "message": "Pangalan" + }, + "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": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "newPassword": { + "message": "Bagong Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code (CVV)" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Kumpanya" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telepono" + }, + "january": { + "message": "Enero" + }, + "february": { + "message": "Pebrero" + }, + "march": { + "message": "Marso" + }, + "april": { + "message": "Abril" + }, + "may": { + "message": "Mayo" + }, + "june": { + "message": "Hunyo" + }, + "july": { + "message": "Hulyo" + }, + "august": { + "message": "Agosto" + }, + "september": { + "message": "Setyembre" + }, + "october": { + "message": "Oktubre" + }, + "november": { + "message": "Nobyembre" + }, + "december": { + "message": "Disyembre" + }, + "title": { + "message": "Pamagat" + }, + "mr": { + "message": "Ginoo" + }, + "mrs": { + "message": "Gng" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Teksto" + }, + "cfTypeHidden": { + "message": "Nakatago" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Alisin" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "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": "Eksakto" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "I-save" + }, + "cancel": { + "message": "Kanselahin" + }, + "canceled": { + "message": "Kinansela" + }, + "close": { + "message": "Isara" + }, + "delete": { + "message": "Alisin" + }, + "favorite": { + "message": "Paborito" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Mga uri" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Mga folder" + }, + "collections": { + "message": "Collections" + }, + "firstName": { + "message": "Pangalan" + }, + "middleName": { + "message": "Gitnang pangalan" + }, + "lastName": { + "message": "Apelyido" + }, + "fullName": { + "message": "Buong pangalan" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "Bayan/Town" + }, + "stateProvince": { + "message": "Estado/Probinsya" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Bansa" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add Item" + }, + "editItem": { + "message": "Edit Item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Iba pa" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopyahin ang password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopyahin ang pangalan", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My Vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Delete Selected" + }, + "moveSelected": { + "message": "Move Selected" + }, + "selectAll": { + "message": "Select All" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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." + }, + "emailAddress": { + "message": "Email Address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New Organization" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json new file mode 100644 index 0000000000..ad75a1f82e --- /dev/null +++ b/apps/web/src/locales/fr/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Coffre web $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Quel type d'élément est-ce ?" + }, + "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": "Nouvelle URI" + }, + "username": { + "message": "Nom d'utilisateur" + }, + "password": { + "message": "Mot de passe" + }, + "newPassword": { + "message": "Nouveau mot de passe" + }, + "passphrase": { + "message": "Phrase de passe" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Champs personnalisés" + }, + "cardholderName": { + "message": "Nom du titulaire de la carte" + }, + "number": { + "message": "Numéro" + }, + "brand": { + "message": "Réseau de paiement" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Cryptogramme visuel (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Retirer" + }, + "unassigned": { + "message": "Non attribué" + }, + "noneFolder": { + "message": "Aucun dossier", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Ajouter un dossier" + }, + "editFolder": { + "message": "Modifier le dossier" + }, + "baseDomain": { + "message": "Domaine de base", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nom de 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." + }, + "never": { + "message": "Jamais" + }, + "toggleVisibility": { + "message": "Afficher/Masquer" + }, + "toggleCollapse": { + "message": "Déplier/Replier", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Générer un mot de passe" + }, + "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é." + }, + "save": { + "message": "Enregistrer" + }, + "cancel": { + "message": "Annuler" + }, + "canceled": { + "message": "Annulé" + }, + "close": { + "message": "Fermer" + }, + "delete": { + "message": "Supprimer" + }, + "favorite": { + "message": "Favori" + }, + "unfavorite": { + "message": "Retirer des favoris" + }, + "edit": { + "message": "Modifier" + }, + "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" + }, + "searchVault": { + "message": "Rechercher dans le coffre" + }, + "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" + }, + "typeLoginPlural": { + "message": "Identifiants" + }, + "typeCardPlural": { + "message": "Cartes" + }, + "typeIdentityPlural": { + "message": "Identités" + }, + "typeSecureNotePlural": { + "message": "Notes sécurisées" + }, + "folders": { + "message": "Dossiers" + }, + "collections": { + "message": "Collections" + }, + "firstName": { + "message": "Prénom" + }, + "middleName": { + "message": "Deuxième prénom" + }, + "lastName": { + "message": "Nom de famille" + }, + "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" + }, + "shared": { + "message": "Partagé" + }, + "attachments": { + "message": "Pièces jointes" + }, + "select": { + "message": "Sélectionner" + }, + "addItem": { + "message": "Ajouter un élément" + }, + "editItem": { + "message": "Modifier l'élément" + }, + "viewItem": { + "message": "Afficher l'élément" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Autre" + }, + "share": { + "message": "Partager" + }, + "moveToOrganization": { + "message": "Déplacer vers l'organisation" + }, + "valueCopied": { + "message": "$VALUE$ copié", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copier la valeur", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copier le mot de passe", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copier le nom d'utilisateur", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "Copier l'URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mon coffre" + }, + "vault": { + "message": "Coffre" + }, + "moveSelectedToOrg": { + "message": "Déplacer la sélection vers l'organisation" + }, + "deleteSelected": { + "message": "Supprimer les éléments sélectionnés" + }, + "moveSelected": { + "message": "Déplacer les éléments sélectionnés" + }, + "selectAll": { + "message": "Tout sélectionner" + }, + "unselectAll": { + "message": "Tout désélectionner" + }, + "launch": { + "message": "Ouvrir" + }, + "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é avant de mettre à jour votre clé de chiffrement." + }, + "addedItem": { + "message": "Élément ajouté" + }, + "editedItem": { + "message": "Élément modifié" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ a été déplacé vers $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Les éléments sélectionnés ont été déplacés vers $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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 déplacer cet élément vers la corbeille ?" + }, + "deletedItem": { + "message": "L'élément a été envoyé dans la corbeille" + }, + "deletedItems": { + "message": "Les éléments ont été envoyés dans la corbeille" + }, + "movedItems": { + "message": "Éléments déplacés" + }, + "overwritePasswordConfirmation": { + "message": "Êtes-vous sûr de vouloir écraser le mot de passe actuel ?" + }, + "editedFolder": { + "message": "Dossier modifié" + }, + "addedFolder": { + "message": "Dossier ajouté" + }, + "deleteFolderConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer ce dossier ?" + }, + "deletedFolder": { + "message": "Dossier supprimé" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Oui" + }, + "no": { + "message": "Non" + }, + "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" + }, + "emailAddressDesc": { + "message": "Vous utiliserez votre adresse e-mail pour vous connecter." + }, + "yourName": { + "message": "Votre nom" + }, + "yourNameDesc": { + "message": "Comment doit-on vous appeler ?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Indice du mot de passe maître" + }, + "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." + }, + "emailAddress": { + "message": "Adresse e-mail" + }, + "yourVaultIsLocked": { + "message": "Votre coffre est verrouillé. Saisissez votre mot de passe maître pour continuer." + }, + "unlock": { + "message": "Déverrouiller" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Verrouiller maintenant" + }, + "noItemsInList": { + "message": "Aucun élément à afficher." + }, + "noCollectionsInList": { + "message": "Aucune collection à afficher." + }, + "noGroupsInList": { + "message": "Aucun groupe à afficher." + }, + "noUsersInList": { + "message": "Aucun utilisateur à afficher." + }, + "noEventsInList": { + "message": "Aucun événement à afficher." + }, + "newOrganization": { + "message": "Nouvelle organisation" + }, + "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." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 d'identification 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. Si elle dispose d'un bouton, appuyez dessus." + }, + "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 ce navigateur web." + }, + "noTwoStepProviders2": { + "message": "Merci d'utiliser un navigateur web compatible (comme Chrome) et/ou d'ajouter des services additionnels d'identification en deux étapes qui sont mieux supportés par les navigateurs web (comme par exemple une application d'authentification)." + }, + "twoStepOptions": { + "message": "Options d'identification en deux étapes" + }, + "recoveryCodeDesc": { + "message": "Vous avez perdu l'accès à tous vos services d'authentification à deux facteurs ? Utilisez votre code de récupération pour désactiver tous les services d'authentification à deux facteurs 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": "Utilisez une YubiKey pour accéder à votre compte. Fonctionne avec les YubiKey série 4, série 5 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." + }, + "u2fDesc": { + "message": "Utiliser n'importe quelle clé de sécurité FIDO U2F active pour accéder à votre compte." + }, + "u2fTitle": { + "message": "Clé de sécurité FIDO U2F" + }, + "webAuthnTitle": { + "message": "WebAuthn FIDO2" + }, + "webAuthnDesc": { + "message": "Utilisez n'importe quelle clé de sécurité compatible WebAuthn pour accéder à votre compte." + }, + "webAuthnMigrated": { + "message": "(Migré depuis FIDO)" + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Les codes de vérification vous seront envoyés par e-mail." + }, + "continue": { + "message": "Continuer" + }, + "organization": { + "message": "Organisation" + }, + "organizations": { + "message": "Organisations" + }, + "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é." + }, + "moveManyToOrgDesc": { + "message": "Choisissez une organisation vers laquelle vous souhaitez déplacer ces éléments. Déplacer des éléments vers une organisation transfère la propriété des éléments à cette organisation. Vous ne serez plus le propriétaire direct de ces éléments une fois qu'ils auront été déplacés." + }, + "collectionsDesc": { + "message": "Modifier les collections avec lesquelles cet élément est partagé. Seuls les utilisateurs de l'organisation avec un accès à ces collections pourront voir cet élément." + }, + "deleteSelectedItemsDesc": { + "message": "Vous avez sélectionné $COUNT$ élément(s) à supprimer. Êtes-vous sûr de vouloir supprimer tous ces éléments ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choisissez le dossier vers lequel vous souhaitez déplacer les $COUNT$ élément(s) sélectionné(s).", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Vous avez sélectionné $COUNT$ élément(s). $MOVEABLE_COUNT$ élément(s) peuvent être déplacés vers une organisation, $NONMOVEABLE_COUNT$ ne le peuvent pas.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Code de vérification (TOTP)" + }, + "copyVerificationCode": { + "message": "Copier le code de vérification" + }, + "warning": { + "message": "Attention" + }, + "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 l'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." + }, + "export": { + "message": "Exporter" + }, + "exportVault": { + "message": "Exporter le coffre" + }, + "fileFormat": { + "message": "Format de fichier" + }, + "exportSuccess": { + "message": "Les données de votre coffre ont été exportées." + }, + "passwordGenerator": { + "message": "Générateur de mot de passe" + }, + "minComplexityScore": { + "message": "Score de complexité minimum" + }, + "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" + }, + "regeneratePassword": { + "message": "Regénérer un mot de passe" + }, + "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" + }, + "passwordHistory": { + "message": "Historique des mots de passe" + }, + "noPasswordsInList": { + "message": "Aucun mot de passe à afficher." + }, + "clear": { + "message": "Effacer", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Compte mis à jour" + }, + "changeEmail": { + "message": "Changer l'e-mail" + }, + "changeEmailTwoFactorWarning": { + "message": "En continuant, vous changerez l'adresse e-mail de votre compte. Cela ne changera pas l'adresse e-mail utilisée pour l'authentification à deux facteurs. Vous pouvez modifier cette adresse e-mail dans les paramètres d'identification en deux étapes." + }, + "newEmail": { + "message": "Nouvel e-mail" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "Nous avons envoyé un code de vérification à $EMAIL$. Veuillez consulter votre boîte de réception pour trouver ce code et l'entrer ci-dessous pour finaliser votre changement d'adresse e-mail.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "En continuant, vous serez déconnecté de votre session actuelle et vous devrez vous reconnecter. Les sessions actives sur d'autres appareils peuvent rester actives pendant encore une heure." + }, + "emailChanged": { + "message": "Adresse e-mail modifiée" + }, + "logBackIn": { + "message": "Veuillez vous reconnecter." + }, + "logBackInOthersToo": { + "message": "Veuillez vous reconnecter. Si vous utilisez d'autres applications Bitwarden, déconnectez-vous puis reconnectez-vous dans ces applications également." + }, + "changeMasterPassword": { + "message": "Modifier le mot de passe maître" + }, + "masterPasswordChanged": { + "message": "Mot de passe maître modifié" + }, + "currentMasterPass": { + "message": "Mot de passe maître actuel" + }, + "newMasterPass": { + "message": "Nouveau mot de passe maître" + }, + "confirmNewMasterPass": { + "message": "Confirmer le nouveau mot de passe maître" + }, + "encKeySettings": { + "message": "Paramètres de la clé de chiffrement" + }, + "kdfAlgorithm": { + "message": "Algorithme KDF" + }, + "kdfIterations": { + "message": "Nombre d'itérations de KDF" + }, + "kdfIterationsDesc": { + "message": "Un nombre plus élevé d'itérations de KDF peut aider à protéger votre mot de passe maître contre une attaque par force brute. Nous recommandons une valeur de $VALUE$ ou plus.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Si vous définissez un nombre d'itérations KDF trop élevé, les performances risquent d'être mauvaises lorsque vous vous connectez (et déverrouillez) Bitwarden sur des périphériques dont les processeurs sont plus lents. Nous vous recommandons d'augmenter la valeur par incréments de $INCREMENT$, puis de tester tous vos appareils.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Modifier KDF" + }, + "encKeySettingsChanged": { + "message": "Paramètres de la clé de chiffrement modifiés" + }, + "dangerZone": { + "message": "Zone de danger" + }, + "dangerZoneDesc": { + "message": "Attention, ces actions ne sont pas réversibles !" + }, + "deauthorizeSessions": { + "message": "Révoquer les sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Vous craignez que votre compte soit connecté sur un autre appareil ? Poursuivez ci-dessous pour révoquer tous les ordinateurs ou appareils que vous avez déjà utilisés. Cette étape de sécurité est recommandée si vous avez précédemment utilisé un ordinateur public ou enregistré accidentellement votre mot de passe sur un appareil qui n'est pas le vôtre. Cette étape effacera également toutes les sessions de connexion en deux étapes précédemment mémorisées." + }, + "deauthorizeSessionsWarning": { + "message": "Si vous continuez, vous serez également déconnecté de votre session en cours, ce qui vous nécessitera de vous reconnecter. Votre second facteur d'authentification vous sera également demandé, si cette option est activée. Les sessions actives sur d'autres appareils peuvent rester actives jusqu'à une heure." + }, + "sessionsDeauthorized": { + "message": "Toutes les sessions ont été révoquées" + }, + "purgeVault": { + "message": "Effacer le coffre" + }, + "purgedOrganizationVault": { + "message": "Le coffre de l'organisation a été effacé." + }, + "vaultAccessedByProvider": { + "message": "Coffre-fort consulté par le fournisseur." + }, + "purgeVaultDesc": { + "message": "Poursuivez ci-dessous pour supprimer tous les éléments et dossiers de votre coffre. Les éléments qui appartiennent à une organisation dont vous êtes membre ne seront pas supprimés." + }, + "purgeOrgVaultDesc": { + "message": "Poursuivez ci-dessous pour supprimer tous les éléments du coffre de votre organisation." + }, + "purgeVaultWarning": { + "message": "L'effacement votre coffre est définitif. Cette action ne peut pas être annulée." + }, + "vaultPurged": { + "message": "Votre coffre a été effacé." + }, + "deleteAccount": { + "message": "Supprimer le compte" + }, + "deleteAccountDesc": { + "message": "Continuez ci-dessous pour supprimer votre compte et toutes les données associées." + }, + "deleteAccountWarning": { + "message": "La suppression de votre compte est définitive. Cette action ne peut pas être annulée." + }, + "accountDeleted": { + "message": "Compte supprimé" + }, + "accountDeletedDesc": { + "message": "Votre compte a été fermé et toutes les données associées ont été supprimées." + }, + "myAccount": { + "message": "Mon compte" + }, + "tools": { + "message": "Outils" + }, + "importData": { + "message": "Importer des données" + }, + "importError": { + "message": "Erreur d'importation" + }, + "importErrorDesc": { + "message": "Il y a eu un problème avec les données que vous avez essayé d'importer. Veuillez résoudre les erreurs listées ci-dessous dans votre fichier source et réessayer." + }, + "importSuccess": { + "message": "Les données ont été importées dans votre coffre avec succès." + }, + "importWarning": { + "message": "Vous importez des données vers $ORGANIZATION$. Vos données pourraient être partagées avec les membres de cette organisation. Voulez-vous continuer ?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Les données ne sont pas correctement mises en forme. Veuillez vérifier le fichier importé et réessayer." + }, + "importNothingError": { + "message": "Rien à importer." + }, + "importEncKeyError": { + "message": "Erreur lors du déchiffrement du fichier exporté. Votre clé de chiffrement ne correspond pas à la clé de chiffrement utilisée pour exporter les données." + }, + "selectFormat": { + "message": "Sélectionnez le format du fichier à importer" + }, + "selectImportFile": { + "message": "Sélectionnez le fichier à importer" + }, + "orCopyPasteFileContents": { + "message": "ou copiez/collez le contenu du fichier à importer" + }, + "instructionsFor": { + "message": "Instructions $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Personnaliser l'expérience de votre coffre web." + }, + "optionsUpdated": { + "message": "Options mises à jour" + }, + "language": { + "message": "Langue" + }, + "languageDesc": { + "message": "Changer la langue utilisée par le coffre web." + }, + "disableIcons": { + "message": "Désactiver les icônes de sites web" + }, + "disableIconsDesc": { + "message": "Les icônes de sites web permettent d'avoir une icône reconnaissable à côté de chaque identifiant dans votre coffre." + }, + "enableGravatars": { + "message": "Activer Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Charger votre image de profil depuis gravatar.com." + }, + "enableFullWidth": { + "message": "Activer la mise en page en pleine largeur", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Permettre au coffre web de s’étendre sur toute la largeur de la fenêtre du navigateur." + }, + "default": { + "message": "Par défaut" + }, + "domainRules": { + "message": "Règles de domaine" + }, + "domainRulesDesc": { + "message": "Si vous avez un même identifiant sur plusieurs noms de domaines différents, vous pouvez marquer le site web comme \"équivalent\". Des domaines \"globaux\" sont déjà créés pour vous par Bitwarden." + }, + "globalEqDomains": { + "message": "Domaines équivalents globaux" + }, + "customEqDomains": { + "message": "Domaines équivalents personnalisés" + }, + "exclude": { + "message": "Exclure" + }, + "include": { + "message": "Inclure" + }, + "customize": { + "message": "Personnaliser" + }, + "newCustomDomain": { + "message": "Nouveau domaine personnalisé" + }, + "newCustomDomainDesc": { + "message": "Entrez une liste de domaines séparés par des virgules. Seuls les domaines « de base » sont autorisés. N’entrez pas de sous-domaines. Par exemple, entrez « google.com » au lieu de « www.google.com ». Vous pouvez également entrer « androidapp://package.name » pour associer une application android avec d’autres domaines de sites web." + }, + "customDomainX": { + "message": "Domaine personnalisé $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domaines mis à jour" + }, + "twoStepLogin": { + "message": "Identification en deux étapes" + }, + "twoStepLoginDesc": { + "message": "Sécuriser votre compte en exigeant une étape supplémentaire lors de la connexion." + }, + "twoStepLoginOrganizationDesc": { + "message": "Exigez une connexion en deux étapes pour les utilisateurs de votre organisation en configurant les services au niveau de l'organisation." + }, + "twoStepLoginRecoveryWarning": { + "message": "Activer la connexion en deux étapes peut vous empêcher définitivement d'accéder à votre compte Bitwarden. Un code de récupération vous permet d'accéder à votre compte dans le cas où vous ne pouvez plus utiliser votre service de connexion en deux étapes habituel (ex. vous perdez votre appareil). Le support Bitwarden ne pourra pas vous aider si vous perdez l'accès à votre compte. Nous vous recommandons d'écrire ou d'imprimer le code de récupération et de le conserver en lieu sûr." + }, + "viewRecoveryCode": { + "message": "Voir le code de récupération" + }, + "providers": { + "message": "Fournisseurs", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Activer" + }, + "enabled": { + "message": "Activé" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Adhésion Premium" + }, + "premiumRequired": { + "message": "Adhésion Premium requise" + }, + "premiumRequiredDesc": { + "message": "Une adhésion premium est requise pour utiliser cette fonctionnalité." + }, + "youHavePremiumAccess": { + "message": "Vous avez un accès premium" + }, + "alreadyPremiumFromOrg": { + "message": "Vous avez déjà accès aux fonctionnalités premium grâce à une organisation dont vous êtes membre." + }, + "manage": { + "message": "Gérer" + }, + "disable": { + "message": "Désactiver" + }, + "twoStepLoginProviderEnabled": { + "message": "Ce fournisseur de connexion en deux étapes est activé sur votre compte." + }, + "twoStepLoginAuthDesc": { + "message": "Entrez votre mot de passe principal pour modifier les paramètres de connexion en deux étapes." + }, + "twoStepAuthenticatorDesc": { + "message": "Suivez ces étapes pour configurer la connexion en deux étapes avec une application d'authentification :" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Télécharger une application d'authentification en deux étapes" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Besoin d'une application d'authentification en deux étapes ? Téléchargez l'une des applications suivantes" + }, + "iosDevices": { + "message": "Appareils iOS" + }, + "androidDevices": { + "message": "Appareils Android" + }, + "windowsDevices": { + "message": "Appareils Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Ces applications sont recommandées, mais d'autres applications d'authentification fonctionneront également." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scannez ce QR code avec votre application d'authentification" + }, + "key": { + "message": "Clé" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Entrez le code de vérification à 6 chiffres fourni par l’application" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Dans le cas où vous devez l’ajouter à un autre appareil, voici le code QR (ou clé) requis par votre application d'authentification." + }, + "twoStepDisableDesc": { + "message": "Êtes-vous sûr de que vouloir désactiver ce fournisseur de connexion en deux étapes ?" + }, + "twoStepDisabled": { + "message": "Fournisseur de connexion en deux étapes désactivé." + }, + "twoFactorYubikeyAdd": { + "message": "Ajouter une nouvelle YubiKey à votre compte" + }, + "twoFactorYubikeyPlugIn": { + "message": "Branchez la YubiKey dans un port USB de votre ordinateur." + }, + "twoFactorYubikeySelectKey": { + "message": "Sélectionnez le premier champ YubiKey libre ci-dessous." + }, + "twoFactorYubikeyTouchButton": { + "message": "Appuyez sur le bouton de la YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Sauvegarder le contenu du formulaire." + }, + "twoFactorYubikeyWarning": { + "message": "En raison de limitations de plateforme, les YubiKeys ne sont pas utilisables sur toutes les applications Bitwarden. Vous devriez activer un autre fournisseur de connexion en deux étapes afin de pouvoir accéder à votre compte lorsque vous ne pouvez pas utiliser les YubiKeys. Plateformes prises en charge :" + }, + "twoFactorYubikeySupportUsb": { + "message": "Coffre web, application de bureau, interface ligne de commande (CLI) et toutes les extensions de navigateur sur un appareil doté d'un port USB pouvant accepter votre YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Applications mobiles sur un appareil avec NFC ou un port USB pouvant accepter votre YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Clé U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Clé WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Support du NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Une de mes clés supporte le NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Si une de vos YubiKeys supporte le NFC (comme la YubiKey NEO), vous serez averti sur les appareils mobiles en cas de disponibilité du NFC." + }, + "yubikeysUpdated": { + "message": "Les YubiKeys ont été mises à jour" + }, + "disableAllKeys": { + "message": "Désactiver toutes les clés" + }, + "twoFactorDuoDesc": { + "message": "Entrez les informations de l'application Bitwarden provenant de votre panneau Duo Admin." + }, + "twoFactorDuoIntegrationKey": { + "message": "Clé d'intégration" + }, + "twoFactorDuoSecretKey": { + "message": "Clé secrète" + }, + "twoFactorDuoApiHostname": { + "message": "Nom d'hôte de l'API" + }, + "twoFactorEmailDesc": { + "message": "Suivez ces étapes pour mettre en place la connexion en deux étapes avec e-mail :" + }, + "twoFactorEmailEnterEmail": { + "message": "Entrez l'e-mail où vous souhaitez recevoir les codes de vérification" + }, + "twoFactorEmailEnterCode": { + "message": "Entrez le code de vérification à 6 chiffres reçu par e-mail" + }, + "sendEmail": { + "message": "Envoyer l'e-mail" + }, + "twoFactorU2fAdd": { + "message": "Ajouter une clé de sécurité FIDO U2F à votre compte" + }, + "removeU2fConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer cette clé de sécurité ?" + }, + "twoFactorWebAuthnAdd": { + "message": "Ajoutez une clé de sécurité WebAuthn à votre compte" + }, + "readKey": { + "message": "Lire la clé" + }, + "keyCompromised": { + "message": "La clé est compromise." + }, + "twoFactorU2fGiveName": { + "message": "Donnez un nom convivial à la clé de sécurité pour l'identifier." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Branchez la clé de sécurité sur un port USB de votre ordinateur et cliquez sur le bouton \"Lire la clé\"." + }, + "twoFactorU2fTouchButton": { + "message": "Si la clé de sécurité a un bouton, touchez-le." + }, + "twoFactorU2fSaveForm": { + "message": "Sauvegarder le contenu du formulaire." + }, + "twoFactorU2fWarning": { + "message": "En raison de limitations de plateforme, FIDO U2F n'est pas utilisable sur toutes les applications Bitwarden. Vous devriez activer un autre fournisseur de connexion en deux étapes afin de pouvoir accéder à votre compte lorsque vous ne pouvez pas utiliser FIDO U2F. Plateformes prises en charge :" + }, + "twoFactorU2fSupportWeb": { + "message": "Coffre web et extensions sur un ordinateur fixe/portable avec un navigateur compatible U2F (Chrome, Opera, Vivaldi ou Firefox avec FIDO U2F activé)." + }, + "twoFactorU2fWaiting": { + "message": "Attente de l'appui sur le bouton de votre clé de sécurité" + }, + "twoFactorU2fClickSave": { + "message": "Cliquez sur le bouton « Enregistrer » ci-dessous pour activer cette clé de sécurité pour une connexion en deux étapes." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Un problème est survenu lors de la lecture de la clé de sécurité. Veuillez réessayer." + }, + "twoFactorWebAuthnWarning": { + "message": "En raison de limitations de plateforme, WebAuthn n'est pas utilisable sur toutes les applications Bitwarden. Vous devriez activer un autre fournisseur de connexion en deux étapes afin de pouvoir accéder à votre compte lorsque vous ne pouvez pas utiliser WebAuthn. Plateformes prises en charge :" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Coffre web et extensions sur un ordinateur fixe/portable avec un navigateur compatible WebAuthn (Chrome, Opera, Vivaldi ou Firefox avec FIDO U2F activé)." + }, + "twoFactorRecoveryYourCode": { + "message": "Votre code de récupération de connexion en deux étapes Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Vous n'avez pas encore activé de fournisseur de connexion en deux étapes. Après avoir activé un fournisseur de connexion en deux étapes, vous pouvez consulter ici votre code de récupération." + }, + "printCode": { + "message": "Imprimer le code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Rapports" + }, + "reportsDesc": { + "message": "Identifiez et fermez les trous de sécurité dans vos comptes en ligne en cliquant sur les rapports ci-dessous." + }, + "unsecuredWebsitesReport": { + "message": "Rapport sur les sites web non sécurisés" + }, + "unsecuredWebsitesReportDesc": { + "message": "L'utilisation de sites Web non sécurisés avec le schéma http:// peut être dangereuse. Si le site Web le permet, vous devriez toujours y accéder en utilisant le schéma https:// afin que votre connexion soit chiffrée." + }, + "unsecuredWebsitesFound": { + "message": "Sites web non sécurisés trouvés" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Nous avons trouvé $COUNT$ éléments dans votre coffre avec des URI non sécurisés. Vous devriez remplacer leur schéma URI par https:// si le site Web le permet.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Aucun élément dans votre coffre n'a d'URI non sécurisés." + }, + "inactive2faReport": { + "message": "Rapport 2FA inactif" + }, + "inactive2faReportDesc": { + "message": "L'authentification à deux facteurs (2FA) est un paramètre de sécurité important qui permet de sécuriser vos comptes. Si le site Web le propose, vous devriez toujours activer l'authentification à deux facteurs." + }, + "inactive2faFound": { + "message": "Identifiants sans 2FA trouvés" + }, + "inactive2faFoundDesc": { + "message": "Nous avons trouvé $COUNT$ site(s) web(s) dans votre coffre qui ne sont peut-être pas configurés avec une authentification à deux facteurs (d'après twofactorauth.org). Pour mieux protéger ces comptes, vous devriez activer l'authentification à deux facteurs.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Aucun site web n'a été trouvé dans votre coffre avec une configuration d'authentification à deux facteurs manquante." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Rapport sur les mots de passe exposés" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "Mots de passe exposés trouvés" + }, + "exposedPasswordsFoundDesc": { + "message": "Nous avons trouvé $COUNT$ éléments dans votre coffre qui ont des mots de passe qui ont été exposés dans des fuites de données connues. Vous devriez les changer pour utiliser un nouveau mot de passe.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Aucun élément de votre coffre n'a de mots de passe qui ont été révélés lors de fuites de données connues." + }, + "checkExposedPasswords": { + "message": "Vérifier les mots de passe exposés" + }, + "exposedXTimes": { + "message": "Exposé $COUNT$ fois", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Rapport sur les mots de passe faibles" + }, + "weakPasswordsReportDesc": { + "message": "Les mots de passe faibles peuvent être facilement devinés par des pirates informatiques et des outils automatisés qui sont utilisés pour pirater les mots de passe. Le générateur de mots de passe Bitwarden peut vous aider à créer des mots de passe forts." + }, + "weakPasswordsFound": { + "message": "Mots de passe faibles trouvés" + }, + "weakPasswordsFoundDesc": { + "message": "Nous avons trouvé $COUNT$ éléments dans votre coffre avec des mots de passe qui ne sont pas forts. Vous devriez les mettre à jour pour utiliser des mots de passe plus forts.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Aucun élément dans votre coffre n'a de mots de passe faibles." + }, + "reusedPasswordsReport": { + "message": "Rapport sur les mots de passe réutilisés" + }, + "reusedPasswordsReportDesc": { + "message": "Si un service que vous utilisez est compromis, la réutilisation du même mot de passe ailleurs peut permettre aux pirates d'accéder facilement à un plus grand nombre de vos comptes en ligne. Vous devriez utiliser un mot de passe unique pour chaque compte ou service." + }, + "reusedPasswordsFound": { + "message": "Mots de passe réutilisés trouvés" + }, + "reusedPasswordsFoundDesc": { + "message": "Nous avons trouvé $COUNT$ mots de passe qui sont réutilisés dans votre coffre. Vous devriez les changer pour utiliser des mots de passe différents.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Aucun identifiant dans votre coffre n'a de mots de passe qui sont réutilisés." + }, + "reusedXTimes": { + "message": "Réutilisé $COUNT$ fois", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Rapport sur les fuites de données" + }, + "breachDesc": { + "message": "Une « fuite » est un incident où les données d'un site ont été obtenues illégalement par des pirates informatiques, puis rendues publiques. Examinez les types de données qui ont été compromis (adresses électroniques, mots de passe, cartes de crédit, etc.) et prenez les mesures appropriées, comme la modification des mots de passe." + }, + "breachCheckUsernameEmail": { + "message": "Vérifiez tous les noms d'utilisateur ou les adresses électroniques que vous utilisez." + }, + "checkBreaches": { + "message": "Vérifier les fuites" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ n'a été trouvé dans aucune fuite de données.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Bonne nouvelle", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ a été trouvé dans $COUNT$ fuites de données différentes en ligne.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Des comptes ayant fuité ont été trouvés" + }, + "compromisedData": { + "message": "Données compromises" + }, + "website": { + "message": "Site web" + }, + "affectedUsers": { + "message": "Utilisateurs concernés" + }, + "breachOccurred": { + "message": "Une fuite a eu lieu" + }, + "breachReported": { + "message": "Fuite signalée" + }, + "reportError": { + "message": "Une erreur est survenue en essayant de charger le rapport. Réessayez" + }, + "billing": { + "message": "Facturation" + }, + "accountCredit": { + "message": "Compte créditeur", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Solde du compte", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Ajouter du crédit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Montant", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Le crédit ajouté apparaîtra sur votre compte une fois que le paiement aura été entièrement traité. Certains moyens de paiement sont différés et peuvent prendre plus de temps à traiter que d'autres." + }, + "makeSureEnoughCredit": { + "message": "Veuillez vous assurer que votre compte dispose d'un crédit suffisant pour cet achat. Si le crédit de votre compte n'est pas suffisant, votre mode de paiement par défaut sera utilisé pour régler la différence. Vous pouvez ajouter du crédit à votre compte à partir de la page Facturation." + }, + "creditAppliedDesc": { + "message": "Le crédit de votre compte peut être utilisé pour régler vos achats. Tout crédit disponible sera automatiquement appliqué aux factures générées pour ce compte." + }, + "goPremium": { + "message": "Devenir Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Vous venez de passer à un compte Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Mettez à niveau votre compte vers un abonnement premium et débloquez d'incroyables fonctionnalités supplémentaires." + }, + "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." + }, + "premiumSignUpEmergency": { + "message": "Accès d'urgence" + }, + "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 !" + }, + "premiumPrice": { + "message": "Tout pour seulement $PRICE$ /an !", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Add-ons" + }, + "premiumAccess": { + "message": "Accès premium" + }, + "premiumAccessDesc": { + "message": "Vous pouvez offrir un accès premium à tous les membres de votre organisation pour $PRICE$/$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Stockage additionnel (Go)" + }, + "additionalStorageGbDesc": { + "message": "# Go additionnels" + }, + "additionalStorageIntervalDesc": { + "message": "Votre offre comprend $SIZE$ de stockage de fichiers chiffrés. Vous pouvez ajouter du stockage supplémentaire pour $PRICE$ par Go/$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Récapitulatif" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "an" + }, + "month": { + "message": "mois" + }, + "monthAbbr": { + "message": "mois", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Votre mode de paiement sera facturé immédiatement et de manière récurrente chaque année. Vous pouvez annuler à tout moment." + }, + "paymentCharged": { + "message": "Votre mode de paiement sera facturé immédiatement et de manière récurrente chaque $INTERVAL$. Vous pouvez annuler à tout moment.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Votre offre comprend un essai gratuit de 7 jours. Votre mode de paiement ne sera pas facturé avant la fin de la période d'essai. Vous pouvez annuler à tout moment." + }, + "paymentInformation": { + "message": "Informations de paiement" + }, + "billingInformation": { + "message": "Informations de facturation" + }, + "creditCard": { + "message": "Carte de crédit" + }, + "paypalClickSubmit": { + "message": "Cliquez sur le bouton PayPal pour vous connecter sur votre compte PayPal, puis cliquez sur le bouton Soumettre ci-dessous pour continuer." + }, + "cancelSubscription": { + "message": "Annuler l'abonnement" + }, + "subscriptionCanceled": { + "message": "L'abonnement a été annulé." + }, + "pendingCancellation": { + "message": "Annulation en attente" + }, + "subscriptionPendingCanceled": { + "message": "L’abonnement a été marqué pour être annulé à la fin de la période de facturation actuelle." + }, + "reinstateSubscription": { + "message": "Rétablir l’abonnement" + }, + "reinstateConfirmation": { + "message": "Êtes-vous sûr de vouloir retirer la demande d’annulation en attente et rétablir votre abonnement ?" + }, + "reinstated": { + "message": "Votre abonnement a été rétabli." + }, + "cancelConfirmation": { + "message": "Êtes-vous sûr de vouloir annuler ? Vous perdrez l’accès à toutes les fonctionnalités de l’abonnement à la fin de ce cycle de facturation." + }, + "canceledSubscription": { + "message": "L'abonnement a été annulé." + }, + "neverExpires": { + "message": "N'expire jamais" + }, + "status": { + "message": "État" + }, + "nextCharge": { + "message": "Prochain paiement" + }, + "details": { + "message": "Détails" + }, + "downloadLicense": { + "message": "Télécharger la licence" + }, + "updateLicense": { + "message": "Mettre à jour la licence" + }, + "updatedLicense": { + "message": "Licence mise à jour" + }, + "manageSubscription": { + "message": "Gérer l'abonnement" + }, + "storage": { + "message": "Stockage" + }, + "addStorage": { + "message": "Ajouter du stockage" + }, + "removeStorage": { + "message": "Retirer du stockage" + }, + "subscriptionStorage": { + "message": "Votre abonnement a un total de $MAX_STORAGE$ Go de stockage de fichiers chiffrés. Vous utilisez actuellement $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Moyen de paiement" + }, + "noPaymentMethod": { + "message": "Aucun moyen de paiement enregistré." + }, + "addPaymentMethod": { + "message": "Ajouter un moyen de paiement" + }, + "changePaymentMethod": { + "message": "Changer de moyen de paiement" + }, + "invoices": { + "message": "Factures" + }, + "noInvoices": { + "message": "Aucune facture." + }, + "paid": { + "message": "Payée", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Due", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Aucune transaction." + }, + "chargeNoun": { + "message": "Débit", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Remboursement", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Tous les frais apparaîtront sur votre relevé sous $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Go de stockage à ajouter" + }, + "gbStorageRemove": { + "message": "Go de stockage à retirer" + }, + "storageAddNote": { + "message": "L'ajout d'espace de stockage entraînera des ajustements sur vos totaux de facturation et facturera immédiatement le moyen de paiement enregistré. La première facturation sera calculée au prorata du reste du cycle de facturation en cours." + }, + "storageRemoveNote": { + "message": "La suppression d'espace de stockage entraînera des ajustements sur vos totaux de facturation qui seront calculés au prorata et portés au crédit de votre prochaine facturation." + }, + "adjustedStorage": { + "message": "$AMOUNT$ Go de stockage mis à jour.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contacter le support client" + }, + "updatedPaymentMethod": { + "message": "Moyen de paiement mise à jour." + }, + "purchasePremium": { + "message": "Acheter Premium" + }, + "licenseFile": { + "message": "Fichier de licence" + }, + "licenseFileDesc": { + "message": "Votre fichier de licence aura un nom similaire à $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Pour mettre à niveau votre compte vers un abonnement premium, vous devez fournir un fichier de licence valide." + }, + "uploadLicenseFileOrg": { + "message": "Pour créer une organisation sur une instance auto-hébergée vous devez fournir un fichier de licence valide." + }, + "accountEmailMustBeVerified": { + "message": "L'adresse e-mail de votre compte doit être vérifiée." + }, + "newOrganizationDesc": { + "message": "Les organisations permettent de partager des parties de votre coffre avec d'autres personnes ainsi que de gérer des utilisateurs pour une entité spécifique comme une famille, une petite équipe ou une grande entreprise." + }, + "generalInformation": { + "message": "Informations générales" + }, + "organizationName": { + "message": "Nom de l'organisation" + }, + "accountOwnedBusiness": { + "message": "Ce compte est détenu par une entreprise." + }, + "billingEmail": { + "message": "E-mail de facturation" + }, + "businessName": { + "message": "Nom de l'entreprise" + }, + "chooseYourPlan": { + "message": "Choisissez votre offre" + }, + "users": { + "message": "Utilisateurs" + }, + "userSeats": { + "message": "Licences utilisateur" + }, + "additionalUserSeats": { + "message": "Licences utilisateur supplémentaires" + }, + "userSeatsDesc": { + "message": "Nombre de licences utilisateur" + }, + "userSeatsAdditionalDesc": { + "message": "Votre offre comprend $BASE_SEATS$ licences utilisateurs. Vous pouvez ajouter des utilisateurs supplémentaires pour $SEAT_PRICE$ par utilisateur/mois.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "De combien de licences utilisateur avez-vous besoin ? Vous pouvez également en ajouter ultérieurement si besoin." + }, + "planNameFree": { + "message": "Gratuit", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Pour tester ou pour les utilisateurs individuels qui souhaitent partager avec $COUNT$ autre(s) utilisateur(s).", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familles" + }, + "planDescFamilies": { + "message": "Pour une utilisation personnelle, pour partager avec la famille et les amis." + }, + "planNameTeams": { + "message": "Équipes" + }, + "planDescTeams": { + "message": "Pour les entreprises et autres équipes." + }, + "planNameEnterprise": { + "message": "Entreprise" + }, + "planDescEnterprise": { + "message": "Pour les entreprises et autres grandes organisations." + }, + "freeForever": { + "message": "Gratuit pour toujours" + }, + "includesXUsers": { + "message": "comprend $COUNT$ utilisateurs", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Utilisateurs supplémentaires" + }, + "costPerUser": { + "message": "$COST$ par utilisateur", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limité à $COUNT$ utilisateurs (vous inclus)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limité à $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Ajoutez et partagez avec jusqu'à $COUNT$ utilisateurs", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Ajoutez et partagez avec un nombre illimité d'utilisateurs" + }, + "createUnlimitedCollections": { + "message": "Créez un nombre illimité de collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ de stockage de fichiers chiffrés", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Hébergement local (optionnel)" + }, + "usersGetPremium": { + "message": "Les utilisateurs auront accès aux fonctionnalités premium" + }, + "controlAccessWithGroups": { + "message": "Contrôlez l'accès des utilisateurs avec des groupes" + }, + "syncUsersFromDirectory": { + "message": "Synchronisez vos utilisateurs et vos groupes à partir d'un répertoire" + }, + "trackAuditLogs": { + "message": "Suivez les actions des utilisateurs avec les journaux d'audit" + }, + "enforce2faDuo": { + "message": "Forcez l'authentification à deux facteurs (2FA) avec Duo" + }, + "priorityCustomerSupport": { + "message": "Support client prioritaire" + }, + "xDayFreeTrial": { + "message": "$COUNT$ jours d'essai gratuit, annulez à tout moment", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Mensuel" + }, + "annually": { + "message": "Annuel" + }, + "basePrice": { + "message": "Prix de base" + }, + "organizationCreated": { + "message": "L'organisation a été créée" + }, + "organizationReadyToGo": { + "message": "Votre nouvelle organisation est prête !" + }, + "organizationUpgraded": { + "message": "Votre organisation a été mise à niveau." + }, + "leave": { + "message": "Quitter" + }, + "leaveOrganizationConfirmation": { + "message": "Êtes-vous sûr de vouloir quitter cette organisation ?" + }, + "leftOrganization": { + "message": "Vous avez quitté l'organisation." + }, + "defaultCollection": { + "message": "Collection par défaut" + }, + "getHelp": { + "message": "Obtenir de l'aide" + }, + "getApps": { + "message": "Télécharger les applications" + }, + "loggedInAs": { + "message": "Connecté en tant que" + }, + "eventLogs": { + "message": "Journal des événements" + }, + "people": { + "message": "Personnes" + }, + "policies": { + "message": "Politiques" + }, + "singleSignOn": { + "message": "Authentification unique" + }, + "editPolicy": { + "message": "Modifier la politique" + }, + "groups": { + "message": "Groupes" + }, + "newGroup": { + "message": "Nouveau groupe" + }, + "addGroup": { + "message": "Ajouter un groupe" + }, + "editGroup": { + "message": "Modifier le groupe" + }, + "deleteGroupConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer ce groupe?" + }, + "removeUserConfirmation": { + "message": "Êtes-vous sûr de vouloir retirer cet utilisateur ?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Attention ! Cet utilisateur a besoin de Key Connector pour gérer son chiffrement. Supprimer cet utilisateur de votre organisation désactivera définitivement son compte. Cette action ne peut pas être annulée. Voulez-vous continuer?" + }, + "externalId": { + "message": "Identifiant externe" + }, + "externalIdDesc": { + "message": "L’identifiant externe peut être utilisé comme référence ou pour lier cette ressource à un système externe tel qu’un répertoire utilisateur." + }, + "accessControl": { + "message": "Contrôle d’accès" + }, + "groupAccessAllItems": { + "message": "Ce groupe peut voir et modifier tous les éléments." + }, + "groupAccessSelectedCollections": { + "message": "Ce groupe peut accéder uniquement aux collections sélectionnées." + }, + "readOnly": { + "message": "Lecture seule" + }, + "newCollection": { + "message": "Nouvelle collection" + }, + "addCollection": { + "message": "Ajouter une collection" + }, + "editCollection": { + "message": "Modifier la collection" + }, + "deleteCollectionConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer cette collection?" + }, + "editUser": { + "message": "Modifier un utilisateur" + }, + "inviteUser": { + "message": "Inviter un utilisateur" + }, + "inviteUserDesc": { + "message": "Invitez de nouveaux utilisateurs à votre organisation en entrant l'adresse e-mail de leur compte Bitwarden ci-dessous. S'ils n’ont pas déjà un compte Bitwarden, il leur sera demandé d'en créer un nouveau." + }, + "inviteMultipleEmailDesc": { + "message": "Vous pouvez inviter jusqu'à $COUNT$ utilisateurs à la fois en séparant les adresses e-mail par une virgule.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Cet utilisateur utilise l'identification en deux étapes pour protéger son compte." + }, + "userAccessAllItems": { + "message": "Cet utilisateur peut voir et modifier tous les éléments." + }, + "userAccessSelectedCollections": { + "message": "Cet utilisateur peut accéder uniquement aux collections sélectionnées." + }, + "search": { + "message": "Rechercher" + }, + "invited": { + "message": "Invité" + }, + "accepted": { + "message": "Accepté" + }, + "confirmed": { + "message": "Confirmé" + }, + "clientOwnerEmail": { + "message": "Adresse e-mail du propriétaire du client" + }, + "owner": { + "message": "Propriétaire" + }, + "ownerDesc": { + "message": "L’utilisateur avec l’accès le plus élevé qui peut gérer tous les aspects de votre organisation." + }, + "clientOwnerDesc": { + "message": "Cet utilisateur doit être indépendant du fournisseur. Si le fournisseur est dissocié de l'organisation, cet utilisateur conservera la propriété de l'organisation." + }, + "admin": { + "message": "Administrateur" + }, + "adminDesc": { + "message": "Les administrateurs peuvent voir et gérer tous les éléments, les collections et les utilisateurs de votre organisation." + }, + "user": { + "message": "Utilisateur" + }, + "userDesc": { + "message": "Un utilisateur standard avec accès aux collections qui lui sont assignées dans votre organisation." + }, + "manager": { + "message": "Gestionnaire" + }, + "managerDesc": { + "message": "Les gestionnaires peuvent voir et gérer les collections de votre organisation qui leur ont été assignées." + }, + "all": { + "message": "Tous" + }, + "refresh": { + "message": "Actualiser" + }, + "timestamp": { + "message": "Horodatage" + }, + "event": { + "message": "Évènement" + }, + "unknown": { + "message": "Inconnu" + }, + "loadMore": { + "message": "Plus de résultats" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Ordinateur", + "description": "Desktop app" + }, + "webVault": { + "message": "Coffre web" + }, + "loggedIn": { + "message": "Connecté." + }, + "changedPassword": { + "message": "Mot de passe changé." + }, + "enabledUpdated2fa": { + "message": "Connexion en deux étapes activée/mise à jour." + }, + "disabled2fa": { + "message": "Connexion en deux étapes désactivée." + }, + "recovered2fa": { + "message": "Compte récupéré depuis une connexion en deux étapes." + }, + "failedLogin": { + "message": "Tentative de connexion avec mot de passe incorrect." + }, + "failedLogin2fa": { + "message": "Tentative de connexion échouée avec deuxième facteur incorrect." + }, + "exportedVault": { + "message": "Le coffre a été exporté." + }, + "exportedOrganizationVault": { + "message": "Le coffre de l'organisation a été exporté." + }, + "editedOrgSettings": { + "message": "Paramètres de l’organisation modifiés." + }, + "createdItemId": { + "message": "Élément $ID$ créé.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Élément $ID$ modifié.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "L'élément $ID$ a été envoyé dans la corbeille.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "L'élément $ID$ a été déplacé vers une organisation.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "L'élément $ID$ a été consulté.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Le mot de passe de l'élément $ID$ a été consulté.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Un champ masqué de l’élément $ID$ a été consulté.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Le code de sécurité de l’élément $ID$ a été consulté.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Le mot de passe de l'élément $ID$ a été copié.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Un champ masqué de l’élément $ID$ a été copié.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Le code de sécurité de l’élément $ID$ a été copié.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "L’élément $ID$ a été rempli automatiquement.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Collection $ID$ créée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Collection $ID$ modifiée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Collection $ID$ supprimée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Politique $ID$ modifiée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Groupe $ID$ créé.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Groupe $ID$ modifié.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Groupe $ID$ supprimé.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Utilisateur $ID$ retiré.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "La pièce jointe pour l'élément $ID$ a été créée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "La pièce jointe de l'élément $ID$ a été supprimée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Collections éditées pour l'élément $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Utilisateur $ID$ invité.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Utilisateur $ID$ confirmé.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Utilisateur $ID$ modifié.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Groupes édités pour l'utilisateur $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO dissocié pour l'utilisateur $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organisation $ID$ créée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organisation $ID$ ajoutée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organisation $ID$ supprimée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Coffre-fort de l'organisation $ID$ consulté.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Appareil" + }, + "view": { + "message": "Voir" + }, + "invalidDateRange": { + "message": "Plage de dates non valide." + }, + "errorOccurred": { + "message": "Une erreur est survenue." + }, + "userAccess": { + "message": "Accès utilisateur" + }, + "userType": { + "message": "Type d'utilisateur" + }, + "groupAccess": { + "message": "Accès groupe" + }, + "groupAccessUserDesc": { + "message": "Modifier les groupes auxquels appartient cet utilisateur." + }, + "invitedUsers": { + "message": "Utilisateur(s) invité(s)." + }, + "resendInvitation": { + "message": "Renvoyer l'invitation" + }, + "resendEmail": { + "message": "Renvoyer l'email" + }, + "hasBeenReinvited": { + "message": "$USER$ a été réinvité.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirmer" + }, + "confirmUser": { + "message": "Confirmer l'utilisateur" + }, + "hasBeenConfirmed": { + "message": "$USER$ a été confirmé.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirmer les utilisateurs" + }, + "usersNeedConfirmed": { + "message": "Il y a des utilisateurs qui ont accepté leur invitation, mais qui doivent encore être confirmés. Les utilisateurs n'auront pas accès à l'organisation tant qu'ils n'auront pas été confirmés." + }, + "startDate": { + "message": "Date de début" + }, + "endDate": { + "message": "Date de fin" + }, + "verifyEmail": { + "message": "Vérifier l'adresse e-mail" + }, + "verifyEmailDesc": { + "message": "Vérifiez l'adresse e-mail de votre compte pour débloquer l'ensemble des fonctionnalités." + }, + "verifyEmailFirst": { + "message": "L'adresse e-mail de votre compte doit d'abord être vérifiée." + }, + "checkInboxForVerification": { + "message": "Vérifiez votre boîte de réception pour le lien de vérification." + }, + "emailVerified": { + "message": "Votre adresse e-mail a été vérifiée." + }, + "emailVerifiedFailed": { + "message": "Impossible de vérifier votre adresse e-mail. Essayez de renvoyer un nouvel e-mail de vérification." + }, + "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é." + }, + "updateBrowser": { + "message": "Mettre à jour le navigateur" + }, + "updateBrowserDesc": { + "message": "Vous utilisez un navigateur non supporté. Le coffre web pourrait ne pas fonctionner correctement." + }, + "joinOrganization": { + "message": "Rejoindre l'organisation" + }, + "joinOrganizationDesc": { + "message": "Vous avez été invité à rejoindre l'organisation ci-dessus. Pour accepter l'invitation, vous devez vous connecter ou créer un nouveau compte Bitwarden." + }, + "inviteAccepted": { + "message": "Invitation acceptée" + }, + "inviteAcceptedDesc": { + "message": "Vous pourrez accéder à cette organisation dès qu'un administrateur aura confirmé votre inscription. Nous vous enverrons un e-mail lorsque ce sera fait." + }, + "inviteAcceptFailed": { + "message": "Impossible d’accepter l’invitation. Demandez à un administrateur de l'organisation d’envoyer une nouvelle invitation." + }, + "inviteAcceptFailedShort": { + "message": "Impossible d'accepter l'invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Se souvenir de l'e-mail" + }, + "recoverAccountTwoStepDesc": { + "message": "Si vous ne pouvez pas accéder à votre compte grâce à vos méthodes de connexion en deux étapes habituelles, vous pouvez utiliser votre code de récupération de connexion en deux étapes pour désactiver tous les fournisseurs en deux étapes sur votre compte." + }, + "recoverAccountTwoStep": { + "message": "Récupération de connexion en deux étapes" + }, + "twoStepRecoverDisabled": { + "message": "L'authentification en deux étapes a été désactivée sur votre compte." + }, + "learnMore": { + "message": "En savoir plus" + }, + "deleteRecoverDesc": { + "message": "Entrez votre adresse e-mail ci-dessous pour récupérer et supprimer votre compte." + }, + "deleteRecoverEmailSent": { + "message": "Si votre compte existe, nous vous avons envoyé un e-mail avec des instructions supplémentaires." + }, + "deleteRecoverConfirmDesc": { + "message": "Vous avez demandé de supprimer votre compte Bitwarden. Cliquez sur le bouton ci-dessous pour confirmer." + }, + "myOrganization": { + "message": "Mon organisation" + }, + "deleteOrganization": { + "message": "Supprimer l'organisation" + }, + "deletingOrganizationContentWarning": { + "message": "Entrez le mot de passe maître pour confirmer la suppression de $ORGANIZATION$ et de toutes les données associées. Les données du coffre dans $ORGANIZATION$ inclut:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Les comptes utilisateur resteront actifs après la suppression, mais ne seront plus associés à cette organisation." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "La suppression de $ORGANIZATION$ est permanente et irréversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisation supprimée" + }, + "organizationDeletedDesc": { + "message": "L’organisation et toutes les données associées ont été supprimées." + }, + "organizationUpdated": { + "message": "Organisation mise à jour" + }, + "taxInformation": { + "message": "Informations fiscales" + }, + "taxInformationDesc": { + "message": "Pour les clients aux États-Unis, le code postal (ZIP) est requis pour satisfaire aux exigences de la taxe de vente. Pour d'autres pays, vous pouvez éventuellement fournir un numéro d'identification fiscale (TVA/TPS) et/ou une adresse à afficher sur vos factures." + }, + "billingPlan": { + "message": "Offre", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Changer d'offre", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Mettez à niveau votre compte vers un autre plan en fournissant les informations ci-dessous. Assurez-vous qu'un mode de paiement actif a été ajouté au compte.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Facture n°$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Afficher la facture" + }, + "downloadInvoice": { + "message": "Télécharger la facture" + }, + "verifyBankAccount": { + "message": "Vérifier le compte bancaire" + }, + "verifyBankAccountDesc": { + "message": "Nous avons effectué deux dépôts d'un faible montant sur votre compte bancaire (ils peuvent prendre 1-2 jours ouvrés pour apparaître). Saisissez ces montants pour valider le compte bancaire." + }, + "verifyBankAccountInitialDesc": { + "message": "Le paiement avec un compte bancaire est seulement disponible pour les clients résidant aux États-Unis. Il vous sera demandé de valider votre compte bancaire. Nous effectuerons deux dépôts d'un faible montant sous 1-2 jours ouvrés. Saisissez ces montants sur la page de facturation de votre organisation pour valider votre compte bancaire." + }, + "verifyBankAccountFailureWarning": { + "message": "Une erreur lors de la validation de votre compte bancaire annulera le paiement et votre abonnement sera désactivé." + }, + "verifiedBankAccount": { + "message": "Le compte bancaire a été vérifié." + }, + "bankAccount": { + "message": "Compte bancaire" + }, + "amountX": { + "message": "Montant $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Code banque", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Numéro de compte" + }, + "accountHolderName": { + "message": "Nom du titulaire du compte" + }, + "bankAccountType": { + "message": "Type de compte" + }, + "bankAccountTypeCompany": { + "message": "Entreprise (professionnel)" + }, + "bankAccountTypeIndividual": { + "message": "Individuel (personnel)" + }, + "enterInstallationId": { + "message": "Saisissez l'identifiant de votre installation" + }, + "limitSubscriptionDesc": { + "message": "Définissez un nombre de licences limite pour votre abonnement. Une fois cette limite atteinte, vous ne pourrez plus inviter de nouveaux utilisateurs." + }, + "maxSeatLimit": { + "message": "Nombre de licences maximum (optionnel)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Coût potentiel maximal des licences" + }, + "addSeats": { + "message": "Ajouter des licences", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Retirer des licences", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Les ajustements apportés à votre abonnement entraîneront des modifications au prorata de vos totaux de facturation. Si les utilisateurs nouvellement invités dépassent votre nombre de licences, vous recevrez immédiatement des frais au prorata pour les utilisateurs supplémentaires." + }, + "subscriptionUserSeats": { + "message": "Votre abonnement permet un total de $COUNT$ utilisateurs.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limiter le nombre de licences (optionnel)" + }, + "subscriptionSeats": { + "message": "Licences" + }, + "subscriptionUpdated": { + "message": "Abonnement mis à jour" + }, + "additionalOptions": { + "message": "Options supplémentaires" + }, + "additionalOptionsDesc": { + "message": "Pour obtenir de l'aide supplémentaire dans la gestion de votre abonnement, veuillez contacter le support client." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Les ajustements apportés à votre abonnement entraîneront des modifications au prorata de vos totaux de facturation. Si les utilisateurs nouvellement invités dépassent votre nombre de licences, vous recevrez immédiatement des frais au prorata pour les utilisateurs supplémentaires." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Les ajustements apportés à votre abonnement entraîneront des modifications au prorata de vos totaux de facturation. Si les utilisateurs nouvellement invités dépassent votre nombre de licences, vous recevrez immédiatement des frais au prorata pour les utilisateurs supplémentaires jusqu'à ce que votre limite de $MAX$ licences soit atteinte.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Vous ne pouvez pas inviter plus de $COUNT$ utilisateurs sans mettre votre offre à niveau.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Vous ne pouvez pas inviter plus de $COUNT$ utilisateurs sans mettre votre offre à niveau. Veuillez contacter le support client pour mettre à niveau.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Votre offre permet un total de $COUNT$ utilisateurs. Votre abonnement est parrainé et facturé à une organisation externe.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Les ajustements apportés à votre abonnement entraîneront des modifications au prorata de vos totaux de facturation. Vous ne pouvez pas inviter plus de $COUNT$ utilisateurs sans augmenter votre nombre de licences.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Licences à ajouter" + }, + "seatsToRemove": { + "message": "Licences à retirer" + }, + "seatsAddNote": { + "message": "L'ajout de licences utilisateur entraînera des ajustements sur vos totaux de facturation et facturera immédiatement le moyen de paiement enregistré. La première facturation sera calculée au prorata du reste du cycle de facturation en cours." + }, + "seatsRemoveNote": { + "message": "La suppression de licences utilisateur entraînera des ajustements sur vos totaux de facturation qui seront calculés au prorata et portés au crédit de votre prochaine facturation." + }, + "adjustedSeats": { + "message": "$AMOUNT$ licences utilisateurs mis à jour.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Clé mise à jour" + }, + "updateKeyTitle": { + "message": "Mettre à jour la clé" + }, + "updateEncryptionKey": { + "message": "Mettre à jour la clé de chiffrement" + }, + "updateEncryptionKeyShortDesc": { + "message": "Vous utilisez actuellement un moyen de chiffrement obsolète." + }, + "updateEncryptionKeyDesc": { + "message": "Nous sommes passés à des clés de chiffrement plus longues qui fournissent une meilleure sécurité et permettent l'accès à de nouvelles fonctionnalités. La mise à jour de votre clé de chiffrement est rapide et facile. Tapez simplement votre mot de passe maître ci-dessous. Cette mise à jour deviendra peut-être obligatoire." + }, + "updateEncryptionKeyWarning": { + "message": "Après avoir mis à jour votre clé de chiffrement, vous devrez vous reconnecter sur toutes les applications Bitwarden que vous utilisez actuellement (comme par exemple l'application mobile ou les extensions de navigateur). Le fait de ne pas vous déconnecter et de vous reconnecter (ce qui télécharge votre nouvelle clé de chiffrement) pourrait entraîner une corruption des données. Nous allons essayer de vous déconnecter automatiquement, mais cela demande un peu de temps." + }, + "updateEncryptionKeyExportWarning": { + "message": "Tous les exports chiffrés que vous avez enregistrés deviendront également invalides." + }, + "subscription": { + "message": "Abonnement" + }, + "loading": { + "message": "Chargement" + }, + "upgrade": { + "message": "Mettre à niveau" + }, + "upgradeOrganization": { + "message": "Mettre à niveau l'organisation" + }, + "upgradeOrganizationDesc": { + "message": "Cette fonctionnalité n'est pas disponible pour les organisations gratuites. Passez à une offre payante pour débloquer plus de fonctionnalités." + }, + "createOrganizationStep1": { + "message": "Créer une organisation : Étape 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Avant de créer votre organisation, vous devez d’abord créer un compte personnel gratuit." + }, + "refunded": { + "message": "Remboursé" + }, + "nothingSelected": { + "message": "Vous n'avez rien sélectionné." + }, + "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." + }, + "termsOfService": { + "message": "Conditions d'utilisation" + }, + "privacyPolicy": { + "message": "Politique de confidentialité" + }, + "filters": { + "message": "Filtres" + }, + "vaultTimeout": { + "message": "Délai d'expiration du coffre" + }, + "vaultTimeoutDesc": { + "message": "Choisissez quand votre coffre expirera et effectuera l'action sélectionnée." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 heure" + }, + "fourHours": { + "message": "4 heures" + }, + "onRefresh": { + "message": "Au rechargement de la page" + }, + "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" + }, + "organizationIsDisabled": { + "message": "L'organisation est désactivée." + }, + "licenseIsExpired": { + "message": "La licence a expiré." + }, + "updatedUsers": { + "message": "Utilisateurs mis à jour" + }, + "selected": { + "message": "Sélectionné(s)" + }, + "ownership": { + "message": "Propriété" + }, + "whoOwnsThisItem": { + "message": "À qui appartient cet élément ?" + }, + "strong": { + "message": "Fort", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Suffisant", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Faible", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Très faible", + "description": "ex. A very weak password. Scale: Very Weak -> 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 de passe) fort(e) pour protéger correctement votre compte Bitwarden. Êtes-vous sûr de vouloir utiliser ce mot de passe maître ?" + }, + "rotateAccountEncKey": { + "message": "Révoquer également la clé de chiffrement de mon compte" + }, + "rotateEncKeyTitle": { + "message": "Révoquer la clé de chiffrement" + }, + "rotateEncKeyConfirmation": { + "message": "Êtes-vous sûr de vouloir révoquer la clé de chiffrement de votre compte ?" + }, + "attachmentsNeedFix": { + "message": "Cet élément a d'anciennes pièces jointes qui doivent être réparées." + }, + "attachmentFixDesc": { + "message": "Il s'agit d'une ancienne pièce jointe qui doit être réparée. Cliquez pour en savoir plus." + }, + "fix": { + "message": "Réparer", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Il y a d'anciennes pièces jointes dans votre coffre qui doivent être réparées avant que vous ne puissiez révoquer la clé de chiffrement de votre compte." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Pour assurer l'intégrité de vos clés de chiffrement, merci de saisir la phrase d'empreinte de l'utilisateur avant de continuer.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Ne jamais demander de vérifier la phrase d'empreinte pour les utilisateurs invités (non recommandé)", + "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." + }, + "free": { + "message": "Gratuit", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Clé d'API" + }, + "apiKeyDesc": { + "message": "Votre clé d'API peut être utilisée pour s'authentifier auprès de l'API publique Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Révoquer la clé d'API invalidera la clé précédente. Vous pouvez révoquer votre clé d'API si vous pensez que la clé actuelle a été compromise." + }, + "apiKeyWarning": { + "message": "Votre clé d'API a un accès complet à l'organisation. Elle doit être gardée secrète." + }, + "userApiKeyDesc": { + "message": "Votre clé d'API peut être utilisée pour vous authentifier dans l'interface ligne de commande (CLI) de Bitwarden." + }, + "userApiKeyWarning": { + "message": "Votre clé d'API est un mécanisme d'authentification alternatif. Elle doit être gardée secrète." + }, + "oauth2ClientCredentials": { + "message": "Identifiants du client OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Voir la clé d'API" + }, + "rotateApiKey": { + "message": "Révoquer la clé d'API" + }, + "selectOneCollection": { + "message": "Vous devez sélectionner au moins une collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nous n'avons pas pu compléter le paiement sur votre carte. Veuillez consulter et payer la facture impayée ci-dessous." + }, + "inAppPurchase": { + "message": "Achat intégré" + }, + "cannotPerformInAppPurchase": { + "message": "Vous ne pouvez pas effectuer cette action tant que vous utilisez les achats intégrés comme méthode de paiement." + }, + "manageSubscriptionFromStore": { + "message": "Vous devez gérer votre abonnement à partir du magasin d’applications où votre achat intégré a été souscrit." + }, + "minLength": { + "message": "Longueur minimale" + }, + "clone": { + "message": "Cloner" + }, + "masterPassPolicyDesc": { + "message": "Définir des exigences minimales pour la force du mot de passe maître." + }, + "twoStepLoginPolicyDesc": { + "message": "Exiger que les utilisateurs définissent une connexion en deux étapes sur leurs comptes personnels." + }, + "twoStepLoginPolicyWarning": { + "message": "Les membres de l'organisation (hors propriétaires et administrateurs) qui n'ont pas activé la connexion en deux étapes sur leur compte personnel seront supprimés de l'organisation et recevront un courriel les informant du changement." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Vous êtes membre d'une organisation qui nécessite que la connexion en deux étapes soit activée sur votre compte utilisateur. Si vous désactivez tous les fournisseurs de connexion en deux étapes, vous serez automatiquement retiré de ces organisations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Définir les exigences minimales pour la configuration du générateur de mot de passe." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Une ou plusieurs politiques d'organisation affectent les paramètres de votre générateur." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Nombre minimum de mots" + }, + "defaultType": { + "message": "Type par défaut" + }, + "userPreference": { + "message": "Choix laissé à l'utilisateur" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Rechercher dans la corbeille" + }, + "permanentlyDelete": { + "message": "Supprimer définitivement" + }, + "permanentlyDeleteSelected": { + "message": "Supprimer définitivement la sélection" + }, + "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" + }, + "permanentlyDeletedItems": { + "message": "Éléments supprimés définitivement" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Vous avez sélectionné $COUNT$ élément(s) à supprimer définitivement. Êtes-vous sûr de vouloir supprimer définitivement tous ces éléments ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Élément $ID$ supprimé définitivement.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restaurer" + }, + "restoreSelected": { + "message": "Restaurer la sélection" + }, + "restoreItem": { + "message": "Restaurer l'élément" + }, + "restoredItem": { + "message": "Élément restauré" + }, + "restoredItems": { + "message": "Éléments restaurés" + }, + "restoreItemConfirmation": { + "message": "Êtes-vous sûr de vouloir restaurer cet élément ?" + }, + "restoreItems": { + "message": "Restaurer les éléments" + }, + "restoreSelectedItemsDesc": { + "message": "Vous avez sélectionné $COUNT$ élément(s) à restaurer. Êtes-vous sûr de vouloir restaurer tous ces éléments ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Élément $ID$ restauré.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Masquer les mots de passe" + }, + "countryPostalCodeRequiredDesc": { + "message": "Nous avons besoin de ces renseignements seulement pour calculer les taxes de vente et compléter les rapports financiers." + }, + "includeVAT": { + "message": "Inclure des informations pour la TVA/TPS (facultatif)" + }, + "taxIdNumber": { + "message": "Identifiant TVA/TPS" + }, + "taxInfoUpdated": { + "message": "Informations sur les taxes mises à jour." + }, + "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." + }, + "identifier": { + "message": "Identifiant" + }, + "organizationIdentifier": { + "message": "Identifiant de l'organisation" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Connectez-vous en utilisant le portail de connexion unique de votre organisation. Veuillez entrer l'identifiant de votre organisation pour commencer." + }, + "enterpriseSingleSignOn": { + "message": "Portail de connexion unique d'entreprise (Single Sign-On)" + }, + "ssoHandOff": { + "message": "Vous pouvez maintenant fermer cet onglet et continuer dans l'extension." + }, + "includeAllTeamsFeatures": { + "message": "Toutes les fonctionnalités pour les équipes, plus :" + }, + "includeSsoAuthentication": { + "message": "Authentification SSO via SAML2.0 et OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Politiques d'entreprise" + }, + "ssoValidationFailed": { + "message": "Échec de la validation SSO" + }, + "ssoIdentifierRequired": { + "message": "L'identifiant de l'organisation est requis." + }, + "unlinkSso": { + "message": "Délier SSO" + }, + "unlinkSsoConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer le lien SSO pour cette organisation?" + }, + "linkSso": { + "message": "Lier SSO" + }, + "singleOrg": { + "message": "Organisation Unique" + }, + "singleOrgDesc": { + "message": "Empêcher les utilisateurs de pouvoir rejoindre d'autres organisations." + }, + "singleOrgBlockCreateMessage": { + "message": "Votre organisation actuelle a une politique qui ne vous permet pas de rejoindre plus d'une organisation. Veuillez contacter les administrateurs de votre organisation ou vous inscrire à partir d'un compte Bitwarden différent." + }, + "singleOrgPolicyWarning": { + "message": "Les membres de l'organisation qui ne sont ni propriétaires ni administrateurs et qui sont déjà membres d'une autre organisation seront retirés de votre organisation." + }, + "requireSso": { + "message": "Authentification par Connexion Unique (Single Sign-On)" + }, + "requireSsoPolicyDesc": { + "message": "Exiger que les utilisateurs se connectent avec la méthode du portail de connexion unique d'entreprise." + }, + "prerequisite": { + "message": "Prérequis" + }, + "requireSsoPolicyReq": { + "message": "La politique d'entreprise \"Organisation Unique\" doit être activée avant d'activer cette politique." + }, + "requireSsoPolicyReqError": { + "message": "La politique \"Organisation Unique\" n'est pas activée." + }, + "requireSsoExemption": { + "message": "Les propriétaires et les administrateurs de l'organisation sont exonérés de l'application de cette politique." + }, + "sendTypeFile": { + "message": "Fichier" + }, + "sendTypeText": { + "message": "Texte" + }, + "createSend": { + "message": "Créer un nouveau Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Supprimer le Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Désactivé" + }, + "sendLink": { + "message": "Lien du Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copier le lien du Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Supprimer le mot de passe" + }, + "removedPassword": { + "message": "Mot de passe supprimé" + }, + "removePasswordConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer le mot de passe ?" + }, + "hideEmail": { + "message": "Cacher mon adresse e-mail aux destinataires." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Tous les Sends" + }, + "maxAccessCountReached": { + "message": "Nombre maximum d'accès atteint", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "En attente de suppression" + }, + "expired": { + "message": "Expiré" + }, + "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." + }, + "sendProtectedPassword": { + "message": "Ce Send est protégé par un mot de passe. Veuillez saisir le mot de passe ci-dessous pour continuer.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Vous ne connaissez pas le mot de passe ? Demandez à l'expéditeur le mot de passe nécessaire pour accéder à ce Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Ce Send est masqué par défaut. Vous pouvez changer sa visibilité en utilisant le bouton ci-dessous.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Télécharger le fichier" + }, + "sendAccessUnavailable": { + "message": "Le Send que vous essayez d'accéder n'existe pas ou n'est plus disponible.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Le fichier associé à ce Send est introuvable.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Il n'y a aucun Send à afficher.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Accès d'urgence" + }, + "emergencyAccessDesc": { + "message": "Accorder et gérer l'accès d'urgence pour les contacts de confiance. Les contacts de confiance peuvent demander l'accès à votre compte pour l'afficher ou en prendre le contrôle en cas d'urgence. Visitez notre page d'aide pour plus d'informations et de détails sur le fonctionnement du partage à divulgation nulle de connaissance." + }, + "emergencyAccessOwnerWarning": { + "message": "Vous êtes propriétaire d'une ou de plusieurs organisations. Si vous autorisez la prise de contrôle à un contact d'urgence, il sera en mesure d'utiliser toutes vos permissions de propriétaire après la prise de contrôle." + }, + "trustedEmergencyContacts": { + "message": "Contacts d'urgence de confiance" + }, + "noTrustedContacts": { + "message": "Vous n'avez pas encore ajouté de contacts d'urgence, invitez un contact de confiance pour commencer." + }, + "addEmergencyContact": { + "message": "Ajouter un contact d'urgence" + }, + "designatedEmergencyContacts": { + "message": "Désigné comme contact d'urgence" + }, + "noGrantedAccess": { + "message": "Vous n'avez pas encore été désigné comme contact d'urgence pour qui que ce soit." + }, + "inviteEmergencyContact": { + "message": "Inviter un contact d'urgence" + }, + "editEmergencyContact": { + "message": "Modifier le contact d'urgence" + }, + "inviteEmergencyContactDesc": { + "message": "Invitez un nouveau contact d'urgence en entrant l'adresse e-mail de leur compte Bitwarden ci-dessous. S'ils n'ont pas encore de compte Bitwarden, ils seront invités à en créer un." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Accès d'urgence initié" + }, + "emergencyAccessRecoveryApproved": { + "message": "Accès d'urgence approuvé" + }, + "viewDesc": { + "message": "Peut afficher tous les éléments dans votre propre coffre." + }, + "takeover": { + "message": "Prise de contrôle" + }, + "takeoverDesc": { + "message": "Peut réinitialiser votre compte avec un nouveau mot de passe maître." + }, + "waitTime": { + "message": "Période d'attente" + }, + "waitTimeDesc": { + "message": "Temps nécessaire avant d'accorder l'accès automatiquement." + }, + "oneDay": { + "message": "1 jour" + }, + "days": { + "message": "$DAYS$ jours", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Utilisateur invité." + }, + "acceptEmergencyAccess": { + "message": "Vous avez été invité à devenir un contact d'urgence pour l'utilisateur indiqué ci-dessus. Pour accepter l'invitation, vous devez vous connecter ou créer un nouveau compte Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Impossible d'accepter l'invitation. Demandez à l'utilisateur d'envoyer une nouvelle invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Impossible d'accepter l'invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Vous pourrez accéder aux options d'urgence pour cet utilisateur après la confirmation de votre identité. Nous vous enverrons un e-mail lorsque cela se produira." + }, + "requestAccess": { + "message": "Demander l’accès" + }, + "requestAccessConfirmation": { + "message": "Êtes-vous sûr de vouloir demander un accès d'urgence ? L'accès vous sera accordé après $WAITTIME$ jour(s) ou dès que l'utilisateur approuve manuellement la demande.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Accès d'urgence demandé pour $USER$. Nous vous informerons par e-mail quand il sera possible de continuer.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Accepter" + }, + "reject": { + "message": "Refuser" + }, + "approveAccessConfirmation": { + "message": "Êtes-vous sûr de vouloir approuver l'accès d'urgence ? Cela accordera à $USER$ les permissions suivantes sur votre compte: $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Accès d'urgence approuvé." + }, + "emergencyRejected": { + "message": "Accès d'urgence refusé." + }, + "passwordResetFor": { + "message": "Réinitialisation du mot de passe pour $USER$. Vous pouvez maintenant vous connecter en utilisant le nouveau mot de passe.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Propriété individuelle" + }, + "personalOwnershipPolicyDesc": { + "message": "Exiger que les utilisateurs enregistrent des éléments du coffre dans une organisation en retirant l'option de propriété individuelle." + }, + "personalOwnershipExemption": { + "message": "Les propriétaires et les administrateurs de l'organisation sont exonérés de l'application de cette politique." + }, + "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." + }, + "disableSend": { + "message": "Désactiver le Send" + }, + "disableSendPolicyDesc": { + "message": "Ne pas autoriser les utilisateurs à créer ou modifier un Send Bitwarden. La suppression d'un envoi existant est toujours autorisée.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Les utilisateurs de l'organisation qui peuvent gérer les politiques de l'organisation sont exonérés de l'application de cette politique." + }, + "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." + }, + "sendOptions": { + "message": "Options Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Définir les options pour la création et la modification des Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Les utilisateurs de l'organisation qui peuvent gérer les politiques de l'organisation sont exonérés de l'application de cette politique." + }, + "disableHideEmail": { + "message": "Interdire aux utilisateurs de masquer leur adresse e-mail aux destinataires lors de la création ou de la modification d'un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Les politiques d'organisation suivantes sont actuellement en vigueur :" + }, + "sendDisableHideEmailInEffect": { + "message": "Les utilisateurs ne sont pas autorisés à masquer leur adresse e-mail aux destinataires lors de la création ou de la modification d'un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Politique $ID$ modifiée.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Prix du forfait" + }, + "estimatedTax": { + "message": "Taxe estimée" + }, + "custom": { + "message": "Personnalisé" + }, + "customDesc": { + "message": "Permet un contrôle plus précis des permissions utilisateur pour les configurations avancées." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Accéder aux journaux d'événements" + }, + "accessImportExport": { + "message": "Accéder aux options d'import et d'export" + }, + "accessReports": { + "message": "Accéder aux rapports" + }, + "missingPermissions": { + "message": "Vous n’avez pas les permissions requises pour accomplir cette action." + }, + "manageAllCollections": { + "message": "Gérer toutes les collections" + }, + "createNewCollections": { + "message": "Créer de nouvelles collections" + }, + "editAnyCollection": { + "message": "Modifier n'importe quelle collection" + }, + "deleteAnyCollection": { + "message": "Supprimer n'importe quelle collection" + }, + "manageAssignedCollections": { + "message": "Gérer les collections assignées" + }, + "editAssignedCollections": { + "message": "Modifier les collection assignées" + }, + "deleteAssignedCollections": { + "message": "Supprimer les collections assignées" + }, + "manageGroups": { + "message": "Gérer les groupes" + }, + "managePolicies": { + "message": "Gérer les politiques" + }, + "manageSso": { + "message": "Gérer le SSO" + }, + "manageUsers": { + "message": "Gérer les utilisateurs" + }, + "manageResetPassword": { + "message": "Gérer la réinitialisation du mot de passe" + }, + "disableRequiredError": { + "message": "Afin de désactiver cette politique, vous devez préalablement manuellement désactiver la politique \"$POLICYNAME$\".", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Une politique d'organisation affecte vos options de propriété." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Une politique d'organisation a désactivé l'import d'éléments dans votre coffre personnel." + }, + "personalOwnershipCheckboxDesc": { + "message": "Désactiver la propriété individuelle des utilisateurs de l'organisation" + }, + "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." + }, + "sendNameDesc": { + "message": "Un nom convivial pour décrire ce 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." + }, + "copySendLinkOnSave": { + "message": "Copier le lien de ce Send dans mon presse-papiers lors de l'enregistrement." + }, + "sendLinkLabel": { + "message": "Lien du Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Les Send Bitwarden permettent d'envoyer des informations sensibles et temporaires à d'autres, facilement et en toute sécurité.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Apprenez-en plus sur", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Partagez du texte ou des fichiers directement avec n'importe qui." + }, + "sendVaultCardLearnMore": { + "message": "Apprenez-en plus", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "découvrez", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "comment cela fonctionne", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "ou", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "essayez-le maintenant", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "ou", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "inscrivez-vous", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "pour l'essayer dès aujourd'hui.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "L'utilisateur Bitwarden $USER_IDENTIFIER$ a partagé ce qui suit avec vous", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "L'utilisateur Bitwarden qui a créé ce Send a choisi de masquer son adresse e-mail. Vous devez vous assurer que vous faites confiance à la source de ce lien avant d'utiliser ou de télécharger son contenu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "La date d'expiration indiquée n'est pas valide." + }, + "deletionDateIsInvalid": { + "message": "La date de suppression indiquée n'est pas valide." + }, + "expirationDateAndTimeRequired": { + "message": "Une date et une heure d'expiration sont requises." + }, + "deletionDateAndTimeRequired": { + "message": "Une date et une heure de suppression sont requises." + }, + "dateParsingError": { + "message": "Une erreur s'est produite lors de l'enregistrement de vos dates de suppression et d'expiration." + }, + "webAuthnFallbackMsg": { + "message": "Pour vérifier votre 2FA, veuillez cliquer sur le bouton ci-dessous." + }, + "webAuthnAuthenticate": { + "message": "Authentifier WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn n'est pas pris en charge dans ce navigateur." + }, + "webAuthnSuccess": { + "message": "WebAuthn vérifié avec succès ! Vous pouvez fermer cet onglet." + }, + "hintEqualsPassword": { + "message": "Votre indice de mot de passe ne peut pas être identique à votre mot de passe." + }, + "enrollPasswordReset": { + "message": "S'inscrire à la réinitialisation du mot de passe" + }, + "enrolledPasswordReset": { + "message": "Inscrit à la réinitialisation du mot de passe" + }, + "withdrawPasswordReset": { + "message": "Se retirer de la réinitialisation du mot de passe" + }, + "enrollPasswordResetSuccess": { + "message": "Inscription réussie !" + }, + "withdrawPasswordResetSuccess": { + "message": "Retrait réussi !" + }, + "eventEnrollPasswordReset": { + "message": "L'utilisateur $ID$ s'est inscrit à l'aide de réinitialisation du mot de passe.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "L'utilisateur $ID$ s'est retiré de l'aide à la réinitialisation du mot de passe.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Réinitialisation du mot de passe maître pour l'utilisateur $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Réinitialiser le lien SSO pour l'utilisateur $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ s'est connecté avec le SSO pour la première fois", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Réinitialiser le mot de passe" + }, + "resetPasswordLoggedOutWarning": { + "message": "En continuant, $NAME$ sera déconnecté de sa session actuelle, ce qui lui demandera de se reconnecter. Les sessions actives sur d'autres appareils peuvent rester actives jusqu'à une heure.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "cet utilisateur" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Une ou plusieurs politiques de l'organisation exigent que le mot de passe maître réponde aux exigences suivantes :" + }, + "resetPasswordSuccess": { + "message": "Mot de passe réinitialisé avec succès !" + }, + "resetPasswordEnrollmentWarning": { + "message": "L'inscription permettra aux administrateurs de l'organisation de changer votre mot de passe maître. Êtes-vous sûr de vouloir vous inscrire ?" + }, + "resetPasswordPolicy": { + "message": "Réinitialisation du mot de passe maître" + }, + "resetPasswordPolicyDescription": { + "message": "Permettre aux administrateurs de l'organisation de réinitialiser le mot de passe maître des utilisateurs de l'organisation." + }, + "resetPasswordPolicyWarning": { + "message": "Les utilisateurs de l'organisation devront s'inscrire personnellement ou être inscrits automatiquement avant que les administrateurs puissent réinitialiser leur mot de passe maître." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscription automatique" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Tous les utilisateurs seront automatiquement inscrits à la réinitialisation du mot de passe une fois leur invitation acceptée et n'auront pas la possibilité de refuser." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Les utilisateurs déjà dans l'organisation ne seront pas inscrits rétroactivement à la réinitialisation du mot de passe. Ils devront s'inscrire personnellement avant que les administrateurs puissent réinitialiser leur mot de passe maître." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Exiger que les nouveaux utilisateurs soient inscrits automatiquement" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Erreur lors du traitement de votre demande : \"Organization Keys response is null\"" + }, + "resetPasswordDetailsError": { + "message": "Erreur lors du traitement de votre demande : \"Reset Password Details response is null\"" + }, + "trashCleanupWarning": { + "message": "Les éléments présents dans la corbeille depuis plus de 30 jours seront automatiquement supprimés." + }, + "trashCleanupWarningSelfHosted": { + "message": "Les éléments présents dans la corbeille depuis un moment seront automatiquement supprimés." + }, + "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é." + }, + "reinviteSelected": { + "message": "Renvoyer les invitations" + }, + "noSelectedUsersApplicable": { + "message": "Cette action n'est applicable à aucun des utilisateurs sélectionnés." + }, + "removeUsersWarning": { + "message": "Êtes-vous sûr de vouloir supprimer les utilisateurs suivants ? Le processus peut prendre quelques secondes et ne peut être interrompu ou annulé." + }, + "theme": { + "message": "Thème" + }, + "themeDesc": { + "message": "Choisissez un thème pour votre coffre web." + }, + "themeSystem": { + "message": "Utiliser le thème du système" + }, + "themeDark": { + "message": "Sombre" + }, + "themeLight": { + "message": "Clair" + }, + "confirmSelected": { + "message": "Confirmer la sélection" + }, + "bulkConfirmStatus": { + "message": "Statut de l'action de masse" + }, + "bulkConfirmMessage": { + "message": "Confirmé avec succès." + }, + "bulkReinviteMessage": { + "message": "Réinvité avec succès." + }, + "bulkRemovedMessage": { + "message": "Supprimé avec succès" + }, + "bulkFilteredMessage": { + "message": "Exclu, non applicable pour cette action." + }, + "fingerprint": { + "message": "Empreinte" + }, + "removeUsers": { + "message": "Supprimer les utilisateurs" + }, + "error": { + "message": "Erreur" + }, + "resetPasswordManageUsers": { + "message": "La permission \"Gérer la réinitialisation du mot de passe\" requiert l'activation de la permission \"Gérer les utilisateurs\"" + }, + "setupProvider": { + "message": "Configuration du fournisseur" + }, + "setupProviderLoginDesc": { + "message": "Vous avez été invité à configurer un nouveau fournisseur. Pour continuer, vous devez vous connecter ou créer un nouveau compte Bitwarden." + }, + "setupProviderDesc": { + "message": "Veuillez entrer les détails ci-dessous pour finaliser la configuration du fournisseur. Contactez le support client si vous avez des questions." + }, + "providerName": { + "message": "Nom du fournisseur" + }, + "providerSetup": { + "message": "Le fournisseur a été configuré." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Administrateur du fournisseur" + }, + "providerAdminDesc": { + "message": "L'utilisateur à l'accès le plus élevé. Il peut gérer tous les aspects de votre fournisseur ainsi que gérer les organisations clientes et y accéder." + }, + "serviceUser": { + "message": "Utilisateur de service" + }, + "serviceUserDesc": { + "message": "Les utilisateurs de service peuvent gérer toutes les organisations clientes et y accéder." + }, + "providerInviteUserDesc": { + "message": "Invitez de nouveaux utilisateurs à votre fournisseur en entrant l'adresse e-mail de leur compte Bitwarden ci-dessous. S'ils n’ont pas déjà un compte Bitwarden, il leur sera demandé d'en créer un nouveau." + }, + "joinProvider": { + "message": "Rejoindre le fournisseur" + }, + "joinProviderDesc": { + "message": "Vous avez été invité à rejoindre le fournisseur ci-dessus. Pour accepter l'invitation, vous devez vous connecter ou créer un nouveau compte Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "Impossible d'accepter l'invitation. Demandez à un administrateur du fournisseur d'envoyer une nouvelle invitation." + }, + "providerInviteAcceptedDesc": { + "message": "Vous pourrez accéder à ce fournisseur dès qu'un administrateur aura confirmé votre inscription. Nous vous enverrons un e-mail lorsque ce sera fait." + }, + "providerUsersNeedConfirmed": { + "message": "Il y a des utilisateurs qui ont accepté leur invitation, mais qui doivent encore être confirmés. Les utilisateurs n'auront pas accès au fournisseur tant qu'ils n'auront pas été confirmés." + }, + "provider": { + "message": "Fournisseur" + }, + "newClientOrganization": { + "message": "Nouvelle organisation cliente" + }, + "newClientOrganizationDesc": { + "message": "Créez une nouvelle organisation cliente qui sera associée avec vous en tant que fournisseur. Vous pourrez accéder à cette organisation et la gérer." + }, + "addExistingOrganization": { + "message": "Ajouter une organisation existante" + }, + "myProvider": { + "message": "Mon fournisseur" + }, + "addOrganizationConfirmation": { + "message": "Êtes-vous sûr de vouloir ajouter $ORGANIZATION$ comme cliente de $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "L'organisation a bien été ajoutée au fournisseur" + }, + "accessingUsingProvider": { + "message": "Accès à l'organisation en utilisant le fournisseur $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Le fournisseur est désactivé." + }, + "providerUpdated": { + "message": "Fournisseur mis à jour" + }, + "yourProviderIs": { + "message": "Votre fournisseur est $PROVIDER$. Ils ont des privilèges d'administration et de facturation pour votre organisation.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "L'organisation $ORGANIZATION$ a été détachée de votre fournisseur.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Êtes-vous sûr de vouloir détacher cette organisation ? L'organisation continuera d'exister mais ne sera plus gérée par le fournisseur." + }, + "add": { + "message": "Ajouter" + }, + "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 accéder au coffre, vous devez mettre à jour votre mot de passe maître dès maintenant. Cette action va vous déconnecter et vous obligera à vous reconnecter. Les sessions actives sur d'autres appareils peuvent rester actives jusqu'à une heure." + }, + "masterPasswordInvalidWarning": { + "message": "Votre mot de passe maître ne répond pas aux exigences des politiques de cette organisation. Afin de rejoindre l'organisation, vous devez mettre à jour votre mot de passe maître maintenant. En continuant, vous serez déconnecté de votre session actuelle et vous devrez vous reconnecter. Les sessions actives sur d'autres appareils peuvent rester actives pendant encore une heure." + }, + "maximumVaultTimeout": { + "message": "Délai d'expiration du coffre" + }, + "maximumVaultTimeoutDesc": { + "message": "Configurer un délai maximum d'expiration du coffre pour tous les utilisateurs." + }, + "maximumVaultTimeoutLabel": { + "message": "Délai maximum d'expiration du coffre" + }, + "invalidMaximumVaultTimeout": { + "message": "Délai maximum d'expiration du coffre invalide." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Délai d'expiration du coffre personnalisé" + }, + "vaultTimeoutToLarge": { + "message": "Le délai d'expiration de votre coffre-fort dépasse les restrictions définies par votre organisation." + }, + "disablePersonalVaultExport": { + "message": "Désactiver l'export du coffre personnel" + }, + "disablePersonalVaultExportDesc": { + "message": "Empêche les utilisateurs d'exporter les données de leur coffre privé." + }, + "vaultExportDisabled": { + "message": "Export du coffre désactivé" + }, + "personalVaultExportPolicyInEffect": { + "message": "Une ou plusieurs politiques d'organisation vous empêchent d'exporter votre coffre personnel." + }, + "selectType": { + "message": "Sélectionnez le type de SSO" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "Configuration OpenID Connect" + }, + "samlSpConfig": { + "message": "Configuration SAML Service Provider" + }, + "samlIdpConfig": { + "message": "Configuration SAML Identity Provider" + }, + "callbackPath": { + "message": "URL de callback" + }, + "signedOutCallbackPath": { + "message": "URL de callback pour la déconnexion" + }, + "authority": { + "message": "Autorité" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Adresse des métadonnées" + }, + "oidcRedirectBehavior": { + "message": "Comportement de la redirection OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Récupérer les claims depuis l'endpoint d'informations utilisateur (User Info Endpoint)" + }, + "additionalScopes": { + "message": "Scopes personnalisés" + }, + "additionalUserIdClaimTypes": { + "message": "Types de claim personnalisés pour l'identifiant de l'utilisateur" + }, + "additionalEmailClaimTypes": { + "message": "Types de claim pour l'e-mail" + }, + "additionalNameClaimTypes": { + "message": "Types de claim personnalisés pour le nom" + }, + "acrValues": { + "message": "Valeurs Authentication Context Class Reference demandées" + }, + "expectedReturnAcrValue": { + "message": "Valeur attendue pour le claim \"acr\" dans la réponse" + }, + "spEntityId": { + "message": "ID de l'entité du Service Provider" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Algorithme de signature sortant" + }, + "spSigningBehavior": { + "message": "Comportement de la signature" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Algorithme de signature entrant minimal" + }, + "spWantAssertionsSigned": { + "message": "Exiger des assertions signées" + }, + "spValidateCertificates": { + "message": "Vérifier les certificats" + }, + "idpEntityId": { + "message": "ID de l'entité" + }, + "idpBindingType": { + "message": "Type de liaison" + }, + "idpSingleSignOnServiceUrl": { + "message": "URL du service de connexion unique (SSO)" + }, + "idpSingleLogoutServiceUrl": { + "message": "URL du service de déconnexion unique (SLO)" + }, + "idpX509PublicCert": { + "message": "Certificat public X.509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Algorithme de signature sortant" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Autoriser les réponses d'authentification non sollicitées" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Autoriser les demandes de déconnexion sortantes" + }, + "idpSignAuthenticationRequests": { + "message": "Signer les demandes d'authentification" + }, + "ssoSettingsSaved": { + "message": "La configuration SSO a été enregistrée." + }, + "sponsoredFamilies": { + "message": "Bitwarden Familles gratuit" + }, + "sponsoredFamiliesEligible": { + "message": "Vous et votre famille êtes éligibles pour profiter gratuitement de Bitwarden Familles. Utilisez votre adresse e-mail personnelle pour obtenir votre accès et garder vos données en sécurité même lorsque vous n'êtes pas au travail." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Obtenez votre abonnement Bitwarden Familles gratuit aujourd'hui pour garder vos données en sécurité même lorsque vous n'êtes pas au travail." + }, + "sponsoredFamiliesInclude": { + "message": "L'abonnement Bitwarden Familles inclut" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Accès premium pour un maximum de 6 utilisateurs" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Collections partagées pour les secrets de la famille" + }, + "badToken": { + "message": "Le lien n'est plus valide. Merci de demander à votre parrain de renvoyer l'offre." + }, + "reclaimedFreePlan": { + "message": "Abonnement gratuit récupéré" + }, + "redeem": { + "message": "Obtenir" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Sélectionnez l'organisation que vous souhaiteriez voir parrainée" + }, + "familiesSponsoringOrgSelect": { + "message": "Quelle offre Familles gratuite aimeriez-vous obtenir ?" + }, + "sponsoredFamiliesEmail": { + "message": "Entrez votre adresse e-mail personnelle pour obtenir Bitwarden Familles" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Si vous quittez ou que vous êtes retiré de l'organisation marraine, votre forfait Familles expirera à la fin de la période de facturation." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Acceptez l'offre pour une organisation existante ou créer une nouvelle organisation Familles." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Vous avez reçu un abonnement gratuit pour une organisation Bitwarden Familles. Pour continuer, vous devez vous connecter au compte qui a reçu l'offre." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Impossible d'accepter l'offre. Veuillez renvoyer l'e-mail de l'offre depuis votre compte professionnel et réessayer." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Impossible d'accepter l'offre. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accepter l'offre Bitwarden Familles gratuite" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "L'offre gratuite de Bitwarden Familles a été récupérée avec succès" + }, + "redeemed": { + "message": "Obtenue" + }, + "redeemedAccount": { + "message": "Compte récupéré" + }, + "revokeAccount": { + "message": "Révoquer le compte $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Renvoyer l'e-mail d'invitation au parrainage \"$NAME$\"", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Abonnement gratuit à Bitwarden Familles" + }, + "redeemNow": { + "message": "Obtenir maintenant" + }, + "recipient": { + "message": "Destinataire" + }, + "removeSponsorship": { + "message": "Supprimer le parrainage" + }, + "removeSponsorshipConfirmation": { + "message": "Après avoir supprimé un parrainage, vous serez responsable de cet abonnement et des factures associées. Êtes-vous sûr de vouloir continuer ?" + }, + "sponsorshipCreated": { + "message": "Parrainage créé" + }, + "revoke": { + "message": "Révoquer" + }, + "emailSent": { + "message": "E-mail envoyé" + }, + "revokeSponsorshipConfirmation": { + "message": "Après avoir supprimé ce compte, le propriétaire de l'organisation Familles sera responsable de cet abonnement et des factures associées. Êtes-vous sûr de vouloir continuer ?" + }, + "removeSponsorshipSuccess": { + "message": "Parrainage supprimé" + }, + "ssoKeyConnectorUnavailable": { + "message": "Impossible de contacter Key Connector, réessayez plus tard." + }, + "keyConnectorUrl": { + "message": "URL de Key Connector" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Supprimer le mot de passe maître" + }, + "removedMasterPassword": { + "message": "Mot de passe maître supprimé." + }, + "allowSso": { + "message": "Autoriser l'authentification SSO" + }, + "allowSsoDesc": { + "message": "Une fois configuré, votre configuration sera enregistrée et les membres seront en mesure de s'authentifier en utilisant leurs identifiants de l'Identity Provider." + }, + "ssoPolicyHelpStart": { + "message": "Activer la", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "politique de connexion SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "pour obliger tous les membres à se connecter avec SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Les politiques \"Authentification SSO\" et \"Organisation Unique\" sont requises pour mettre en place le déchiffrement avec Key Connector." + }, + "memberDecryptionOption": { + "message": "Options de déchiffrement des membres" + }, + "memberDecryptionPassDesc": { + "message": "Une fois authentifiés, les membres déchiffreront les données du coffre en utilisant leur mot de passe maître." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connectez l'authentification SSO à votre serveur de clés de déchiffrement auto-hébergé. En utilisant cette option, les membres n'auront pas besoin d'utiliser leur mot de passe maître pour déchiffrer les données du coffre. Contactez le support Bitwarden pour une assistance à la configuration." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Connexion avec SSO et déchiffrement avec Key Connector\" est activé. Cette politique ne s'appliquera qu'aux propriétaires et aux administrateurs." + }, + "enabledSso": { + "message": "SSO activé" + }, + "disabledSso": { + "message": "SSO désactivé" + }, + "enabledKeyConnector": { + "message": "Key Connector activé" + }, + "disabledKeyConnector": { + "message": "Key Connector désactivé" + }, + "keyConnectorWarning": { + "message": "Dès que les membres de votre organisation commencent à utiliser Key Connector, votre organisation ne peut pas revenir au déchiffrement avec mot de passe maître. Ne continuez que si vous êtes à l'aise avec le déploiement et la maintenance d'un serveur de clés." + }, + "migratedKeyConnector": { + "message": "Migré vers Key Connector" + }, + "paymentSponsored": { + "message": "Veuillez fournir un moyen de paiement à associer à l'organisation. Ne vous inquiétez pas, nous ne vous facturerons rien à moins que vous ne sélectionniez des fonctionnalités supplémentaires ou que votre parrainage expire. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "L'offre de parrainage a expiré, vous pouvez supprimer l'organisation que vous avez créée pour éviter d'être facturé à la fin de votre essai de 7 jours. Dans le cas contraire, vous pouvez fermer ce message pour conserver l'organisation et assumer la responsabilité de la facturation." + }, + "newFamiliesOrganization": { + "message": "Nouvelle organisation Familles" + }, + "acceptOffer": { + "message": "Accepter l'offre" + }, + "sponsoringOrg": { + "message": "Organisation marraine" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Succès! Key Connector atteint." + }, + "keyConnectorTestFail": { + "message": "Impossible d'atteindre Key Connector. Vérifiez l'URL." + }, + "sponsorshipTokenHasExpired": { + "message": "L'offre de parrainage a expiré." + }, + "freeWithSponsorship": { + "message": "GRATUIT avec le parrainage" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ champs ci-dessus nécessitent votre attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 champ ci-dessus nécessite votre attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ est requis.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "requis" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Requis si l'ID d'Entité n'est pas une URL." + }, + "openIdOptionalCustomizations": { + "message": "Personnalisations Optionnelles" + }, + "openIdAuthorityRequired": { + "message": "Requis si l'Autorité n'est pas valide." + }, + "separateMultipleWithComma": { + "message": "Séparer avec des virgules." + }, + "sessionTimeout": { + "message": "Votre session a expiré. Veuillez revenir en arrière et essayer de vous connecter à nouveau." + }, + "exportingPersonalVaultTitle": { + "message": "Export du coffre personnel" + }, + "exportingOrganizationVaultTitle": { + "message": "Export du coffre de l'organisation" + }, + "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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Seul le coffre de l'organisation associé à $ORGANIZATION$ sera exporté. Les éléments du coffre personnel et les éléments d'autres organisations ne seront pas inclus.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Retour aux Rapports" + }, + "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": "Courriel Adressé Plus", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Utilisez les capacités de sous-adressage de votre fournisseur de messagerie." + }, + "catchallEmail": { + "message": "Collecteur d'Email (catch-all)" + }, + "catchallEmailDesc": { + "message": "Utilisez la boîte de réception du collecteur (catch-all) configurée de votre domaine." + }, + "random": { + "message": "Aléatoire" + }, + "randomWord": { + "message": "Mot Aléatoire" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json new file mode 100644 index 0000000000..2fc045ebf0 --- /dev/null +++ b/apps/web/src/locales/he/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "כספת רשת $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "סיסמה" + }, + "newPassword": { + "message": "סיסמה חדשה" + }, + "passphrase": { + "message": "משפט סיסמה" + }, + "notes": { + "message": "הערות" + }, + "customFields": { + "message": "שדות מותאמים אישית" + }, + "cardholderName": { + "message": "שם בעל הכרטיס" + }, + "number": { + "message": "מספר" + }, + "brand": { + "message": "מותג" + }, + "expiration": { + "message": "תוקף" + }, + "securityCode": { + "message": "קוד האבטחה (CVV)" + }, + "identityName": { + "message": "שם הזהות" + }, + "company": { + "message": "חברה" + }, + "ssn": { + "message": "מספר ביטוח לאומי" + }, + "passportNumber": { + "message": "מספר דרכון" + }, + "licenseNumber": { + "message": "מספר רשיון" + }, + "email": { + "message": "אימייל" + }, + "phone": { + "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": "דצמבר" + }, + "title": { + "message": "תואר" + }, + "mr": { + "message": "מר" + }, + "mrs": { + "message": "גברת" + }, + "ms": { + "message": "העלמה" + }, + "dr": { + "message": "דוקטור" + }, + "expirationMonth": { + "message": "תוקף אשראי - חודש" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "הסר" + }, + "unassigned": { + "message": "לא מוקצה" + }, + "noneFolder": { + "message": "ללא תיקיה", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "הוסף תיקיה" + }, + "editFolder": { + "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." + }, + "never": { + "message": "לעולם לא" + }, + "toggleVisibility": { + "message": "הצג או הסתר" + }, + "toggleCollapse": { + "message": "הצג או קפל", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "צור סיסמה" + }, + "checkPassword": { + "message": "בדוק אם הסיסמה נחשפה." + }, + "passwordExposed": { + "message": "הסיסמה הזו נחשפה $VALUE$ פעמים בפריצות אבטחה. כדאי לשנות אותה.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "הסיסמה לא נמצאה בפריצות אבטחה ידועות. היא בטוחה לשימוש." + }, + "save": { + "message": "שמור" + }, + "cancel": { + "message": "בטל" + }, + "canceled": { + "message": "בוטל" + }, + "close": { + "message": "סגור" + }, + "delete": { + "message": "מחק" + }, + "favorite": { + "message": "מועדף" + }, + "unfavorite": { + "message": "מחק ממועדפים" + }, + "edit": { + "message": "ערוך" + }, + "searchCollection": { + "message": "חפש אוסף" + }, + "searchFolder": { + "message": "חפש תיקייה" + }, + "searchFavorites": { + "message": "חפש מועדפים" + }, + "searchType": { + "message": "חפש סוג", + "description": "Search item type" + }, + "searchVault": { + "message": "חפש כספת" + }, + "allItems": { + "message": "כל הפריטים" + }, + "favorites": { + "message": "מועדפים" + }, + "types": { + "message": "סוגים" + }, + "typeLogin": { + "message": "פרטי התחברות" + }, + "typeCard": { + "message": "כרטיס" + }, + "typeIdentity": { + "message": "זהות" + }, + "typeSecureNote": { + "message": "פתק מאובטח" + }, + "typeLoginPlural": { + "message": "התחברויות" + }, + "typeCardPlural": { + "message": "כרטיסים" + }, + "typeIdentityPlural": { + "message": "זהויות" + }, + "typeSecureNotePlural": { + "message": "פתקים מאובטחים" + }, + "folders": { + "message": "תיקיות" + }, + "collections": { + "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": "מדינה" + }, + "shared": { + "message": "משותף" + }, + "attachments": { + "message": "קבצים מצורפים" + }, + "select": { + "message": "בחר" + }, + "addItem": { + "message": "הוסף פריט" + }, + "editItem": { + "message": "ערוך פריט" + }, + "viewItem": { + "message": "הצג פריט" + }, + "ex": { + "message": "לדוגמא", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "אחר" + }, + "share": { + "message": "שתף" + }, + "moveToOrganization": { + "message": "העברה לארגון" + }, + "valueCopied": { + "message": "השדה $VALUE$ הועתק לזיכרון", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "העתק ערך", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "העתק סיסמה", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "העתק שם משתמש", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "העתק מספר", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "העתק קוד אבטחה", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "העתק שורת כתובת", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "הכספת שלי" + }, + "vault": { + "message": "כספת" + }, + "moveSelectedToOrg": { + "message": "העבר בחירה לארגון" + }, + "deleteSelected": { + "message": "מחק בחירה" + }, + "moveSelected": { + "message": "העבר בחירה" + }, + "selectAll": { + "message": "בחר הכל" + }, + "unselectAll": { + "message": "נקה הכל" + }, + "launch": { + "message": "הפעל" + }, + "newAttachment": { + "message": "צרף קובץ חדש" + }, + "deletedAttachment": { + "message": "קובץ מצורף שנמחק" + }, + "deleteAttachmentConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק קובץ מצורף זה?" + }, + "attachmentSaved": { + "message": "הקובץ המצורף נשמר." + }, + "file": { + "message": "קובץ" + }, + "selectFile": { + "message": "בחר קובץ." + }, + "maxFileSize": { + "message": "גודל הקובץ המירבי הוא 500 מגה." + }, + "updateKey": { + "message": "לא ניתן להשתמש ביכולת זו עד שתעדכן את מפתח ההצפנה שלך." + }, + "addedItem": { + "message": "פריט שהתווסף" + }, + "editedItem": { + "message": "פריט שנערך" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ הועבר ל־$ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "פריטים נבחרים הועברו ל־$ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "מחק פריט" + }, + "deleteFolder": { + "message": "מחק תיקייה" + }, + "deleteAttachment": { + "message": "מחק קובץ מצורף" + }, + "deleteItemConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק פריט זה?" + }, + "deletedItem": { + "message": "הפריט נשלח לסל המחזור" + }, + "deletedItems": { + "message": "הפריטים נשלחו לסל המחזור" + }, + "movedItems": { + "message": "פריטים שהועברו" + }, + "overwritePasswordConfirmation": { + "message": "האם אתה בטוח שברצונך לדרוס את הסיסמה הנוכחית?" + }, + "editedFolder": { + "message": "תיקיה שנערכה" + }, + "addedFolder": { + "message": "תיקיה שנוספה" + }, + "deleteFolderConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק את התיקייה?" + }, + "deletedFolder": { + "message": "תיקיה שנמחקה" + }, + "loggedOut": { + "message": "בוצעה יציאה" + }, + "loginExpired": { + "message": "תוקף החיבור שלך הסתיים." + }, + "logOutConfirmation": { + "message": "האם אתה בטוח שברצונך להתנתק?" + }, + "logOut": { + "message": "התנתק" + }, + "ok": { + "message": "אישור" + }, + "yes": { + "message": "כן" + }, + "no": { + "message": "לא" + }, + "loginOrCreateNewAccount": { + "message": "צור חשבון חדש או התחבר כדי לגשת לכספת המאובטחת שלך." + }, + "createAccount": { + "message": "צור חשבון" + }, + "logIn": { + "message": "התחבר" + }, + "submit": { + "message": "שלח" + }, + "emailAddressDesc": { + "message": "השתמש בכתובת המייל שלך כדי להכנס." + }, + "yourName": { + "message": "השם שלך" + }, + "yourNameDesc": { + "message": "מה השם או הכינוי שלך?" + }, + "masterPass": { + "message": "סיסמה ראשית" + }, + "masterPassDesc": { + "message": "הסיסמה הראשית היא הסיסמה שבאמצעותה תיגש לכספת שלך. חשוב מאוד שלא תשכח את הסיסמה הזו. אין שום דרך לשחזר אותה במקרה ושכחת אותה." + }, + "masterPassHintDesc": { + "message": "ניתן להשתמש ברמז לסיסמה הראשית אם שכחת אותה." + }, + "reTypeMasterPass": { + "message": "הקלד שוב סיסמה ראשית" + }, + "masterPassHint": { + "message": "רמז לסיסמה ראשית (אופציונאלי)" + }, + "masterPassHintLabel": { + "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": "אירעה שגיאה לא צפויה." + }, + "emailAddress": { + "message": "כתובת אימייל" + }, + "yourVaultIsLocked": { + "message": "הכספת שלך נעולה. הזן את הסיסמה הראשית שלך כדי להמשיך." + }, + "unlock": { + "message": "שחרר נעילה" + }, + "loggedInAsEmailOn": { + "message": "מחובר כ $EMAIL$ באתר $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "סיסמה ראשית שגויה" + }, + "lockNow": { + "message": "נעל עכשיו" + }, + "noItemsInList": { + "message": "אין פריטים להצגה ברשימה." + }, + "noCollectionsInList": { + "message": "אין אוספים להצגה ברשימה." + }, + "noGroupsInList": { + "message": "אין קבוצות להצגה ברשימה." + }, + "noUsersInList": { + "message": "אין משתמשים להצגה ברשימה." + }, + "noEventsInList": { + "message": "אין אירועים להצגה ברשימה." + }, + "newOrganization": { + "message": "ארגון חדש" + }, + "noOrganizationsList": { + "message": "אינך משויך לארגון. ניתן לשתף באופן מאובטח פריטים רק עם משתמשים אחרים בתוך ארגון." + }, + "versionNumber": { + "message": "גרסה $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 במחשבך. אם יש לו כפתור, לחץ עליו." + }, + "loginUnavailable": { + "message": "פרטי כניסה לא זמינים" + }, + "noTwoStepProviders": { + "message": "כניסה דו-שלבית פעילה בחשבון זה, אך אף אחד מספקי הכניסה הדו-שלבית לא נתמכים בדפדפן זה." + }, + "noTwoStepProviders2": { + "message": "אנא השתמש בדפדפן נתמך (כמו לדוגמא Chrome) ו\\או הוסף ספק כניסה דו-שלבית הנתמך בדפדפן זה (כמו לדוגמא אפליקצית אימות)." + }, + "twoStepOptions": { + "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": "מפתח אבטחה OTP של YubiKey" + }, + "yubiKeyDesc": { + "message": "השתמש בYubiKey עבור גישה לחשבון שלך. עובד עם YubiKey מסדרה 4, סדרה 5, ומכשירי 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." + }, + "u2fDesc": { + "message": "השתמש בכל מפתח אבטחה התומך בFIDO U2F עבור גישה לחשבונך." + }, + "u2fTitle": { + "message": "מפתח אבטחה FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "אימייל" + }, + "emailDesc": { + "message": "קודים לאימות יישלחו אליך באימייל." + }, + "continue": { + "message": "המשך" + }, + "organization": { + "message": "ארגון" + }, + "organizations": { + "message": "ארגונים" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "ערוך את האוסף המשותף של פריט זה. רק משתמשים מורשים מתוך הארגון יוכלו לראות פריט זה." + }, + "deleteSelectedItemsDesc": { + "message": "בחרת $COUNT$ פריט(ים) למחיקה. האם אתה בטוח שברצונך למחוק את כולם?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "בחר תיקיה שאליה תרצה להעביר את $COUNT$ הפריט(ים) שבחרת.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "קוד אימות (TOTP)" + }, + "copyVerificationCode": { + "message": "העתק קוד אימות" + }, + "warning": { + "message": "אזהרה" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "יצוא כספת" + }, + "fileFormat": { + "message": "פורמט קובץ" + }, + "exportSuccess": { + "message": "הוצאת המידע מהכספת שלך הסתיימה." + }, + "passwordGenerator": { + "message": "יוצר הסיסמאות" + }, + "minComplexityScore": { + "message": "ניקוד מורכבות מינימלי" + }, + "minNumbers": { + "message": "מינימום ספרות" + }, + "minSpecial": { + "message": "מינימום תווים מיוחדים", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "המנע מאותיות ותווים דומים" + }, + "regeneratePassword": { + "message": "צור סיסמה חדשה" + }, + "length": { + "message": "אורך" + }, + "numWords": { + "message": "מספר מילים" + }, + "wordSeparator": { + "message": "מפריד מילים" + }, + "capitalize": { + "message": "הפוך אותיות ראשונות לאותיות גדולות", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "כלול מספרים" + }, + "passwordHistory": { + "message": "היסטוריית סיסמאות" + }, + "noPasswordsInList": { + "message": "אין סיסמאות להצגה ברשימה." + }, + "clear": { + "message": "נקה", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "החשבון עודכן" + }, + "changeEmail": { + "message": "החלף אימייל" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "דוא\"ל חדש" + }, + "code": { + "message": "קוד" + }, + "changeEmailDesc": { + "message": "שלחנו מייל אימות לכתובת $EMAIL$. אנא בדוק אם קיבלת את הקוד והזן אותו בתיבה בכדי לסיים את תהליך החלפת האימייל.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "בכדי להמשיך הסשן הנוכחי ינותק, ותדרש להזין את פרטי הכניסה החדשים. כל הסשנים הפעילים במכשירים אחרים ישארו פעילים עד שעה ממועד הכניסה החדשה." + }, + "emailChanged": { + "message": "כתובת האימייל שונתה" + }, + "logBackIn": { + "message": "אנא התחבר שוב." + }, + "logBackInOthersToo": { + "message": "אנא התחבר שוב. אם אתה משתמש באפליקציות נוספות של Bitwarden, סגור את החיבור והתחבר שוב גם באפליקציות הללו." + }, + "changeMasterPassword": { + "message": "החלף סיסמה ראשית" + }, + "masterPasswordChanged": { + "message": "הסיסמה הראשית הוחלפה" + }, + "currentMasterPass": { + "message": "סיסמה ראשית נוכחית" + }, + "newMasterPass": { + "message": "סיסמה ראשית חדשה" + }, + "confirmNewMasterPass": { + "message": "אמת סיסמה ראשית חדשה" + }, + "encKeySettings": { + "message": "הגדרות מפתח הצפנה" + }, + "kdfAlgorithm": { + "message": "אלגוריתם KDF" + }, + "kdfIterations": { + "message": "איטרציות KDF" + }, + "kdfIterationsDesc": { + "message": "קביעת ערך גבוה עבור מספר האיטרציות של KDF עוזרת בהגנה על הסיסמה הראשית שלך מפני תקיפת Brute force (תְּקִיפָה כּוֹחָנִית). אנו ממליצים להשתמש בערך $VALUE$ או ערך גבוה יותר.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "קביעת ערך גבוה מדי עבור מספר האיטרציות KDF עלול לגרום לבעיות ביצועים בזמן הכניסה (ובזמן ביטול הנעילה) לחשבון Bitwarden במכשירים בעלי מעבד חלש. אנו ממליצים שתעלה את הערך בקפיצות של $INCREMENT$ ובדוק את ההשפעה של הביצועים בכל המכשירים שלך.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "שנה KDF" + }, + "encKeySettingsChanged": { + "message": "הגדרות מפתח ההצפנה השתנו" + }, + "dangerZone": { + "message": "אזור מסוכן" + }, + "dangerZoneDesc": { + "message": "זהירות, פעולות אלה לא ניתנות לביטול!" + }, + "deauthorizeSessions": { + "message": "בטל הרשאות סשנים" + }, + "deauthorizeSessionsDesc": { + "message": "מודאג אם השארת את החשבון שלך מחובר במכשיר אחר? המשך כאן להסרת ההרשאות של סשנים מכל המחשבים או המכשירים שהשתמשת בעבר. צעד אבטחה זה מומלץ אם השתמשת בעבר במחשב ציבורי או ששמרת את הסיסמה בטעות במכשיר שאינו שלך. כמו כן, צעד זה ינקה גם את כל הסיסמאות השמורות עבור סשנים שהשתמשו באימות דו-שלבי." + }, + "deauthorizeSessionsWarning": { + "message": "בכדי להמשיך הסשן הנוכחי ינותק, ותדרש להזין את פרטי הכניסה החדשים וגם את פרטי האימות הדו-שלבי, אם הוא מאופשר. כל הסשנים הפעילים במכשירים אחרים ישארו פעילים עד שעה ממועד הכניסה החדשה." + }, + "sessionsDeauthorized": { + "message": "הוסרה ההרשאה מכל הסשנים" + }, + "purgeVault": { + "message": "מחק תוכן כספת" + }, + "purgedOrganizationVault": { + "message": "מחק תוכן כספת ארגונית." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "המשך כאן בכדי למחוק את כל הפריטים והתיקיות שבכספת שלך. פריטים השייכים לארגון לא ימחקו." + }, + "purgeOrgVaultDesc": { + "message": "המשך להלן כדי למחוק את כל הפריטים מהכספת הארגונית." + }, + "purgeVaultWarning": { + "message": "מחיקת תוכן הכספת היא סופית. פעולה זו היא בלתי הפיכה." + }, + "vaultPurged": { + "message": "המידע בכספת נמחק." + }, + "deleteAccount": { + "message": "מחק חשבון" + }, + "deleteAccountDesc": { + "message": "המשך כאן בכדי למחוק את החשבון שלך וכל המידע המשויך אליו." + }, + "deleteAccountWarning": { + "message": "מחיקת החשבון היא פעולה בלתי הפיכה." + }, + "accountDeleted": { + "message": "החשבון נמחק" + }, + "accountDeletedDesc": { + "message": "חשבונך נסגר וכל המידע המשויך אליו נמחק." + }, + "myAccount": { + "message": "החשבון שלי" + }, + "tools": { + "message": "כלים" + }, + "importData": { + "message": "ייבא נתונים" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "נתונים יובאו בהצלחה אל תוך הכספת שלך." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "המידע לא מפורמט בצורה נכונה. אנא בדוק את הקובץ ונסה שוב." + }, + "importNothingError": { + "message": "לא יובא דבר." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "בחר את פורמט הקובץ לייבוא" + }, + "selectImportFile": { + "message": "בחר את הקובץ לייבוא" + }, + "orCopyPasteFileContents": { + "message": "או העתק\\הדבק את תוכן הקובץ ליבוא" + }, + "instructionsFor": { + "message": "הוראות עבור $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "אפשרויות" + }, + "optionsDesc": { + "message": "התאם אישית את חווית כספת הרשת שלך." + }, + "optionsUpdated": { + "message": "אפשרויות עודכנו" + }, + "language": { + "message": "שפה" + }, + "languageDesc": { + "message": "שנה את השפה של כספת הרשת." + }, + "disableIcons": { + "message": "בטל אייקונים של האתר" + }, + "disableIconsDesc": { + "message": "יכולת הצג אייקונים-של-האתר מאפשרת הצגה של תמונה או אייקון מוכר ליד פרטי הכניסה שבכספת שלך." + }, + "enableGravatars": { + "message": "אפשר שימוש ב-Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "שימוש בתמונות אווטאר שנטענו מהאתר gravatar.com." + }, + "enableFullWidth": { + "message": "אפשר תצוגה ברוחב מלא", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "אפשר לחלון הכספת לגדול לרוחב חלון הדפדפן." + }, + "default": { + "message": "ברירת מחדל" + }, + "domainRules": { + "message": "כללי דומיין" + }, + "domainRulesDesc": { + "message": "אם אתה משתמש באותם פרטי כניסה עבור אתרים שונים באותו דומיין, באפשרות לסמן את האתר כ\"שווה\". הערכים הרגילים שנוצרים על ידי Bitwarden מסומנים כדומיין \"גלובלי\"." + }, + "globalEqDomains": { + "message": "דומיינים גלובליים שווים" + }, + "customEqDomains": { + "message": "דומיינים שווים מותאמים אישית" + }, + "exclude": { + "message": "אל תכלול" + }, + "include": { + "message": "כלול" + }, + "customize": { + "message": "התאם אישית" + }, + "newCustomDomain": { + "message": "דומיין מותאם אישית חדש" + }, + "newCustomDomainDesc": { + "message": "הזן שמות של דומיינים מופרדים בפסיק. יש להזין רק את \"שורש\" הדומיין. אין להוסיף לרשימה סאב-דומיינים. לדוגמא, הזן \"google.com\" במקום לכתוב \"www.google.com\". ניתן גם לכתוב שמות של packages באנדרואיד כמו לדוגמא \"androidapp://package.name\" וכך לשייך אפליקציית אנדרואיד מסויימת עם הדומיינים הקשורים אליה." + }, + "customDomainX": { + "message": "דומיין מותאם אישית $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "הדומיינים עודכנו" + }, + "twoStepLogin": { + "message": "התחברות בשני-שלבים" + }, + "twoStepLoginDesc": { + "message": "שפר את אבטחת החשבון שלך על ידי דרישת צעד נוסף עבור כל נסיון חיבור." + }, + "twoStepLoginOrganizationDesc": { + "message": "דרוש כניסה בשני-שלבים עבור משתמשי הארגון שלך בעזרת הגדרת ספקים הנתמכים ברמת הארגון." + }, + "twoStepLoginRecoveryWarning": { + "message": "שים לב: שימוש לא נכון בכניסה דו-שלבית עשוי לגרום לך להנעל ללא גישה לחשבון Bitwarden שלך. מומלץ לשמור קוד שחזור לגישה לחשבון שלך למקרה שלא תוכל להשתמש בספק הכניסה הדו-שלבית (לדוגמא: איבדת את הפלאפון או את מפתח החומרה שלך). גם צוות התמיכה של Bitwarden לא יוכל לעזור לך במקרה שתאבד גישה לחשבון שלך. אנו ממליצים שתכתוב או תדפיס את קודי השחזור ותשמור אותם במקום בטוח." + }, + "viewRecoveryCode": { + "message": "צפה בקוד שחזור" + }, + "providers": { + "message": "ספקים", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "הפעל" + }, + "enabled": { + "message": "מופעל" + }, + "premium": { + "message": "פרימיום", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "חשבון פרימיום" + }, + "premiumRequired": { + "message": "נדרש חשבון פרימיום" + }, + "premiumRequiredDesc": { + "message": "בכדי להשתמש ביכולת זו יש צורך בחשבון פרמיום." + }, + "youHavePremiumAccess": { + "message": "יש לך גישת פרימיום" + }, + "alreadyPremiumFromOrg": { + "message": "לארגון שאתה חבר בו, כבר יש גישת פרימיום, ולכן יש לך גישה ליכולות פרמיום." + }, + "manage": { + "message": "נהל" + }, + "disable": { + "message": "בטל" + }, + "twoStepLoginProviderEnabled": { + "message": "ספק כניסה דו-שלבית זה נתמך בחשבון שלך." + }, + "twoStepLoginAuthDesc": { + "message": "הזן את הסיסמה הראשית שלך בכדי לשנות הגדרות הנוגעות לכניסה דו-שלבית." + }, + "twoStepAuthenticatorDesc": { + "message": "עקוב אחר הצעדים הבאים להגדרת כניסה דו-שלבית עם אפליקציית אימות:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "הורד אפליקצית אימות דו שלבית" + }, + "twoStepAuthenticatorNeedApp": { + "message": "צריך אפליקצית אימות דו שלבית? הורד את אחד מהבאות" + }, + "iosDevices": { + "message": "מכשירי אייפון" + }, + "androidDevices": { + "message": "מכשירי אנדרואיד" + }, + "windowsDevices": { + "message": "מכשירי ווינדוס" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "האפליקציות הללו הם המומלצות, אך ניתן לעבוד גם עם אפליקציות אימות אחרות." + }, + "twoStepAuthenticatorScanCode": { + "message": "סרוק את קוד הQR הזה בעזרת אפליקציית האימות שלך" + }, + "key": { + "message": "מפתח" + }, + "twoStepAuthenticatorEnterCode": { + "message": "הכנס את קוד האימות בן 6 הספרות מהאפליקציה" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "במקרה שאתה צריך את אפשרות הכניסה זמינה גם במכשיר אחר, כאן ניתן למצוא את קוד הQR (או המפתח) הנחוץ לאפליקציית האימות במכשיר הנוסף." + }, + "twoStepDisableDesc": { + "message": "האם אתה בטוח שברצונך לבטל את הספק הזה עבור הכניסה הדו-שלבית?" + }, + "twoStepDisabled": { + "message": "ספק עבור כניסה דו-שלבית מבוטל." + }, + "twoFactorYubikeyAdd": { + "message": "הוסף מפתח YubiKey לחשבונך" + }, + "twoFactorYubikeyPlugIn": { + "message": "חבר את הYubiKey לחיבור הUSB שבמחשב." + }, + "twoFactorYubikeySelectKey": { + "message": "בחר את השדה הריק הראשון עבור YubiKey להלן." + }, + "twoFactorYubikeyTouchButton": { + "message": "לחץ על הכפתור של YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "שמור את הטופס." + }, + "twoFactorYubikeyWarning": { + "message": "עקב מגבלות פלטפורמה, לא ניתן להשתמש בYubiKey בכל האפליקציות של Bitwarden. עליך לאפשר ספק כניסה דו-שלבית נוסף למקרה שבו הYubiKey שלך לא זמין. פלטפורמות נתמכות:" + }, + "twoFactorYubikeySupportUsb": { + "message": "כספת רשת, אפליקציית שולחן עבודה, שורת הפקודה, וכל התוספים לדפדפן על מכשיר עם חיבור USB עבור הYubiKey שלך." + }, + "twoFactorYubikeySupportMobile": { + "message": "אפליקציות לפלאפון על מכשיר עם NFC או עם חיבור USB עבור YubiKey." + }, + "yubikeyX": { + "message": "מפתח YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "מפתח U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "תמיכה ב-NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "אחד מהמפתחות שלי תומך ב-NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "אם אחד ממפתחות הYubiKey שלך תומכים בNFC (לדוגמא - YubiKey NEO), תופיע לך הודעה במכשיר הנייד בכל פעם שהNFC מזהה את המפתח." + }, + "yubikeysUpdated": { + "message": "מפתחות YubiKey עודכנו" + }, + "disableAllKeys": { + "message": "בטל את כל המפתחות" + }, + "twoFactorDuoDesc": { + "message": "הזן את פרטי אפליקציית Bitwarden מתוך עמוד הניהול של Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "מפתח אינטגרציה" + }, + "twoFactorDuoSecretKey": { + "message": "מפתח סודי" + }, + "twoFactorDuoApiHostname": { + "message": "שם שרת הAPI" + }, + "twoFactorEmailDesc": { + "message": "עקוב אחר הצעדים הבאים להגדרת כניסה דו-שלבית עם אימייל:" + }, + "twoFactorEmailEnterEmail": { + "message": "כתוב את כתובת המייל שאליה ישלחו קודי האימות" + }, + "twoFactorEmailEnterCode": { + "message": "הכנס את קוד האימות בן 6 הספרות מהאימייל" + }, + "sendEmail": { + "message": "שלח דוא\"ל" + }, + "twoFactorU2fAdd": { + "message": "הוסף מפתח אבטחה מסוג FIDO U2F לחשבון שלך" + }, + "removeU2fConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק מפתח אבטחה זה?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "קרא מפתח" + }, + "keyCompromised": { + "message": "המפתח נחשף." + }, + "twoFactorU2fGiveName": { + "message": "הענק שם ידידותי למפתח האבטחה עבור זיהוי קל ומהיר." + }, + "twoFactorU2fPlugInReadKey": { + "message": "חבר את מפתח האבטחה לכניסת הUSB במחשב שלך, ולחץ על הכפתור \"קרא מפתח\"." + }, + "twoFactorU2fTouchButton": { + "message": "אם למפתח האבטחה יש כפתור, לחץ עליו." + }, + "twoFactorU2fSaveForm": { + "message": "שמור את הטופס." + }, + "twoFactorU2fWarning": { + "message": "עקב מגבלות פלטפורמה, לא ניתן להשתמש בFIDO U2F בכל האפליקציות של Bitwarden. עליך לאפשר ספק כניסה דו-שלבית נוסף למקרה שבו הFIDO U2F שלך לא זמין. פלטפורמות נתמכות:" + }, + "twoFactorU2fSupportWeb": { + "message": "כספת ברשת ותוספי אבטחה למחשב נייח\\נייד עם דפדפן תומך בU2F (כרום, אופרה, Vivaldi, או פיירפוקס עם תמיכה בFIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "ממתין ללחיצה על כפתור במפתח האבטחה שלך" + }, + "twoFactorU2fClickSave": { + "message": "לחץ על כפתור \"שמירה\" בכדי לאפשר כניסה דו-שלבית בעזרת מפתח אבטחה זה." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "היתה בעיה בקריאת מפתח האבטחה. נסה בשנית." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "קוד השחזור שלך עבור כניסה דו שלבית לBitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "עדיין לא הוספת אף ספק לכניסה דו-שלבית. לאחר שתאפשר כניסה באמצעות ספק עם כניסה דו שלבית תוכל לבדוק כאן שוב ולראות את קוד השחזור שלך." + }, + "printCode": { + "message": "הדפס קוד", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "דוחות" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "דוח אתרים לא מאובטחים" + }, + "unsecuredWebsitesReportDesc": { + "message": "שימוש באתרים לא מאובטחים שמתחילים בקידומת http:// יכול להיות מסוכן. אם האתר מאפשר זאת, תמיד נסה להשתמש בקידומת https:// כך שהחיבור יהיה מוצפן." + }, + "unsecuredWebsitesFound": { + "message": "נמצאו אתרים לא מאובטחים" + }, + "unsecuredWebsitesFoundDesc": { + "message": "מצאנו $COUNT$ פריטים בכספת שלך המכילים כתובות לא מאובטחות. אנו ממליצים לשנות את הכתובות לתחילית https:// אם האתר מאפשר זאת.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "לא נמצאו פריטים בכספת המכילים כתובות לא מאובטחות." + }, + "inactive2faReport": { + "message": "דוח 2FA לא פעילים" + }, + "inactive2faReportDesc": { + "message": "אימות דו-שלבי (2FA) היא הגדרת אבטחה חשובה שעוזרת לאבטח את החשבון שלך. אם האתר מאפשר זאת, מומלץ לאפשר את האימות הדו-שלבי." + }, + "inactive2faFound": { + "message": "נמצאו פרטי כניסות שלא פעילה בהן אופציית 2FA" + }, + "inactive2faFoundDesc": { + "message": "מצאנו $COUNT$ אתר(ים) בכספת שלך שלא מוגדרים לעבוד עם אימות דו-שלבי (לפי twofactorauth.org). בכדי להגן על החשבונות הללו, עליך להפעיל את האימות הדו-שלבי עבורם.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "לא נמצאו אתרים ללא אימות דו-שלבי בכספת שלך." + }, + "instructions": { + "message": "הוראות" + }, + "exposedPasswordsReport": { + "message": "דו\"ח סיסמאות שנחשפו" + }, + "exposedPasswordsReportDesc": { + "message": "סיסמאות שנחשפו הם סיסמאות שנמצאו בפרצות אבטחה ידועות וגלויות לציבור או נמכרות בDark web על ידי האקרים." + }, + "exposedPasswordsFound": { + "message": "נמצאו סיסמאות שנחשפו" + }, + "exposedPasswordsFoundDesc": { + "message": "מצאנו $COUNT$ פריטים בכספת שלך שיש להם סיסמאות שנחשפו בפרצות אבטחה. מומלץ לשנות אותן וליצור סיסמאות חדשות.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "לא נמצאו פריטים בכספת שלך שנחשפו בפריצות ידועות." + }, + "checkExposedPasswords": { + "message": "בדוק אם קיימות סיסמאות שנפרצו" + }, + "exposedXTimes": { + "message": "נחשף $COUNT$ פעמים", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "דו\"ח סיסמאות חלשות" + }, + "weakPasswordsReportDesc": { + "message": "סיסמאות חלשות קלות לניחוש על ידי האקרים וכלים אוטומטיים לפריצת סיסמאות. מחולל הסיסמאות של Bitwarden יכול לעזור לך ליצור סיסמאות חזקות." + }, + "weakPasswordsFound": { + "message": "נמצאו סיסמאות חלשות" + }, + "weakPasswordsFoundDesc": { + "message": "מצאנו $COUNT$ פריטים בכספת שלך עם סיסמאות חלשות. מומלץ להשתמש בסיסמאות חזקות יותר.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "אין פריטים בכספת שלך עם סיסמאות חלשות." + }, + "reusedPasswordsReport": { + "message": "דו\"ח סיסמאות משומשות" + }, + "reusedPasswordsReportDesc": { + "message": "אם שירות שהשתמשת בו נפרץ, שימוש באותה הסיסמה במקום אחר מאפשר להאקרים לקבל גישה לחשבונות נוספים שלך בקלות רבה. מומלץ מאוד להשתמש בסיסמה יחודית עבור כל חשבון או שירות." + }, + "reusedPasswordsFound": { + "message": "נמצאו סיסמאות משומשות" + }, + "reusedPasswordsFoundDesc": { + "message": "מצאנו $COUNT$ סיסמאות משומשות בכספת שלך. כדאי שתשנה אותם כך שלכל פריט תהיה סיסמה ייחודית.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "אין פרטי התחברות בכספת שלך עם סיסמאות משומשות." + }, + "reusedXTimes": { + "message": "היה בשימוש $COUNT$ פעמים", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "דו\"ח פריצת אבטחה" + }, + "breachDesc": { + "message": "אירוע \"דליפה\" הוא תקרית שבה המידע של האתר היה נגיש בצורה לא חוקית להאקרים והם הפיצו אותו באופן פומבי. עבור על המידע שנחשף (כתובות אימייל, סיסמאות, כרטיסי אשראי וכו') ובצע את הפעולות הנחוצות, לדוגמא - לשנות את הסיסמאות שפורסמו." + }, + "breachCheckUsernameEmail": { + "message": "בדוק את כל שמות המשתמשים או כתובות המייל שאתה משתמש בהם." + }, + "checkBreaches": { + "message": "בדוק פריצות אבטחה" + }, + "breachUsernameNotFound": { + "message": "שם המשתמש $USERNAME$ לא נמצא בפריצות אבטחה ידועות.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "חדשות טובות", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "שם המשתמש $USERNAME$ נמצא ב-$COUNT$ פריצות אבטחה שונות.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "נמצאו חשבונות שדלפו" + }, + "compromisedData": { + "message": "מידע שנחשף" + }, + "website": { + "message": "אתר" + }, + "affectedUsers": { + "message": "משתמשים שהושפעו" + }, + "breachOccurred": { + "message": "פריצת אבטחה אירעה" + }, + "breachReported": { + "message": "פריצת אבטחה דווחה" + }, + "reportError": { + "message": "אירעה שגיאה בטעינת הדו\"ח. נסה שוב" + }, + "billing": { + "message": "חיוב" + }, + "accountCredit": { + "message": "מאזן החשבון", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "יתרת חשבון", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "הוסף קרדיט", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "סכום", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "כרטיס האשראי שנוסף יופיע בחשבונך לאחר שהתשלום יעובד במלואו. יש שיטות תשלום שלוקחות יותר זמן מאחרות." + }, + "makeSureEnoughCredit": { + "message": "אנא ודא כי יש בחשבונך מספיק קרדיט עבור רכישה זו. אם בחשבונך אין די קרדיט, נשתמש בשיטת התשלום המועדפת בחשבונך כדי לגבות את הפער. באפשרותך להוסיף קרדיט לחשבונך דרך עמוד החיוב." + }, + "creditAppliedDesc": { + "message": "ניתן להשתמש בקרדיט שבחשבונך כדי לבצע רכישות. נשתמש בקרדיט הראשון הזמין עבור חשבוניות בחשבון זה." + }, + "goPremium": { + "message": "שדרג לפרימיום", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "שדרגת לפרימיום." + }, + "premiumUpgradeUnlockFeatures": { + "message": "שדרג את חשבונך לפרמיום כדי להשתמש ביכולות נהדרות נוספות." + }, + "premiumSignUpStorage": { + "message": "1 ג'יגה של מקום אחסון מוצפן עבור קבצים מצורפים." + }, + "premiumSignUpTwoStep": { + "message": "אפשרויות כניסה דו שלבית מתקדמות כמו YubiKey, FIDO U2F, וגם Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "premiumSignUpReports": { + "message": "היגיינת סיסמאות, מצב בריאות החשבון, ודיווחים מעודכנים על פרצות חדשות בכדי לשמור על הכספת שלך בטוחה." + }, + "premiumSignUpTotp": { + "message": "מייצר קודי אימות TOTP עבור כניסות דו-שלביות (2FA) בכספת שלך." + }, + "premiumSignUpSupport": { + "message": "קדימות בתמיכה הטכנית." + }, + "premiumSignUpFuture": { + "message": "כל יכולות הפרימיום העתידיות שנפתח. עוד יכולות מגיעות בקרוב!" + }, + "premiumPrice": { + "message": "הכל רק ב-$PRICE$ לשנה!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "תוספים" + }, + "premiumAccess": { + "message": "גישת פרימיום" + }, + "premiumAccessDesc": { + "message": "ניתן להוסיף גישת פרימיום לכל חברי הארגון שלך ב-$PRICE$ ל$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "מקום אחסון נוסף (בג'יגה)" + }, + "additionalStorageGbDesc": { + "message": "# של ג'יגה בייט נוספים" + }, + "additionalStorageIntervalDesc": { + "message": "התוכנית שלך מגיע עם $SIZE$ של אחסון מוצפן. באפשרותך להוסיף מקום אחסון נוסף במחיר $PRICE$ עבור כל GB למשך $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "סיכום" + }, + "total": { + "message": "סך הכול" + }, + "year": { + "message": "שנה" + }, + "month": { + "message": "חודש" + }, + "monthAbbr": { + "message": "חו.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "אנו נגבה לפי שיטת התשלום שבחרת - באופן מיידי. החיובים הבאים יתחדשו פעם בשנה. באפשרותך לבטל בכל עת." + }, + "paymentCharged": { + "message": "אנו נגבה לפי שיטת התשלום שבחרת - באופן מיידי. החיובים הבאים יתחדשו פעם ב$INTERVAL$. באפשרותך לבטל בכל עת.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "התוכנית שבחרת מגיעה עם 7 ימי נסיון חינמי. שיטת התשלום שבחרת לא תחויב עד לתום תקופת הנסיון. ביצוע החשבון יתבצע על בסיס מתחדש בכל $INTERVAL$. באפשרותך לבטל בכל עת." + }, + "paymentInformation": { + "message": "פרטי תשלום" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "כרטיס אשראי" + }, + "paypalClickSubmit": { + "message": "לחץ על כפתור PayPal בכדי להכנס לחשבון PayPal שלך, ואז לחץ על כפתור התשלום כדי להמשיך." + }, + "cancelSubscription": { + "message": "בטל מנוי" + }, + "subscriptionCanceled": { + "message": "המנוי בוטל." + }, + "pendingCancellation": { + "message": "בקשת ביטול ממתינה" + }, + "subscriptionPendingCanceled": { + "message": "המנוי סומן כמיועד לביטול בסיום תקופת החיוב הנוכחית." + }, + "reinstateSubscription": { + "message": "הפעל מחדש את המנוי" + }, + "reinstateConfirmation": { + "message": "האם אתה בטוח שברצונך להסיר את בקשת הביטול הממתינה ולהפעיל מחדש את חשבונך?" + }, + "reinstated": { + "message": "המנוי הופעל מחדש." + }, + "cancelConfirmation": { + "message": "האם אתה בטוח שברצונך לבטל? ביטול המנוי יגרום לאיבוד כל האפשרויות השמורות למנויים בסיום מחזור החיוב הנוכחי." + }, + "canceledSubscription": { + "message": "המנוי בוטל." + }, + "neverExpires": { + "message": "ללא תאריך תפוגה" + }, + "status": { + "message": "סטטוס" + }, + "nextCharge": { + "message": "החיוב הבא" + }, + "details": { + "message": "פרטים" + }, + "downloadLicense": { + "message": "הורד רישיון" + }, + "updateLicense": { + "message": "עדכן רישיון" + }, + "updatedLicense": { + "message": "רישיון עודכן" + }, + "manageSubscription": { + "message": "ניהול מנוי" + }, + "storage": { + "message": "אחסון" + }, + "addStorage": { + "message": "הוסף אחסון" + }, + "removeStorage": { + "message": "הסר אחסון" + }, + "subscriptionStorage": { + "message": "למנוי שלך יש סך הכל $MAX_STORAGE$ GB של מקום אחסון למידע מוצפן. כרגע בשימוש $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "אמצעי תשלום" + }, + "noPaymentMethod": { + "message": "אין שיטת תשלום בקובץ." + }, + "addPaymentMethod": { + "message": "הוסף אמצעי תשלום" + }, + "changePaymentMethod": { + "message": "שנה אמצעי תשלום" + }, + "invoices": { + "message": "חשבוניות" + }, + "noInvoices": { + "message": "אין חשבוניות." + }, + "paid": { + "message": "שולם", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "לא שולם", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "עסקאות", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "אין עסקאות." + }, + "chargeNoun": { + "message": "חיוב", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "החזר כספי", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "חיובים בחשבונך יופיעו כ$STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "כמות GB של אחסון להוספה" + }, + "gbStorageRemove": { + "message": "כמות GB של אחסון להסרה" + }, + "storageAddNote": { + "message": "הוספת כמות מקום אחסון משנה את העלויות. פעולה זו מחוייבת באופן מיידי לפי שיטת החיוב שלך. בנוסף, החיוב הבא יכלול את ההפרש היחסי ממחזור החיוב הנוכחי." + }, + "storageRemoveNote": { + "message": "הסרת כמות מקום אחסון משנה את העלויות. החיוב הבא יכלול את ההפרש היחסי ממחזור החיוב הנוכחי." + }, + "adjustedStorage": { + "message": "כמות האחסון שהשתנתה היא $AMOUNT$ GB.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "צור קשר עם התמיכה" + }, + "updatedPaymentMethod": { + "message": "שיטת תשלום עודכנה." + }, + "purchasePremium": { + "message": "רכוש פרימיום" + }, + "licenseFile": { + "message": "קובץ רישיון" + }, + "licenseFileDesc": { + "message": "שם קובץ הרשיון שלך יהיה דומה ל$FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "כדי לשדרג את החשבון שלך לפרמיום עליך להעלות קובץ רשיון תקין." + }, + "uploadLicenseFileOrg": { + "message": "ליצירת שרת on-premises בארגון לך עליך להעלות קובץ רשיון תקין." + }, + "accountEmailMustBeVerified": { + "message": "יש לאמת את כתובת האימייל שלך." + }, + "newOrganizationDesc": { + "message": "שימוש ב\"ארגון\" מאפשר לך לשתף חלקים מהכספת עם אחרים, כמו גם לנהל משתמשים עבור ישות כדוגמת משפחה, צוות קטן, או חברה גדולה." + }, + "generalInformation": { + "message": "מידע כללי" + }, + "organizationName": { + "message": "שם הארגון" + }, + "accountOwnedBusiness": { + "message": "החשבון הזה נמצא בבעלות עסק." + }, + "billingEmail": { + "message": "מייל לחשבוניות" + }, + "businessName": { + "message": "שם העסק" + }, + "chooseYourPlan": { + "message": "בחר את התוכנית שלך" + }, + "users": { + "message": "משתמשים" + }, + "userSeats": { + "message": "כסאות משתמשים" + }, + "additionalUserSeats": { + "message": "כסאות משתמשים נוספים" + }, + "userSeatsDesc": { + "message": "כמות כסאות משתמשים" + }, + "userSeatsAdditionalDesc": { + "message": "התוכנית שלך מגיעה עם $BASE_SEATS$ כסאות משתמשים. באפשרות להוסיף משתמשים נוספים בעלות של $SEAT_PRICE$ עבור כל משתמש לחודש אחד.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "כמה כסאות משתמשים אתה צריך? אם יהיה צורך, באפשרותך להוסיף כסאות גם בשלב מאוחר יותר." + }, + "planNameFree": { + "message": "חינם", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "עבור בדיקה או עבור משתמשים פרטיים עבור שיתוף עם $COUNT$ משתמשים אחרים.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "משפחות" + }, + "planDescFamilies": { + "message": "שימוש פרטי - לשיתוף עם משפחה וחברים." + }, + "planNameTeams": { + "message": "צוותים" + }, + "planDescTeams": { + "message": "לעסקים וקבוצות ארגוניות." + }, + "planNameEnterprise": { + "message": "ארגון" + }, + "planDescEnterprise": { + "message": "לעסקים וארגונים גדולים." + }, + "freeForever": { + "message": "חינם לנצח" + }, + "includesXUsers": { + "message": "כולל $COUNT$ משתמשים", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "משתמשים נוספים" + }, + "costPerUser": { + "message": "$COST$ לכל משתמש", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "מוגבל ל$COUNT$ משתמשים (כולל אותך)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "מוגבל ל$COUNT$ אוספים", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "הוסף ושתף עם עד $COUNT$ משתמשים", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "הוסף ושתף עם כמות בלתי מוגבלת של משתמשים" + }, + "createUnlimitedCollections": { + "message": "צור מספר בלתי מוגבל של אוספים" + }, + "gbEncryptedFileStorage": { + "message": "גודל קובץ מוצפן: $SIZE$", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "אחסון שרת מקומי (אופציונאלי)" + }, + "usersGetPremium": { + "message": "המשתמשים יקבלו גישה ליכולות פרימיום" + }, + "controlAccessWithGroups": { + "message": "שלוט על גישת משתמשים בעזרת קבוצות" + }, + "syncUsersFromDirectory": { + "message": "סנכרן את המשתמשים והקבוצות עם Active Directory" + }, + "trackAuditLogs": { + "message": "עקוב אחר פעולות המשתמשים בעזרת יומן ביקורת" + }, + "enforce2faDuo": { + "message": "אכוף 2FA עם Dou" + }, + "priorityCustomerSupport": { + "message": "קדימות בתמיכה הטכנית" + }, + "xDayFreeTrial": { + "message": "$COUNT$ ימי נסיון, ניתן לבטל תמיד", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "חודשי" + }, + "annually": { + "message": "שנתי" + }, + "basePrice": { + "message": "מחיר בסיסי" + }, + "organizationCreated": { + "message": "הארגון נוצר" + }, + "organizationReadyToGo": { + "message": "הארגון החדש שלך מוכן!" + }, + "organizationUpgraded": { + "message": "הארגון שלך שודרג." + }, + "leave": { + "message": "יציאה" + }, + "leaveOrganizationConfirmation": { + "message": "האם אתה בטוח שברצונך לצאת מהארגון?" + }, + "leftOrganization": { + "message": "יצאת מהארגון." + }, + "defaultCollection": { + "message": "אוסף ברירת מחדל" + }, + "getHelp": { + "message": "קבל עזרה" + }, + "getApps": { + "message": "הורד את האפליקציות" + }, + "loggedInAs": { + "message": "מחובר בשם" + }, + "eventLogs": { + "message": "יומן אירועים" + }, + "people": { + "message": "אנשים" + }, + "policies": { + "message": "מדיניות" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "ערוך מדיניות" + }, + "groups": { + "message": "קבוצות" + }, + "newGroup": { + "message": "קבוצה חדשה" + }, + "addGroup": { + "message": "הוסף קבוצה" + }, + "editGroup": { + "message": "ערוך קבוצה" + }, + "deleteGroupConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק קבוצה זו?" + }, + "removeUserConfirmation": { + "message": "האם אתה בטוח שברצונך להסיר משתמש זה?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "מזהה חיצוני" + }, + "externalIdDesc": { + "message": "ניתן להשתמש במזהה החיצוני כקישור בין משאב זה למערכת חיצונית כמו לדוגמא תיקיית משתמש." + }, + "accessControl": { + "message": "בקרת גישה" + }, + "groupAccessAllItems": { + "message": "קבוצה זו יכולה לגשת ולשנות את כל הפריטים." + }, + "groupAccessSelectedCollections": { + "message": "קבוצה זו יכולה רק לגשת לאוספים שנבחרו." + }, + "readOnly": { + "message": "קריאה בלבד" + }, + "newCollection": { + "message": "אוסף חדש" + }, + "addCollection": { + "message": "הוסף אוסף" + }, + "editCollection": { + "message": "ערוך אוסף" + }, + "deleteCollectionConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק אוסף זה?" + }, + "editUser": { + "message": "ערוך משתמש" + }, + "inviteUser": { + "message": "הזמן משתמש" + }, + "inviteUserDesc": { + "message": "הזמן משתמש חדש לארגון שלך על ידי הזנת כתובת האימייל שלהם שמשמשת אותם בחשבון Bitwarden. אם אין להם חשבון Bitwarden, הם יתבקשו ליצור חשבון." + }, + "inviteMultipleEmailDesc": { + "message": "באפשרותך להזמין עד $COUNT$ משתמשים בכל פעם על ידי הפרדת הכתובות בעזרת פסיק.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "משתמש זה הפעיל כניסה דו שלבית כדי להגן על חשבונו." + }, + "userAccessAllItems": { + "message": "משתמש זה יכול לגשת ולשנות את כל הפריטים." + }, + "userAccessSelectedCollections": { + "message": "משתמש זה יכול לגשת רק לאוספים נבחרים." + }, + "search": { + "message": "חיפוש" + }, + "invited": { + "message": "הוזמן" + }, + "accepted": { + "message": "התקבל" + }, + "confirmed": { + "message": "אושר" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "בעלים" + }, + "ownerDesc": { + "message": "החשבון בעל ההרשאות הגבוהות ביותר שיכול לנהל את כל ההיבטים של הארגון." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "מנהל" + }, + "adminDesc": { + "message": "מנהלים יכולים לגשת ולנהל את כל הפריטים, האוספים והמשתמשים שבארגונך." + }, + "user": { + "message": "משתמש" + }, + "userDesc": { + "message": "משתמש רגיל עם גישה לאוספים נבחרים בארגון שלך." + }, + "manager": { + "message": "מנהל" + }, + "managerDesc": { + "message": "מנהלים יכולים לגשת ולנהל אוספים נבחרים בארגונך." + }, + "all": { + "message": "הכל" + }, + "refresh": { + "message": "רענן" + }, + "timestamp": { + "message": "חותמת זמן" + }, + "event": { + "message": "אירוע" + }, + "unknown": { + "message": "לא ידוע" + }, + "loadMore": { + "message": "טען עוד" + }, + "mobile": { + "message": "נייד", + "description": "Mobile app" + }, + "extension": { + "message": "תוסף", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "שולחן עבודה", + "description": "Desktop app" + }, + "webVault": { + "message": "כספת רשת" + }, + "loggedIn": { + "message": "מחובר." + }, + "changedPassword": { + "message": "סיסמת החשבון שונתה." + }, + "enabledUpdated2fa": { + "message": "כניסה דו שלבית הופעלה\\עודכנה." + }, + "disabled2fa": { + "message": "בטל כניסה דו שלבית." + }, + "recovered2fa": { + "message": "חשבון שוחזר מכניסה דו שלבית." + }, + "failedLogin": { + "message": "נסיון כניסה נכשל עם סיסמה שגויה." + }, + "failedLogin2fa": { + "message": "נסיונות כניסה עם אימות דו שלבי נכשלו." + }, + "exportedVault": { + "message": "יצוא כספת." + }, + "exportedOrganizationVault": { + "message": "יצוא של תוכן הכספת הארגונית." + }, + "editedOrgSettings": { + "message": "הגדרות הארגון נערכו." + }, + "createdItemId": { + "message": "פריט שנוצר $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "פריט שנערך $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "פריט $ID$ נשלח לסל המחזור.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "פריט שנצפה $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "סיסמה שנצפתה עבור פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "שדה מוסתר שנצפה עבור פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "קוד אבטחה שנצפה עבור פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "סיסמה שהועתקה עבור פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "שדה מוסתר שהועתק עבור פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "קוד אבטחה שהועתק עבור פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "פריט שבוצע עבורו מילוי אוטומטי $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "אוסף שנוצר $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "אוסף שנערך $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "אוסף שנמחק $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "מדיניות שנערכה $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "קבוצה שנוצרה $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "קבוצה שנערכה $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "קבוצה שנמחקה $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "משתמש שהוסר $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "נוצר קובץ מצורף עבור פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "נמחק קובץ מצורף של פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "אוספים שנערכו של פריט $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "משתמש שהוזמן $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "משתמש שאישר $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "משתמש שנערך $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "קבוצות שנערכו עבור משתמש $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "מכשיר" + }, + "view": { + "message": "צפה" + }, + "invalidDateRange": { + "message": "טווח תאריכים לא חוקי." + }, + "errorOccurred": { + "message": "אירעה שגיאה." + }, + "userAccess": { + "message": "גישת משתמש" + }, + "userType": { + "message": "סוג משתמש" + }, + "groupAccess": { + "message": "גישה לקבוצה" + }, + "groupAccessUserDesc": { + "message": "ערוך את הקבוצות שמשתמש זה משויך אליהן." + }, + "invitedUsers": { + "message": "משתמשים שהוזמנו." + }, + "resendInvitation": { + "message": "שלח הזמנה מחדש" + }, + "resendEmail": { + "message": "שלח מייל בשנית" + }, + "hasBeenReinvited": { + "message": "$USER$ הוזמן מחדש.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "אשר" + }, + "confirmUser": { + "message": "אשר משתמש" + }, + "hasBeenConfirmed": { + "message": "$USER$ אושר.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "אשר משתמשים" + }, + "usersNeedConfirmed": { + "message": "ישנם משתמשים שקיבלו את הזמנתך, אך עדיין צריך לאשר אותם. למשתמשים אלו לא תהיה גישה לארגון עד שיאשרו אותם." + }, + "startDate": { + "message": "תאריך התחלה" + }, + "endDate": { + "message": "תאריך סיום" + }, + "verifyEmail": { + "message": "אמת כתובת אימייל" + }, + "verifyEmailDesc": { + "message": "אמת את האימייל שלך בכדי לאפשר גישה לכל היכולות." + }, + "verifyEmailFirst": { + "message": "ראשית יש לאמת את כתובת האימייל שלך." + }, + "checkInboxForVerification": { + "message": "בדוק אם קיבלת את קוד האימות באימייל." + }, + "emailVerified": { + "message": "כתובת האימייל שלך אומתה." + }, + "emailVerifiedFailed": { + "message": "לא ניתן לאמת את האימייל שלך. נסה לשלוח מייל אימות חדש." + }, + "emailVerificationRequired": { + "message": "יש לאמת את כתובת האימייל" + }, + "emailVerificationRequiredDesc": { + "message": "נדרש אישור אימות בדוא\"ל כדי לאפשר שימוש בתכונה זו." + }, + "updateBrowser": { + "message": "עדכן דפדפן" + }, + "updateBrowserDesc": { + "message": "אתה משתמש בדפדפן אינטרנט שאיננו נתמך. כספת הרשת עלולה שלא לפעול כראוי." + }, + "joinOrganization": { + "message": "הצטרף לארגון" + }, + "joinOrganizationDesc": { + "message": "הוזמנת להצטרף לארגון הרשום לעיל. בכדי להסכים, עליך להתחבר או ליצור חשבון Bitwarden חדש." + }, + "inviteAccepted": { + "message": "ההזמנה התקבלה" + }, + "inviteAcceptedDesc": { + "message": "תוכל לקבל גישה לארגון זה כשאחד המנהלים יאשר את החברות שלך. נשלח לך מייל כשזה יקרה." + }, + "inviteAcceptFailed": { + "message": "לא ניתן לקבל את ההזמנה. בקש ממנהל הארגון שישלח הזמנה חדשה." + }, + "inviteAcceptFailedShort": { + "message": "לא ניתן לאשר את ההזמנה. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "זכור אימייל" + }, + "recoverAccountTwoStepDesc": { + "message": "אם אין באפשרות לגשת לחשבונך דרך השיטות הדו-שלביות הרגילות, תוכל להשתמש בקוד לשחזור האימות הדו שלבי בכדי לבטל את כל ספקי האימות הדו שלבי בחשבונך." + }, + "recoverAccountTwoStep": { + "message": "שחזר כניסה דו שלבית לחשבון" + }, + "twoStepRecoverDisabled": { + "message": "כניסה דו שלבית בוטלה בחשבונך." + }, + "learnMore": { + "message": "למידע נוסף" + }, + "deleteRecoverDesc": { + "message": "הזן את כתובת האימייל שלך כדי לשחזר ולמחוק את החשבון שלך." + }, + "deleteRecoverEmailSent": { + "message": "אם החשבון שלך אכן קיים, שלחנו אליך מייל עם הוראות נוספות." + }, + "deleteRecoverConfirmDesc": { + "message": "ביקשת למחוק את חשבון ה-Bitwarden שלך. לחץ על הכפתור למטה בכדי לאשר זאת." + }, + "myOrganization": { + "message": "הארגון שלי" + }, + "deleteOrganization": { + "message": "מחק ארגון" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "הארגון נמחק" + }, + "organizationDeletedDesc": { + "message": "הארגון וכל המידע המשוייך אליו נמחק." + }, + "organizationUpdated": { + "message": "הארגון עודכן" + }, + "taxInformation": { + "message": "מידע מיסים" + }, + "taxInformationDesc": { + "message": "עבור לקוחות בתוך ארצות הברית, יש לכתוב מיקוד לצורך דיווח מיסוי. עבור לקוחות ממדינות אחרות ניתן למלא מספר זיהוי מס (VAT/GST) ו\\או כתובת שתופיע על הקבלות שלך." + }, + "billingPlan": { + "message": "תוכנית", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "שנה תוכנית", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "שדרג את חשבונך לתוכנית אחרת על ידי הוספת הפרטים להלן. אנא ודא שהוספת שיטת תשלום פעילה לחשבונך.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "חשבונית #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "צפה בחשבונית" + }, + "downloadInvoice": { + "message": "הורד חשבונית" + }, + "verifyBankAccount": { + "message": "אמת חשבון בנק" + }, + "verifyBankAccountDesc": { + "message": "ביצענו 2 מיקרו-הפקדות לחשבון הבנק שלך (לפעמים לוקח 1-2 ימי עסקים עד שהם מופיעות). הכנס כאן את הסכומים כדי לוודא את פרטי חשבון הבנק שלך." + }, + "verifyBankAccountInitialDesc": { + "message": "אופציית תשלום באמצעות חשבון בנק זמינה אך ורק ללקוחות תושבי ארצות הברית. תצטרך לאמת את פרטי החשבון. אנו נבצע 2 מיקרו-הפקדות בתוך 1-2 ימי עסקים. הזן את הסכומים בעמוד פרטי הארגון המשלם בכדי לאמת את חשבון הבנק." + }, + "verifyBankAccountFailureWarning": { + "message": "בעיות באימות פרטי החשבון עלולות להסתיים בתשלומים ש'התפספסו' ויכולות לגרום למנוי שלך, להתבטל." + }, + "verifiedBankAccount": { + "message": "חשבון בנק אומת." + }, + "bankAccount": { + "message": "חשבון בנק" + }, + "amountX": { + "message": "סכום $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "מספר הניתוב", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "מספר חשבון" + }, + "accountHolderName": { + "message": "שם בעל החשבון" + }, + "bankAccountType": { + "message": "סוג חשבון" + }, + "bankAccountTypeCompany": { + "message": "חברה (עסק)" + }, + "bankAccountTypeIndividual": { + "message": "אישי (פרטי)" + }, + "enterInstallationId": { + "message": "הכנס את מספר ההתקנה שלך" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "הוסף כסאות", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "הסר כסאות", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "המנוי שלך מתיר עד $COUNT$ משתמשים.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "כסאות להוספה" + }, + "seatsToRemove": { + "message": "כסאות להסרה" + }, + "seatsAddNote": { + "message": "הוספת כסאות משתמשים משנה את העלויות. פעולה זו מחוייבת באופן מיידי לפי שיטת החיוב שלך. בנוסף, החיוב הבא יכלול את ההפרש היחסי ממחזור החיוב הנוכחי." + }, + "seatsRemoveNote": { + "message": "הסרת כסאות משתמשים משנה את העלויות. החיוב הבא יכלול את ההפרש היחסי ממחזור החיוב הנוכחי." + }, + "adjustedSeats": { + "message": "מספר כסאות המשתמשים עודכן ל$AMOUNT$.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "המפתח עודכן" + }, + "updateKeyTitle": { + "message": "עדכן מפתח" + }, + "updateEncryptionKey": { + "message": "עדכן מפתח הצפנה" + }, + "updateEncryptionKeyShortDesc": { + "message": "אתה משתמש בסכמת-הצפנה לא מעודכנת." + }, + "updateEncryptionKeyDesc": { + "message": "התחלנו להשתמש במפתחות הצפנה גדולים יותר בכדי לספק אבטחה טובה יותר ולאפשר גישה ליכולות חדשות. תהליך עדכון מפתחות האבטחה שלך הוא קל ומהיר. פשוט הזן את הסיסמה הראשית שלך. שים לב שעדכון זה יהפוך להכרחי בסופו של דבר." + }, + "updateEncryptionKeyWarning": { + "message": "לאחר עדכון מפתחות ההצפנה שלך, תתבקש לצאת ולהכנס שוב בכל אפליקציות Bitwarden שאתה משתמש בהן (האפליקציה לפלאפון או ההרחבה לדפדפן). אם לא תצא ותכנס שוב (פעולת הכניסה מורידה את המפתח החדש), יתכן שתתקל במידע שגוי. אנו ננסה לגרום ליציאה אוטומטית, אך יתכן שהדבר לא יקרה מיידית." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "מנוי" + }, + "loading": { + "message": "טוען" + }, + "upgrade": { + "message": "שדרג" + }, + "upgradeOrganization": { + "message": "שדרג ארגון" + }, + "upgradeOrganizationDesc": { + "message": "תכונה זו לא זמינה בתוכנית החינמיית עבור ארגונים. עבור לתוכנית בתשלום בכדי להשתמש בתכונות נוספות." + }, + "createOrganizationStep1": { + "message": "יצירת ארגון: צעד 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "לפני יצירת הארגון, עליך ליצור חשבון אישי חינמי." + }, + "refunded": { + "message": "זוכה" + }, + "nothingSelected": { + "message": "לא בחרת כלום." + }, + "acceptPolicies": { + "message": "סימון תיבה זו מהווה את הסכמתך לתנאים הבאים:" + }, + "acceptPoliciesError": { + "message": "לא הסכמת לתנאי השירות ומדיניות הפרטיות." + }, + "termsOfService": { + "message": "תנאי שירות" + }, + "privacyPolicy": { + "message": "מדיניות הפרטיות" + }, + "filters": { + "message": "מסננים" + }, + "vaultTimeout": { + "message": "משך זמן מירבי עבור חיבור לכספת" + }, + "vaultTimeoutDesc": { + "message": "בחר כמה זמן יעבור כדי שהכספת תסגר לאחר חוסר פעילות ותבצע את הפעולה שנבחרה." + }, + "oneMinute": { + "message": "דקה אחת" + }, + "fiveMinutes": { + "message": "5 דקות" + }, + "fifteenMinutes": { + "message": "15 דקות" + }, + "thirtyMinutes": { + "message": "30 דקות" + }, + "oneHour": { + "message": "שעה אחת" + }, + "fourHours": { + "message": "4 שעות" + }, + "onRefresh": { + "message": "בהפעלת הדפדפן מחדש" + }, + "dateUpdated": { + "message": "עודכן", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "הסיסמה עודכנה", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "הארגון הושבת." + }, + "licenseIsExpired": { + "message": "תוקף הרשיון הסתיים." + }, + "updatedUsers": { + "message": "משתמשים שעודכנו" + }, + "selected": { + "message": "נבחר\\ו" + }, + "ownership": { + "message": "בעלות" + }, + "whoOwnsThisItem": { + "message": "מי הבעלים של הפריט הזה?" + }, + "strong": { + "message": "חזקה", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "טובה", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "חלשה", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "חלשה מאוד", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "סיסמה ראשית חלשה" + }, + "weakMasterPasswordDesc": { + "message": "הסיסמה הראשית שבחרת חלשה מאוד. עליך לבחור סיסמה חזקה יותר (או להשתמש במשפט במקום מילה אחת) בכדי לאבטח את החשבון שלך. האם אתה בטוח שברצונך להשתמש בסיסמה ראשית זו?" + }, + "rotateAccountEncKey": { + "message": "כמו כן החלף את מפתח ההצפנה של החשבון שלי" + }, + "rotateEncKeyTitle": { + "message": "החלף מפתח הצפנה" + }, + "rotateEncKeyConfirmation": { + "message": "האם אתה בטוח שברצונך להחליף (לבצע רוטציה) של מפתח ההצפנה בחשבונך?" + }, + "attachmentsNeedFix": { + "message": "לפריט זה יש קובץ מצורף שצריך תיקון." + }, + "attachmentFixDesc": { + "message": "קובץ מצורף זה צריך לעבור תיקון. לחץ כאן כדי לגלות עוד פרטים." + }, + "fix": { + "message": "תקן", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "בכספת שלך קיים קובץ מצורף ישן שצריך לעבור תיקון לפני שתוכל להחליף את מפתחות ההצפנה של החשבון שלך." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "חינם", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "מפתח API" + }, + "apiKeyDesc": { + "message": "מפתח הAPI שלך יכול לשמש עבור אימות מול הAPI הפומבי של Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "רוטציית מפתח הAPI הופכת את המפתח הקודם ללא תקין. באפשרותך לבצע רוטציה של מפתח הAPI אם אתה מאמין שהמפתח הנוכחי לא בטוח לשימוש." + }, + "apiKeyWarning": { + "message": "למפתח הAPI שלך יש גישה מלאה לארגון שלך. מומלץ מאוד לשמור אותו בסוד." + }, + "userApiKeyDesc": { + "message": "מפתח הAPI שלך יכול לשמש עבור אימות מול הCLI של Bitwarden." + }, + "userApiKeyWarning": { + "message": "מפתח הAPI שלך משמש כמנגנון אימות אלטרנטיבי. יש לשמור עליו כמו על כל סיסמה." + }, + "oauth2ClientCredentials": { + "message": "אישורי לקוח OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "צפה במפתח API" + }, + "rotateApiKey": { + "message": "קבל מפתח API חדש" + }, + "selectOneCollection": { + "message": "עליך לבחור לפחות אוסף אחד." + }, + "couldNotChargeCardPayInvoice": { + "message": "לא הצלחנו לחייב את הכרטיס שלך. אנא בדוק ושלם את הקבלות המופיעות להלן." + }, + "inAppPurchase": { + "message": "רכישות פנימיות" + }, + "cannotPerformInAppPurchase": { + "message": "אין באפשרותך לבצע פעולה זו כשמשתמשים בשיטת התשלום 'רכישות פנימיות'." + }, + "manageSubscriptionFromStore": { + "message": "עליך לנהל את המנוי מתוך החנות שבה ביצעת את הרכישות הפנימיות." + }, + "minLength": { + "message": "אורך מינימלי" + }, + "clone": { + "message": "שכפול" + }, + "masterPassPolicyDesc": { + "message": "קבע דרישות מינימום עבור חוזק הסיסמה הראשית." + }, + "twoStepLoginPolicyDesc": { + "message": "דרוש מהמשתמשים להגדיר כניסה דו-שלבית בחשבונות האישיים שלהם." + }, + "twoStepLoginPolicyWarning": { + "message": "חברי ארגון ללא הגדרת כניסה דו-שלבית יוסרו מהארגון ויקבלו אימייל המסביר את השינוי." + }, + "twoStepLoginPolicyUserWarning": { + "message": "הינך חבר בארגון המחייב כניסה דו-שלבית מוגדרת בחשבונך. אם תבטל את כל הספקים המאפשרים כניסה דו-שלבית, תוסר אוטומטית מהארגון." + }, + "passwordGeneratorPolicyDesc": { + "message": "הגדר דרישות מינימום במחולל הסיסמאות." + }, + "passwordGeneratorPolicyInEffect": { + "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": "הסיסמה הראשית החדשה שלך לא עומדת בדרישות המדיניות." + }, + "minimumNumberOfWords": { + "message": "מספר מינימאלי של מילים" + }, + "defaultType": { + "message": "סוג ברירת מחדל" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "חפש בסל המחזור" + }, + "permanentlyDelete": { + "message": "מחק לצמיתות" + }, + "permanentlyDeleteSelected": { + "message": "מחק לצמיתות פריטים שנבחרו" + }, + "permanentlyDeleteItem": { + "message": "מחק לצמיתות פריט שנבחר" + }, + "permanentlyDeleteItemConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק את הפריט הזה?" + }, + "permanentlyDeletedItem": { + "message": "פריט שנמחק לצמיתות" + }, + "permanentlyDeletedItems": { + "message": "פריטים שנמחקו לצמיתות" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "בחרת $COUNT$ פריט(ים) למחיקה לצמיתות. האם אתה בטוח שברצונך למחוק את כולם?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "פריט שנמחק לצמיתות $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "שחזר" + }, + "restoreSelected": { + "message": "שחזר בחירה" + }, + "restoreItem": { + "message": "שחזר פריט" + }, + "restoredItem": { + "message": "פריט ששוחזר" + }, + "restoredItems": { + "message": "פריטים ששוחזרו" + }, + "restoreItemConfirmation": { + "message": "האם אתה בטוח שברצונך לשחזר פריט זה?" + }, + "restoreItems": { + "message": "שחזר פריטים" + }, + "restoreSelectedItemsDesc": { + "message": "בחרת $COUNT$ פריט(ים) לשחזור. האם אתה בטוח שברצונך לשחזר את כל הפריטים הללו?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "פריט ששוחזר $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "יציאה תגרום להסרת כל גישה שיש לך לכספת ודורשת אימות אונליין לאחר משך זמן מסויים. האם אתה בטוח שברצונך להשתמש באפשרות זו?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "אישור פעולת אימות לאחר חוסר פעילות" + }, + "hidePasswords": { + "message": "הסתר סיסמאות" + }, + "countryPostalCodeRequiredDesc": { + "message": "אנו מבקשים מידע זה בכדי לחשב את עלויות המיסים והדוחות הכספיים שלנו בלבד." + }, + "includeVAT": { + "message": "כלול נתוני מעמ/VAT/GST (אופציונאלי)" + }, + "taxIdNumber": { + "message": "מזהה מיסוי מעמ/VAT/GST" + }, + "taxInfoUpdated": { + "message": "מידע מיסוי עודכן." + }, + "setMasterPassword": { + "message": "קבע סיסמה ראשית" + }, + "ssoCompleteRegistration": { + "message": "כדי להשלים את הכניסה עם SSO, נא להגדיר סיסמה ראשית כדי לגשת ולהגן על הכספת שלך." + }, + "identifier": { + "message": "מזהה" + }, + "organizationIdentifier": { + "message": "מזהה ארגוני" + }, + "ssoLogInWithOrgIdentifier": { + "message": "הכנס באמצעות פורטל ההזדהות האחודה (SSO) הארגוני שלך. אנא הזן את המזהה הארגוני שלך כדי להתחיל." + }, + "enterpriseSingleSignOn": { + "message": "כניסה ארגונית אחודה" + }, + "ssoHandOff": { + "message": "ניתן לסגור את הטאב הנוכחי ולהמשיך את השימוש בתוסף." + }, + "includeAllTeamsFeatures": { + "message": "כל התכונות הקיימות ב\"צוות\", ובנוסף:" + }, + "includeSsoAuthentication": { + "message": "אימות SSO דרך SAML2.0 וOpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "מדיניות ארגונית" + }, + "ssoValidationFailed": { + "message": "אימות SSO נכשל" + }, + "ssoIdentifierRequired": { + "message": "מזהה הארגון נחוץ." + }, + "unlinkSso": { + "message": "נתק SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "חבר SSO" + }, + "singleOrg": { + "message": "ארגון יחידני" + }, + "singleOrgDesc": { + "message": "מונע מהמשתמשים אפשרות צירוף לארגונים אחרים." + }, + "singleOrgBlockCreateMessage": { + "message": "לפי מדיניות הארגון שלך, אין באפשרותך להצטרף ליותר מארגון אחד. אנא צור קשר עם מנהלי הארגון שלך, או לחלופין - צור חשבון Bitwarden נפרד." + }, + "singleOrgPolicyWarning": { + "message": "חברי ארגון שאינם הבעלים או המנהלים וכבר עכשיו הם חלק מארגון אחר - יוסרו מהארגון שלך." + }, + "requireSso": { + "message": "אימות בעזרת כניסה אחודה" + }, + "requireSsoPolicyDesc": { + "message": "מחייב את המשתמשים להשתמש בכניסה אחודה של הארגון." + }, + "prerequisite": { + "message": "תנאים מקדימים" + }, + "requireSsoPolicyReq": { + "message": "יש לסמן את מדיניות הארגון היחידני לפני הפעלת מדיניות זו." + }, + "requireSsoPolicyReqError": { + "message": "מדיניות ארגון יחידני לא הופעלה." + }, + "requireSsoExemption": { + "message": "מנהלי ובעלי הארגון מוחרגים מאכיפת מדיניות זו." + }, + "sendTypeFile": { + "message": "קובץ" + }, + "sendTypeText": { + "message": "טקסט" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "מחק Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק Send זה?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "מה סוג הSend?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "כמות גישות מקסימלית" + }, + "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": "כמות גישות נוכחית" + }, + "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." + }, + "disabled": { + "message": "מבוטל" + }, + "sendLink": { + "message": "לינק לSend", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "העתק לינק לSend", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "הסר סיסמה" + }, + "removedPassword": { + "message": "הסיסמה הוסרה" + }, + "removePasswordConfirmation": { + "message": "האם אתה בטוח שברצונך להסיר את הסיסמה?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "כל הSendים" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "ממתין להסרה" + }, + "expired": { + "message": "פג תוקף" + }, + "searchSends": { + "message": "חיפוש Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "הSend הזה מוגן בסיסמה. אנא הזן את הסיסמה כדי להמשיך.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "לא יודע מה הסיסמה? בקש מהשולח את הסיסמה עבור הSend.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "הSend הזה מוסתר כברירת מחדל. באפשרותך לשנות את מצב ההסתרה בעזרת הכפתור להלן.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "הורד קובץ" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "אין Sendים להצגה ברשימה.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json new file mode 100644 index 0000000000..a16c89e90e --- /dev/null +++ b/apps/web/src/locales/hi/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ वेब वॉल्ट", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "पासवर्ड" + }, + "newPassword": { + "message": "नया पासवर्ड" + }, + "passphrase": { + "message": "पासफ़्रेज़" + }, + "notes": { + "message": "नोट्स" + }, + "customFields": { + "message": "कस्टम फील्ड्स" + }, + "cardholderName": { + "message": "कार्डधारक का नाम" + }, + "number": { + "message": "संख्या" + }, + "brand": { + "message": "ब्रांड" + }, + "expiration": { + "message": "सीमा समाप्ति" + }, + "securityCode": { + "message": "सिक्योरिटी कोड (सीवीवी)" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "कंपनी" + }, + "ssn": { + "message": "सामाजिक सुरक्षा संख्या" + }, + "passportNumber": { + "message": "पासपोर्ट संख्या" + }, + "licenseNumber": { + "message": "लाइसेंस संख्या" + }, + "email": { + "message": "ईमेल" + }, + "phone": { + "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": "दिसंबर" + }, + "title": { + "message": "शीर्षक" + }, + "mr": { + "message": "श्री" + }, + "mrs": { + "message": "श्रीमती" + }, + "ms": { + "message": "श्रीमती" + }, + "dr": { + "message": "डॉ" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "फ़ोल्डर" + }, + "newCustomField": { + "message": "नया कस्टम फील्ड" + }, + "value": { + "message": "मूल्य" + }, + "dragToSort": { + "message": "सॉर्ट करने के लिए ड्रैग करें" + }, + "cfTypeText": { + "message": "शब्द" + }, + "cfTypeHidden": { + "message": "छुपा हुआ" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Canceled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "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" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add Item" + }, + "editItem": { + "message": "Edit Item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Other" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copy Password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copy Username", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My Vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Delete Selected" + }, + "moveSelected": { + "message": "Move Selected" + }, + "selectAll": { + "message": "Select All" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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." + }, + "emailAddress": { + "message": "Email Address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New Organization" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json new file mode 100644 index 0000000000..78332f502f --- /dev/null +++ b/apps/web/src/locales/hr/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web trezor", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Koja je ovo vrsta 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" + }, + "newPassword": { + "message": "Nova lozinka" + }, + "passphrase": { + "message": "Frazna lozinka" + }, + "notes": { + "message": "Bilješke" + }, + "customFields": { + "message": "Prilagođena polja" + }, + "cardholderName": { + "message": "Vlasnik kartice" + }, + "number": { + "message": "Broj" + }, + "brand": { + "message": "Vrsta kartice" + }, + "expiration": { + "message": "Istek" + }, + "securityCode": { + "message": "Kontrolni broj" + }, + "identityName": { + "message": "Ime identiteta" + }, + "company": { + "message": "Tvrtka" + }, + "ssn": { + "message": "Broj socijalnog osiguranja" + }, + "passportNumber": { + "message": "Broj putovnice" + }, + "licenseNumber": { + "message": "Broj vozačke dozvole" + }, + "email": { + "message": "E-pošta" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Ukloni" + }, + "unassigned": { + "message": "Nedodijeljeno" + }, + "noneFolder": { + "message": "Nema mape", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj mapu" + }, + "editFolder": { + "message": "Uredi mapu" + }, + "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." + }, + "never": { + "message": "Nikad" + }, + "toggleVisibility": { + "message": "Prikaži/Sakrij" + }, + "toggleCollapse": { + "message": "Sažmi/Proširi", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generiraj lozinku" + }, + "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." + }, + "save": { + "message": "Spremi" + }, + "cancel": { + "message": "Odustani" + }, + "canceled": { + "message": "Otkazano" + }, + "close": { + "message": "Zatvori" + }, + "delete": { + "message": "Izbriši" + }, + "favorite": { + "message": "Favorit" + }, + "unfavorite": { + "message": "Ukloni iz favorita" + }, + "edit": { + "message": "Uredi" + }, + "searchCollection": { + "message": "Pretraživanje zbirke" + }, + "searchFolder": { + "message": "Pretraživanje mape" + }, + "searchFavorites": { + "message": "Pretraživanje favorita" + }, + "searchType": { + "message": "Tip pretrage", + "description": "Search item type" + }, + "searchVault": { + "message": "Pretraživanje trezora" + }, + "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" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Mape" + }, + "collections": { + "message": "Zbirke" + }, + "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": "State / Province" + }, + "zipPostalCode": { + "message": "Poštanski broj" + }, + "country": { + "message": "Zemlja" + }, + "shared": { + "message": "Dijeljeno" + }, + "attachments": { + "message": "Privitci" + }, + "select": { + "message": "Odaberi" + }, + "addItem": { + "message": "Dodaj stavku" + }, + "editItem": { + "message": "Uredi stavku" + }, + "viewItem": { + "message": "Prikaz stavke" + }, + "ex": { + "message": "npr.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Ostalo" + }, + "share": { + "message": "Podijeli" + }, + "moveToOrganization": { + "message": "Premjesti u organizaciju" + }, + "valueCopied": { + "message": " kopirano", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopiraj vrijednost", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopiraj lozinku", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopiraj korisničko ime", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopiraj broj", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiraj kontrolni broj", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopiraj URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Moj trezor" + }, + "vault": { + "message": "Trezor" + }, + "moveSelectedToOrg": { + "message": "Premjesti odabrano u Organizaciju" + }, + "deleteSelected": { + "message": "Obriši odabrano" + }, + "moveSelected": { + "message": "Premjesti odabrano" + }, + "selectAll": { + "message": "Odaberi sve" + }, + "unselectAll": { + "message": "Poništi odabir" + }, + "launch": { + "message": "Pokreni" + }, + "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." + }, + "addedItem": { + "message": "Stavka dodana" + }, + "editedItem": { + "message": "Uređena stavka" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ premješteno u $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Odabrane stavke premještene u $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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" + }, + "deletedItems": { + "message": "Stavke poslane u smeće" + }, + "movedItems": { + "message": "Premještene stavke" + }, + "overwritePasswordConfirmation": { + "message": "Sigurno želiš prebrisati trenutnu lozinku?" + }, + "editedFolder": { + "message": "Uređena mapa" + }, + "addedFolder": { + "message": "Mapa dodana" + }, + "deleteFolderConfirmation": { + "message": "Sigurno želiš izbrisati ovu mapu?" + }, + "deletedFolder": { + "message": "Mapa izbrisana" + }, + "loggedOut": { + "message": "Odjavljen/a" + }, + "loginExpired": { + "message": "Sesija je istekla." + }, + "logOutConfirmation": { + "message": "Sigurno se želiš odjaviti?" + }, + "logOut": { + "message": "Odjavi se" + }, + "ok": { + "message": "U redu" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "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" + }, + "emailAddressDesc": { + "message": "Upotrijebi svoju adresu e-pošte za prijavu." + }, + "yourName": { + "message": "Tvoje ime" + }, + "yourNameDesc": { + "message": "Kako da te zovemo?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Podsjetnik glavne lozinke" + }, + "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": "Neispravna 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." + }, + "emailAddress": { + "message": "Adresa e-pošte" + }, + "yourVaultIsLocked": { + "message": "Tvoj trezor je zaključan. Potvrdi glavnu lozinku za nastavak." + }, + "unlock": { + "message": "Otključaj" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Zaključaj sada" + }, + "noItemsInList": { + "message": "Nema stavki za prikaz." + }, + "noCollectionsInList": { + "message": "Nema zbirki za prikaz." + }, + "noGroupsInList": { + "message": "Nema grupa za prikaz." + }, + "noUsersInList": { + "message": "Nema korisnika za prikaz." + }, + "noEventsInList": { + "message": "Nema događaja za prikaz." + }, + "newOrganization": { + "message": "Nova organizacija" + }, + "noOrganizationsList": { + "message": "Ne pripadaš niti jednoj organizaciji. Organizacije omogućuju sigurno dijeljenje stavki s drugim korisnicima." + }, + "versionNumber": { + "message": "Verzija $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "loginUnavailable": { + "message": "Prijava nije dostupna" + }, + "noTwoStepProviders": { + "message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja prijave u dva koraka." + }, + "noTwoStepProviders2": { + "message": "Koristi podržani web-preglednik (npr. Chrome) i/ili dodaj dodatne usluge koje su bolje podržane u web preglednicima (npr. aplikacija Autentifikator)." + }, + "twoStepOptions": { + "message": "Mogućnosti prijave u dva koraka" + }, + "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." + }, + "u2fDesc": { + "message": "Koristi bilo koji FIDO U2F omogućen sigurnosni ključ za pristup svojem računu." + }, + "u2fTitle": { + "message": "FIDO U2F sigurnosni ključ" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Koristi WebAuthn sigurnosni ključ za pristup svojem računu." + }, + "webAuthnMigrated": { + "message": "(migrirano s FIDO)" + }, + "emailTitle": { + "message": "E-pošta" + }, + "emailDesc": { + "message": "Verifikacijski kodovi će biti poslani e-poštom." + }, + "continue": { + "message": "Nastavi" + }, + "organization": { + "message": "Organizacija" + }, + "organizations": { + "message": "Organizacije" + }, + "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." + }, + "moveManyToOrgDesc": { + "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." + }, + "collectionsDesc": { + "message": "Uredi zbirke s kojima se ova stavka koristi. Samo korisnici organizacije s pristupom ovim zbirkama će ih moći vidjeti." + }, + "deleteSelectedItemsDesc": { + "message": "Odabrano je $COUNT$ stavke/i za brisanje. Sigurno želiš obrisati sve ove stavke?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Odaberi mapu u koju želiš premjestiti odabranih $COUNT$ stavke/i.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "$MOVEABLE_COUNT$ od $COUNT$ odabranih stavki može biti premješteno u Organiziaciju; $NONMOVEABLE_COUNT$ nije moguće premjestiti.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Kôd za provjeru (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiraj kôd za provjeru" + }, + "warning": { + "message": "Upozorenje" + }, + "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." + }, + "export": { + "message": "Izvoz" + }, + "exportVault": { + "message": "Izvezi trezor" + }, + "fileFormat": { + "message": "Format datoteke" + }, + "exportSuccess": { + "message": "Tvoji podaci iz trezora su izvezeni." + }, + "passwordGenerator": { + "message": "Generator lozinki" + }, + "minComplexityScore": { + "message": "Minimalna ocjena složenosti" + }, + "minNumbers": { + "message": "Najmanje brojeva" + }, + "minSpecial": { + "message": "Najmanje specijalnih", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Izbjegavaj dvosmislene znakove" + }, + "regeneratePassword": { + "message": "Ponovno generiraj lozinku" + }, + "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" + }, + "passwordHistory": { + "message": "Povijest" + }, + "noPasswordsInList": { + "message": "Nema lozinki na popisu." + }, + "clear": { + "message": "Očisti", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Račun je ažuriran" + }, + "changeEmail": { + "message": "Promijeni e-poštu" + }, + "changeEmailTwoFactorWarning": { + "message": "Promijeniti ćeš adresu e-pošte računa. Ovo neće promijeniti adresu e-pošte za dvostruku autentifikaciju (ovo se može promijeniti u postavkama dvostruke autentifikacije)." + }, + "newEmail": { + "message": "Nova adresa e-pošte" + }, + "code": { + "message": "Kôd" + }, + "changeEmailDesc": { + "message": "Verifikacijski kôd je poslan na $EMAIL$. Provjeri poštu i unesi primljeni verifikacijski kôd za završetak promjene adrese e-pošte.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Ako nastaviš, biti će zatvorena trenutna sesija, što će zahtijevati ponovnu prijavu uklljučujući i dvostruku autentifikaciju, ako je aktivna. Aktivne sesije na drugim uređajima ostati će aktivne još jedan sat." + }, + "emailChanged": { + "message": "Adresa e-pošte je promijenjena" + }, + "logBackIn": { + "message": "Molimo, ponovno se prijavi." + }, + "logBackInOthersToo": { + "message": "Molimo, ponovno se prijavi. Ako koristiš druge aplikacije Bitwarden i u njima napravi odjavu/prijavu." + }, + "changeMasterPassword": { + "message": "Promjeni glavnu lozinku" + }, + "masterPasswordChanged": { + "message": "Glavna lozinka promijenjena" + }, + "currentMasterPass": { + "message": "Trenutna glavna lozinka" + }, + "newMasterPass": { + "message": "Nova glavna lozinka" + }, + "confirmNewMasterPass": { + "message": "Potvrdi novu glavnu lozinku" + }, + "encKeySettings": { + "message": "Postavke ključa za šifriranje" + }, + "kdfAlgorithm": { + "message": "KDF algoritam" + }, + "kdfIterations": { + "message": "KDF iteracija" + }, + "kdfIterationsDesc": { + "message": "Veće KDF iteracije mogu pomoći zaštititi tvoju glavnu lozinku kako ju napadač ne bi pogodio. Predlažemo vrijednost od $VALUE$ ili više.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Postavljanje previsoke KDF iteracije može rezultirati slabijom izvedbom prilikom otključavanja Bitwardena na uređajima sa sporijim CPU-om. Predlažemo da vrijednost povećavaš za $INCREMENT$ i isprobaš na svim svojim uređajima.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Promijeni KDF" + }, + "encKeySettingsChanged": { + "message": "Postavke ključa za šifriranje promijenjene" + }, + "dangerZone": { + "message": "Opasna zona" + }, + "dangerZoneDesc": { + "message": "Pažljivo, ove akcije su konačne i ne mogu se poništiti!" + }, + "deauthorizeSessions": { + "message": "Deautoriziraj sesije" + }, + "deauthorizeSessionsDesc": { + "message": "Sumnjaš da je na tvoj račun prijavljeno s nekog drugog uređaja? Deautoriziranje sesija koje su prethodno korištene je sigurnosni korak koji se savjetuje ako je prethodno korišteno neko javno računalo ili je lozinka slučajno spremljena na tuđe računalo. Ovaj će koriak, također, očistiti sve prehodno zapamćene prijave u dva koraka." + }, + "deauthorizeSessionsWarning": { + "message": "Ako nastaviš, biti će zatvorena trenutna sesija, što će zahtijevati ponovnu prijavu uklljučujući i prijavu u dva koraka, ako je aktivna. Aktivne sesije na drugim uređajima mogu ostati aktivne još jedan sat." + }, + "sessionsDeauthorized": { + "message": "Sve sesije deautorizirane" + }, + "purgeVault": { + "message": "Izbriši sve iz trezora" + }, + "purgedOrganizationVault": { + "message": "Pročišćen organizacijski trezor." + }, + "vaultAccessedByProvider": { + "message": "Trezoru pristupio davatelj." + }, + "purgeVaultDesc": { + "message": "Nastavi za brisanje SVIH stavki i mapa u tvom trezoru. Stavke koje pripadaju organizaciji s kojom dijeliš neće biti izbrisane." + }, + "purgeOrgVaultDesc": { + "message": "Nastavi za brisanje SVIH stavki u organizacijskom trezoru." + }, + "purgeVaultWarning": { + "message": "Pročišćénje tvog trezora je TRAJNO i NEPOVRATNO i naknadno ga nije moguće vratiti." + }, + "vaultPurged": { + "message": "Vaš trezor je pročišćen." + }, + "deleteAccount": { + "message": "Obriši račun" + }, + "deleteAccountDesc": { + "message": "Nastavite za brisanje tvog računa i SVIH povezanih podataka." + }, + "deleteAccountWarning": { + "message": "Brisanje tvog računa je TRAJNO i NEPOVRATNO i naknadno ga nije moguće vratiti." + }, + "accountDeleted": { + "message": "Račun izbrisan" + }, + "accountDeletedDesc": { + "message": "Tvoj račun je zatvoren i svi povezani podaci su obrisani." + }, + "myAccount": { + "message": "Moj račun" + }, + "tools": { + "message": "Alati" + }, + "importData": { + "message": "Uvezi podatke" + }, + "importError": { + "message": "Greška prilikom uvoza" + }, + "importErrorDesc": { + "message": "Postoji problem s podacima za uvoz. Potrebno je razriješiti doljenavedene greške u izvornoj datoteci i pokušati ponovno." + }, + "importSuccess": { + "message": "Uvoz podataka u trezor je uspjelo." + }, + "importWarning": { + "message": "Uvoziš podatke u $ORGANIZATION$. Tvoji podaci možda će biti podijeljeni s članovima ove organizacije. Želiš li svejedno uvesti podatke?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Podaci nisu ispravno formatirani. Provjeri uvoznu datoteku i pokušaj ponovno." + }, + "importNothingError": { + "message": "Ništa nije uvezeno." + }, + "importEncKeyError": { + "message": "Greška u dešifriranju izvozne datoteke. Ovaj ključ za šifriranje ne odgovara ključu za šifriranje korištenom pri izvozu datoteke." + }, + "selectFormat": { + "message": "Odaberi format datoteke za uvoz" + }, + "selectImportFile": { + "message": "Odaberi datoteku za uvoz" + }, + "orCopyPasteFileContents": { + "message": "ili kopiraj/zalijepi sadržaj uvozne datoteke" + }, + "instructionsFor": { + "message": "$NAME$ upute", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Mogućnosti" + }, + "optionsDesc": { + "message": "Prilagodi svoje iskustvo trezora." + }, + "optionsUpdated": { + "message": "Mogućnosti su ažurirane" + }, + "language": { + "message": "Jezik" + }, + "languageDesc": { + "message": "Promijeni jezik web trezora." + }, + "disableIcons": { + "message": "Onemogući ikone web mjesta" + }, + "disableIconsDesc": { + "message": "Ikone web mjesta nude prepoznatljivu ikonu pokraj svake stavke za prijavu u vašem trezoru." + }, + "enableGravatars": { + "message": "Omogući Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Koristi slike učitane s gravatar.com." + }, + "enableFullWidth": { + "message": "Uključi raspored s punom širinom", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Dozvoli web trezoru da koristi cijelu širinu prozora preglednika." + }, + "default": { + "message": "Zadano" + }, + "domainRules": { + "message": "Pravila domene" + }, + "domainRulesDesc": { + "message": "Ako imaš iste pristupne podatke na više web domena, možeš web mjesto označiti kao „ekvivalentno”. Globalne domene su one koje je za tebe već stvorio Bitwarden." + }, + "globalEqDomains": { + "message": "Globalne ekvivalentne domene" + }, + "customEqDomains": { + "message": "Prilagođene ekvivalentne domene" + }, + "exclude": { + "message": "Izuzmi" + }, + "include": { + "message": "Obuhvati" + }, + "customize": { + "message": "Prilagodi" + }, + "newCustomDomain": { + "message": "Nova prilagođena domena" + }, + "newCustomDomainDesc": { + "message": "Unesi listu domena odvojenu zarezima. Dozvoljene su samo osnovne domene. Ne unosi poddomene. Npr. unesi „google.com” umjesto „www.google.com”. Možeš, također, unijeti „androidapp://package.name” za asociranje android aplikacoje s drugim web domenama." + }, + "customDomainX": { + "message": "Prilagođena domena $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domene ažurirane" + }, + "twoStepLogin": { + "message": "Prijava u dva koraka" + }, + "twoStepLoginDesc": { + "message": "Osiguraj svoj račun dodavanjem dodatnog koraka prilikom prijave." + }, + "twoStepLoginOrganizationDesc": { + "message": "Zahtjevaj prijavu u dva koraka za svoje korisnike u organiziaciji konfigurirajući pružatelje usluga na razini organizacije." + }, + "twoStepLoginRecoveryWarning": { + "message": "Uključivanje prijave u dva koraka ti može trajno onemogućiti pristup Bitwarden računu. Kôd za oporavak ti omogućuje pristup računu u slučaju da više ne možeš koristiti redovnog pružatelja prijave u dva koraka (npr. izgubiš svoj uređaj). Bitwarden podrška ti neće moći pomoći ako izgubiš pristup svojem računu. Savjetujemo da zapišeš ili ispišeš kôd za oporavak i spremiš ga na sigurno mjesto." + }, + "viewRecoveryCode": { + "message": "Kôd za oporavak" + }, + "providers": { + "message": "Pružatelji", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Omogući" + }, + "enabled": { + "message": "Omogućeno" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium članstvo" + }, + "premiumRequired": { + "message": "Potrebno je premium članstvo" + }, + "premiumRequiredDesc": { + "message": "Za korištenje ove značajke potrebno je premium članstvo." + }, + "youHavePremiumAccess": { + "message": "Imaš premium pristup" + }, + "alreadyPremiumFromOrg": { + "message": "Već imaš pristup premium značajkama zbog organizacije čiji si član." + }, + "manage": { + "message": "Upravljaj" + }, + "disable": { + "message": "Onemogući" + }, + "twoStepLoginProviderEnabled": { + "message": "Ovaj pružatelj prijave u dva koraka je omogućen na tvojem računu." + }, + "twoStepLoginAuthDesc": { + "message": "Unesi svoju glavnu lozinku za promjenu postavki prijave u dva koraka." + }, + "twoStepAuthenticatorDesc": { + "message": "Za aktivaciju prijave u dva koraka autentifikatorskom aplikacijom slijedi ove korake:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Preuzmi autentifikatorsku aplikaciju" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Trebaš aplikaciju za dvostruku autentifikaciju? Preuzmi jednu od ovih" + }, + "iosDevices": { + "message": "iOS uređaji" + }, + "androidDevices": { + "message": "Android uređaji" + }, + "windowsDevices": { + "message": "Windows uređaji" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Ove su aplikacije preporučene, no također je moguće koristiti i druge autentifikatorske aplikacije." + }, + "twoStepAuthenticatorScanCode": { + "message": "Skeniraj ovaj QR kôd svojom autentifikatorskom aplikacijom" + }, + "key": { + "message": "Ključ" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Unesi 6-znamenkasti kontrolni kôd iz autentifikatorske aplikacije" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Ako trebaš dodati novi uređaj, dolje se nalazi QR kôd (ili ključ) kojeg zahtijeva tvoja autentifikatorska aplikacija." + }, + "twoStepDisableDesc": { + "message": "Sigurno želiš onemogućiti ovog pružatelja prijave u dva koraka?" + }, + "twoStepDisabled": { + "message": "Pružatelj usluge prijave u dva koraka je onemogućen." + }, + "twoFactorYubikeyAdd": { + "message": "Dodaj novi YubiKey u vaš račun" + }, + "twoFactorYubikeyPlugIn": { + "message": "Umetni YubiKey u USB priključak računala." + }, + "twoFactorYubikeySelectKey": { + "message": "Odaberi prvo prazno YubiKey polje za unos." + }, + "twoFactorYubikeyTouchButton": { + "message": "Dodirni tipku na YubiKey-u." + }, + "twoFactorYubikeySaveForm": { + "message": "Spremite obrazac." + }, + "twoFactorYubikeyWarning": { + "message": "Zbog platformskih ograničenja, YubiKey nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti YubiKey, trebalo bi uključiti drugog pružatelja prijave u dva koraka. Platforme na kojima je YubiKey podržan:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web trezor, desktop aplikacija, CLI i sva proširenja preglednika na uređajima s USB priključkom na koji se može spojiti tvoj YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobilne aplikacije na uređajima s NFC-om ili podatkovni priključak u koji se može priključiti tvoj YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F ključ $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn ključ $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC podrška" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Jedan od mojih ključeva podržava NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Ako jedan od tvojih YubiKey-eva podržava NFC (npr. YubiKey NEO), kod detektiranog NFC-a će mobilni uređaj upitati za korištenje YubiKey-a." + }, + "yubikeysUpdated": { + "message": "YubiKey ažuriran" + }, + "disableAllKeys": { + "message": "Onemogući sve ključeve" + }, + "twoFactorDuoDesc": { + "message": "Unesi podatke o Bitwarden aplikaciji iz svoje Duo Admin ploče." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integracijski ključ" + }, + "twoFactorDuoSecretKey": { + "message": "Tajni ključ" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Za korištenje prijave u dva koraka e-poštom prati ove korake:" + }, + "twoFactorEmailEnterEmail": { + "message": "Unesi e-poštu na koju želiš primati verifikacijske kodove" + }, + "twoFactorEmailEnterCode": { + "message": "Unesi 6-znamenkasti verifikacijski kôd primljen e-poštom" + }, + "sendEmail": { + "message": "Pošalji poruku e-pošte" + }, + "twoFactorU2fAdd": { + "message": "Dodaj FIDO U2F sigurnosni ključ svojem računu" + }, + "removeU2fConfirmation": { + "message": "Sigurno želiš ukloniti ovaj sigurnosni ključ?" + }, + "twoFactorWebAuthnAdd": { + "message": "Dodaj WebAuthn sigurnosni ključ svojem računu" + }, + "readKey": { + "message": "Očitaj ključ" + }, + "keyCompromised": { + "message": "Ključ je kompromitiran." + }, + "twoFactorU2fGiveName": { + "message": "Dodaj sigurnosom ključu neko prepoznatljivo ime." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Priključi sigurnosni ključ u USB priključak svojeg računala i klikni na tipku „Očitaj ključ”." + }, + "twoFactorU2fTouchButton": { + "message": "Ako sigurnosni ključ ima tipku, dodirni ju." + }, + "twoFactorU2fSaveForm": { + "message": "Spremi obrazac." + }, + "twoFactorU2fWarning": { + "message": "Zbog platformskih ograničenja, FIDO U2F nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti FIDO U2F trebalo bi uključiti drugog pružatelja prijave u dva koraka. Platforme na kojima je FIDO U2F podržan:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web trezor i proširenja preglednika na stolnim/prijenosnim računalima s U2F omogućenim preglednikom (npr. Chrome, Opera, Vivaldi ili Firefox s omogućenim FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "Sustav čeka da dodirneš tipku na svom sigurnosnom ključu" + }, + "twoFactorU2fClickSave": { + "message": "Klikni na tipku „Spremi” za omogućavanje ovog sigurnosnog ključa za prijavu u dva koraka." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Došlo je do pogreške kod očitavanja sigurnosnog ključa. Pokušaj ponovno." + }, + "twoFactorWebAuthnWarning": { + "message": "Zbog platformskih ograničenja, WebAuthn nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti WebAuthn, trebalo bi uključiti drugog pružatelja prijave u dva koraka. Platforme na kojima je WebAuthn podržan:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web trezor i proširenja preglednika na stolnim/prijenosnim računalima s WebAuthn omogućenim preglednikom (npr. Chrome, Opera, Vivaldi ili Firefox s omogućenim WebAuthn)." + }, + "twoFactorRecoveryYourCode": { + "message": "Tvoj kôd za oporavak Bitwarden prijave u dva koraka" + }, + "twoFactorRecoveryNoCode": { + "message": "Još nije omogućen niti jedan pružatelj prijave u dva koraka. Nakon omogućavanja prijave u dva koraka, ovdje ćeš pronaći svoj kôd za oporavak." + }, + "printCode": { + "message": "Ispis kôda", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Izvještaji" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Izvještaj neosiguranih web mjesta" + }, + "unsecuredWebsitesReportDesc": { + "message": "Pristupanje neosiguranim web stranicama (http://) može biti opasno. Ako web mjesto omogućuje, uvijek mu pristupaj koristeći siguran način (https://) kako bi tvoja veza bila šifrirana." + }, + "unsecuredWebsitesFound": { + "message": "Pronađena neosigurana web mjesta" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Pronašli smo $COUNT$ stavki u tvom trezoru koje koriste neosigurane URI-je (http://). Ako web mjesto omogućuje trebalo bi URI-je promijeniti na https://", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Niti jedna stavka u tvom trezoru nema neosigurane URI-je." + }, + "inactive2faReport": { + "message": "Izvještaj o neaktivnim 2FA" + }, + "inactive2faReportDesc": { + "message": "Dvostruka autentifikacija (2FA) je važna postavka sigurnosti koja ti pomaže osigurati svoj račun. Ako web mjesto nudi, uvijek bi trebalo omogućiti dvostruku autentifikaciju." + }, + "inactive2faFound": { + "message": "Pronađene prijave bez 2FA" + }, + "inactive2faFoundDesc": { + "message": "Pronašli smo $COUNT$ web mjesta u tvom trezoru za koje nije omogućena dvostruka autentifikacija (izvor: 2fa.directory). Za bolju zaštitu ovih računa, treba na njima omogućiti dvostruku autentifikaciju.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Nije pronađeno niti jedno web mjesto u tvom trezoru za koje nedostaje dvostruka autentifikacija." + }, + "instructions": { + "message": "Upute" + }, + "exposedPasswordsReport": { + "message": "Izvještaj o izloženim lozinkama" + }, + "exposedPasswordsReportDesc": { + "message": "Izložene lozinke su su one otkrivene prilikom znanih krađa podataka pri čemu su javno objavljene ili su ih hakeri prodavali na dark webu." + }, + "exposedPasswordsFound": { + "message": "Pronađene izložene lozinke" + }, + "exposedPasswordsFoundDesc": { + "message": "Pronašli smo $COUNT$ stavki u tvom trezoru koje imaju lozinke koje su otkrivene prilikom znanih curenja podataka. Trebalo bi ih zamijentii novim lozinkama.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Niti jedna lozinka u tvom trezoru nije bila izložena prilikom znanih krađa podataka." + }, + "checkExposedPasswords": { + "message": "Provjeri izložene lozinke" + }, + "exposedXTimes": { + "message": "Izložene $COUNT$ put(a)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Izvještaj o slabim lozinkama" + }, + "weakPasswordsReportDesc": { + "message": "Slabe lozinke relativno jednostanvo mogu pogoditi hakeri i automatski alati koji se koriste za probijanje lozniki. Bitwardenov generator lozinki ti može pomoći stvoriti jake lozinke." + }, + "weakPasswordsFound": { + "message": "Pronađene slabe lozinke" + }, + "weakPasswordsFoundDesc": { + "message": "Pronašli smo $COUNT$ stavki u tvom trezoru s lozinkama koje nisu jake. Trebalo bi ih zamijeniti jakim lozinkama.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Niti jedna stavka u tvom trezoru nema slabu lozinku." + }, + "reusedPasswordsReport": { + "message": "Izvještaj o istim lozinkama" + }, + "reusedPasswordsReportDesc": { + "message": "Ako je usluga koju koristiš kompromitirana, korištenje iste lozinke negdje drugdje omogućuješ hakerima da jednostavno pristupe tvojim drugim računima. Za svaku bi uslugu trebalo korsititi drugu lozinku." + }, + "reusedPasswordsFound": { + "message": "Pronađene iste lozinke" + }, + "reusedPasswordsFoundDesc": { + "message": "Pronašli smo $COUNT$ istih lozinki u tvom trezoru. Trebalo bi ih zamijeniti jedinstvenim lozinkama.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Niti jedna prijava u tvom trezoru ne koristi iste lozinke." + }, + "reusedXTimes": { + "message": "Korišteno $COUNT$ puta", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Izvještaj o probojima" + }, + "breachDesc": { + "message": "Proboj je incident u kojem su hakeri ilegalno pristupili podacima nekog web mjesta i javno ih objavili. Treba provjeriti koja vrsta podataka je iscurila (adrese e-pošte, lozinke, kreditne kartice, itd.) i poduzeti odgovarajuće korake, kao npr. promijeniti lozinke." + }, + "breachCheckUsernameEmail": { + "message": "Provjeri sva korisnička imena ili adrese e-pošte koje koristiš." + }, + "checkBreaches": { + "message": "Provjerite proboje" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ nije pronađeno u znanim curenjima podataka.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Dobre vijesti", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ je pronađeno u $COUNT$ slučajeva različitih curenja podataka.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Pronađeni probijeni računi" + }, + "compromisedData": { + "message": "Kompromitirani podaci" + }, + "website": { + "message": "Web stranica" + }, + "affectedUsers": { + "message": "Pogođeni korisnici" + }, + "breachOccurred": { + "message": "Došlo je do proboja" + }, + "breachReported": { + "message": "Proboj je prijavljen" + }, + "reportError": { + "message": "Došlo je do greške kod pokušaja učitavanja izvještaja. Pokušaj ponovno." + }, + "billing": { + "message": "Naplata" + }, + "accountCredit": { + "message": "Sredstva računa", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Stanje računa", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Dodaj sredstva", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Iznos", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Dodana sredstva biti će vidljiva na tvom računu nakon što se plaćanje u potpunosti obradi. Neki načini plaćanja mogu kasniti i trajati duže od ostalih." + }, + "makeSureEnoughCredit": { + "message": "Osiguraj da tvoj račun ima dovoljno raspoloživih sredstava za kupnju. Ako tvoj račun nema dovoljno sredstava za kupnju, sredstva će biti dopunjena iz tvojeg zadanog spremljenog načina plaćanja. Sredstva svojem računu možeš dodati na stranici Naplata." + }, + "creditAppliedDesc": { + "message": "Sredstva na tvojem računu mogu se koristiti za kupnju. Sva raspoloživa sredstva će automatski biti upotrijebljena za plaćanje kupnji napravljenih na tvojem računu." + }, + "goPremium": { + "message": "Prijeđi na premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Premium nadogradnja uspješna." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Nadogradi svoj račun na premium članstvo i omogući pristup odličnim dodatnim značajkama." + }, + "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." + }, + "premiumSignUpEmergency": { + "message": "Pristup u nuždi" + }, + "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!" + }, + "premiumPrice": { + "message": "Sve za samo $PRICE$ /godišnje!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Dodaci" + }, + "premiumAccess": { + "message": "Premium pristup" + }, + "premiumAccessDesc": { + "message": "Možeš dodati premium pristup svim članovima tvoje organizacije za $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Dodatni prostor za pohranu (GB)" + }, + "additionalStorageGbDesc": { + "message": "dodatnih GB" + }, + "additionalStorageIntervalDesc": { + "message": "Tvoj paket uključuje $SIZE$ šifriranog prostora za pohranu. Možeš dokupiti dodatni prostor za $PRICE$ po GB/$INTERVAL$", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Sažetak" + }, + "total": { + "message": "Ukupno" + }, + "year": { + "message": "godišnje" + }, + "month": { + "message": "mjesečno" + }, + "monthAbbr": { + "message": "mj.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Tvoj način plaćanja biti će terećen sada i onda ponovno svake godine. Možeš otkazati u bilo kojem trenutku." + }, + "paymentCharged": { + "message": "Tvoj način plaćanja biti će terećen sada i onda ponovno jednom $INTERVAL$. Možeš otkazati u bilo kojem trenutku.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Vaš plan dolazi s besplatnom probnom verzijom od 7 dana. Vaš način plaćanja neće biti naplaćen dok probno razdoblje ne završi. Možete otkazati u bilo kojem trenutku." + }, + "paymentInformation": { + "message": "Podaci o plaćanju" + }, + "billingInformation": { + "message": "Podaci za dostavu računa" + }, + "creditCard": { + "message": "Kreditna kartica" + }, + "paypalClickSubmit": { + "message": "Klikni PayPay za prijavu na svoj PayPal račun, a zatim „Nastavi” za plaćanje." + }, + "cancelSubscription": { + "message": "Otkaži pretplatu" + }, + "subscriptionCanceled": { + "message": "Pretplata otkazana." + }, + "pendingCancellation": { + "message": "Otkaz u tijeku" + }, + "subscriptionPendingCanceled": { + "message": "Pretplata traje do isteka roka naplate i neće biti ponovno naplaćena." + }, + "reinstateSubscription": { + "message": "Vrati pretplatu" + }, + "reinstateConfirmation": { + "message": "Sigurno želiš poništiti zahtjev za otkaz pretplate i vratiti svoju pretplatu?" + }, + "reinstated": { + "message": "Pretplata je vraćena" + }, + "cancelConfirmation": { + "message": "Sigurno želiš otkazati? Izgubiti ćeš pristup svim ovim pretplatnim značajkama kad istekne rok naplate." + }, + "canceledSubscription": { + "message": "Pretplata otkazana." + }, + "neverExpires": { + "message": "Nikada ne istječe" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Sljedeća naplata" + }, + "details": { + "message": "Detalji" + }, + "downloadLicense": { + "message": "Preuzmi licencu" + }, + "updateLicense": { + "message": "Ažuriraj licencu" + }, + "updatedLicense": { + "message": "Licenca ažurirana" + }, + "manageSubscription": { + "message": "Upravljaj pretplatom" + }, + "storage": { + "message": "Prostor za pohranu" + }, + "addStorage": { + "message": "Dodaj prostor za pohranu" + }, + "removeStorage": { + "message": "Ukloni prostor za pohranu" + }, + "subscriptionStorage": { + "message": "Tvoja pretplata uključuje $MAX_STORAGE$ GB šifriranog prostora za pohranu od čega trenutno koristiš $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Način plaćanja" + }, + "noPaymentMethod": { + "message": "Nema spremljenih načina plaćanja." + }, + "addPaymentMethod": { + "message": "Dodaj način plaćanja" + }, + "changePaymentMethod": { + "message": "Promijeni način plaćanja" + }, + "invoices": { + "message": "Fakture" + }, + "noInvoices": { + "message": "Nema faktura." + }, + "paid": { + "message": "Plaćeno", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Neplaćeno", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transakcije", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Nema transakcija." + }, + "chargeNoun": { + "message": "Terećenje", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Povrat", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Stavke će na izvodu kartice biti navedene kao $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB pohrane za dodati" + }, + "gbStorageRemove": { + "message": "GB pokrane za ukloniti" + }, + "storageAddNote": { + "message": "Dodavanje pohrane rezultirati će povećanjem ukupnog zaduženja i trenutnim terećenjem spremljenog sredstva plaćanja. Iznos će biti umanjen proporcionalno ostatku tekućeg obračunskog razdoblja." + }, + "storageRemoveNote": { + "message": "Uklanjanje pohrane rezultirati će smanjenjem ukupnog zaduženja. Iznos će biti umanjen proporcionalno ostatku tekućeg razdoblja i iskorišten kao umanjenje kod sljedeće naplate." + }, + "adjustedStorage": { + "message": "Prilagođeno $AMOUNT$ GB prostora za pohranu.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Kontaktiraj službu za korisnike" + }, + "updatedPaymentMethod": { + "message": "Ažurirani način plaćanja." + }, + "purchasePremium": { + "message": "Kupi Premium članstvo" + }, + "licenseFile": { + "message": "Licencna datoteka" + }, + "licenseFileDesc": { + "message": "Tvoja licencna datoteka zvati će se nekako ovako $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Za nadogradnju svojeg računa na premium članstvo, trebaš prenijeti valjanu licencnu datoteku." + }, + "uploadLicenseFileOrg": { + "message": "Za stvaranje svoje vlastite lokalno smještene organizacije, potrrebno je prenijeti valjanu licencnu datoteku." + }, + "accountEmailMustBeVerified": { + "message": "Adresa e-pošte tvog računa mora biti verificirana." + }, + "newOrganizationDesc": { + "message": "Organizacije omogućuju dijeljenje dijelova svog trezora s drugima, kao i upravljanje povezanim korisnicima za određeni entitent kap. npr. obitelj, mali tim ili velika tvrtka." + }, + "generalInformation": { + "message": "Opće informacije" + }, + "organizationName": { + "message": "Naziv organizacije" + }, + "accountOwnedBusiness": { + "message": "Ovaj je račun vlasništvo tvrtke." + }, + "billingEmail": { + "message": "Adresa e-pošte za naplatu" + }, + "businessName": { + "message": "Naziv tvrtke" + }, + "chooseYourPlan": { + "message": "Odaberi svoju paket" + }, + "users": { + "message": "Korisnici" + }, + "userSeats": { + "message": "Korisničke licence" + }, + "additionalUserSeats": { + "message": "Dodatna korisnička licenca" + }, + "userSeatsDesc": { + "message": "Broj korisničkih licenci" + }, + "userSeatsAdditionalDesc": { + "message": "Tvoj paket uključuje $BASE_SEATS$ korisničkih licenci. Možeš dokupiti dodatne korisničke licence za $SEAT_PRICE$ po korisniku mjesečno.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Koliko trebaš korisničkih licenci? Kasnije možeš dodati još, ako je potrebno." + }, + "planNameFree": { + "message": "Besplatno", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Za testiranje ili privatne korisnike za dijeljenje s $COUNT$ drugih korisnika.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Obitelji" + }, + "planDescFamilies": { + "message": "Za privatnu upotrebu, za dijeljenje s obitelji i prijateljima." + }, + "planNameTeams": { + "message": "Timovi" + }, + "planDescTeams": { + "message": "Za male tvtke ili druge manje organizacije." + }, + "planNameEnterprise": { + "message": "Tvrtke" + }, + "planDescEnterprise": { + "message": "Za srednje i velike tvrtke ili druge velike organizacije." + }, + "freeForever": { + "message": "Besplatno zauvijek" + }, + "includesXUsers": { + "message": "uključuje $COUNT$ korisnika", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Dodatni korisnici" + }, + "costPerUser": { + "message": "$COST$ po korisniku", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Ograničeno na $COUNT$ korisnika (uključujći tebe)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Ograničeno na $COUNT$ zbirki", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Dodaj i dijeli sa do $COUNT$ korisnika", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Dodaj i dijeli s neograničenim brojem korisnika" + }, + "createUnlimitedCollections": { + "message": "Neograničen broj zbirki" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ šifriranog prostora za pohranu podataka", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Lokalni poslužitelj (neobavezno)" + }, + "usersGetPremium": { + "message": "Korisnici imaju pristup premium značajkama" + }, + "controlAccessWithGroups": { + "message": "Upravljanje korisničkim pristupom pomoću grupa" + }, + "syncUsersFromDirectory": { + "message": "Sinkronizacija korisnika i grupa iz adresara" + }, + "trackAuditLogs": { + "message": "Praćenje aktivnosti korisnika sa zapisnicima" + }, + "enforce2faDuo": { + "message": "Uvjetovanje 2FA s Duo" + }, + "priorityCustomerSupport": { + "message": "Prioritetna korisnička podrška" + }, + "xDayFreeTrial": { + "message": "$COUNT$ dana besplatnog probnog korištenje. Može se otkazati bilo kada.", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "mjesečno" + }, + "annually": { + "message": "godišnje" + }, + "basePrice": { + "message": "Osnovna cijena" + }, + "organizationCreated": { + "message": "Organizacija stvorena" + }, + "organizationReadyToGo": { + "message": "Tvoja nova organizacija je spremna za početak!" + }, + "organizationUpgraded": { + "message": "Tvoja organizacija je nadograđena." + }, + "leave": { + "message": "Izađi" + }, + "leaveOrganizationConfirmation": { + "message": "Sigurno želiš napustiti ovu organizaciju?" + }, + "leftOrganization": { + "message": "Organizacija napuštena." + }, + "defaultCollection": { + "message": "Zadana Zbirka" + }, + "getHelp": { + "message": "Potraži pomoć" + }, + "getApps": { + "message": "Preuzmi aplikacije" + }, + "loggedInAs": { + "message": "Prijavljeni kao" + }, + "eventLogs": { + "message": "Zapisnici o događajima" + }, + "people": { + "message": "Ljudi" + }, + "policies": { + "message": "Smjernice" + }, + "singleSignOn": { + "message": "Jedinstvena prijava (SSO)" + }, + "editPolicy": { + "message": "Uredi smjernice" + }, + "groups": { + "message": "Grupe" + }, + "newGroup": { + "message": "Nova grupa" + }, + "addGroup": { + "message": "Dodaj grupu" + }, + "editGroup": { + "message": "Uredi grupu" + }, + "deleteGroupConfirmation": { + "message": "Sigurno želiš obrisati ovu grupu?" + }, + "removeUserConfirmation": { + "message": "Sigurno želiš ukoniti ovog korisnika?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Upozorenje! Ovaj korisnik koristi konektor za ključ kako bi upravljao svojim šifriranjem. Uklanjanjem korisnika iz tvoje organizacije korisnički će račun biti trajno onemogućen. Ovu opciju nije moguće opozvati. Sigurno želiš nastaviti?" + }, + "externalId": { + "message": "Vanjski Id" + }, + "externalIdDesc": { + "message": "Vanjski id se može koristiti kao referenca ili vezati ovaj resurs na vanjski sustav kao što je npr. direktorij korisnika." + }, + "accessControl": { + "message": "Kontrola pristupa" + }, + "groupAccessAllItems": { + "message": "Ova grupa može pristupiti i urediti sve stavke." + }, + "groupAccessSelectedCollections": { + "message": "Ova grupa može pristupiti samo određenim zbirkama." + }, + "readOnly": { + "message": "Samo za čitanje" + }, + "newCollection": { + "message": "Nova zbirka" + }, + "addCollection": { + "message": "Dodaj zbirku" + }, + "editCollection": { + "message": "Uredi zbirku" + }, + "deleteCollectionConfirmation": { + "message": "Sigurno želiš obrisati ovu zbirku?" + }, + "editUser": { + "message": "Uredi korisnika" + }, + "inviteUser": { + "message": "Pozovi korisnika" + }, + "inviteUserDesc": { + "message": "Pozovi novog korisnika u svoju organizaciju unosom njihove Bitwarden adrese e-pošte. Ako još nemaju Bitwarden račun, biti će pozvani da stvore novi." + }, + "inviteMultipleEmailDesc": { + "message": "Možeš pozvati do $COUNT$ korisnika odjednom. Odvoji adrese e-pošte zarezima.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Ovaj korisnik upotrebljava prijavu u dva koraka za zaštitu svog računa." + }, + "userAccessAllItems": { + "message": "Ovaj korisnik može pristupiti i urediti sve stavke." + }, + "userAccessSelectedCollections": { + "message": "Ovaj korisnik može pristupiti samo određenim zbirkama." + }, + "search": { + "message": "Traži" + }, + "invited": { + "message": "Pozvan" + }, + "accepted": { + "message": "Prihvaćeno" + }, + "confirmed": { + "message": "Potvrđeno" + }, + "clientOwnerEmail": { + "message": "e-pošta vlasnika klijenta" + }, + "owner": { + "message": "Vlasnik" + }, + "ownerDesc": { + "message": "Korisnik s najvišim pravima pristupa koji može upravljati svim mogućnostima tvoje organziacije." + }, + "clientOwnerDesc": { + "message": "Korisnik bi trebao biti neovisan o davatelju. Ako se davatelja razdvoji od organizacije, ovaj će korisnik zadržati vlasništvo nad organizacijom." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admini mogu pristupiti i upravljati svim stavkama, zbirkama i korisnicima u organizaciji." + }, + "user": { + "message": "Korisnik" + }, + "userDesc": { + "message": "Obični korisnik s pristupom dodijeljenim zbirkama u tvojoj organizaciji." + }, + "manager": { + "message": "Upravitelj" + }, + "managerDesc": { + "message": "Upravitelji mogu pristupiti i upravljati dodijeljenim zbirkama u tvojoj organizaciji." + }, + "all": { + "message": "Sve" + }, + "refresh": { + "message": "Osvježi" + }, + "timestamp": { + "message": "Vremenska oznaka" + }, + "event": { + "message": "Događaj" + }, + "unknown": { + "message": "Nepoznato" + }, + "loadMore": { + "message": "Učitaj više" + }, + "mobile": { + "message": "Mobitel", + "description": "Mobile app" + }, + "extension": { + "message": "Proširenje", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web trezor" + }, + "loggedIn": { + "message": "Prijava" + }, + "changedPassword": { + "message": "Promijenjena lozinka računa." + }, + "enabledUpdated2fa": { + "message": "Omogućena/ažurirana prijava u dva koraka." + }, + "disabled2fa": { + "message": "Onemogućena prijava u dva koraka." + }, + "recovered2fa": { + "message": "Račun oporavljen prijavom u dva koraka." + }, + "failedLogin": { + "message": "Prijava pogrešnom lozinkom neuspješna." + }, + "failedLogin2fa": { + "message": "Prijava pogrešnom prijavom u dva koraka neuspješna." + }, + "exportedVault": { + "message": "Izvezeni trezor." + }, + "exportedOrganizationVault": { + "message": "Izvezen organizacijski trezor." + }, + "editedOrgSettings": { + "message": "Uređene mogućnosti organizacije." + }, + "createdItemId": { + "message": "Stvorena stavka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Uređena stavka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Stavka $ID$ poslana u smeće.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Stavka $ID$ je premještena u Organizaciju.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Gledana stavka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Gledana lozinka za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Gledano skriveno polje za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Gledan kontrolni broj za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Kopirana lozinka za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Kopirano skriveno polje za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kopiran kontrolni broj za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-ispuna za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Stvorena zbirka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Uređena zbirka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Izbrisana zbirka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Uređene smjernice $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Stvorena grupa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Uređena grupa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Izbrisana grupa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Uklonjen korisnik $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Stvoren privitak za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Izbrisan privitak za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Uređene zbirke za stavku $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Pozvan korisnik $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Potvrđen korisnik $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Uređen korisnik $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Uređene grupe za korisnika $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Odspojen SSO za korisnika $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organizacija $ID$ stvorena.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organizacija $ID$ dodana.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organizacija $ID$ uklonjena.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Pristupljeno trezoru organizacije $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Uređaj" + }, + "view": { + "message": "Prikaz" + }, + "invalidDateRange": { + "message": "Neispravan raspon datuma." + }, + "errorOccurred": { + "message": "Došlo je do pogreške." + }, + "userAccess": { + "message": "Korisnički pristup" + }, + "userType": { + "message": "Vrsta korisnika" + }, + "groupAccess": { + "message": "Grupni pristup" + }, + "groupAccessUserDesc": { + "message": "Uredi grupe kojima ovaj korisnik pripada." + }, + "invitedUsers": { + "message": "Pozvan/i korisnik/ci." + }, + "resendInvitation": { + "message": "Ponovno slanje pozivnice" + }, + "resendEmail": { + "message": "Ponovno slanje e-pošte" + }, + "hasBeenReinvited": { + "message": "$USER$ je ponovno pozvan.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Autoriziraj" + }, + "confirmUser": { + "message": "Autoriziraj korisnika" + }, + "hasBeenConfirmed": { + "message": "$USER$ je autoriziran.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Autoriziraj korisnike" + }, + "usersNeedConfirmed": { + "message": "Postoje korisnici koji su potvrdili svoj poziv, ali neće imati pristup organizaciji sve dok ih se ne autorizira." + }, + "startDate": { + "message": "Datum početka" + }, + "endDate": { + "message": "Datum završetka" + }, + "verifyEmail": { + "message": "Potvrdi adresu e-pošte" + }, + "verifyEmailDesc": { + "message": "Potvrdi e-poštu svojeg računa za otključavanje svih značajki." + }, + "verifyEmailFirst": { + "message": "Adresa e-pošte tvojeg računa mora biti potvrđena." + }, + "checkInboxForVerification": { + "message": "U primljenoj e-pošti nalazi se veza za potvrdu." + }, + "emailVerified": { + "message": "Adresa e-pošte je provjerena." + }, + "emailVerifiedFailed": { + "message": "Ne možeš potvrditi svoju e-poštu? Pošalji novu poruku." + }, + "emailVerificationRequired": { + "message": "Potrebna je potvrda e-pošte" + }, + "emailVerificationRequiredDesc": { + "message": "Za korištenje ove značajke, potrebna je ovjera e-pošte." + }, + "updateBrowser": { + "message": "Ažuriraj preglednik" + }, + "updateBrowserDesc": { + "message": "Koristiš nepodržani preglednik. Web trezor možda neće ispravno raditi." + }, + "joinOrganization": { + "message": "Pridruži se organizaciji" + }, + "joinOrganizationDesc": { + "message": "Primljen je poziv za pridruživanje gore navedenoj organizaciji. Za prihvaćanje poziva potrebno je prijaviti se na svoj postojeći Bitwarden račun ili stvoriti novi." + }, + "inviteAccepted": { + "message": "Poziv prihvaćen" + }, + "inviteAcceptedDesc": { + "message": "Pristup organizaciji biti će ti omogućen čim administrator potvrdi tvoje članstvo, o čemu ćemo te obavijestiti e-poštom." + }, + "inviteAcceptFailed": { + "message": "Nije moguće prihvatiti poziv. Zamoli administratora organizacije da ti pošalje novi poziv." + }, + "inviteAcceptFailedShort": { + "message": "Nije moguće prihvatiti poziv. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Zapamti adresu e-pošte" + }, + "recoverAccountTwoStepDesc": { + "message": "Ako ne možeš pristupiti računu koristeći svoje redovne metode prijave u dva koraka, možeš iskoristiti svoj kôd za oporavak kako bi se u potpunosti onesposobili svi pružatelji prijave u dva koraka na tvojem računu." + }, + "recoverAccountTwoStep": { + "message": "Oporavi račun prijave u dva koraka" + }, + "twoStepRecoverDisabled": { + "message": "Prijava u dva koraka je onemogućena na tvojem računu." + }, + "learnMore": { + "message": "Saznaj više" + }, + "deleteRecoverDesc": { + "message": "Unesi svoju e-poštu za oporavak i brisanje svojeg računa." + }, + "deleteRecoverEmailSent": { + "message": "Ako tvoj račun postoji, poslali smo ti e-poštu s daljnjim uputama." + }, + "deleteRecoverConfirmDesc": { + "message": "Zatraženo je brisanje tvojeg Bitwarden računa. Klikni u nastavku za potvrdu brisanja računa." + }, + "myOrganization": { + "message": "Moja organizacija" + }, + "deleteOrganization": { + "message": "Izbriši organizaciju" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organizacija izbrisana" + }, + "organizationDeletedDesc": { + "message": "Organizacija i svi njeni povezani podaci su izbrisani." + }, + "organizationUpdated": { + "message": "Organizacija izmijenjena" + }, + "taxInformation": { + "message": "Porezne informacije" + }, + "taxInformationDesc": { + "message": "Možete unijeti svoj porezni broj (VAT ID) i/ili adresu za prikaz na fakturama." + }, + "billingPlan": { + "message": "Paket", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Promijeni paket", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Unesi podatke u nastavku za nadogradnju svog računa na drugi paket. Provjeri imaš li na svom računu aktivno neko sredstvo plaćanja.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktura br. $NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Prikaz fakture" + }, + "downloadInvoice": { + "message": "Preuzmi fakturu" + }, + "verifyBankAccount": { + "message": "Potvrdi broj računa u banci" + }, + "verifyBankAccountDesc": { + "message": "Izvršili smo dvije male uplate na račun u banci (možda će trebati 1 do 2 radna dana da budu vidljive). Unesi iznose ovih uplata za potvrdu broja računa." + }, + "verifyBankAccountInitialDesc": { + "message": "Plaćanje putem računa u banci dostupno je samo korisnicima u SAD-u. Biti će potrebno potvrditi broj računa u banci. Izvršiti ćemo dvije male uplate na račun u banci (možda će trebati 1 do 2 radna dana da budu vidljive). Unesi iznose ovih uplata za potvrdu broja računa." + }, + "verifyBankAccountFailureWarning": { + "message": "Neuspješna provjera računa u banci rezultirati će propuštenim plaćanjem i prekidom pretplate." + }, + "verifiedBankAccount": { + "message": "Račun u banci potvrđen." + }, + "bankAccount": { + "message": "Račun u banci" + }, + "amountX": { + "message": "Iznos $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number (SAD)", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Broj računa" + }, + "accountHolderName": { + "message": "Vlasnik računa" + }, + "bankAccountType": { + "message": "Vrsta računa" + }, + "bankAccountTypeCompany": { + "message": "Pravna osoba" + }, + "bankAccountTypeIndividual": { + "message": "Fizička osoba" + }, + "enterInstallationId": { + "message": "Unesi id instalacije" + }, + "limitSubscriptionDesc": { + "message": "Ograničite broj korisnika u pretplati. Kada je broj dosegnut, neće biti moguće pozvati nove korisnike." + }, + "maxSeatLimit": { + "message": "Najveći dozvoljeni broj korisnika (opcionalno)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Najveći dozvoljeni trošak licenci" + }, + "addSeats": { + "message": "Dodaj licence", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Ukloni licence", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Promjene na pretplati rezultirati će proporcionalnim izmjenama ukupnog zaduženja. Ako novopozvanim korisnikom prekoračiš broj licenci, odmah će biti naplaćeno proporcionalno uvećanje za nove korisnike." + }, + "subscriptionUserSeats": { + "message": "Tvoja pretplata uključuje $COUNT$ korisnika.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Ograniči pretplatu (opcionalno)" + }, + "subscriptionSeats": { + "message": "Broj licenci" + }, + "subscriptionUpdated": { + "message": "Preplata ažurirana" + }, + "additionalOptions": { + "message": "Dodatne postavke" + }, + "additionalOptionsDesc": { + "message": "Za dodatnu pomoć u upravljanju pretplatom, kontaktiraj korisničku podršku." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Promjene na pretplati rezultirati će proporcionalnim izmjenama ukupnog zaduženja. Ako novopozvanim korisnikom prekoračiš broj licenci, odmah će biti naplaćeno proporcionalno uvećanje za nove korisnike." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Promjene na pretplati rezultirati će proporcionalnim izmjenama ukupnog zaduženja. Ako novopozvanim korisnikom prekoračiš broj licenci, odmah će biti naplaćeno proporcionalno uvećanje za nove korisnike dok se ne dosegne krajnji broj licenci ($MAX$).", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Nije moguće pozvati više od $COUNT$ korisnika bez nadogradnje plana.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Nije moguće pozvati više od $COUNT$ korisnika bez promjene plana. Kontaktiraj podršku za nadogradnju.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Tvoja pretplata dozvoljava najviše $COUNT$ korisnika. Tvoj plan je sponzoriran i naplaćuje se vanjskoj organizaciji.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Promjene na pretplati rezultirati će proporcionalnim izmjenama ukupnog zaduženja. Nećeš moći pozvati više od $COUNT$ novih korisnika bez prethodne promjene broja licenci.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Licence za dodati" + }, + "seatsToRemove": { + "message": "Licence za ukloniti" + }, + "seatsAddNote": { + "message": "Dodavanje korisničkih licenci rezultirati će povećanjem ukupnog zaduženja i trenutnim terećenjem spremljenog sredstva plaćanja. Iznos će biti umanjen proporcionalno ostatku tekućeg obračunskog razdoblja." + }, + "seatsRemoveNote": { + "message": "Uklanjanje korisničkih licenci rezultirati će smanjenjem ukupnog zaduženja. Iznos će biti umanjen proporcionalno ostatku tekućeg razdoblja i iskorišten kao umanjenje kod sljedeće naplate." + }, + "adjustedSeats": { + "message": "Prilagođeno $AMOUNT$ korisničkih licenci.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Ključ ažuriran" + }, + "updateKeyTitle": { + "message": "Ažuriraj ključ" + }, + "updateEncryptionKey": { + "message": "Ažuriraj ključ za šifriranje" + }, + "updateEncryptionKeyShortDesc": { + "message": "Trenutno koristiš zastarjeli način šifriranja." + }, + "updateEncryptionKeyDesc": { + "message": "Prešli smo na korištenje duljih ključeva za šifriranje koji pružaju bolju zaštitu kao i pristup novim uslugama. Ažuriranje ključa za šifriranje je brzo i jednostavno. Samo unesi svoju glavnu lozinku. Ova nadogradnja će uskoro postati obavezna." + }, + "updateEncryptionKeyWarning": { + "message": "Nakon ažuriranja svojeg ključa za šifriranje, obavezno se trebaš odjaviti i ponovno prijaviti u sve Bitwarden aplikacije koje trenutno koristiš (npr. mobilna aplikacija, proširenje preglednika, ...). Ako se ne odjaviš i ponovno prijaviš (čime se preuzima tvoj novi ključ za šifriranje) može doći do oštećenja spremljenih podataka. Pokušati ćemo te automatski odjaviti, no, to bi možda moglo potrajati." + }, + "updateEncryptionKeyExportWarning": { + "message": "Svi spremljeni šifrirani izvozi također će postati nevažeći." + }, + "subscription": { + "message": "Pretplata" + }, + "loading": { + "message": "Učitavanje" + }, + "upgrade": { + "message": "Nadogradnja" + }, + "upgradeOrganization": { + "message": "Nadogradi organizaciju" + }, + "upgradeOrganizationDesc": { + "message": "Ova značajka nije dostupna organizacijama koje koriste besplatnu uslugu. Prebaci se na plaćeni paket za pristup ovoj i drugim značajkama." + }, + "createOrganizationStep1": { + "message": "Stvori organizaciju: 1. korak" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Prije stvaranja svoje organizacije, moraš napraviti svoj privatni, besplatni račun." + }, + "refunded": { + "message": "Refundirano" + }, + "nothingSelected": { + "message": "Ništa nije odabrano." + }, + "acceptPolicies": { + "message": "Označavanjem ove kućice slažete se sa sljedećim:" + }, + "acceptPoliciesError": { + "message": "Uvjeti korištenja i Pravila privatnosti nisu prihvaćeni." + }, + "termsOfService": { + "message": "Uvjeti korištenja" + }, + "privacyPolicy": { + "message": "Pravila privatnosti" + }, + "filters": { + "message": "Filtri" + }, + "vaultTimeout": { + "message": "Istek trezora" + }, + "vaultTimeoutDesc": { + "message": "Odaberi kada će isteći trezor i koja će se radnja izvršiti." + }, + "oneMinute": { + "message": "1 minuta" + }, + "fiveMinutes": { + "message": "5 minuta" + }, + "fifteenMinutes": { + "message": "15 minuta" + }, + "thirtyMinutes": { + "message": "30 minuta" + }, + "oneHour": { + "message": "1 sat" + }, + "fourHours": { + "message": "4 sata" + }, + "onRefresh": { + "message": "Pri osvježavanju preglednika" + }, + "dateUpdated": { + "message": "Ažurirano", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Lozinka ažurirana", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organizacija je onemogućena." + }, + "licenseIsExpired": { + "message": "Licenca je istekla." + }, + "updatedUsers": { + "message": "Ažurirani korisnici" + }, + "selected": { + "message": "Odabrano" + }, + "ownership": { + "message": "Vlasništvo" + }, + "whoOwnsThisItem": { + "message": "Tko je vlasnik ove stavke?" + }, + "strong": { + "message": "Jaka", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Dobra", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Slaba", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Vrlo slaba", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Dodatno rotiraj ključ za šifriranje mojeg računa" + }, + "rotateEncKeyTitle": { + "message": "Rotiraj ključ za šifriranje" + }, + "rotateEncKeyConfirmation": { + "message": "Sigurno želiš rotirati ključ za šifriranje svojeg računa?" + }, + "attachmentsNeedFix": { + "message": "Ova stavka ima stare privitke koje je potrebno popraviti." + }, + "attachmentFixDesc": { + "message": "Ovo je stari privitak kojeg je potrebno popraviti. Klikni ovdje za više informacija." + }, + "fix": { + "message": "Popravi", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Postoje stari privitci u tvom trezoru koje je potrebno popraviti prije rotacije ključa za šifriranje." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Kako bi se osgurala cjelovitost tvojih ključeva za šifriranje, provjeri korisnikovu jedinstvenu frazu prije nastavka.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Ne pitaj više za potvrdu jedinstvene fraze (Nije pozeljno)", + "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." + }, + "free": { + "message": "Besplatno", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API ključ" + }, + "apiKeyDesc": { + "message": "API ključ se može koristiti za autentifikaciju prema javnom Bitwarden API-ju." + }, + "apiKeyRotateDesc": { + "message": "Rotacija API ključa poništiti će prethodno važeći ključ. Možeš napraviti rotaciju svog API ključa ako misliš da treutni ključ više nije siguran za upotrebu." + }, + "apiKeyWarning": { + "message": "API ključ ima potpuni pristup organizaciji. Treba ga držati tajnim." + }, + "userApiKeyDesc": { + "message": "API ključ se može koristiti za autentifikaciju u Bitwarden CLI-ju." + }, + "userApiKeyWarning": { + "message": "API ključ je zamjenska mogućnost autentifikacije. Treba ga držati tajnim." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 vjerodajnice klijenta", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Pogledaj API ključ" + }, + "rotateApiKey": { + "message": "Rotiraj API ključ" + }, + "selectOneCollection": { + "message": "Moraš odabrati barem jednu zbirku." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nismo uspjeli teretiti karticu. Molimo, pogledaj i plati sljedeću neplaćenu fakturu." + }, + "inAppPurchase": { + "message": "Kupnja putem aplikacije" + }, + "cannotPerformInAppPurchase": { + "message": "Nije moguće izvršiti ovu radnju dok se koristi način plaćanja putem aplikcaije." + }, + "manageSubscriptionFromStore": { + "message": "Upravljanje pretplatom moguće je samo iz dućana u kojem je napravljena kupnja iz aplikacije." + }, + "minLength": { + "message": "Najmanja duljina" + }, + "clone": { + "message": "Kloniraj" + }, + "masterPassPolicyDesc": { + "message": "Postavi smjernice sigurnosti koju glavna lozinka mora zadovoljiti." + }, + "twoStepLoginPolicyDesc": { + "message": "Zahtijevaj da korisnici uključe prijavu u dva koraka na svojim osobnim računima." + }, + "twoStepLoginPolicyWarning": { + "message": "Članovi organizacije koji nisu Vlasnici ili Administratori i nemaju uključenu prijavu u dva koraka na svojim osobnim računima biti će uklonjeni iz organizacije i primiti će o tome obavijest e-poštom." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Član si organizacije koja zahtijeva uključenu prijavu u dva koraka na tvojem računu. Ako onemogućiš sve pružatelje prijave u dva koraka, automatski ćeš biti uklonjen/a iz organizacije." + }, + "passwordGeneratorPolicyDesc": { + "message": "Postavi smjernice sigurnosti koju generirana lozinka mora zadovoljiti." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedna ili više organizacijskih smjernica utječe na postavke generatora." + }, + "masterPasswordPolicyInEffect": { + "message": "Jedna ili više organizacijskih smjernica 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." + }, + "minimumNumberOfWords": { + "message": "Najmanji broj riječi" + }, + "defaultType": { + "message": "Zadana vrsta" + }, + "userPreference": { + "message": "Korisnički definirano" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Pretraži smeće" + }, + "permanentlyDelete": { + "message": "Trajno izbriši" + }, + "permanentlyDeleteSelected": { + "message": "Trajno izbriši odabrano" + }, + "permanentlyDeleteItem": { + "message": "Trajno izbriši stavku" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Želiš li zaista trajno izbrisati ovu stavku?" + }, + "permanentlyDeletedItem": { + "message": "Trajno izbrisana stavka" + }, + "permanentlyDeletedItems": { + "message": "Trajno izbrisane stavke" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Odabrano je $COUNT$ stavke/i za trajno brisanje. Sigurno želiš trajno izbrisati sve ove stavke?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Trajno izbrisana stavka $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Vrati" + }, + "restoreSelected": { + "message": "Vrati odabrano" + }, + "restoreItem": { + "message": "Vrati stavku" + }, + "restoredItem": { + "message": "Stavka vraćena" + }, + "restoredItems": { + "message": "Stavke vraćene" + }, + "restoreItemConfirmation": { + "message": "Želiš li sigurno vratiti ovu stavku?" + }, + "restoreItems": { + "message": "Vrati stavke" + }, + "restoreSelectedItemsDesc": { + "message": "Odabrano je $COUNT$ stavke/i za vraćanje. Sigurno želiš vratiti sve ove stavke?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Stavka vraćena $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Sakrij lozinke" + }, + "countryPostalCodeRequiredDesc": { + "message": "Ovaj podatak nam je potreban samo za izračun poreza i računovosdtvo." + }, + "includeVAT": { + "message": "Uključi podatke o PDV-u (neobavezno)" + }, + "taxIdNumber": { + "message": "OIB/porezni broj" + }, + "taxInfoUpdated": { + "message": "Podaci oporezu ažurirani." + }, + "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." + }, + "identifier": { + "message": "Identifikator" + }, + "organizationIdentifier": { + "message": "Identifikator organizacije" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Prijavi se koristeći SSO portal tvoje tvrtke. Za nastavak unesi identifikator organizacije." + }, + "enterpriseSingleSignOn": { + "message": "Jedinstvena prijava na razini tvrtke (SSO)" + }, + "ssoHandOff": { + "message": "Sada možeš zatvoriti ovu karticu i nastaviti koristiti proširenje." + }, + "includeAllTeamsFeatures": { + "message": "Sve značajke Team, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO autentifikacija putem SAML2.0 i OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Smjernice za tvrtke" + }, + "ssoValidationFailed": { + "message": "SSO provjera nije uspjela" + }, + "ssoIdentifierRequired": { + "message": "Potreban je identifikator organizacije." + }, + "unlinkSso": { + "message": "Odspoji SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Spoji SSO" + }, + "singleOrg": { + "message": "Isključiva organizacija" + }, + "singleOrgDesc": { + "message": "Onemogući korisnicima da se pridruže drugim organizacijama." + }, + "singleOrgBlockCreateMessage": { + "message": "Tvoja organizacija ima pravilo koje ti ne dozvoljava pridruživanje drugim organizacijama. Molimo kontaktiraj administratora svoje organizacije ili se prijavi s privatnim Bitwarden računom." + }, + "singleOrgPolicyWarning": { + "message": "Članovi organizacije koji nisu Vlasnici ili Administratori, a već su članovi neke druge organizacije, biti će uklonjeni iz tvoje organizacije." + }, + "requireSso": { + "message": "SSO autentifikacija" + }, + "requireSsoPolicyDesc": { + "message": "Zahtijeva da se korisnici prijave koristeći tvrtkin SSO." + }, + "prerequisite": { + "message": "Preduvjet" + }, + "requireSsoPolicyReq": { + "message": "Pravilo Isključive organizacije mora biti uključeno prije aktivacije ovog pravila." + }, + "requireSsoPolicyReqError": { + "message": "Pravilo Isključive organizacije nije omogućeno." + }, + "requireSsoExemption": { + "message": "Vlasnici i Administratori organizacije nisu obuhvaćeni za provedbu ovog pravila." + }, + "sendTypeFile": { + "message": "Datoteka" + }, + "sendTypeText": { + "message": "Tekst" + }, + "createSend": { + "message": "Stvori novi Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Izbriši Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "whatTypeOfSend": { + "message": "Koja je ovo vrsta Send-a?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletionDate": { + "message": "Datum brisanja" + }, + "deletionDateDesc": { + "message": "Send će biti trajno izbrisan navedenog datuma.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Datum isteka" + }, + "expirationDateDesc": { + "message": "Ako je određeno, pristup ovom Sendu će isteći navedenog dana u navedeno vrijeme.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Najveći proj pristupanja" + }, + "maxAccessCountDesc": { + "message": "Ako je uključeno, korisnici neće moći pristupiti ovom Sendu nakon što se postigne najveći broj pristupanja.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Trenutni broj pristupanja" + }, + "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." + }, + "disabled": { + "message": "Onemogućeno" + }, + "sendLink": { + "message": "Veza na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopiraj vezu na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Ukloni lozinku" + }, + "removedPassword": { + "message": "Lozinka uklonjena" + }, + "removePasswordConfirmation": { + "message": "Sigurno želiš ukloniti lozinku?" + }, + "hideEmail": { + "message": "Sakrij moju adresu e-pošte od primatelja." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Svi Sendovi" + }, + "maxAccessCountReached": { + "message": "Dostignut najveći broj pristupanja", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Čeka brisanje" + }, + "expired": { + "message": "Isteklo" + }, + "searchSends": { + "message": "Pretraži Sendove", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Ovaj Send je zaštićen lozinkom. Unesi lozinku za nastavak.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Ne znaš lozinku? Upitaj pošiljatelja za lozinku za pristup ovom Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Ovaj je Send zadano skriven. Moguće mu je promijeniti vidljivost.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Preuzmi datoteku" + }, + "sendAccessUnavailable": { + "message": "Send kojem pokušavaš pristupiti više ne postoji ili više nije dostupan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Datoteka povezana s ovim Sendom nije pronađena.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Nema Sendova.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Pristup u nuždi" + }, + "emergencyAccessDesc": { + "message": "Odobri i upravljaj pristupu u nuždi za pouzdane kontakte. Oni, u slučaju nužde, mogu vidjeti ili preuzeti tvoj račun. Posjeti našu stranicu pomoći za više detalja kako funkcionira dijeljene na principu nula-znanja." + }, + "emergencyAccessOwnerWarning": { + "message": "Vlasnik si jedne ili više organizacija. Ako dozvoliš preuzimanje računa kontaktu u nuždi, moći će koristiti sva tvoja dopuštenja kao Vlasnika nakon preuzimanja." + }, + "trustedEmergencyContacts": { + "message": "Pouzdani kontakti u nuždi" + }, + "noTrustedContacts": { + "message": "Još nije dodan niti jedan kontakt u nuždi. Za početak, pozovi pouzdani kontakt." + }, + "addEmergencyContact": { + "message": "Dodaj kontakt u nuždi" + }, + "designatedEmergencyContacts": { + "message": "Određen kao kontakt u nuždi" + }, + "noGrantedAccess": { + "message": "Nitko vas još nije odredio kao kontakt u nuždi." + }, + "inviteEmergencyContact": { + "message": "Pozovi kontakt u nuždi" + }, + "editEmergencyContact": { + "message": "Uredi kontakt u nuždi" + }, + "inviteEmergencyContactDesc": { + "message": "Pozovi novi kontakt u nuždi unosom njihove Bitwarden adrese e-pošte. Ako još nemaju Bitwarden račun, biti će pozvani da stvore novi." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Pokrenut pristup u nuždi" + }, + "emergencyAccessRecoveryApproved": { + "message": "Odobren pristup u nuždi" + }, + "viewDesc": { + "message": "Može vidjeti sve stavke u tvom trezoru." + }, + "takeover": { + "message": "Preuzimanje" + }, + "takeoverDesc": { + "message": "Može resetirati tvoj račun novom glavnom lozinkom." + }, + "waitTime": { + "message": "Vrijeme čekanja" + }, + "waitTimeDesc": { + "message": "Potrebni vremenski period prije automatskog odobravanja pristupa." + }, + "oneDay": { + "message": "1 dan" + }, + "days": { + "message": "$DAYS$ dana", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Pozvani korisnik." + }, + "acceptEmergencyAccess": { + "message": "Pozvani ste da postanete kontakt u nuždi za našeg gore navedenog korisnika. Za prihvat poziva, prijavite se u Bitwarden. Ako još nemate Bitwarden račun, možete jednostavno stvoriti novi." + }, + "emergencyInviteAcceptFailed": { + "message": "Nije moguće prihvatiti poziv. Zamolite korisnika da pošalje novi poziv." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Nije moguće prihvatiti poziv. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Možeš pristupiti opcijama u nuždi za ovog korisnika nakon potvrde tvog identiteta o čemu ćemo te obavijestiti e-poštom." + }, + "requestAccess": { + "message": "Zatraži pristup" + }, + "requestAccessConfirmation": { + "message": "Sigurno želiš zatražiti pristup u nuždi? Pristup će biti odobren nakon isteka roka od $WAITTIME$ dan(a) ili kad drugi korisnik ručo odobri zahtjev.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Pristup u nuždi je zatražen za $USER$. Obavijesitti ćemo te e-poštem kada će biti moguće nastaviti.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "ODOBRI" + }, + "reject": { + "message": "Odbij" + }, + "approveAccessConfirmation": { + "message": "Sigurno želiš odobriti pristup u nuždi svojem računu? Korisnik $USER$ će imati sljedeću mogućnost na tovm računu: $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Pristup u nuždi odobren." + }, + "emergencyRejected": { + "message": "Pristup u nuždi odbijen" + }, + "passwordResetFor": { + "message": "Lozinka za $USER$ resetirana. Sada se možeš prijaviti novom lozinkom.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Osobno vlasništvo" + }, + "personalOwnershipPolicyDesc": { + "message": "Zahtijevaj korisnike spremanje stavki trezora u organizaciju tako što će ukloniti opciju osobnog vlasništva." + }, + "personalOwnershipExemption": { + "message": "Vlasnici i Administratori organizacije nisu obuhvaćeni za provedbu ovog pravila." + }, + "personalOwnershipSubmitError": { + "message": "Pravila tvrtke onemogućuju spremanje stavki u osobni trezor. Promijeni vlasništvo stavke na tvrtku i odaberi dostupnu Zbirku." + }, + "disableSend": { + "message": "Onemogući Send" + }, + "disableSendPolicyDesc": { + "message": "Ne dozvoli korisnicima stvaranje ili uređivanje Sendova. Brisanje postojećeg Senda je dozvoljeno.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organizacijski korisnici koji mogu mijenjati pravila tvrtke nisu obuhvaćeni za provedbu ovog pravila." + }, + "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." + }, + "sendOptions": { + "message": "Opcije Senda", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Postavljanje opcija za stvaranje i mijenjanje Sendova.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organizacijski korisnici koji mogu mijenjati pravila tvrtke nisu obuhvaćeni za provedbu ovog pravila." + }, + "disableHideEmail": { + "message": "Ne dopusti skrivanje e-pošte kod stvaranja Senda.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Organizacijske smjernice trenutno na snazi:" + }, + "sendDisableHideEmailInEffect": { + "message": "Korisnicima nije dopušteno skrivati adresu e-pošte od primatelja kod stvaranja ili uređivanja Senda.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Izmijenjena polica $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Cijena paketa" + }, + "estimatedTax": { + "message": "Procjena poreza" + }, + "custom": { + "message": "Prilagođeno" + }, + "customDesc": { + "message": "Omogućuje detaljnije upravljanje korisničkim dozvolama za napredne konfiguracije." + }, + "permissions": { + "message": "Dozvole" + }, + "accessEventLogs": { + "message": "Pristup zapisnicima događaja" + }, + "accessImportExport": { + "message": "Pristup uvozu/izvozu" + }, + "accessReports": { + "message": "Pristup izvještajima" + }, + "missingPermissions": { + "message": "Nedostaju ti potrebna dopuštenja za izvođenje ove radnje." + }, + "manageAllCollections": { + "message": "Upravljanje svim zbirkama" + }, + "createNewCollections": { + "message": "Stvori novu zbirku" + }, + "editAnyCollection": { + "message": "Uredi zbirku" + }, + "deleteAnyCollection": { + "message": "Obriši zbirku" + }, + "manageAssignedCollections": { + "message": "Upravljanje dodijeljenim zbirkama" + }, + "editAssignedCollections": { + "message": "Uredi dodijeljene zbirke" + }, + "deleteAssignedCollections": { + "message": "Obriši dodijeljene zbirke" + }, + "manageGroups": { + "message": "Upravljanje grupama" + }, + "managePolicies": { + "message": "Upravljanje pravilima" + }, + "manageSso": { + "message": "Upravljanje SSO" + }, + "manageUsers": { + "message": "Upravljanje korisnicima" + }, + "manageResetPassword": { + "message": "Upravljanje ponovnim postavljanjem lozinke" + }, + "disableRequiredError": { + "message": "Prije onemogućavanja ovog pravila, potrebno je onemogućiti pravilo $POLICYNAME$.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Pravila organizacije utječu na tvoje mogućnosti vlasništva." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Organizacijsko pravilo onemogućuje uvoz stavki u tvoj osobni trezor." + }, + "personalOwnershipCheckboxDesc": { + "message": "Onemogući osobno vlasnišvo za organizacijske korisnike" + }, + "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." + }, + "sendNameDesc": { + "message": "Nadimak za ovaj 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." + }, + "copySendLinkOnSave": { + "message": "Kopiraj vezu za dijeljenje ovog Senda nakon spremanja." + }, + "sendLinkLabel": { + "message": "Veza na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Pomoću Bitwarden Send jednostavno i sigurno pošalji osjetljive, privremene podatke.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Saznaj više o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Dijeli tekst ili datoteke s bilo kim." + }, + "sendVaultCardLearnMore": { + "message": "Saznaj više", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "pogledaj", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "kako funkcionira", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "ili", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "isprobaj odmah", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "ili", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "registriraj se", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "za isprobavanje.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden korisnik $USER_IDENTIFIER$ je s tobom podijelio", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Bitwarden korisnik koji je stvorio ovaj Send odabrao/la je sakriti svoju e-poštu. Koristi i/ili preuzmi ove podatke samo ako vjeruješ izvoru iz kojeg je primljena ova vezu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Navedeni rok isteka nije valjan." + }, + "deletionDateIsInvalid": { + "message": "Navedeni datum brisanja nije valjan." + }, + "expirationDateAndTimeRequired": { + "message": "Potrebno je unijeti datum i vrijeme isteka." + }, + "deletionDateAndTimeRequired": { + "message": "Potrebno je unijeti datum i vrijeme brisanja." + }, + "dateParsingError": { + "message": "Došlo je do greške kod spremanja vaših datuma isteka i brisanja." + }, + "webAuthnFallbackMsg": { + "message": "Za ovjeru tvoje 2FA, odaberi donju tipku." + }, + "webAuthnAuthenticate": { + "message": "Ovjeri WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn nije podržan u ovom pregledniku." + }, + "webAuthnSuccess": { + "message": "WebAuthn uspješno ovjeren! Možeš zatvoriti ovu karticu." + }, + "hintEqualsPassword": { + "message": "Podsjetnik za lozinku ne može biti isti kao lozinka." + }, + "enrollPasswordReset": { + "message": "Uključi mogućnost ponovnog postavljanja lozinke" + }, + "enrolledPasswordReset": { + "message": "Mogućnost ponovnog postavljanja lozinke je uključena" + }, + "withdrawPasswordReset": { + "message": "Isključi mogućnost ponovnog postavljanja lozinke" + }, + "enrollPasswordResetSuccess": { + "message": "Prijava uspješna!" + }, + "withdrawPasswordResetSuccess": { + "message": "Odjava uspješna!" + }, + "eventEnrollPasswordReset": { + "message": "Korisnik $ID$ ima uključenu mogućnost pomoći za ponovno postavljanje lozinke.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Korisnik $ID$ ima isključenu mogućnost pomoći za ponovno postavljanje lozinke.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Ponovno postavljanje glavne lozinke za korisnika $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Poništi SSO vezu za korisnika $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "Prva prijava korisnika $ID$ koristeći SSO", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Ponovno postavljanje lozinke" + }, + "resetPasswordLoggedOutWarning": { + "message": "Ako nastaviš, biti će zatvorena trenutna sesija za $NAME$, što će zahtijevati ponovnu prijavu. Aktivne sesije na drugim uređajima ostati će aktivne još jedan sat.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "ovaj korisnik" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Jedna ili više organizacijskih smjernica zahtijeva da glavna lozinka ispunjava sljedeće uvjete:" + }, + "resetPasswordSuccess": { + "message": "Uspješno ponovno postalvjena lozinka!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Učlanjenje će administratorima organizacije omogućiti promjenu tvoje glavne lozinke. Sigurno se želiš učlaniti?" + }, + "resetPasswordPolicy": { + "message": "Ponovno postavljanje glavne lozinke" + }, + "resetPasswordPolicyDescription": { + "message": "Dozvoli organizacijskim administratorima ponovno postavljanje glavnih lozniki korisnika." + }, + "resetPasswordPolicyWarning": { + "message": "Korisnici u organizaciji se trebaju ili sami učlaniti ili biti automatski učlanjeni da bi administratori mogli ponovno postavljati njihove lozinke." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatsko učlanjenje" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Svi korisnici će automatski biti učlanjeni u ponovno postavljanje lozinke čim njihov poziv bude prihvaćen." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Postojeći korisnici organizacije neće biti retroaktivno učlanjeni u ponovno postavljanje lozinke. Morati će se sami učlaniti da bi administratori mogli ponovno postaviti njihove glaven lozinke." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Primoraj nove korisnike da budu automatski učlanjeni" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Pravilo ove organizacija automatski će te učlaniti u ponovno postalvjanje lozinke. Učlanjenje će omogućiti administratorima organizacije promjenu tvoje glavne lozinke." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Stavke koje se nalaze u Smeću duže od 30 dana će biti automatski izbrisane." + }, + "trashCleanupWarningSelfHosted": { + "message": "Stavke koje se duže vrijeme nalaze u Smeću će btii automatski obrisane." + }, + "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." + }, + "reinviteSelected": { + "message": "Ponovno slanje pozivnica" + }, + "noSelectedUsersApplicable": { + "message": "Ova radnja nije primjenjiva niti na jednog odabranog korisnika." + }, + "removeUsersWarning": { + "message": "Sigurno želiš ukloniti sljedeće korisnike? Ova radnja može potrajati i nije ga moguće prekinuti ili poništiti." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Odaberi temu za svoj mrežni trezor." + }, + "themeSystem": { + "message": "Koristi temu sustava" + }, + "themeDark": { + "message": "Tamna" + }, + "themeLight": { + "message": "Svijetla" + }, + "confirmSelected": { + "message": "Odabrano potvrđivanje" + }, + "bulkConfirmStatus": { + "message": "Status skupne radnje" + }, + "bulkConfirmMessage": { + "message": "Uspještno potvđeno." + }, + "bulkReinviteMessage": { + "message": "Uspješno ponovno pozvano." + }, + "bulkRemovedMessage": { + "message": "Uspješno uklonjeno" + }, + "bulkFilteredMessage": { + "message": "Isključeno, nije primijenjivo na ovu radnju." + }, + "fingerprint": { + "message": "Otisak prsta" + }, + "removeUsers": { + "message": "Ukloni korisnike" + }, + "error": { + "message": "Greška" + }, + "resetPasswordManageUsers": { + "message": "Upravljanje korisnicima mora također biti uključeno s dozvolom za Upravljanje ponovnim postavljanjem lozinke" + }, + "setupProvider": { + "message": "Postavke davatelja" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Naziv davatelja" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Klijenti" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Servisni korisnik" + }, + "serviceUserDesc": { + "message": "Servisni korisnik može pristupiti i upravljati svim organizacijama." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Davatelj" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Dodaj postojeću organizaciju" + }, + "myProvider": { + "message": "Moj davatelj" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organizacija uspješno dodana davatelju" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Davatelj je onemogućen." + }, + "providerUpdated": { + "message": "Davatelj ažuriran" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Dodaj" + }, + "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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Istek trezora" + }, + "maximumVaultTimeoutDesc": { + "message": "Najveći dozvoljeni istek trezora za sve korisnike." + }, + "maximumVaultTimeoutLabel": { + "message": "Najveći istek trezora" + }, + "invalidMaximumVaultTimeout": { + "message": "Najveći istek trezora nije ispravan." + }, + "hours": { + "message": "sat(i)" + }, + "minutes": { + "message": "min." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Osobni istek trezora" + }, + "vaultTimeoutToLarge": { + "message": "Vrijeme isteka premašuje ograničenje koju je postavila tvoja organizacija." + }, + "disablePersonalVaultExport": { + "message": "Onemogući izvoz osobnog trezora" + }, + "disablePersonalVaultExportDesc": { + "message": "Onemogućuje korisnike da izvezu svoj osobni trezor." + }, + "vaultExportDisabled": { + "message": "Izvoz trezora onemogućen" + }, + "personalVaultExportPolicyInEffect": { + "message": "Jedno ili više pravila organizacija onemogućuje izvoz osobnog trezora." + }, + "selectType": { + "message": "Odaberi vrstu SSO" + }, + "type": { + "message": "Vrsta" + }, + "openIdConnectConfig": { + "message": "Konfiguracija OpenID connect" + }, + "samlSpConfig": { + "message": "Konfiguracija SAML Service Provider" + }, + "samlIdpConfig": { + "message": "Konfiguracija SAML Identity Provider" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "ID klijenta" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Provjeri certifikate" + }, + "idpEntityId": { + "message": "ID entiteta" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 javni certifikat" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Konfiguracija za jedinstvenu prijavu (SSO) je spremljena." + }, + "sponsoredFamilies": { + "message": "Besplatan Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "Vi i vaša obitelj ispunjavate uvjete za besplatne Bitwarden obitelji. Koristite ponudu sa svojom e-poštom kako biste zaštitili svoje podatke čak i kada niste na poslu." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden plan za obitelji uključuje" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium pristup do 6 korisnika" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Dijeljene zbirke za obiteljske tajne" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Upotrijebi kod" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Ponuđena vam je besplatna organizacija Bitwarden Families Plan. Da biste nastavili, morate se prijaviti na račun koji je primio ponudu." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Nije moguće prihvatiti ponudu. Ponovo pošaljite email ponudu sa svog poslovnog računa i pokušajte ponovno." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Nije moguće prihvatiti ponudu. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Prihvatite besplatan Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Besplatna ponuda Bitwarden Families uspješno je iskorištena" + }, + "redeemed": { + "message": "Kod upotrijebljen" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Besplatni obiteljski plan" + }, + "redeemNow": { + "message": "Upotrijebi kod sada" + }, + "recipient": { + "message": "Primatelj" + }, + "removeSponsorship": { + "message": "Ukloni sponzorstvo" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Opozovi" + }, + "emailSent": { + "message": "e-pošta poslana" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponzorstvo uklonjeno" + }, + "ssoKeyConnectorUnavailable": { + "message": "Nije moguće spajanje s konektorom za ključ, pokušaj kasnije." + }, + "keyConnectorUrl": { + "message": "URL konektora za ključ" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Ukloni glavnu lozinku" + }, + "removedMasterPassword": { + "message": "Glavna lozinka uklonjena." + }, + "allowSso": { + "message": "Dopusti jedinstvenu SSO autentifikaciju" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Omogući", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO autentifikaciju", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "kako bi se svi članovi mogli prijaviti sa SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Opcije dešifriranja za članove" + }, + "memberDecryptionPassDesc": { + "message": "Članovi će moći dešifrirati podatke u trezoru koristeći svoje glavne lozinke." + }, + "keyConnector": { + "message": "Konektor za ključ" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "SSO omogućen" + }, + "disabledSso": { + "message": "SSO onemogućen" + }, + "enabledKeyConnector": { + "message": "Konektor za ključ omogućen" + }, + "disabledKeyConnector": { + "message": "Konektor za ključ onemogućen" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Ponuda za sponzorstvo je istekla. Možete izbrisati organizaciju koju ste stvorili kako biste izbjegli naplatu na kraju probnog perioda od 7 dana. U suprotnom možete zatvoriti ovaj upit kako biste zadržali organizaciju i preuzeli odgovornost za naplatu." + }, + "newFamiliesOrganization": { + "message": "Nova obiteljska organizacija" + }, + "acceptOffer": { + "message": "Prihvati ponudu" + }, + "sponsoringOrg": { + "message": "Organizacija sponzor" + }, + "keyConnectorTest": { + "message": "Testiraj" + }, + "keyConnectorTestSuccess": { + "message": "Uspjeh! Konektor za ključ spojen." + }, + "keyConnectorTestFail": { + "message": "Nije moguće spojiti se na konektor za ključ. Provjeri URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Ponuda za sponzorstvo je istekla." + }, + "freeWithSponsorship": { + "message": "BESPLATNO sa sponzorstvom" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json new file mode 100644 index 0000000000..b38a77a006 --- /dev/null +++ b/apps/web/src/locales/hu/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ webes széf", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Milyen típusú elem ez?" + }, + "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ó" + }, + "newPassword": { + "message": "Új jelszó" + }, + "passphrase": { + "message": "Kulcskifejezés" + }, + "notes": { + "message": "Jegyzetek" + }, + "customFields": { + "message": "Egyedi mezők" + }, + "cardholderName": { + "message": "Kártyatulajdonos neve" + }, + "number": { + "message": "Szám" + }, + "brand": { + "message": "Márka" + }, + "expiration": { + "message": "Lejárat" + }, + "securityCode": { + "message": "Biztonsági kód (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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": "Csatolt", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Eltávolítás" + }, + "unassigned": { + "message": "Nincs hozzárendelve" + }, + "noneFolder": { + "message": "Nincs mappa", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Mappa hozzáadása" + }, + "editFolder": { + "message": "Mappa szerkesztése" + }, + "baseDomain": { + "message": "Alap domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "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." + }, + "never": { + "message": "Soha" + }, + "toggleVisibility": { + "message": "Láthatóság váltása" + }, + "toggleCollapse": { + "message": "Összezárás váltás", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Jelszó generálása" + }, + "checkPassword": { + "message": "A jelszóvédelmi állapot 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 érintett egyetlen ismert adatszivárgásban sem. Biztonságos a használata." + }, + "save": { + "message": "Mentés" + }, + "cancel": { + "message": "Mégsem" + }, + "canceled": { + "message": "Megszakítva" + }, + "close": { + "message": "Bezárás" + }, + "delete": { + "message": "Törlés" + }, + "favorite": { + "message": "Kedvenc" + }, + "unfavorite": { + "message": "Nem kedvenc" + }, + "edit": { + "message": "Szerkesztés" + }, + "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" + }, + "searchVault": { + "message": "Keresés a széfben" + }, + "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" + }, + "typeLoginPlural": { + "message": "Bejelentkezések" + }, + "typeCardPlural": { + "message": "Kártyák" + }, + "typeIdentityPlural": { + "message": "Azonosságok" + }, + "typeSecureNotePlural": { + "message": "Biztonságos jegyzetek" + }, + "folders": { + "message": "Mappák" + }, + "collections": { + "message": "Gyűjtemények" + }, + "firstName": { + "message": "Személynév" + }, + "middleName": { + "message": "Középső név" + }, + "lastName": { + "message": "Családnév" + }, + "fullName": { + "message": "Teljes név" + }, + "address1": { + "message": "Cím 1" + }, + "address2": { + "message": "Cím 2" + }, + "address3": { + "message": "Cím 3" + }, + "cityTown": { + "message": "Település" + }, + "stateProvince": { + "message": "Állam/Megye" + }, + "zipPostalCode": { + "message": "Irányítószám" + }, + "country": { + "message": "Ország" + }, + "shared": { + "message": "Megosztott" + }, + "attachments": { + "message": "Mellékletek" + }, + "select": { + "message": "Kijelölés" + }, + "addItem": { + "message": "Elem hozzáadása" + }, + "editItem": { + "message": "Elem szerkesztése" + }, + "viewItem": { + "message": "Elem megtekintése" + }, + "ex": { + "message": "Példa:", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Egyéb" + }, + "share": { + "message": "Megosztás" + }, + "moveToOrganization": { + "message": "Áthelyezés szervezetbe" + }, + "valueCopied": { + "message": "$VALUE$ másolásra került.", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Érték másolása", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Jelszó másolása", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Felhasználónév másolása", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "URI másolása", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Saját széf" + }, + "vault": { + "message": "Széf" + }, + "moveSelectedToOrg": { + "message": "A kiválasztott áthelyezése szervezetbe" + }, + "deleteSelected": { + "message": "Kijelöltek törlése" + }, + "moveSelected": { + "message": "Kijelöltek áthelyezése" + }, + "selectAll": { + "message": "Összes kijelölése" + }, + "unselectAll": { + "message": "Összes kijelölés megszüntetése" + }, + "launch": { + "message": "Indítás" + }, + "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": "A 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." + }, + "addedItem": { + "message": "Az elem hozzáadásra került." + }, + "editedItem": { + "message": "Az elem szerkesztésre került." + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ átkerült $ORGNAME$ szervezethez", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "A kiválasztott elemek átkerültek $ORGNAME$ szervezethez", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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 ezt az elem?" + }, + "deletedItem": { + "message": "Az elem törlésre került." + }, + "deletedItems": { + "message": "Törölt elemek" + }, + "movedItems": { + "message": "Áthelyezett elemek" + }, + "overwritePasswordConfirmation": { + "message": "Biztosan felülírásra kerüljön a jelenlegi jelszó?" + }, + "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." + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Igen" + }, + "no": { + "message": "Nem" + }, + "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": "Elküldés" + }, + "emailAddressDesc": { + "message": "Az email címmel lehet bejelentkezni." + }, + "yourName": { + "message": "Név" + }, + "yourNameDesc": { + "message": "Mi legyen a megszólítá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ése esetén." + }, + "reTypeMasterPass": { + "message": "Mesterjelszó ismételt beírása" + }, + "masterPassHint": { + "message": "Mesterjelszó emlékeztető (nem kötelező)" + }, + "masterPassHintLabel": { + "message": "Mesterjelszó emlékeztető" + }, + "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 megadott két jelszó nem egyezik meg." + }, + "newAccountCreated": { + "message": "A fiók létrehozásra került. Most már be lehet jelentkezni." + }, + "masterPassSent": { + "message": "A mesterjelszó emlékeztetőt tartalmazó email elküldésre került." + }, + "unexpectedError": { + "message": "Váratlan hiba történt." + }, + "emailAddress": { + "message": "Email cím" + }, + "yourVaultIsLocked": { + "message": "A széf zárolásra került. A folytatáshoz meg kell adni a mesterjelszót." + }, + "unlock": { + "message": "Feloldás" + }, + "loggedInAsEmailOn": { + "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." + }, + "lockNow": { + "message": "Zárolás most" + }, + "noItemsInList": { + "message": "Nincsenek megjeleníthető elemek." + }, + "noCollectionsInList": { + "message": "Nincsenek megjeleníthető gyűjtemények." + }, + "noGroupsInList": { + "message": "Nincsenek megjeleníthető csoportok." + }, + "noUsersInList": { + "message": "Nincsenek megjeleníthető felhasználók." + }, + "noEventsInList": { + "message": "Nincsenek megjeleníthető események." + }, + "newOrganization": { + "message": "Új szervezet" + }, + "noOrganizationsList": { + "message": "Még nem tartozunk egyik szervezethez sem. A szervezetek lehetővé teszik az elemek megosztását más felhasználókkal." + }, + "versionNumber": { + "message": "Verzió: $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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és 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." + }, + "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": "Támogatott böngészőt (mint például a Chrome) kell használni és/vagy a böngészők között jobb támogatást nyújtó szolgáltatót kell megadni (mint például egy hitelesítő alkalmazás)." + }, + "twoStepOptions": { + "message": "Kétlépcsős bejelentkezés opciók" + }, + "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-val, 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." + }, + "u2fDesc": { + "message": "Bármilyen FIDO U2F által engedélyezett biztonsági kulcs használata a fiók eléréséhez." + }, + "u2fTitle": { + "message": "FIDO U2F Biztonsági kulcs" + }, + "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." + }, + "webAuthnMigrated": { + "message": "(FIDO-ból áthelyezve)" + }, + "emailTitle": { + "message": "Email cím" + }, + "emailDesc": { + "message": "Az ellenőrző kódok emailben kerülnek elküldésre." + }, + "continue": { + "message": "Folytatás" + }, + "organization": { + "message": "Szervezet" + }, + "organizations": { + "message": "Szervezetek" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Válasszunk egy szervezetet, ahová áthelyezni szeretnénk ezeket az elemeket. A szervezetbe áthelyezés átruházza az elemek tulajdonjogát az adott szervezetre. Az áthelyezés után többé nem leszünk az elemek közvetlen tulajdonosa." + }, + "collectionsDesc": { + "message": "A megosztásra kerülő elem gyűjteményének szerkesztése. Csak az ezeket a gyűjteményeket elérő szervezeti felhasználók látják ezt az elemet." + }, + "deleteSelectedItemsDesc": { + "message": "$COUNT$ elem törlésre lett kijelölve. Biztosan törölni szeretnénk az összes ilyen elemet?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Célmappa kiválasztás $COUNT$ kijelölt elem áthelyezéséhez.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "$COUNT$ elem került kiválasztásra. $MOVEABLE_COUNT$ elem áthelyezhető szervezethezi, $NONMOVEABLE_COUNT$ nem.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Ellenőrző kód (egyszeri időalapú)" + }, + "copyVerificationCode": { + "message": "Ellenőrző kód másolása" + }, + "warning": { + "message": "Figyelmeztetés" + }, + "confirmVaultExport": { + "message": "Széf export 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 valaha a dió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." + }, + "export": { + "message": "Exportálás" + }, + "exportVault": { + "message": "Széf exportálása" + }, + "fileFormat": { + "message": "Fájlformátum" + }, + "exportSuccess": { + "message": "A széfadatok exportálásra kerültek." + }, + "passwordGenerator": { + "message": "Jelszó generátor" + }, + "minComplexityScore": { + "message": "Minimális összetettségi pontszám" + }, + "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" + }, + "regeneratePassword": { + "message": "Jelszó újragenerálása" + }, + "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" + }, + "passwordHistory": { + "message": "Jelszó előzmények" + }, + "noPasswordsInList": { + "message": "Nincsenek listázható jelszavak." + }, + "clear": { + "message": "Kiürítés", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "A fiók frissítésre került." + }, + "changeEmail": { + "message": "Email cím módosítása" + }, + "changeEmailTwoFactorWarning": { + "message": "A folytatás megváltoztatja fiók email címét. Nem változtatja meg a kétlépcsős hitelesítéshez használt email címet. Ez az email cím a kétlépcsős bejelentkezés beállításaiban módosítható." + }, + "newEmail": { + "message": "Új email cím" + }, + "code": { + "message": "Kód" + }, + "changeEmailDesc": { + "message": "Az ellenőrző kód elküldésre került $EMAIL$ email címre. Ellenőrizzük az kódot tartalmazó emailt és adjuk meg azt itt az email cím megváltoztatásához.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "A folytatásban a felhasználó kiléptetésre kerül a jelenlegi munkamenetből, szükséges az ismételt bejelentkezés. Más eszközökön aktív munkamenetek akár egy órán keresztül is aktívak maradhatnak." + }, + "emailChanged": { + "message": "Az email cím megváltozott." + }, + "logBackIn": { + "message": "Ismételten be kell jelentkezni." + }, + "logBackInOthersToo": { + "message": "Ismételten be kell jelentkezni. Ha másik Bitwarden alkalmazásokat használunk, ott is jelentkezzünk ki és ismételten be." + }, + "changeMasterPassword": { + "message": "Mesterjelszó módosítása" + }, + "masterPasswordChanged": { + "message": "A mesterjelszó megváltozott." + }, + "currentMasterPass": { + "message": "Jelenlegi mesterjelszó" + }, + "newMasterPass": { + "message": "Új mesterjelszó" + }, + "confirmNewMasterPass": { + "message": "Új jelszó megerősítése" + }, + "encKeySettings": { + "message": "Kulcs beállítások titkosítása" + }, + "kdfAlgorithm": { + "message": "KDF algoritmus" + }, + "kdfIterations": { + "message": "KDF iterációk" + }, + "kdfIterationsDesc": { + "message": "A magasabb KDF iterációk segíthetnek a megvédeni a mesterjelszót a \"brute force\" jellegű támadásoktól. Javaslunk $VALUE$, vagy magasabb értéket.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "A túl magas KDF iterációk lelassíthatják a lassabb CPU-val rendelkező eszközökön a bejelentkezést a Bitwardenbe (és a lezárást is). Javasoljuk az érték növelését $INCREMENT$ lépéssel és teszteljük azt az összes eszközön.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDF megváltoztatása" + }, + "encKeySettingsChanged": { + "message": "A kulcs beállítás titkosítása megváltozott." + }, + "dangerZone": { + "message": "Veszélyes terület" + }, + "dangerZoneDesc": { + "message": "Óvatosan! Ezeket a műveleteket nem lehet visszaállítani." + }, + "deauthorizeSessions": { + "message": "Munkamenetek hitelesítésének eldobása" + }, + "deauthorizeSessionsDesc": { + "message": "Aggódunk a egy másik eszközön történő bejelentkezés miatt? Az alábbiakban ismertetett módon dobjuk el az összes hitelesítést az összes számítógépen és eszközön. Ez a biztonsági lépés akkor ajánlott, ha korábban nyilvános helyen levő számítógépet használtunk vagy véletlenül mentettünk jelszót egy olyan eszközön, amely nem a sajátunk. Ez a lépés törli az összes korábban megjegyzett kétlépéses bejelentkezési munkamenetet." + }, + "deauthorizeSessionsWarning": { + "message": "A folytatásban s felhasználó kiléptetésre kerül az aktuális munkamenetből, szükséges az ismételt bejelentkezés. Ismételten megjelenik a kétlépcsős bejelentkezés, ha az engedélyezett. Más eszközök aktív munkamenetei akár egy óráig is aktívak maradhatnak." + }, + "sessionsDeauthorized": { + "message": "Az összes munkamenet hitelesítése eldobásra került." + }, + "purgeVault": { + "message": "Széf kitakarítása" + }, + "purgedOrganizationVault": { + "message": "A szervezeti széf kitakarításra került." + }, + "vaultAccessedByProvider": { + "message": "A tárolóhoz a szolgáltató fér hozzá." + }, + "purgeVaultDesc": { + "message": "Az alábbiak szerint törölhetjük a széfben található összes elemet és mappát. Nem kerülnek törlésre azok az elemek,, amelyek egy megosztott szervezethez tartoznak." + }, + "purgeOrgVaultDesc": { + "message": "Folytatás lentebb a szervezeti széf összes elemének törléséhez." + }, + "purgeVaultWarning": { + "message": "A széf kitakarítása végleges. A művelet nem vonható vissza." + }, + "vaultPurged": { + "message": "A széf kitakarításra került." + }, + "deleteAccount": { + "message": "Fiók törlése" + }, + "deleteAccountDesc": { + "message": "A továbbiakban a fiók és összes társított adata törlésre kerül.." + }, + "deleteAccountWarning": { + "message": "A fiók végleges törlése következik. A művelet nem vonható vissza." + }, + "accountDeleted": { + "message": "A fiók törlésre került." + }, + "accountDeletedDesc": { + "message": "A fiók bezárásra került és minden társított adat törölve lett." + }, + "myAccount": { + "message": "Saját fiók" + }, + "tools": { + "message": "Eszközök" + }, + "importData": { + "message": "Adatok importálása" + }, + "importError": { + "message": "Importálási hiba" + }, + "importErrorDesc": { + "message": "Hiba történt az importálni próbált adatokkal. Javítsuk a felsorolt hibákat a forrásfájlban és próbáljuk újra." + }, + "importSuccess": { + "message": "Az adatok sikeresen importálásra kerültek a széfbe." + }, + "importWarning": { + "message": "Adatokat importálunk $ORGANIZATION$ mappába. Az adatok megoszthatók a szervezet tagjaival. Folytatjuk?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Az adatok formázása nem megfelelő. Ellenőrizzük az import fájlt és próbáljuk újra." + }, + "importNothingError": { + "message": "Semmi nem lett importálva." + }, + "importEncKeyError": { + "message": "Hiba történt az exportált fájl visszafejtése során. A titkosítási kulcs nem egyezik meg az adatok exportálásához használt titkosítási kulccsal." + }, + "selectFormat": { + "message": "Válasszuk ki az import fájl formátumát." + }, + "selectImportFile": { + "message": "Válasszuk ki az import fájlt" + }, + "orCopyPasteFileContents": { + "message": "vagy vágólapon vigyük be fájl tartalmat" + }, + "instructionsFor": { + "message": "$NAME$ utasítások", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opciók" + }, + "optionsDesc": { + "message": "A webes széf működésének testreszabása." + }, + "optionsUpdated": { + "message": "Az opciók frissítésre kerültek." + }, + "language": { + "message": "Nyelv" + }, + "languageDesc": { + "message": "A webes széf nyelvének megváltoztatása." + }, + "disableIcons": { + "message": "Webhely ikonok letiltása" + }, + "disableIconsDesc": { + "message": "A webhelyek ikonjai felismerhető ikonként jelennek meg a széf összes eleme mellett." + }, + "enableGravatars": { + "message": "Gravatarok engedélyezése", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Avatar képek használata a gravatar.com webhelyről." + }, + "enableFullWidth": { + "message": "Teljes szélességű elrendezés engedélyezése", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "A webes széf teljes szélességűre tágításának engedélyezése a böngészőablakban." + }, + "default": { + "message": "Alapértelmezett" + }, + "domainRules": { + "message": "Domain szabályok" + }, + "domainRulesDesc": { + "message": "Ha ugyanazokat a bejelentkezési adatokat használjuk több különböző webhely domainen, ezeket \"azonos\"-ként jelölhetjük meg. A \"Globális\" domainek a Bitwarden által már létrehozottak." + }, + "globalEqDomains": { + "message": "Globális azonos domainek" + }, + "customEqDomains": { + "message": "Egyedi azonos domainek" + }, + "exclude": { + "message": "Kizárás" + }, + "include": { + "message": "Bevonás" + }, + "customize": { + "message": "Testreszabás" + }, + "newCustomDomain": { + "message": "Új egyedi domain" + }, + "newCustomDomainDesc": { + "message": "A domainek listája vesszővel elválasztva. Csak \"alap\" domainek engedélyezettek. Ne adjunk meg aldomaineket. Például \"google.com\" legyen \"www.google.com\" helyett. Megadható \"androidapp://csomag.nev forma android alkalmazás társításához ás webhely domainekhez." + }, + "customDomainX": { + "message": "Egyedi domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "A domainek frissítésre kerültek." + }, + "twoStepLogin": { + "message": "Kétlépcsős bejelentkezés" + }, + "twoStepLoginDesc": { + "message": "A fiók biztosítása kiegészítő lépéssel bejelentkezéskor." + }, + "twoStepLoginOrganizationDesc": { + "message": "Kétlépéses bejelentkezés szükséges a szervezet felhasználói számára a szolgáltatók szervezeti szintű konfigurálásával." + }, + "twoStepLoginRecoveryWarning": { + "message": "A kétlépcsős bejelentkezés engedélyezése véglegesen kizárhatja a felhasználót a Bitwarden fiókból. A helyreállítási kód lehetővé teszi a fiókjához való hozzáférést abban az esetben, ha már nem tudjuk használni a szokásos kétlépcsős bejelentkezési szolgáltatást (pl. készülék elvesztése). A Bitwarden támogatás nem tud segíteni abban az esetben, ha elveszítjük a hozzáférést a fiókhoz. Célszerű leírni vagy kinyomtatni a helyreállítási kódot és azt biztonságos helyen tartani." + }, + "viewRecoveryCode": { + "message": "Helyreállító kód megtekintése" + }, + "providers": { + "message": "Szolgáltatók", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Engedélyezés" + }, + "enabled": { + "message": "Engedélyezve" + }, + "premium": { + "message": "Prémium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Prémium tagság" + }, + "premiumRequired": { + "message": "Prémium funkció szükséges" + }, + "premiumRequiredDesc": { + "message": "A funkció használatához prémium tagság szükséges." + }, + "youHavePremiumAccess": { + "message": "Már rendelkezünk prémium tagsággal." + }, + "alreadyPremiumFromOrg": { + "message": "Már rendelkezünk a prémium funkciókkal, mert egy szervezet tagjai vagyunk." + }, + "manage": { + "message": "Kezelés" + }, + "disable": { + "message": "Letiltás" + }, + "twoStepLoginProviderEnabled": { + "message": "Ez a kétlépéses bejelentkezés szolgáltató már engedélyezett a fiókon." + }, + "twoStepLoginAuthDesc": { + "message": "A kétlépéses bejelentkezési beállítások módosításához meg kell adni a mesterjelszót." + }, + "twoStepAuthenticatorDesc": { + "message": "Kövesük a következő lépéseket a kétlépéses bejelentkezés beállításához egy hitelesítő alkalmazással:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Kétlépéses hitelesítő alkalmazás letöltése" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Szükség van egy kétlépéses hitelesítő alkalmazásra? Töltsük le a következők egyikét." + }, + "iosDevices": { + "message": "iOS eszközök" + }, + "androidDevices": { + "message": "Android eszközök" + }, + "windowsDevices": { + "message": "Windows eszközök" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Ezek az alkalmazások ajánlottak, de más hitelesítő alkalmazások is működnek." + }, + "twoStepAuthenticatorScanCode": { + "message": "Ezt a kódot kell beolvasni a hitelesítő alkalmazással." + }, + "key": { + "message": "Kulcs" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Adjuk meg az alkalmazásból kapott 6 számjegyű ellenőrző kódot." + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Ha ezt egy másik eszközhöz is hozzá kell adni, lentebb található a hitelesítő alkalmazás QR kódja (vagy kulcsa)." + }, + "twoStepDisableDesc": { + "message": "Biztosan szeretnénk kapcsolni ezt a kétlépcsős bejelentkezés szolgáltatót?" + }, + "twoStepDisabled": { + "message": "A kétlépcsős azonosító szolgáltatás kikapcsolásra került." + }, + "twoFactorYubikeyAdd": { + "message": "Új YubiKey hozzáadása a fiókhoz." + }, + "twoFactorYubikeyPlugIn": { + "message": "Helyezzük be a YubiKey eszközt a számítógép USB portjába." + }, + "twoFactorYubikeySelectKey": { + "message": "Válasszuk ki az első üres YubiKey beviteli mezőt lentebb." + }, + "twoFactorYubikeyTouchButton": { + "message": "Érintsük meg a YubiKey gombját." + }, + "twoFactorYubikeySaveForm": { + "message": "Az űrlap mentése." + }, + "twoFactorYubikeyWarning": { + "message": "Platform korlátozások miatt nem lehetséges minden Bitwarden alkalmazásban YubiKey eszközt használni. Engedélyezzünk egy másik kétlépcsős bejelentkezés szolgáltatót, hogy hozzáférhessünk a fiókhoz akkor is, ha a YubiKey nem használható. Támogatott platformok:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Webes széf, asztali alkalmazás, CLI, és minden egyéb böngésző bővítmény olyan USB porttal rendelkező eszközön, amely elfogadja a YubiKey eszközt." + }, + "twoFactorYubikeySupportMobile": { + "message": "Az NFC szolgáltatással vagy adatporttal ellátott eszközök mobil alkalmazásai elfogadhatják a YubiKey eszközt." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F kulcs $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Kulcs $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC támogatás" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Az egyik kulcs támogatja az NFC-t." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Ha van NFC támogatott YubiKey eszköz (pl. YubiKey NEO), akkor a mobileszközök jelzik az NFC elérhetőség észlelését." + }, + "yubikeysUpdated": { + "message": "A YubiKey eszközök frissítésre kerültek." + }, + "disableAllKeys": { + "message": "Összes kulcs letiltása" + }, + "twoFactorDuoDesc": { + "message": "A Bitwarden alkalmazás információjának megadása a Duo Admin panelről." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integrációs kulcs" + }, + "twoFactorDuoSecretKey": { + "message": "Titkos kulcs" + }, + "twoFactorDuoApiHostname": { + "message": "API kiszolgálónév" + }, + "twoFactorEmailDesc": { + "message": "Kövessük a következő lépéseket a kétlépcsős bejelentkezés beállításához email segítségével:" + }, + "twoFactorEmailEnterEmail": { + "message": "Adjuk meg azt az email címet, ahol az ellenőrző kódokat fogadjuk." + }, + "twoFactorEmailEnterCode": { + "message": "Adjuk meg az emailbőll kapott 6 számjegyű ellenőrző kódot." + }, + "sendEmail": { + "message": "Email küldés" + }, + "twoFactorU2fAdd": { + "message": "Adjunk meg egy FIDO U2F biztonsági kulcsot a fiókhoz." + }, + "removeU2fConfirmation": { + "message": "Biztosan eltávolításra kerüljön a biztonsági kulcs?" + }, + "twoFactorWebAuthnAdd": { + "message": "Adjunk meg egy Webauthn biztonsági kulcsot a felhasználói fiókhoz" + }, + "readKey": { + "message": "Kulcs beolvasása" + }, + "keyCompromised": { + "message": "A kulcs megsérült." + }, + "twoFactorU2fGiveName": { + "message": "Adjunk egy megfelelő nevet a biztonsági kulcsnak az azonosításhoz." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Helyezzük be a biztonsági kulcsot a számítógép USB portjába ás kattintsunk a \"Kulcs beolvasása\" gombra." + }, + "twoFactorU2fTouchButton": { + "message": "Ha biztonsági kulcsnak van gombja, érintsük meg azt." + }, + "twoFactorU2fSaveForm": { + "message": "Az űrlap mentése." + }, + "twoFactorU2fWarning": { + "message": "A platform korlátozások miatt nem lehet minden Bitwarden alkalmazásban FIDO U2F-t használni. Célszerű engedélyezni egy másik kétlépcsős bejelentkezés szolgáltatót a fiók eléréséhez akkor, ha a FIDO U2F nem használható. Támogatott platformok:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web széf és böngésző kiegészítők asztali gépen / laptopon engedélyezett U2F böngészővel (Chrome, Opera, Vivaldi, vagy Firefox bekapcsolt FIDO U2F-fel)." + }, + "twoFactorU2fWaiting": { + "message": "Várakozás a biztonsági kulcs gombjának megérintésére." + }, + "twoFactorU2fClickSave": { + "message": "Kattintás lentebb a \"Mentés\" gombra a kétlépcsős bejelentkezés biztonsági kulcsának engedélyezéséhez." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Probléma lépett fel a biztonsági kulcs olvasásakor. Próbáljuk újra." + }, + "twoFactorWebAuthnWarning": { + "message": "A platform korlátozások miatt nem lehetséges minden Bitwarden alkalmazásban YubiKey eszközt használni. Engedélyezzünk egy másik kétlépcsős bejelentkezés szolgáltatót, hogy hozzáférhessünk a fiókhoz akkor is, ha a YubiKey nem használható. Támogatott platformok:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web széf és böngésző kiegészítők asztali gépen / laptopon engedélyezett U2F böngészővel (Chrome, Opera, Vivaldi, vagy Firefox bekapcsolt FIDO U2F-fel)." + }, + "twoFactorRecoveryYourCode": { + "message": "Bitwarden kétlépcsős bejelentkezés helyreállító kód" + }, + "twoFactorRecoveryNoCode": { + "message": "Még nem lett engedélyezve kétlépcsős bejelentkezés szolgáltató. A kétlépcsős bejelentkezés szolgáltató engedélyezése után visszatérhetünk ide a helyreállító kódért." + }, + "printCode": { + "message": "Kód nyomtatása", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Jelentések" + }, + "reportsDesc": { + "message": "Az alábbi jelentésekre kattintva azonosítsuk és zárjuk le a webes kiókjaink biztonsági hiányosságait." + }, + "unsecuredWebsitesReport": { + "message": "Nem-biztonságos webhelyek jelentés" + }, + "unsecuredWebsitesReportDesc": { + "message": "A http:// sémájú nem-biztonságos webhelyek használata veszélyes lehet. Ha a webhely engedi, mindig használuk a https:// sémát a kapcsolat titkosítására." + }, + "unsecuredWebsitesFound": { + "message": "Nem-biztonságos webhelyek találhatók." + }, + "unsecuredWebsitesFoundDesc": { + "message": "$COUNT$ elem található a széfben nem-biztonságos URI-val. Ezeket URI sémáját célszerű módosítani https://-re.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "A széfben nincs nem-biztonságos URI-val rendelkező elem." + }, + "inactive2faReport": { + "message": "2FA jelentés kikapcsolása" + }, + "inactive2faReportDesc": { + "message": "A kétlépcsős hitelesítés (2FA) egy fontos biztonsági beállítás, amely biztosítja a fiókokat. Ha egy webhely felkínálja ezt, célszerű mindig engedélyezni a kétlépcsős hitelesítést." + }, + "inactive2faFound": { + "message": "2FA nélküli bejelentkezések találhatók." + }, + "inactive2faFoundDesc": { + "message": "$COUNT$ olyan webhelyet találtunk a széfben, amely nincs kétlépcsős hitelesítéssel konfigurálva (a 2fa.directory adatbázisa alapján). Ezen fiókok további védelme érdekében, javasolt a kétlépcsős hitelesítés használata.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "A széfben nincs hiányzó kétlépcsős hitelesítés konfigurációval rendelkező webhely." + }, + "instructions": { + "message": "Utasítások" + }, + "exposedPasswordsReport": { + "message": "Kiszivárgott jelszavak jelentés" + }, + "exposedPasswordsReportDesc": { + "message": "A kiszivárgott jelszavak olyan jelszavak, amelyek ismert adatsértések miatt nyilvánosságra kerültek vagy a sötét interneten hackerek értékesítettek azokat." + }, + "exposedPasswordsFound": { + "message": "Kiszivárgott jelszavak találhatók." + }, + "exposedPasswordsFoundDesc": { + "message": "$COUNT$ elem található a széfben, amelyek érintve voltak ismert adatszivárgásban. Célszerű új jelszavakra lecserélni ezeket.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Nem található a széfben ismert adatszivárgásban érintett jelszó." + }, + "checkExposedPasswords": { + "message": "Kiszivárgott jelszavak ellenőrzése" + }, + "exposedXTimes": { + "message": "$COUNT$ alkalommal szivárgott ki", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Gyenge jelszavak jelentés" + }, + "weakPasswordsReportDesc": { + "message": "A gyenge jelszavakat könnyen megfejthetik hackerek és jelszótöréshez használt eszközök. A Bitwarden jelszógenerátor segít erős jelszót készíteni." + }, + "weakPasswordsFound": { + "message": "Gyenge jelszavak találhatók." + }, + "weakPasswordsFoundDesc": { + "message": "$COUNT$ gyenge jelszó van a széfben. Célszerű lenne ezeket lecserélni erősebb jelszóra.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Egyik elemnél sincsenek gyenge jelszavak." + }, + "reusedPasswordsReport": { + "message": "Újrahasznált jelszavak jelentés" + }, + "reusedPasswordsReportDesc": { + "message": "Ha használatban levő szolgáltatást feltörtek, ugyanannak a jelszónak a használata máshol lehetővé teszi a hackereknek a hozzáférés elérését több webes fióknál is. Fontos, hogy egyedi jelszavakat használjunk minden fiókhoz vagy szolgáltatáshoz." + }, + "reusedPasswordsFound": { + "message": "Újrahasznált jelszavak találhatók." + }, + "reusedPasswordsFoundDesc": { + "message": "$COUNT$ újrahasznált jelszó van a széfben. Változtassuk meg ezeket egyedi értékűre.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "A széfben nincsenek újrahasznált jelszóval rendelkező bejelentkezések." + }, + "reusedXTimes": { + "message": "$COUNT$ alkalommal újrafelhasználva", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Adatszivárgás jelentés" + }, + "breachDesc": { + "message": "Adatszivárgásnak hívják azokat az incidenseket, amelyek során a webhelyek adataihoz illegálisan férnek hozzá hackerek és az így megszerzett adatokat nyilvánosságra hozzák. Ellenőrizzük a kompromittálódott adatok típusait (email cím, jelszó, hitelkártya adatok, stb.) és hajtsuk végre a megfelelő műveleteket, ilyen a jelszócsere." + }, + "breachCheckUsernameEmail": { + "message": "Ellenőriztük a használatban levő felhasználóneveket vagy email címeket." + }, + "checkBreaches": { + "message": "Szivárgás ellenőrzés" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ nem található egyik ismert adatszivárgásban sem.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Jó hírek", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ $COUNT$ különböző webes adatszivárgásban megtalálható.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Kiszivárgott fiókok találhatók." + }, + "compromisedData": { + "message": "Sérült adatok" + }, + "website": { + "message": "Webhely" + }, + "affectedUsers": { + "message": "Érintett felhasználók" + }, + "breachOccurred": { + "message": "Adatszivárgás történt." + }, + "breachReported": { + "message": "Az adatszivárgás jelentésre került." + }, + "reportError": { + "message": "Hiba történt a jelentés betöltése közben. Próbáljuk újra." + }, + "billing": { + "message": "Számlázás" + }, + "accountCredit": { + "message": "Fiók hitelkeret", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Számla egyenleg", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Hitelkeret hozzáadása", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Összeg", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "A feltöltött hitelkeret megjelenik a fiókban a fizetés teljes feldolgozása után. Néhány fizetési mód késhet és hosszabb időt is igénybe vehet." + }, + "makeSureEnoughCredit": { + "message": "Ellenőrizzük, hogy a fióknak elég hitelkerete van a vásárláshoz. Ha nincs elég keret, akkor az alapértelmezett fizetési mód kerül használatba a különbségnél. Hitelkeretet a Számlázás oldalon adhatunk hozzá." + }, + "creditAppliedDesc": { + "message": "A fiók hitelkeret vásárlásra használható. A rendelkezésre álló keret automatikusan ehhez a fiókhoz generálódó számlákra kerül alkalmazásra." + }, + "goPremium": { + "message": "Váltás Prémiumra", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Megtörtént az áttérés a Prémium verzióra." + }, + "premiumUpgradeUnlockFeatures": { + "message": "A fiók átállítása prémium tagságra és sok kiegészítő lehetőség feloldása." + }, + "premiumSignUpStorage": { + "message": "1 GB titkosított tárhely a fájlmellékleteknek." + }, + "premiumSignUpTwoStep": { + "message": "További olyan kétlépcsős bejelentkezési opciók mint a YubiKey, FIDO U2F és Duo." + }, + "premiumSignUpEmergency": { + "message": "Sürgősségi hozzáférés" + }, + "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élszolgálat." + }, + "premiumSignUpFuture": { + "message": "Minden jövőbeli prémium funkció. Hamarosan jön még több!" + }, + "premiumPrice": { + "message": "Mindez csak $PRICE$ /év.", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Kiegészítők" + }, + "premiumAccess": { + "message": "Prémium hozzáférés" + }, + "premiumAccessDesc": { + "message": "Prémium hozzáférés adható a szervezet összes tagjának $PRICE$ /$INTERVAL$ összegért.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Kiegészítő tárhely (GB)" + }, + "additionalStorageGbDesc": { + "message": "További # GB" + }, + "additionalStorageIntervalDesc": { + "message": "Az előfizetői díjcsomag $SIZE$ titkosított tárhelyet tartalmaz. További tárhellyel bővíthető $PRICE$ /GB /$INTERVAL$ összegben.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Összegzés" + }, + "total": { + "message": "Összesen" + }, + "year": { + "message": "év" + }, + "month": { + "message": "hónap" + }, + "monthAbbr": { + "message": "hó.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "A fizetési mód azonnal, ezután évente kerül ráterhelésre. Bármikor lemondható." + }, + "paymentCharged": { + "message": "A fizetési mód azonnal, ezután $INTERVAL$ időszakonként kerül ráterhelésre. Bármikor lemondható.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "A csomagod 7 napos ingyenes próbaidőszakot tartalmaz. A fizetési módját az időszak végéig nem terheljük. A csomag bármikor lemondható." + }, + "paymentInformation": { + "message": "Fizetési információ" + }, + "billingInformation": { + "message": "Számlázási adatok" + }, + "creditCard": { + "message": "Hitelkártya" + }, + "paypalClickSubmit": { + "message": "Kattintás a PayPal gombra a PayPal fiókba bejelentkezéshez, ezután kattintás a Beküldés gombra a folytatáshoz." + }, + "cancelSubscription": { + "message": "Előfizetés megszüntetése" + }, + "subscriptionCanceled": { + "message": "Az előfizetés törlésre került." + }, + "pendingCancellation": { + "message": "Függő törlés" + }, + "subscriptionPendingCanceled": { + "message": "Az előfizetés törlésre lett kijelölve az aktuális számlázási időszak végéig." + }, + "reinstateSubscription": { + "message": "Előfizetés visszaállítása" + }, + "reinstateConfirmation": { + "message": "Biztosan eltávolításra kerüljön a függőben levő törlés kérés és visszaállításra kerüljön az előfizetés?" + }, + "reinstated": { + "message": "Az előfizetés visszaállításra került." + }, + "cancelConfirmation": { + "message": "Biztosan törlésre kerüljön? A számlázási időszak végén az összes előfizetési hozzáférés elveszik." + }, + "canceledSubscription": { + "message": "Az előfizetés törlésre került." + }, + "neverExpires": { + "message": "Nincs lejárat" + }, + "status": { + "message": "Állapot" + }, + "nextCharge": { + "message": "Következő terhelés" + }, + "details": { + "message": "Részletek" + }, + "downloadLicense": { + "message": "Licensz letöltése" + }, + "updateLicense": { + "message": "Licensz frissítése" + }, + "updatedLicense": { + "message": "A licensz frissítésre került." + }, + "manageSubscription": { + "message": "Előfizetés kezelése" + }, + "storage": { + "message": "Tárhely" + }, + "addStorage": { + "message": "Tárhely hozzáadása" + }, + "removeStorage": { + "message": "Tárhely eltávolítása" + }, + "subscriptionStorage": { + "message": "Az előfizetéshez összesen $MAX_STORAGE$ GB titkosított tárhely tartozik. Jelenleg $USED_STORAGE$ GB van használatban.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Fizetési mód" + }, + "noPaymentMethod": { + "message": "Nincs fizetési mód beállítva." + }, + "addPaymentMethod": { + "message": "Fizetési mód hozzáadása" + }, + "changePaymentMethod": { + "message": "Fizetési mód módosítása" + }, + "invoices": { + "message": "Számlák" + }, + "noInvoices": { + "message": "Nincsenek számlák." + }, + "paid": { + "message": "Fizetve", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Nincs fizetve", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Tranzakciók", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Nincsenek tranzakciók." + }, + "chargeNoun": { + "message": "Terhelés", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Visszatérítés", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "A kivonaton minden terhelés $STATEMENT_NAME$ néven jelenik meg.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Hozzáadandó tárhely GB mennyiség" + }, + "gbStorageRemove": { + "message": "Eltávolítandó tárhely GB mennyiség" + }, + "storageAddNote": { + "message": "A tárhely bővítés megjelenik a számlaösszesítőben és azonnal terheli a fizetési módot. Az első díj az aktuális számlázási időszak időarányos fennmaradó részére kerül számlázásra." + }, + "storageRemoveNote": { + "message": "A tárhely eltávolítás módosítja a számlázási összegeket, amelyeket jóváírásként számítanak be a következő számlázási díjhoz." + }, + "adjustedStorage": { + "message": "A módosított tárhely mérete $AMOUNT$ GB.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Ügyfélszolgálat elérése" + }, + "updatedPaymentMethod": { + "message": "A fizetési mód frissítésre került." + }, + "purchasePremium": { + "message": "Prémium vásárlása" + }, + "licenseFile": { + "message": "Licenszfájl" + }, + "licenseFileDesc": { + "message": "A licenszfájl elnevezése ehhez hasonló: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "A fiók prémium tagságira frissítéséhez fel kell tölteni egy érvényes licenszfájlt." + }, + "uploadLicenseFileOrg": { + "message": "Saját tárolt szervezet létrehozásához feltölteni kell egy érvényes licenszfájlt." + }, + "accountEmailMustBeVerified": { + "message": "Ellenőrizni kell a fiókhoz tartozó email címet." + }, + "newOrganizationDesc": { + "message": "A szervezetek lehetővé teszik a széf részeinek megosztását másokkal, valamint egy adott entitással kapcsolatos olyan felhasználók kezelését mint például egy család, kis csapat vagy nagyvállalat." + }, + "generalInformation": { + "message": "Általános információk" + }, + "organizationName": { + "message": "Szervezet neve" + }, + "accountOwnedBusiness": { + "message": "Ez a fiók egy vállalkozás tulajdonában van." + }, + "billingEmail": { + "message": "Számlázási email cím" + }, + "businessName": { + "message": "Vállalkozás neve" + }, + "chooseYourPlan": { + "message": "Díjcsomag választás" + }, + "users": { + "message": "Felhasználók" + }, + "userSeats": { + "message": "Felhasználói helyek" + }, + "additionalUserSeats": { + "message": "Kiegészítő felhasználói helyek" + }, + "userSeatsDesc": { + "message": "Felhasználói helyek száma" + }, + "userSeatsAdditionalDesc": { + "message": "A díjcsomag $BASE_SEATS$ felhasználói helyet tartalmaz. További felhasználókat havi $SEAT_PRICE$/felhasználó/hónap áron lehet felvenni.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Mennyi felhasználói helyre van szükséged? A felhasználói helyeket később szükség esetén bővítheted." + }, + "planNameFree": { + "message": "Ingyenes", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Tesztelésre vagy személyes felhasználóknál megosztás $COUNT$ egyéb felhasználóval.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Családok" + }, + "planDescFamilies": { + "message": "Személyes használatra, családtagokkal és ismerősökkel történő megosztásra." + }, + "planNameTeams": { + "message": "Csoportok" + }, + "planDescTeams": { + "message": "Vállalkozásoknak és más szervezeti csoportoknak." + }, + "planNameEnterprise": { + "message": "Vállalatok" + }, + "planDescEnterprise": { + "message": "Vállalkozásoknak és más nagy szervezeteknek." + }, + "freeForever": { + "message": "Örökre ingyenes" + }, + "includesXUsers": { + "message": "$COUNT$ felhasználót tartalmaz", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "További felhasználók" + }, + "costPerUser": { + "message": "$COST$/felhasználó", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "$COUNT$ felhasználóra korlátozva (az aktuálissal együtt)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "$COUNT$ gyűjteményre korlátozva", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Hozzáadás és megosztás legfeljebb $COUNT$ felhasználóval", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Hozzáadás és megosztás legfeljebb korlátlan felhasználóval" + }, + "createUnlimitedCollections": { + "message": "Korlátlan gyűjtemény létrehozása" + }, + "gbEncryptedFileStorage": { + "message": "1 GB titkosított fájl tárhely.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Saját tárolás (opcionális)" + }, + "usersGetPremium": { + "message": "A felhasználók hozzáférést kapnak a prémium tagság funkcióihoz." + }, + "controlAccessWithGroups": { + "message": "Felhasználó hozzáférés vezérlése csoportokkal." + }, + "syncUsersFromDirectory": { + "message": "A felhasználók és csoportok szinkronizálása könyvtárból." + }, + "trackAuditLogs": { + "message": "Felhasználói műveletek nyomon követése elemző naplózással." + }, + "enforce2faDuo": { + "message": "2FA Duo erőltetése" + }, + "priorityCustomerSupport": { + "message": "Elsőbbségi felhasználói támogatás" + }, + "xDayFreeTrial": { + "message": "$COUNT$ ingyenes nap van még, bármikor megszakítható.", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Havi" + }, + "annually": { + "message": "Évente" + }, + "basePrice": { + "message": "Alapár" + }, + "organizationCreated": { + "message": "A szervezet létrehozásra került." + }, + "organizationReadyToGo": { + "message": "A szervezet használatra kész." + }, + "organizationUpgraded": { + "message": "A szervezet felminősítésre került." + }, + "leave": { + "message": "Kilépés" + }, + "leaveOrganizationConfirmation": { + "message": "Biztosan kilépünk ebből a szervezetből?" + }, + "leftOrganization": { + "message": "Megtörtént a kilépés a szervezetből." + }, + "defaultCollection": { + "message": "Alapértelmezett gyűjtemény" + }, + "getHelp": { + "message": "Segítségkérés" + }, + "getApps": { + "message": "Alkalmazások letöltése" + }, + "loggedInAs": { + "message": "Bejelentkezve mint" + }, + "eventLogs": { + "message": "Eseménynapló" + }, + "people": { + "message": "Emberek" + }, + "policies": { + "message": "Szabályok" + }, + "singleSignOn": { + "message": "Egyszeri bejelentkezés" + }, + "editPolicy": { + "message": "Szabály szerkesztése" + }, + "groups": { + "message": "Csoportok" + }, + "newGroup": { + "message": "Új csoport" + }, + "addGroup": { + "message": "Csoport hozzáadása" + }, + "editGroup": { + "message": "Csoport szerkesztése" + }, + "deleteGroupConfirmation": { + "message": "Biztosan törlésre kerüljön ez a csoport?" + }, + "removeUserConfirmation": { + "message": "Biztosan eltávolításra kerüljön ez a felhasználó?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Figyelem! Ennek a felhasználónak kulcskapcsolóra van szüksége a titkosítás kezeléséhez. Ha eltávolítjuk ezt a felhasználót a szervezetből, azzal véglegesen letiltjuk a fiókját. Ez a művelet nem visszavonható. Folytatás?" + }, + "externalId": { + "message": "Külső azonosító" + }, + "externalIdDesc": { + "message": "A külső azonosító hivatkozásként használható, vagy ahhoz, hogy ezt az erőforrást egy külső rendszerhez, például felhasználói könyvtárhoz kapcsoljuk." + }, + "accessControl": { + "message": "Hozzáférés vezérlés" + }, + "groupAccessAllItems": { + "message": "Ez a csoport minden elemhez hozzáfér és módosíthatja azokat." + }, + "groupAccessSelectedCollections": { + "message": "Ez a csoport csak a kiválasztott gyűjteményekhez fér hozzá." + }, + "readOnly": { + "message": "Csak olvasható" + }, + "newCollection": { + "message": "Új gyűjtemény" + }, + "addCollection": { + "message": "Gyűjtemény hozzáadása" + }, + "editCollection": { + "message": "Gyűjtemény szerkesztése" + }, + "deleteCollectionConfirmation": { + "message": "Biztosan törlésre kerüljön ez a gyűjtemény?" + }, + "editUser": { + "message": "Felhasználó szerkesztése" + }, + "inviteUser": { + "message": "Felhasználó meghívása" + }, + "inviteUserDesc": { + "message": "Új felhasználó meghívása a szervezetéhez a Bitwarden fiók e-mail címének megadásával. Ha még nem rendelkezik Bitwarden-fiókkal, felkérjük új fiók létrehozására.\n" + }, + "inviteMultipleEmailDesc": { + "message": "Egymástól vesszővel elválasztott email címek megadásával egyszerre akár $COUNT$ felhasználó meghívható.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Ez a felhasználó kétlépcsős bejelentkezést használ fiókja védelmére." + }, + "userAccessAllItems": { + "message": "Ez a felhasználó minden elemhez hozzáfér és módosítani tudja azokat." + }, + "userAccessSelectedCollections": { + "message": "Ez a felhasználó csak a kiválasztott gyűjteményekhez fér hozzá." + }, + "search": { + "message": "Keresés" + }, + "invited": { + "message": "Meghívott" + }, + "accepted": { + "message": "Elfogadva" + }, + "confirmed": { + "message": "Megerősítve" + }, + "clientOwnerEmail": { + "message": "Ügyféltulajdonos e-mail cím" + }, + "owner": { + "message": "Tulajdonos" + }, + "ownerDesc": { + "message": "A legmagasabb hozzáféréssel rendelkező felhasználó kezelheti a szervezet összes lehetőségét." + }, + "clientOwnerDesc": { + "message": "Ennek a felhasználónak függetlennek kell lennie a szolgáltatótól. Ha a Szolgáltató nincs kapcsolatban a szervezettel, akkor ez a felhasználó tartja fenn a szervezet tulajdonjogát." + }, + "admin": { + "message": "Adminisztrátor" + }, + "adminDesc": { + "message": "Az adminisztrátorok hozzáférhetnek a szervezet összes eleméhez, gyűjteményéhez és felhasználójához, valamint kezelhetik azokat." + }, + "user": { + "message": "Felhasználó" + }, + "userDesc": { + "message": "Normál felhasználó a szervezeti gyűjtemények elérésével." + }, + "manager": { + "message": "Menedzser" + }, + "managerDesc": { + "message": "A menedzserek hozzáférhetnek a szervezet összes gyűjteményéhez, valamint kezelhetik azokat." + }, + "all": { + "message": "Összes" + }, + "refresh": { + "message": "Frissítés" + }, + "timestamp": { + "message": "Időbélyeg" + }, + "event": { + "message": "Esemény" + }, + "unknown": { + "message": "Ismeretlen" + }, + "loadMore": { + "message": "Továbbiak betöltése" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Bővítmény", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Asztali", + "description": "Desktop app" + }, + "webVault": { + "message": "Webes széf" + }, + "loggedIn": { + "message": "Megtörtént a bejelentkezés." + }, + "changedPassword": { + "message": "A fiók jelszava megváltozott." + }, + "enabledUpdated2fa": { + "message": "A kétlépcsős bejelentkezés bekapcsolásra/frissítésre került." + }, + "disabled2fa": { + "message": "A kétlépcsős bejelentkezés kikapcsolásra került." + }, + "recovered2fa": { + "message": "38/5000\nA fiók visszaállításra került a kétlépcsős bejelentkezésről." + }, + "failedLogin": { + "message": "A bejelentkezési kísérlet hibás jelszó miatt meghiúsult." + }, + "failedLogin2fa": { + "message": "A bejelentkezés meghiúsult hibás kétlépcsős bejelentkezés miatt." + }, + "exportedVault": { + "message": "A széf exportálásra került." + }, + "exportedOrganizationVault": { + "message": "A szervezeti széf exportálásra került." + }, + "editedOrgSettings": { + "message": "A szervezeti beállítások módosításra kerültek." + }, + "createdItemId": { + "message": "$ID$ azonosítójú elem létrehozásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "$ID$ azonosítójú elem módosításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "$ID$ azonosítójú elemtörlésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "$ID$ elem átkerült egy szervezethez.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "$ID$ azonosítójú elem megtekintésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "$ID$ azonosítójú elem jelszava megtekintésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "$ID$ azonosítójú elem rejhtett mezője megtekintésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "$ID$ azonosítójú elem biztonsági kódja megtekintésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "$ID$ azonosítójú elem jelszava másolásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "$ID$ azonosítójú elem rejtett mezője másolásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "$ID$ azonosítójú elem biztonsági kódja másolásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "$ID$ azonosítójú elem automatikusan kitöltésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "$ID$ azonosítójú gyűjtemény létrehozásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "$ID$ azonosítójú gyűjtemény módosításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "$ID$ azonosítójú gyűjtemény törlésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "$ID$ szabály szerkesztésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "$ID$ azonosítójú csoport létrehozásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "$ID$ azonosítójú csoport módosításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "$ID$ azonosítójú csoport törlésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "$ID$ azonosítójú felhasználó eltávolításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "$ID$ azonosítójú elem melléklete létrehozásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "$ID$ azonosítójú elem melléklete törlésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "$ID$ azonosítójú elem gyűjteménye módosításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "$ID$ azonosítójú felhasználó meghívásra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "$ID$ azonosítójú felhasználó megerősítésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "$ID$ azonosítójú felhasználó módosításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "$ID$ azonosítójú felhasználó csoportjai módosításra kerültek.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO szétkapcsolva $ID$ felhasználónál.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Létrehozott szervezet: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Hozzáadott szervezet: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Eltávolított szervezet: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Hozzáfért $ID$ szervezeti széf.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Eszköz" + }, + "view": { + "message": "Megtekintés" + }, + "invalidDateRange": { + "message": "Az időintervallum érvénytelen." + }, + "errorOccurred": { + "message": "Valamilyen hiba történt." + }, + "userAccess": { + "message": "Felhasználói hozzáférés" + }, + "userType": { + "message": "Felhasználó típus" + }, + "groupAccess": { + "message": "Csoport hozzáférés" + }, + "groupAccessUserDesc": { + "message": "A felhasználóhoz tartozó csoportok szerkesztése." + }, + "invitedUsers": { + "message": "A meghívott felhasználók." + }, + "resendInvitation": { + "message": "Meghívás újraküldése" + }, + "resendEmail": { + "message": "Email újraküldése" + }, + "hasBeenReinvited": { + "message": "$USER$ ismételten meghívásra került.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Megerősítés" + }, + "confirmUser": { + "message": "Felhasználó megerősítése" + }, + "hasBeenConfirmed": { + "message": "$USER$ felhasználó megerősítésre került.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Felhasználók megerősítése" + }, + "usersNeedConfirmed": { + "message": "Vannak olyan felhasználók, akik elfogadták a meghívást, de ezt még meg kell erősíteni. A felhasználók csak a megerősítésük utánt férhetnek hozzá a szervezethez." + }, + "startDate": { + "message": "Kezdő dátum" + }, + "endDate": { + "message": "Végdátum" + }, + "verifyEmail": { + "message": "Email cím ellenőrzése" + }, + "verifyEmailDesc": { + "message": "A fiók email címének ellenőrzése az összes funkció feloldásához." + }, + "verifyEmailFirst": { + "message": "A fiók email címét először ellenőrizni kell." + }, + "checkInboxForVerification": { + "message": "A bejövő postaláda ellenőrzése az ellenőrző linkért." + }, + "emailVerified": { + "message": "Az email cím megerősítésre került." + }, + "emailVerifiedFailed": { + "message": "Nem sikerült az email cím ellenőrzése. Új ellenőrző email küldése." + }, + "emailVerificationRequired": { + "message": "E-mail hitelesítés szükséges" + }, + "emailVerificationRequiredDesc": { + "message": "A funkció használatához ellenőrizni kell az email címet." + }, + "updateBrowser": { + "message": "Böngésző frissítése" + }, + "updateBrowserDesc": { + "message": "Nem támogatott böngészőt használunk. Előfordulhat, hogy a webes széf nem működik megfelelően." + }, + "joinOrganization": { + "message": "Csatlakozás szervezethez" + }, + "joinOrganizationDesc": { + "message": "Meghívást érkezett a fenti szervezethez csatlakozáshoz. A meghívás elfogadásához be kell jelentkezni vagy új Bitwarden fiókot kell létrehozni." + }, + "inviteAccepted": { + "message": "A meghívás elfogadásra került." + }, + "inviteAcceptedDesc": { + "message": "A szervezet elérhető, amikor az adminisztrátor jóváhagyja a tagságot. Amint ez megtörténik, értesítő email érkezik." + }, + "inviteAcceptFailed": { + "message": "A meghívás nem fogadható el. Kérjük fel a szervezet adminisztrátorát új meghívó küldésére." + }, + "inviteAcceptFailedShort": { + "message": "Nem lehet elfogadni a meghívást. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "E-mail megjegyzése" + }, + "recoverAccountTwoStepDesc": { + "message": "Ha nem férünk hozzá a fiókhoz a normál kétlépcsős bejelentkezési módokkal, használhatjuk a kétlépcsős bejelentkezés helyreállító kódot a fiókra vonatkozó összes kétlépcsős szolgáltató kikapcsolásához." + }, + "recoverAccountTwoStep": { + "message": "Fiók kétlépcsős bejelentkezés helyreállítása" + }, + "twoStepRecoverDisabled": { + "message": "A kétlécsős hitelesítés kikapcsolásra került a fióknál." + }, + "learnMore": { + "message": "További információ" + }, + "deleteRecoverDesc": { + "message": "Az email cím megadása lentebb a fiók helyreállításához és törléséhez." + }, + "deleteRecoverEmailSent": { + "message": "Ha létezik a fiók, egy email kerül kiküldésre további utasításokkal." + }, + "deleteRecoverConfirmDesc": { + "message": "A Bitwarden fiók törlését kértük. Kattintás a lenti gombra a megerősítéshez." + }, + "myOrganization": { + "message": "Saját szervezet" + }, + "deleteOrganization": { + "message": "Szervezet törlése" + }, + "deletingOrganizationContentWarning": { + "message": "Adjuk meg a mesterjelszót $ORGANIZATION$ és az összes társított adat törlésének megerősítéséhez. $ORGANIZATION$ széfadatainak tartalma:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "A felhasználói fiókok aktívak maradnak a törlés után, de a továbbiakben nincsenek társítva ehhez a szervezethez." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "$ORGANIZATION$ törlése végleges és nincs visszaállítási lehetőség.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "A szervezet törlésre került." + }, + "organizationDeletedDesc": { + "message": "A szervezet és az összes társított adat törlésre került." + }, + "organizationUpdated": { + "message": "A szervezet frissítésre került." + }, + "taxInformation": { + "message": "Adó információ" + }, + "taxInformationDesc": { + "message": "Vegyük fel a kapcsolatot a támogatással a számlához tartozó adóinformáció megadásával (vagy frissítésével) kapcsolatban." + }, + "billingPlan": { + "message": "Díjcsomag", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Díjcsomag változtatása", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "A fiók felminősítése másik díjcsomagra az alábbi megadott információ alapján. Ellenőrizzük a fiókhoz adott aktív fizetési módot.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "#$NUMBER$ számla", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Számla megtekintése" + }, + "downloadInvoice": { + "message": "Számla letöltése" + }, + "verifyBankAccount": { + "message": "Bankfiók ellenőrzése" + }, + "verifyBankAccountDesc": { + "message": "Két mikroterhelést végeztünk a bankszámlán (akár 1-2 napot is igénybe vehet a megjelenésig). Adjuk meg ezeket az összegeket a bankszámla ellenőrzéséhez." + }, + "verifyBankAccountInitialDesc": { + "message": "A bankszámlával történő fizetés csak az USA ügyfelek számára érhető el. Ehhez ellenőrizni kell a bankszámlát. Két mikroterhelést végeztünk a bankszámlán a következő 1-2 napban. Adjuk meg ezeket az összegeket a szervezet számlázási oldalán a bankszámla ellenőrzéséhez." + }, + "verifyBankAccountFailureWarning": { + "message": "A bankszámla ellenőrzésének sikertelensége elmaradt fizetéshez és az előfizetés leállításához vezet." + }, + "verifiedBankAccount": { + "message": "A bankszámla megerősítésre került." + }, + "bankAccount": { + "message": "Bankszámla" + }, + "amountX": { + "message": "$COUNT$. összeg", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Banki azonosító szám", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Számlaszám" + }, + "accountHolderName": { + "message": "Számlatulajdonos neve" + }, + "bankAccountType": { + "message": "Számlatípus" + }, + "bankAccountTypeCompany": { + "message": "Cég (üzleti)" + }, + "bankAccountTypeIndividual": { + "message": "Egyéni (személyes)" + }, + "enterInstallationId": { + "message": "Telepítési azonosító megadása" + }, + "limitSubscriptionDesc": { + "message": "Állítsunk be helykorlátot az előfizetéshez. Ha elérjük ezt a korlátot, nem tudunk új felhasználókat meghívni." + }, + "maxSeatLimit": { + "message": "Maximális helykorlát (opcionális)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maximális lehetséges helyköltség" + }, + "addSeats": { + "message": "Helyek hozzáadása", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Helyek eltávolítása", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Az előfizetés módosítása a számlázási összegek arányos módosítását eredményezi. Ha az újonnan meghívott felhasználók túllépik az előfizetői helyeket, akkor haladéktalanul külön díjat kapunk a további felhasználókért." + }, + "subscriptionUserSeats": { + "message": "Az előfizetés összesen $COUNT$ felhasználót tesz lehetővé.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Előfizetés korlát (opcionális)" + }, + "subscriptionSeats": { + "message": "Előfizetői helyek" + }, + "subscriptionUpdated": { + "message": "Az előfizetés frissítésre került." + }, + "additionalOptions": { + "message": "Kiegészítő opciók" + }, + "additionalOptionsDesc": { + "message": "Az előfizetés kezelésével kapcsolatos további segítségért forduljunk az Ügyfélszolgálathoz." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Az előfizetés módosítása a számlázási összegek arányos módosítását eredményezi. Ha az újonnan meghívott felhasználók túllépik az előfizetői helyeket, akkor haladéktalanul külön díjat kapunk a további felhasználókért." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Az előfizetés módosítása a számlázási összegek arányos módosítását eredményezi. Ha az újonnan meghívott felhasználók túllépik az előfizetési helyeket, akkor haladéktalanul külön díjat kapunk a további felhasználókért, amíg el nem érjük a $MAX$ helykorlátot.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "$COUNT$ felhasználónál több nem hívható meg magasabb szintű előfizetés nélkül.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "$COUNT$ felhasználónál több nem hívható meg magasabb szintű előfizetés nélkül. Az áttéréshez vegyük fel a kapcsolatot a vevőszolgálattal.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Az előfizetés összesen $COUNT$ felhasználót tesz lehetővé. A csomagot egy külső szervezet szponzorálja és számlázza ki.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Az előfizetés módosítása a számlázási összegek arányos módosítását eredményezi. Nem hívhatunk meg több, mint $COUNT$ felhasználót az előfizetői helyek növelése nélkül.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Hozzáadandó helyek" + }, + "seatsToRemove": { + "message": "Eltávolítandó helyek" + }, + "seatsAddNote": { + "message": "A felhasználó helyek hozzáadása megjelenik a számlaösszesítőben és azonnal terheli a fizetési módot. Az első terhelés az aktuális számlázási ciklus időarányos fennmaradó része eszerint kerül számlázásra." + }, + "seatsRemoveNote": { + "message": "A felhasználó helyek eltávolítása megjelenik a számlaösszesítőben és előlegként jelenik meg a következő számlázási terheléskor." + }, + "adjustedSeats": { + "message": "$AMOUNT$ felhasználói hely beállításra került.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "A kulcs frissítésre került." + }, + "updateKeyTitle": { + "message": "Kulcs frissítés" + }, + "updateEncryptionKey": { + "message": "Titkosítási kulcs frissítés" + }, + "updateEncryptionKeyShortDesc": { + "message": "Jelenleg elavult titkosítási séma van használatban." + }, + "updateEncryptionKeyDesc": { + "message": "Hosszabb titkosítókulcsok kerültek használatba, amelyek jobb biztonságot és hozzáférést biztosítanak új funkciókhoz. A titkosító kulcs frissítése könnyű és gyors. Csak meg kell adni a mesterjelszót. Ez a frissítés kötelezővé válik." + }, + "updateEncryptionKeyWarning": { + "message": "A titkosítási kulcs frissítése után ki kell jelentkezni és vissza kell jelentkezni az összes jelenleg használt Bitwarden alkalmazásba (például a mobilalkalmazás vagy a böngésző bővítmények). A kijelentkezés és a bejelentkezés elmulasztása (amely letölti az új titkosítási kulcsot) adatvesztést okozhat. Megkíséreljük az automatikusan kijelentkeztetést, azonban ez késhet." + }, + "updateEncryptionKeyExportWarning": { + "message": "Az el nem mentett titkosított exportok szintén érvénytelenné válnak." + }, + "subscription": { + "message": "Előfizetés" + }, + "loading": { + "message": "A betöltés folyamatban van." + }, + "upgrade": { + "message": "Áttérés" + }, + "upgradeOrganization": { + "message": "Szervezeti áttérés" + }, + "upgradeOrganizationDesc": { + "message": "Ez a szolgáltatás nem elérhető ingyenes szervezeteknek. Váltás fizetős díjcsomagra a további funkciók feloldásához." + }, + "createOrganizationStep1": { + "message": "Szervezet létrehozása: 1. lépés" + }, + "createOrganizationCreatePersonalAccount": { + "message": "A szervezet létrehozása előtt létre kell hozni egy ingyenes személyes fiókot." + }, + "refunded": { + "message": "Visszatérített" + }, + "nothingSelected": { + "message": "Nincs kiválasztva semmi." + }, + "acceptPolicies": { + "message": "A doboz bejelölésével elfogadjuk a következőket:" + }, + "acceptPoliciesError": { + "message": "A szolgáltatási feltételeket és az adatvédelmi irányelveket nem vették figyelembe." + }, + "termsOfService": { + "message": "Felhasználási feltételek" + }, + "privacyPolicy": { + "message": "Adatvédelem" + }, + "filters": { + "message": "Szűrők" + }, + "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." + }, + "oneMinute": { + "message": "1 perc" + }, + "fiveMinutes": { + "message": "5 perc" + }, + "fifteenMinutes": { + "message": "15 perc" + }, + "thirtyMinutes": { + "message": "30 perc" + }, + "oneHour": { + "message": "1 óra" + }, + "fourHours": { + "message": "4 óra" + }, + "onRefresh": { + "message": "Böngésző újraindításkor" + }, + "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" + }, + "organizationIsDisabled": { + "message": "A szervezet letiltásra került." + }, + "licenseIsExpired": { + "message": "A licensz lejárt." + }, + "updatedUsers": { + "message": "A felhasználók frissítésre kerültek." + }, + "selected": { + "message": "Kiválasztva" + }, + "ownership": { + "message": "Tulajdonjog" + }, + "whoOwnsThisItem": { + "message": "Ki tulajdonolja ezt az elemet?" + }, + "strong": { + "message": "Erős", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Jó", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Gyenge", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Nagyon gyenge", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Gyenge mesterjelszó" + }, + "weakMasterPasswordDesc": { + "message": "A választott mesterjelszó gyenge. Erős jelszót kell használni a Bitwarden fiók megfelelő védelme érdekében. Biztosan ezt a mesterjelszót szeretnénk használni?" + }, + "rotateAccountEncKey": { + "message": "A fiók titkosító kulcs forgatása is" + }, + "rotateEncKeyTitle": { + "message": "Titkosító kulcs forgatása" + }, + "rotateEncKeyConfirmation": { + "message": "Biztosan fordításra kerüljön a fiók titkosító kulcsa?" + }, + "attachmentsNeedFix": { + "message": "Ennek az elemnek régi fájl mellékletei vannak, amelyeket javítani kell." + }, + "attachmentFixDesc": { + "message": "Ez egy régi melléklet, amelyet javítani kell. Kattintás több információért." + }, + "fix": { + "message": "Javítás", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "A széfben régi mellékletek vannak, amelyeket javítani kell a fiók titkosító kulcsának fordítása előtt." + }, + "yourAccountsFingerprint": { + "message": "Fók ujjnyomat 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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "A titkosítási kulcs integritásának biztosítása érdekében ellenőrizzük a felhasználói ujjlenyomat kifejezést a folytatás előtt.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Soha ne kérje a meghívottak ujjlenyomat kifejezésének ellenőrzését (nem ajánlott)", + "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." + }, + "free": { + "message": "Ingyenes", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API kulcs" + }, + "apiKeyDesc": { + "message": "Az API kulcs használható a Bitwarden nyilvános API hitelesítéséhez." + }, + "apiKeyRotateDesc": { + "message": "Az API kulcs forgatása érvényteleníti a korábbi kulcsot. Az API kulcs forgatható, ha a jelenlegi kulcs már nem tűnik biztonságosnak." + }, + "apiKeyWarning": { + "message": "Az API kulcs teljes hozzáférést biztosít a szervezethez. Célszerű titokban tartani." + }, + "userApiKeyDesc": { + "message": "Az API kulcs használható a Bitwarden CLI hitelesítéséhez." + }, + "userApiKeyWarning": { + "message": "API kulcs alternatív hitelesítési mechanizmus. Célszerű titokban tartani." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 ügyfél hitelesítések", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API kulcs megtekintése" + }, + "rotateApiKey": { + "message": "API kulcs forgatása" + }, + "selectOneCollection": { + "message": "Legalább egy gyűjteményt ki kell választani." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nem lehet megterhelni a kártyát. Nézzük át és fizessük ki az alább felsorolt kifizetés nélküli számlát." + }, + "inAppPurchase": { + "message": "Alkalmazáson belüli vásárlás" + }, + "cannotPerformInAppPurchase": { + "message": "Nem hajtható végre ez a művelet az alkalmazáson belüli vásárlás fizetési módjának használatával." + }, + "manageSubscriptionFromStore": { + "message": "Az előfizetés annál az üzletnél kell kezelni, ahol az alkalmazáson belüli vásárlás történt." + }, + "minLength": { + "message": "Minimális hossz" + }, + "clone": { + "message": "Klónozás" + }, + "masterPassPolicyDesc": { + "message": "A minimális követelmények beállítása a mesterjelszó hozzához." + }, + "twoStepLoginPolicyDesc": { + "message": "A felhasználók számára kétlépcsős bejelentkezés szükséges a személyes fióknál." + }, + "twoStepLoginPolicyWarning": { + "message": "A személyes fióknál a kétlépcsős bejelentkezéssel nem rendelkező szervezet tagok eltávolításra kerülnek a szervezetből és a változásról értesítő emailt kapnak." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Egy szervezet tag számára szükséges a személyes fióknál a kétlépcsős bejelentkezés. Az összes kétlépcsős szolgáltató letiltása esetén az összes ilyen szervezetből eltávolításra kerül a tag." + }, + "passwordGeneratorPolicyDesc": { + "message": "A minimális követelmények beállítása a jelszó generáló konfigurációhoz." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Egy vagy több szervezeti szabály érinti a generátor beállításokat." + }, + "masterPasswordPolicyInEffect": { + "message": "Egy vagy több szervezeti szabály előírja a mesterjelszóhoz a következő követelményeket:" + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Szavak minimális száma" + }, + "defaultType": { + "message": "Alapértelmezett típus" + }, + "userPreference": { + "message": "Felhasználói előbeállítás" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Keresés a lomtárban" + }, + "permanentlyDelete": { + "message": "Végleges törlés" + }, + "permanentlyDeleteSelected": { + "message": "A kiválasztottak végleges törlése" + }, + "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" + }, + "permanentlyDeletedItems": { + "message": "Elemek végleges törlése" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "$COUNT$ elem lett kiválasztva végleges törlésre. Biztosan végleges törlésre kerüljön az összes elem?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "$ID$ elem véglegesen törlésre került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Visszaállítás" + }, + "restoreSelected": { + "message": "Kiválasztottak visszaállítása" + }, + "restoreItem": { + "message": "Elem visszaállítása" + }, + "restoredItem": { + "message": "Visszaállított elem" + }, + "restoredItems": { + "message": "Visszaállított elemek" + }, + "restoreItemConfirmation": { + "message": "Biztosan visszaállításra kerüljön ez az elem?" + }, + "restoreItems": { + "message": "Elemek visszaállítása" + }, + "restoreSelectedItemsDesc": { + "message": "$COUNT$ elem lett kiválasztva visszaállításra. Biztosan visszaállításra kerüljön az összes elem?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "$ID$ azonosítójú elem visszaállításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Jelszavak elrejtése" + }, + "countryPostalCodeRequiredDesc": { + "message": "Ez az információ csak adószámításhoz és pénzügyi jelentéshez szükséges." + }, + "includeVAT": { + "message": "ÁFA/GST információval (opcionális)" + }, + "taxIdNumber": { + "message": "ÁFA/GST adó azonosító" + }, + "taxInfoUpdated": { + "message": "Az adóinformáció frissítésre került." + }, + "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." + }, + "identifier": { + "message": "Azonosító" + }, + "organizationIdentifier": { + "message": "Szervezeti azonosító" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Bejelentkezés a szervezeti önálló portálba. A kezdéshez meg kell adni a szervezeti azonosítót." + }, + "enterpriseSingleSignOn": { + "message": "Vállalati önálló bejelentkezés" + }, + "ssoHandOff": { + "message": "Bezárható ez a fül és folytatás a bővítményben." + }, + "includeAllTeamsFeatures": { + "message": "Összes Csapat funkció, továbbá:" + }, + "includeSsoAuthentication": { + "message": "SSO hitelesítés SAML2.0 és OpenID Connect kapcsolaton keresztül" + }, + "includeEnterprisePolicies": { + "message": "Vállalati rendszabályok" + }, + "ssoValidationFailed": { + "message": "SSO érvényesítési mező" + }, + "ssoIdentifierRequired": { + "message": "A szervezeti azonosító megadása szükséges." + }, + "unlinkSso": { + "message": "SSO szétkapcsolása" + }, + "unlinkSsoConfirmation": { + "message": "Biztosan szeretnénk az SSO leválasztását ennél a szervezetnél?" + }, + "linkSso": { + "message": "SSO csatolása" + }, + "singleOrg": { + "message": "Önálló szervezet" + }, + "singleOrgDesc": { + "message": "Korlátozza a felhasználókat más szervezetekhez csatlakozásban." + }, + "singleOrgBlockCreateMessage": { + "message": "Jelenlegi szervezetének van olyan irányelve, amely nem engedélyezi, hogy több szervezethez csatlakozzunk. Lépjünk kapcsolatba szervezetünk adminisztrátorával vagy regisztráljunk egy másik Bitwarden fiókból." + }, + "singleOrgPolicyWarning": { + "message": "A szervezet azon tagjait, akik nem tulajdonosok vagy rendszergazdák, és már egy másik szervezet tagjai, eltávolítjáara kerülnek a szervezetből." + }, + "requireSso": { + "message": "Egyszeri bejelentkezés hitelesítése" + }, + "requireSsoPolicyDesc": { + "message": "A felhasználóknál az Vállalati egyszeri vejelentkezés hitelesítési mód megkövetelése." + }, + "prerequisite": { + "message": "Előfeltétel" + }, + "requireSsoPolicyReq": { + "message": "Az irányelv bekapcsolása előtt engedélyezni kell az Önálló szervezet vállalati irányelvét." + }, + "requireSsoPolicyReqError": { + "message": "Az Önálló szervezet irányelv nem engedélyezett." + }, + "requireSsoExemption": { + "message": "A szervezet tulajdonosai és adminisztrátorai mentesülnek az irányelv végrehajtása alól." + }, + "sendTypeFile": { + "message": "Fájl" + }, + "sendTypeText": { + "message": "Szöveg" + }, + "createSend": { + "message": "Új küldés létrehozása", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Küldés törlése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "deletionDate": { + "message": "Törlési dátum" + }, + "deletionDateDesc": { + "message": "A Send véglegesen törölve lesz 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": "Amennyiben be van á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": "Amennyiben be van állítva, a Send elérhetetlen lesz, amint elérik a meghatározott hozzáférések számát.", + "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" + }, + "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." + }, + "disabled": { + "message": "Letiltva" + }, + "sendLink": { + "message": "Send hivatkozás", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Hivatkozás küldés másolása", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Jelszó eltávolítása" + }, + "removedPassword": { + "message": "A jelszó eltávolításra került." + }, + "removePasswordConfirmation": { + "message": "Biztosan eltávolításra kerüljön ez a jelszó?" + }, + "hideEmail": { + "message": "Saját email cím elrejtése a címzettek elől." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Összes küldés" + }, + "maxAccessCountReached": { + "message": "A maximális hozzáférések száma elérésre került.", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Függőben lévő törlés" + }, + "expired": { + "message": "Lejárt" + }, + "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." + }, + "sendProtectedPassword": { + "message": "A küldés jelszóval védett. A folytatáshoz lentebb meg kell adni a jelszót.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Nem ismerjük a jelszót? Kérdezzünk rá a küldőnél a küldés elérésére szükséges jelszóért.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Ez a küldés alapértelmezésben rejtett. Az alábbi gombbal átváltható a láthatósága.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Fájl letöltése" + }, + "sendAccessUnavailable": { + "message": "Az elérendő küldés nem létezik vagy már nem elérhető.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "A Küldéshez társított fájl nem található.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "A listában nincs küldés.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Sürgősségi hozzáférés" + }, + "emergencyAccessDesc": { + "message": "Sürgősségi hozzáférés kezelése és megadása megbízható kapcsolatoknak. A megbízható kapcsolatok sürgősségi helyzet esetén hozzáférést kérhetnek a fiókhoz vagy átvehetik azt. További információkat a funkció működésével kapcsolatban a súgó oldalon találhatunk." + }, + "emergencyAccessOwnerWarning": { + "message": "Jelnleg egy vagy több szervezet tulajdonosa vagyunk. Ha átvételi hozzáférést adunk egy vészhelyzeti kapcsolattartónak, akkor az átvételt követően tulajdonosként használhatják az összes engedélyt." + }, + "trustedEmergencyContacts": { + "message": "Megbízható sürgősségi kapcsolatok" + }, + "noTrustedContacts": { + "message": "Még nem adták hozzá sürgősségi kapcsolatokat, hívjunk meg megbízható kapcsolatokat az induláshoz." + }, + "addEmergencyContact": { + "message": "Sürgősségi kapcsolat hozzáadása" + }, + "designatedEmergencyContacts": { + "message": "Sürgősségi kapcsolatnak kinevezve" + }, + "noGrantedAccess": { + "message": "Még senki nem nevezett ki sürgősségi kapcsolatként." + }, + "inviteEmergencyContact": { + "message": "Sürgősségi kapcsolat meghívása" + }, + "editEmergencyContact": { + "message": "Sürgősségi kapcsolat szerkesztése" + }, + "inviteEmergencyContactDesc": { + "message": "Új felhasználó meghívása sürgősségi kapcsolatként a Bitwarden fiók email címének megadásával. Ha még nem rendelkezik Bitwarden-fiókkal, felkérjük új fiók létrehozására." + }, + "emergencyAccessRecoveryInitiated": { + "message": "A sürgősségi hozzáférés kezdeményezésre került." + }, + "emergencyAccessRecoveryApproved": { + "message": "A sürgősségi hozzáférés jóváhagyásra került." + }, + "viewDesc": { + "message": "A széf valamennyi elemét láthatja." + }, + "takeover": { + "message": "Átvétel" + }, + "takeoverDesc": { + "message": "Visszaállíthatja a fiók egy új mesterjelszóval." + }, + "waitTime": { + "message": "Várakozási idő" + }, + "waitTimeDesc": { + "message": "Szükséges idő az automatikus hozzáférés megadásáig." + }, + "oneDay": { + "message": "1 nap" + }, + "days": { + "message": "$DAYS$ nap", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Meghívott felhasználó." + }, + "acceptEmergencyAccess": { + "message": "Meghívást érkezett a fenti személytől sürgősségi kapcsolat tekintetében. A meghívás elfogadásához be kell jelentkezni vagy új Bitwarden fiókot kell létrehozni." + }, + "emergencyInviteAcceptFailed": { + "message": "A meghívást nem lehet elfogadni. Kérjük meg a felhasználót új meghívó elküldésére." + }, + "emergencyInviteAcceptFailedShort": { + "message": "A meghívást nem lehet elfogadni. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "A felhasználó vészhelyzeti beállításai az azonosítás megerősítése után érhető el. Egy email kerül kiküldésre, ha ez megtörténik." + }, + "requestAccess": { + "message": "Hozzáférés kérése" + }, + "requestAccessConfirmation": { + "message": "Biztosan sürgősségi hozzáférést szeretnénk kérni? Hozzáférést kapunk $WAITTIME$ nap múlva vagy amikor a felhasználó manuálisan jóváhagyja a kérést.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Sürgősségi hozzáférést kértek $USER$ részére. Emailben értesítés érkezik, ha lehetséges a folytatás.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Jóváhagyás" + }, + "reject": { + "message": "Elutasítás" + }, + "approveAccessConfirmation": { + "message": "Biztosan jóváhagyásra kerüljön a sürgősségi hozzáférés? Ez lehetővé teszi, hogy $USER$ számára $ACTION$ végrehajtására a fiókban.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "A vészhelyzeti hozzáférés jóváhagyásra került." + }, + "emergencyRejected": { + "message": "A vészhelyzeti hozzáférés elutasításra került." + }, + "passwordResetFor": { + "message": "A jelszó alaphelyzetbe került $USER$ részére. Most az új jelszóval lehet bejelentkezni.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Személyes tulajdon" + }, + "personalOwnershipPolicyDesc": { + "message": "A személyes tulajdon opciójának eltávolításával megkövetelhetjük a felhasználóktól, hogy széfelemeket mentsenek a egy szervezethez." + }, + "personalOwnershipExemption": { + "message": "A szervezet tulajdonosai és adminisztrátorai mentesek az irányelv végrehajtása alól." + }, + "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." + }, + "disableSend": { + "message": "Küdlés letiltása" + }, + "disableSendPolicyDesc": { + "message": "Ne engedjük a felhasználóknak a Bitwarden Küldés létrehozását vagy szerkesztését. A meglévő küldés törlése továbbra is megengedett.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "A szervezet házirendjét kezeő szervezeti felhasználók, mentesülnek az irányelvek végrehajtása alól." + }, + "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." + }, + "sendOptions": { + "message": "Send opciók", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Opciók beállítása Send elem létrehozásához és szerkesztéséhez.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "A szervezet házirendjét kezelő szervezeti felhasználók mentesülnek az irányelvek végrehajtása alól." + }, + "disableHideEmail": { + "message": "Ne engedjük, hogy a felhasználók elrejtsék email címüket a címzettek elől a Send elem létrehozása vagy szerkesztése során.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "A következő szervezeti irányelvek vannak érvényben:" + }, + "sendDisableHideEmailInEffect": { + "message": "A felhasználók nem rejthetik el email címüket a címzettek elől egy Send elem létrehozásakor vagy szerkesztésekor.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "$ID$ szabály módosításra került.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Csomagár" + }, + "estimatedTax": { + "message": "Becsült adó" + }, + "custom": { + "message": "Egyedi" + }, + "customDesc": { + "message": "A fejlett konfigurációk felhasználói engedélyeinek részletesebb ellenőrzését teszi lehetővé." + }, + "permissions": { + "message": "Jogosultságok" + }, + "accessEventLogs": { + "message": "Eseménynapló elérése" + }, + "accessImportExport": { + "message": "Exportálás/importálás elérése" + }, + "accessReports": { + "message": "Elérési jelentések" + }, + "missingPermissions": { + "message": "Nincs megfelelő jogosultság a művelet végrehajtásához." + }, + "manageAllCollections": { + "message": "Összes gyűjtemény kezelése" + }, + "createNewCollections": { + "message": "Új gyűjtemények létrehozása" + }, + "editAnyCollection": { + "message": "Bármely gyűjtemény szerkesztése" + }, + "deleteAnyCollection": { + "message": "Bármely gyűjtemény törlése" + }, + "manageAssignedCollections": { + "message": "Hozzárendelt gyűjtemények kezelése" + }, + "editAssignedCollections": { + "message": "Hozzárendelt gyűjtemények szerkesztése" + }, + "deleteAssignedCollections": { + "message": "Hozzárendelt gyűjtemények törlése" + }, + "manageGroups": { + "message": "Csoportok kezelése" + }, + "managePolicies": { + "message": "Szabályok kezelése" + }, + "manageSso": { + "message": "SSO kezelése" + }, + "manageUsers": { + "message": "Felhasználók kezelése" + }, + "manageResetPassword": { + "message": "Jelszó alaphelyzet kezelés" + }, + "disableRequiredError": { + "message": "A szabály letiltása előtt manuálisan le kell tiltani $POLICYNAME$ házirendet.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "A szervezeti házirend befolyásolja a tulajdonosi opciókat." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Egy szervezeti házirend letiltotta az elemek személyes tárolóba történő importálását." + }, + "personalOwnershipCheckboxDesc": { + "message": "A szervezeti felhasználók személyes tulajdon letiltása" + }, + "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." + }, + "sendNameDesc": { + "message": "Barátságos név a Küldés leírására.", + "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." + }, + "copySendLinkOnSave": { + "message": "A hivatkozás másolása a Küldés megosztásához a vágólapra mentéskor." + }, + "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." + }, + "send": { + "message": "Küldés", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "A Bitwarden Küldés könnyen és biztonságosan továbbítja az érzékeny, ideiglenes információkat másoknak.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Bővebben erről", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Szöveg és fájlok közvetlen megosztása bárkivel." + }, + "sendVaultCardLearnMore": { + "message": "További információ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "nézzük", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "Hogyan működik?", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "vagy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "próbáljuk ki most", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "vagy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "regisztráció", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "próbáljuk ki még ma.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "$USER_IDENTIFIER$ Bitwarden felhasználó megosztotta a következőket", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Az ezt a Send elemet létrehozó Bitwarden felhasználó úgy döntött, hogy elrejti email címét. Mielőtt felhasználnánk vagy letöltenénk a tartalmát, ellenőrizzük a hivatkozás megbízhatóságát.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "A megadott lejárati idő nem érvényes." + }, + "deletionDateIsInvalid": { + "message": "A megadot törlési dátum nem érvényes." + }, + "expirationDateAndTimeRequired": { + "message": "Lejárati dátum és idő megadása szükséges." + }, + "deletionDateAndTimeRequired": { + "message": "Törlési dátum és idő megadása szükséges." + }, + "dateParsingError": { + "message": "Hiba történt a törlés és a lejárati dátum mentésekor." + }, + "webAuthnFallbackMsg": { + "message": "A 2FA ellenőrzéséhez kattintsunk az alábbi gombra." + }, + "webAuthnAuthenticate": { + "message": "WebAutn hitelesítés" + }, + "webAuthnNotSupported": { + "message": "Ezen a böngészőn a WebAuthn nem támogatott." + }, + "webAuthnSuccess": { + "message": "A WebAuthn sikeresen ellenőrzésre került.! A fül már bezárható." + }, + "hintEqualsPassword": { + "message": "A jelszavas tipp nem lehet azonos a jelszóval." + }, + "enrollPasswordReset": { + "message": "Bejelentkezés a Jelszó alaphelyzetbe állításba" + }, + "enrolledPasswordReset": { + "message": "A bejelentkezés megtörtént a Jelszó alaphelyzetbe állításba" + }, + "withdrawPasswordReset": { + "message": "Kijelentkezés a Jelszó alaphelyzetbe állításból" + }, + "enrollPasswordResetSuccess": { + "message": "A bejelentkezés sikeres." + }, + "withdrawPasswordResetSuccess": { + "message": "A kijelentkezés sikeres." + }, + "eventEnrollPasswordReset": { + "message": "$ID$ felhasználó bejelentkezett a jelszó alaphelyzetbe állítás támogatáshoz.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "$ID$ felhasználó kijelentkezett a jelszó alaphelyzetbe állítás támogatásból.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "A mesterjelszó alaphelyzetbe került $ID$ felhasználónál.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Sso hivatkozás visszaállítása $ID$ felhasználónál", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ első alkalommal jelentkezett be Sso szolgáltatássl.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Jelszó visszaállítása" + }, + "resetPasswordLoggedOutWarning": { + "message": "A folytatással $NAME$ kijelentkezik az aktuális munkamenetből és újra be kell jelentkeznie. A más eszközökön végzett aktív munkamenetek akár egy órán keresztül is aktívak maradhatnak.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "ez a felhasználó" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Egy vagy több szervezeti rendszabályhoz mesterjelszó szükséges a következő követelmények megfeleléséhez:" + }, + "resetPasswordSuccess": { + "message": "A jelszó alaphelyzetbe állítása sikeres volt." + }, + "resetPasswordEnrollmentWarning": { + "message": "A regisztráció lehetővé teszi a szervezet adminisztrátorainak a saját mesterjelszó megváltoztatását. Biztosan feliratkozunk?" + }, + "resetPasswordPolicy": { + "message": "Mesterjelszó alaphelyzetbe állítás" + }, + "resetPasswordPolicyDescription": { + "message": "A szervezet adminisztrátorai alaphelyzetbe állíthatják a szervezet mesterjelszavát." + }, + "resetPasswordPolicyWarning": { + "message": "A szervezet felhasználóinak regisztrálniuk kell magukat vagy automatikus regisztrálás szükséges mielőtt az adminisztrátorok alaphelyzetbe állíthatják a mesterjelszavukat." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatikus regisztráció" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "A meghívó elfogadását követően minden felhasználó automatikusan regisztrálásra kerül a jelszó alaphelyzetbe állításnál." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "A szervezetben már szereplő felhasználók nem kerülnek visszamenőleg regisztrálva a jelszó alaphelyzetbe állításnál. Regisztráln kell magunkat, mielőtt az adminisztrátorok alaphelyzetbe állíthatják a mesterjelszavukat." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Új felhasználók automatikus regisztrálása" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "A szervezeti kulcs válasza null" + }, + "resetPasswordDetailsError": { + "message": "A jelszó alaphelyzetbe állítás válasza null" + }, + "trashCleanupWarning": { + "message": "A 30 napnál régebben lomtárba került elemek automatikusan törlésre kerülnek." + }, + "trashCleanupWarningSelfHosted": { + "message": "A már jó ideje a lomtárban lévő elemek automatikusan törlésre kerülnek." + }, + "passwordPrompt": { + "message": "Mesterjelszó ismételt megadás" + }, + "passwordConfirmation": { + "message": "Mesterjelszó megerősítése" + }, + "passwordConfirmationDesc": { + "message": "A művelet védett. A személyazonosság igazolásához adjuk meg ismét a mesterjelszót." + }, + "reinviteSelected": { + "message": "Meghívó újraküldése" + }, + "noSelectedUsersApplicable": { + "message": "Ez a művelet a kiválasztott felhasználók egyikére sem alkalmazható." + }, + "removeUsersWarning": { + "message": "Biztosan eltávolításra kerüljenek a következő felhasználók? A folyamat néhány másodpercet vehet igénybe és nem szakítható meg vagy törölhető." + }, + "theme": { + "message": "Téma" + }, + "themeDesc": { + "message": "Válasszunk témát az internetes széfhez." + }, + "themeSystem": { + "message": "Rendszertéma használata" + }, + "themeDark": { + "message": "Sötét" + }, + "themeLight": { + "message": "Világos" + }, + "confirmSelected": { + "message": "Kiválasztás megerősítése" + }, + "bulkConfirmStatus": { + "message": "Tömeges művelet állapot" + }, + "bulkConfirmMessage": { + "message": "A megerősítés sikeres volt." + }, + "bulkReinviteMessage": { + "message": "Az ismételt meghívás sikeres volt." + }, + "bulkRemovedMessage": { + "message": "Az eltávolítás sikeres volt." + }, + "bulkFilteredMessage": { + "message": "Kizárva, nem alkalmazható erre a műveletre." + }, + "fingerprint": { + "message": "Ujjlenyomat" + }, + "removeUsers": { + "message": "Felhasználók eltávolítása" + }, + "error": { + "message": "Hiba" + }, + "resetPasswordManageUsers": { + "message": "A felhasználók kezelését engedélyezni kell a Jelszó visszaállításának kezelése jogosultsággal is." + }, + "setupProvider": { + "message": "Szolgáltató beállítása" + }, + "setupProviderLoginDesc": { + "message": "Meghívás érkezett egy új szolgáltató beállítására. A folytatáshoz be kell jelentkezni vagy létre kell hozni egy új Bitwarden fiókot." + }, + "setupProviderDesc": { + "message": "Adjuk meg az alábbi adatokat a szolgáltató beállításának befejezéséhez. Ha bármilyen kérdés van, forduljunk az Ügyfélszolgálathoz." + }, + "providerName": { + "message": "Szolgáltató neve" + }, + "providerSetup": { + "message": "A szolgáltató beüzemelésre került." + }, + "clients": { + "message": "Ügyfelek" + }, + "providerAdmin": { + "message": "Szolgáltató adminisztrátor" + }, + "providerAdminDesc": { + "message": "Adjuk meg az alábbi adatokat a szolgáltató beállításának befejezéséhez. Ha bármilyen kérdés van, forduljunk az Ügyfélszolgálathoz." + }, + "serviceUser": { + "message": "Szolgáltatás felhasználó" + }, + "serviceUserDesc": { + "message": "A szolgáltatás felhasználói elérhetik és kezelhetik az összes ügyfélszervezetet." + }, + "providerInviteUserDesc": { + "message": "Új felhasználó meghívása a szervezetéhez a Bitwarden fiók email címének megadásával. Ha még nem rendelkeznek Bitwarden fiókkal, felkérjük új fiók létrehozására." + }, + "joinProvider": { + "message": "Csatlakozás szolgáltatóhoz" + }, + "joinProviderDesc": { + "message": "Meghívást érkezett a fenti szervezethez csatlakozáshoz. A meghívás elfogadásához be kell jelentkezni vagy új Bitwarden fiókot kell létrehozni." + }, + "providerInviteAcceptFailed": { + "message": "A meghívás nem fogadható el. Kérjük fel a szervezet adminisztrátorát új meghívó küldésére." + }, + "providerInviteAcceptedDesc": { + "message": "A szervezet elérhető, amikor az adminisztrátor jóváhagyja a tagságot. Amint ez megtörténik, értesítő email érkezik." + }, + "providerUsersNeedConfirmed": { + "message": "Vannak olyan felhasználók, akik elfogadták a meghívást, de ezt még meg kell erősíteni. A felhasználók csak a megerősítésük után férhetnek hozzá a szervezethez." + }, + "provider": { + "message": "Szolgáltató" + }, + "newClientOrganization": { + "message": "Új ügyfél szervezet" + }, + "newClientOrganizationDesc": { + "message": "Egy új ügyfélszervezet létrehozása társított szolgáltatásként. Lehetőség lesz a szervezet elérésére és kezelésére." + }, + "addExistingOrganization": { + "message": "Létező fordítások hozzáadása" + }, + "myProvider": { + "message": "Saját szolgáltató" + }, + "addOrganizationConfirmation": { + "message": "Biztosan hozzá szeretnénk adni $ORGANIZATION$ szervezetet ügyfélként $PROVIDER$ szolgáltatáshoz?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "A szervezet sikeresen hozzáadásra került a szolgáltatóhoz" + }, + "accessingUsingProvider": { + "message": "Hozzáférés a szervezethez $PROVIDER$ szolgáltató használatával", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "A szolgáltató letiltásra került." + }, + "providerUpdated": { + "message": "A szolgáltató frissítésre került." + }, + "yourProviderIs": { + "message": "A szolgáltató $PROVIDER$. Rendszergazdai és számlázási jogosultságokkal rendelkeznek a szervezet számára.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "$ORGANIZATION$ szervezet leválasztásra került a szolgáltatótól.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Biztosan leválasztjuk ezt a szervezetet? A szervezet továbbra is fennáll, de már nem a szolgáltató kezeli." + }, + "add": { + "message": "Hozzáadás" + }, + "updatedMasterPassword": { + "message": "A mesterjelszó frissítésre került." + }, + "updateMasterPassword": { + "message": "Mesterjelszó frissítése" + }, + "updateMasterPasswordWarning": { + "message": "A mesterjelszót nemrégiben megváltoztatta a szervezet rendszergazdája. A tároló eléréséhez most frissíteni kell a mesterjelszót. A folytatás kijelentkeztet az aktuális munkamenetből és újra be kell jelentkezni. A más eszközökön végzett aktív munkamenetek akár egy órán keresztül is aktívak maradhatnak." + }, + "masterPasswordInvalidWarning": { + "message": "A mesterjelszó nem felel meg a szervezet rendszabályainak. A szervezet 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." + }, + "maximumVaultTimeout": { + "message": "Széf időkifutás" + }, + "maximumVaultTimeoutDesc": { + "message": "Állítsunk be maximális széf időtúllépést minden felhasználó számára." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximális széf időkifutás" + }, + "invalidMaximumVaultTimeout": { + "message": "A maximális széf időkifutás érvénytelen." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Egyedi széf időkifutás" + }, + "vaultTimeoutToLarge": { + "message": "A széf időkorlátja túllépi a szervezet által beállított korlátozást." + }, + "disablePersonalVaultExport": { + "message": "A személyes széf exportálás nem engedélyezett." + }, + "disablePersonalVaultExportDesc": { + "message": "Biztosan leválasztjuk ezt a szervezetet? A szervezet továbbra is fennáll, de már nem a szolgáltató kezeli." + }, + "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." + }, + "selectType": { + "message": "SSO típus választás" + }, + "type": { + "message": "Típus" + }, + "openIdConnectConfig": { + "message": "OpenID kapcsolat konfiguráció" + }, + "samlSpConfig": { + "message": "SAML szolgáltató konfiguráció" + }, + "samlIdpConfig": { + "message": "SAML azonosítási szolgáltató konfiguráció" + }, + "callbackPath": { + "message": "Tartalék útvonal" + }, + "signedOutCallbackPath": { + "message": "Kijelentkezett tartalék útvonal" + }, + "authority": { + "message": "Hitelesítés" + }, + "clientId": { + "message": "Ügyfél AZ" + }, + "clientSecret": { + "message": "Titkos ügyfélkód" + }, + "metadataAddress": { + "message": "Metaadat cím" + }, + "oidcRedirectBehavior": { + "message": "OIDC átirányítási viselkedés" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Követelések lekérése a felhasználói adatok végpontjáról" + }, + "additionalScopes": { + "message": "További/egyedi hatókörök (vesszővel elválasztva)" + }, + "additionalUserIdClaimTypes": { + "message": "További/egyedi felhasználó AZ követelések (vesszővel elválasztva)" + }, + "additionalEmailClaimTypes": { + "message": "További/egyedi email követelés típusok (vesszővel elválasztva)" + }, + "additionalNameClaimTypes": { + "message": "További/egyedi név követelés típusok (vesszővel elválasztva)" + }, + "acrValues": { + "message": "Kért hitelesítési kontextusosztály referenciaértékek (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Elvárt „acr” követelésérték a válaszban (acr érvényesítés)" + }, + "spEntityId": { + "message": "SP Szervezet AZ" + }, + "spMetadataUrl": { + "message": "SAML 2.0 metaadat webcím" + }, + "spAcsUrl": { + "message": "Az Assertion Consumer Service (ACS) webcíme" + }, + "spNameIdFormat": { + "message": "Név AZ formátum" + }, + "spOutboundSigningAlgorithm": { + "message": "Kimenő aláírási algoritmus" + }, + "spSigningBehavior": { + "message": "Aláírási viselkedés" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimális bejövő aláírási algoritmus" + }, + "spWantAssertionsSigned": { + "message": "Állításokat szeretnének aláírni" + }, + "spValidateCertificates": { + "message": "Tanúsítványok ellenőrzése" + }, + "idpEntityId": { + "message": "Szervezeti ID" + }, + "idpBindingType": { + "message": "Kötés típusa" + }, + "idpSingleSignOnServiceUrl": { + "message": "Egyszeri bejelentkezési szolgáltatás webcíme" + }, + "idpSingleLogoutServiceUrl": { + "message": "Egyszeri kijelentkezés szolgáltatás webcíme" + }, + "idpX509PublicCert": { + "message": "X509 Nyilvános tanúsítvány" + }, + "idpOutboundSigningAlgorithm": { + "message": "Kimenő aláírási algoritmus" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Kéretlen hitelesítési válasz engedélyezése" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Kimenü kijelentkezési kérések engedélyezése" + }, + "idpSignAuthenticationRequests": { + "message": "Hitelesítési kérések aláírása" + }, + "ssoSettingsSaved": { + "message": "Az egyszeri bejelentkezés konfigurációja mentésre került." + }, + "sponsoredFamilies": { + "message": "Díjmentes Bitwarden családi csomag" + }, + "sponsoredFamiliesEligible": { + "message": "A felhasználó és családja jogosult az ingyenes Bitwarden családok programra. Váltsuk ezt be személyes email címmel, hogy az adatok biztonságban legyenek még akkor is, amikor éppen nem dolgozunk." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Váltsuk be ingyenes Bitwarden családoknak előfizetést még ma, hogy az adatok biztonságban legyenek, még akkor is, amikor éppen nem dolgozunk." + }, + "sponsoredFamiliesInclude": { + "message": "A Bitwarden családoknak csomag tartalmazza:" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Prémium hozzáférés legfeljebb 6 felhasználónak" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Megosztott gyűjtemények a családi titkoknak" + }, + "badToken": { + "message": "A link már nem érvényes. Kérje szponzorától az ajánlat újraküldését." + }, + "reclaimedFreePlan": { + "message": "Visszaállás díjmentes csomagra" + }, + "redeem": { + "message": "Beváltás" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Válasszuk ki a szponzorálni kívánt szervezetet." + }, + "familiesSponsoringOrgSelect": { + "message": "Melyik ingyenes családi ajánlatot szeretné beváltani?" + }, + "sponsoredFamiliesEmail": { + "message": "A Bitwarden családok beváltásához adjuk meg a személyes email címünket." + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Ha kilépünk ebből a szervezetből vagy eltávolítás történik, a Családi csomag a számlázási időszak végén lejár." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Meglévő szervezet ajánlatának elfogadása vagy új Családi szervezet létrehozása." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Ingyenes Bitwarden Családi csomag szervezetet ajánlottak fel. A folytatáshoz be kell jelentkezni az ajánlatot fogadó fiókba." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Nem sikerült elfogadni az ajánlatot. Küldjük el ismét az ajánlati emailt a vállalati fiókból és próbáljuk újra." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Az ajánlatot nem lehet elfogadni. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Az ingyenes Bitwarden Családi csomag elfogadása" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Az ingyenes Bitwarden családi szervezet ajánlat beváltásra került." + }, + "redeemed": { + "message": "Beváltva" + }, + "redeemedAccount": { + "message": "Beváltott fiók" + }, + "revokeAccount": { + "message": "$NAME$ fiók visszavonása", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Szponzorálási email ismételt elküldése $NAME$ szponzorációnak", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Díjmentes családi csomag" + }, + "redeemNow": { + "message": "Beváltás most" + }, + "recipient": { + "message": "Címzett" + }, + "removeSponsorship": { + "message": "Szponzoráció eltávolítása" + }, + "removeSponsorshipConfirmation": { + "message": "A szponzorálás eltávolítása után felelősséget vállalunk az előfizetésért és a kapcsolódó számlákért. Biztosan folytatjuk?" + }, + "sponsorshipCreated": { + "message": "A szponzoráció létrejött" + }, + "revoke": { + "message": "Visszavonás" + }, + "emailSent": { + "message": "Az email elküldésre került." + }, + "revokeSponsorshipConfirmation": { + "message": "A fiók eltávolítása után a Családok szervezetének tulajdonosa lesz felelős az előfizetésért és a kapcsolódó számlákért. Biztosan folytatjuk?" + }, + "removeSponsorshipSuccess": { + "message": "A szponzoráció eltávolításra került." + }, + "ssoKeyConnectorUnavailable": { + "message": "Nem érhető el a kulcskapcsoló. Próbáljuk újra később." + }, + "keyConnectorUrl": { + "message": "Kulcskapcsoló webcím" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Mesterjelszó eltávolítása" + }, + "removedMasterPassword": { + "message": "A mesterjelszó eltávolításra került." + }, + "allowSso": { + "message": "SSO hitelesítés engedélyezése" + }, + "allowSsoDesc": { + "message": "A beüzemeléskor a konfiguráció mentésre kerül és a tagok hitelesíthetnek az azonosítási szolgáltató hitelesítő adataival." + }, + "ssoPolicyHelpStart": { + "message": "Engedélyezzük az", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO hitelesítési szabályzat", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "szolgáltatást az összes tag bejelentkezéséhez SSO szolgáltatással.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "A kulcscsatlakozó visszafejtésének beállításához SSO hitelesítés és egy szervezeti szabályzat szükséges." + }, + "memberDecryptionOption": { + "message": "Tagi visszafejtési opciók" + }, + "memberDecryptionPassDesc": { + "message": "A hitelesítés után a tagok visszafejtik adataikat a mesterjelszavuk segítségével." + }, + "keyConnector": { + "message": "Kulcskapcsoló" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "SSO bejelentkezés bekapcsolása a saját üzemeltetésű kulcskiszolgálón. Ezzel az opcióval a tagoknak nem kell használniuk a mesterjelszavukat az adatok visszafejtéséhez. Segítségért keresse a Bitwarden ügyfélszolgálatot." + }, + "keyConnectorPolicyRestriction": { + "message": "A „Bejelentkezés SSO szolgáltatással és a kulcskapcsoló visszafejtésével” engedélyezve van. Ez a szabály csak a tulajdonosokra és a rendszergazdákra vonatkozik." + }, + "enabledSso": { + "message": "Bekapcsolt SSO" + }, + "disabledSso": { + "message": "Kikapcsolt SEO" + }, + "enabledKeyConnector": { + "message": "Bekapcsolt kulcskapcsoló" + }, + "disabledKeyConnector": { + "message": "Kikapcsolt kulcskapcsoló" + }, + "keyConnectorWarning": { + "message": "A kulcskiszolgáló beállítása után a szervezet nem térhet vissza a mesterjelszó használatához. Csak akkor folytassa, ha jól ismeri ennek telepítését és kezelését." + }, + "migratedKeyConnector": { + "message": "Áttérve kulcskapcsolóra" + }, + "paymentSponsored": { + "message": "Adjunk meg egy, a szervezethez társítandó fizetési módot. Nem kell aggódni, nem kerül semmi felszámításra, hacsak nem választunk további funkciókat vagy ha szponzorálás lejár. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "A szponzorálási ajánlat lejárt, törölhető a létrehozott szervezet a 7 napos próbaidőszak végén jelentkező díj elkerüléséért. Ellenkező esetben bezárhatjuk ezt az üzenetet a szervezet megtartásához és a számlázási felelősség vállalásához." + }, + "newFamiliesOrganization": { + "message": "Új családi szervezet" + }, + "acceptOffer": { + "message": "Ajánlat elfogadása" + }, + "sponsoringOrg": { + "message": "Szponzoráló szervezet" + }, + "keyConnectorTest": { + "message": "Teszt" + }, + "keyConnectorTestSuccess": { + "message": "A művelet sikeres. A kulcskapcsoló elérésre került." + }, + "keyConnectorTestFail": { + "message": "Nem érhető el a kulcskapcsoló. Ellenőrizzük a webcímet." + }, + "sponsorshipTokenHasExpired": { + "message": "A szponzorálási ajánlat lejárt." + }, + "freeWithSponsorship": { + "message": "INGYENES a szponzorációval" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ mező fentebb figyelmet érdemel.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 mező fentebb figyelmet érdemel." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ szükséges.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "kötelező" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Szükséges ha az entitás azonosító nem webcím." + }, + "openIdOptionalCustomizations": { + "message": "Opcionális testreszabások" + }, + "openIdAuthorityRequired": { + "message": "Szükséges, ha a hitelesítés nem érvényes." + }, + "separateMultipleWithComma": { + "message": "Több érték esetén elválasztás vesszővel." + }, + "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" + }, + "exportingOrganizationVaultTitle": { + "message": "Szervezeti 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Csak$ORGANIZATION$ névvel társított szervezeti széf elemek kerülnek exportálásra. Ebbe nem kerülnek be a személyes és más szervezeti széf elemek.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Vissza a jelentésekhez" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json new file mode 100644 index 0000000000..0dd91cedb3 --- /dev/null +++ b/apps/web/src/locales/id/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Brankas Web", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Jenis barang apa ini?" + }, + "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" + }, + "newPassword": { + "message": "Kata Sandi baru" + }, + "passphrase": { + "message": "Frasa sandi" + }, + "notes": { + "message": "Catatan" + }, + "customFields": { + "message": "Kolom Ubahsuai" + }, + "cardholderName": { + "message": "Nama Pemilik Kartu" + }, + "number": { + "message": "Nomor" + }, + "brand": { + "message": "Merek" + }, + "expiration": { + "message": "Masa Berlaku" + }, + "securityCode": { + "message": "Kode Keamanan (CVV)" + }, + "identityName": { + "message": "Nama Identitas" + }, + "company": { + "message": "Perusahaan" + }, + "ssn": { + "message": "Nomor Jaminan Sosial" + }, + "passportNumber": { + "message": "Nomor Paspor" + }, + "licenseNumber": { + "message": "Nomor Lisensi" + }, + "email": { + "message": "Surel" + }, + "phone": { + "message": "Telepon" + }, + "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" + }, + "title": { + "message": "Panggilan" + }, + "mr": { + "message": "Tuan" + }, + "mrs": { + "message": "Nyonya" + }, + "ms": { + "message": "Nona" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Bulan Kedaluwarsa" + }, + "expirationYear": { + "message": "Tahun Kedaluwarsa" + }, + "authenticatorKeyTotp": { + "message": "Kunci Autentikasi (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "Kolom Ubahsuai Baru" + }, + "value": { + "message": "Nilai" + }, + "dragToSort": { + "message": "Tarik untuk mengurutkan" + }, + "cfTypeText": { + "message": "Teks" + }, + "cfTypeHidden": { + "message": "Tersembunyi" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Terhubung", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Hapus" + }, + "unassigned": { + "message": "Belum ditetapkan" + }, + "noneFolder": { + "message": "Tidak Ada Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Tambah Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "baseDomain": { + "message": "Domain basis", + "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." + }, + "never": { + "message": "Jangan pernah" + }, + "toggleVisibility": { + "message": "Alihkan Visibilitas" + }, + "toggleCollapse": { + "message": "Alihkan Ciutkan", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Buat Kata Sandi" + }, + "checkPassword": { + "message": "Periksa apakah kata sandi telah terekspos." + }, + "passwordExposed": { + "message": "Sandi ini telah dibuka $VALUE$ kali karena pelanggaran data. Anda harus mengubahnya.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Kata sandi ini tidak ditemukan dalam data pelanggaran yang dikenal. Kata sandi tersebut harusnya aman untuk digunakan." + }, + "save": { + "message": "Simpan" + }, + "cancel": { + "message": "Batal" + }, + "canceled": { + "message": "Dibatalkan" + }, + "close": { + "message": "Tutup" + }, + "delete": { + "message": "Hapus" + }, + "favorite": { + "message": "Favorit" + }, + "unfavorite": { + "message": "Batalkan favorit" + }, + "edit": { + "message": "Ubah" + }, + "searchCollection": { + "message": "Cari koleksi" + }, + "searchFolder": { + "message": "Cari Folder" + }, + "searchFavorites": { + "message": "Cari favorit" + }, + "searchType": { + "message": "Jenis pencarian", + "description": "Search item type" + }, + "searchVault": { + "message": "Cari Brankas" + }, + "allItems": { + "message": "Semua Item" + }, + "favorites": { + "message": "Favorit" + }, + "types": { + "message": "Jenis" + }, + "typeLogin": { + "message": "Masuk" + }, + "typeCard": { + "message": "Kartu" + }, + "typeIdentity": { + "message": "Identitas" + }, + "typeSecureNote": { + "message": "Catatan Aman" + }, + "typeLoginPlural": { + "message": "Masuk" + }, + "typeCardPlural": { + "message": "Kartu" + }, + "typeIdentityPlural": { + "message": "Identitas" + }, + "typeSecureNotePlural": { + "message": "Catatan Aman" + }, + "folders": { + "message": "Folder" + }, + "collections": { + "message": "Koleksi" + }, + "firstName": { + "message": "Nama Depan" + }, + "middleName": { + "message": "Nama Tengah" + }, + "lastName": { + "message": "Nama Belakang" + }, + "fullName": { + "message": "Nama Lengkap" + }, + "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" + }, + "shared": { + "message": "Dibagikan" + }, + "attachments": { + "message": "Lampiran" + }, + "select": { + "message": "Pilih" + }, + "addItem": { + "message": "Tambah Item" + }, + "editItem": { + "message": "Ubah Item" + }, + "viewItem": { + "message": "Lihat Item" + }, + "ex": { + "message": "contoh", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Lainnya" + }, + "share": { + "message": "Bagikan" + }, + "moveToOrganization": { + "message": "Pindah ke Organisasi" + }, + "valueCopied": { + "message": "$VALUE$ disalin", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Salin Nilai", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Salin Kata Sandi", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Salin Nama Pengguna", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Salin Nomor", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Salin Kode Keamanan", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Salin URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Brankas Saya" + }, + "vault": { + "message": "Brankas" + }, + "moveSelectedToOrg": { + "message": "Pindahkan terpilih ke Organisasi" + }, + "deleteSelected": { + "message": "Hapus yang Dipilih" + }, + "moveSelected": { + "message": "Pindahkan yang Dipilih" + }, + "selectAll": { + "message": "Pilih Semua" + }, + "unselectAll": { + "message": "Batal Pilih Semua" + }, + "launch": { + "message": "Luncurkan" + }, + "newAttachment": { + "message": "Tambah Lampiran Baru" + }, + "deletedAttachment": { + "message": "Lampiran dihapus" + }, + "deleteAttachmentConfirmation": { + "message": "Apakah 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." + }, + "addedItem": { + "message": "Item yang Ditambahkan" + }, + "editedItem": { + "message": "Item yang Diedit" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ dipindah ke $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Item terpilih dipindah ke $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Hapus Item" + }, + "deleteFolder": { + "message": "Hapus Folder" + }, + "deleteAttachment": { + "message": "Hapus Lampiran" + }, + "deleteItemConfirmation": { + "message": "Anda yakin Anda ingin menghapus item ini?" + }, + "deletedItem": { + "message": "Item dikirim ke sampah" + }, + "deletedItems": { + "message": "Item dikirim ke sampah" + }, + "movedItems": { + "message": "Item yang dipindahkan" + }, + "overwritePasswordConfirmation": { + "message": "Anda yakin ingin menimpa sandi saat ini?" + }, + "editedFolder": { + "message": "Folder yang di Edit" + }, + "addedFolder": { + "message": "Folder ditambahkan" + }, + "deleteFolderConfirmation": { + "message": "Anda yakin Anda ingin menghapus folder ini?" + }, + "deletedFolder": { + "message": "Folder yang terhapus" + }, + "loggedOut": { + "message": "Keluar" + }, + "loginExpired": { + "message": "Sesi masuk Anda telah berakhir." + }, + "logOutConfirmation": { + "message": "Anda yakin ingin keluar?" + }, + "logOut": { + "message": "Keluar" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Ya" + }, + "no": { + "message": "Tidak" + }, + "loginOrCreateNewAccount": { + "message": "Masuk atau buat akun baru untuk mengakses brankas Anda." + }, + "createAccount": { + "message": "Buat Akun" + }, + "logIn": { + "message": "Masuk" + }, + "submit": { + "message": "Kirim" + }, + "emailAddressDesc": { + "message": "Anda akan menggunakan alamat email Anda untuk masuk." + }, + "yourName": { + "message": "Nama Anda" + }, + "yourNameDesc": { + "message": "Apakah kami harus memanggil Anda?" + }, + "masterPass": { + "message": "Kata 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 Kata Sandi Utama" + }, + "masterPassHint": { + "message": "Petunjuk Kata Sandi Utama (pilihan)" + }, + "masterPassHintLabel": { + "message": "Petunjuk Kata Sandi Utama" + }, + "settings": { + "message": "Setelan" + }, + "passwordHint": { + "message": "Petunjuk Kata Sandi" + }, + "enterEmailToGetHint": { + "message": "Masukkan email akun Anda untuk menerima pentunjuk sandi utama Anda." + }, + "getMasterPasswordHint": { + "message": "Dapatkan petunjuk sandi utama" + }, + "emailRequired": { + "message": "Alamat surel diperlukan." + }, + "invalidEmail": { + "message": "Alamat surel 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." + }, + "emailAddress": { + "message": "Alamat Surel" + }, + "yourVaultIsLocked": { + "message": "Brankas Anda terkunci. Verifikasi kata sandi utama Anda untuk melanjutkan." + }, + "unlock": { + "message": "Membuka kunci" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Kunci Sekarang" + }, + "noItemsInList": { + "message": "Tidak ada item yang dapat dicantumkan." + }, + "noCollectionsInList": { + "message": "Tidak ada koleksi yang akan ditampilkan." + }, + "noGroupsInList": { + "message": "Tidak ada grup untuk dicantumkan." + }, + "noUsersInList": { + "message": "Tidak ada pengguna untuk dicantumkan." + }, + "noEventsInList": { + "message": "Tidak ada acara untuk dicantumkan." + }, + "newOrganization": { + "message": "Organisasi Baru" + }, + "noOrganizationsList": { + "message": "Anda tidak berada dalam organisasi apapun. Organisasi memungkinkan Anda dengan aman berbagi item dengan pengguna lainnya." + }, + "versionNumber": { + "message": "Versi $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 peramban web ini." + }, + "noTwoStepProviders2": { + "message": "Silakan gunakan peramban web yang didukung (seperti Chrome) dan/atau tambahkan penyedia tambahan yang didukung di semua peramban web (seperti aplikasi autentikasi)." + }, + "twoStepOptions": { + "message": "Pilihan Info Masuk Dua Langkah" + }, + "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 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." + }, + "u2fDesc": { + "message": "Menggunakan FIDO U2F mengaktifkan kunci keamanan untuk mengakses akun anda." + }, + "u2fTitle": { + "message": "Kunci Keamanan FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Gunakan kunci yang mendukung WebAUthn untuk mengakses akun anda." + }, + "webAuthnMigrated": { + "message": "(Dipindahkan dari FIDO)" + }, + "emailTitle": { + "message": "Surel" + }, + "emailDesc": { + "message": "Kode verifikasi akan dikirim via email kepada Anda." + }, + "continue": { + "message": "Lanjutkan" + }, + "organization": { + "message": "Organisasi" + }, + "organizations": { + "message": "Organisasi" + }, + "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." + }, + "moveManyToOrgDesc": { + "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." + }, + "collectionsDesc": { + "message": "Edit koleksi tempat item ini dibagikan. Hanya pengguna organisasi dengan akses ke koleksi ini yang dapat melihat item ini." + }, + "deleteSelectedItemsDesc": { + "message": "Anda telah memilih $COUNT$ item untuk dihapus. Anda yakin ingin menghapus semua item ini?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Pilih folder tempat Anda ingin memindahkan $COUNT$ item yang dipilih.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Anda telah memilih $COUNT$ item. $MOVEABLE_COUNT$ item bisa dipindahkan ke sebuah organisasi, $NONMOVEABLE_COUNT$ tidak bisa.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Kode Verifikasi (TOTP)" + }, + "copyVerificationCode": { + "message": "Salin Kode Verifikasi" + }, + "warning": { + "message": "Peringatan" + }, + "confirmVaultExport": { + "message": "Konfirmasi Ekspor Vault" + }, + "exportWarningDesc": { + "message": "Ekspor ini berisi data vault Anda dalam format yang tidak dienkripsi. Anda tidak boleh menyimpan atau mengirim file yang diekspor melalui saluran yang tidak aman (seperti email). Hapus segera setelah Anda selesai menggunakannya." + }, + "encExportKeyWarningDesc": { + "message": "Ekspor ini mengenkripsi data Anda menggunakan kunci enkripsi akun Anda. Jika Anda pernah memutar kunci enkripsi akun Anda, Anda harus mengekspor lagi karena Anda tidak akan dapat mendekripsi file ekspor ini." + }, + "encExportAccountWarningDesc": { + "message": "Kunci enkripsi akun adalah unik untuk setiap akun pengguna Bitwarden, sehingga Anda tidak dapat mengimpor ekspor terenkripsi ke akun yang berbeda." + }, + "export": { + "message": "Ekspor" + }, + "exportVault": { + "message": "Ekspor Brankas" + }, + "fileFormat": { + "message": "Format Berkas" + }, + "exportSuccess": { + "message": "Data brankas Anda telah diekspor." + }, + "passwordGenerator": { + "message": "Pembuat Kata Sandi" + }, + "minComplexityScore": { + "message": "Skor Kompleksitas Minimum" + }, + "minNumbers": { + "message": "Angka Minimum" + }, + "minSpecial": { + "message": "Karakter Khusus Minimum", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Hindari Karakter Ambigu" + }, + "regeneratePassword": { + "message": "Buat Ulang Sandi" + }, + "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": "Sertakan Digit" + }, + "passwordHistory": { + "message": "Riwayat Kata Sandi" + }, + "noPasswordsInList": { + "message": "Tidak ada sandi yang dapat dicantumkan." + }, + "clear": { + "message": "Bersihkan", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Akun Diperbarui" + }, + "changeEmail": { + "message": "Ubah Surel" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Surel Baru" + }, + "code": { + "message": "Kode" + }, + "changeEmailDesc": { + "message": "Kami telah mengirimkan kode verifikasi melalui email ke $EMAIL$. Silakan periksa email Anda untuk kode ini dan masukkan di bawah ini untuk menyelesaikan perubahan alamat email.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Melanjutkan akan mengeluarkan Anda dari sesi saat ini, mengharuskan Anda untuk masuk kembali. Sesi aktif di perangkat lain dapat terus aktif hingga satu jam." + }, + "emailChanged": { + "message": "Surel Diubah" + }, + "logBackIn": { + "message": "Harap masuk kembali." + }, + "logBackInOthersToo": { + "message": "Harap masuk kembali. Jika Anda menggunakan aplikasi Bitwarden lain, keluarlah dan masuk kembali ke sana juga." + }, + "changeMasterPassword": { + "message": "Ubah Kata Sandi Utama" + }, + "masterPasswordChanged": { + "message": "Kata Sandi Utama Berubah" + }, + "currentMasterPass": { + "message": "Kata Sandi Utama Saat Ini" + }, + "newMasterPass": { + "message": "Kata Sandi Utama Baru" + }, + "confirmNewMasterPass": { + "message": "Konfirmasi Kata Sandi Utama Baru" + }, + "encKeySettings": { + "message": "Pengaturan Kunci Enkripsi" + }, + "kdfAlgorithm": { + "message": "Algoritma KDF" + }, + "kdfIterations": { + "message": "Iterasi KDF" + }, + "kdfIterationsDesc": { + "message": "Iterasi KDF yang lebih tinggi dapat membantu melindungi kata sandi utama Anda agar tidak dipaksakan secara brutal oleh penyerang. Kami merekomendasikan nilai $VALUE$ atau lebih.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Mengatur iterasi KDF Anda terlalu tinggi dapat mengakibatkan kinerja yang buruk saat masuk ke (dan membuka kunci) Bitwarden di perangkat dengan CPU yang lebih lambat. Kami menyarankan Anda untuk meningkatkan nilai dengan kelipatan $INCREMENT$ dan kemudian menguji semua perangkat Anda.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Ubah KDF" + }, + "encKeySettingsChanged": { + "message": "Pengaturan Kunci Enkripsi Berubah" + }, + "dangerZone": { + "message": "Zona Bahaya" + }, + "dangerZoneDesc": { + "message": "Hati-hati, tindakan ini tidak bisa dibatalkan!" + }, + "deauthorizeSessions": { + "message": "Batalkan Otorisasi Sesi" + }, + "deauthorizeSessionsDesc": { + "message": "Khawatir akun Anda masuk di perangkat lain? Lanjutkan di bawah untuk membatalkan otorisasi semua komputer atau perangkat yang pernah Anda gunakan sebelumnya. Langkah keamanan ini disarankan jika Anda sebelumnya menggunakan komputer publik atau secara tidak sengaja menyimpan sandi Anda di perangkat yang bukan milik Anda. Langkah ini juga akan menghapus semua sesi login dua langkah yang diingat sebelumnya." + }, + "deauthorizeSessionsWarning": { + "message": "Melanjutkan juga akan mengeluarkan Anda dari sesi saat ini, mengharuskan Anda untuk masuk kembali. Anda juga akan diminta untuk masuk dua langkah lagi, jika diaktifkan. Sesi aktif di perangkat lain dapat terus aktif hingga satu jam." + }, + "sessionsDeauthorized": { + "message": "Semua Sesi Dicabut Izinnya" + }, + "purgeVault": { + "message": "Bersihkan Vault" + }, + "purgedOrganizationVault": { + "message": "Kubah organisasi yang dibersihkan." + }, + "vaultAccessedByProvider": { + "message": "Brankas diakses oleh provider." + }, + "purgeVaultDesc": { + "message": "Lanjutkan di bawah untuk menghapus semua item dan folder di lemari besi Anda. Item milik organisasi yang Anda bagikan tidak akan dihapus." + }, + "purgeOrgVaultDesc": { + "message": "Lanjutkan di bawah untuk menghapus semua item di lemari besi organisasi." + }, + "purgeVaultWarning": { + "message": "Membersihkan lemari besi Anda bersifat permanen. Itu tidak bisa dibatalkan." + }, + "vaultPurged": { + "message": "Lemari besi Anda telah dibersihkan." + }, + "deleteAccount": { + "message": "Hapus akun" + }, + "deleteAccountDesc": { + "message": "Lanjutkan di bawah untuk menghapus akun Anda dan semua data terkait." + }, + "deleteAccountWarning": { + "message": "Menghapus akun Anda bersifat permanen. Itu tidak bisa dibatalkan." + }, + "accountDeleted": { + "message": "Akun Dihapus" + }, + "accountDeletedDesc": { + "message": "Akun Anda telah ditutup dan semua data terkait telah dihapus." + }, + "myAccount": { + "message": "Akun Saya" + }, + "tools": { + "message": "Alat" + }, + "importData": { + "message": "Impor Data" + }, + "importError": { + "message": "Impor Kesalahan" + }, + "importErrorDesc": { + "message": "Ada masalah dengan data yang Anda coba impor. Harap selesaikan kesalahan yang tercantum di bawah ini di file sumber Anda dan coba lagi." + }, + "importSuccess": { + "message": "Data telah berhasil diimpor ke lemari besi Anda." + }, + "importWarning": { + "message": "Anda mengimpor data ke $ORGANIZATION$. Data Anda dapat dibagikan dengan anggota organisasi ini. Apakah Anda ingin melanjutkan?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data tidak diformat dengan benar. Silakan periksa file impor Anda dan coba lagi." + }, + "importNothingError": { + "message": "Tidak ada yang diimpor." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Pilih format file impor" + }, + "selectImportFile": { + "message": "Pilih file impor" + }, + "orCopyPasteFileContents": { + "message": "atau salin / tempel konten file impor" + }, + "instructionsFor": { + "message": "$NAME$ Instruksi", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Pilihan" + }, + "optionsDesc": { + "message": "Sesuaikan pengalaman web vault Anda." + }, + "optionsUpdated": { + "message": "Opsi diperbarui" + }, + "language": { + "message": "Bahasa" + }, + "languageDesc": { + "message": "Ubah bahasa yang digunakan oleh brankas web." + }, + "disableIcons": { + "message": "Nonaktifkan Ikon Situs Web" + }, + "disableIconsDesc": { + "message": "Ikon Situs Web memberikan gambar yang dapat dikenali di samping setiap item login di lemari besi Anda." + }, + "enableGravatars": { + "message": "Aktifkan Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Gunakan gambar avatar yang dimuat dari gravatar.com." + }, + "enableFullWidth": { + "message": "Aktifkan Tata Letak Lebar Penuh", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Izinkan kubah web memperluas lebar penuh jendela browser." + }, + "default": { + "message": "Bawaan" + }, + "domainRules": { + "message": "Aturan Domain" + }, + "domainRulesDesc": { + "message": "Jika Anda memiliki info masuk yang sama di beberapa domain situs web yang berbeda, Anda dapat menandai situs web tersebut sebagai \"setara\". Domain \"Global\" sudah dibuat untuk Anda oleh Bitwarden." + }, + "globalEqDomains": { + "message": "Domain Setara Global" + }, + "customEqDomains": { + "message": "Domain Setara Kustom" + }, + "exclude": { + "message": "Mengecualikan" + }, + "include": { + "message": "Termasuk" + }, + "customize": { + "message": "Sesuaikan" + }, + "newCustomDomain": { + "message": "Domain Kustom Baru" + }, + "newCustomDomainDesc": { + "message": "Masukkan daftar domain yang dipisahkan dengan koma. Hanya domain \"dasar\" yang diperbolehkan. Jangan masukkan subdomain. Misalnya, masukkan \"google.com\", bukan \"www.google.com\". Anda juga dapat memasukkan \"androidapp: //package.name\" untuk mengaitkan aplikasi android dengan domain situs lain." + }, + "customDomainX": { + "message": "Domain Khusus $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domain diperbaharui" + }, + "twoStepLogin": { + "message": "Info masuk dua langkah" + }, + "twoStepLoginDesc": { + "message": "Amankan akun Anda dengan meminta langkah tambahan saat masuk." + }, + "twoStepLoginOrganizationDesc": { + "message": "Mewajibkan login dua langkah untuk pengguna organisasi Anda dengan mengonfigurasi penyedia di tingkat organisasi." + }, + "twoStepLoginRecoveryWarning": { + "message": "Mengaktifkan login dua langkah dapat mengunci Anda secara permanen dari akun Bitwarden Anda. Kode pemulihan memungkinkan Anda untuk mengakses akun Anda jika Anda tidak dapat lagi menggunakan penyedia proses masuk dua langkah biasa (mis. Anda kehilangan perangkat). Dukungan Bitwarden tidak akan dapat membantu Anda jika Anda kehilangan akses ke akun Anda. Kami menyarankan Anda untuk menuliskan atau mencetak kode pemulihan dan menyimpannya di tempat yang aman." + }, + "viewRecoveryCode": { + "message": "Lihat Kode Pemulihan" + }, + "providers": { + "message": "Penyedia", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Aktifkan" + }, + "enabled": { + "message": "Diaktifkan" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Keanggotaan Premium" + }, + "premiumRequired": { + "message": "Memerlukan Keanggotaan Premium" + }, + "premiumRequiredDesc": { + "message": "Keanggotaan premium diperlukan untuk menggunakan fitur ini." + }, + "youHavePremiumAccess": { + "message": "Anda memiliki akses premium" + }, + "alreadyPremiumFromOrg": { + "message": "Anda sudah memiliki akses ke fitur premium karena organisasi tempat Anda menjadi anggota." + }, + "manage": { + "message": "Kelola" + }, + "disable": { + "message": "Nonaktifkan" + }, + "twoStepLoginProviderEnabled": { + "message": "Penyedia proses masuk dua langkah ini diaktifkan di akun Anda." + }, + "twoStepLoginAuthDesc": { + "message": "Masukkan kata sandi utama Anda untuk mengubah pengaturan login dua langkah." + }, + "twoStepAuthenticatorDesc": { + "message": "Ikuti langkah-langkah berikut untuk menyiapkan login dua langkah dengan aplikasi pengautentikasi:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Unduh aplikasi autentikator dua langkah" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Butuh aplikasi pengautentikasi dua langkah? Unduh salah satu dari yang berikut ini" + }, + "iosDevices": { + "message": "Perangkat iOS" + }, + "androidDevices": { + "message": "Perangkat Android" + }, + "windowsDevices": { + "message": "Perangkat Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Aplikasi ini direkomendasikan, namun aplikasi pengautentikasi lain juga akan berfungsi." + }, + "twoStepAuthenticatorScanCode": { + "message": "Pindai kode QR ini dengan aplikasi pengautentikasi Anda" + }, + "key": { + "message": "Kunci" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Masukkan 6 digit kode verifikasi yang dihasilkan dari aplikasi" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Jika Anda perlu menambahkannya ke perangkat lain, di bawah ini adalah kode QR (atau kunci) yang diperlukan oleh aplikasi autentikator Anda." + }, + "twoStepDisableDesc": { + "message": "Anda yakin ingin menonaktifkan penyedia proses masuk dua langkah ini?" + }, + "twoStepDisabled": { + "message": "Penyedia proses masuk dua langkah dinonaktifkan." + }, + "twoFactorYubikeyAdd": { + "message": "Tambahkan YubiKey baru ke akun Anda" + }, + "twoFactorYubikeyPlugIn": { + "message": "Colokkan YubiKey ke port USB komputer Anda." + }, + "twoFactorYubikeySelectKey": { + "message": "Pilih bidang masukan YubiKey kosong pertama di bawah ini." + }, + "twoFactorYubikeyTouchButton": { + "message": "Sentuh tombol YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Simpan formulir." + }, + "twoFactorYubikeyWarning": { + "message": "Karena keterbatasan platform, YubiKeys tidak dapat digunakan di semua aplikasi Bitwarden. Anda harus mengaktifkan penyedia proses masuk dua langkah lainnya sehingga Anda dapat mengakses akun Anda saat YubiKeys tidak dapat digunakan. Platform yang didukung:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Kubah web, aplikasi desktop, CLI, dan semua ekstensi peramban di perangkat dengan port USB yang dapat menerima YubiKey Anda." + }, + "twoFactorYubikeySupportMobile": { + "message": "Aplikasi seluler di perangkat dengan kemampuan NFC atau port data yang dapat menerima YubiKey Anda." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Kunci U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Kunci WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Dukungan NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Salah satu kunci saya mendukung NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Jika salah satu YubiKey Anda mendukung NFC (seperti YubiKey NEO), Anda akan diminta pada perangkat seluler setiap kali ketersediaan NFC terdeteksi." + }, + "yubikeysUpdated": { + "message": "YubiKeys diperbarui" + }, + "disableAllKeys": { + "message": "Nonaktifkan Semua Kunci" + }, + "twoFactorDuoDesc": { + "message": "Masukkan informasi aplikasi Bitwarden dari panel Duo Admin Anda." + }, + "twoFactorDuoIntegrationKey": { + "message": "Kunci Integrasi" + }, + "twoFactorDuoSecretKey": { + "message": "Kunci Rahasia" + }, + "twoFactorDuoApiHostname": { + "message": "Nama Host API" + }, + "twoFactorEmailDesc": { + "message": "Ikuti langkah-langkah berikut untuk menyiapkan login dua langkah dengan email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Masukkan email yang ingin Anda terima kode verifikasi" + }, + "twoFactorEmailEnterCode": { + "message": "Masukkan 6 digit kode verifikasi yang dihasilkan dari email" + }, + "sendEmail": { + "message": "Kirim Surel" + }, + "twoFactorU2fAdd": { + "message": "Tambahkan kunci keamanan FIDO U2F ke akun Anda" + }, + "removeU2fConfirmation": { + "message": "Anda yakin ingin menghapus kunci keamanan ini?" + }, + "twoFactorWebAuthnAdd": { + "message": "Tambahkan kunci keamanan WebAuthn ke akun Anda" + }, + "readKey": { + "message": "Baca Kunci" + }, + "keyCompromised": { + "message": "Kunci disusupi." + }, + "twoFactorU2fGiveName": { + "message": "Beri nama kunci keamanan untuk mengidentifikasinya." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Colokkan kunci keamanan ke port USB komputer Anda dan klik tombol \"Read Key\"." + }, + "twoFactorU2fTouchButton": { + "message": "Jika kunci keamanan memiliki tombol, sentuhlah." + }, + "twoFactorU2fSaveForm": { + "message": "Simpan formulir." + }, + "twoFactorU2fWarning": { + "message": "Karena keterbatasan platform, FIDO U2F tidak dapat digunakan di semua aplikasi Bitwarden. Anda harus mengaktifkan penyedia login dua langkah lainnya sehingga Anda dapat mengakses akun Anda saat FIDO U2F tidak dapat digunakan. Platform yang didukung:" + }, + "twoFactorU2fSupportWeb": { + "message": "Kubah web dan ekstensi browser di desktop / laptop dengan browser yang mendukung U2F (Chrome, Opera, Vivaldi, atau Firefox dengan FIDO U2F diaktifkan)." + }, + "twoFactorU2fWaiting": { + "message": "Menunggu Anda menyentuh tombol di kunci keamanan Anda" + }, + "twoFactorU2fClickSave": { + "message": "Klik tombol \"Simpan\" di bawah untuk mengaktifkan kunci keamanan ini untuk login dua langkah." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Ada masalah saat membaca kunci keamanan. Coba lagi." + }, + "twoFactorWebAuthnWarning": { + "message": "Karena keterbatasan platform, WebAuthn tidak dapat digunakan di semua aplikasi Bitwarden. Anda harus mengaktifkan penyedia proses masuk dua langkah lainnya sehingga Anda dapat mengakses akun Anda saat WebAUthn tidak dapat digunakan. Platform yang didukung:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Brankas web dan ekstensi browser di desktop / laptop dengan browser yang mendukung WebAuthn (Chrome, Opera, Vivaldi, atau Firefox dengan FIDO U2F diaktifkan)." + }, + "twoFactorRecoveryYourCode": { + "message": "Kode pemulihan masuk dua langkah Bitwarden Anda" + }, + "twoFactorRecoveryNoCode": { + "message": "Anda belum mengaktifkan penyedia proses masuk dua langkah apa pun. Setelah Anda mengaktifkan penyedia proses masuk dua langkah, Anda dapat memeriksa kembali di sini untuk kode pemulihan Anda." + }, + "printCode": { + "message": "Cetak Kode", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Laporan" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Laporan Situs Web Tidak Aman" + }, + "unsecuredWebsitesReportDesc": { + "message": "Menggunakan situs web tidak aman dengan skema http: // dapat berbahaya. Jika situs web memungkinkan, Anda harus selalu mengaksesnya menggunakan skema https: // sehingga koneksi Anda terenkripsi." + }, + "unsecuredWebsitesFound": { + "message": "Situs Web Tidak Aman Ditemukan" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Kami menemukan $COUNT$ item di lemari besi Anda dengan URI yang tidak aman. Anda harus mengubah skema URI mereka menjadi https: // jika situs web mengizinkannya.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Tidak ada item di vault Anda yang memiliki URI tidak aman." + }, + "inactive2faReport": { + "message": "Laporan 2FA tidak aktif" + }, + "inactive2faReportDesc": { + "message": "Otentikasi dua faktor (2FA) adalah pengaturan keamanan penting yang membantu mengamankan akun Anda. Jika situs web menawarkannya, Anda harus selalu mengaktifkan otentikasi dua faktor." + }, + "inactive2faFound": { + "message": "Login Tanpa Ditemukan 2FA" + }, + "inactive2faFoundDesc": { + "message": "Kami menemukan $COUNT$ situs web di lemari besi Anda yang mungkin tidak dikonfigurasi dengan otentikasi dua faktor (menurut twofactorauth.org). Untuk lebih melindungi akun ini, Anda harus mengaktifkan otentikasi dua faktor.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Tidak ada situs web yang ditemukan di lemari besi Anda dengan konfigurasi otentikasi dua faktor yang hilang." + }, + "instructions": { + "message": "Instruksi" + }, + "exposedPasswordsReport": { + "message": "Laporan Kata Sandi Terkena" + }, + "exposedPasswordsReportDesc": { + "message": "Kata sandi yang terbuka adalah kata sandi yang telah ditemukan dalam pelanggaran data yang diketahui yang dirilis secara publik atau dijual di web gelap oleh peretas." + }, + "exposedPasswordsFound": { + "message": "Kata Sandi Terkena Ditemukan" + }, + "exposedPasswordsFoundDesc": { + "message": "Kami menemukan $COUNT$ item di lemari besi Anda yang memiliki sandi yang diketahui dalam pelanggaran data yang diketahui. Anda harus mengubahnya untuk menggunakan kata sandi baru.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Tidak ada item di lemari besi Anda yang memiliki kata sandi yang telah terungkap dalam pelanggaran data yang diketahui." + }, + "checkExposedPasswords": { + "message": "Periksa Kata Sandi yang Terekspos" + }, + "exposedXTimes": { + "message": "Dipaparkan $COUNT$ kali", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Laporan Kata Sandi Lemah" + }, + "weakPasswordsReportDesc": { + "message": "Kata sandi yang lemah dapat dengan mudah ditebak oleh peretas dan alat otomatis yang digunakan untuk memecahkan kata sandi. Pembuat kata sandi Bitwarden dapat membantu Anda membuat kata sandi yang kuat." + }, + "weakPasswordsFound": { + "message": "Kata Sandi Lemah Ditemukan" + }, + "weakPasswordsFoundDesc": { + "message": "Kami menemukan $COUNT$ item di lemari besi Anda dengan sandi yang tidak kuat. Anda harus memperbaruinya untuk menggunakan kata sandi yang lebih kuat.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Tidak ada item di lemari besi Anda yang memiliki kata sandi yang lemah." + }, + "reusedPasswordsReport": { + "message": "Laporan Kata Sandi yang Digunakan Kembali" + }, + "reusedPasswordsReportDesc": { + "message": "Jika layanan yang Anda gunakan disusupi, menggunakan kembali kata sandi yang sama di tempat lain dapat memungkinkan peretas untuk dengan mudah mendapatkan akses ke lebih banyak akun online Anda. Anda harus menggunakan kata sandi unik untuk setiap akun atau layanan." + }, + "reusedPasswordsFound": { + "message": "Kata Sandi yang Digunakan Kembali Ditemukan" + }, + "reusedPasswordsFoundDesc": { + "message": "Kami menemukan $COUNT$ sandi yang digunakan kembali di lemari besi Anda. Anda harus mengubahnya menjadi nilai unik.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Tidak ada login di vault Anda yang memiliki sandi yang sedang digunakan kembali." + }, + "reusedXTimes": { + "message": "Digunakan kembali $COUNT$ kali", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Laporan Pelanggaran Data" + }, + "breachDesc": { + "message": "\"Pelanggaran\" adalah insiden ketika data situs telah diakses secara ilegal oleh peretas dan kemudian dirilis ke publik. Tinjau jenis data yang disusupi (alamat email, sandi, kartu kredit, dll.) Dan lakukan tindakan yang sesuai, seperti mengubah sandi." + }, + "breachCheckUsernameEmail": { + "message": "Periksa nama pengguna atau alamat email yang Anda gunakan." + }, + "checkBreaches": { + "message": "Periksa Pelanggaran" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ tidak ditemukan dalam pelanggaran data yang diketahui.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Kabar Baik", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ ditemukan dalam $COUNT$ pelanggaran data online yang berbeda.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Ditemukan Akun yang Dilanggar" + }, + "compromisedData": { + "message": "Data yang disusupi" + }, + "website": { + "message": "Situs Web" + }, + "affectedUsers": { + "message": "Pengguna yang Terkena Dampak" + }, + "breachOccurred": { + "message": "Terjadi Pelanggaran" + }, + "breachReported": { + "message": "Pelanggaran Dilaporkan" + }, + "reportError": { + "message": "Terjadi kesalahan saat mencoba memuat laporan. Coba lagi" + }, + "billing": { + "message": "Penagihan" + }, + "accountCredit": { + "message": "Kredit Akun", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo rekening", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Tambahkan Pulsa", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Jumlah", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Kredit tambahan akan muncul di akun Anda setelah pembayaran selesai diproses. Beberapa metode pembayaran tertunda dan dapat memakan waktu lebih lama untuk diproses daripada yang lain." + }, + "makeSureEnoughCredit": { + "message": "Harap pastikan bahwa akun Anda memiliki cukup kredit yang tersedia untuk pembelian ini. Jika akun Anda tidak memiliki cukup kredit yang tersedia, metode pembayaran default Anda yang tercatat akan digunakan untuk selisihnya. Anda dapat menambahkan kredit ke akun Anda dari halaman Penagihan." + }, + "creditAppliedDesc": { + "message": "Kredit akun Anda dapat digunakan untuk melakukan pembelian. Semua kredit yang tersedia akan secara otomatis diterapkan ke faktur yang dibuat untuk akun ini." + }, + "goPremium": { + "message": "Jadi Anggota Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Anda telah ditingkatkan ke premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Tingkatkan akun Anda ke keanggotaan premium dan buka beberapa fitur tambahan yang hebat." + }, + "premiumSignUpStorage": { + "message": "Penyimpanan terenkripsi 1 GB untuk lampiran file." + }, + "premiumSignUpTwoStep": { + "message": "Opsi login dua langkah tambahan seperti YubiKey, FIDO U2F, dan Duo." + }, + "premiumSignUpEmergency": { + "message": "Akses darurat" + }, + "premiumSignUpReports": { + "message": "Kebersihan kata sandi, kesehatan akun, dan laporan pelanggaran data untuk menjaga brankas Anda tetap aman." + }, + "premiumSignUpTotp": { + "message": "Generator kode verifikasi TOTP (2FA) untuk login di lemari besi Anda." + }, + "premiumSignUpSupport": { + "message": "Dukungan pelanggan prioritas." + }, + "premiumSignUpFuture": { + "message": "Semua fitur premium masa depan. Selebihnya datang segera!" + }, + "premiumPrice": { + "message": "Semuanya hanya dengan $PRICE$ / tahun!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Pengaya" + }, + "premiumAccess": { + "message": "Akses Premium" + }, + "premiumAccessDesc": { + "message": "Anda dapat menambahkan akses premium ke semua anggota organisasi Anda dengan $PRICE$ / $INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Tambahan Penyimpanan (GB)" + }, + "additionalStorageGbDesc": { + "message": "# dari GB tambahan" + }, + "additionalStorageIntervalDesc": { + "message": "Paket Anda dilengkapi dengan $SIZE$ penyimpanan file terenkripsi. Anda dapat menambahkan penyimpanan tambahan dengan $PRICE$ per GB / $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Ringkasan" + }, + "total": { + "message": "Jumlah" + }, + "year": { + "message": "tahun" + }, + "month": { + "message": "bulan" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Metode pembayaran Anda akan segera ditagih dan kemudian secara berulang setiap tahun. Anda dapat membatalkannya kapan saja." + }, + "paymentCharged": { + "message": "Metode pembayaran Anda akan segera ditagih dan kemudian secara berulang setiap $INTERVAL$. Anda dapat membatalkannya kapan saja.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Paket Anda dilengkapi dengan uji coba gratis selama 7 hari. Metode pembayaran Anda tidak akan ditagih hingga uji coba berakhir. Penagihan akan dilakukan secara berulang setiap $INTERVAL$. Anda dapat membatalkannya kapan saja." + }, + "paymentInformation": { + "message": "Informasi Pembayaran" + }, + "billingInformation": { + "message": "Informasi tagihan" + }, + "creditCard": { + "message": "Kartu kredit" + }, + "paypalClickSubmit": { + "message": "Klik tombol PayPal untuk masuk ke akun PayPal Anda, lalu klik tombol Kirim di bawah untuk melanjutkan." + }, + "cancelSubscription": { + "message": "Batalkan Langganan" + }, + "subscriptionCanceled": { + "message": "Langganan telah dibatalkan." + }, + "pendingCancellation": { + "message": "Pembatalan Menunggu Keputusan" + }, + "subscriptionPendingCanceled": { + "message": "Langganan telah ditandai untuk pembatalan pada akhir periode penagihan saat ini." + }, + "reinstateSubscription": { + "message": "Pulihkan Langganan" + }, + "reinstateConfirmation": { + "message": "Anda yakin ingin menghapus permintaan pembatalan yang menunggu keputusan dan memulihkan langganan Anda?" + }, + "reinstated": { + "message": "Langganan telah dipulihkan." + }, + "cancelConfirmation": { + "message": "Anda yakin ingin membatalkan? Anda akan kehilangan akses ke semua fitur langganan ini di akhir siklus penagihan ini." + }, + "canceledSubscription": { + "message": "Langganan telah dibatalkan." + }, + "neverExpires": { + "message": "Tidak Pernah berakhir" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Biaya berikutnya" + }, + "details": { + "message": "Detailnya" + }, + "downloadLicense": { + "message": "Mengunduh lisensi" + }, + "updateLicense": { + "message": "Perbarui Lisensi" + }, + "updatedLicense": { + "message": "Lisensi yang diperbarui" + }, + "manageSubscription": { + "message": "Kelola Langganan" + }, + "storage": { + "message": "Penyimpanan" + }, + "addStorage": { + "message": "Tambahkan Penyimpanan" + }, + "removeStorage": { + "message": "Hapus Penyimpanan" + }, + "subscriptionStorage": { + "message": "Langganan Anda memiliki total penyimpanan file terenkripsi $MAX_STORAGE$ GB. Anda saat ini menggunakan $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Cara Pembayaran" + }, + "noPaymentMethod": { + "message": "Tidak ada metode pembayaran yang tercatat." + }, + "addPaymentMethod": { + "message": "Tambahkan Metode Pembayaran" + }, + "changePaymentMethod": { + "message": "Ubah Metode Pembayaran" + }, + "invoices": { + "message": "Faktur" + }, + "noInvoices": { + "message": "Tidak ada faktur." + }, + "paid": { + "message": "Dibayar", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Belum dibayar", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transaksi", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Tidak ada transaksi." + }, + "chargeNoun": { + "message": "Biaya", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Pengembalian dana", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Tagihan apa pun akan muncul di laporan mutasi Anda sebagai $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB Penyimpanan Untuk Ditambahkan" + }, + "gbStorageRemove": { + "message": "GB Penyimpanan Untuk Menghapus" + }, + "storageAddNote": { + "message": "Menambahkan penyimpanan akan menghasilkan penyesuaian pada total penagihan Anda dan segera menagih metode pembayaran Anda yang tercatat. Tagihan pertama akan diprorata untuk sisa siklus penagihan saat ini." + }, + "storageRemoveNote": { + "message": "Menghapus penyimpanan akan mengakibatkan penyesuaian pada total penagihan Anda yang akan dihitung secara prorata sebagai kredit untuk tagihan penagihan Anda berikutnya." + }, + "adjustedStorage": { + "message": "Menyesuaikan penyimpanan $AMOUNT$ GB.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Hubungi Dukungan Pelanggan" + }, + "updatedPaymentMethod": { + "message": "Metode pembayaran yang diperbarui." + }, + "purchasePremium": { + "message": "Beli Premium" + }, + "licenseFile": { + "message": "File Lisensi" + }, + "licenseFileDesc": { + "message": "File lisensi Anda akan diberi nama seperti $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Untuk meningkatkan akun Anda ke keanggotaan premium, Anda perlu mengunggah file lisensi yang valid." + }, + "uploadLicenseFileOrg": { + "message": "Untuk membuat organisasi yang dihosting di lokasi, Anda perlu mengupload file lisensi yang valid." + }, + "accountEmailMustBeVerified": { + "message": "Alamat email akun Anda harus diverifikasi." + }, + "newOrganizationDesc": { + "message": "Organisasi memungkinkan Anda berbagi bagian lemari besi Anda dengan orang lain serta mengelola pengguna terkait untuk entitas tertentu seperti keluarga, tim kecil, atau perusahaan besar." + }, + "generalInformation": { + "message": "Informasi Umum" + }, + "organizationName": { + "message": "Nama Organisasi" + }, + "accountOwnedBusiness": { + "message": "Akun ini dimiliki oleh bisnis." + }, + "billingEmail": { + "message": "Email Penagihan" + }, + "businessName": { + "message": "Nama Bisnis" + }, + "chooseYourPlan": { + "message": "Pilih Paket Anda" + }, + "users": { + "message": "Pengguna" + }, + "userSeats": { + "message": "Kursi Pengguna" + }, + "additionalUserSeats": { + "message": "Kursi Pengguna Tambahan" + }, + "userSeatsDesc": { + "message": "# kursi pengguna" + }, + "userSeatsAdditionalDesc": { + "message": "Paket Anda dilengkapi dengan $BASE_SEATS$ kursi pengguna. Anda dapat menambahkan pengguna tambahan dengan $SEAT_PRICE$ per pengguna / bulan.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Berapa banyak kursi pengguna yang Anda butuhkan? Anda juga dapat menambahkan kursi tambahan nanti jika perlu." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Untuk pengujian atau pengguna pribadi untuk berbagi dengan $COUNT$ pengguna lain.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Keluarga" + }, + "planDescFamilies": { + "message": "Untuk penggunaan pribadi, untuk berbagi dengan keluarga & teman." + }, + "planNameTeams": { + "message": "Tim" + }, + "planDescTeams": { + "message": "Untuk bisnis dan organisasi tim lainnya." + }, + "planNameEnterprise": { + "message": "Perusahaan" + }, + "planDescEnterprise": { + "message": "Untuk bisnis dan organisasi besar lainnya." + }, + "freeForever": { + "message": "Bebas selamanya" + }, + "includesXUsers": { + "message": "termasuk $COUNT$ pengguna", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Pengguna Tambahan" + }, + "costPerUser": { + "message": "$COST$ per pengguna", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Terbatas untuk $COUNT$ pengguna (termasuk Anda)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Terbatas untuk $COUNT$ koleksi", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Tambahkan dan bagikan hingga $COUNT$ pengguna", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Tambahkan dan bagikan dengan pengguna tanpa batas" + }, + "createUnlimitedCollections": { + "message": "Buat Koleksi tanpa batas" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ penyimpanan file terenkripsi", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Hosting milik sendiri (opsional)" + }, + "usersGetPremium": { + "message": "Pengguna mendapatkan akses ke Fitur Premium" + }, + "controlAccessWithGroups": { + "message": "Kontrol akses pengguna dengan Grup" + }, + "syncUsersFromDirectory": { + "message": "Sinkronkan pengguna dan Grup Anda dari direktori" + }, + "trackAuditLogs": { + "message": "Lacak tindakan pengguna dengan log audit" + }, + "enforce2faDuo": { + "message": "Terapkan 2FA dengan Duo" + }, + "priorityCustomerSupport": { + "message": "Dukungan pelanggan prioritas" + }, + "xDayFreeTrial": { + "message": "$COUNT$ hari uji coba gratis, batalkan kapan saja", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Bulanan" + }, + "annually": { + "message": "Setiap tahun" + }, + "basePrice": { + "message": "Harga dasar" + }, + "organizationCreated": { + "message": "Organisasi Dibuat" + }, + "organizationReadyToGo": { + "message": "Organisasi baru Anda siap digunakan!" + }, + "organizationUpgraded": { + "message": "Organisasi Anda telah ditingkatkan." + }, + "leave": { + "message": "Meninggalkan" + }, + "leaveOrganizationConfirmation": { + "message": "Yakin ingin keluar dari organisasi ini?" + }, + "leftOrganization": { + "message": "Anda telah keluar dari organisasi." + }, + "defaultCollection": { + "message": "Koleksi Default" + }, + "getHelp": { + "message": "Dapatkan Bantuan" + }, + "getApps": { + "message": "Dapatkan Aplikasinya" + }, + "loggedInAs": { + "message": "Masuk sebagai" + }, + "eventLogs": { + "message": "Log Peristiwa" + }, + "people": { + "message": "Orang-orang" + }, + "policies": { + "message": "Kebijakan" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Kebijakan" + }, + "groups": { + "message": "Grup" + }, + "newGroup": { + "message": "Grup baru" + }, + "addGroup": { + "message": "Tambahkan Grup" + }, + "editGroup": { + "message": "Sunting Grup" + }, + "deleteGroupConfirmation": { + "message": "Apakah Anda yakin ingin menghapus grup ini?" + }, + "removeUserConfirmation": { + "message": "Apakah Anda yakin ingin menghapus pengguna ini?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "Id Eksternal" + }, + "externalIdDesc": { + "message": "Id eksternal dapat digunakan sebagai referensi atau untuk menautkan sumber daya ini ke sistem eksternal seperti direktori pengguna." + }, + "accessControl": { + "message": "Kontrol akses" + }, + "groupAccessAllItems": { + "message": "Grup ini dapat mengakses dan mengubah semua item." + }, + "groupAccessSelectedCollections": { + "message": "Grup ini hanya dapat mengakses koleksi yang dipilih." + }, + "readOnly": { + "message": "Baca Saja" + }, + "newCollection": { + "message": "Koleksi baru" + }, + "addCollection": { + "message": "Tambahkan Koleksi" + }, + "editCollection": { + "message": "Edit Koleksi" + }, + "deleteCollectionConfirmation": { + "message": "Apakah Anda yakin ingin menghapus koleksi ini?" + }, + "editUser": { + "message": "Edit Pengguna" + }, + "inviteUser": { + "message": "Undang Pengguna" + }, + "inviteUserDesc": { + "message": "Undang pengguna baru ke organisasi Anda dengan memasukkan alamat email akun Bitwarden mereka di bawah ini. Jika mereka belum memiliki akun Bitwarden, mereka akan diminta untuk membuat akun baru." + }, + "inviteMultipleEmailDesc": { + "message": "Anda dapat mengundang hingga $COUNT$ pengguna sekaligus dengan memisahkan daftar alamat email dengan koma.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Pengguna ini menggunakan proses masuk dua langkah untuk melindungi akun mereka." + }, + "userAccessAllItems": { + "message": "Pengguna ini dapat mengakses dan mengubah semua item." + }, + "userAccessSelectedCollections": { + "message": "Pengguna ini hanya dapat mengakses koleksi yang dipilih." + }, + "search": { + "message": "Cari" + }, + "invited": { + "message": "Diundang" + }, + "accepted": { + "message": "Diterima" + }, + "confirmed": { + "message": "Dikonfirmasi" + }, + "clientOwnerEmail": { + "message": "Pemilik email klien" + }, + "owner": { + "message": "Pemilik" + }, + "ownerDesc": { + "message": "Pengguna dengan akses tertinggi yang dapat mengelola semua aspek organisasi Anda." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admin dapat mengakses dan mengelola semua item, koleksi, dan pengguna di organisasi Anda." + }, + "user": { + "message": "Pengguna" + }, + "userDesc": { + "message": "Pengguna biasa dengan akses ke koleksi yang ditetapkan di organisasi Anda." + }, + "manager": { + "message": "Pengelola" + }, + "managerDesc": { + "message": "Manajer dapat mengakses dan mengelola koleksi yang ditetapkan di organisasi Anda." + }, + "all": { + "message": "Semua" + }, + "refresh": { + "message": "Segarkan" + }, + "timestamp": { + "message": "Stempel waktu" + }, + "event": { + "message": "Peristiwa" + }, + "unknown": { + "message": "Tidak diketahui" + }, + "loadMore": { + "message": "Muat lebih banyak" + }, + "mobile": { + "message": "Seluler", + "description": "Mobile app" + }, + "extension": { + "message": "Ekstensi", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Brankas web" + }, + "loggedIn": { + "message": "Sudah masuk." + }, + "changedPassword": { + "message": "Kata sandi akun diubah." + }, + "enabledUpdated2fa": { + "message": "Proses masuk dua langkah diaktifkan / diperbarui." + }, + "disabled2fa": { + "message": "Proses masuk dua langkah dinonaktifkan." + }, + "recovered2fa": { + "message": "Akun yang dipulihkan dari login dua langkah." + }, + "failedLogin": { + "message": "Upaya login gagal dengan sandi yang salah." + }, + "failedLogin2fa": { + "message": "Upaya masuk gagal dengan proses masuk dua langkah yang salah." + }, + "exportedVault": { + "message": "Brankas yang diekspor." + }, + "exportedOrganizationVault": { + "message": "Brankas organisasi yang diekspor." + }, + "editedOrgSettings": { + "message": "Pengaturan organisasi yang diedit." + }, + "createdItemId": { + "message": "Membuat item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Item $ID$ telah diedit.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Mengirim item $ID$ ke sampah.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Memindahkan item $ID$ ke sebuah organisasi.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Melihat item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Melihat kata sandi untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Melihat bidang tersembunyi untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Melihat kode keamanan untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Sandi disalin untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Bidang tersembunyi disalin untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kode keamanan disalin untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Item yang diisi otomatis $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Koleksi yang dibuat $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Koleksi $ID$ diedit.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Koleksi $ID$ dihapus.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Kebijakan $ID$ telah diedit.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Membuat grup $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Grup $ID$ diedit.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Grup $ID$ dihapus.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Pengguna $ID$ dihapus.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Lampiran dibuat untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Lampiran dihapus untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Koleksi yang diedit untuk item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "$ID$ pengguna yang diundang.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "$ID$ pengguna yang dikonfirmasi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "$ID$ telah diedit.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Grup yang diedit untuk pengguna $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO tidak ditautkan untuk pengguna $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organisasi yang dibuat $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organisasi yang ditambahkan $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organisasi yang dihapus $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Perangkat" + }, + "view": { + "message": "Tampilan" + }, + "invalidDateRange": { + "message": "Rentang tanggal tidak valid." + }, + "errorOccurred": { + "message": "Sebuah kesalahan telah terjadi." + }, + "userAccess": { + "message": "Akses Pengguna" + }, + "userType": { + "message": "Tipe Pengguna" + }, + "groupAccess": { + "message": "Akses Grup" + }, + "groupAccessUserDesc": { + "message": "Edit grup tempat pengguna ini berada." + }, + "invitedUsers": { + "message": "Pengguna yang diundang." + }, + "resendInvitation": { + "message": "Mengirim kembali undangan" + }, + "resendEmail": { + "message": "Kirim Ulang Email" + }, + "hasBeenReinvited": { + "message": "$USER$ telah diundang.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Konfirmasi" + }, + "confirmUser": { + "message": "Konfirmasi Pengguna" + }, + "hasBeenConfirmed": { + "message": "$USER$ telah dikonfirmasi.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Konfirmasi Pengguna" + }, + "usersNeedConfirmed": { + "message": "Anda memiliki pengguna yang telah menerima undangannya, tetapi masih perlu dikonfirmasi. Pengguna tidak akan memiliki akses ke organisasi sampai mereka dikonfirmasi." + }, + "startDate": { + "message": "Mulai tanggal" + }, + "endDate": { + "message": "Tanggal Berakhir" + }, + "verifyEmail": { + "message": "Verifikasi email" + }, + "verifyEmailDesc": { + "message": "Verifikasi alamat email akun Anda untuk membuka akses ke semua fitur." + }, + "verifyEmailFirst": { + "message": "Alamat email akun Anda harus diverifikasi terlebih dahulu." + }, + "checkInboxForVerification": { + "message": "Periksa kotak masuk email Anda untuk tautan verifikasi." + }, + "emailVerified": { + "message": "Email Anda telah diverifikasi." + }, + "emailVerifiedFailed": { + "message": "Tidak dapat memverifikasi email Anda. Coba kirim email verifikasi baru." + }, + "emailVerificationRequired": { + "message": "Verifikasi Email Diperlukan" + }, + "emailVerificationRequiredDesc": { + "message": "Anda harus mengkonfirmasi email anda untuk menggunakan fitur ini." + }, + "updateBrowser": { + "message": "Perbarui Browser" + }, + "updateBrowserDesc": { + "message": "Anda menggunakan browser web yang tidak didukung. Kubah web mungkin tidak berfungsi dengan baik." + }, + "joinOrganization": { + "message": "Bergabunglah dengan Organisasi" + }, + "joinOrganizationDesc": { + "message": "Anda telah diundang untuk bergabung dengan organisasi yang tercantum di atas. Untuk menerima undangan, Anda harus masuk atau membuat akun Bitwarden baru." + }, + "inviteAccepted": { + "message": "Undangan Diterima" + }, + "inviteAcceptedDesc": { + "message": "Anda dapat mengakses organisasi ini setelah administrator mengonfirmasi keanggotaan Anda. Kami akan mengirimi Anda email jika itu terjadi." + }, + "inviteAcceptFailed": { + "message": "Tidak dapat menerima undangan. Minta admin organisasi untuk mengirim undangan baru." + }, + "inviteAcceptFailedShort": { + "message": "Tidak dapat menerima undangan. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Ingat email" + }, + "recoverAccountTwoStepDesc": { + "message": "Jika Anda tidak dapat mengakses akun Anda melalui metode masuk dua langkah biasa, Anda dapat menggunakan kode pemulihan masuk dua langkah untuk menonaktifkan semua penyedia dua langkah di akun Anda." + }, + "recoverAccountTwoStep": { + "message": "Pulihkan Akun Dua Langkah Masuk" + }, + "twoStepRecoverDisabled": { + "message": "Proses masuk dua langkah telah dinonaktifkan di akun Anda." + }, + "learnMore": { + "message": "Pelajari lebih lanjut" + }, + "deleteRecoverDesc": { + "message": "Masukkan alamat email Anda di bawah ini untuk memulihkan dan menghapus akun Anda." + }, + "deleteRecoverEmailSent": { + "message": "Jika akun Anda ada, kami telah mengirimi Anda email dengan instruksi lebih lanjut." + }, + "deleteRecoverConfirmDesc": { + "message": "Anda telah meminta untuk menghapus akun Bitwarden Anda. Klik tombol di bawah untuk konfirmasi." + }, + "myOrganization": { + "message": "Organisasi Saya" + }, + "deleteOrganization": { + "message": "Hapus Organisasi" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisasi Dihapus" + }, + "organizationDeletedDesc": { + "message": "Organisasi dan semua data terkait telah dihapus." + }, + "organizationUpdated": { + "message": "Organisasi diperbarui" + }, + "taxInformation": { + "message": "Informasi pajak" + }, + "taxInformationDesc": { + "message": "Untuk pelanggan di AS, kode pos diperlukan untuk memenuhi persyaratan pajak penjualan, untuk negara lain Anda dapat memberikan nomor identifikasi pajak (PPN / GST) dan / atau alamat secara opsional yang akan muncul di faktur Anda." + }, + "billingPlan": { + "message": "Paket", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Ubah Paket", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Tingkatkan akun Anda ke paket lain dengan memberikan informasi di bawah ini. Harap pastikan bahwa Anda memiliki metode pembayaran aktif yang ditambahkan ke akun.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktur #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Lihat Faktur" + }, + "downloadInvoice": { + "message": "Mengunduh Faktur" + }, + "verifyBankAccount": { + "message": "Verifikasi Rekening Bank" + }, + "verifyBankAccountDesc": { + "message": "Kami telah melakukan dua setoran mikro ke rekening bank Anda (mungkin perlu 1-2 hari kerja untuk muncul). Masukkan jumlah ini untuk memverifikasi rekening bank." + }, + "verifyBankAccountInitialDesc": { + "message": "Pembayaran dengan rekening bank hanya tersedia untuk pelanggan di Amerika Serikat. Anda akan diminta untuk memverifikasi rekening bank Anda. Kami akan melakukan dua setoran mikro dalam 1-2 hari kerja ke depan. Masukkan jumlah ini di halaman penagihan organisasi untuk memverifikasi rekening bank." + }, + "verifyBankAccountFailureWarning": { + "message": "Kegagalan untuk memverifikasi rekening bank akan mengakibatkan pembayaran yang terlewat dan langganan Anda dinonaktifkan." + }, + "verifiedBankAccount": { + "message": "Rekening bank telah diverifikasi." + }, + "bankAccount": { + "message": "Akun bank" + }, + "amountX": { + "message": "Jumlah $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Nomor Perutean", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Nomor akun" + }, + "accountHolderName": { + "message": "Nama pemilik akun" + }, + "bankAccountType": { + "message": "Jenis akun" + }, + "bankAccountTypeCompany": { + "message": "Perusahaan (Bisnis)" + }, + "bankAccountTypeIndividual": { + "message": "Individu (Personal)" + }, + "enterInstallationId": { + "message": "Masukkan id instalasi Anda" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Tambahkan Kursi", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Hapus Kursi", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Langganan Anda memungkinkan total $COUNT$ pengguna.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Batasi Langganan (Opsional)" + }, + "subscriptionSeats": { + "message": "Kouta Langganan" + }, + "subscriptionUpdated": { + "message": "Langganan diperbarui" + }, + "additionalOptions": { + "message": "Opsi Tambahan" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Anda tidak dapat mengundang lebih dari $COUNT$ user tanpa mengupgrade langganan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Kursi Untuk Ditambahkan" + }, + "seatsToRemove": { + "message": "Kursi Untuk Dihapus" + }, + "seatsAddNote": { + "message": "Menambahkan kursi pengguna akan menghasilkan penyesuaian pada total penagihan Anda dan segera menagih metode pembayaran Anda yang tercatat. Tagihan pertama akan diprorata untuk sisa siklus penagihan saat ini." + }, + "seatsRemoveNote": { + "message": "Menghapus kursi pengguna akan mengakibatkan penyesuaian pada total penagihan Anda yang akan dihitung secara prorata sebagai kredit untuk tagihan penagihan Anda berikutnya." + }, + "adjustedSeats": { + "message": "Menyesuaikan kursi pengguna $AMOUNT$.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Kunci Diperbarui" + }, + "updateKeyTitle": { + "message": "Perbarui Kunci" + }, + "updateEncryptionKey": { + "message": "Perbarui Kunci Enkripsi" + }, + "updateEncryptionKeyShortDesc": { + "message": "Anda saat ini menggunakan skema enkripsi yang sudah ketinggalan zaman." + }, + "updateEncryptionKeyDesc": { + "message": "Kami telah pindah ke kunci enkripsi yang lebih besar yang memberikan keamanan lebih baik dan akses ke fitur yang lebih baru. Memperbarui kunci enkripsi Anda dengan cepat dan mudah. Cukup ketikkan kata sandi utama Anda di bawah ini. Pembaruan ini pada akhirnya akan menjadi wajib." + }, + "updateEncryptionKeyWarning": { + "message": "Setelah memperbarui kunci enkripsi Anda, Anda diminta untuk keluar dan masuk kembali ke semua aplikasi Bitwarden yang saat ini Anda gunakan (seperti aplikasi seluler atau ekstensi browser). Kegagalan untuk keluar dan masuk kembali (yang mengunduh kunci enkripsi baru Anda) dapat menyebabkan kerusakan data. Kami akan mencoba mengeluarkan Anda secara otomatis, namun, hal itu mungkin tertunda." + }, + "updateEncryptionKeyExportWarning": { + "message": "Ekspor terenkripsi apa pun yang telah Anda simpan juga akan menjadi tidak valid." + }, + "subscription": { + "message": "Langganan" + }, + "loading": { + "message": "Memuat" + }, + "upgrade": { + "message": "Meningkatkan" + }, + "upgradeOrganization": { + "message": "Tingkatkan Organisasi" + }, + "upgradeOrganizationDesc": { + "message": "Fitur ini tidak tersedia untuk organisasi gratis. Beralih ke paket berbayar untuk membuka lebih banyak fitur." + }, + "createOrganizationStep1": { + "message": "Buat Organisasi: Langkah 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Sebelum membuat organisasi Anda, Anda harus terlebih dahulu membuat akun pribadi gratis." + }, + "refunded": { + "message": "Dikembalikan" + }, + "nothingSelected": { + "message": "Anda belum memilih apa pun." + }, + "acceptPolicies": { + "message": "Dengan mencentang kotak ini, anda menyetujui yang berikut:" + }, + "acceptPoliciesError": { + "message": "Persyaratan Layanan dan Kebijakan Privasi belum diakui." + }, + "termsOfService": { + "message": "Persyaratan Layanan" + }, + "privacyPolicy": { + "message": "Kebijakan Privasi" + }, + "filters": { + "message": "Filter" + }, + "vaultTimeout": { + "message": "Batas Waktu Brankas" + }, + "vaultTimeoutDesc": { + "message": "Pilih kapan vault Anda akan habis waktu dan melakukan tindakan yang dipilih." + }, + "oneMinute": { + "message": "1 menit" + }, + "fiveMinutes": { + "message": "5 menit" + }, + "fifteenMinutes": { + "message": "15 menit" + }, + "thirtyMinutes": { + "message": "30 menit" + }, + "oneHour": { + "message": "1 jam" + }, + "fourHours": { + "message": "4 jam" + }, + "onRefresh": { + "message": "Di Segarkan Browser" + }, + "dateUpdated": { + "message": "Di perbarui", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Kata Sandi Diperbarui", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisasi dinonaktifkan." + }, + "licenseIsExpired": { + "message": "Lisensi sudah kadaluarsa." + }, + "updatedUsers": { + "message": "Pengguna yang diperbarui" + }, + "selected": { + "message": "Terpilih" + }, + "ownership": { + "message": "Kepemilikan" + }, + "whoOwnsThisItem": { + "message": "Siapa pemilik item ini?" + }, + "strong": { + "message": "Kuat", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Baik", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Lemah", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Sangat Lemah", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Kata Sandi Utama Lemah" + }, + "weakMasterPasswordDesc": { + "message": "Kata sandi utama yang Anda pilih lemah. Anda harus menggunakan kata sandi utama yang kuat (atau frasa sandi) untuk melindungi akun Bitwarden Anda dengan benar. Apakah Anda yakin ingin menggunakan kata sandi utama ini?" + }, + "rotateAccountEncKey": { + "message": "Juga rotasikan kunci enkripsi akun saya" + }, + "rotateEncKeyTitle": { + "message": "Putar Kunci Enkripsi" + }, + "rotateEncKeyConfirmation": { + "message": "Anda yakin ingin merotasi kunci enkripsi akun Anda?" + }, + "attachmentsNeedFix": { + "message": "Item ini memiliki lampiran file lama yang perlu diperbaiki." + }, + "attachmentFixDesc": { + "message": "Ini adalah lampiran file lama yang perlu diperbaiki. Klik untuk mempelajari lebih lanjut." + }, + "fix": { + "message": "Perbaiki", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Ada lampiran file lama di lemari besi Anda yang perlu diperbaiki sebelum Anda dapat merotasi kunci enkripsi akun Anda." + }, + "yourAccountsFingerprint": { + "message": "Frase sidik jari akun 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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Untuk memastikan integritas kunci enkripsi Anda, harap verifikasi frasa sidik jari pengguna sebelum melanjutkan.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Jangan tanya untuk memverifikasi frase sidik jari lagi", + "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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Kunci API" + }, + "apiKeyDesc": { + "message": "Kunci API Anda dapat digunakan untuk mengautentikasi ke API publik Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Memutar kunci API akan membuat kunci sebelumnya tidak valid. Anda dapat merotasi kunci API Anda jika Anda yakin bahwa kunci saat ini tidak lagi aman untuk digunakan." + }, + "apiKeyWarning": { + "message": "Kunci API Anda memiliki akses penuh ke organisasi. Itu harus dirahasiakan." + }, + "userApiKeyDesc": { + "message": "Kunci API Anda dapat digunakan untuk mengautentikasi di Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Kunci API Anda adalah mekanisme otentikasi alternatif. Itu harus dirahasiakan." + }, + "oauth2ClientCredentials": { + "message": "Kredensial Klien OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Lihat Kunci API" + }, + "rotateApiKey": { + "message": "Rotasi Kunci API" + }, + "selectOneCollection": { + "message": "Anda harus memilih setidaknya satu koleksi." + }, + "couldNotChargeCardPayInvoice": { + "message": "Kami tidak dapat menagih kartu Anda. Harap lihat dan bayar faktur yang belum dibayar yang tercantum di bawah." + }, + "inAppPurchase": { + "message": "Pembelian dalam Aplikasi" + }, + "cannotPerformInAppPurchase": { + "message": "Anda tidak dapat melakukan tindakan ini saat menggunakan metode pembayaran pembelian dalam aplikasi." + }, + "manageSubscriptionFromStore": { + "message": "Anda harus mengelola langganan Anda dari toko tempat pembelian dalam aplikasi Anda dilakukan." + }, + "minLength": { + "message": "Panjang Minimum" + }, + "clone": { + "message": "Klon" + }, + "masterPassPolicyDesc": { + "message": "Tetapkan persyaratan minimum untuk kekuatan kata sandi utama." + }, + "twoStepLoginPolicyDesc": { + "message": "Mewajibkan pengguna untuk mengatur login dua langkah di akun pribadi mereka." + }, + "twoStepLoginPolicyWarning": { + "message": "Anggota organisasi yang tidak mengaktifkan login dua langkah untuk akun pribadinya akan dihapus dari organisasi dan akan menerima email yang memberi tahu mereka tentang perubahan tersebut." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Anda adalah anggota organisasi yang memerlukan login dua langkah untuk diaktifkan di akun pengguna Anda. Jika Anda menonaktifkan semua penyedia proses masuk dua langkah, Anda akan secara otomatis dihapus dari organisasi ini." + }, + "passwordGeneratorPolicyDesc": { + "message": "Tetapkan persyaratan minimum untuk konfigurasi pembuat kata sandi." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Satu atau beberapa kebijakan organisasi memengaruhi pengaturan generator Anda." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Jumlah Kata Minimum" + }, + "defaultType": { + "message": "Jenis Default" + }, + "userPreference": { + "message": "Preferensi Pengguna" + }, + "vaultTimeoutAction": { + "message": "Tindakan Batas Waktu Vault" + }, + "vaultTimeoutActionLockDesc": { + "message": "Kubah yang terkunci mengharuskan Anda memasukkan kembali kata sandi utama Anda untuk mengaksesnya lagi." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Vault keluar mengharuskan Anda mengautentikasi ulang untuk mengaksesnya lagi." + }, + "lock": { + "message": "Mengunci", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Sampah", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Cari Sampah" + }, + "permanentlyDelete": { + "message": "Hapus Secara Permanen" + }, + "permanentlyDeleteSelected": { + "message": "Hapus yang Dipilih Secara Permanen" + }, + "permanentlyDeleteItem": { + "message": "Hapus Item Secara Permanen" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Apakah Anda yakin ingin menghapus item ini secara permanen?" + }, + "permanentlyDeletedItem": { + "message": "Item yang Dihapus Secara Permanen" + }, + "permanentlyDeletedItems": { + "message": "Item yang Dihapus Secara Permanen" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Anda telah memilih $COUNT$ item untuk dihapus secara permanen. Anda yakin ingin menghapus semua item ini secara permanen?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Item yang dihapus secara permanen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Mengembalikan" + }, + "restoreSelected": { + "message": "Pulihkan yang Dipilih" + }, + "restoreItem": { + "message": "Pulihkan Item" + }, + "restoredItem": { + "message": "Item yang Dipulihkan" + }, + "restoredItems": { + "message": "Item yang Dipulihkan" + }, + "restoreItemConfirmation": { + "message": "Apakah Anda yakin ingin memulihkan item ini?" + }, + "restoreItems": { + "message": "Pulihkan Item" + }, + "restoreSelectedItemsDesc": { + "message": "Anda telah memilih $COUNT$ item untuk dipulihkan. Anda yakin ingin memulihkan semua item ini?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Item yang dipulihkan $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Keluar akan menghapus semua akses ke lemari besi Anda dan memerlukan otentikasi online setelah periode batas waktu. Anda yakin ingin menggunakan pengaturan ini?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Konfirmasi Tindakan Timeout" + }, + "hidePasswords": { + "message": "Sembunyikan Kata Sandi" + }, + "countryPostalCodeRequiredDesc": { + "message": "Kami memerlukan informasi ini untuk menghitung pajak penjualan dan pelaporan keuangan saja." + }, + "includeVAT": { + "message": "Sertakan Informasi VAT / GST (opsional)" + }, + "taxIdNumber": { + "message": "Nomor Pajak VAT / GST" + }, + "taxInfoUpdated": { + "message": "Informasi pajak diperbarui." + }, + "setMasterPassword": { + "message": "Atur Kata Sandi Utama" + }, + "ssoCompleteRegistration": { + "message": "Untuk menyelesaikan masuk dengan SSO, harap setel kata sandi utama untuk mengakses dan melindungi brankas Anda." + }, + "identifier": { + "message": "Pengenal" + }, + "organizationIdentifier": { + "message": "Pengenal Organisasi" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Masuk menggunakan portal sistem masuk tunggal organisasi Anda. Harap masukkan pengenal organisasi Anda untuk memulai." + }, + "enterpriseSingleSignOn": { + "message": "Sistem Masuk Tunggal Perusahaan" + }, + "ssoHandOff": { + "message": "Sekarang anda dapat menutup tab ini dan melanjutkan ekstensi." + }, + "includeAllTeamsFeatures": { + "message": "Semua fitur Teams, plus:" + }, + "includeSsoAuthentication": { + "message": "Autentikasi SSO melalui SAML2.0 dan OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Kebijakan Perusahaan" + }, + "ssoValidationFailed": { + "message": "Validasi SSO Gagal" + }, + "ssoIdentifierRequired": { + "message": "Pengenal Organisasi wajib diisi." + }, + "unlinkSso": { + "message": "Batalkan tautan SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Tautkan SSO" + }, + "singleOrg": { + "message": "Organisasi Tunggal" + }, + "singleOrgDesc": { + "message": "Batasi pengguna untuk dapat bergabung dengan organisasi lain." + }, + "singleOrgBlockCreateMessage": { + "message": "Organisasi Anda saat ini memiliki kebijakan yang tidak mengizinkan Anda untuk bergabung dengan lebih dari satu organisasi. Silakan hubungi admin organisasi Anda atau daftar dari akun Bitwarden yang berbeda." + }, + "singleOrgPolicyWarning": { + "message": "Anggota organisasi yang bukan Pemilik atau Administrator dan sudah menjadi anggota organisasi lain akan dihapus dari organisasi Anda." + }, + "requireSso": { + "message": "Autentikasi Sistem Masuk Tunggal" + }, + "requireSsoPolicyDesc": { + "message": "Wajibkan pengguna untuk masuk dengan metode Sistem Masuk Tunggal Perusahaan." + }, + "prerequisite": { + "message": "Prasyarat" + }, + "requireSsoPolicyReq": { + "message": "Kebijakan perusahaan Organisasi Tunggal harus diaktifkan sebelum mengaktifkan kebijakan ini." + }, + "requireSsoPolicyReqError": { + "message": "Kebijakan Organisasi Tunggal tidak diaktifkan." + }, + "requireSsoExemption": { + "message": "Pemilik dan Administrator Organisasi dibebaskan dari penegakan kebijakan ini." + }, + "sendTypeFile": { + "message": "Berkas" + }, + "sendTypeText": { + "message": "Teks" + }, + "createSend": { + "message": "Buat Pengiriman Baru", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Kirim", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Dibuat Kirim", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Pengiriman diedit", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Kirim Dihapus", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSend": { + "message": "Hapus Kirim", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Anda yakin ingin menghapus Kirim ini?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "Jenis Pengiriman apakah ini?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletionDate": { + "message": "Tanggal Penghapusan" + }, + "deletionDateDesc": { + "message": "Pengiriman 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 Pengiriman 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 pengiriman 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" + }, + "sendPasswordDesc": { + "message": "Secara opsional, minta kata sandi bagi pengguna untuk mengakses Kirim 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." + }, + "disabled": { + "message": "Dinonaktifkan" + }, + "sendLink": { + "message": "Kirim Tautan", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Salin Kirim Tautan", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Hapus Kata Sandi" + }, + "removedPassword": { + "message": "Kata Sandi yang Dihapus" + }, + "removePasswordConfirmation": { + "message": "Anda yakin ingin menghapus kata sandi?" + }, + "hideEmail": { + "message": "Sembunyikan alamat email dari penerima." + }, + "disableThisSend": { + "message": "Nonaktifkan Pengiriman 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." + }, + "allSends": { + "message": "Semua Dikirim" + }, + "maxAccessCountReached": { + "message": "Jumlah akses maksimum tercapai", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Penghapusan menunggu keputusan" + }, + "expired": { + "message": "Kedaluwarsa" + }, + "searchSends": { + "message": "Pencarian Mengirim", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Pengiriman ini dilindungi dengan kata sandi. Silakan ketikkan kata sandi di bawah ini untuk melanjutkan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Tidak tahu kata sandinya? Minta sandi yang dibutuhkan Pengirim untuk mengakses Kirim ini.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Pengiriman ini disembunyikan secara default. Anda dapat mengubah visibilitasnya menggunakan tombol di bawah ini.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Unduh berkas" + }, + "sendAccessUnavailable": { + "message": "Pengiriman yang Anda coba akses tidak ada atau tidak lagi tersedia.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "File yang terkait dengan kirim ini tidak dapat ditemukan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Tidak ada Kiriman ke daftar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Akses Darurat" + }, + "emergencyAccessDesc": { + "message": "Berikan dan kelola akses darurat untuk kontak tepercaya. Kontak tepercaya dapat meminta akses ke Lihat atau Ambil alih akun Anda jika terjadi keadaan darurat. Kunjungi halaman bantuan kami untuk informasi lebih lanjut dan detail tentang cara kerja zero knowledge sharing." + }, + "emergencyAccessOwnerWarning": { + "message": "Anda adalah pemilik satu atau lebih organisasi. Jika Anda memberikan pengambilalihan akses ke kontak darurat, mereka akan dapat menggunakan semua izin Anda sebagai pemilik setelah pengambilalihan." + }, + "trustedEmergencyContacts": { + "message": "Kontak darurat tepercaya" + }, + "noTrustedContacts": { + "message": "Anda belum menambahkan kontak darurat apa pun, undang kontak tepercaya untuk memulai." + }, + "addEmergencyContact": { + "message": "Tambahkan kontak darurat" + }, + "designatedEmergencyContacts": { + "message": "Ditunjuk sebagai kontak darurat" + }, + "noGrantedAccess": { + "message": "Anda belum ditunjuk sebagai kontak darurat untuk siapa pun." + }, + "inviteEmergencyContact": { + "message": "Undang kontak darurat" + }, + "editEmergencyContact": { + "message": "Edit kontak darurat" + }, + "inviteEmergencyContactDesc": { + "message": "Undang kontak darurat baru dengan memasukkan alamat email akun Bitwarden mereka di bawah ini. Jika mereka belum memiliki akun Bitwarden, mereka akan diminta untuk membuat akun baru." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Akses Darurat Dimulai" + }, + "emergencyAccessRecoveryApproved": { + "message": "Akses Darurat Disetujui" + }, + "viewDesc": { + "message": "Dapat melihat semua item di lemari besi Anda sendiri." + }, + "takeover": { + "message": "Pengambilalihan" + }, + "takeoverDesc": { + "message": "Dapat mengatur ulang akun Anda dengan kata sandi utama baru." + }, + "waitTime": { + "message": "Waktu Tunggu" + }, + "waitTimeDesc": { + "message": "Waktu yang diperlukan sebelum memberikan akses secara otomatis." + }, + "oneDay": { + "message": "1 hari" + }, + "days": { + "message": "$DAYS$ hari", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Pengguna yang diundang." + }, + "acceptEmergencyAccess": { + "message": "Anda telah diundang menjadi kontak darurat untuk pengguna yang tercantum di atas. Untuk menerima undangan, Anda harus masuk atau membuat akun Bitwarden baru." + }, + "emergencyInviteAcceptFailed": { + "message": "Tidak dapat menerima undangan. Minta pengguna untuk mengirim undangan baru." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Tidak dapat menerima undangan. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Anda dapat mengakses opsi darurat untuk pengguna ini setelah identitas Anda dikonfirmasi. Kami akan mengirimi Anda email jika itu terjadi." + }, + "requestAccess": { + "message": "Minta Akses" + }, + "requestAccessConfirmation": { + "message": "Anda yakin ingin meminta akses darurat? Anda akan diberi akses setelah $WAITTIME$ hari atau setiap kali pengguna menyetujui permintaan secara manual.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Akses darurat diminta sebesar $USER$. Kami akan memberi tahu Anda melalui email jika memungkinkan untuk melanjutkan.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Menyetujui" + }, + "reject": { + "message": "Menolak" + }, + "approveAccessConfirmation": { + "message": "Yakin ingin menyetujui akses darurat? Ini akan memungkinkan $USER$ menjadi $ACTION$ akun Anda.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Akses darurat disetujui." + }, + "emergencyRejected": { + "message": "Akses darurat ditolak" + }, + "passwordResetFor": { + "message": "Setel ulang sandi untuk $USER$. Sekarang Anda dapat masuk menggunakan kata sandi baru.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Kepemilikan Pribadi" + }, + "personalOwnershipPolicyDesc": { + "message": "Wajibkan pengguna untuk menyimpan item vault ke organisasi dengan menghapus opsi kepemilikan pribadi." + }, + "personalOwnershipExemption": { + "message": "Pemilik dan Administrator Organisasi dibebaskan dari penegakan kebijakan ini." + }, + "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." + }, + "disableSend": { + "message": "Nonaktifkan Kirim" + }, + "disableSendPolicyDesc": { + "message": "Jangan izinkan pengguna membuat atau mengedit Kirim Bitwarden. Menghapus kirim yang ada masih diperbolehkan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Pengguna organisasi yang dapat mengelola kebijakan organisasi dibebaskan dari penegakan kebijakan ini." + }, + "sendDisabled": { + "message": "Kirim 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 kirim yang sudah ada.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptions": { + "message": "Pilihan Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Atur konfigurasi untuk membuat dan mengubah Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Ketentuan ini tidak diberlakukan untuk anggota organisasi yang bisa mengatur ketentuan organisasi." + }, + "disableHideEmail": { + "message": "Pengguna tidak boleh menyembunyikan alamat email dari penerima ketika membuat atau mengubah Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Ketentuan organization berikut ini sedang berlaku:" + }, + "sendDisableHideEmailInEffect": { + "message": "Pengguna tidak boleh menyembunyikan alamat email dari penerima ketika membuat atau mengubah Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Kebijakan yang diubah $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Harga paket" + }, + "estimatedTax": { + "message": "Cukai taksiran" + }, + "custom": { + "message": "Adat" + }, + "customDesc": { + "message": "Memungkinkan kontrol yang lebih terperinci atas izin pengguna untuk konfigurasi lanjutan." + }, + "permissions": { + "message": "Izin" + }, + "accessEventLogs": { + "message": "Akses Log Peristiwa" + }, + "accessImportExport": { + "message": "Akses Impor / Ekspor" + }, + "accessReports": { + "message": "Akses Laporan" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Kelola Semua Koleksi" + }, + "createNewCollections": { + "message": "Buat Koleksi Baru" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Hapus Koleksi" + }, + "manageAssignedCollections": { + "message": "Kelola Koleksi yang Ditugaskan" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Kelola Grup" + }, + "managePolicies": { + "message": "Kelola Kebijakan" + }, + "manageSso": { + "message": "Kelola SSO" + }, + "manageUsers": { + "message": "Kelola Pengguna" + }, + "manageResetPassword": { + "message": "Kelola Peyetelan Ulang Sandi" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Kebijakan organisasi memengaruhi opsi kepemilikan Anda." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Nonaktifkan kepemilikan pribadi untuk pengguna organisasi" + }, + "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." + }, + "sendNameDesc": { + "message": "Nama yang ramah untuk menggambarkan kirim ini.", + "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." + }, + "copySendLinkOnSave": { + "message": "Salin tautan untuk membagikan kirim ini ke clipboard saya saat menyimpan." + }, + "sendLinkLabel": { + "message": "Kirim tautan", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Kirim", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden mengirim mentransmisikan informasi sementara yang sensitif kepada orang lain dengan mudah dan aman.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Belajar lebih tentang", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Bagikan teks atau file secara langsung dengan siapa pun." + }, + "sendVaultCardLearnMore": { + "message": "Belajarlah lagi", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "lihat", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "bagaimana itu bekerja", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "atau", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "coba sekarang", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "atau", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "daftar", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "untuk mencobanya hari ini.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Pengguna Bitwarden $USER_IDENTIFIER$ berbagi yang berikut dengan Anda", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Pengguna Bitwarden yang membuat Send ini memilih untuk menyembunyikan alamat emailnya. Kamu harus yakin bahwa kamu mempercayai sumber dari link it sebelum mengunduh isinya.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Tanggal kedaluwarsa yang disediakan tidak valid." + }, + "deletionDateIsInvalid": { + "message": "Tanggal penghapusan yang disediakan tidak valid." + }, + "expirationDateAndTimeRequired": { + "message": "Diperlukan tanggal dan waktu kedaluwarsa." + }, + "deletionDateAndTimeRequired": { + "message": "Diperlukan tanggal dan waktu penghapusan." + }, + "dateParsingError": { + "message": "Ada kesalahan menyimpan penghapusan dan tanggal kedaluwarsa Anda." + }, + "webAuthnFallbackMsg": { + "message": "Untuk mengverifikasi dua-langkat autentikasi anda, silahkan click tombol dibawah." + }, + "webAuthnAuthenticate": { + "message": "Autentikasi dengan WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn tidak didukung oleh browser ini." + }, + "webAuthnSuccess": { + "message": "WebAuthn sudah diverifikasi dengan sukses. Anda dapat menutup tab ini." + }, + "hintEqualsPassword": { + "message": "Petunjuk kata sandi Anda tidak boleh sama dengan kata sandi Anda." + }, + "enrollPasswordReset": { + "message": "Ikut dalam pengubahan kata sandi" + }, + "enrolledPasswordReset": { + "message": "Anda telah ikut dalam pengubahan kata sandi" + }, + "withdrawPasswordReset": { + "message": "Keluar dari pengubahan kata sandi" + }, + "enrollPasswordResetSuccess": { + "message": "Sukses!" + }, + "withdrawPasswordResetSuccess": { + "message": "Penarikan sukses!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ sukses ikut dalam pengubahan kata sandi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ keluar dalam pengubahan kata sandi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Kata sandi utama sudah diubah untuk pengguna $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Setel ulang tautan Sso untuk user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Atur Ulang Kata Sandi" + }, + "resetPasswordLoggedOutWarning": { + "message": "Melanjutkan akan mengeluarkan Anda dari sesi saat ini, mengharuskan Anda untuk masuk kembali. Sesi aktif di perangkat lain dapat terus aktif hingga satu jam.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "pengguna ini" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Satu atau lebih kebijakan organisasi memerlukan kata sandi utama Anda untuk memenuhi persyaratan berikut:" + }, + "resetPasswordSuccess": { + "message": "Ubah kata kunci berhasil!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Dengan mengikuti fitur ini mengijinkan admin organisasi untuk merubah kata sandi utama anda. Anda yakin mau masuk fitur ini?" + }, + "resetPasswordPolicy": { + "message": "Pengubahan Kata Sandi Utama" + }, + "resetPasswordPolicyDescription": { + "message": "Mengijinkan admin dalam organisasi untuk mengubah kata sandi utama anda." + }, + "resetPasswordPolicyWarning": { + "message": "Pengguna dalam organisasi perlu untuk memilih untuk mengikuti atau diikutkan secara otomatis sebelum admin dapat merubah kata sandi utama." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Diikutkan secara otomatis" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Semua pengguna akan diikutan dalam fitur ubah kata sandi setelah undangan mereka diterima." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Pengguna yang sudah berada di dalam organisasi tidak akan diikutkan secara otomatis ke dalam fitur ubah kata sandi ini. Mereka perlu untuk mengikuti secara manual sebelum admin dapat merubah kata sandi mereka." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Ikutkan pengguna baru secara otomatis" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "passwordPrompt": { + "message": "Pengingat ulang sandi utama" + }, + "passwordConfirmation": { + "message": "Konfirmasi sandi utama" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "reinviteSelected": { + "message": "Kirim Ulang Undangan" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Pilih tema untuk brankas web anda." + }, + "themeSystem": { + "message": "Gunakan Tema Sistem" + }, + "themeDark": { + "message": "Gelap" + }, + "themeLight": { + "message": "Terang" + }, + "confirmSelected": { + "message": "Konfirmasi Pilihan" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Berhasil dikonfirmasi." + }, + "bulkReinviteMessage": { + "message": "Berhasil mengundang kembali." + }, + "bulkRemovedMessage": { + "message": "Penghapusan sukses" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Sidik Jari" + }, + "removeUsers": { + "message": "Hapus pengguna" + }, + "error": { + "message": "Galat" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Pengaturan Provider" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Nama Provider" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Klien" + }, + "providerAdmin": { + "message": "Admin Provider" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Layanan Pengguna" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Gabung Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "Organisasi Klien Baru" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Tambah Organisasi yang sudah ada" + }, + "myProvider": { + "message": "Provider Saya" + }, + "addOrganizationConfirmation": { + "message": "Anda yakin ingin menambahkan $ORGANIZATION$ sebagai klien $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider dinonaktifkan." + }, + "providerUpdated": { + "message": "Provider diperbarui" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Tambah" + }, + "updatedMasterPassword": { + "message": "Kata Sandi Telah Diperbarui" + }, + "updateMasterPassword": { + "message": "Perbarui Kata Sandi Utama" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Batas Waktu Brankas" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Batas waktu Maksimal Brankas" + }, + "invalidMaximumVaultTimeout": { + "message": "Batas waktu Maksimal Brankas tidak valid." + }, + "hours": { + "message": "Jam" + }, + "minutes": { + "message": "Menit" + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Ekspor Brankas Dinonaktifkan" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Pilih Tipe SSO" + }, + "type": { + "message": "Tipe" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Otoritas" + }, + "clientId": { + "message": "ID Klien" + }, + "clientSecret": { + "message": "Rahasia Klien" + }, + "metadataAddress": { + "message": "Alamat Metadata" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "ID Entitas SP" + }, + "spMetadataUrl": { + "message": "Metadata URL SAML 2.0" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "ID Entitas" + }, + "idpBindingType": { + "message": "Tipe Binding" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "Sertifikat Publik X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Terkirim" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Kirim Kode" + }, + "codeSent": { + "message": "Kode Terkirim" + }, + "verificationCode": { + "message": "Kode Verifikasi" + }, + "confirmIdentity": { + "message": "Konfirmasi identitas Anda untuk melanjutkan." + }, + "verificationCodeRequired": { + "message": "Kode verifikasi diperlukan." + }, + "invalidVerificationCode": { + "message": "Kode verifikasi tidak valid" + }, + "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": "Tinggalkan Organisasi" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Izinkan autentikasi SSO" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Aktifkan", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "kebijakan Otentikasi SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "untuk mewajibkan semua anggota masuk dengan SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Aktifkan SSO" + }, + "disabledSso": { + "message": "Matikan SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ diperlukan.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "diperlukan" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Kustomisasi Opsional" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json new file mode 100644 index 0000000000..61ea046c76 --- /dev/null +++ b/apps/web/src/locales/it/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Cassaforte web di $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Di quale elemento si tratta?" + }, + "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" + }, + "newPassword": { + "message": "Nuova password" + }, + "passphrase": { + "message": "Frase segreta" + }, + "notes": { + "message": "Note" + }, + "customFields": { + "message": "Campi personalizzati" + }, + "cardholderName": { + "message": "Titolare della carta" + }, + "number": { + "message": "Numero" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Scadenza" + }, + "securityCode": { + "message": "Codice di sicurezza (CVV)" + }, + "identityName": { + "message": "Nome dell'identità" + }, + "company": { + "message": "Azienda" + }, + "ssn": { + "message": "Codice fiscale/Previdenza sociale" + }, + "passportNumber": { + "message": "Numero del passaporto" + }, + "licenseNumber": { + "message": "Numero della patente" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telefono" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Rimuovi" + }, + "unassigned": { + "message": "Non assegnato" + }, + "noneFolder": { + "message": "Nessuna cartella", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Aggiungi cartella" + }, + "editFolder": { + "message": "Modifica cartella" + }, + "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." + }, + "never": { + "message": "Mai" + }, + "toggleVisibility": { + "message": "Mostra/nascondi" + }, + "toggleCollapse": { + "message": "Comprimi/espandi", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Genera password" + }, + "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 database di violazioni noti. Dovrebbe essere sicura da usare." + }, + "save": { + "message": "Salva" + }, + "cancel": { + "message": "Annulla" + }, + "canceled": { + "message": "Annullato" + }, + "close": { + "message": "Chiudi" + }, + "delete": { + "message": "Elimina" + }, + "favorite": { + "message": "Preferito" + }, + "unfavorite": { + "message": "Rimuovi dai preferiti" + }, + "edit": { + "message": "Modifica" + }, + "searchCollection": { + "message": "Cerca nella raccolta" + }, + "searchFolder": { + "message": "Cerca nella cartella" + }, + "searchFavorites": { + "message": "Cerca tra i preferiti" + }, + "searchType": { + "message": "Cerca tipo", + "description": "Search item type" + }, + "searchVault": { + "message": "Cerca nella cassaforte" + }, + "allItems": { + "message": "Tutti gli elementi" + }, + "favorites": { + "message": "Preferiti" + }, + "types": { + "message": "Tipi" + }, + "typeLogin": { + "message": "Accesso" + }, + "typeCard": { + "message": "Carta" + }, + "typeIdentity": { + "message": "Identità" + }, + "typeSecureNote": { + "message": "Nota sicura" + }, + "typeLoginPlural": { + "message": "Login" + }, + "typeCardPlural": { + "message": "Carte" + }, + "typeIdentityPlural": { + "message": "Identità" + }, + "typeSecureNotePlural": { + "message": "Note sicure" + }, + "folders": { + "message": "Cartelle" + }, + "collections": { + "message": "Raccolte" + }, + "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" + }, + "shared": { + "message": "Condiviso" + }, + "attachments": { + "message": "Allegati" + }, + "select": { + "message": "Seleziona" + }, + "addItem": { + "message": "Aggiungi elemento" + }, + "editItem": { + "message": "Modifica elemento" + }, + "viewItem": { + "message": "Visualizza elemento" + }, + "ex": { + "message": "es.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Altro" + }, + "share": { + "message": "Condividi" + }, + "moveToOrganization": { + "message": "Sposta in organizzazione" + }, + "valueCopied": { + "message": "$VALUE$ copiata", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copia valore", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copia password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copia nome utente", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copia numero", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copia codice di sicurezza", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copia URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "La mia cassaforte" + }, + "vault": { + "message": "Cassaforte" + }, + "moveSelectedToOrg": { + "message": "Sposta selezionati in organizzazione" + }, + "deleteSelected": { + "message": "Elimina selezionati" + }, + "moveSelected": { + "message": "Sposta selezionati" + }, + "selectAll": { + "message": "Seleziona tutto" + }, + "unselectAll": { + "message": "Deseleziona tutto" + }, + "launch": { + "message": "Avvia" + }, + "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 è di 500 MB." + }, + "updateKey": { + "message": "Non puoi utilizzare questa funzione finché non aggiorni la tua chiave di cifratura." + }, + "addedItem": { + "message": "Elemento aggiunto" + }, + "editedItem": { + "message": "Elemento modificato" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ spostato in $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Elementi selezionati spostati in $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Elimina elemento" + }, + "deleteFolder": { + "message": "Elimina cartella" + }, + "deleteAttachment": { + "message": "Elimina allegato" + }, + "deleteItemConfirmation": { + "message": "Sei sicuro di voler eliminare questo elemento?" + }, + "deletedItem": { + "message": "Elemento cestinato" + }, + "deletedItems": { + "message": "Elementi cestinati" + }, + "movedItems": { + "message": "Elementi spostati" + }, + "overwritePasswordConfirmation": { + "message": "Sei sicuro di voler sovrascrivere la password corrente?" + }, + "editedFolder": { + "message": "Cartella modificata" + }, + "addedFolder": { + "message": "Cartella aggiunta" + }, + "deleteFolderConfirmation": { + "message": "Sei sicuro di voler eliminare questa cartella?" + }, + "deletedFolder": { + "message": "Cartella eliminata" + }, + "loggedOut": { + "message": "Disconnesso" + }, + "loginExpired": { + "message": "La tua sessione è scaduta." + }, + "logOutConfirmation": { + "message": "Sei sicuro di volerti disconnettere?" + }, + "logOut": { + "message": "Disconnetti" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Sì" + }, + "no": { + "message": "No" + }, + "loginOrCreateNewAccount": { + "message": "Accedi o crea un nuovo account per accedere alla tua cassaforte." + }, + "createAccount": { + "message": "Crea account" + }, + "logIn": { + "message": "Accedi" + }, + "submit": { + "message": "Invia" + }, + "emailAddressDesc": { + "message": "Utilizzerai il tuo indirizzo email per accedere." + }, + "yourName": { + "message": "Il tuo nome" + }, + "yourNameDesc": { + "message": "Come dovremmo chiamarti?" + }, + "masterPass": { + "message": "Password principale" + }, + "masterPassDesc": { + "message": "La password principale è la password che utilizzi per accedere alla tua cassaforte. È molto importante che tu non la dimentichi. Non c'è modo di recuperare questa password nel caso che tu la dimenticassi." + }, + "masterPassHintDesc": { + "message": "Un suggerimento che può aiutarti a ricordare la tua password principale se la dimentichi." + }, + "reTypeMasterPass": { + "message": "Digita nuovamente la password principale" + }, + "masterPassHint": { + "message": "Suggerimento per la password principale (facoltativo)" + }, + "masterPassHintLabel": { + "message": "Suggerimento per la password principale" + }, + "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 essere almeno di 8 caratteri." + }, + "masterPassDoesntMatch": { + "message": "La conferma della password principale non corrisponde." + }, + "newAccountCreated": { + "message": "Il tuo nuovo account è stato creato! Ora puoi accedere." + }, + "masterPassSent": { + "message": "Ti abbiamo inviato un'email con il tuo suggerimento per la password principale." + }, + "unexpectedError": { + "message": "Si è verificato un errore imprevisto." + }, + "emailAddress": { + "message": "Indirizzo email" + }, + "yourVaultIsLocked": { + "message": "La tua cassaforte è bloccata. Verifica la tua password principale per continuare." + }, + "unlock": { + "message": "Sblocca" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Blocca" + }, + "noItemsInList": { + "message": "Non ci sono elementi da mostrare." + }, + "noCollectionsInList": { + "message": "Nessuna raccolta da visualizzare." + }, + "noGroupsInList": { + "message": "Non ci sono gruppi da elencare." + }, + "noUsersInList": { + "message": "Non ci sono utenti da elencare." + }, + "noEventsInList": { + "message": "Non ci sono eventi da elencare." + }, + "newOrganization": { + "message": "Nuova organizzazione" + }, + "noOrganizationsList": { + "message": "Non appartieni ad alcuna organizzazione. Le organizzazioni ti consentono di condividere oggetti in modo sicuro con altri utenti." + }, + "versionNumber": { + "message": "Versione $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 codice di verifica email" + }, + "useAnotherTwoStepMethod": { + "message": "Usa un altro metodo di verifica in due passaggi" + }, + "insertYubiKey": { + "message": "Inserisci la tua YubiKey nella porta USB del computer, 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." + }, + "loginUnavailable": { + "message": "Accesso non disponibile" + }, + "noTwoStepProviders": { + "message": "La verifica in due passaggi è abilitata su questo account, ma nessuno dei metodi configurati è supportato da questo browser." + }, + "noTwoStepProviders2": { + "message": "Utilizza un browser supportato (come Chrome) e/o aggiungi altri metodi per la verifica in due passaggi che sono supportati meglio dai browser (come un'applicazione di autenticazione)." + }, + "twoStepOptions": { + "message": "Opzioni verifica in due passaggi" + }, + "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 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": "Utilizza una YubiKey per accedere al tuo account. Funziona con dispositivi YubiKey serie 4, serie 5 e 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 organizzazione 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." + }, + "u2fDesc": { + "message": "Usa una chiave di sicurezza compatibile con FIDO U2F per accedere al tuo account." + }, + "u2fTitle": { + "message": "Chiave di sicurezza FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Usa qualsiasi chiave di sicurezza abilitata WebAuthn per accedere al tuo account." + }, + "webAuthnMigrated": { + "message": "(Migrati da FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "I codici di verifica ti saranno inviati per email." + }, + "continue": { + "message": "Continua" + }, + "organization": { + "message": "Organizzazione" + }, + "organizations": { + "message": "Organizzazioni" + }, + "moveToOrgDesc": { + "message": "Scegli un'organizzazione in cui desideri spostare questo elemento. Lo spostamento in un'organizzazione trasferisce la proprietà dell'elemento all'organizzazione. Non sarai più il proprietario diretto di questo elemento una volta spostato." + }, + "moveManyToOrgDesc": { + "message": "Scegli un'organizzazione in cui desideri spostare questo elemento. Lo spostamento in un'organizzazione trasferisce la proprietà dell'elemento all'organizzazione. Non sarai più il proprietario diretto di questo elemento una volta spostato." + }, + "collectionsDesc": { + "message": "Modifica le raccolte con le quali questo elemento viene condiviso. Solo gli utenti di organizzazioni che hanno accesso a queste raccolte saranno in grado di visualizzare questo elemento." + }, + "deleteSelectedItemsDesc": { + "message": "La selezione comprende $COUNT$ elemento/i da eliminare. Sei sicuro di voler procedere con l'eliminazione?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "La selezione comprende $COUNT$ elemento/i da spostare. Scegli una cartella di destinazione.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Hai selezionato $COUNT$ elementi. $MOVEABLE_COUNT$ elementi possono essere spostati in un'organizzazione, $NONMOVEABLE_COUNT$ no.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Codice di verifica (TOTP)" + }, + "copyVerificationCode": { + "message": "Copia il codice di verifica" + }, + "warning": { + "message": "Attenzione" + }, + "confirmVaultExport": { + "message": "Conferma esportazione della cassaforte" + }, + "exportWarningDesc": { + "message": "Questa esportazione contiene i dati della tua cassaforte in un formato non cifrato. Non salvare o inviare il file esportato su canali non protetti (come la posta elettronica). Eliminalo immediatamente dopo l'utilizzo." + }, + "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." + }, + "export": { + "message": "Esporta" + }, + "exportVault": { + "message": "Esporta cassaforte" + }, + "fileFormat": { + "message": "Formato file" + }, + "exportSuccess": { + "message": "I dati della tua cassaforte sono stati esportati." + }, + "passwordGenerator": { + "message": "Generatore di password" + }, + "minComplexityScore": { + "message": "Punteggio minimo di complessità" + }, + "minNumbers": { + "message": "Minimo di numeri" + }, + "minSpecial": { + "message": "Minimo di speciali", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evita caratteri ambigui" + }, + "regeneratePassword": { + "message": "Rigenera password" + }, + "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" + }, + "passwordHistory": { + "message": "Cronologia delle password" + }, + "noPasswordsInList": { + "message": "Non ci sono password da elencare." + }, + "clear": { + "message": "Cancella", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account aggiornato" + }, + "changeEmail": { + "message": "Cambia indirizzo email" + }, + "changeEmailTwoFactorWarning": { + "message": "Procedendo l'indirizzo email del tuo account sarà modificato ma non cambierà l'email utilizzata per l'autenticazione a due fattori. È possibile modificare questa email nelle impostazioni di accesso in due passaggi." + }, + "newEmail": { + "message": "Nuova email" + }, + "code": { + "message": "Codice" + }, + "changeEmailDesc": { + "message": "Abbiamo inviato un codice di verifica all'indirizzo $EMAIL$. Controlla la tua posta e inserisci il codice qui sotto per confermare la modifica al tuo indirizzo email.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Procedendo sarai disconnesso dalla sessione corrente, sarà necessario autenticarsi nuovamente. Le sessioni attive su altri dispositivi potrebbero rimanere attive per un massimo di un'ora." + }, + "emailChanged": { + "message": "Email modificata" + }, + "logBackIn": { + "message": "Accedi nuovamente." + }, + "logBackInOthersToo": { + "message": "Accedi nuovamente. Se ci sono altre sessioni di Bitwarden attive, ripeti l'accesso anche su quei dispositivi." + }, + "changeMasterPassword": { + "message": "Cambia password principale" + }, + "masterPasswordChanged": { + "message": "Password principale cambiata" + }, + "currentMasterPass": { + "message": "Password principale attuale" + }, + "newMasterPass": { + "message": "Nuova password principale" + }, + "confirmNewMasterPass": { + "message": "Conferma nuova password principale" + }, + "encKeySettings": { + "message": "Impostazioni chiave di cifratura" + }, + "kdfAlgorithm": { + "message": "Algoritmo KDF" + }, + "kdfIterations": { + "message": "Iterazioni KDF" + }, + "kdfIterationsDesc": { + "message": "Un numero di iterazioni KDF più elevato può aiutare a proteggere la tua password principale dall'essere forzata da un utente malintenzionato. Consigliamo un valore di $VALUE$ o più.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Impostare un numero troppo elevato di iterazioni KDF potrebbe comportare prestazioni scadenti durante l'accesso (e lo sblocco) di Bitwarden su dispositivi con CPU lente. Ti consigliamo di aumentare il valore con incrementi di $INCREMENT$ e poi provare tutti i tuoi dispositivi.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Cambia KDF" + }, + "encKeySettingsChanged": { + "message": "Impostazioni chiave di cifratura modificate" + }, + "dangerZone": { + "message": "Zona pericolosa" + }, + "dangerZoneDesc": { + "message": "Attento, queste azioni non sono reversibili!" + }, + "deauthorizeSessions": { + "message": "Annulla autorizzazione sessioni" + }, + "deauthorizeSessionsDesc": { + "message": "Preoccupato che il tuo account sia connesso su un altro dispositivo? Procedi di seguito per rimuovere l'autorizzazione a tutti i computer o dispositivi precedentemente utilizzati. Questo passaggio di sicurezza è consigliato se in precedenza hai utilizzato un PC pubblico o hai salvato per errore la tua password su un dispositivo che non è tuo. Questo passaggio cancellerà anche tutte le sessioni di verifica in due passaggi precedentemente salvate." + }, + "deauthorizeSessionsWarning": { + "message": "La procedura ti consentirà inoltre di disconnetterti dalla sessione corrente, richiedendoti di accedere di nuovo. Se abilitato, ti verrà richiesta nuovamente la verifica in due passaggi. Le sessioni attive su altri dispositivi possono continuare a rimanere attive per un massimo di un'ora." + }, + "sessionsDeauthorized": { + "message": "Tutte le sessioni sono state annullate" + }, + "purgeVault": { + "message": "Svuota cassaforte" + }, + "purgedOrganizationVault": { + "message": "Cassaforte dell'organizzazione svuotata." + }, + "vaultAccessedByProvider": { + "message": "Accesso della cassaforte da parte del fornitore." + }, + "purgeVaultDesc": { + "message": "Procedi in basso per eliminare tutti gli elementi e le cartelle nella cassaforte. Gli elementi che appartengono a un'organizzazione con cui condividi non saranno eliminati." + }, + "purgeOrgVaultDesc": { + "message": "Procedi sotto per eliminare tutti gli elementi nella cassaforte dell'organizzazione." + }, + "purgeVaultWarning": { + "message": "Lo svuotamento della cassaforte è permanente. Questa azione non è reversibile." + }, + "vaultPurged": { + "message": "La tua cassaforte è stata svuotata." + }, + "deleteAccount": { + "message": "Elimina account" + }, + "deleteAccountDesc": { + "message": "Procedi qui sotto per eliminare il tuo account e tutti i dati ad esso associati." + }, + "deleteAccountWarning": { + "message": "L'eliminazione dell'account è permanente. Questa azione non è reversibile." + }, + "accountDeleted": { + "message": "Account eliminato" + }, + "accountDeletedDesc": { + "message": "Il tuo account è stato eliminato e tutti i dati associati sono stati rimossi." + }, + "myAccount": { + "message": "Il mio account" + }, + "tools": { + "message": "Strumenti" + }, + "importData": { + "message": "Importa dati" + }, + "importError": { + "message": "Errore di importazione" + }, + "importErrorDesc": { + "message": "Si è verificato un problema con i dati che hai provato a importare. Risolvi gli errori elencati di seguito nel file importato e riprova." + }, + "importSuccess": { + "message": "I dati sono stati importati correttamente nella tua cassaforte." + }, + "importWarning": { + "message": "Stai importando dati in $ORGANIZATION$. I tuoi dati potrebbero essere condivisi con i membri di questa organizzazione. Vuoi procedere?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "I dati non sono formattati correttamente. Ricontrolla il file da importare." + }, + "importNothingError": { + "message": "Non è stato importato nulla." + }, + "importEncKeyError": { + "message": "Errore durante la decifratura del file esportato. La chiave di cifratura non corrisponde alla chiave di cifratura utilizzata per esportare i dati." + }, + "selectFormat": { + "message": "Seleziona il formato del file da importare" + }, + "selectImportFile": { + "message": "Seleziona il file da importare" + }, + "orCopyPasteFileContents": { + "message": "oppure copia e incolla il contenuto del file da importare" + }, + "instructionsFor": { + "message": "Istruzioni per $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opzioni" + }, + "optionsDesc": { + "message": "Personalizza l'esperienza della tua cassaforte web." + }, + "optionsUpdated": { + "message": "Opzioni aggiornate" + }, + "language": { + "message": "Lingua" + }, + "languageDesc": { + "message": "Cambia la lingua utilizzata dalla cassaforte web." + }, + "disableIcons": { + "message": "Disabilita icone dei siti web" + }, + "disableIconsDesc": { + "message": "Le icone dei siti web forniscono un'immagine riconoscibile accanto a ogni elemento di accesso." + }, + "enableGravatars": { + "message": "Abilita Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Usa immagine profilo caricata da gravatar.com." + }, + "enableFullWidth": { + "message": "Abilita disposizione a larghezza piena", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Consenti alla cassaforte web di sfruttare tutta la larghezza della finestra del browser." + }, + "default": { + "message": "Predefinito" + }, + "domainRules": { + "message": "Regole dei domini" + }, + "domainRulesDesc": { + "message": "Se utilizzi le stesse credenziali per accedere a servizi ospitati su domini diversi, puoi contrassegnare quei domini come \"equivalenti\". I domini \"globali\" sono già stati definiti da Bitwarden per te." + }, + "globalEqDomains": { + "message": "Domini globali equivalenti" + }, + "customEqDomains": { + "message": "Domini personalizzati equivalenti" + }, + "exclude": { + "message": "Escludi" + }, + "include": { + "message": "Includi" + }, + "customize": { + "message": "Personalizza" + }, + "newCustomDomain": { + "message": "Nuovo dominio personalizzato" + }, + "newCustomDomainDesc": { + "message": "Inserisci un elenco di domini separati da virgola. Sono permessi solo domini \"base\". Non inserire sottodomini. Per esempio, inserisci \"google.com\" invece di \"www.google.com\". Puoi inserire anche \"androidapp://package.name\" per associare un'applicazione android con altri domini." + }, + "customDomainX": { + "message": "Dominio personalizzato $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domini aggiornati" + }, + "twoStepLogin": { + "message": "Verifica in due passaggi" + }, + "twoStepLoginDesc": { + "message": "Proteggi il tuo account richiedendo un passaggio aggiuntivo all'accesso." + }, + "twoStepLoginOrganizationDesc": { + "message": "Richiedi la verifica in due passaggi per gli utenti della tua organizzazione configurando dei fornitori a livello di organizzazione." + }, + "twoStepLoginRecoveryWarning": { + "message": "Con la verifica in due passaggi potresti bloccare permanentemente il tuo account di Bitwarden. Un codice di recupero ti permette di accedere al tuo account nel caso in cui non fossi più in grado di utilizzare il tuo solito metodo di verifica (ad esempio se perdi il tuo telefono). L'assistenza di Bitwarden non sarà in grado di aiutarti qualora dovessi perdere l'accesso al tuo account. Ti consigliamo di scrivere o stampare il tuo codice di recupero e di conservarlo in un luogo sicuro." + }, + "viewRecoveryCode": { + "message": "Visualizza codice di recupero" + }, + "providers": { + "message": "Fornitori", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Abilita" + }, + "enabled": { + "message": "Abilitato" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Abbonamento Premium" + }, + "premiumRequired": { + "message": "Abbonamento Premium richiesto" + }, + "premiumRequiredDesc": { + "message": "Un abbonamento premium è richiesto per utilizzare questa funzionalità." + }, + "youHavePremiumAccess": { + "message": "Hai accesso premium" + }, + "alreadyPremiumFromOrg": { + "message": "Hai già accesso alle funzioni premium a causa di un'organizzazione di cui sei membro." + }, + "manage": { + "message": "Gestisci" + }, + "disable": { + "message": "Disabilita" + }, + "twoStepLoginProviderEnabled": { + "message": "Questo metodo di verifica in due passaggi è abilitato sul tuo account." + }, + "twoStepLoginAuthDesc": { + "message": "Inserisci la password principale per modificare le impostazioni di verifica in due passaggi." + }, + "twoStepAuthenticatorDesc": { + "message": "Segui questi passi per impostare la verifica in due passaggi con un'applicazione di autenticazione:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Scarica un'applicazione di autenticazione" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Hai bisogno di un'applicazione di autenticazione? Scarica una delle seguenti" + }, + "iosDevices": { + "message": "Dispositivi iOS" + }, + "androidDevices": { + "message": "Dispositivi Android" + }, + "windowsDevices": { + "message": "Dispositivi Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Queste applicazioni sono consigliate, tuttavia funzioneranno anche altre applicazioni di autenticazione." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scansione questo QR code con la tua applicazione di autenticazione" + }, + "key": { + "message": "Chiave" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Inserisci il codice di verifica a 6 cifre dall'applicazione di autenticazione" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Nel caso in cui fosse necessario aggiungerlo ad un altro dispositivo, di seguito è riportato il QR code (o la chiave) richiesta dalla tua applicazione di autenticazione." + }, + "twoStepDisableDesc": { + "message": "Sei sicuro di voler disabilitare questo metodo di verifica in due passaggi?" + }, + "twoStepDisabled": { + "message": "Metodo di verifica in due passaggi disabilitato." + }, + "twoFactorYubikeyAdd": { + "message": "Aggiungi una nuova YubiKey al tuo account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Collega la YubiKey nella porta USB del computer." + }, + "twoFactorYubikeySelectKey": { + "message": "Seleziona il primo campo vuoto Yubikey sotto." + }, + "twoFactorYubikeyTouchButton": { + "message": "Premere il tasto sulla YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Salva il modulo." + }, + "twoFactorYubikeyWarning": { + "message": "A causa di limitazioni della piattaforma, YubiKey non può essere utilizzato su tutte le applicazioni Bitwarden. Dovresti abilitare un altro metodo di verifica in due passaggi in modo da poter accedere al tuo account anche dove YubiKeys non può essere usato. Piattaforme supportate:" + }, + "twoFactorYubikeySupportUsb": { + "message": "La cassaforte web, l'applicazione desktop, la CLI e tutte le estensioni per browser su un dispositivo con una porta USB in grado di accettare la tua YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Le applicazioni su un dispositivo con NFC o una porta USB in grado di accettare la tua YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Chiave U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Chiave WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Supporto NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Una delle mie chiavi supporta NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Se una delle tue YubiKey supporta NFC (come la Yubikey NEO), sarà richiesto dal dispositivo mobile nel caso la disponibilità NFC venga rilevata." + }, + "yubikeysUpdated": { + "message": "Yubikey aggiornate" + }, + "disableAllKeys": { + "message": "Disabilita tutte le chiavi" + }, + "twoFactorDuoDesc": { + "message": "Inserisci le informazioni della applicazione Bitwarden dal tuo pannello amministratore Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Chiave di integrazione" + }, + "twoFactorDuoSecretKey": { + "message": "Chiave segreta" + }, + "twoFactorDuoApiHostname": { + "message": "Nome host API" + }, + "twoFactorEmailDesc": { + "message": "Segui questi passi per impostare la verifica in due passaggi con l'email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Inserisci l'email dove preferisci ricevere i codici di verifica" + }, + "twoFactorEmailEnterCode": { + "message": "Inserisci il codice di verifica di 6 cifre ricevuto tramite email" + }, + "sendEmail": { + "message": "Invia email" + }, + "twoFactorU2fAdd": { + "message": "Aggiungi una chiave di sicurezza di FIDO U2F al tuo account" + }, + "removeU2fConfirmation": { + "message": "Sei sicuro di voler rimuovere questa chiave di sicurezza?" + }, + "twoFactorWebAuthnAdd": { + "message": "Aggiungi una chiave di sicurezza WebAuthn al tuo account" + }, + "readKey": { + "message": "Leggi la chiave" + }, + "keyCompromised": { + "message": "La chiave è compromessa." + }, + "twoFactorU2fGiveName": { + "message": "Assegna alla chiave di sicurezza un nome descrittivo per identificarla." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Inserisci la chiave di sicurezza nella porta USB del tuo computer e fai clic sul pulsante \"Leggi chiave\"." + }, + "twoFactorU2fTouchButton": { + "message": "Se la chiave di protezione dispone di un pulsante, premilo." + }, + "twoFactorU2fSaveForm": { + "message": "Salva il modulo." + }, + "twoFactorU2fWarning": { + "message": "A causa di limitazioni della piattaforma, FIDO U2F non può essere utilizzato su tutte le applicazioni Bitwarden. Dovresti abilitare un altro metodo di verifica in due passaggi in modo da poter accedere al tuo account anche dove FIDO U2F non può essere usato. Piattaforme supportate:" + }, + "twoFactorU2fSupportWeb": { + "message": "Cassaforte web ed estensione per il browser desktop/laptop con un U2F browser abilitato (Chrome, Opera, Vivaldi o Firefox con FIDO U2F abilitato)." + }, + "twoFactorU2fWaiting": { + "message": "In attesa che venga premuto il pulsante della tua chiave di sicurezza" + }, + "twoFactorU2fClickSave": { + "message": "Fai clic sul pulsante \"Salva\" qui sotto per abilitare questa chiave di sicurezza per la verifica in due passaggi." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Si è verificato un problema durante la lettura della chiave di sicurezza. Riprova." + }, + "twoFactorWebAuthnWarning": { + "message": "A causa di limitazioni della piattaforma, WebAuthn non può essere utilizzato su tutte le applicazioni Bitwarden. Dovresti abilitare un altro metodo di verifica in due passaggi in modo da poter accedere al tuo account anche dove WebAuthn non può essere usato. Piattaforme supportate:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Cassaforte Web ed estensione per il browser desktop/portatile con un browser abilitato per WebAuthn (Chrome, Opera, Vivaldi o Firefox con FIDO U2F abilitato)." + }, + "twoFactorRecoveryYourCode": { + "message": "Il tuo codice di recupero Bitwarden per la verifica in due passaggi" + }, + "twoFactorRecoveryNoCode": { + "message": "Non hai ancora abilitato alcun metodo per la verifica in due passaggi. Dopo aver abilitato un metodo per la verifica in due passaggi torna qui per trovare il tuoi codice di recupero." + }, + "printCode": { + "message": "Stampa il codice", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Resoconti" + }, + "reportsDesc": { + "message": "Identifica e chiudi i problemi di sicurezza dei tuoi account online cliccando sui report in basso." + }, + "unsecuredWebsitesReport": { + "message": "Resoconto sui siti web non protetti" + }, + "unsecuredWebsitesReportDesc": { + "message": "L'utilizzo di siti web non protetti con lo schema http:// può essere pericoloso. Se il sito web lo consente, devi sempre accedervi utilizzando lo schema https:// in modo che la connessione sia cifrata." + }, + "unsecuredWebsitesFound": { + "message": "Trovati siti web non protetti" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Abbiamo trovato $COUNT$ elementi nella tua cassaforte con URI non protetti. Dovresti cambiare il loro schema URL in https:// se il sito lo consente.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Nessun elemento nella tua cassaforte ha URI non protetti." + }, + "inactive2faReport": { + "message": "Resoconto 2FA inattivi" + }, + "inactive2faReportDesc": { + "message": "L'autenticazione a due fattori (2FA) è un'impostazione di sicurezza importante che consente di proteggere i tuoi account. Se il sito web lo offre, dovresti sempre abilitare l'autenticazione a due fattori." + }, + "inactive2faFound": { + "message": "Accessi senza 2FA trovati" + }, + "inactive2faFoundDesc": { + "message": "Abbiamo trovato $COUNT$ siti web nella tua cassaforte che potrebbero non essere configurati con l'autenticazione a due fattori (secondo twofactorauth.org). Per proteggere ulteriormente questi account, è necessario abilitare l'autenticazione a due fattori.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Nessun sito web è stato trovato nella cassaforte con una configurazione di autenticazione a due fattori mancante." + }, + "instructions": { + "message": "Istruzioni" + }, + "exposedPasswordsReport": { + "message": "Resoconto sulle password esposte" + }, + "exposedPasswordsReportDesc": { + "message": "Le password esposte sono password che sono state scoperte in violazioni di dati note che sono state rilasciate pubblicamente o vendute sul dark web dagli hacker." + }, + "exposedPasswordsFound": { + "message": "Trovate password esposte" + }, + "exposedPasswordsFoundDesc": { + "message": "Abbiamo trovato $COUNT$ elementi nella tua cassaforte che hanno password che sono state esposte a violazioni di dati note. Dovresti modificarli per usare una nuova password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Nessun elemento nella tua cassaforte ha password che sono state esposte a violazioni note dei dati." + }, + "checkExposedPasswords": { + "message": "Controlla password esposte" + }, + "exposedXTimes": { + "message": "Esposto $COUNT$ volte", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Resoconto sulle password deboli" + }, + "weakPasswordsReportDesc": { + "message": "Le password deboli possono essere facilmente intuite dagli hacker e dagli strumenti automatici utilizzati per decifrare le password. Il generatore di password di Bitwarden può aiutarti a creare password robuste." + }, + "weakPasswordsFound": { + "message": "Trovate password deboli" + }, + "weakPasswordsFoundDesc": { + "message": "Abbiamo trovato $COUNT$ elementi nella tua cassaforte con password non robuste. Dovresti aggiornarli per usare password più robuste.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Nessun elemento nella tua cassaforte ha password deboli." + }, + "reusedPasswordsReport": { + "message": "Resoconto sulle password riutilizzate" + }, + "reusedPasswordsReportDesc": { + "message": "Se un servizio che usi è compromesso, riutilizzare la stessa password altrove può consentire agli hacker di accedere facilmente a più account online. È necessario utilizzare una password univoca per ogni account o servizio." + }, + "reusedPasswordsFound": { + "message": "Trovate password riutilizzate" + }, + "reusedPasswordsFoundDesc": { + "message": "Abbiamo trovato $COUNT$ password che sono riutilizzate nella tua cassaforte. Dovresti cambiarle in un valore univoco.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Nessun login nella tua cassaforte ha password che vengono riutilizzate." + }, + "reusedXTimes": { + "message": "Riutilizzata $COUNT$ volte", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Resoconto sulle violazioni dei dati" + }, + "breachDesc": { + "message": "Una \"violazione\" è un incidente dove i dati di un sito sono stati illegalmente accessi dagli hacker e poi rilasciati pubblicamente. Esaminare i tipi di dati che sono stati compromessi (indirizzi email, password, carte di credito ecc.) e adottare azioni appropriate, ad esempio la modifica delle password." + }, + "breachCheckUsernameEmail": { + "message": "Controlla ogni nome utente o indirizzi email che usi." + }, + "checkBreaches": { + "message": "Verifica violazioni" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ non è stato trovato in nessuna violazione di dati conosciuta.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Buone notizie", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ è stato trovato in $COUNT$ diversi casi di violazione di dati online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Account violati trovati" + }, + "compromisedData": { + "message": "Dati compromessi" + }, + "website": { + "message": "Sito web" + }, + "affectedUsers": { + "message": "Utenti interessati" + }, + "breachOccurred": { + "message": "Violazione verificata" + }, + "breachReported": { + "message": "Violazione segnalata" + }, + "reportError": { + "message": "Si è verificato un errore durante il tentativo di caricare il resoconto. Riprova" + }, + "billing": { + "message": "Fatturazione" + }, + "accountCredit": { + "message": "Credito account", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo account", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Aggiungi credito", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Importo", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Il credito aggiunto apparirà sul tuo account dopo che il pagamento è stato completamente elaborato. Alcuni metodi di pagamento sono in ritardo e possono richiedere più tempo per il processo rispetto ad altri." + }, + "makeSureEnoughCredit": { + "message": "Assicurati che il tuo account abbia abbastanza credito disponibile per questo acquisto. Se il tuo account non ha abbastanza credito disponibile, il tuo metodo di pagamento predefinito sarà utilizzato per la differenza. Puoi aggiungere credito al tuo account dalla pagina di fatturazione." + }, + "creditAppliedDesc": { + "message": "Il credito del tuo account può essere utilizzato per effettuare acquisti. Ogni credito disponibile sarà automaticamente applicato alle fatture generate per questo account." + }, + "goPremium": { + "message": "Passa a Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Hai effettuato l'aggiornamento a Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Aggiorna il tuo account per un abbonamento premium e sblocca alcune funzioni aggiuntive." + }, + "premiumSignUpStorage": { + "message": "1 GB di spazio di archiviazione cifrato per gli allegati." + }, + "premiumSignUpTwoStep": { + "message": "Opzioni di verifica in due passaggi aggiuntivi come YubiKey, FIDO U2F, e Duo." + }, + "premiumSignUpEmergency": { + "message": "Accesso di emergenza" + }, + "premiumSignUpReports": { + "message": "Sicurezza delle password, integrità dell'account e resoconti sulle violazioni dei dati per mantenere sicura la tua cassaforte." + }, + "premiumSignUpTotp": { + "message": "Generatore di codice (2FA) di verifica di TOTP per i login della tua cassaforte." + }, + "premiumSignUpSupport": { + "message": "Supporto clienti prioritario." + }, + "premiumSignUpFuture": { + "message": "Tutte le funzioni premium. Nuove in arrivo!" + }, + "premiumPrice": { + "message": "Il tutto per solo $PRICE$ all'anno!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Estensioni" + }, + "premiumAccess": { + "message": "Accesso Premium" + }, + "premiumAccessDesc": { + "message": "Puoi aggiungere l'accesso premium a tutti i membri della tua organizzazione per $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Spazio di archiviazione aggiuntivo (GB)" + }, + "additionalStorageGbDesc": { + "message": "# di GB aggiuntivi" + }, + "additionalStorageIntervalDesc": { + "message": "Il tuo piano viene fornito con $SIZE$ di archiviazione cifrata. Puoi aggiungere ulteriore spazio di archiviazione per $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Riepilogo" + }, + "total": { + "message": "Totale" + }, + "year": { + "message": "anno" + }, + "month": { + "message": "mese" + }, + "monthAbbr": { + "message": "mese", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Il tuo metodo di pagamento verrà addebitato immediatamente e su base ricorrente ogni anno. È possibile annullare in qualsiasi momento." + }, + "paymentCharged": { + "message": "Il tuo metodo di pagamento sarà addebitato immediatamente e poi su base ricorrente ogni $INTERVAL$. Puoi annullare in qualsiasi momento.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Il tuo piano include una prova gratuita di 7 giorni. La tua carta non verrà addebitata fino alla fine del periodo di prova e su base ricorrente ogni $INTERVAL$. È possibile annullare in qualsiasi momento." + }, + "paymentInformation": { + "message": "Informazioni sul pagamento" + }, + "billingInformation": { + "message": "Dati di fatturazione" + }, + "creditCard": { + "message": "Carta di credito" + }, + "paypalClickSubmit": { + "message": "Fai clic sul pulsante di PayPal per accedere al tuo account PayPal, quindi fai clic sul pulsante Invia per continuare." + }, + "cancelSubscription": { + "message": "Annulla abbonamento" + }, + "subscriptionCanceled": { + "message": "L'abbonamento è stato annullato." + }, + "pendingCancellation": { + "message": "In attesa di annullamento" + }, + "subscriptionPendingCanceled": { + "message": "L'abbonamento è stato contrassegnato per l'annullamento alla fine del periodo di fatturazione corrente." + }, + "reinstateSubscription": { + "message": "Ripristina abbonamento" + }, + "reinstateConfirmation": { + "message": "Sei sicuro di voler rimuovere la richiesta di annullamento in sospeso e ripristinare l'abbonamento?" + }, + "reinstated": { + "message": "L'abbonamento è stato ripristinato." + }, + "cancelConfirmation": { + "message": "Sei sicuro di voler annullare il tuo abbonamento? Alla fine di questo ciclo di fatturazione perderai l'accesso a tutte le funzionalità aggiuntive date dall'abbonamento." + }, + "canceledSubscription": { + "message": "L'abbonamento è stato annullato." + }, + "neverExpires": { + "message": "Nessuna scadenza" + }, + "status": { + "message": "Stato" + }, + "nextCharge": { + "message": "Prossimo addebito" + }, + "details": { + "message": "Dettagli" + }, + "downloadLicense": { + "message": "Scarica licenza" + }, + "updateLicense": { + "message": "Aggiorna licenza" + }, + "updatedLicense": { + "message": "Licenza aggiornata" + }, + "manageSubscription": { + "message": "Gestisci abbonamento" + }, + "storage": { + "message": "Spazio di archiviazione" + }, + "addStorage": { + "message": "Aggiungi spazio di archiviazione" + }, + "removeStorage": { + "message": "Rimuovi spazio di archiviazione" + }, + "subscriptionStorage": { + "message": "Il tuo abbonamento ha un totale di $MAX_STORAGE$ GB di spazio di archiviazione cifrato. Stai usando $USED_STORAGE$ GB di spazio.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Metodo di pagamento" + }, + "noPaymentMethod": { + "message": "Nessun metodo di pagamento selezionato." + }, + "addPaymentMethod": { + "message": "Aggiungi metodo di pagamento" + }, + "changePaymentMethod": { + "message": "Cambia il metodo di pagamento" + }, + "invoices": { + "message": "Fatture" + }, + "noInvoices": { + "message": "Nessuna fattura." + }, + "paid": { + "message": "Pagata", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Non pagata", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transazioni", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Nessuna transazione." + }, + "chargeNoun": { + "message": "Addebito", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Rimborso", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Eventuali addebiti appariranno sul tuo estratto conto come $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB di spazio di archiviazione da aggiungere" + }, + "gbStorageRemove": { + "message": "GB di spazio di archiviazione da eliminare" + }, + "storageAddNote": { + "message": "L'aggiunta di spazio di archiviazione comporterà la modifica del costo di fatturazione e addebiterà immediatamente l'importo tramite il tuo metodo di pagamento salvato. Il primo addebito verrà ripartito per il resto del ciclo di fatturazione corrente." + }, + "storageRemoveNote": { + "message": "La rimozione dello spazio di archiviazione comporterà la modifica sul totale fatturato che sarà ripartito come credito per il prossimo addebito di fatturazione." + }, + "adjustedStorage": { + "message": "$AMOUNT$ GB di spazio di archiviazione modificato.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contattare il supporto clienti" + }, + "updatedPaymentMethod": { + "message": "Metodo di pagamento aggiornato." + }, + "purchasePremium": { + "message": "Acquista Premium" + }, + "licenseFile": { + "message": "File di licenza" + }, + "licenseFileDesc": { + "message": "Il tuo file di licenza sarà chiamato ad esempio $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Per aggiornare il tuo account a un abbonamento premium dovrai caricare un file di licenza valido." + }, + "uploadLicenseFileOrg": { + "message": "Per creare un'organizzazione sul tuo server è necessario caricare un file di licenza valido." + }, + "accountEmailMustBeVerified": { + "message": "La tua email è stata verificata." + }, + "newOrganizationDesc": { + "message": "Le organizzazioni ti consentono di condividere parti della tua cassaforte con altri e di gestire gli utenti correlati per un'entità specifica come una famiglia, un piccolo team o una grande azienda." + }, + "generalInformation": { + "message": "Informazioni generali" + }, + "organizationName": { + "message": "Nome organizzazione" + }, + "accountOwnedBusiness": { + "message": "Questo account è di proprietà di un'azienda." + }, + "billingEmail": { + "message": "Email di fatturazione" + }, + "businessName": { + "message": "Ragione sociale" + }, + "chooseYourPlan": { + "message": "Scegli un piano" + }, + "users": { + "message": "Utenti" + }, + "userSeats": { + "message": "Postazioni utente" + }, + "additionalUserSeats": { + "message": "Postazioni utente aggiuntive" + }, + "userSeatsDesc": { + "message": "# di postazioni utente" + }, + "userSeatsAdditionalDesc": { + "message": "Il piano è dotato di $BASE_SEATS$ postazioni utente. È possibile aggiungere ulteriori utenti per $SEAT_PRICE$ per utente/mese.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Quante postazioni utente occorrono? È inoltre possibile aggiungere ulteriori postazioni utente successivamente se necessario." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Per test o utenti personali da condividere con $COUNT$ altri utenti.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Famiglie" + }, + "planDescFamilies": { + "message": "Per uso personale, per condividere con la famiglia e gli amici." + }, + "planNameTeams": { + "message": "Gruppi" + }, + "planDescTeams": { + "message": "Per le imprese e altre organizzazioni di gruppi." + }, + "planNameEnterprise": { + "message": "Aziendale" + }, + "planDescEnterprise": { + "message": "Per le aziende e altre organizzazioni di grandi dimensioni." + }, + "freeForever": { + "message": "Gratis per sempre" + }, + "includesXUsers": { + "message": "include $COUNT$ utenti", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Utenti aggiuntivi" + }, + "costPerUser": { + "message": "$COST$ per ogni utente", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limitato a $COUNT$ utenti (tu compreso)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limitato a $COUNT$ raccolte", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Aggiungi e condividi con un massimo di $COUNT$ utenti", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Aggiungi e condividi con utenti illimitati" + }, + "createUnlimitedCollections": { + "message": "Crea raccolte illimitate" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ di spazio di archiviazione cifrato", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Self hosting (opzionale)" + }, + "usersGetPremium": { + "message": "Gli utenti ottengono l'accesso alle funzionalità premium" + }, + "controlAccessWithGroups": { + "message": "Controllare l'accesso utente con gruppi" + }, + "syncUsersFromDirectory": { + "message": "Sincronizzare gli utenti e gruppi da una directory" + }, + "trackAuditLogs": { + "message": "Tieni traccia delle azioni di utente con i registri di controllo" + }, + "enforce2faDuo": { + "message": "Applica 2FA con Duo" + }, + "priorityCustomerSupport": { + "message": "Assistenza clienti prioritaria" + }, + "xDayFreeTrial": { + "message": "$COUNT$ giorni di prova, annulla in qualsiasi momento", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Mensile" + }, + "annually": { + "message": "Annuale" + }, + "basePrice": { + "message": "Prezzo base" + }, + "organizationCreated": { + "message": "Organizzazione creata" + }, + "organizationReadyToGo": { + "message": "La nuova organizzazione è pronta per essere usata!" + }, + "organizationUpgraded": { + "message": "La tua organizzazione è stata aggiornata." + }, + "leave": { + "message": "Abbandona" + }, + "leaveOrganizationConfirmation": { + "message": "Sei sicuro di voler lasciare questa organizzazione?" + }, + "leftOrganization": { + "message": "Hai lasciato l'organizzazione." + }, + "defaultCollection": { + "message": "Raccolta predefinita" + }, + "getHelp": { + "message": "Ottieni aiuto" + }, + "getApps": { + "message": "Scarica le applicazioni" + }, + "loggedInAs": { + "message": "Accesso eseguito come" + }, + "eventLogs": { + "message": "Registro eventi" + }, + "people": { + "message": "Persone" + }, + "policies": { + "message": "Politiche" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Modifica politica" + }, + "groups": { + "message": "Gruppi" + }, + "newGroup": { + "message": "Nuovo gruppo" + }, + "addGroup": { + "message": "Aggiungi gruppo" + }, + "editGroup": { + "message": "Modifica gruppo" + }, + "deleteGroupConfirmation": { + "message": "Sei sicuro di voler eliminare questo gruppo?" + }, + "removeUserConfirmation": { + "message": "Confermi di voler rimuovere questo utente?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Attenzione! Questo utente richiede Key Connector per gestire la crittografia. Rimuovere questo utente dalla propria organizzazione disabiliterà definitivamente l'account. Questa azione non può essere annullata. Vuoi procedere?" + }, + "externalId": { + "message": "Id esterno" + }, + "externalIdDesc": { + "message": "L'id esterno può essere usato come un riferimento o per collegare questa risorsa ad un sistema esterno come ad esempio una directory utente." + }, + "accessControl": { + "message": "Controllo di accesso" + }, + "groupAccessAllItems": { + "message": "Questo gruppo può accedere e modificare tutti gli elementi." + }, + "groupAccessSelectedCollections": { + "message": "Questo gruppo può accedere solo alle raccolte selezionate." + }, + "readOnly": { + "message": "Sola lettura" + }, + "newCollection": { + "message": "Nuova raccolta" + }, + "addCollection": { + "message": "Aggiungi raccolta" + }, + "editCollection": { + "message": "Modifica raccolta" + }, + "deleteCollectionConfirmation": { + "message": "Sei sicuro di voler eliminare questa raccolta?" + }, + "editUser": { + "message": "Modifica utente" + }, + "inviteUser": { + "message": "Invita utente" + }, + "inviteUserDesc": { + "message": "Invita un nuovo utente alla tua organizzazione inserendo il suo indirizzo email dell'account Bitwarden di seguito. Se non hanno già un account Bitwarden, verrà richiesto di creare un nuovo account." + }, + "inviteMultipleEmailDesc": { + "message": "Puoi invitare fino a $COUNT$ utenti alla volta inserendo un elenco di indirizzi email separati da una virgola.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Questo utente utilizza l'accesso in due passaggi per proteggere il proprio account." + }, + "userAccessAllItems": { + "message": "Questo utente può accedere e modificare tutti gli elementi." + }, + "userAccessSelectedCollections": { + "message": "Questo utente può accedere solo alle raccolte selezionate." + }, + "search": { + "message": "Cerca" + }, + "invited": { + "message": "Invitato" + }, + "accepted": { + "message": "Accettato" + }, + "confirmed": { + "message": "Confermato" + }, + "clientOwnerEmail": { + "message": "Email del proprietario (cliente)" + }, + "owner": { + "message": "Proprietario" + }, + "ownerDesc": { + "message": "L'utente con accesso più alto sarà in grado di gestire tutti gli aspetti della tua organizzazione." + }, + "clientOwnerDesc": { + "message": "Questo utente non dovrebbe dipendere dal fornitore. Se il fornitore viene rimosso dall'organizzazione, questo utente manterrà la proprietà dell'organizzazione." + }, + "admin": { + "message": "Amministratore" + }, + "adminDesc": { + "message": "Gli amministratori possono accedere e gestire tutti gli elementi, le raccolte e gli utenti dell'organizzazione." + }, + "user": { + "message": "Utente" + }, + "userDesc": { + "message": "Un utente normale con accesso alle raccolte della tua organizzazione." + }, + "manager": { + "message": "Responsabile" + }, + "managerDesc": { + "message": "I responsabili possono accedere e gestire le raccolte assegnate nella propria organizzazione." + }, + "all": { + "message": "Tutti" + }, + "refresh": { + "message": "Aggiorna" + }, + "timestamp": { + "message": "Data e ora" + }, + "event": { + "message": "Evento" + }, + "unknown": { + "message": "Sconosciuto" + }, + "loadMore": { + "message": "Carica altro" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Estensione", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Cassaforte web" + }, + "loggedIn": { + "message": "Accesso effettuato." + }, + "changedPassword": { + "message": "Password dell'account modificata." + }, + "enabledUpdated2fa": { + "message": "Verifica in due passaggi abilitata/aggiornata." + }, + "disabled2fa": { + "message": "Verifica in due passaggi disabilitata." + }, + "recovered2fa": { + "message": "Account ripristinato dalla verifica in due passaggi." + }, + "failedLogin": { + "message": "Tentativo di accesso non riuscito. Password errata." + }, + "failedLogin2fa": { + "message": "Tentativo di accesso non riuscito. Verifica in due passaggi non riuscita." + }, + "exportedVault": { + "message": "Cassaforte esportata." + }, + "exportedOrganizationVault": { + "message": "Cassaforte dell'organizzazione esportata." + }, + "editedOrgSettings": { + "message": "Impostazioni dell'organizzazione modificate." + }, + "createdItemId": { + "message": "Elemento $ID$ creato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Elemento $ID$ modificato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Elemento $ID$ cestinato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Spostato l'elemento $ID$ in un'organizzazione.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Elemento visualizzato $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Password visualizzata per l'elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Campo nascosto visualizzato per l'elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Codice di sicurezza visualizzato per l'elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Password copiata per l'elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Campo nascosto copiato per l'elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Codice di sicurezza copiato per l'elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Elemento auto-compilato $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Raccolta $ID$ creata.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Raccolta $ID$ modificata.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Raccolta $ID$ eliminata.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Policy $ID$ modificata.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Gruppo $ID$ creato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Gruppo $ID$ modificato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Gruppo $ID$ eliminato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Utente $ID$ rimosso.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Allegato creato per elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Allegato eliminato per elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Raccolte per elemento $ID$ modificate.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Utente $ID$ invitato.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Utente $ID$ confermato.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Utente $ID$ modificato.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Modificati gruppi per l'utente $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO scollegato per l'utente $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organizzazione $ID$ creata.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organizzazione $ID$ aggiunta.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organizzazione $ID$ rimossa.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accesso alla cassaforte dell'organizzazione $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Dispositivo" + }, + "view": { + "message": "Visualizza" + }, + "invalidDateRange": { + "message": "Intervallo di date non valido." + }, + "errorOccurred": { + "message": "Si è verificato un errore." + }, + "userAccess": { + "message": "Accesso utente" + }, + "userType": { + "message": "Tipo di utente" + }, + "groupAccess": { + "message": "Gruppo di accesso" + }, + "groupAccessUserDesc": { + "message": "Modificare i gruppi a cui appartiene questo utente." + }, + "invitedUsers": { + "message": "Utenti invitati." + }, + "resendInvitation": { + "message": "Invia nuovamente l'invito" + }, + "resendEmail": { + "message": "Invia nuovamente l'email" + }, + "hasBeenReinvited": { + "message": "$USER$ è stato invitato.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Conferma" + }, + "confirmUser": { + "message": "Conferma utente" + }, + "hasBeenConfirmed": { + "message": "$USER$ è stato confermato.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Conferma utenti" + }, + "usersNeedConfirmed": { + "message": "Hai utenti che hanno accettato il loro invito, ma devono ancora essere confermati. Gli utenti non avranno accesso all'organizzazione fino a quando non sono confermati." + }, + "startDate": { + "message": "Data di inizio" + }, + "endDate": { + "message": "Data di fine" + }, + "verifyEmail": { + "message": "Verifica email" + }, + "verifyEmailDesc": { + "message": "Verificare l'indirizzo email del tuo account per sbloccare l'accesso a tutte le funzionalità." + }, + "verifyEmailFirst": { + "message": "L'indirizzo email del tuo account deve essere prima verificato." + }, + "checkInboxForVerification": { + "message": "Controlla la tua casella di posta per il collegamenti di verifica." + }, + "emailVerified": { + "message": "Il tuo indirizzo email è stato verificato." + }, + "emailVerifiedFailed": { + "message": "Impossibile verificare il tuo indirizzo email. Prova a inviare una nuova email di verifica." + }, + "emailVerificationRequired": { + "message": "Verifica email necessaria" + }, + "emailVerificationRequiredDesc": { + "message": "Devi verificare la tua email per utilizzare questa funzionalità." + }, + "updateBrowser": { + "message": "Aggiorna il browser" + }, + "updateBrowserDesc": { + "message": "Stai utilizzando un browser non supportato. La cassaforte web potrebbe non funzionare correttamente." + }, + "joinOrganization": { + "message": "Unisciti all'organizzazione" + }, + "joinOrganizationDesc": { + "message": "Sei stato invitato a far parte dell'organizzazione sopra elencata. Per accettare l'invito, è necessario accedere o creare un nuovo account di Bitwarden." + }, + "inviteAccepted": { + "message": "Invito accettato" + }, + "inviteAcceptedDesc": { + "message": "Puoi accedere a questa organizzazione una volta che un amministratore conferma la tua iscrizione. Ti invieremo una email quando accadrà." + }, + "inviteAcceptFailed": { + "message": "Non è possibile accettare l'invito. Chiedi ad un amministratore dell'organizzazione di inviare un nuovo invito." + }, + "inviteAcceptFailedShort": { + "message": "Impossibile accettare l'invito. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Ricorda email" + }, + "recoverAccountTwoStepDesc": { + "message": "Se non puoi accedere al tuo account attraverso i normali metodi di verifica in due passaggi, puoi usare il codice di recupero per la verifica in due passaggi per disabilitare tutti i metodi di verifica in due passaggi presenti sul tuo account." + }, + "recoverAccountTwoStep": { + "message": "Ripristina la verifica in due passaggi dell'account" + }, + "twoStepRecoverDisabled": { + "message": "La verifica in due passaggi è stata disabilitata sul tuo account." + }, + "learnMore": { + "message": "Ulteriori informazioni" + }, + "deleteRecoverDesc": { + "message": "Inserisci la tua email sotto per recuperare ed eliminare il tuo account." + }, + "deleteRecoverEmailSent": { + "message": "Se il tuo account è già esistente, ti invieremo una email con maggiori informazioni." + }, + "deleteRecoverConfirmDesc": { + "message": "Hai richiesto di eliminare il tuo account Bitwarden. Fai clic sul pulsante per confermare." + }, + "myOrganization": { + "message": "La mia organizzazione" + }, + "deleteOrganization": { + "message": "Elimina organizzazione" + }, + "deletingOrganizationContentWarning": { + "message": "Digita la password principale per confermare l'eliminazione di $ORGANIZATION$ e di tutti i dati associati. I dati della cassaforte in $ORGANIZATION$ includono:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Gli account utente rimarranno attivi dopo l'eliminazione, ma non saranno più associati a questa organizzazione." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "L'eliminazione di $ORGANIZATION$ è definitiva e irreversibile.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organizzazione eliminata" + }, + "organizationDeletedDesc": { + "message": "L'organizzazione e tutti i dati associati sono stati eliminati." + }, + "organizationUpdated": { + "message": "Organizzazione aggiornata" + }, + "taxInformation": { + "message": "Informazioni fiscali" + }, + "taxInformationDesc": { + "message": "Per i clienti negli Stati Uniti, il codice ZIP è necessario per soddisfare i requisiti relativi all'imposta sulle vendite, per altri paesi è possibile fornire facoltativamente un numero di identificazione fiscale (IVA/GST) e/o un indirizzo da visualizzare sulle fatture." + }, + "billingPlan": { + "message": "Piano", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Cambia piano", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Aggiorna il tuo account a un altro piano fornendo le informazioni qui sotto. Assicurati di avere un metodo di pagamento attivo aggiunto all'account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Fattura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Visualizza fattura" + }, + "downloadInvoice": { + "message": "Scarica fattura" + }, + "verifyBankAccount": { + "message": "Verifica conto bancario" + }, + "verifyBankAccountDesc": { + "message": "Abbiamo fatto due micro-depositi sul tuo conto bancario (potrebbe richiedere 1-2 giorni lavorativi per presentarsi). Immetti questi importi per verificare il conto bancario." + }, + "verifyBankAccountInitialDesc": { + "message": "Il pagamento con un conto in banca è disponibile solo per i clienti negli Stati Uniti. Sarà necessario verificare il tuo conto in banca. Faremo due micro-depositi entro i prossimi 1-2 giorni lavorativi. Immettere questi importi nella pagina di fatturazione dell'organizzazione per verificare il conto bancario." + }, + "verifyBankAccountFailureWarning": { + "message": "La mancata verifica del conto bancario si tradurrà in un mancato pagamento e l'abbonamento sarà disattivato." + }, + "verifiedBankAccount": { + "message": "Il conto bancario è stato verificato." + }, + "bankAccount": { + "message": "Conto bancario" + }, + "amountX": { + "message": "Importo $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Coordinate bancarie", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Numero del conto" + }, + "accountHolderName": { + "message": "Titolare del conto" + }, + "bankAccountType": { + "message": "Tipo di conto" + }, + "bankAccountTypeCompany": { + "message": "Azienda (Lavoro)" + }, + "bankAccountTypeIndividual": { + "message": "Individuale (Personale)" + }, + "enterInstallationId": { + "message": "Inserisci il tuo id di installazione" + }, + "limitSubscriptionDesc": { + "message": "Imposta un limite di slot utenti per il tuo abbonamento. Una volta raggiunto questo limite, non potrai invitare nuovi utenti." + }, + "maxSeatLimit": { + "message": "Numero massimo di slot (opzionale)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Costo massimo dello slot" + }, + "addSeats": { + "message": "Aggiungi postazioni", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Rimuovi postazioni", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Le modifiche apportate al tuo abbonamento comporteranno corrispondenti cambi al totale in fattura. Se i nuovi utenti invitati superano gli slot del tuo abbonamento, riceverai immediatamente un addebito per gli utenti aggiuntivi." + }, + "subscriptionUserSeats": { + "message": "L'abbonamento consente un totale di $COUNT$ utenti.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limite di abbonamento (facoltativo)" + }, + "subscriptionSeats": { + "message": "Slot abbonamento" + }, + "subscriptionUpdated": { + "message": "Abbonamento aggiornato" + }, + "additionalOptions": { + "message": "Opzioni aggiuntive" + }, + "additionalOptionsDesc": { + "message": "Per ulteriori informazioni sulla gestione del tuo abbonamento, contatta il servizio clienti." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Le modifiche apportate al tuo abbonamento comporteranno corrispondenti cambi al totale in fattura. Se i nuovi utenti invitati superano gli slot del tuo abbonamento, riceverai immediatamente un addebito per gli utenti aggiuntivi." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Le modifiche apportate al tuo abbonamento comporteranno corrispondenti cambi al totale in fattura. Se i nuovi utenti invitati superano gli slot utente del tuo abbonamento, riceverai immediatamente un addebito per gli utenti aggiuntivi fino al raggiungimento del limite di $MAX$ slot.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Non puoi invitare più di $COUNT$ utenti senza aggiornare il tuo piano.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Non puoi invitare più di $COUNT$ utenti senza aggiornare il tuo piano. Contatta il supporto clienti per aggiornare.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Il tuo abbonamento consente un totale di $COUNT$ utenti. Il tuo piano è sponsorizzato e addebitato a un'organizzazione esterna.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Le modifiche apportate al tuo abbonamento comporteranno corrispondenti cambi al totale in fattura. Non è possibile invitare più di $COUNT$ utenti senza aumentare gli slot dell'abbonamento.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Postazioni da aggiungere" + }, + "seatsToRemove": { + "message": "Postazioni da rimuovere" + }, + "seatsAddNote": { + "message": "L'aggiunta di postazioni utente comporterà la modifica del costo di fatturazione e addebiterà immediatamente l'importo tramite il tuo metodo di pagamento salvato. Il primo addebito verrà ripartito per il resto del ciclo di fatturazione corrente." + }, + "seatsRemoveNote": { + "message": "La rimozione di postazioni utente comporterà la modifica sul totale fatturato che sarà ripartito come credito per il prossimo addebito di fatturazione." + }, + "adjustedSeats": { + "message": "Postazioni utente $AMOUNT$ rettificate.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Chiave aggiornata" + }, + "updateKeyTitle": { + "message": "Aggiorna chiave" + }, + "updateEncryptionKey": { + "message": "Aggiorna chiave di cifratura" + }, + "updateEncryptionKeyShortDesc": { + "message": "Stai utilizzando uno schema di cifratura obsoleto." + }, + "updateEncryptionKeyDesc": { + "message": "Siamo passati a chiavi di cifratura più grandi che forniscono maggiore sicurezza e accesso alle funzionalità più recenti. Aggiornare la chiave di cifratura è semplice e veloce. Basta digitare la password principale qui sotto. Questo aggiornamento diventerà obbligatorio in futuro." + }, + "updateEncryptionKeyWarning": { + "message": "Dopo aver aggiornato la chiave di cifratura, ti sarà richiesto di disconnetterti e connetterti in tutte le applicazioni Bitwarden che stai utilizzando (come l'applicazione mobile o l'estensione del browser). La mancata disconnessione e successiva riconnessione (per scaricare la nuova chiave di cifratura) potrebbe condurre al danneggiamento dei dati. Cercheremo di disconnetterti automaticamente, ma potrebbe esserci un ritardo." + }, + "updateEncryptionKeyExportWarning": { + "message": "Anche le esportazioni cifrate che hai salvato non saranno più valide." + }, + "subscription": { + "message": "Abbonamento" + }, + "loading": { + "message": "Caricamento" + }, + "upgrade": { + "message": "Aggiorna" + }, + "upgradeOrganization": { + "message": "Aggiorna organizzazione" + }, + "upgradeOrganizationDesc": { + "message": "Questa funzionalità non è disponibile per le organizzazioni con il piano base. Passa ad un piano a pagamento per sbloccare più funzioni." + }, + "createOrganizationStep1": { + "message": "Crea organizzazione: Passo 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Prima di creare la propria organizzazione, devi innanzitutto creare un account personale gratuito." + }, + "refunded": { + "message": "Rimborsato" + }, + "nothingSelected": { + "message": "Non hai selezionato nulla." + }, + "acceptPolicies": { + "message": "Selezionando la casella accetti quanto segue:" + }, + "acceptPoliciesError": { + "message": "I termini di servizio e l'informativa sulla privacy non sono stati accettati." + }, + "termsOfService": { + "message": "Termini del servizio" + }, + "privacyPolicy": { + "message": "Informativa sulla privacy" + }, + "filters": { + "message": "Filtri" + }, + "vaultTimeout": { + "message": "Timeout cassaforte" + }, + "vaultTimeoutDesc": { + "message": "Scegli quando la tua cassaforte andrà in timeout ed esegui l'azione selezionata." + }, + "oneMinute": { + "message": "1 minuto" + }, + "fiveMinutes": { + "message": "5 minuti" + }, + "fifteenMinutes": { + "message": "15 minuti" + }, + "thirtyMinutes": { + "message": "30 minuti" + }, + "oneHour": { + "message": "1 ora" + }, + "fourHours": { + "message": "4 ore" + }, + "onRefresh": { + "message": "All'aggiornamento del browser" + }, + "dateUpdated": { + "message": "Aggiornato", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password aggiornata", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "L'organizzazione è disabilitata." + }, + "licenseIsExpired": { + "message": "La licenza è scaduta." + }, + "updatedUsers": { + "message": "Utenti aggiornati" + }, + "selected": { + "message": "Selezionato" + }, + "ownership": { + "message": "Proprietà" + }, + "whoOwnsThisItem": { + "message": "A chi appartiene questo elemento?" + }, + "strong": { + "message": "Forte", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Buona", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Debole", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Molto debole", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Password principale debole" + }, + "weakMasterPasswordDesc": { + "message": "La password principale che hai scelto è debole. È necessario utilizzare una password principale robusta (o una frase segreta) per proteggere adeguatamente il tuo account Bitwarden. Sei sicuro di voler utilizzare questa password principale?" + }, + "rotateAccountEncKey": { + "message": "Ruota anche la chiave di cifratura del mio account" + }, + "rotateEncKeyTitle": { + "message": "Ruota la chiave di cifratura" + }, + "rotateEncKeyConfirmation": { + "message": "Sei sicuro di voler ruotare la chiave di cifratura del tuo account?" + }, + "attachmentsNeedFix": { + "message": "Questo elemento ha vecchi file allegati che devono essere corretti." + }, + "attachmentFixDesc": { + "message": "Questo è un vecchio file allegato che deve essere corretto. Fai clic per saperne di più." + }, + "fix": { + "message": "Correggi", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Ci sono vecchi file allegati nella tua cassaforte che devono essere corretti prima di poter ruotare la chiave di cifratura del tuo account." + }, + "yourAccountsFingerprint": { + "message": "Frase impronta del tuo 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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Per garantire l'integrità delle tue chiavi di cifratura, verifica la frase impronta dell'utente prima di continuare.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Non chiedere di verificare di nuovo la 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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Chiave API" + }, + "apiKeyDesc": { + "message": "La tua chiave API può essere usata per autenticarsi all'API pubblica Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Ruotare la chiave API invaliderà la chiave precedente. Puoi ruotare la tua chiave API se credi che la chiave attuale non sia più sicura da usare." + }, + "apiKeyWarning": { + "message": "La tua chiave API ha pieno accesso all'organizzazione. Dovrebbe essere tenuta segreta." + }, + "userApiKeyDesc": { + "message": "Puoi utilizzare la tua chiave API per autenticarti nella CLI di Bitwarden." + }, + "userApiKeyWarning": { + "message": "La tua chiave API è la tua autenticazione alternativa e dovrebbe rimanere segreta." + }, + "oauth2ClientCredentials": { + "message": "Credenziali client OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Visualizza chiave API" + }, + "rotateApiKey": { + "message": "Ruota chiave API" + }, + "selectOneCollection": { + "message": "Devi selezionare almeno una raccolta." + }, + "couldNotChargeCardPayInvoice": { + "message": "Non siamo stati in grado di addebitare sulla tua carta. Visualizza e paga la fattura non pagata presente qui sotto." + }, + "inAppPurchase": { + "message": "Acquisto in-app" + }, + "cannotPerformInAppPurchase": { + "message": "Non puoi eseguire questa azione mentre utilizzi un metodo di pagamento in-app." + }, + "manageSubscriptionFromStore": { + "message": "Devi gestire il tuo abbonamento dal negozio dove è stato effettuato l'acquisto in-app." + }, + "minLength": { + "message": "Lunghezza minima" + }, + "clone": { + "message": "Clona" + }, + "masterPassPolicyDesc": { + "message": "Imposta i requisiti minimi di complessità della password principale." + }, + "twoStepLoginPolicyDesc": { + "message": "Obbliga gli utenti a impostare l'autenticazione a due fattori sul loro account personale." + }, + "twoStepLoginPolicyWarning": { + "message": "I membri dell'organizzazione che non hanno attivato l'autenticazione a due fattori per il proprio account personale saranno espulsi dall'organizzazione e riceveranno a tale proposito un'email di notifica." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Sei membro di una organizzazione che richiede che sugli account personali sia attiva l'autenticazione a due fattori. Se disabiliti tutti i secondi fattori di autenticazione, sarai automaticamente rimosso dall'organizzazione." + }, + "passwordGeneratorPolicyDesc": { + "message": "Imposta i requisiti minimi per la configurazione del generatore di password." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una o più politiche dell'organizzazione controllano le impostazioni del tuo generatore." + }, + "masterPasswordPolicyInEffect": { + "message": "Una o più regole dell'organizzazione richiedono che la password principale verifichi i seguenti requisiti:" + }, + "policyInEffectMinComplexity": { + "message": "Punteggio minimo di complessità di $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Lunghezza minima di $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." + }, + "minimumNumberOfWords": { + "message": "Numero minimo di parole" + }, + "defaultType": { + "message": "Tipo predefinito" + }, + "userPreference": { + "message": "Preferenze utente" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Cerca nel cestino" + }, + "permanentlyDelete": { + "message": "Elimina definitivamente" + }, + "permanentlyDeleteSelected": { + "message": "Elimina definitivamente l'elemento selezionato" + }, + "permanentlyDeleteItem": { + "message": "Elimina definitivamente l'elemento" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Sei sicuro di voler eliminare definitivamente questo elemento?" + }, + "permanentlyDeletedItem": { + "message": "Elemento eliminato definitivamente" + }, + "permanentlyDeletedItems": { + "message": "Elementi eliminati definitivamente" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Hai selezionato $COUNT$ elemento/i da eliminare definitivamente. Sei sicuro di voler eliminare definitivamente tutti gli elementi selezionati?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Elemento $ID$ definitivamente eliminato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Ripristina" + }, + "restoreSelected": { + "message": "Ripristina selezionati" + }, + "restoreItem": { + "message": "Ripristina elemento" + }, + "restoredItem": { + "message": "Elemento ripristinato" + }, + "restoredItems": { + "message": "Elementi ripristinati" + }, + "restoreItemConfirmation": { + "message": "Sei sicuro di voler ripristinare questo elemento?" + }, + "restoreItems": { + "message": "Ripristina elementi" + }, + "restoreSelectedItemsDesc": { + "message": "Hai selezionato $COUNT$ elemento/i da ripristinare. Sei sicuro di voler ripristinare tutti gli elementi selezionati?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Elemento $ID$ ripristinato.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "La disconnessione rimuove tutti gli accessi alla tua cassaforte e richiede l'autenticazione online dopo il periodo di timeout. Sei sicuro di voler utilizzare questa impostazione?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Conferma azione di timeout" + }, + "hidePasswords": { + "message": "Nascondi password" + }, + "countryPostalCodeRequiredDesc": { + "message": "Informazioni richieste esclusivamente per il calcolo dell'IVA e rendicontazione finanziaria." + }, + "includeVAT": { + "message": "Aggiungi partita IVA/GST (facoltativo)" + }, + "taxIdNumber": { + "message": "Partita IVA/GST" + }, + "taxInfoUpdated": { + "message": "Dati fiscali aggiornati." + }, + "setMasterPassword": { + "message": "Imposta password principale" + }, + "ssoCompleteRegistration": { + "message": "Per completare l'accesso con SSO, imposta una password principale per accedere e proteggere la cassaforte." + }, + "identifier": { + "message": "Identificativo" + }, + "organizationIdentifier": { + "message": "Identificativo dell'organizzazione" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Accedi usando il portale di accesso Single Sign-On della tua organizzazione. Inserisci l'identificativo della tua organizzazione per iniziare." + }, + "enterpriseSingleSignOn": { + "message": "Single Sign-On aziendale" + }, + "ssoHandOff": { + "message": "Puoi chiudere questa scheda e continuare nell'estensione." + }, + "includeAllTeamsFeatures": { + "message": "Tutte le funzionalità Teams e in più:" + }, + "includeSsoAuthentication": { + "message": "Autenticazione SSO tramite SAML2.0 e OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Policy aziendali" + }, + "ssoValidationFailed": { + "message": "Convalida SSO non riuscita" + }, + "ssoIdentifierRequired": { + "message": "L'identificativo dell'organizzazione è obbligatorio." + }, + "unlinkSso": { + "message": "Scollega SSO" + }, + "unlinkSsoConfirmation": { + "message": "Sei sicuro di voler scollegare SSO per questa organizzazione?" + }, + "linkSso": { + "message": "Collega SSO" + }, + "singleOrg": { + "message": "Organizzazione unica" + }, + "singleOrgDesc": { + "message": "Impedisci agli utenti di unirsi dalle altre organizzazioni." + }, + "singleOrgBlockCreateMessage": { + "message": "La tua attuale organizzazione ha una policy che non ti consente di unirti ad altre organizzazioni. Contatta gli amministratori della tua organizzazione o registrati da un altro account Bitwarden." + }, + "singleOrgPolicyWarning": { + "message": "I membri dell'organizzazione che non sono proprietari o amministratori e sono già membri di un'altra organizzazione saranno rimossi dalla tua organizzazione." + }, + "requireSso": { + "message": "Autenticazione Single Sign-On" + }, + "requireSsoPolicyDesc": { + "message": "Richiedi agli utenti di accedere con il metodo di Single Sign-On aziendale." + }, + "prerequisite": { + "message": "Prerequisito" + }, + "requireSsoPolicyReq": { + "message": "La policy aziendale per l'organizzazione unica deve essere abilitata prima di attivare questa policy." + }, + "requireSsoPolicyReqError": { + "message": "La policy dell'organizzazione unica non è abilitata." + }, + "requireSsoExemption": { + "message": "I proprietari e gli amministratori dell'organizzazione sono esenti dall'applicazione di questa policy." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Testo" + }, + "createSend": { + "message": "Crea nuovo 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." + }, + "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." + }, + "deleteSend": { + "message": "Elimina Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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 impostato, 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 impostato, 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": "Numero di accessi attuale" + }, + "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 su questo Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Disabilitato" + }, + "sendLink": { + "message": "Collegamento del Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copia collegamento Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Rimuovi password" + }, + "removedPassword": { + "message": "Password rimossa" + }, + "removePasswordConfirmation": { + "message": "Sei sicuro di voler rimuovere la password?" + }, + "hideEmail": { + "message": "Nascondi il mio indirizzo email dai destinatari." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Tutti i Send" + }, + "maxAccessCountReached": { + "message": "Numero massimo di accessi raggiunto", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "In attesa di eliminazione" + }, + "expired": { + "message": "Scaduto" + }, + "searchSends": { + "message": "Cerca Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Il Send è protetto da password. Digita la password sotto per continuare.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Non conosci la password? Chiedi al Sender la password necessaria per l'accesso a questo Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Questo Send è nascosto per impostazione predefinita. È possibile modificarne la visibilità utilizzando il pulsante in basso.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Scarica file" + }, + "sendAccessUnavailable": { + "message": "Il Send a cui stai provando ad accedere non esiste o non è più disponibile.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Il file associato a questo Send non è stato trovato.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Non ci sono Send da elencare.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Accesso di emergenza" + }, + "emergencyAccessDesc": { + "message": "Concedi e gestisci l'accesso di emergenza per un contatto fidato. I contatti fidati possono richiede di ereditare l'account o accedere in sola lettura in caso di emergenza. Visita la nostra pagina di aiuto per maggiori informazioni e dettagli." + }, + "emergencyAccessOwnerWarning": { + "message": "Sei proprietario di una o più organizzazioni. Se trasferisci la proprietà ad un contatto di emergenza, sarà in grado di utilizzare tutti i permessi del proprietario." + }, + "trustedEmergencyContacts": { + "message": "Contatti di emergenza fidati" + }, + "noTrustedContacts": { + "message": "Non hai ancora aggiunto nessun contatto di emergenza, invita un contatto fidato per iniziare." + }, + "addEmergencyContact": { + "message": "Aggiungi contatto di emergenza" + }, + "designatedEmergencyContacts": { + "message": "Designato come contatto di emergenza" + }, + "noGrantedAccess": { + "message": "Non sei ancora stato designato come contatto di emergenza." + }, + "inviteEmergencyContact": { + "message": "Invita contatto di emergenza" + }, + "editEmergencyContact": { + "message": "Modifica contatto di emergenza" + }, + "inviteEmergencyContactDesc": { + "message": "Invita un nuovo contatto di emergenza digitando il suo account email di Bitwarden. Se non ha ancora un account Bitwarden, gli verrà chiesto di crearne uno nuovo." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Accesso di emergenza avviato" + }, + "emergencyAccessRecoveryApproved": { + "message": "Accesso di emergenza approvato" + }, + "viewDesc": { + "message": "Può visualizzare tutti gli elementi nella cassaforte." + }, + "takeover": { + "message": "Entra in possesso" + }, + "takeoverDesc": { + "message": "Puoi ripristinare il tuo account con una nuova password principale." + }, + "waitTime": { + "message": "Tempo di attesa" + }, + "waitTimeDesc": { + "message": "Tempo richiesto prima di concedere l'accesso automatico." + }, + "oneDay": { + "message": "1 giorno" + }, + "days": { + "message": "$DAYS$ giorni", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Utente invitato." + }, + "acceptEmergencyAccess": { + "message": "Sei stato designato come contatto di emergenza per l'utente indicato sopra. Per accettare l'invito, accedi alla tua cassaforte o crea un nuovo utente Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Impossibile accettare l'invito. Chiedi all'utente di inviare un nuovo invito." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Impossibile accettare l'invito. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Puoi accedere alle opzioni di emergenza per questo utente dopo aver confermato la tua identità. A breve riceverai un'email di conferma." + }, + "requestAccess": { + "message": "Richiedi l'accesso" + }, + "requestAccessConfirmation": { + "message": "Sei sicuro di voler richiedere l'accesso di emergenza? Ti sarà possibile accedere dopo $WAITTIME$ giorni o subito, qualora l'utente approvi la richiesta.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Accesso di emergenza richiesto per $USER$. Riceverai una notifica tramite email quando sarà possibile proseguire.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approva" + }, + "reject": { + "message": "Rifiuta" + }, + "approveAccessConfirmation": { + "message": "Sei sicuro di voler approvare l'accesso di emergenza? Questo consentirà a $USER$ di $ACTION$ il tuo account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Accesso di emergenza approvato." + }, + "emergencyRejected": { + "message": "Accesso di emergenza rifiutato" + }, + "passwordResetFor": { + "message": "Password ripristinata per $USER$. Ora puoi effettuare l'accesso utilizzando la nuova password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Proprietà personale" + }, + "personalOwnershipPolicyDesc": { + "message": "Richiede agli utenti di salvare gli elementi della cassaforte in un'organizzazione rimuovendo l'opzione di proprietà personale." + }, + "personalOwnershipExemption": { + "message": "I proprietari e gli amministratori dell'organizzazione sono esenti dall'applicazione di questa policy." + }, + "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." + }, + "disableSend": { + "message": "Disabilita Send" + }, + "disableSendPolicyDesc": { + "message": "Non consentire agli utenti di creare o modificare un Send Bitwarden. L'eliminazione di un Send già creato è ancora permessa.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Gli utenti dell'organizzazione che possono gestire le policy dell'organizzazione sono esenti dall'applicazione di questa impostazione." + }, + "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." + }, + "sendOptions": { + "message": "Opzioni Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Imposta le opzioni per creare e modificare Send.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Gli utenti dell'organizzazione che possono gestire le policy dell'organizzazione sono esenti dall'applicazione di questa policy." + }, + "disableHideEmail": { + "message": "Non consentire agli utenti di nascondere il proprio indirizzo email dai destinatari quando si crea o modifica un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Attualmente sono in vigore le seguenti policy dell'organizzazione:" + }, + "sendDisableHideEmailInEffect": { + "message": "Agli utenti non è consentito nascondere il proprio indirizzo email dai destinatari quando si crea o modifica un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Policy $ID$ modificata.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Costo del piano" + }, + "estimatedTax": { + "message": "Tasse stimate" + }, + "custom": { + "message": "Personalizzato" + }, + "customDesc": { + "message": "Consente un controllo più granulare delle autorizzazioni utente per le configurazioni avanzate." + }, + "permissions": { + "message": "Permessi" + }, + "accessEventLogs": { + "message": "Accedi ai log degli eventi" + }, + "accessImportExport": { + "message": "Accedi ad Import/Export" + }, + "accessReports": { + "message": "Accedi ai resoconti" + }, + "missingPermissions": { + "message": "Non hai i permessi necessari per eseguire questa azione." + }, + "manageAllCollections": { + "message": "Gestisci tutte le raccolte" + }, + "createNewCollections": { + "message": "Crea nuove raccolte" + }, + "editAnyCollection": { + "message": "Modifica tutte le raccolte" + }, + "deleteAnyCollection": { + "message": "Elimina tutte le raccolte" + }, + "manageAssignedCollections": { + "message": "Gestisci le raccolte assegnate" + }, + "editAssignedCollections": { + "message": "Modifica le raccolte assegnate" + }, + "deleteAssignedCollections": { + "message": "Elimina raccolte assegnate" + }, + "manageGroups": { + "message": "Gestisci i gruppi" + }, + "managePolicies": { + "message": "Gestisci le policy" + }, + "manageSso": { + "message": "Gestisci SSO" + }, + "manageUsers": { + "message": "Gestisci gli utenti" + }, + "manageResetPassword": { + "message": "Gestisci ripristino password" + }, + "disableRequiredError": { + "message": "Per disabilitare questa policy, è necessario prima disabilitare la policy $POLICYNAME$.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Una policy dell'organizzazione controlla le opzioni di proprietà." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Una policy dell'organizzazione ha disabilitato l'importazione di elementi nella tua cassaforte personale." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disabilita la proprietà personale per gli utenti dell'organizzazione" + }, + "textHiddenByDefault": { + "message": "Quando si accede al Send, nascondi il testo di default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Un nome intuitivo per descrivere il 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." + }, + "copySendLinkOnSave": { + "message": "Copia il collegamento per condividere questo Send nei miei appunti al momento del salvataggio." + }, + "sendLinkLabel": { + "message": "Collegamento del Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Con Bitwarden Send trasmetti informazioni sensibili e temporanee agli altri in maniera facile e sicura.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Per saperne di più", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Condividi testi e file direttamente con chiunque." + }, + "sendVaultCardLearnMore": { + "message": "Per saperne di più", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "vedi", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "come funziona", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "provalo adesso", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "iscriviti", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "per provarlo oggi.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "L'utente Bitwarden $USER_IDENTIFIER$ ha condiviso questo con te", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "L'utente Bitwarden che ha creato questo Send ha scelto di nascondere il proprio indirizzo email. Devi essere sicuro di fidarti della fonte di questo collegamento prima di usare o scaricare il suo contenuto.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "La data di scadenza fornita non è valida." + }, + "deletionDateIsInvalid": { + "message": "La data di eliminazione fornita non è valida." + }, + "expirationDateAndTimeRequired": { + "message": "È necessario inserire data e ora di scadenza." + }, + "deletionDateAndTimeRequired": { + "message": "È necessario inserire data e ora di eliminazione." + }, + "dateParsingError": { + "message": "Si è verificato un errore durante il salvataggio delle date di eliminazione e scadenza." + }, + "webAuthnFallbackMsg": { + "message": "Per verificare la tua 2FA fai clic sul pulsante qui sotto." + }, + "webAuthnAuthenticate": { + "message": "Autenticazione WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn non è supportato da questo browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verificato correttamente! Puoi chiudere questa scheda." + }, + "hintEqualsPassword": { + "message": "Il suggerimento della password non può essere uguale alla password." + }, + "enrollPasswordReset": { + "message": "Aderisci al ripristino della password" + }, + "enrolledPasswordReset": { + "message": "Hai aderito al ripristino della password" + }, + "withdrawPasswordReset": { + "message": "Rifiuta il ripristino della password" + }, + "enrollPasswordResetSuccess": { + "message": "Iscrizione completata!" + }, + "withdrawPasswordResetSuccess": { + "message": "Rinuncia completata!" + }, + "eventEnrollPasswordReset": { + "message": "Utente $ID$ registrato all'assistenza per il ripristino della password.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Utente $ID$ prelevato dall'assistenza per il ripristino della password.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Ripristino della password principale per l'utente $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Ripristina collegamento SSO per l'utente $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ ha effettuato l'accesso tramite SSO per la prima volta", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Ripristina password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Procedendo $NAME$ saranno disconnessi dalla sessione attuale, richiedendo loro di effettuare nuovamente l'accesso. Le sessioni attive su altri dispositivi potrebbero rimanere attive per un massimo di un'ora.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "questo utente" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Una o più regole dell'organizzazione richiedono che la password principale verifichi i seguenti requisiti:" + }, + "resetPasswordSuccess": { + "message": "Password ripristinata correttamente!" + }, + "resetPasswordEnrollmentWarning": { + "message": "L'iscrizione consentirà agli amministratori dell'organizzazione di cambiare la tua password principale. Sei sicuro di volerti iscrivere?" + }, + "resetPasswordPolicy": { + "message": "Ripristino password principale" + }, + "resetPasswordPolicyDescription": { + "message": "Consenti agli amministratori dell'organizzazione di ripristinare la password principale degli utenti dell'organizzazione." + }, + "resetPasswordPolicyWarning": { + "message": "Gli utenti dell'organizzazione dovranno auto-iscriversi o essere iscritti automaticamente prima che gli amministratori possano ripristinare la loro password principale." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Iscrizione automatica" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Tutti gli utenti saranno automaticamente iscritti alla procedura di ripristino della password una volta accettato l'invito." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Gli utenti già presenti nell'organizzazione non saranno iscritti retroattivamente al ripristino della password. Essi dovranno auto-iscriversi prima che gli amministratori possano ripristinare la loro password principale." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Richiedi l'iscrizione automatica dei nuovi utenti" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "La risposta delle chiavi dell'organizzazione è nulla" + }, + "resetPasswordDetailsError": { + "message": "La risposta ai dettagli del ripristino della password è nulla" + }, + "trashCleanupWarning": { + "message": "Gli elementi nel Cestino più vecchi di 30 giorni saranno automaticamente eliminati." + }, + "trashCleanupWarningSelfHosted": { + "message": "Gli elementi nel Cestino da un po' di tempo saranno automaticamente eliminati." + }, + "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à." + }, + "reinviteSelected": { + "message": "Invia nuovamente l'invito" + }, + "noSelectedUsersApplicable": { + "message": "Questa azione non è applicabile a nessuno degli utenti selezionati." + }, + "removeUsersWarning": { + "message": "Sei sicuro di voler rimuovere i seguenti utenti? Il processo potrebbe richiedere alcuni secondi per essere completato e non può essere interrotto o annullato." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Scegli un tema per la tua cassaforte web." + }, + "themeSystem": { + "message": "Usa tema di sistema" + }, + "themeDark": { + "message": "Scuro" + }, + "themeLight": { + "message": "Chiaro" + }, + "confirmSelected": { + "message": "Conferma selezionati" + }, + "bulkConfirmStatus": { + "message": "Stato dell'azione in blocco" + }, + "bulkConfirmMessage": { + "message": "Confermato correttamente." + }, + "bulkReinviteMessage": { + "message": "Re-invitato correttamente." + }, + "bulkRemovedMessage": { + "message": "Rimosso correttamente" + }, + "bulkFilteredMessage": { + "message": "Escluso, non applicabile per questa azione." + }, + "fingerprint": { + "message": "Impronta" + }, + "removeUsers": { + "message": "Rimuovi utenti" + }, + "error": { + "message": "Errore" + }, + "resetPasswordManageUsers": { + "message": "Gestisci utenti deve essere abilitato con il permesso di gestione del ripristino delle password" + }, + "setupProvider": { + "message": "Configurazione del fornitore" + }, + "setupProviderLoginDesc": { + "message": "Sei stato invitato a impostare un nuovo fornitore. Per continuare, accedi o crea un nuovo account Bitwarden." + }, + "setupProviderDesc": { + "message": "Inserisci i dettagli sotto per completare la configurazione del fornitore. Se hai bisogno di aiuto, contatta il supporto clienti." + }, + "providerName": { + "message": "Nome del fornitore" + }, + "providerSetup": { + "message": "Il fornitore è stato configurato." + }, + "clients": { + "message": "Clienti" + }, + "providerAdmin": { + "message": "Amministratore del fornitore" + }, + "providerAdminDesc": { + "message": "L'utente con privilegi di accesso più elevato che può gestire tutti gli aspetti del tuo fornitore nonché accedere e gestire le organizzazioni dei clienti." + }, + "serviceUser": { + "message": "Utente di servizio" + }, + "serviceUserDesc": { + "message": "Gli utenti di servizio che possono accedere e gestire tutte le organizzazioni cliente." + }, + "providerInviteUserDesc": { + "message": "Invita un nuovo utente nella tua organizzazione inserendo di seguito l'indirizzo email del suo account Bitwarden. Se non in possesso di un account Bitwarden, sarà richiesto di crearne uno nuovo." + }, + "joinProvider": { + "message": "Unisciti al fornitore" + }, + "joinProviderDesc": { + "message": "Sei stato invitato a unirti al fornitore indicato in alto. Per accettare l'invito, accedi o crea un nuovo account Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "Impossibile accettare l'invito. Chiedi all'amministratore del fornitore di inviare un nuovo invito." + }, + "providerInviteAcceptedDesc": { + "message": "Potrai accedere a questo fornitore quando l'amministratore confermerà la tua iscrizione. Riceverai un'email a conferma avvenuta." + }, + "providerUsersNeedConfirmed": { + "message": "Hai utenti che hanno accettato il loro invito, ma devono ancora essere confermati. Gli utenti non avranno accesso al fornitore fino a quando non saranno confermati." + }, + "provider": { + "message": "Fornitore" + }, + "newClientOrganization": { + "message": "Nuova organizzazione cliente" + }, + "newClientOrganizationDesc": { + "message": "Crea una nuovo organizzazione cliente che sarà associata a te come fornitore. Sarai in grado di accedere e gestire questa organizzazione." + }, + "addExistingOrganization": { + "message": "Aggiungi organizzazione esistente" + }, + "myProvider": { + "message": "Il mio fornitore" + }, + "addOrganizationConfirmation": { + "message": "Sei sicuro di voler aggiungere $ORGANIZATION$ come cliente di $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organizzazione aggiunta con successo al fornitore" + }, + "accessingUsingProvider": { + "message": "Accesso in corso all'organizzazione con il fornitore $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Il fornitore è disabilitato." + }, + "providerUpdated": { + "message": "Fornitore aggiornato" + }, + "yourProviderIs": { + "message": "Il tuo fornitore è $PROVIDER$. Hanno privilegi amministrativi e di fatturazione per la tua organizzazione.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "L'organizzazione $ORGANIZATION$ è stata sganciata dal tuo fornitore.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Sei sicuro di voler rimuovere questa organizzazione? L'organizzazione continuerà ad esistere ma non sarà più gestita dal fornitore." + }, + "add": { + "message": "Aggiungi" + }, + "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." + }, + "masterPasswordInvalidWarning": { + "message": "La tua password principale non soddisfa i requisiti della politica di questa organizzazione. Per aderire all'organizzazione, è necessario aggiornare subito la password principale. Il procedimento chiuderà la sessione attuale, richiedendo di accedere nuovamente. Le sessioni attive su altri dispositivi possono rimanere tali fino a un'ora." + }, + "maximumVaultTimeout": { + "message": "Timeout cassaforte" + }, + "maximumVaultTimeoutDesc": { + "message": "Configura un timeout massimo della cassaforte per tutti gli utenti." + }, + "maximumVaultTimeoutLabel": { + "message": "Timeout massimo della cassaforte" + }, + "invalidMaximumVaultTimeout": { + "message": "Timeout massimo della cassaforte non valido." + }, + "hours": { + "message": "Ore" + }, + "minutes": { + "message": "Minuti" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Le politiche dell'organizzazione controllano 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" + } + } + }, + "customVaultTimeout": { + "message": "Timeout cassaforte personalizzato" + }, + "vaultTimeoutToLarge": { + "message": "Il timeout della tua cassaforte supera le restrizioni impostate dalla tua organizzazione." + }, + "disablePersonalVaultExport": { + "message": "Disabilita esportazione cassaforte personale" + }, + "disablePersonalVaultExportDesc": { + "message": "Impedisce agli utenti di esportare i loro dati privati della cassaforte." + }, + "vaultExportDisabled": { + "message": "Esportazione cassaforte disabilitata" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una o più politiche di organizzazione ti impediscono di esportare la tua cassaforte personale." + }, + "selectType": { + "message": "Seleziona tipo di SSO" + }, + "type": { + "message": "Tipo" + }, + "openIdConnectConfig": { + "message": "Configurazione OpenID Connect" + }, + "samlSpConfig": { + "message": "Configurazione del fornitore del servizio SAML" + }, + "samlIdpConfig": { + "message": "Configurazione del fornitore di identità SAML" + }, + "callbackPath": { + "message": "URL di callback" + }, + "signedOutCallbackPath": { + "message": "URL di disconnessione" + }, + "authority": { + "message": "Autorità" + }, + "clientId": { + "message": "ID cliente" + }, + "clientSecret": { + "message": "Segreto cliente" + }, + "metadataAddress": { + "message": "Indirizzo metadata" + }, + "oidcRedirectBehavior": { + "message": "Comportamento di redirezione OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Ottieni claim dall'endpoint di informazioni utente" + }, + "additionalScopes": { + "message": "Scope aggiuntivi/personalizzati (separati da virgola)" + }, + "additionalUserIdClaimTypes": { + "message": "Tipi di claim 'User ID' aggiuntivi/personalizzati (separati da virgola)" + }, + "additionalEmailClaimTypes": { + "message": "Tipi di claim 'Email' aggiuntivi/personalizzati (separati da virgola)" + }, + "additionalNameClaimTypes": { + "message": "Tipi di claim \"Name\" aggiuntivi/personalizzati (separati da virgola)" + }, + "acrValues": { + "message": "Valori di riferimento della classe del contesto di autenticazione richiesta (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Valore atteso di claim \"acr\" nella risposta (convalida acr)" + }, + "spEntityId": { + "message": "ID entità SP" + }, + "spMetadataUrl": { + "message": "URL metadati SAML 2.0" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Formato 'Name ID'" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Comportamento firma" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Algoritmo di firma minimo in entrata" + }, + "spWantAssertionsSigned": { + "message": "Necessarie asserzioni firmate" + }, + "spValidateCertificates": { + "message": "Convalida i certificati" + }, + "idpEntityId": { + "message": "ID entità" + }, + "idpBindingType": { + "message": "Tipo di associazione" + }, + "idpSingleSignOnServiceUrl": { + "message": "URL del servizio di Single Sign On" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "Certificato pubblico X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Algoritmo di firma in uscita" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Consenti risposta di autenticazione non richiesta" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Permetti richieste di disconnessione in uscita" + }, + "idpSignAuthenticationRequests": { + "message": "Firma le richieste di autenticazione" + }, + "ssoSettingsSaved": { + "message": "La configurazione del Single Sign-On è stata salvata." + }, + "sponsoredFamilies": { + "message": "Bitwarden Families gratuito" + }, + "sponsoredFamiliesEligible": { + "message": "Tu e la tua famiglia siete eleggibili per Bitwarden Families gratis. Aderisci all'offerta con la tua mail personale e mantieni i tuoi dati al sicuro anche quando non sei a lavoro." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Riscatta oggi il tuo piano Bitwarden per famiglie gratuito per mantenere i tuoi dati al sicuro anche quando non sei al lavoro." + }, + "sponsoredFamiliesInclude": { + "message": "Il piano Bitwarden Families include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Accesso premium fino a 6 utenti" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Raccolte condivise per segreti di famiglia" + }, + "badToken": { + "message": "Il link non è più valido. Per favore chiedi allo sponsor di inviare nuovamente l'offerta." + }, + "reclaimedFreePlan": { + "message": "Piano gratuito riscattato" + }, + "redeem": { + "message": "Riscatta" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Seleziona l'organizzazione che desideri sponsorizzare" + }, + "familiesSponsoringOrgSelect": { + "message": "Quale offerta gratis per famiglie vorresti riscattare?" + }, + "sponsoredFamiliesEmail": { + "message": "Digita la tua email personale per riscattare Bitwarden per famiglie" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Se lasci o sei rimosso da questa organizzazione, il piano Famiglie scadrà alla fine del periodo di fatturazione." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accetta l'offerta per un'organizzazione esistente o crea una nuova organizzazione Famiglie." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Ti è stato offerto un piano gratuito per Bitwarden per famiglie. Per continuare, devi accedere all'account che ha ricevuto l'offerta." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Impossibile accettare l'offerta. Invia nuovamente l'email di offerta dal tuo account aziendale e riprova." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Impossibile accettare l'offerta. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Riscatta l'offerta di Bitwarden Families (Organizzazione)" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Offerta gratuita di Bitwarden per famiglie riscattata correttamente" + }, + "redeemed": { + "message": "Riscattato" + }, + "redeemedAccount": { + "message": "Account riscattato" + }, + "revokeAccount": { + "message": "Revoca l'account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Reinvia l'email sponsor allo sponsor $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Piano Families gratis" + }, + "redeemNow": { + "message": "Riscatta ora" + }, + "recipient": { + "message": "Destinatario" + }, + "removeSponsorship": { + "message": "Rimuovi sponsorizzazione" + }, + "removeSponsorshipConfirmation": { + "message": "Dopo aver rimosso una sponsorizzazione, sarai responsabile di questo abbonamento e delle relative fatture. Sei sicuro di voler continuare?" + }, + "sponsorshipCreated": { + "message": "Sponsorizzazione creata" + }, + "revoke": { + "message": "Revoca" + }, + "emailSent": { + "message": "Email inviata" + }, + "revokeSponsorshipConfirmation": { + "message": "Dopo aver rimosso questo account, il proprietario dell'organizzazione Famiglie sarà responsabile di questo abbonamento e delle relative fatture. Sei sicuro di voler continuare?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorizzazione rimossa" + }, + "ssoKeyConnectorUnavailable": { + "message": "Impossibile raggiungere il key connector, riprova più tardi." + }, + "keyConnectorUrl": { + "message": "URL del key connector" + }, + "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" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ sta usando SSO con una chiave 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" + }, + "removeMasterPassword": { + "message": "Rimuovi la password principale" + }, + "removedMasterPassword": { + "message": "Password principale rimossa." + }, + "allowSso": { + "message": "Consenti autenticazione SSO" + }, + "allowSsoDesc": { + "message": "Una volta impostata, la tua configurazione sarà salvata e i membri potranno autenticarsi utilizzando le credenziali del loro Identity Provider." + }, + "ssoPolicyHelpStart": { + "message": "Abilita la", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "policy SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "per obbligare tutti i membri ad accedere con SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "L'autenticazione SSO e i criteri dell'organizzazione unica sono necessari per configurare la decifratura del connettore chiave." + }, + "memberDecryptionOption": { + "message": "Opzioni di decifratura membro" + }, + "memberDecryptionPassDesc": { + "message": "Una volta autenticati, i membri decrittograferanno i dati della cassaforte con le loro password principali." + }, + "keyConnector": { + "message": "Key connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Collega il tuo accesso con SSO al tuo server \"self-hosted\" di decrittazione. Utilizzando questa opzione, i membri non avranno bisogno di utilizzare la loro password principale per decrittare la cassaforte." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Accesso con SSO e decrittazione key connector\" è abilitato. Questa politica sarà applicata solo ai proprietari e agli amministratori." + }, + "enabledSso": { + "message": "SSO abilitato" + }, + "disabledSso": { + "message": "SSO disabilitato" + }, + "enabledKeyConnector": { + "message": "Key connector abilitato" + }, + "disabledKeyConnector": { + "message": "Key connector disabilitato" + }, + "keyConnectorWarning": { + "message": "Una volta impostato il key connector, le opzioni di decrittazione dei membri non potranno più essere modificate." + }, + "migratedKeyConnector": { + "message": "Migrato al key connector" + }, + "paymentSponsored": { + "message": "Fornisci un metodo di pagamento da associare all'organizzazione. Non ti preoccupare, non ti addebiteremo nulla a meno che non selezioni funzionalità aggiuntive o la tua sponsorizzazione scada. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "L'offerta di sponsorizzazione è scaduta e puoi eliminare l'organizzazione creata per evitare un addebito al termine della prova di 7 giorni. Altrimenti puoi chiudere questa richiesta per mantenere l'organizzazione e assumerti la responsabilità della fatturazione." + }, + "newFamiliesOrganization": { + "message": "Nuova organizzazione Famiglie" + }, + "acceptOffer": { + "message": "Accetta l'offerta" + }, + "sponsoringOrg": { + "message": "Organizzazione sponsor" + }, + "keyConnectorTest": { + "message": "Prova" + }, + "keyConnectorTestSuccess": { + "message": "Key connector raggiunto!" + }, + "keyConnectorTestFail": { + "message": "Impossibile raggiungere il Key Connector. Controlla l'URL." + }, + "sponsorshipTokenHasExpired": { + "message": "L'offerta di sponsorizzazione è scaduta." + }, + "freeWithSponsorship": { + "message": "GRATUITO con sponsorizzazione" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ campi richiedono la tua attenzione.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 campo ha bisogno di attenzione." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ è obbligatorio.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "obbligatorio" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Richiesto se l'Entity ID non è un URL." + }, + "openIdOptionalCustomizations": { + "message": "Personalizzazioni opzionali" + }, + "openIdAuthorityRequired": { + "message": "Richiesto se l'Authority non è valida." + }, + "separateMultipleWithComma": { + "message": "Elenco separato da virgole." + }, + "sessionTimeout": { + "message": "La tua sessione è scaduta. Torna indietro e riprova ad accedere." + }, + "exportingPersonalVaultTitle": { + "message": "Esportazione cassaforte personale" + }, + "exportingOrganizationVaultTitle": { + "message": "Esportazione cassaforte dell'organizzazione" + }, + "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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Sarà esportata solo la cassaforte dell'organizzazione associata a $ORGANIZATION$. Gli oggetti della cassaforte personale e gli oggetti da altre organizzazioni non saranno inclusi.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Torna ai report" + }, + "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 email alternativo", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "service": { + "message": "Servizio" + } +} diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json new file mode 100644 index 0000000000..3793b3c3fa --- /dev/null +++ b/apps/web/src/locales/ja/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ ウェブ保管庫", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "パスワード" + }, + "newPassword": { + "message": "新しいパスワード" + }, + "passphrase": { + "message": "パスフレーズ" + }, + "notes": { + "message": "メモ" + }, + "customFields": { + "message": "カスタムフィールド" + }, + "cardholderName": { + "message": "カードの名義人名" + }, + "number": { + "message": "番号" + }, + "brand": { + "message": "ブランド" + }, + "expiration": { + "message": "有効期限" + }, + "securityCode": { + "message": "セキュリティコード (CVV)" + }, + "identityName": { + "message": "固有名" + }, + "company": { + "message": "会社名" + }, + "ssn": { + "message": "社会保障番号" + }, + "passportNumber": { + "message": "パスポート番号" + }, + "licenseNumber": { + "message": "免許証番号" + }, + "email": { + "message": "メールアドレス" + }, + "phone": { + "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月" + }, + "title": { + "message": "敬称" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "有効期限月" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "削除" + }, + "unassigned": { + "message": "未割り当て" + }, + "noneFolder": { + "message": "フォルダーなし", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "フォルダーを追加" + }, + "editFolder": { + "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." + }, + "never": { + "message": "なし" + }, + "toggleVisibility": { + "message": "表示切り替え" + }, + "toggleCollapse": { + "message": "開く/閉じる", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "パスワードの自動生成" + }, + "checkPassword": { + "message": "パスワードが漏洩していないか確認する" + }, + "passwordExposed": { + "message": "このパスワードは過去に$VALUE$回漏洩したことがあるため、変更するべきです。", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "このパスワードは過去に漏洩したデータ内にはないため、安全であると思われます。" + }, + "save": { + "message": "保存" + }, + "cancel": { + "message": "キャンセル" + }, + "canceled": { + "message": "キャンセルしました" + }, + "close": { + "message": "閉じる" + }, + "delete": { + "message": "削除" + }, + "favorite": { + "message": "お気に入り" + }, + "unfavorite": { + "message": "お気に入り解除" + }, + "edit": { + "message": "編集" + }, + "searchCollection": { + "message": "コレクションの検索" + }, + "searchFolder": { + "message": "フォルダーの検索" + }, + "searchFavorites": { + "message": "お気に入りの検索" + }, + "searchType": { + "message": "タイプの検索", + "description": "Search item type" + }, + "searchVault": { + "message": "保管庫を検索" + }, + "allItems": { + "message": "全てのアイテム" + }, + "favorites": { + "message": "お気に入り" + }, + "types": { + "message": "タイプ" + }, + "typeLogin": { + "message": "ログイン" + }, + "typeCard": { + "message": "カード" + }, + "typeIdentity": { + "message": "ID" + }, + "typeSecureNote": { + "message": "メモ" + }, + "typeLoginPlural": { + "message": "ログイン" + }, + "typeCardPlural": { + "message": "カード" + }, + "typeIdentityPlural": { + "message": "ID" + }, + "typeSecureNotePlural": { + "message": "セキュアメモ" + }, + "folders": { + "message": "フォルダー" + }, + "collections": { + "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": "国" + }, + "shared": { + "message": "共有" + }, + "attachments": { + "message": "添付ファイル" + }, + "select": { + "message": "選択" + }, + "addItem": { + "message": "アイテムの追加" + }, + "editItem": { + "message": "アイテムの編集" + }, + "viewItem": { + "message": "アイテムの表示" + }, + "ex": { + "message": "例:", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "その他" + }, + "share": { + "message": "共有" + }, + "moveToOrganization": { + "message": "組織に移動" + }, + "valueCopied": { + "message": "$VALUE$ をコピーしました", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "値のコピー", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "パスワードのコピー", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "ユーザー名のコピー", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "番号のコピー", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "セキュリティコードのコピー", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "URI のコピー", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "保管庫" + }, + "vault": { + "message": "保管庫" + }, + "moveSelectedToOrg": { + "message": "選択したものを組織に移動" + }, + "deleteSelected": { + "message": "選択したものを削除" + }, + "moveSelected": { + "message": "選択したものを移動" + }, + "selectAll": { + "message": "すべて選択" + }, + "unselectAll": { + "message": "すべて選択解除" + }, + "launch": { + "message": "開く" + }, + "newAttachment": { + "message": "添付ファイルの追加" + }, + "deletedAttachment": { + "message": "添付ファイルを削除" + }, + "deleteAttachmentConfirmation": { + "message": "この添付ファイルを削除してよろしいですか?" + }, + "attachmentSaved": { + "message": "添付ファイルを保存しました。" + }, + "file": { + "message": "ファイル" + }, + "selectFile": { + "message": "ファイルを選択してください。" + }, + "maxFileSize": { + "message": "最大ファイルサイズ: 500 MB" + }, + "updateKey": { + "message": "暗号キーを更新するまでこの機能は使用できません。" + }, + "addedItem": { + "message": "追加されたアイテム" + }, + "editedItem": { + "message": "編集されたアイテム" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ を $ORGNAME$ に移動しました", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "選択したアイテムを $ORGNAME$ に移動しました", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "アイテムの削除" + }, + "deleteFolder": { + "message": "フォルダーの削除" + }, + "deleteAttachment": { + "message": "添付ファイルの削除" + }, + "deleteItemConfirmation": { + "message": "このアイテムを削除してもよろしいですか?" + }, + "deletedItem": { + "message": "削除されたアイテム" + }, + "deletedItems": { + "message": "削除されたアイテム" + }, + "movedItems": { + "message": "移動されたアイテム" + }, + "overwritePasswordConfirmation": { + "message": "現在のパスワードを上書きしてもよろしいですか?" + }, + "editedFolder": { + "message": "フォルダーを編集しました" + }, + "addedFolder": { + "message": "フォルダーを追加しました" + }, + "deleteFolderConfirmation": { + "message": "フォルダーを削除しますか?" + }, + "deletedFolder": { + "message": "フォルダーを削除しました" + }, + "loggedOut": { + "message": "ログアウトしました" + }, + "loginExpired": { + "message": "ログインセッションの有効期限が切れています。" + }, + "logOutConfirmation": { + "message": "ログアウトしてもよろしいですか?" + }, + "logOut": { + "message": "ログアウト" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "はい" + }, + "no": { + "message": "いいえ" + }, + "loginOrCreateNewAccount": { + "message": "安全なデータ保管庫へアクセスするためにログインまたはアカウントを作成してください。" + }, + "createAccount": { + "message": "アカウントの作成" + }, + "logIn": { + "message": "ログイン" + }, + "submit": { + "message": "送信" + }, + "emailAddressDesc": { + "message": "メールアドレスを使用してログインできます。" + }, + "yourName": { + "message": "名前" + }, + "yourNameDesc": { + "message": "あなたを何と呼べばいいですか?" + }, + "masterPass": { + "message": "マスターパスワード" + }, + "masterPassDesc": { + "message": "マスターパスワードは、パスワード保管庫へのアクセスに使用するパスワードです。あなたのマスターパスワードを忘れないように注意してください。忘れた場合、パスワードを回復する方法はありません。" + }, + "masterPassHintDesc": { + "message": "マスターパスワードのヒントは、パスワードを忘れた場合に役立ちます。" + }, + "reTypeMasterPass": { + "message": "マスターパスワードを再入力" + }, + "masterPassHint": { + "message": "マスターパスワードのヒント (省略可能)" + }, + "masterPassHintLabel": { + "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": "予期せぬエラーが発生しました。" + }, + "emailAddress": { + "message": "メールアドレス" + }, + "yourVaultIsLocked": { + "message": "保管庫がロックされています。開くにはマスターパスワードを入力してください。" + }, + "unlock": { + "message": "ロック解除" + }, + "loggedInAsEmailOn": { + "message": "$HOSTNAME$ の $EMAIL$ としてログインしました。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "マスターパスワードが間違っています" + }, + "lockNow": { + "message": "今すぐロック" + }, + "noItemsInList": { + "message": "表示するアイテムがありません" + }, + "noCollectionsInList": { + "message": "表示するコレクションがありません" + }, + "noGroupsInList": { + "message": "表示するグループがありません" + }, + "noUsersInList": { + "message": "表示するユーザーがありません" + }, + "noEventsInList": { + "message": "表示するイベントがありません" + }, + "newOrganization": { + "message": "新しい組織" + }, + "noOrganizationsList": { + "message": "あなたはどの組織にも属していません。組織では他のユーザーとアイテムを安全に共有できます。" + }, + "versionNumber": { + "message": "バージョン $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 ポートに挿入し、ボタンがある場合はボタンをタッチしてください。" + }, + "loginUnavailable": { + "message": "ログインできません。" + }, + "noTwoStepProviders": { + "message": "このアカウントは2段階認証が有効ですが、このブラウザに対応した2段階認証プロパイダが一つも設定されていません。" + }, + "noTwoStepProviders2": { + "message": "Chrome などの対応したブラウザを使うか、より幅広い端末に対応した認証プロパイダを追加してください。" + }, + "twoStepOptions": { + "message": "2段階認証オプション" + }, + "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." + }, + "u2fDesc": { + "message": "FIDO U2F が有効なセキュリティキーを使ってアカウントにアクセスできます。" + }, + "u2fTitle": { + "message": "FIDO U2F セキュリティキー" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "アカウントにアクセスするには、WebAuthn 対応のセキュリティキーを使用してください。" + }, + "webAuthnMigrated": { + "message": "(FIDOから統合)" + }, + "emailTitle": { + "message": "メールアドレス" + }, + "emailDesc": { + "message": "確認コードをメールにお送りします。" + }, + "continue": { + "message": "続ける" + }, + "organization": { + "message": "組織" + }, + "organizations": { + "message": "組織" + }, + "moveToOrgDesc": { + "message": "このアイテムを移動する組織を選択してください。組織に移動すると、アイテムの所有権がその組織に移行します。 このアイテムが移動された後、あなたはこのアイテムの直接の所有者にはなりません。" + }, + "moveManyToOrgDesc": { + "message": "このアイテムを移動する組織を選択してください。組織に移動すると、アイテムの所有権がその組織に移行します。 このアイテムが移動された後、あなたはこのアイテムの直接の所有者にはなりません。" + }, + "collectionsDesc": { + "message": "このアイテムを共有するコレクションを編集します。共有したアイテムは、当該コレクションにアクセスできる組織ユーザーにのみ表示されます。" + }, + "deleteSelectedItemsDesc": { + "message": "$COUNT$個のアイテムを削除しようとしています。本当にこれらのアイテムを削除しますか?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "$COUNT$個のアイテムを移動したいフォルダーを選択してください。", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "$COUNT$ アイテムを選択しました。 $MOVEABLE_COUNT$ アイテムは組織に移動できます。 $NONMOVEABLE_COUNT$ アイテムはできません。", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "認証コード (TOTP)" + }, + "copyVerificationCode": { + "message": "認証コードのコピー" + }, + "warning": { + "message": "注意" + }, + "confirmVaultExport": { + "message": "保管庫のエクスポートの確認" + }, + "exportWarningDesc": { + "message": "このエクスポートデータは暗号化されていない形式の保管庫データを含んでいます。メールなどのセキュリティ保護されていない方法で共有したり保管したりしないでください。使用した後はすぐに削除してください。" + }, + "encExportKeyWarningDesc": { + "message": "このエクスポートは、アカウントの暗号化キーを使用してデータを暗号化します。 暗号化キーをローテーションした場合は、このエクスポートファイルを復号することはできなくなるため、もう一度エクスポートする必要があります。" + }, + "encExportAccountWarningDesc": { + "message": "アカウント暗号化キーは各 Bitwarden ユーザーアカウントに固有であるため、暗号化されたエクスポートを別のアカウントにインポートすることはできません。" + }, + "export": { + "message": "エクスポート" + }, + "exportVault": { + "message": "保管庫のエクスポート" + }, + "fileFormat": { + "message": "ファイル形式" + }, + "exportSuccess": { + "message": "エクスポートされました。" + }, + "passwordGenerator": { + "message": "パスワード生成ツール" + }, + "minComplexityScore": { + "message": "最小複雑度" + }, + "minNumbers": { + "message": "数字の最小個数" + }, + "minSpecial": { + "message": "記号の最小数", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "あいまいな文字を省く" + }, + "regeneratePassword": { + "message": "パスワードの再生成" + }, + "length": { + "message": "長さ" + }, + "numWords": { + "message": "単語数" + }, + "wordSeparator": { + "message": "単語の区切り" + }, + "capitalize": { + "message": "先頭を大文字", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "数字を含む" + }, + "passwordHistory": { + "message": "パスワードの履歴" + }, + "noPasswordsInList": { + "message": "表示するパスワードがありません" + }, + "clear": { + "message": "消去する", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "アカウントを更新しました" + }, + "changeEmail": { + "message": "メールアドレスを変更" + }, + "changeEmailTwoFactorWarning": { + "message": "続行するとアカウントのメールアドレスが変更されます。2段階認証に使用されるメールアドレスは変更されません。必要に応じて2段階認証の設定で変更できます。" + }, + "newEmail": { + "message": "新しいメールアドレス" + }, + "code": { + "message": "コード" + }, + "changeEmailDesc": { + "message": "認証コードのメールを $EMAIL$ に送信しました。メールアドレスの変更を完了するには、メールを確認してコードを以下に入力してください。", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "次に進むと現在のセッションからログアウトし再度ログインが必要になります。他のデバイスでのセッションは1時間程度維持されます。" + }, + "emailChanged": { + "message": "メールアドレスの変更" + }, + "logBackIn": { + "message": "ログインし直してください" + }, + "logBackInOthersToo": { + "message": "ログインし直してください。他のBitwardenのアプリを使用している場合、同様にログインし直してください。" + }, + "changeMasterPassword": { + "message": "マスターパスワードの変更" + }, + "masterPasswordChanged": { + "message": "マスターパスワードが変更されました。" + }, + "currentMasterPass": { + "message": "現在のマスターパスワード" + }, + "newMasterPass": { + "message": "新しいマスターパスワード" + }, + "confirmNewMasterPass": { + "message": "新しいマスターパスワードの確認" + }, + "encKeySettings": { + "message": "暗号化の設定" + }, + "kdfAlgorithm": { + "message": "KDFアルゴリズム" + }, + "kdfIterations": { + "message": "KDF反復回数" + }, + "kdfIterationsDesc": { + "message": "KDF反復回数が多いほどマスターパスワードに対する総当たり攻撃に強くなります。$VALUE$以上を推奨します。", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "KDF反復回数が多すぎると遅いCPUのデバイスでログイン・ロック解除時のパフォーマンスが低下します。$INCREMENT$ずつ回数を増やし全てのデバイスでテストすることを推奨します。", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDFの変更" + }, + "encKeySettingsChanged": { + "message": "暗号化キーの設定が変更されました" + }, + "dangerZone": { + "message": "危険な操作" + }, + "dangerZoneDesc": { + "message": "これらの操作はやり直せないため注意してください!" + }, + "deauthorizeSessions": { + "message": "セッションの承認を取り消す" + }, + "deauthorizeSessionsDesc": { + "message": "あなたのアカウントに別のデバイスからログインされていますか? 以下で以前に使用したすべてのコンピューターやデバイスの認証を解除できます。 このステップは、以前に公共のコンピューターを使用した場合や、誤って他人のデバイスにパスワードを保存した場合におすすめです。 以前に記憶された二段階認証のログインセッションもすべてクリアされます。" + }, + "deauthorizeSessionsWarning": { + "message": "次に進むと現在のセッションからログアウトし二段階認証を含め再度ログインが必要になります。他のデバイスでのセッションは1時間程度維持されます。" + }, + "sessionsDeauthorized": { + "message": "全てのセッションを無効化" + }, + "purgeVault": { + "message": "保管庫を削除" + }, + "purgedOrganizationVault": { + "message": "組織の保管庫を削除" + }, + "vaultAccessedByProvider": { + "message": "保管庫がプロバイダーからアクセスされました。" + }, + "purgeVaultDesc": { + "message": "続行すると保管庫内のすべてのアイテムとフォルダーが削除されます。組織と共有しているアイテムは削除されません。" + }, + "purgeOrgVaultDesc": { + "message": "続行すると組織の保管庫内の全てのアイテムを削除します。" + }, + "purgeVaultWarning": { + "message": "保管庫を恒久的に削除します。元に戻すことはできません。" + }, + "vaultPurged": { + "message": "あなたの保管庫は削除されました。" + }, + "deleteAccount": { + "message": "アカウントの削除" + }, + "deleteAccountDesc": { + "message": "続行するとアカウントと関連するすべてのデータが削除されます。" + }, + "deleteAccountWarning": { + "message": "アカウントを恒久的に削除します。元に戻すことはできません。" + }, + "accountDeleted": { + "message": "アカウントが削除されました" + }, + "accountDeletedDesc": { + "message": "アカウントが削除され、すべての関連するデータが削除されました。" + }, + "myAccount": { + "message": "マイアカウント" + }, + "tools": { + "message": "ツール" + }, + "importData": { + "message": "データをインポート" + }, + "importError": { + "message": "インポートエラー" + }, + "importErrorDesc": { + "message": "インポートしようとしたデータに問題がありました。以下のエラーをソースファイルで解決し、もう一度やり直してください。" + }, + "importSuccess": { + "message": "データを保管庫にインポートしました。" + }, + "importWarning": { + "message": "$ORGANIZATION$にデータをインポートしています。データはこの組織のメンバーと共有される可能性があります。続行しますか?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "データが正しい形式ではありません。インポートするファイルを確認してやり直してください。" + }, + "importNothingError": { + "message": "何もインポートされませんでした。" + }, + "importEncKeyError": { + "message": "エクスポートされたファイルの復号でエラーが発生しました。暗号化キーが、データをエクスポートするために使用された暗号化キーと一致しません。" + }, + "selectFormat": { + "message": "インポートするファイルの形式を選択" + }, + "selectImportFile": { + "message": "インポートするファイルを選択" + }, + "orCopyPasteFileContents": { + "message": "またはインポートするファイルの中身をコピーして貼り付け" + }, + "instructionsFor": { + "message": "$NAME$ 向けの説明", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "オプション" + }, + "optionsDesc": { + "message": "ウェブ保管庫の動作をカスタマイズします。" + }, + "optionsUpdated": { + "message": "オプションを更新しました" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "ウェブ保管庫で使用する言語を変更します。" + }, + "disableIcons": { + "message": "ウェブサイトアイコンの無効化" + }, + "disableIconsDesc": { + "message": "保管庫のアイテム毎にウェブサイトのアイコンを表示します。" + }, + "enableGravatars": { + "message": "Gravatar を有効化", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "gravatar.com から読み込んだアバター画像を使います。" + }, + "enableFullWidth": { + "message": "全幅レイアウトを有効化", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "ウェブ保管庫の幅をブラウザウインドウ一杯に広げます。" + }, + "default": { + "message": "デフォルト" + }, + "domainRules": { + "message": "ドメインルール" + }, + "domainRulesDesc": { + "message": "複数の異なるドメインで同じログイン情報を用いることができます。「グローバルドメイン」はBitwardenにより予め作成されたものです。" + }, + "globalEqDomains": { + "message": "グローバルドメイン" + }, + "customEqDomains": { + "message": "カスタムドメイン" + }, + "exclude": { + "message": "無効化" + }, + "include": { + "message": "有効化" + }, + "customize": { + "message": "カスタマイズ" + }, + "newCustomDomain": { + "message": "新規カスタムドメイン" + }, + "newCustomDomainDesc": { + "message": "コンマで区切ったドメインリストを入力します。サブドメインを除いて入力してください。例えば、\"www.google.com\"ではなく\"google.com\"を入力します。\"androidapp://package.name\"の形式で入力することでドメインとAndroidアプリを関連付けることもできます。" + }, + "customDomainX": { + "message": "カスタムドメイン $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "ドメインが更新されました" + }, + "twoStepLogin": { + "message": "2段階認証" + }, + "twoStepLoginDesc": { + "message": "ログイン時に追加の手順を必要としアカウントを保護します。" + }, + "twoStepLoginOrganizationDesc": { + "message": "組織レベルで認証プロバイダを設定することで、組織のユーザーに二段階の認証を必要とします。" + }, + "twoStepLoginRecoveryWarning": { + "message": "二段階認証を有効にすると Bitwarden アカウントから永久に閉め出されてしまうことがあります。リカバリーコードがあれば、通常の二段階認証プロバイダを使えなくなったとき(デバイスの紛失等)でもアカウントにアクセスできます。アカウントにアクセスできなくなっても Bitwarden はサポート出来ないため、リカバリーコードを書き出すか印刷し安全な場所で保管しておくことを推奨します。" + }, + "viewRecoveryCode": { + "message": "リカバリーコードを確認" + }, + "providers": { + "message": "プロバイダ", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "有効化" + }, + "enabled": { + "message": "有効化されました" + }, + "premium": { + "message": "プレミアム版", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "プレミアム会員" + }, + "premiumRequired": { + "message": "プレミアム会員専用" + }, + "premiumRequiredDesc": { + "message": "この機能はプレミアム会員専用です。" + }, + "youHavePremiumAccess": { + "message": "あなたはプレミアム会員です。" + }, + "alreadyPremiumFromOrg": { + "message": "あなたが属している組織のおかげで、あなたは既にプレミアム機能が利用可能です。" + }, + "manage": { + "message": "管理" + }, + "disable": { + "message": "無効化" + }, + "twoStepLoginProviderEnabled": { + "message": "この二段階認証プロバイダは、あなたのアカウントで有効になっています。" + }, + "twoStepLoginAuthDesc": { + "message": "二段階認証の設定を変更するためにマスターパスワードを入力して下さい。" + }, + "twoStepAuthenticatorDesc": { + "message": "認証アプリによる二段階認証を設定するために必要な手順:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "二段階認証アプリをダウンロード" + }, + "twoStepAuthenticatorNeedApp": { + "message": "二段階認証アプリが必要ですか?以下からダウンロードして下さい。" + }, + "iosDevices": { + "message": "iOS デバイス" + }, + "androidDevices": { + "message": "Android デバイス" + }, + "windowsDevices": { + "message": "Windows デバイス" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "これらのアプリがお勧めですが、他の認証アプリでも動作します。" + }, + "twoStepAuthenticatorScanCode": { + "message": "認証アプリでQRコードをスキャンして下さい。" + }, + "key": { + "message": "キー" + }, + "twoStepAuthenticatorEnterCode": { + "message": "認証アプリに表示された6桁の確認コードを入力して下さい。" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "別のデバイスの認証アプリを利用する場合、以下のQRコード(またはキー)が必要となります。" + }, + "twoStepDisableDesc": { + "message": "この二段階認証プロバイダを無効にしますか?" + }, + "twoStepDisabled": { + "message": "二段階認証プロバイダが無効化されました。" + }, + "twoFactorYubikeyAdd": { + "message": "アカウントに新しい YubiKey を追加する" + }, + "twoFactorYubikeyPlugIn": { + "message": "YubiKey をコンピューターの USB ポートに挿入してください。" + }, + "twoFactorYubikeySelectKey": { + "message": "最初の未入力の YubiKey 入力フィールドを選択してください。" + }, + "twoFactorYubikeyTouchButton": { + "message": "YubiKey のボタンにタッチします。" + }, + "twoFactorYubikeySaveForm": { + "message": "フォームを保存します。" + }, + "twoFactorYubikeyWarning": { + "message": "プラットフォームの制限により YubiKey は Bitwarden のアプリケーションのすべてで使用できるわけではありません。他の二段階認証プロバイダを有効化しておくと、YubiKey が使用できない場合でもアカウントにアクセスできます。対応プラットフォーム:" + }, + "twoFactorYubikeySupportUsb": { + "message": "ウェブ保管庫、デスクトップアプリ、コマンドラインツール、USBポートのあるデバイス上のブラウザ拡張機能では YubiKey を使用できます。" + }, + "twoFactorYubikeySupportMobile": { + "message": "NFCまたはUSBポートのあるデバイスのモバイルアプリではYubiKeyを使用できます。" + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F対応キー $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC対応" + }, + "twoFactorYubikeySupportsNfc": { + "message": "NFC対応のYubiKeyが含まれています" + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "NFC対応のYubiKey(YubiKey NEOなど)が含まれる場合、NFC対応のモバイルデバイスで確認画面が表示されます。" + }, + "yubikeysUpdated": { + "message": "YubiKeyが更新されました" + }, + "disableAllKeys": { + "message": "すべてのキーを無効化" + }, + "twoFactorDuoDesc": { + "message": "Bitwardenアプリの情報をDuoの管理パネルから入力して下さい。" + }, + "twoFactorDuoIntegrationKey": { + "message": "連携キー" + }, + "twoFactorDuoSecretKey": { + "message": "秘密鍵" + }, + "twoFactorDuoApiHostname": { + "message": "API のホスト名" + }, + "twoFactorEmailDesc": { + "message": "Eメールによる二段階認証を設定するために必要な手順:" + }, + "twoFactorEmailEnterEmail": { + "message": "認証コードを受信したいメールアドレスを入力して下さい。" + }, + "twoFactorEmailEnterCode": { + "message": "Eメールに記載された6桁の認証コードを入力して下さい。" + }, + "sendEmail": { + "message": "メールを送信" + }, + "twoFactorU2fAdd": { + "message": "FIDO U2F対応キーをアカウントに追加" + }, + "removeU2fConfirmation": { + "message": "本当にこのセキュリティキーを削除しますか?" + }, + "twoFactorWebAuthnAdd": { + "message": "WebAuthnセキュリティキーをアカウントに追加" + }, + "readKey": { + "message": "読み取りキー" + }, + "keyCompromised": { + "message": "キーが壊れています。" + }, + "twoFactorU2fGiveName": { + "message": "セキュリティキーを識別するための名前を追加します。" + }, + "twoFactorU2fPlugInReadKey": { + "message": "セキュリティキーをコンピューターのUSBポートに差し込み、「読み取りキー」ボタンをクリックしてください。" + }, + "twoFactorU2fTouchButton": { + "message": "セキュリティキーにボタンがある場合、タッチして下さい。" + }, + "twoFactorU2fSaveForm": { + "message": "フォームを保存します。" + }, + "twoFactorU2fWarning": { + "message": "プラットフォームの制限によりFIDO U2F対応キーはBitwardenのアプリケーションのすべてで使用できるわけではありません。他の二段階認証プロバイダを有効化しておくと、FIDO U2F対応キーが使用できない場合でもアカウントにアクセスできます。サポートされるプラットフォーム:" + }, + "twoFactorU2fSupportWeb": { + "message": "ウェブ保管庫とU2Fに対応したブラウザ(Chrome、Opera、Vivaldi、Firefox)のブラウザ拡張機能" + }, + "twoFactorU2fWaiting": { + "message": "セキュリティキーのボタンがタッチされるのを待っています。" + }, + "twoFactorU2fClickSave": { + "message": "このセキュリティキーを二段階認証で有効化するには、「保存」ボタンをクリックして下さい。" + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "セキュリティキーの読み取り中に問題が発生しました。もう一度やり直して下さい。" + }, + "twoFactorWebAuthnWarning": { + "message": "プラットフォームの制限により、WebAuthnはBitwardenの全てのアプリケーションで使用できるわけではありません。WebAuthnが使用できない場合に備えて、他の二段階認証プロバイダを有効化しておくことをおすすめします。サポートされているプラットフォーム:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "二段階認証のリカバリーコード" + }, + "twoFactorRecoveryNoCode": { + "message": "あなたはまだ二段階認証プロバイダを有効化していません。有効化すると、ここでリカバリーコードを確認できます。" + }, + "printCode": { + "message": "コードを印刷する", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "レポート" + }, + "reportsDesc": { + "message": "以下のレポートをクリックして、オンラインアカウントのセキュリティギャップを特定して修正してください。" + }, + "unsecuredWebsitesReport": { + "message": "非セキュアウェブサイト調査" + }, + "unsecuredWebsitesReportDesc": { + "message": "http://方式のセキュリティ保護されていないウェブサイトは危険です。ウェブサイトが対応していれば、接続が暗号化されるhttps://方式を常時利用すべきです。" + }, + "unsecuredWebsitesFound": { + "message": "セキュリティ保護されていないウェブサイトが見つかりました" + }, + "unsecuredWebsitesFoundDesc": { + "message": "セキュアでないURIが$COUNT$個のアイテムで見つかりました。ウェブサイトが対応しているならば、URIをhttps://形式に変更すべきです。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "セキュアでないURIを持つアイテムは見つかりませんでした。" + }, + "inactive2faReport": { + "message": "非アクティブ二段階認証調査" + }, + "inactive2faReportDesc": { + "message": "二段階認証(2FA)はアカウントをセキュアにするのを助ける重要なセキュリティ設定です。ウェブサイトが対応している場合、二段階認証を常時有効化すべきです。" + }, + "inactive2faFound": { + "message": "二段階認証を利用していないアイテムが見つかりました" + }, + "inactive2faFoundDesc": { + "message": "保管庫内に二段階認証(ウェブサイトが対応しているかはtwofactorauth.orgによる情報)が設定されていない可能性がある$COUNT$個のウェブサイトが見つかりました。これらのアカウントをよりセキュアにするため、二段階認証を有効化すべきです。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "二段階認証が設定されていないアイテムは見つかりませんでした。" + }, + "instructions": { + "message": "使い方" + }, + "exposedPasswordsReport": { + "message": "流出パスワード調査" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "流出したパスワードが見つかりました" + }, + "exposedPasswordsFoundDesc": { + "message": "既知のデータ流出で公開されていたパスワードが $COUNT$ 個のアイテムで見つかりました。これらは新しいパスワードへ変更すべきです。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "既知のデータ流出で公開されているパスワードは見つかりませんでした。" + }, + "checkExposedPasswords": { + "message": "流出したパスワードを確認" + }, + "exposedXTimes": { + "message": "流出 $COUNT$回", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "脆弱パスワード調査" + }, + "weakPasswordsReportDesc": { + "message": "脆弱なパスワードは、ハッカーによって簡単に推測することができ、また自動化されたツールでパスワードが解析されます。Bitwardenのパスワード生成ツールを使用すると、強力なパスワードを作成することができます。" + }, + "weakPasswordsFound": { + "message": "脆弱なパスワードが見つかりました" + }, + "weakPasswordsFoundDesc": { + "message": "保管庫内に$COUNT$個の強力でないパスワードが見つかりました。もっと強力なパスワードへ更新すべきです。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "脆弱なパスワードは見つかりませんでした。" + }, + "reusedPasswordsReport": { + "message": "再利用パスワード調査" + }, + "reusedPasswordsReportDesc": { + "message": "あなたが使用するサービスのデータが流出し、同じパスワードを他でも利用していた場合、ハッカーは簡単に複数のオンラインアカウントへのアクセスが可能となります。すべてのアカウント・サービスでそれぞれ異なるパスワードを使用すべきです。" + }, + "reusedPasswordsFound": { + "message": "再利用しているパスワードが見つかりました。" + }, + "reusedPasswordsFoundDesc": { + "message": "$COUNT$個の再利用しているパスワードが見つかりました。それぞれ異なるパスワードへ変更すべきです。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "再利用しているパスワードは見つかりませんでした。" + }, + "reusedXTimes": { + "message": "再利用 $COUNT$回", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "情報漏えい調査" + }, + "breachDesc": { + "message": "ハッカーに不正にアクセスされ、サイトのデータが流出した事件の情報から、あなたのメールアドレス、パスワード、クレジットカードなどが危険に晒されていないかを調査し、パスワード変更など適切な対処を行いましょう。" + }, + "breachCheckUsernameEmail": { + "message": "チェックしたいユーザー名またはメールアドレスを入力して下さい。" + }, + "checkBreaches": { + "message": "調査する" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$は漏えいデータ内に見つかりませんでした。", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "良いお知らせです!", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$は$COUNT$つの漏えいデータ内で見つかりました。", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "漏えいデータが見つかりました" + }, + "compromisedData": { + "message": "漏えいしたデータ" + }, + "website": { + "message": "ウェブサイト" + }, + "affectedUsers": { + "message": "影響を受けるユーザー" + }, + "breachOccurred": { + "message": "発生日" + }, + "breachReported": { + "message": "報告日" + }, + "reportError": { + "message": "調査データのロード中にエラーが発生しました。もう一度やり直して下さい。" + }, + "billing": { + "message": "料金" + }, + "accountCredit": { + "message": "アカウント クレジット", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "アカウント残高", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "クレジットの追加", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "金額", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "支払いが完全に処理された後、追加のクレジットがアカウントに表示されます。お支払い方法によっては、遅延したり他の方法よりも処理に時間が掛かることがあります。" + }, + "makeSureEnoughCredit": { + "message": "購入に使用できるだけのクレジットが登録されているか確認してください。使用可能なクレジットが不足している場合、差額にはデフォルトのお支払い方法が利用されます。「料金」ページから悪ントにクレジットを追加できます。" + }, + "creditAppliedDesc": { + "message": "アカウントに登録されたクレジットは購入に使用できます。使用可能なクレジットは、このアカウントへの請求に自動的に適用されます。" + }, + "goPremium": { + "message": "プレミアム版にアップグレード", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "プレミアム版にアップグレードされました。" + }, + "premiumUpgradeUnlockFeatures": { + "message": "プレミアム会員にアップグレードして他の素晴らしい追加機能を使えるようにします。" + }, + "premiumSignUpStorage": { + "message": "1GB の暗号化されたファイルストレージ" + }, + "premiumSignUpTwoStep": { + "message": "YubiKey、FIDO U2F、Duoなどの追加の2段階認証ログインオプション" + }, + "premiumSignUpEmergency": { + "message": "緊急アクセス" + }, + "premiumSignUpReports": { + "message": "保管庫を安全に保つための、パスワードやアカウントの健全性、データ侵害に関するレポート" + }, + "premiumSignUpTotp": { + "message": "保管庫内での2段階認証コード生成" + }, + "premiumSignUpSupport": { + "message": "優先カスタマーサポート" + }, + "premiumSignUpFuture": { + "message": "将来のプレミアム機能すべて(詳細は近日公開予定!)" + }, + "premiumPrice": { + "message": "全部で年間たった$PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "アドオン" + }, + "premiumAccess": { + "message": "プレミアムアクセス" + }, + "premiumAccessDesc": { + "message": "$PRICE$/$INTERVAL$で、あなたの組織のすべてのメンバーにプレミアム機能を付帯できます。", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "追加ストレージ容量(GB)" + }, + "additionalStorageGbDesc": { + "message": "# 追加容量(GB)" + }, + "additionalStorageIntervalDesc": { + "message": "あなたのプランは$SIZE$の暗号化ファイルストレージを使用できます。1GBあたり$PRICE$/$INTERVAL$でストレージ容量を追加できます。", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "概要" + }, + "total": { + "message": "合計" + }, + "year": { + "message": "年" + }, + "month": { + "message": "月" + }, + "monthAbbr": { + "message": "月", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "お支払い方法はすぐに変更され、毎年定期的に課金されます。いつでもキャンセルできます。" + }, + "paymentCharged": { + "message": "お支払い方法はすぐに変更され、$INTERVAL$ごとに課金されます。いつでもキャンセルできます。", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "ご利用のプランでは、7日間の無料トライアルが可能です。トライアル期間が終わるまでは課金されません。トライアル終了後、$INTERVAL$毎に請求されます。いつでもキャンセルできます。" + }, + "paymentInformation": { + "message": "お支払い情報" + }, + "billingInformation": { + "message": "請求情報" + }, + "creditCard": { + "message": "クレジットカード" + }, + "paypalClickSubmit": { + "message": "PayPalボタンからPayPalアカウントにログインし、送信ボタンをクリックし続行して下さい。" + }, + "cancelSubscription": { + "message": "契約のキャンセル" + }, + "subscriptionCanceled": { + "message": "契約はキャンセルされました。" + }, + "pendingCancellation": { + "message": "保留中のキャンセル" + }, + "subscriptionPendingCanceled": { + "message": "契約は現在の請求期間の終期にキャンセルされます。" + }, + "reinstateSubscription": { + "message": "契約の再開" + }, + "reinstateConfirmation": { + "message": "本当に保留中のキャンセルを削除して契約を再開しますか?" + }, + "reinstated": { + "message": "契約が再開されました。" + }, + "cancelConfirmation": { + "message": "本当にキャンセルしますか?契約していたすべての追加機能が請求期間の終期で利用できなくなります。" + }, + "canceledSubscription": { + "message": "契約はキャンセルされました。" + }, + "neverExpires": { + "message": "無期限" + }, + "status": { + "message": "ステータス" + }, + "nextCharge": { + "message": "次回の請求" + }, + "details": { + "message": "詳細" + }, + "downloadLicense": { + "message": "ライセンスのダウンロード" + }, + "updateLicense": { + "message": "ライセンスの更新" + }, + "updatedLicense": { + "message": "ライセンスは更新されました" + }, + "manageSubscription": { + "message": "契約の管理" + }, + "storage": { + "message": "ストレージ" + }, + "addStorage": { + "message": "ストレージの追加" + }, + "removeStorage": { + "message": "追加したストレージの削除" + }, + "subscriptionStorage": { + "message": "あなたの契約は合計$MAX_STORAGE$GBの暗号化ファイルストレージを利用できます。現在、$USED_STORAGE$使用しています。", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "お支払い方法" + }, + "noPaymentMethod": { + "message": "お支払い方法が登録されていません。" + }, + "addPaymentMethod": { + "message": "お支払い方法を追加" + }, + "changePaymentMethod": { + "message": "お支払い方法の変更" + }, + "invoices": { + "message": "請求" + }, + "noInvoices": { + "message": "請求なし" + }, + "paid": { + "message": "支払済み", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "未払い", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "取引", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "取引はありません" + }, + "chargeNoun": { + "message": "料金", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "払い戻し", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "料金は$STATEMENT_NAME$と明細に表示されます。", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "追加するストレージ容量(GB)" + }, + "gbStorageRemove": { + "message": "削除するストレージ容量(GB)" + }, + "storageAddNote": { + "message": "ストレージ容量を追加すると、請求金額が変更され、登録されたお支払い方法に直ちに差額が請求されます。初めに請求された分は現在の請求期間の残りの期間で按分されます。" + }, + "storageRemoveNote": { + "message": "ストレージ容量を削除すると、請求金額が変更され、差額は次回請求時のクレジットとして割り当てられます。" + }, + "adjustedStorage": { + "message": "ストレージ容量が$AMOUNT$GBに変更されました。", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "カスタマーサポートに連絡" + }, + "updatedPaymentMethod": { + "message": "お支払い方法を更新しました。" + }, + "purchasePremium": { + "message": "プレミアム会員に加入" + }, + "licenseFile": { + "message": "ライセンスファイル" + }, + "licenseFileDesc": { + "message": "ライセンスファイルは$FILE_NAME$のような名前のものです。", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "プレミアム会員にアップグレードするには、有効なライセンスファイルをアップロードする必要があります。" + }, + "uploadLicenseFileOrg": { + "message": "オンプレミス型の組織を作成するには、正しいライセンスファイルをアップロードする必要があります。" + }, + "accountEmailMustBeVerified": { + "message": "アカウントのメールアドレスを確認する必要があります。" + }, + "newOrganizationDesc": { + "message": "組織では、保管庫のアイテムを共有したり家族・小規模チーム・大企業など特定のグループに関連するユーザーを管理することができます。" + }, + "generalInformation": { + "message": "一般情報" + }, + "organizationName": { + "message": "組織名" + }, + "accountOwnedBusiness": { + "message": "このアカウントはビジネス用です。" + }, + "billingEmail": { + "message": "お支払い用メールアドレス" + }, + "businessName": { + "message": "企業名" + }, + "chooseYourPlan": { + "message": "プランを選択してください" + }, + "users": { + "message": "ユーザー" + }, + "userSeats": { + "message": "ユーザー数" + }, + "additionalUserSeats": { + "message": "追加ユーザー数" + }, + "userSeatsDesc": { + "message": "# ユーザー数" + }, + "userSeatsAdditionalDesc": { + "message": "$BASE_SEATS$ユーザーまで利用できます。1ユーザーあたり月$SEAT_PRICE$で追加できます。", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "どれくらいのユーザー数が必要ですか?必要なときに後から追加することもできます。" + }, + "planNameFree": { + "message": "フリー", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "テスト目的や個人ユーザーは$COUNT$人の他のユーザーと共有できます。", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "ファミリー" + }, + "planDescFamilies": { + "message": "個人利用の場合、家族や友人と共有できます。" + }, + "planNameTeams": { + "message": "チーム" + }, + "planDescTeams": { + "message": "ビジネスやチーム組織のために。" + }, + "planNameEnterprise": { + "message": "エンタープライズ" + }, + "planDescEnterprise": { + "message": "ビジネスやその他の大きな組織のために。" + }, + "freeForever": { + "message": "永久に無料" + }, + "includesXUsers": { + "message": "$COUNT$ユーザーを含む", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "追加ユーザー" + }, + "costPerUser": { + "message": "1ユーザーにつき$COST$", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "あなたを含め$COUNT$ユーザーに限ります。", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "$COUNT$コレクションに限ります。", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "最大$COUNT$ユーザーとの共有", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "無制限の人数との共有" + }, + "createUnlimitedCollections": { + "message": "コレクション数無制限" + }, + "gbEncryptedFileStorage": { + "message": "暗号化ストレージ:$SIZE$", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "オンプレミス型ホスティング(オプション)" + }, + "usersGetPremium": { + "message": "ユーザーはプレミアム会員の機能を利用できます" + }, + "controlAccessWithGroups": { + "message": "グループ単位でユーザーのアクセス権を管理" + }, + "syncUsersFromDirectory": { + "message": "ユーザーとグループのディレクトリサービスからの同期" + }, + "trackAuditLogs": { + "message": "ユーザーの操作を確認できる監査ログ" + }, + "enforce2faDuo": { + "message": "Duoによる二段階認証を強制" + }, + "priorityCustomerSupport": { + "message": "優先カスタマーサポート" + }, + "xDayFreeTrial": { + "message": "$COUNT$日間の無料試用、いつでもキャンセル可能", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "1ヶ月" + }, + "annually": { + "message": "1年" + }, + "basePrice": { + "message": "基本価格" + }, + "organizationCreated": { + "message": "組織を作成しました" + }, + "organizationReadyToGo": { + "message": "新しい組織の準備ができました!" + }, + "organizationUpgraded": { + "message": "組織がアップグレードされました。" + }, + "leave": { + "message": "脱退" + }, + "leaveOrganizationConfirmation": { + "message": "本当にこの組織から脱退しますか?" + }, + "leftOrganization": { + "message": "組織から脱退しました。" + }, + "defaultCollection": { + "message": "既定のコレクション" + }, + "getHelp": { + "message": "ヘルプを参照する" + }, + "getApps": { + "message": "アプリを入手する" + }, + "loggedInAs": { + "message": "ログイン中のアカウント:" + }, + "eventLogs": { + "message": "イベントログ" + }, + "people": { + "message": "メンバー" + }, + "policies": { + "message": "方針" + }, + "singleSignOn": { + "message": "シングルサインオン(SSO)" + }, + "editPolicy": { + "message": "方針を編集" + }, + "groups": { + "message": "グループ" + }, + "newGroup": { + "message": "新規グループ" + }, + "addGroup": { + "message": "グループの追加" + }, + "editGroup": { + "message": "グループの編集" + }, + "deleteGroupConfirmation": { + "message": "本当にこのグループを削除してもよろしいですか?" + }, + "removeUserConfirmation": { + "message": "本当にこのユーザーを削除してもよろしいですか?" + }, + "removeUserConfirmationKeyConnector": { + "message": "警告! このユーザーは暗号化を管理するためにキー コネクタが必要です。 このユーザーを組織から削除すると、アカウントが完全に無効になります。この操作は元に戻せません。続行しますか?" + }, + "externalId": { + "message": "外部ID" + }, + "externalIdDesc": { + "message": "外部 ID は参照用や、ユーザーディレクトリーなどの外部システムへリソースをリンクするために使用できます。" + }, + "accessControl": { + "message": "アクセスコントロール" + }, + "groupAccessAllItems": { + "message": "全てのアイテムの読み取り・編集" + }, + "groupAccessSelectedCollections": { + "message": "選択コレクション内のアクセス" + }, + "readOnly": { + "message": "読み取り専用" + }, + "newCollection": { + "message": "新規コレクション" + }, + "addCollection": { + "message": "コレクションの追加" + }, + "editCollection": { + "message": "コレクションの編集" + }, + "deleteCollectionConfirmation": { + "message": "本当にこのコレクションを削除しますか?" + }, + "editUser": { + "message": "ユーザーの編集" + }, + "inviteUser": { + "message": "ユーザーの招待" + }, + "inviteUserDesc": { + "message": "組織に新しいユーザーを招待するには、そのユーザーのBitwardenアカウントのメールアドレスを入力して下さい。Bitwardenアカウントをお持ちでない場合は、アカウントの作成を求められます。" + }, + "inviteMultipleEmailDesc": { + "message": "「,」でメールアドレスを区切ることで、一度に最大$COUNT$ユーザーを招待できます。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "このユーザーはアカウントを保護するため二段階認証を利用しています。" + }, + "userAccessAllItems": { + "message": "全てのアイテムの読み取り・編集" + }, + "userAccessSelectedCollections": { + "message": "選択コレクション内のアクセス" + }, + "search": { + "message": "検索" + }, + "invited": { + "message": "招待済み" + }, + "accepted": { + "message": "承諾済み" + }, + "confirmed": { + "message": "確認済み" + }, + "clientOwnerEmail": { + "message": "クライアントの管理者のメールアドレス" + }, + "owner": { + "message": "オーナー" + }, + "ownerDesc": { + "message": "組織内のすべてを管理できる最高のアクセス権を与えます" + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "管理者" + }, + "adminDesc": { + "message": "管理者はあなたの組織のすべてのアイテム、コレクション、ユーザーへアクセス・管理できます。" + }, + "user": { + "message": "ユーザー" + }, + "userDesc": { + "message": "あなたの組織に割り当てられたコレクションへのアクセス権を持つ標準ユーザーです。" + }, + "manager": { + "message": "マネージャー" + }, + "managerDesc": { + "message": "マネージャーは組織内の割り当てられたコレクションへアクセスし管理することができます。" + }, + "all": { + "message": "すべて" + }, + "refresh": { + "message": "更新" + }, + "timestamp": { + "message": "タイムスタンプ" + }, + "event": { + "message": "イベント" + }, + "unknown": { + "message": "不明" + }, + "loadMore": { + "message": "もっと見る" + }, + "mobile": { + "message": "モバイル", + "description": "Mobile app" + }, + "extension": { + "message": "拡張機能", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "デスクトップ", + "description": "Desktop app" + }, + "webVault": { + "message": "ウェブ保管庫" + }, + "loggedIn": { + "message": "ログイン" + }, + "changedPassword": { + "message": "パスワードの変更" + }, + "enabledUpdated2fa": { + "message": "二段階認証の有効化/更新" + }, + "disabled2fa": { + "message": "二段階認証の無効化" + }, + "recovered2fa": { + "message": "リカバリーコードによる認証" + }, + "failedLogin": { + "message": "誤ったパスワードによるログインの失敗" + }, + "failedLogin2fa": { + "message": "二段階認証時の誤りによるログインの失敗" + }, + "exportedVault": { + "message": "保管庫をエクスポートしました。" + }, + "exportedOrganizationVault": { + "message": "組織の保管庫をエクスポートしました。" + }, + "editedOrgSettings": { + "message": "組織の設定の編集" + }, + "createdItemId": { + "message": "アイテム「$ID$」の作成", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "アイテム「$ID$」の編集", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "アイテム「$ID$」の削除", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "アイテム $ID$ を組織に移動しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "アイテム $ID$ を表示しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "アイテム $ID$ のパスワードを表示しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "アイテム $ID$ の隠しフィールドを表示しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "アイテム $ID$ のセキュリティコードを表示しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "アイテム $ID$ のパスワードをコピーしました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "アイテム $ID$ の隠しフィールドをコピーしました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "アイテム $ID$ のセキュリティコードをコピーしました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "アイテム $ID$ を自動入力しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "コレクション「$ID$」の作成", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "コレクション「$ID$」の編集", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "コレクション「$ID$」の削除", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "編集された方針:$ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "グループ「$ID$」の作成", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "グループ「$ID$」の編集", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "グループ「$ID$」の削除", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "ユーザー「$ID$」の削除", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "アイテム「$ID$」の添付ファイルの作成", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "アイテム「$ID$」の添付ファイルの削除", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "アイテム「$ID$」のコレクションの編集", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "ユーザー「$ID$」の招待", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "ユーザー「$ID$」の確認", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "ユーザー「$ID$」の編集", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "ユーザー「$ID$」のグループの編集", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "ユーザー $ID$ にリンクされていない SSO", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "デバイス" + }, + "view": { + "message": "表示" + }, + "invalidDateRange": { + "message": "日付範囲が正しくありません。" + }, + "errorOccurred": { + "message": "エラーが発生しました。" + }, + "userAccess": { + "message": "ユーザーのアクセス" + }, + "userType": { + "message": "ユーザーの種類" + }, + "groupAccess": { + "message": "グループのアクセス" + }, + "groupAccessUserDesc": { + "message": "このユーザーが属するグループを編集します。" + }, + "invitedUsers": { + "message": "ユーザーを招待します。" + }, + "resendInvitation": { + "message": "招待を再送信" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$が再招待されました。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "確認" + }, + "confirmUser": { + "message": "ユーザーの確認" + }, + "hasBeenConfirmed": { + "message": "$USER$が確認されました。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "ユーザーの確認" + }, + "usersNeedConfirmed": { + "message": "招待を受け入れ確認待ちのユーザーがいます。未確認のユーザーは組織にアクセスできません。" + }, + "startDate": { + "message": "開始日時" + }, + "endDate": { + "message": "終了日時" + }, + "verifyEmail": { + "message": "メールアドレスを確認" + }, + "verifyEmailDesc": { + "message": "メールアドレスを確認するとすべての機能が使用できます。" + }, + "verifyEmailFirst": { + "message": "アカウントのメールアドレスを確認する必要があります。" + }, + "checkInboxForVerification": { + "message": "確認用のリンクが記載されたメールをチェックしてください。" + }, + "emailVerified": { + "message": "メールアドレスが確認されました。" + }, + "emailVerifiedFailed": { + "message": "メールアドレスを確認できませんでした。確認メールを再送信してください。" + }, + "emailVerificationRequired": { + "message": "メールアドレスの確認が必要です" + }, + "emailVerificationRequiredDesc": { + "message": "この機能を使用するにはメールアドレスを確認する必要があります。" + }, + "updateBrowser": { + "message": "ブラウザを更新" + }, + "updateBrowserDesc": { + "message": "サポートされていないブラウザを使用しています。ウェブ保管庫が正しく動作しないかもしれません。" + }, + "joinOrganization": { + "message": "組織に参加" + }, + "joinOrganizationDesc": { + "message": "あなたは上記の組織への参加の招待を受けています。招待を承諾するには、ログインするかBitwardenアカウントを作成してください。" + }, + "inviteAccepted": { + "message": "招待が承諾されました。" + }, + "inviteAcceptedDesc": { + "message": "組織の管理者が承認すると組織へアクセスできるようになります。アクセスできるようになったらメールでお知らせします。" + }, + "inviteAcceptFailed": { + "message": "招待を承諾出来ませんでした。組織の管理者に招待を再送信するように依頼してください。" + }, + "inviteAcceptFailedShort": { + "message": "招待を受けることができません。$DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "メールアドレスを保存" + }, + "recoverAccountTwoStepDesc": { + "message": "もし通常の二段階認証の方法でアカウントにアクセスできなくなった場合、リカバリーコードにより全ての二段階認証プロバイダを無効化することができます。" + }, + "recoverAccountTwoStep": { + "message": "二段階認証ログインの回復" + }, + "twoStepRecoverDisabled": { + "message": "二段階認証が無効化されました。" + }, + "learnMore": { + "message": "詳細" + }, + "deleteRecoverDesc": { + "message": "メールアドレスを入力してアカウントを削除します。" + }, + "deleteRecoverEmailSent": { + "message": "アカウントが存在する場合、詳細な手順を記載したメールを送信しました。" + }, + "deleteRecoverConfirmDesc": { + "message": "Bitwardenアカウント削除のリクエストがありました。削除する場合はボタンをクリックしてください。" + }, + "myOrganization": { + "message": "組織" + }, + "deleteOrganization": { + "message": "組織の削除" + }, + "deletingOrganizationContentWarning": { + "message": "$ORGANIZATION$ と関連するすべてのデータの削除を確認するためにマスターパスワードを入力してください。 $ORGANIZATION$ の保管庫データは下記を含みます:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "削除後もユーザーアカウントはアクティブになりますが、この組織に関連付けられなくなります。" + }, + "deletingOrganizationIsPermanentWarning": { + "message": "$ORGANIZATION$ を削除すると元に戻せません。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "組織が削除されました。" + }, + "organizationDeletedDesc": { + "message": "組織と関連するすべてのデータが削除されました。" + }, + "organizationUpdated": { + "message": "組織を更新しました" + }, + "taxInformation": { + "message": "税金情報" + }, + "taxInformationDesc": { + "message": "請求書に税務情報を提供(更新)する場合、サポートにご連絡ください。" + }, + "billingPlan": { + "message": "プラン", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "プラン変更", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "下記の情報を入力してアカウントを他のプランにアップグレードしてください。アカウントに有効な支払い方法が追加されていることを確認してください。", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "請求 #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "請求を確認" + }, + "downloadInvoice": { + "message": "請求書ダウンロード" + }, + "verifyBankAccount": { + "message": "銀行口座の認証" + }, + "verifyBankAccountDesc": { + "message": "あなたの銀行口座に2件の少額送金を行います(着金まで1-2営業日かかります)。送金された金額を入力して銀行口座の確認を完了してください。" + }, + "verifyBankAccountInitialDesc": { + "message": "銀行口座によるお支払いはアメリカ合衆国のお客様のみ利用でき銀行口座の確認が必要となります。1-2営業日以内に2件の少額送金を行いますので、組織のお支払いページから送金された金額を入力して銀行口座の確認を完了して下さい。" + }, + "verifyBankAccountFailureWarning": { + "message": "銀行口座の確認に失敗するとお支払いはキャンセルされ契約は無効となります。" + }, + "verifiedBankAccount": { + "message": "銀行口座が確認されました。" + }, + "bankAccount": { + "message": "銀行口座" + }, + "amountX": { + "message": "送金$COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "ルーティングナンバー", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "口座番号" + }, + "accountHolderName": { + "message": "口座名義人" + }, + "bankAccountType": { + "message": "口座種別" + }, + "bankAccountTypeCompany": { + "message": "ビジネス" + }, + "bankAccountTypeIndividual": { + "message": "個人" + }, + "enterInstallationId": { + "message": "インストールIDを入力してください。" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "ライセンスの追加", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "ライセンスの削除", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "あなたの契約では合計$COUNT$ユーザーまで利用できます。", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "ライセンスの追加" + }, + "seatsToRemove": { + "message": "ライセンスの削除" + }, + "seatsAddNote": { + "message": "ユーザー数を追加すると、請求金額が変更され、登録されたお支払い方法に直ちに差額が請求されます。初めに請求された分は現在の請求期間の残りの期間で按分されます。" + }, + "seatsRemoveNote": { + "message": "ユーザー数を削除すると、請求金額が変更され、差額は次回請求時のクレジットとして割り当てられます。" + }, + "adjustedSeats": { + "message": "ユーザー数が$AMOUNT$に変更されました。", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "キーが更新されました" + }, + "updateKeyTitle": { + "message": "キーの更新" + }, + "updateEncryptionKey": { + "message": "暗号化キーを更新します。" + }, + "updateEncryptionKeyShortDesc": { + "message": "古い暗号化方式が使用されています。" + }, + "updateEncryptionKeyDesc": { + "message": "より良いセキュリティと新しい機能が利用できる強力な暗号化方式へ移行することにしました。暗号化キーの更新は迅速かつ簡単です。以下にマスターパスワードを入力して下さい。この更新はやがて必須になります。" + }, + "updateEncryptionKeyWarning": { + "message": "暗号化キーの更新後は、モバイルアプリやブラウザ拡張機能など現在利用中のすべてのBitwardenアプリで再ログインが必要となります。再ログインしないと(新しい暗号化キーをダウンロードすると)データが破損する可能性があります。自動的にログアウトを試みますが、遅延することがあります。" + }, + "updateEncryptionKeyExportWarning": { + "message": "保存済みの暗号化されたエクスポートも無効になります。" + }, + "subscription": { + "message": "契約" + }, + "loading": { + "message": "読み込み中" + }, + "upgrade": { + "message": "アップグレード" + }, + "upgradeOrganization": { + "message": "組織のアップグレード" + }, + "upgradeOrganizationDesc": { + "message": "この機能は無料プランの組織では利用できません。有料プランに変更すると多数の機能が利用可能になります。" + }, + "createOrganizationStep1": { + "message": "組織の作成: 最初のステップ" + }, + "createOrganizationCreatePersonalAccount": { + "message": "組織を作成する前に無料の個人アカウントの作成が必要です。" + }, + "refunded": { + "message": "払い戻し" + }, + "nothingSelected": { + "message": "何も選択されていません。" + }, + "acceptPolicies": { + "message": "以下に同意しチェックします:" + }, + "acceptPoliciesError": { + "message": "利用規約とプライバシーポリシーを確認してください。" + }, + "termsOfService": { + "message": "利用規約" + }, + "privacyPolicy": { + "message": "プライバシーポリシー" + }, + "filters": { + "message": "フィルタ" + }, + "vaultTimeout": { + "message": "保管庫のタイムアウト" + }, + "vaultTimeoutDesc": { + "message": "保管庫がタイムアウトし、選択したアクションを実行するタイミングを選択します。" + }, + "oneMinute": { + "message": "1分" + }, + "fiveMinutes": { + "message": "5分" + }, + "fifteenMinutes": { + "message": "15分" + }, + "thirtyMinutes": { + "message": "30分" + }, + "oneHour": { + "message": "1時間" + }, + "fourHours": { + "message": "4時間" + }, + "onRefresh": { + "message": "ページ更新時" + }, + "dateUpdated": { + "message": "更新日", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "パスワード更新日", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "組織は無効です。" + }, + "licenseIsExpired": { + "message": "ライセンスの有効期限が切れています。" + }, + "updatedUsers": { + "message": "ユーザーを更新しました" + }, + "selected": { + "message": "選択済み" + }, + "ownership": { + "message": "所有者" + }, + "whoOwnsThisItem": { + "message": "このアイテムは誰が所有していますか?" + }, + "strong": { + "message": "強力", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "良好", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "脆弱", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "非常に脆弱", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "脆弱なマスターパスワード" + }, + "weakMasterPasswordDesc": { + "message": "設定されたマスターパスワードの強度は脆弱です。Bitwarden アカウントを適切に保護するために、強力なマスターパスワード(またはパスフレーズ)を使用すべきです。本当にこのマスターパスワードを使用しますか?" + }, + "rotateAccountEncKey": { + "message": "暗号化キーをローテーションする" + }, + "rotateEncKeyTitle": { + "message": "暗号化キーをローテーションする" + }, + "rotateEncKeyConfirmation": { + "message": "暗号化キーをローテーションしてよろしいですか?" + }, + "attachmentsNeedFix": { + "message": "このアイテムは添付ファイルが古いため修正する必要があります。" + }, + "attachmentFixDesc": { + "message": "これは古い添付ファイルのため修正する必要があります。詳しくはこちら。" + }, + "fix": { + "message": "修正", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "暗号化キーのローテーションを行う前に、保管庫内の古い添付ファイルを修正する必要があります。" + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "無料", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API キー" + }, + "apiKeyDesc": { + "message": "API キーは Bitwarden パブリック API で認証するために使用されます。" + }, + "apiKeyRotateDesc": { + "message": "API キーをローテーションさせると、前のキーが無効になります。現在のキーが安全でないと思ったときに API キーをローテーションさせてください。" + }, + "apiKeyWarning": { + "message": "API キーは組織へのフルアクセス権限を持っています。漏れないよう秘密にしてください。" + }, + "userApiKeyDesc": { + "message": "API キーは、Bitwarden CLI で認証するために使用されます。" + }, + "userApiKeyWarning": { + "message": "API キーは代替認証メカニズムです。秘密にする必要があります。" + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 クライアント資格情報", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API キーを表示" + }, + "rotateApiKey": { + "message": "API キーをローテーション" + }, + "selectOneCollection": { + "message": "最低でも一つのコレクションを選んでください。" + }, + "couldNotChargeCardPayInvoice": { + "message": "あなたのカードで決済することができませんでした。以下の未払いの請求書をご確認いただき、お支払いください。" + }, + "inAppPurchase": { + "message": "アプリ内購入" + }, + "cannotPerformInAppPurchase": { + "message": "アプリ内購入を使用している間はこのアクションはできません。" + }, + "manageSubscriptionFromStore": { + "message": "アプリ内購入したストアでサブスクリプションを管理してください。" + }, + "minLength": { + "message": "最小文字数" + }, + "clone": { + "message": "複製" + }, + "masterPassPolicyDesc": { + "message": "マスターパスワードの強度に最低要件を設定する。" + }, + "twoStepLoginPolicyDesc": { + "message": "2段階認証の設定を要求する。" + }, + "twoStepLoginPolicyWarning": { + "message": "2段階認証を有効にしないメンバーは組織から除外され、メールで通知されます。" + }, + "twoStepLoginPolicyUserWarning": { + "message": "2段階認証を必要とする組織に入っています。2段階認証をすべて無効にすると、それらの組織からは自動的に除外されます。" + }, + "passwordGeneratorPolicyDesc": { + "message": "パスワード生成の最低要件を設定する。" + }, + "passwordGeneratorPolicyInEffect": { + "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": "新しいマスターパスワードは最低要件を満たしていません。" + }, + "minimumNumberOfWords": { + "message": "文字の最小数" + }, + "defaultType": { + "message": "デフォルトのタイプ" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "ごみ箱を検索" + }, + "permanentlyDelete": { + "message": "完全に削除" + }, + "permanentlyDeleteSelected": { + "message": "選択したものを完全に削除" + }, + "permanentlyDeleteItem": { + "message": "アイテムを完全に削除" + }, + "permanentlyDeleteItemConfirmation": { + "message": "このアイテムを完全に削除してもよろしいですか?" + }, + "permanentlyDeletedItem": { + "message": "完全に削除されたアイテム" + }, + "permanentlyDeletedItems": { + "message": "完全に削除されたアイテム" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "$COUNT$ 個のアイテムを選択しました。選択したすべてのアイテムを完全に削除してもよろしいですか?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "アイテム $ID$ を完全に削除しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "リストア" + }, + "restoreSelected": { + "message": "選択したものをリストア" + }, + "restoreItem": { + "message": "アイテムをリストア" + }, + "restoredItem": { + "message": "リストアされたアイテム" + }, + "restoredItems": { + "message": "リストアされたアイテム" + }, + "restoreItemConfirmation": { + "message": "このアイテムをリストアしますか?" + }, + "restoreItems": { + "message": "アイテムをリストア" + }, + "restoreSelectedItemsDesc": { + "message": "$COUNT$個のアイテムをリストアしようとしています。本当にこれらのアイテムをリストアしますか?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "アイテム $ID$ をリストアしました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ログアウトすると保管庫へのすべてのアクセスが制限され、タイムアウト期間後にオンライン認証が必要になります。 この設定を使用してもよろしいですか?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "タイムアウトアクションの確認" + }, + "hidePasswords": { + "message": "パスワードを隠す" + }, + "countryPostalCodeRequiredDesc": { + "message": "この情報は税計算と財務報告のために必要です。" + }, + "includeVAT": { + "message": "VAT/GST 情報を含める (任意)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "TAX 情報を更新しました。" + }, + "setMasterPassword": { + "message": "マスターパスワードを設定" + }, + "ssoCompleteRegistration": { + "message": "SSO ログインを完了するには、保管庫にアクセス・保護するためのマスターパスワードを設定してください。" + }, + "identifier": { + "message": "識別子" + }, + "organizationIdentifier": { + "message": "組織識別子" + }, + "ssoLogInWithOrgIdentifier": { + "message": "組織のシングルサインオンポータルを使用してログインします。開始するには組織の識別子を入力してください。" + }, + "enterpriseSingleSignOn": { + "message": "組織のシングルサインオン" + }, + "ssoHandOff": { + "message": "このタブを閉じて拡張機能で続けられます。" + }, + "includeAllTeamsFeatures": { + "message": "すべてのチームの機能に加えて:" + }, + "includeSsoAuthentication": { + "message": "SAML2.0 と OpenID Connect による SSO 認証" + }, + "includeEnterprisePolicies": { + "message": "組織ポリシー" + }, + "ssoValidationFailed": { + "message": "SSO 認証に失敗しました" + }, + "ssoIdentifierRequired": { + "message": "組織識別子が必要です。" + }, + "unlinkSso": { + "message": "SSO のリンクを解除" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "SSO をリンク" + }, + "singleOrg": { + "message": "単一組織" + }, + "singleOrgDesc": { + "message": "ユーザーが他の組織に参加できないように制限します。" + }, + "singleOrgBlockCreateMessage": { + "message": "現在の組織には、複数の組織に参加することを許可していないポリシーがあります。 組織の管理者に連絡するか、別の Bitwarden アカウントから登録してください。" + }, + "singleOrgPolicyWarning": { + "message": "オーナーまたは管理者でなく、すでに他の組織のメンバーであるメンバーは組織から削除されます。" + }, + "requireSso": { + "message": "シングルサインオン認証" + }, + "requireSsoPolicyDesc": { + "message": "組織のシングルサインオン認証でログインする必要があります。" + }, + "prerequisite": { + "message": "前提条件" + }, + "requireSsoPolicyReq": { + "message": "このポリシーを有効にするには、単一組織のエンタープライズポリシーを有効にする必要があります。" + }, + "requireSsoPolicyReqError": { + "message": "単一組織ポリシーが有効になっていません。" + }, + "requireSsoExemption": { + "message": "組織の所有者および管理者は、このポリシーの執行から除外されます。" + }, + "sendTypeFile": { + "message": "ファイル" + }, + "sendTypeText": { + "message": "テキスト" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "Send を削除", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "この Send を削除してもよろしいですか?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "この Send の種類は何ですか?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "現在のアクセス数" + }, + "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." + }, + "disabled": { + "message": "無効" + }, + "sendLink": { + "message": "Send リンク", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Send リンクをコピー", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "パスワードを削除" + }, + "removedPassword": { + "message": "パスワードを削除" + }, + "removePasswordConfirmation": { + "message": "パスワードを削除してもよろしいですか?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "message": "誰もアクセスできないように、この Send を無効にします。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "すべての Send" + }, + "maxAccessCountReached": { + "message": "最大アクセス数に達しました", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "保留中の削除" + }, + "expired": { + "message": "期限切れ" + }, + "searchSends": { + "message": "Sendを検索", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "パスワードがわかりませんか?このSendにアクセスするには送信者にパスワードをご確認ください。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "このSendはデフォルトでは非表示になっています。下のボタンで表示・非表示が切り替え可能です。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "ファイルをダウンロード" + }, + "sendAccessUnavailable": { + "message": "アクセスしようとしているSendは存在しないか、利用できません。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "この Send に関連付けられたファイルが見つかりませんでした。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "表示するSendがありません", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "緊急アクセス" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "あなたは1つ以上の組織の所有者です。 緊急連絡先に引き継ぎアクセスを与えると、引き継ぎ後に所有者としてすべての権限を使用できるようになります。" + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "緊急連絡先を追加" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "緊急連絡先を招待" + }, + "editEmergencyContact": { + "message": "緊急連絡先を編集" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "自分の保管庫内のすべてのアイテムを表示できます。" + }, + "takeover": { + "message": "引き継ぎ" + }, + "takeoverDesc": { + "message": "新しいマスターパスワードでアカウントをリセットできます。" + }, + "waitTime": { + "message": "待機時間" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1日" + }, + "days": { + "message": "$DAYS$日", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "招待されたユーザー" + }, + "acceptEmergencyAccess": { + "message": "上記のユーザーの緊急連絡先になるよう招待されています。 招待を承認するには、ログインまたは新しいBitwardenアカウントを作成する必要があります。" + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "アクセス権の要求" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "承認" + }, + "reject": { + "message": "拒否" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "緊急アクセスが承認されました。" + }, + "emergencyRejected": { + "message": "緊急アクセスが拒否されました" + }, + "passwordResetFor": { + "message": "$USER$のパスワードをリセットしました。新しいパスワードでログインできます。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "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." + }, + "disableSend": { + "message": "Send を無効化" + }, + "disableSendPolicyDesc": { + "message": "Bitwarden Send の作成や編集を許可しません。既存の Send を削除することはできます。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "組織のポリシーを管理できる組織ユーザーは、このポリシーの適用から除外されます。" + }, + "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." + }, + "sendOptions": { + "message": "送信オプション", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "組織のポリシーを管理できる組織ユーザーは、このポリシーの適用から除外されます。" + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "現在、以下の組織ポリシーが適用されています。" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "変更されたポリシー $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "プラン料金" + }, + "estimatedTax": { + "message": "推定税額" + }, + "custom": { + "message": "カスタム" + }, + "customDesc": { + "message": "ユーザー権限をより詳細に制御できます。" + }, + "permissions": { + "message": "権限" + }, + "accessEventLogs": { + "message": "イベントログにアクセス" + }, + "accessImportExport": { + "message": "インポート/エクスポートにアクセス" + }, + "accessReports": { + "message": "レポートにアクセス" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "すべてのコレクションを管理" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "割り当てられたコレクションの管理" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "グループを管理" + }, + "managePolicies": { + "message": "ポリシーの管理" + }, + "manageSso": { + "message": "SSO を管理" + }, + "manageUsers": { + "message": "ユーザーを管理" + }, + "manageResetPassword": { + "message": "パスワードリセットの管理" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "組織のポリシーが所有者のオプションに影響を与えています。" + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "組織ユーザーの個人所有権を無効にする" + }, + "textHiddenByDefault": { + "message": "Send へのアクセス時に既定でテキストを非表示にする", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "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": "送信するファイル" + }, + "copySendLinkOnSave": { + "message": "Send の保存時にクリップボードへリンクをコピーします。" + }, + "sendLinkLabel": { + "message": "Send リンク", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send を使うと機密性の高い情報を他の人に簡単かつ安全に送信できます。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "今すぐ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "テキストやファイルを誰とでも直接共有できます。" + }, + "sendVaultCardLearnMore": { + "message": "今すぐ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "詳細", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "を確認", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "または", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "試してみてください", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "または", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "登録して", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "試してみてください", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden ユーザー $USER_IDENTIFIER$ が共有しました", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "入力された有効期限は正しくありません。" + }, + "deletionDateIsInvalid": { + "message": "入力された削除日時は正しくありません。" + }, + "expirationDateAndTimeRequired": { + "message": "有効期限は必須です。" + }, + "deletionDateAndTimeRequired": { + "message": "削除日時は必須です。" + }, + "dateParsingError": { + "message": "削除と有効期限の保存中にエラーが発生しました。" + }, + "webAuthnFallbackMsg": { + "message": "二段階認証を確認するには、下のボタンをクリックしてください。" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn の認証" + }, + "webAuthnNotSupported": { + "message": "WebAuthn はこのブラウザではサポートされていません。" + }, + "webAuthnSuccess": { + "message": "WebAuthn が正常に認証されました!このタブを閉じることができます。" + }, + "hintEqualsPassword": { + "message": "パスワードのヒントをパスワードと同じにすることはできません。" + }, + "enrollPasswordReset": { + "message": "パスワードリセット登録" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "登録に成功しました!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "ユーザー $ID$ のマスターパスワードをリセット", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "パスワードをリセット" + }, + "resetPasswordLoggedOutWarning": { + "message": "続行すると、現在のセッションから $NAME$ をログアウトし、再度ログインする必要があります。 他のデバイスでのアクティブなセッションは、最大1時間アクティブになり続けます。", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "このユーザー\n" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "組織ポリシーの要件を満たすためにマスターパスワードが必要です:" + }, + "resetPasswordSuccess": { + "message": "パスワードをリセットしました" + }, + "resetPasswordEnrollmentWarning": { + "message": "登録すると、組織管理者はマスターパスワードを変更できます。登録してもよろしいですか?" + }, + "resetPasswordPolicy": { + "message": "マスターパスワードのリセット" + }, + "resetPasswordPolicyDescription": { + "message": "組織内の管理者に組織ユーザーのマスターパスワードのリセットを許可します。" + }, + "resetPasswordPolicyWarning": { + "message": "管理者がマスターパスワードをリセットするには、組織内のユーザーは自己登録または自動登録する必要があります。" + }, + "resetPasswordPolicyAutoEnroll": { + "message": "自動登録" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "招待が承認されると、すべてのユーザーは自動的にパスワードリセットに登録されます。" + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "すでに組織にいるユーザーは、パスワードリセットに遡って登録されません。管理者がマスターパスワードをリセットできるようにするには、自己登録する必要があります。" + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "自動的に新規ユーザーを登録する" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "この組織には自動的にパスワードリセットに登録するポリシーがあります。登録すると、組織の管理者はマスターパスワードを変更できます。" + }, + "resetPasswordOrgKeysError": { + "message": "組織鍵の応答が null です" + }, + "resetPasswordDetailsError": { + "message": "パスワードリセットの詳細な応答が null です" + }, + "trashCleanupWarning": { + "message": "30日以上ゴミ箱にあったアイテムは自動的に削除されます。" + }, + "trashCleanupWarningSelfHosted": { + "message": "一定期間ゴミ箱にあったアイテムは自動的に削除されます。" + }, + "passwordPrompt": { + "message": "マスターパスワードの再要求" + }, + "passwordConfirmation": { + "message": "マスターパスワードの確認" + }, + "passwordConfirmationDesc": { + "message": "この操作は保護されています。続行するには、確認のためにマスターパスワードを再入力してください。" + }, + "reinviteSelected": { + "message": "招待を再送信" + }, + "noSelectedUsersApplicable": { + "message": "この操作は、選択されたユーザーには適用されません。" + }, + "removeUsersWarning": { + "message": "次のユーザーを削除してもよろしいですか?プロセスは完了まで数秒かかることがあり、中断またはキャンセルすることはできません。" + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "選択を確認" + }, + "bulkConfirmStatus": { + "message": "一括操作の状態" + }, + "bulkConfirmMessage": { + "message": "確認に成功しました" + }, + "bulkReinviteMessage": { + "message": "再招待に成功しました" + }, + "bulkRemovedMessage": { + "message": "削除しました " + }, + "bulkFilteredMessage": { + "message": "除外します。このアクションには適用されません。" + }, + "fingerprint": { + "message": "指紋" + }, + "removeUsers": { + "message": "ユーザーを削除" + }, + "error": { + "message": "エラー" + }, + "resetPasswordManageUsers": { + "message": "パスワードリセットの管理権限を持つユーザーの管理も有効にする必要があります" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "あなたのマスターパスワードは、この組織のポリシー要件を満たしていません。組織に参加するには、マスターパスワードを更新してください。 続行すると現在のセッションからログアウトするため、再ログインが必要です。 他のデバイスでのアクティブなセッションは、最大1時間アクティブになり続けることができます。" + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "アウトバウンドログアウト要求を許可する" + }, + "idpSignAuthenticationRequests": { + "message": "認証リクエストに署名する" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "受信者" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "キーコネクターに到達できません。後でもう一度お試しください。" + }, + "keyConnectorUrl": { + "message": "キーコネクター URL" + }, + "sendVerificationCode": { + "message": "確認コードをメールに送信" + }, + "sendCode": { + "message": "コードを送信" + }, + "codeSent": { + "message": "確認コードを送信しました。" + }, + "verificationCode": { + "message": "認証コード" + }, + "confirmIdentity": { + "message": "続行するには本人確認を行ってください。" + }, + "verificationCodeRequired": { + "message": "認証コードが必要です。" + }, + "invalidVerificationCode": { + "message": "認証コードが間違っています" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ は自己ホストの鍵サーバで SSO を使用しています。この組織のメンバーのログインにマスターパスワードは必要ありません。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "組織から脱退する" + }, + "removeMasterPassword": { + "message": "マスターパスワードを削除する" + }, + "removedMasterPassword": { + "message": "マスターパスワードを削除しました。" + }, + "allowSso": { + "message": "SSO 認証を許可する" + }, + "allowSsoDesc": { + "message": "セットアップが完了すると設定が保存され、メンバーは ID プロバイダーの資格情報を使用して認証することができます。" + }, + "ssoPolicyHelpStart": { + "message": "すべてのメンバーが SSO でログインするには", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO ポリシー", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "を有効にしてください。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "メンバー復号オプション" + }, + "memberDecryptionPassDesc": { + "message": "認証が完了すると、メンバーはマスターパスワードを使用して保管庫データを復号します。" + }, + "keyConnector": { + "message": "キーコネクター" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "SSO でログインして自己ホスト型の復号キーサーバーに接続します。このオプションを使用すると、メンバーは保管庫のデータを復号するためにマスターパスワードを使用する必要はありません。" + }, + "keyConnectorPolicyRestriction": { + "message": "「SSO とキーコネクター複合でのログイン」が有効になっています。このポリシーは、オーナーと管理者にのみ適用されます。" + }, + "enabledSso": { + "message": "SSO を有効にしました" + }, + "disabledSso": { + "message": "SSOを無効にしました" + }, + "enabledKeyConnector": { + "message": "キーコネクターを有効にしました" + }, + "disabledKeyConnector": { + "message": "キーコネクターを無効にしました" + }, + "keyConnectorWarning": { + "message": "キーコネクターがセットアップされると、メンバー復号オプションは変更できません。" + }, + "migratedKeyConnector": { + "message": "キーコネクターに移行しました" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "テスト" + }, + "keyConnectorTestSuccess": { + "message": "成功!キーコネクタに到達しました。" + }, + "keyConnectorTestFail": { + "message": "キーコネクタに接続できません。URLを確認してください。" + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "上記の $COUNT$ フィールドは注意が必要です。", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "上記の 1 フィールドは注意が必要です。" + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ は必須です。", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "必須" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "エンティティ ID が URL でない場合は必須です。" + }, + "openIdOptionalCustomizations": { + "message": "オプションのカスタマイズ" + }, + "openIdAuthorityRequired": { + "message": "権限が無効な場合は必須です。" + }, + "separateMultipleWithComma": { + "message": "コンマで複数を区切ります。" + }, + "sessionTimeout": { + "message": "セッションがタイムアウトしました。もう一度ログインしてください。" + }, + "exportingPersonalVaultTitle": { + "message": "個人保管庫のエクスポート" + }, + "exportingOrganizationVaultTitle": { + "message": "組織保管庫のエクスポート" + }, + "exportingPersonalVaultDescription": { + "message": "$EMAIL$ に関連付けられた個人用保管庫アイテムのみがエクスポートされます。組織用保管庫アイテムは含まれません。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "$ORGANIZATION$ に関連付けられた組織保管庫のアイテムのみがエクスポートされます。他の組織や個人保管庫のアイテムは含まれません。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "レポートに戻る" + }, + "generator": { + "message": "ジェネレーター" + }, + "whatWouldYouLikeToGenerate": { + "message": "何を生成しますか?" + }, + "passwordType": { + "message": "パスワードの種類" + }, + "regenerateUsername": { + "message": "ユーザー名を再生成" + }, + "generateUsername": { + "message": "ユーザー名を生成" + }, + "usernameType": { + "message": "ユーザー名の種類" + }, + "plusAddressedEmail": { + "message": "プラス付きのメールアドレス", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "メールプロバイダのエイリアス機能を使用します。" + }, + "catchallEmail": { + "message": "キャッチオールメール" + }, + "catchallEmailDesc": { + "message": "ドメインに設定されたキャッチオール受信トレイを使用します。" + }, + "random": { + "message": "ランダム" + }, + "randomWord": { + "message": "ランダムな単語" + }, + "service": { + "message": "サービス" + } +} diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json new file mode 100644 index 0000000000..a7c284de4a --- /dev/null +++ b/apps/web/src/locales/ka/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "What type of item is this?" + }, + "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" + }, + "newPassword": { + "message": "New Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code (CVV)" + }, + "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" + }, + "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" + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "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." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Canceled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "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" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add Item" + }, + "editItem": { + "message": "Edit Item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Other" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copy Password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copy Username", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My Vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Delete Selected" + }, + "moveSelected": { + "message": "Move Selected" + }, + "selectAll": { + "message": "Select All" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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." + }, + "emailAddress": { + "message": "Email Address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New Organization" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json new file mode 100644 index 0000000000..a7c284de4a --- /dev/null +++ b/apps/web/src/locales/km/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "What type of item is this?" + }, + "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" + }, + "newPassword": { + "message": "New Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code (CVV)" + }, + "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" + }, + "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" + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "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." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Canceled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "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" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add Item" + }, + "editItem": { + "message": "Edit Item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Other" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copy Password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copy Username", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My Vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Delete Selected" + }, + "moveSelected": { + "message": "Move Selected" + }, + "selectAll": { + "message": "Select All" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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." + }, + "emailAddress": { + "message": "Email Address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New Organization" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json new file mode 100644 index 0000000000..bffd6bbf63 --- /dev/null +++ b/apps/web/src/locales/kn/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ ವೆಬ್ ವಾಲ್ಟ್", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "ಪಾಸ್ವರ್ಡ್" + }, + "newPassword": { + "message": "ಹೊಸ ಪಾಸ್‌ವರ್ಡ್" + }, + "passphrase": { + "message": "ಪಾಸ್ಫ್ರೇಸ್" + }, + "notes": { + "message": "ಟಿಪ್ಪಣಿಗಳು" + }, + "customFields": { + "message": "ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರಗಳು" + }, + "cardholderName": { + "message": "ಕಾರ್ಡುದಾರನ ಹೆಸರು" + }, + "number": { + "message": "ಸಂಖ್ಯೆ" + }, + "brand": { + "message": "ಬ್ರ್ಯಾಂಡ್" + }, + "expiration": { + "message": "ಮುಕ್ತಾಯ" + }, + "securityCode": { + "message": "ಭದ್ರತಾ ಕೋಡ್ (ಸಿವಿವಿ)" + }, + "identityName": { + "message": "ಹೆಸರು ಗುರುತು" + }, + "company": { + "message": "ಕಂಪನಿ" + }, + "ssn": { + "message": "ಸಾಮಾಜಿಕ ಭದ್ರತೆ ಸಂಖ್ಯೆ" + }, + "passportNumber": { + "message": "ಪಾಸ್ಪೋರ್ಟ್ ಸಂಖ್ಯೆ" + }, + "licenseNumber": { + "message": "ಪರವಾನಗಿ ಸಂಖ್ಯೆ" + }, + "email": { + "message": "ಇಮೇಲ್" + }, + "phone": { + "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": "ಡಿಸೆಂಬರ್" + }, + "title": { + "message": "ಶೀರ್ಷಿಕೆ" + }, + "mr": { + "message": "ಶ್ರೀ" + }, + "mrs": { + "message": "ಶ್ರೀಮತಿ" + }, + "ms": { + "message": "ಮಿಸ್" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "ಮುಕ್ತಾಯ ತಿಂಗಳು" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "ತೆಗೆ" + }, + "unassigned": { + "message": "ನಿಯೋಜಿಸಲಾಗಿಲ್ಲ" + }, + "noneFolder": { + "message": "ಫೋಲ್ಡರ್ ಇಲ್ಲ", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "ಫೋಲ್ಡರ್ ಸೇರಿಸಿ" + }, + "editFolder": { + "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." + }, + "never": { + "message": "ಇಲ್ಲವೇ ಇಲ್ಲ" + }, + "toggleVisibility": { + "message": "ಗೋಚರತೆಯನ್ನು ಟಾಗಲ್ ಮಾಡಿ" + }, + "toggleCollapse": { + "message": "ಟಾಗಲ್ ಕುಸಿತ", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ರಚಿಸಿ" + }, + "checkPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಬಹಿರಂಗಗೊಂಡಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ." + }, + "passwordExposed": { + "message": "ಈ ಗುಪ್ತಪದವು ಡೇಟಾ ಉಲ್ಲಂಘನೆಯಲ್ಲಿ $VALUE$ ಮೌಲ್ಯವನ್ನು (ಗಳು) ಬಹಿರಂಗಪಡಿಸಲಾಗಿದೆ. ನೀವು ಅದನ್ನು ಬದಲಾಯಿಸಬೇಕು.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "ತಿಳಿದಿರುವ ಯಾವುದೇ ಡೇಟಾ ಉಲ್ಲಂಘನೆಗಳಲ್ಲಿ ಈ ಪಾಸ್‌ವರ್ಡ್ ಕಂಡುಬಂದಿಲ್ಲ. ಅದನ್ನು ಬಳಸಲು ಸುರಕ್ಷಿತವಾಗಿರಬೇಕು." + }, + "save": { + "message": "ಉಳಿಸಿ" + }, + "cancel": { + "message": "ರದ್ದು" + }, + "canceled": { + "message": "ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ" + }, + "close": { + "message": "ಮುಚ್ಚಿ" + }, + "delete": { + "message": "ಅಳಿಸು" + }, + "favorite": { + "message": "ಮೆಚ್ಚಿನ" + }, + "unfavorite": { + "message": "ಮೆಚ್ಚಿನದಲ್ಲದ" + }, + "edit": { + "message": "ಎಡಿಟ್" + }, + "searchCollection": { + "message": "ಸಂಗ್ರಹಣೆ ಹುಡುಕಿ" + }, + "searchFolder": { + "message": "ಫೋಲ್ಡರ್ ಹುಡುಕಿ" + }, + "searchFavorites": { + "message": "ಮೆಚ್ಚುಗೆಗಳಲ್ಲಿ ಶೋಧ" + }, + "searchType": { + "message": "ಹುಡುಕಾಟ ಪ್ರಕಾರ", + "description": "Search item type" + }, + "searchVault": { + "message": "ವಾಲ್ಟ್ ಹುಡುಕಿ" + }, + "allItems": { + "message": "ಎಲ್ಲಾ ವಸ್ತುಗಳು" + }, + "favorites": { + "message": "ಮೆಚ್ಚುಗೆಗಳು" + }, + "types": { + "message": "ರೀತಿಯ" + }, + "typeLogin": { + "message": "ಲಾಗಿನ್" + }, + "typeCard": { + "message": "ಕಾರ್ಡ್" + }, + "typeIdentity": { + "message": "ಗುರುತಿಸುವಿಕೆ" + }, + "typeSecureNote": { + "message": "ಸುರಕ್ಷಿತ ಟಿಪ್ಪಣಿ" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "ಫೋಲ್ಡರ್‌ಗಳು" + }, + "collections": { + "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": "ದೇಶ" + }, + "shared": { + "message": "ಹಂಚಿಕೊಳ್ಳಲಾಗಿದೆ" + }, + "attachments": { + "message": "ಲಗತ್ತುಗಳು" + }, + "select": { + "message": "ಆಯ್ಕೆಮಾಡಿ" + }, + "addItem": { + "message": "ಐಟಂ ಸೇರಿಸಿ" + }, + "editItem": { + "message": "ವಸ್ತುಗಳನ್ನು ಸಂಪಾದಿಸಿ" + }, + "viewItem": { + "message": "ಐಟಂ ವೀಕ್ಷಿಸಿ" + }, + "ex": { + "message": "ಉದಾಹರಣೆ.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "ಇತರೆ" + }, + "share": { + "message": "ಹಂಚಿಕೊಳ್ಳಿ" + }, + "moveToOrganization": { + "message": "ಸಂಸ್ಥೆಗೆ ಸರಿಸಿ" + }, + "valueCopied": { + "message": "$VALUE$ ನಕಲಿಸಲಾಗಿದೆ", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "ಮೌಲ್ಯವನ್ನು ನಕಲಿಸಿ", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ನಕಲಿಸಿ", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "ಬಳಕೆಹೆಸರು ನಕಲಿಸು", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "ನಕಲು ಸಂಖ್ಯೆ", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "ಭದ್ರತಾ ಕೋಡ್ ಅನ್ನು ನಕಲಿಸಿ", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "ಯು ಆರ್ ಐ ಅನ್ನು ನಕಲಿಸಿ", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "ನನ್ನ ವಾಲ್ಟ್" + }, + "vault": { + "message": "ವಾಲ್ಟ್" + }, + "moveSelectedToOrg": { + "message": "ಆಯ್ದ ಸಂಸ್ಥೆಗೆ ಸರಿಸಿ" + }, + "deleteSelected": { + "message": "ಆಯ್ಕೆಮಾಡಿದ ಅಳಿಸಿ" + }, + "moveSelected": { + "message": "ಆರಿಸಿದುದನ್ನು ಸರಿಸಿ" + }, + "selectAll": { + "message": "ಎಲ್ಲವನ್ನು ಆರಿಸು" + }, + "unselectAll": { + "message": "ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆ ರದ್ದುಮಾಡಿ" + }, + "launch": { + "message": "ಶುರು" + }, + "newAttachment": { + "message": "ಹೊಸ ಲಗತ್ತನ್ನು ಸೇರಿಸಿ" + }, + "deletedAttachment": { + "message": "ಲಗತ್ತು ಅಳಿಸಲಾಗಿದೆ" + }, + "deleteAttachmentConfirmation": { + "message": "ಈ ಲಗತ್ತನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "attachmentSaved": { + "message": "ಲಗತ್ತನ್ನು ಉಳಿಸಲಾಗಿದೆ." + }, + "file": { + "message": "ಫೈಲ್" + }, + "selectFile": { + "message": "ಫೈಲನ್ನು ಆಯ್ಕೆಮಾಡು." + }, + "maxFileSize": { + "message": "ಗರಿಷ್ಠ ಫೈಲ್ ಗಾತ್ರ 500 ಎಂಬಿ." + }, + "updateKey": { + "message": "ನಿಮ್ಮ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸುವವರೆಗೆ ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ." + }, + "addedItem": { + "message": "ಐಟಂ ಸೇರಿಸಲಾಗಿದೆ" + }, + "editedItem": { + "message": "ಐಟಂ ಸಂಪಾದಿಸಲಾಗಿದೆ" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ ಅನ್ನು $ORGNAME$ ಗೆ ಸರಿಸಲಾಗಿದೆ", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "ಆಯ್ದ ವಸ್ತುಗಳನ್ನು $ORGNAME$ ಗೆ ಸರಿಸಲಾಗಿದೆ", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "ಐಟಂ ಅಳಿಸಿ" + }, + "deleteFolder": { + "message": "ಫೋಲ್ಡರ್ ಅಳಿಸಿ" + }, + "deleteAttachment": { + "message": "ಲಗತ್ತನ್ನು ಅಳಿಸಿ" + }, + "deleteItemConfirmation": { + "message": "ನೀವು ನಿಜವಾಗಿಯೂ ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲು ಬಯಸುವಿರಾ?" + }, + "deletedItem": { + "message": "ಐಟಂ ಅನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲಾಗಿದೆ" + }, + "deletedItems": { + "message": "ವಸ್ತುಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲಾಗಿದೆ" + }, + "movedItems": { + "message": "ಸರಿಸಲಾದ ವಸ್ತುಗಳು" + }, + "overwritePasswordConfirmation": { + "message": "ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ತಿದ್ದಿಬರೆಯಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "editedFolder": { + "message": "ಫೋಲ್ಡರ್ ತಿದ್ದಲಾಗಿದೆ" + }, + "addedFolder": { + "message": "ಫೋಲ್ಡರ್ ಸೇರಿಸಿ" + }, + "deleteFolderConfirmation": { + "message": "ನೀವು ಈ ಕಡತಕೋಶವನ್ನು ಖಚಿತವಾಗಿಯೂ ಅಳಿಸಬಯಸುವಿರಾ?" + }, + "deletedFolder": { + "message": "ಫೋಲ್ಡರ್ ಅಳಿಸಿ" + }, + "loggedOut": { + "message": "ಲಾಗ್ ಔಟ್" + }, + "loginExpired": { + "message": "ನಿಮ್ಮ ಲಾಗಿನ್ ಸೆಷನ್ ಅವಧಿ ಮೀರಿದೆ." + }, + "logOutConfirmation": { + "message": "ಲಾಗ್ ಔಟ್ ಮಾಡಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "logOut": { + "message": "ಲಾಗ್ ಔಟ್" + }, + "ok": { + "message": "ಸರಿ" + }, + "yes": { + "message": "ಹೌದು" + }, + "no": { + "message": "ಇಲ್ಲ" + }, + "loginOrCreateNewAccount": { + "message": "ನಿಮ್ಮ ಸುರಕ್ಷಿತ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಲಾಗ್ ಇನ್ ಮಾಡಿ ಅಥವಾ ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಿ." + }, + "createAccount": { + "message": "ಖಾತೆ ತೆರೆ" + }, + "logIn": { + "message": "ಲಾಗಿನ್" + }, + "submit": { + "message": "ಒಪ್ಪಿಸು" + }, + "emailAddressDesc": { + "message": "ಲಾಗ್ ಇನ್ ಮಾಡಲು ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನೀವು ಬಳಸುತ್ತೀರಿ." + }, + "yourName": { + "message": "ನಿಮ್ಮ ಹೆಸರು" + }, + "yourNameDesc": { + "message": "ನಾವು ನಿಮ್ಮನ್ನು ಏನು ಕರೆಯಬೇಕು?" + }, + "masterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್" + }, + "masterPassDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ನೀವು ಬಳಸುವ ಪಾಸ್ವರ್ಡ್ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಆಗಿದೆ. ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು ಮರೆಯದಿರುವುದು ಬಹಳ ಮುಖ್ಯ. ನೀವು ಅದನ್ನು ಮರೆತ ಸಂದರ್ಭದಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಪಡೆಯಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲ." + }, + "masterPassHintDesc": { + "message": "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು ಮರೆತರೆ ಅದನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ." + }, + "reTypeMasterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರು-ಟೈಪ್ ಮಾಡಿ" + }, + "masterPassHint": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಸುಳಿವು (ಐಚ್ಛಿಕ)" + }, + "masterPassHintLabel": { + "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": "ಅನಿರೀಕ್ಷಿತ ದೋಷ ಸಂಭವಿಸಿದೆ." + }, + "emailAddress": { + "message": "ಇಮೇಲ್ ವಿಳಾಸ" + }, + "yourVaultIsLocked": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಲಾಕ್ ಆಗಿದೆ. ಮುಂದುವರೆಯಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ." + }, + "unlock": { + "message": "ಅನ್‌ಲಾಕ್ ಮಾಡಿ" + }, + "loggedInAsEmailOn": { + "message": "$HOSTNAME$ನಲ್ಲಿ $EMAIL$ಆಗಿ ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "ಅಮಾನ್ಯ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್" + }, + "lockNow": { + "message": "ಈಗ ಲಾಕ್ ಮಾಡಿ" + }, + "noItemsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಐಟಂಗಳಿಲ್ಲ." + }, + "noCollectionsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಸಂಗ್ರಹಗಳಿಲ್ಲ." + }, + "noGroupsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಗುಂಪುಗಳಿಲ್ಲ." + }, + "noUsersInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಬಳಕೆದಾರರಿಲ್ಲ." + }, + "noEventsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಘಟನೆಗಳಿಲ್ಲ." + }, + "newOrganization": { + "message": "ಹೊಸ ಸಂಸ್ಥೆ" + }, + "noOrganizationsList": { + "message": "ನೀವು ಯಾವುದೇ ಸಂಸ್ಥೆಗಳಿಗೆ ಸೇರಿಲ್ಲ. ಇತರ ಬಳಕೆದಾರರೊಂದಿಗೆ ವಸ್ತುಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಲು ಸಂಘಟನೆಗಳು ನಿಮಗೆ ಅವಕಾಶ ನೀಡುತ್ತವೆ." + }, + "versionNumber": { + "message": "ಆವೃತ್ತಿ $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ಯುಎಸ್‌ಬಿ ಪೋರ್ಟ್ಗೆ ನಿಮ್ಮ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಸೇರಿಸಿ. ಅದು ಬಟನ್ ಹೊಂದಿದ್ದರೆ, ಅದನ್ನು ಸ್ಪರ್ಶಿಸಿ." + }, + "loginUnavailable": { + "message": "ಲಾಗಿನ್ ಲಭ್ಯವಿಲ್ಲ" + }, + "noTwoStepProviders": { + "message": "ಈ ಖಾತೆಯು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದೆ, ಆದಾಗ್ಯೂ, ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಎರಡು-ಹಂತದ ಪೂರೈಕೆದಾರರಲ್ಲಿ ಯಾರೂ ಈ ವೆಬ್ ಬ್ರೌಸರ್‌ನಿಂದ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ." + }, + "noTwoStepProviders2": { + "message": "ದಯವಿಟ್ಟು ಬೆಂಬಲಿತ ವೆಬ್ ಬ್ರೌಸರ್ ಅನ್ನು ಬಳಸಿ (Chrome ನಂತಹ) ಮತ್ತು / ಅಥವಾ ವೆಬ್ ಬ್ರೌಸರ್‌ಗಳಲ್ಲಿ (ದೃ hentic ೀಕರಣ ಅಪ್ಲಿಕೇಶನ್‌ನಂತಹ) ಉತ್ತಮವಾಗಿ ಬೆಂಬಲಿತವಾದ ಹೆಚ್ಚುವರಿ ಪೂರೈಕೆದಾರರನ್ನು ಸೇರಿಸಿ." + }, + "twoStepOptions": { + "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 ಸರಣಿ, 5 ಸರಣಿಗಳು ಮತ್ತು ಎನ್ಇಒ ಸಾಧನಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ." + }, + "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." + }, + "u2fDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಯಾವುದೇ FIDO U2F ಶಕ್ತಗೊಂಡ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಬಳಸಿ." + }, + "u2fTitle": { + "message": "FIDO U2F ಭದ್ರತಾ ಕೀ" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಯಾವುದೇ ವೆಬ್‌ಆಥ್ನ್ ಸಕ್ರಿಯಗೊಳಿಸಿದ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಬಳಸಿ." + }, + "webAuthnMigrated": { + "message": "(FIDO ನಿಂದ ವಲಸೆ ಬಂದಿದೆ)" + }, + "emailTitle": { + "message": "ಇಮೇಲ್" + }, + "emailDesc": { + "message": "ಪರಿಶೀಲನೆ ಕೋಡ್‌ಗಳನ್ನು ನಿಮಗೆ ಇಮೇಲ್ ಮಾಡಲಾಗುತ್ತದೆ." + }, + "continue": { + "message": "ಮುಂದುವರಿಸಿ" + }, + "organization": { + "message": "ಸಂಸ್ಥೆ" + }, + "organizations": { + "message": "ಸಂಸ್ಥೆಗಳು" + }, + "moveToOrgDesc": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಸರಿಸಲು ನೀವು ಬಯಸುವ ಸಂಸ್ಥೆಯನ್ನು ಆರಿಸಿ. ಸಂಸ್ಥೆಗೆ ಹೋಗುವುದರಿಂದ ವಸ್ತುವಿನ ಮಾಲೀಕತ್ವವನ್ನು ಆ ಸಂಸ್ಥೆಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ. ಈ ಐಟಂ ಅನ್ನು ಸರಿಸಿದ ನಂತರ ನೀವು ಇನ್ನು ಮುಂದೆ ಅದರ ನೇರ ಮಾಲೀಕರಾಗಿರುವುದಿಲ್ಲ." + }, + "moveManyToOrgDesc": { + "message": "ಈ ವಸ್ತುಗಳನ್ನು ಸರಿಸಲು ನೀವು ಬಯಸುವ ಸಂಸ್ಥೆಯನ್ನು ಆರಿಸಿ. ಸಂಸ್ಥೆಗೆ ಹೋಗುವುದರಿಂದ ವಸ್ತುಗಳ ಮಾಲೀಕತ್ವವನ್ನು ಆ ಸಂಸ್ಥೆಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ. ಈ ವಸ್ತುಗಳನ್ನು ಸರಿಸಿದ ನಂತರ ನೀವು ಇನ್ನು ಮುಂದೆ ಅವರ ನೇರ ಮಾಲೀಕರಾಗಿರುವುದಿಲ್ಲ." + }, + "collectionsDesc": { + "message": "ಈ ಐಟಂ ಹಂಚಿಕೊಳ್ಳುತ್ತಿರುವ ಸಂಗ್ರಹಗಳನ್ನು ಸಂಪಾದಿಸಿ. ಈ ಸಂಗ್ರಹಣೆಗಳಿಗೆ ಪ್ರವೇಶ ಹೊಂದಿರುವ ಸಂಸ್ಥೆಯ ಬಳಕೆದಾರರಿಗೆ ಮಾತ್ರ ಈ ಐಟಂ ಅನ್ನು ನೋಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ." + }, + "deleteSelectedItemsDesc": { + "message": "ಅಳಿಸಲು ನೀವು $COUNT$ ಐಟಂ (ಗಳನ್ನು) ಆಯ್ಕೆ ಮಾಡಿದ್ದೀರಿ. ಈ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "ನೀವು $COUNT$ ಆಯ್ದ ಐಟಂ (ಗಳನ್ನು) ಗೆ ಸರಿಸಲು ಬಯಸುವ ಫೋಲ್ಡರ್ ಆಯ್ಕೆಮಾಡಿ.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "ನೀವು $COUNT$ ಐಟಂ (ಗಳನ್ನು) ಆಯ್ಕೆ ಮಾಡಿದ್ದೀರಿ. $MOVEABLE_COUNT$ ಐಟಂ (ಗಳನ್ನು) ಸಂಸ್ಥೆಗೆ ಸರಿಸಬಹುದು, $NONMOVEABLE_COUNT$ ಸಾಧ್ಯವಿಲ್ಲ.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಳು (TOTP)" + }, + "copyVerificationCode": { + "message": "ಪರಿಶೀಲನೆ ಕೋಡ್ ನಕಲಿಸಿ" + }, + "warning": { + "message": "ಎಚ್ಚರಿಕೆ" + }, + "confirmVaultExport": { + "message": "ವಾಲ್ಟ್ ರಫ್ತು ಖಚಿತಪಡಿಸಿ" + }, + "exportWarningDesc": { + "message": "ಈ ರಫ್ತು ನಿಮ್ಮ ವಾಲ್ಟ್ ಡೇಟಾವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡದ ಸ್ವರೂಪದಲ್ಲಿ ಒಳಗೊಂಡಿದೆ. ನೀವು ರಫ್ತು ಮಾಡಿದ ಫೈಲ್ ಅನ್ನು ಅಸುರಕ್ಷಿತ ಚಾನಲ್‌ಗಳಲ್ಲಿ (ಇಮೇಲ್ ನಂತಹ) ಸಂಗ್ರಹಿಸಬಾರದು ಅಥವಾ ಕಳುಹಿಸಬಾರದು. ನೀವು ಅದನ್ನು ಬಳಸಿದ ನಂತರ ಅದನ್ನು ಅಳಿಸಿ." + }, + "encExportKeyWarningDesc": { + "message": "ಈ ರಫ್ತು ನಿಮ್ಮ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡುತ್ತದೆ. ನಿಮ್ಮ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನೀವು ಎಂದಾದರೂ ತಿರುಗಿಸಿದರೆ ನೀವು ಈ ರಫ್ತು ಫೈಲ್ ಅನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಕಾರಣ ನೀವು ಮತ್ತೆ ರಫ್ತು ಮಾಡಬೇಕು." + }, + "encExportAccountWarningDesc": { + "message": "ಖಾತೆ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಗಳು ಪ್ರತಿ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಬಳಕೆದಾರ ಖಾತೆಗೆ ಅನನ್ಯವಾಗಿವೆ, ಆದ್ದರಿಂದ ನೀವು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ರಫ್ತು ಬೇರೆ ಖಾತೆಗೆ ಆಮದು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." + }, + "export": { + "message": "ರಫ್ತು" + }, + "exportVault": { + "message": "ರಫ್ತು ವಾಲ್ಟ್" + }, + "fileFormat": { + "message": "ಫೈಲ್ ಮಾದರಿ" + }, + "exportSuccess": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಡೇಟಾವನ್ನು ರಫ್ತು ಮಾಡಲಾಗಿದೆ." + }, + "passwordGenerator": { + "message": "ಪಾಸ್ವರ್ಡ್ ಜನರೇಟರ್" + }, + "minComplexityScore": { + "message": "ಕನಿಷ್ಠ ಸಂಕೀರ್ಣತೆ ಸ್ಕೋರ್" + }, + "minNumbers": { + "message": "ಕನಿಷ್ಠ ಸಂಖ್ಯೆಗಳು" + }, + "minSpecial": { + "message": "ಕನಿಷ್ಠ ವಿಶೇಷ", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "ಅಸ್ಪಷ್ಟ ಅಕ್ಷರಗಳನ್ನು ತಪ್ಪಿಸಿ" + }, + "regeneratePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಪುನರುತ್ಪಾದಿಸಿ" + }, + "length": { + "message": "ಉದ್ದ" + }, + "numWords": { + "message": "ಪದಗಳ ಸಂಖ್ಯೆ" + }, + "wordSeparator": { + "message": "ಪದ ವಿಭಜಕ" + }, + "capitalize": { + "message": "ದೊಡ್ಡಕ್ಷರ ಮಾಡಿ", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ" + }, + "passwordHistory": { + "message": "ಪಾಸ್ವರ್ಡ್ ಇತಿಹಾಸ" + }, + "noPasswordsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಪಾಸ್ವರ್ಡ್ಗಳು ಇಲ್ಲ." + }, + "clear": { + "message": "ಕ್ಲಿಯರ್‌", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "ಖಾತೆಯನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ" + }, + "changeEmail": { + "message": "ಇಮೇಲ್ ಬದಲಾಯಿಸಿ" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "ಹೊಸ ಇಮೇಲ್" + }, + "code": { + "message": "ಸಂಕೇತ" + }, + "changeEmailDesc": { + "message": "ನಾವು ಪರಿಶೀಲನಾ ಕೋಡ್ ಅನ್ನು $EMAIL$ ಗೆ ಇಮೇಲ್ ಮಾಡಿದ್ದೇವೆ. ದಯವಿಟ್ಟು ಈ ಕೋಡ್ಗಾಗಿ ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಇಮೇಲ್ ವಿಳಾಸ ಬದಲಾವಣೆಯನ್ನು ಅಂತಿಮಗೊಳಿಸಲು ಅದನ್ನು ಕೆಳಗೆ ನಮೂದಿಸಿ.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "ಮುಂದುವರಿಯುವುದರಿಂದ ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಸೆಷನ್‌ನಿಂದ ನಿಮ್ಮನ್ನು ಲಾಗ್ out ಟ್ ಮಾಡುತ್ತದೆ, ನಿಮಗೆ ಮತ್ತೆ ಲಾಗ್ ಇನ್ ಆಗುವ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇತರ ಸಾಧನಗಳಲ್ಲಿನ ಸಕ್ರಿಯ ಸೆಷನ್‌ಗಳು ಒಂದು ಗಂಟೆಯವರೆಗೆ ಸಕ್ರಿಯವಾಗಿ ಮುಂದುವರಿಯಬಹುದು." + }, + "emailChanged": { + "message": "ಇಮೇಲ್ ಬದಲಾಯಿಸಲಾಗಿದೆ" + }, + "logBackIn": { + "message": "ದಯವಿಟ್ಟು ಮತ್ತೆ ಲಾಗ್ ಇನ್ ಮಾಡಿ." + }, + "logBackInOthersToo": { + "message": "ದಯವಿಟ್ಟು ಮತ್ತೆ ಲಾಗ್ ಇನ್ ಮಾಡಿ. ನೀವು ಇತರ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ ಲಾಗ್ಔಟ್ ಮಾಡಿ ಮತ್ತು ಅವುಗಳಿಗೆ ಹಿಂತಿರುಗಿ." + }, + "changeMasterPassword": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಿ" + }, + "masterPasswordChanged": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಲಾಗಿದೆ" + }, + "currentMasterPass": { + "message": "ಪ್ರಸ್ತುತ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್" + }, + "newMasterPass": { + "message": "ಹೊಸ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್" + }, + "confirmNewMasterPass": { + "message": "ಹೊಸ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ದೃಢೀಕರಣ" + }, + "encKeySettings": { + "message": "ಗೂಢ ಲಿಪೀಕರಣ ಕೀ ಸೆಟ್ಟಿಂಗ್‌ಗಳು" + }, + "kdfAlgorithm": { + "message": "ಕೆಡಿಎಫ್ ಅಲ್ಗಾರಿದಮ್" + }, + "kdfIterations": { + "message": "ಕೆಡಿಎಫ್ ಪುನರಾವರ್ತನೆಗಳು" + }, + "kdfIterationsDesc": { + "message": "ಹೆಚ್ಚಿನ ಕೆಡಿಎಫ್ ಪುನರಾವರ್ತನೆಗಳು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಆಕ್ರಮಣಕಾರರಿಂದ ವಿವೇಚನಾರಹಿತವಾಗಿ ರಕ್ಷಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. $VALUE$ ಅಥವಾ ಹೆಚ್ಚಿನ ಮೌಲ್ಯವನ್ನು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "ನಿಮ್ಮ ಕೆಡಿಎಫ್ ಪುನರಾವರ್ತನೆಗಳನ್ನು ತುಂಬಾ ಹೆಚ್ಚು ಹೊಂದಿಸುವುದರಿಂದ ನಿಧಾನವಾದ ಸಿಪಿಯು ಹೊಂದಿರುವ ಸಾಧನಗಳಲ್ಲಿ ಬಿಟ್‌ವಾರ್ಡೆನ್‌ಗೆ ಲಾಗ್ ಇನ್ ಆಗುವಾಗ (ಮತ್ತು ಅನ್ಲಾಕ್ ಮಾಡುವಾಗ) ಕಳಪೆ ಕಾರ್ಯಕ್ಷಮತೆಗೆ ಕಾರಣವಾಗಬಹುದು. $INCREMENT$ ನ ಏರಿಕೆಗಳಲ್ಲಿ ಮೌಲ್ಯವನ್ನು ಹೆಚ್ಚಿಸಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ ಮತ್ತು ನಂತರ ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "ಕೆಡಿಎಫ್ ಬದಲಾಯಿಸಿ" + }, + "encKeySettingsChanged": { + "message": "ಗೂಢ ಲಿಪೀಕರಣ ಕೀ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ" + }, + "dangerZone": { + "message": "ಅಪಾಯ ವಲಯ" + }, + "dangerZoneDesc": { + "message": "ಎಚ್ಚರಿಕೆಯಿಂದ, ಈ ಕ್ರಿಯೆಗಳು ಹಿಂತಿರುಗಿಸಲಾಗುವುದಿಲ್ಲ!" + }, + "deauthorizeSessions": { + "message": "ಸೆಷನ್‌ಗಳನ್ನು ಅನಧಿಕೃತಗೊಳಿಸಿ" + }, + "deauthorizeSessionsDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಮತ್ತೊಂದು ಸಾಧನದಲ್ಲಿ ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ? ನೀವು ಈ ಹಿಂದೆ ಬಳಸಿದ ಎಲ್ಲಾ ಕಂಪ್ಯೂಟರ್ ಅಥವಾ ಸಾಧನಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕೆಳಗೆ ಮುಂದುವರಿಯಿರಿ. ನೀವು ಈ ಹಿಂದೆ ಸಾರ್ವಜನಿಕ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಬಳಸಿದ್ದರೆ ಅಥವಾ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಿಮ್ಮದಲ್ಲದ ಸಾಧನದಲ್ಲಿ ಆಕಸ್ಮಿಕವಾಗಿ ಉಳಿಸಿದ್ದರೆ ಈ ಸುರಕ್ಷತಾ ಹಂತವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಹಂತವು ಈ ಹಿಂದೆ ನೆನಪಿನಲ್ಲಿರುವ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಸೆಷನ್‌ಗಳನ್ನು ಸಹ ತೆರವುಗೊಳಿಸುತ್ತದೆ." + }, + "deauthorizeSessionsWarning": { + "message": "ಮುಂದುವರಿಯುವುದರಿಂದ ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಸೆಷನ್‌ನಿಂದ ನಿಮ್ಮನ್ನು ಲಾಗ್ಔಟ್ ಮಾಡುತ್ತದೆ, ನಿಮಗೆ ಮತ್ತೆ ಲಾಗ್ ಇನ್ ಆಗುವ ಅಗತ್ಯವಿರುತ್ತದೆ. ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದರೆ ಮತ್ತೆ ಎರಡು-ಹಂತದ ಲಾಗಿನ್‌ಗೆ ನಿಮ್ಮನ್ನು ಕೇಳಲಾಗುತ್ತದೆ. ಇತರ ಸಾಧನಗಳಲ್ಲಿ ಸಕ್ರಿಯ ಸೆಷನ್‌ಗಳು ಒಂದು ಗಂಟೆಯವರೆಗೆ ಸಕ್ರಿಯವಾಗಿ ಮುಂದುವರಿಯಬಹುದು." + }, + "sessionsDeauthorized": { + "message": "ಎಲ್ಲಾ ಸೆಷನ್‌ಗಳು ಅನಧಿಕೃತವಾಗಿವೆ" + }, + "purgeVault": { + "message": "ವಾಲ್ಟ್ ಅನ್ನು ಶುದ್ಧೀಕರಿಸಿ" + }, + "purgedOrganizationVault": { + "message": "ಶುದ್ಧೀಕರಿಸಿದ ಸಂಸ್ಥೆ ವಾಲ್ಟ್." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಐಟಂಗಳು ಮತ್ತು ಫೋಲ್ಡರ್‌ಗಳನ್ನು ಅಳಿಸಲು ಕೆಳಗೆ ಮುಂದುವರಿಯಿರಿ. ನೀವು ಹಂಚಿಕೊಳ್ಳುವ ಸಂಸ್ಥೆಗೆ ಸೇರಿದ ವಸ್ತುಗಳನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ." + }, + "purgeOrgVaultDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಐಟಂಗಳು ಮತ್ತು ಫೋಲ್ಡರ್‌ಗಳನ್ನು ಅಳಿಸಲು ಕೆಳಗೆ ಮುಂದುವರಿಯಿರಿ. ನೀವು ಹಂಚಿಕೊಳ್ಳುವ ಸಂಸ್ಥೆಗೆ ಸೇರಿದ ವಸ್ತುಗಳನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ." + }, + "purgeVaultWarning": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಶುದ್ಧೀಕರಿಸುವುದು ಶಾಶ್ವತವಾಗಿದೆ. ಅದನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + }, + "vaultPurged": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಶುದ್ಧೀಕರಿಸಲಾಗಿದೆ." + }, + "deleteAccount": { + "message": "ಖಾತೆ ಅಳಿಸಿ" + }, + "deleteAccountDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆ ಮತ್ತು ಎಲ್ಲಾ ಸಂಬಂಧಿತ ಡೇಟಾವನ್ನು ಅಳಿಸಲು ಕೆಳಗೆ ಮುಂದುವರಿಯಿರಿ." + }, + "deleteAccountWarning": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಅಳಿಸುವುದು ಶಾಶ್ವತವಾಗಿದೆ. ಅದನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + }, + "accountDeleted": { + "message": "ಖಾತೆಯನ್ನು ಅಳಿಸಲಾಗಿದೆ" + }, + "accountDeletedDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಮುಚ್ಚಲಾಗಿದೆ ಮತ್ತು ಎಲ್ಲಾ ಸಂಬಂಧಿತ ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗಿದೆ." + }, + "myAccount": { + "message": "ನನ್ನ ಖಾತೆ" + }, + "tools": { + "message": "ಉಪಕರಣ" + }, + "importData": { + "message": "ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡಿ" + }, + "importError": { + "message": "ಆಮದು ದೋಷ" + }, + "importErrorDesc": { + "message": "ನೀವು ಆಮದು ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದ ಡೇಟಾದಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಮೂಲ ಫೈಲ್‌ನಲ್ಲಿ ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾದ ದೋಷಗಳನ್ನು ಪರಿಹರಿಸಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ." + }, + "importSuccess": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ಗೆ ಡೇಟಾವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಆಮದು ಮಾಡಲಾಗಿದೆ." + }, + "importWarning": { + "message": "ನೀವು $ORGANIZATION$ ಗೆ ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಈ ಸಂಸ್ಥೆಯ ಸದಸ್ಯರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಬಹುದು. ನೀವು ಮುಂದುವರಿಯಲು ಬಯಸುವಿರಾ?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "ಡೇಟಾವನ್ನು ಸರಿಯಾಗಿ ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲಾಗಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಆಮದು ಫೈಲ್ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ." + }, + "importNothingError": { + "message": "ಯಾವುದನ್ನೂ ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗಿಲ್ಲ." + }, + "importEncKeyError": { + "message": "ರಫ್ತು ಮಾಡಿದ ಫೈಲ್ ಅನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವಲ್ಲಿ ದೋಷ. ಡೇಟಾವನ್ನು ರಫ್ತು ಮಾಡಲು ಬಳಸಿದ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಗೆ ನಿಮ್ಮ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ." + }, + "selectFormat": { + "message": "ಆಮದು ಫೈಲ್‌ನ ಸ್ವರೂಪವನ್ನು ಆಯ್ಕೆಮಾಡಿ" + }, + "selectImportFile": { + "message": "ಆಮದು ಫೈಲ್ ಆಯ್ಕೆಮಾಡಿ" + }, + "orCopyPasteFileContents": { + "message": "ಅಥವಾ ಆಮದು ಫೈಲ್ ವಿಷಯಗಳನ್ನು ನಕಲಿಸಿ / ಅಂಟಿಸಿ" + }, + "instructionsFor": { + "message": "$NAME$ ಸೂಚನೆಗಳು", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "ಆಯ್ಕೆಗಳು" + }, + "optionsDesc": { + "message": "ನಿಮ್ಮ ವೆಬ್ ವಾಲ್ಟ್ ಅನುಭವವನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ." + }, + "optionsUpdated": { + "message": "ಆಯ್ಕೆಗಳನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ" + }, + "language": { + "message": "ಭಾಷೆ" + }, + "languageDesc": { + "message": "ವೆಬ್ ವಾಲ್ಟ್ ಬಳಸುವ ಭಾಷೆಯನ್ನು ಬದಲಾಯಿಸಿ." + }, + "disableIcons": { + "message": "ವೆಬ್‌ಸೈಟ್ ಚಿಹ್ನೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableIconsDesc": { + "message": "ವೆಬ್‌ಸೈಟ್ ಐಕಾನ್‌ಗಳು ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಪ್ರತಿ ಲಾಗಿನ್ ಐಟಂನ ಪಕ್ಕದಲ್ಲಿ ಗುರುತಿಸಬಹುದಾದ ಚಿತ್ರವನ್ನು ಒದಗಿಸುತ್ತದೆ." + }, + "enableGravatars": { + "message": "Gravatars ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Gravatar.com ನಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಅವತಾರ್ ಚಿತ್ರಗಳನ್ನು ಬಳಸಿ." + }, + "enableFullWidth": { + "message": "ಪೂರ್ಣ ಅಗಲ ವಿನ್ಯಾಸವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "ಬ್ರೌಸರ್ ವಿಂಡೋದ ಪೂರ್ಣ ಅಗಲವನ್ನು ವಿಸ್ತರಿಸಲು ವೆಬ್ ವಾಲ್ಟ್ ಅನ್ನು ಅನುಮತಿಸಿ." + }, + "default": { + "message": "ಡಿಫಾಲ್ಟ್" + }, + "domainRules": { + "message": "ಡೊಮೇನ್ ನಿಯಮಗಳು" + }, + "domainRulesDesc": { + "message": "ನೀವು ಅನೇಕ ವಿಭಿನ್ನ ವೆಬ್‌ಸೈಟ್ ಡೊಮೇನ್‌ಗಳಲ್ಲಿ ಒಂದೇ ರೀತಿಯ ಲಾಗಿನ್ ಹೊಂದಿದ್ದರೆ, ನೀವು ವೆಬ್‌ಸೈಟ್ ಅನ್ನು \"ಸಮಾನ\" ಎಂದು ಗುರುತಿಸಬಹುದು. \"ಗ್ಲೋಬಲ್\" ಡೊಮೇನ್‌ಗಳು ನಿಮಗಾಗಿ ಈಗಾಗಲೇ ಬಿಟ್‌ವಾರ್ಡೆನ್ ರಚಿಸಿದವು." + }, + "globalEqDomains": { + "message": "ಜಾಗತಿಕ ಸಮಾನ ಡೊಮೇನ್‌ಗಳು" + }, + "customEqDomains": { + "message": "ಕಸ್ಟಮ್ ಸಮಾನ ಡೊಮೇನ್‌ಗಳು" + }, + "exclude": { + "message": "ಹೊರತುಪಡಿಸಿ" + }, + "include": { + "message": "ಸೇರಿಸಿ" + }, + "customize": { + "message": "ಕಸ್ಟಮೈಸ್ ಮಾಡಿ" + }, + "newCustomDomain": { + "message": "ಹೊಸ ಕಸ್ಟಮ್ ಡೊಮೇನ್" + }, + "newCustomDomainDesc": { + "message": "ಅಲ್ಪವಿರಾಮದಿಂದ ಬೇರ್ಪಟ್ಟ ಡೊಮೇನ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ನಮೂದಿಸಿ. \"ಮೂಲ\" ಡೊಮೇನ್‌ಗಳನ್ನು ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿದೆ. ಸಬ್‌ಡೊಮೇನ್‌ಗಳನ್ನು ನಮೂದಿಸಬೇಡಿ. ಉದಾಹರಣೆಗೆ, \"www.google.com\" ಬದಲಿಗೆ \"google.com\" ಅನ್ನು ನಮೂದಿಸಿ. ಆಂಡ್ರಾಯ್ಡ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಇತರ ವೆಬ್‌ಸೈಟ್ ಡೊಮೇನ್‌ಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲು ನೀವು \"androidapp: //package.name\" ಅನ್ನು ಸಹ ನಮೂದಿಸಬಹುದು." + }, + "customDomainX": { + "message": "ಕಸ್ಟಮ್ ಡೊಮೇನ್ $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "ಡೊಮೇನ್‌ಗಳನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ" + }, + "twoStepLogin": { + "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್" + }, + "twoStepLoginDesc": { + "message": "ಲಾಗಿನ್ ಆಗುವಾಗ ಹೆಚ್ಚುವರಿ ಹಂತದ ಅಗತ್ಯವಿರುವ ಮೂಲಕ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸಿ." + }, + "twoStepLoginOrganizationDesc": { + "message": "ಸಂಸ್ಥೆಯ ಮಟ್ಟದಲ್ಲಿ ಪೂರೈಕೆದಾರರನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ಮೂಲಕ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಬಳಕೆದಾರರಿಗೆ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅಗತ್ಯವಿದೆ." + }, + "twoStepLoginRecoveryWarning": { + "message": "ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದರಿಂದ ನಿಮ್ಮ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆಯಿಂದ ನಿಮ್ಮನ್ನು ಶಾಶ್ವತವಾಗಿ ಲಾಕ್ ಮಾಡಬಹುದು. ನಿಮ್ಮ ಸಾಮಾನ್ಯ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಪೂರೈಕೆದಾರರನ್ನು ನೀವು ಇನ್ನು ಮುಂದೆ ಬಳಸಲಾಗದಿದ್ದಲ್ಲಿ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ (ಉದಾ. ನಿಮ್ಮ ಸಾಧನವನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ). ನಿಮ್ಮ ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಂಡರೆ ಬಿಟ್‌ವಾರ್ಡನ್ ಬೆಂಬಲವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್ ಅನ್ನು ಬರೆಯಲು ಅಥವಾ ಮುದ್ರಿಸಲು ಮತ್ತು ಅದನ್ನು ಸುರಕ್ಷಿತ ಸ್ಥಳದಲ್ಲಿ ಇರಿಸಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ." + }, + "viewRecoveryCode": { + "message": "ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್ ವೀಕ್ಷಿಸಿ" + }, + "providers": { + "message": "ಸೇವಾದಾರರು", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "ಸಕ್ರಿಯಗೊಳಿಸಿ" + }, + "enabled": { + "message": "ಸಕ್ರಿಯಗೊಳಿಸಿದೆ" + }, + "premium": { + "message": "ಪ್ರೀಮಿಯಮ್", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವ" + }, + "premiumRequired": { + "message": "ಪ್ರೀಮಿಯಂ ಅಗತ್ಯವಿದೆ" + }, + "premiumRequiredDesc": { + "message": "ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವ ಅಗತ್ಯವಿದೆ." + }, + "youHavePremiumAccess": { + "message": "ನಿಮಗೆ ಪ್ರೀಮಿಯಂ ಪ್ರವೇಶವಿದೆ" + }, + "alreadyPremiumFromOrg": { + "message": "ನೀವು ಸದಸ್ಯರಾಗಿರುವ ಸಂಸ್ಥೆಯ ಕಾರಣದಿಂದಾಗಿ ನೀವು ಈಗಾಗಲೇ ಪ್ರೀಮಿಯಂ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದ್ದೀರಿ." + }, + "manage": { + "message": "ವ್ಯವಸ್ಥಾಪಕ" + }, + "disable": { + "message": "ನಿಷ್‌ಕ್ರಿಯೆಗೊಳಿಸಿ" + }, + "twoStepLoginProviderEnabled": { + "message": "ಈ ಎರಡು ಹಂತದ ಲಾಗಿನ್ ಒದಗಿಸುವವರನ್ನು ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ." + }, + "twoStepLoginAuthDesc": { + "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ." + }, + "twoStepAuthenticatorDesc": { + "message": "ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್‌ನೊಂದಿಗೆ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಹೊಂದಿಸಲು ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "ಎರಡು ಹಂತದ ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ" + }, + "twoStepAuthenticatorNeedApp": { + "message": "ಎರಡು-ಹಂತದ ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್ ಅಗತ್ಯವಿದೆಯೇ? ಕೆಳಗಿನವುಗಳಲ್ಲಿ ಒಂದನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ" + }, + "iosDevices": { + "message": "ಐಒಎಸ್ ಸಾಧನಗಳು" + }, + "androidDevices": { + "message": "ಆಂಡ್ರಾಯ್ಡ್ ಸಾಧನಗಳು" + }, + "windowsDevices": { + "message": "ವಿಂಡೋಸ್ ಸಾಧನಗಳು" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "ಈ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ, ಆದಾಗ್ಯೂ, ಇತರ ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಸಹ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ." + }, + "twoStepAuthenticatorScanCode": { + "message": "ನಿಮ್ಮ ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್‌ನೊಂದಿಗೆ ಈ ಕ್ಯೂಆರ್ ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ" + }, + "key": { + "message": "ಕೀ" + }, + "twoStepAuthenticatorEnterCode": { + "message": "ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಫಲಿತಾಂಶದ 6 ಅಂಕಿಯ ಪರಿಶೀಲನೆ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "ಒಂದು ವೇಳೆ ನೀವು ಅದನ್ನು ಮತ್ತೊಂದು ಸಾಧನಕ್ಕೆ ಸೇರಿಸಬೇಕಾದರೆ, ನಿಮ್ಮದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅಗತ್ಯವಿರುವ ಕ್ಯೂಆರ್ ಕೋಡ್ (ಅಥವಾ ಕೀ) ಕೆಳಗೆ ಇದೆ." + }, + "twoStepDisableDesc": { + "message": "ಈ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಪೂರೈಕೆದಾರರನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "twoStepDisabled": { + "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್ ಒದಗಿಸುವವರನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ." + }, + "twoFactorYubikeyAdd": { + "message": "ನಿಮ್ಮ ಖಾತೆಗೆ ಹೊಸ ಯೂಬಿಕೆ ಸೇರಿಸಿ" + }, + "twoFactorYubikeyPlugIn": { + "message": "ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ಯುಎಸ್‌ಬಿ ಪೋರ್ಟ್ಗೆ ಯೂಬಿಕಿಯನ್ನು ಪ್ಲಗ್ ಮಾಡಿ." + }, + "twoFactorYubikeySelectKey": { + "message": "ಕೆಳಗಿನ ಮೊದಲ ಖಾಲಿ ಯುಬಿಕೆ ಇನ್ಪುಟ್ ಕ್ಷೇತ್ರವನ್ನು ಆಯ್ಕೆಮಾಡಿ." + }, + "twoFactorYubikeyTouchButton": { + "message": "ಯೂಬಿಕಿಯ ಬಟನ್ ಸ್ಪರ್ಶಿಸಿ." + }, + "twoFactorYubikeySaveForm": { + "message": "ಫಾರ್ಮ್ ಅನ್ನು ಉಳಿಸಿ." + }, + "twoFactorYubikeyWarning": { + "message": "ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಮಿತಿಗಳ ಕಾರಣ, ಎಲ್ಲಾ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಯೂಬಿಕೀಸ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. ನೀವು ಇನ್ನೊಂದು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಪೂರೈಕೆದಾರರನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು ಇದರಿಂದ ಯುಬಿಕೀಸ್ ಅನ್ನು ಬಳಸಲಾಗದಿದ್ದಾಗ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಬೆಂಬಲಿತ ವೇದಿಕೆಗಳು:" + }, + "twoFactorYubikeySupportUsb": { + "message": "ವೆಬ್ ವಾಲ್ಟ್, ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್, ಸಿಎಲ್ಐ ಮತ್ತು ಯುಎಸ್‌ಬಿ ಪೋರ್ಟ್ ಹೊಂದಿರುವ ಸಾಧನದಲ್ಲಿನ ಎಲ್ಲಾ ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳು ನಿಮ್ಮ ಯೂಬಿಕಿಯನ್ನು ಸ್ವೀಕರಿಸಬಹುದು." + }, + "twoFactorYubikeySupportMobile": { + "message": "ಎನ್‌ಎಫ್‌ಸಿ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಸಾಧನದಲ್ಲಿನ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಅಥವಾ ನಿಮ್ಮ ಯೂಬಿಕಿಯನ್ನು ಸ್ವೀಕರಿಸುವ ಡೇಟಾ ಪೋರ್ಟ್." + }, + "yubikeyX": { + "message": "ಯುಬಿಕೆ $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "ಯು 2 ಎಫ್ ಕೀ $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "ವೆಬ್‌ಆಥ್ನ್ ಕೀ $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "ಎನ್ಎಫ್ಸಿ ಬೆಂಬಲ" + }, + "twoFactorYubikeySupportsNfc": { + "message": "ನನ್ನ ಕೀಲಿಗಳಲ್ಲಿ ಒಂದು ಎನ್‌ಎಫ್‌ಸಿಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "ನಿಮ್ಮ ಯೂಬಿಕೀಸ್ ಒಬ್ಬರು ಎನ್‌ಎಫ್‌ಸಿಯನ್ನು ಬೆಂಬಲಿಸಿದರೆ (ಉದಾಹರಣೆಗೆ ಯೂಬಿಕೀ ಎನ್‌ಇಒ), ಎನ್‌ಎಫ್‌ಸಿ ಲಭ್ಯತೆ ಪತ್ತೆಯಾದಾಗಲೆಲ್ಲಾ ಮೊಬೈಲ್ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮನ್ನು ಕೇಳಲಾಗುತ್ತದೆ." + }, + "yubikeysUpdated": { + "message": "ಯೂಬಿಕೀಸ್ ನವೀಕರಿಸಲಾಗಿದೆ" + }, + "disableAllKeys": { + "message": "ಎಲ್ಲಾ ಕೀಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "twoFactorDuoDesc": { + "message": "ನಿಮ್ಮ ಡ್ಯುವೋ ನಿರ್ವಹಣೆ ಫಲಕದಿಂದ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅಪ್ಲಿಕೇಶನ್ ಮಾಹಿತಿಯನ್ನು ನಮೂದಿಸಿ." + }, + "twoFactorDuoIntegrationKey": { + "message": "ಏಕೀಕರಣ ಕೀ" + }, + "twoFactorDuoSecretKey": { + "message": "ರಹಸ್ಯ ಸಂಕೇತ" + }, + "twoFactorDuoApiHostname": { + "message": "API ಹೋಸ್ಟ್ ಹೆಸರು" + }, + "twoFactorEmailDesc": { + "message": "ಇಮೇಲ್‌ನೊಂದಿಗೆ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಹೊಂದಿಸಲು ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ:" + }, + "twoFactorEmailEnterEmail": { + "message": "ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ನೀವು ಬಯಸುವ ಇಮೇಲ್ ಅನ್ನು ನಮೂದಿಸಿ" + }, + "twoFactorEmailEnterCode": { + "message": "ಫಲಿತಾಂಶದಿಂದ 6 ಅಂಕೆಗಳ ಪರಿಶೀಲನೆ ಕೋಡ್ ಅನ್ನು ಇಮೇಲ್‌ನಿಂದ ನಮೂದಿಸಿ" + }, + "sendEmail": { + "message": "ಇಮೇಲ್ ಕಳುಹಿಸಿ" + }, + "twoFactorU2fAdd": { + "message": "ನಿಮ್ಮ ಖಾತೆಗೆ FIDO U2F ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಸೇರಿಸಿ" + }, + "removeU2fConfirmation": { + "message": "ಈ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ತೆಗೆದುಹಾಕಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "twoFactorWebAuthnAdd": { + "message": "ನಿಮ್ಮ ಖಾತೆಗೆ ವೆಬ್‌ಆಥ್ನ್ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಸೇರಿಸಿ" + }, + "readKey": { + "message": "ಕೀಲಿಯನ್ನು ಓದಿ" + }, + "keyCompromised": { + "message": "ಕೀ ಹೊಂದಾಣಿಕೆ ಮಾಡಲಾಗಿದೆ." + }, + "twoFactorU2fGiveName": { + "message": "ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಗುರುತಿಸಲು ಸ್ನೇಹಪರ ಹೆಸರನ್ನು ನೀಡಿ." + }, + "twoFactorU2fPlugInReadKey": { + "message": "ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ಯುಎಸ್‌ಬಿ ಪೋರ್ಟ್‌ನಲ್ಲಿ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಪ್ಲಗ್ ಮಾಡಿ ಮತ್ತು \"ರೀಡ್ ಕೀ\" ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ." + }, + "twoFactorU2fTouchButton": { + "message": "ಭದ್ರತಾ ಕೀಲಿಯು ಬಟನ್ ಹೊಂದಿದ್ದರೆ, ಅದನ್ನು ಸ್ಪರ್ಶಿಸಿ." + }, + "twoFactorU2fSaveForm": { + "message": "ಫಾರ್ಮ್ ಅನ್ನು ಉಳಿಸಿ." + }, + "twoFactorU2fWarning": { + "message": "ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಮಿತಿಗಳ ಕಾರಣ, ಎಲ್ಲಾ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ FIDO U2F ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. ನೀವು ಇನ್ನೊಂದು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಒದಗಿಸುವವರನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು ಇದರಿಂದ FIDO U2F ಅನ್ನು ಬಳಸಲಾಗದಿದ್ದಾಗ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಬೆಂಬಲಿತ ವೇದಿಕೆಗಳು:" + }, + "twoFactorU2fSupportWeb": { + "message": "ಯು 2 ಎಫ್ ಶಕ್ತಗೊಂಡ ಬ್ರೌಸರ್ ಹೊಂದಿರುವ ಡೆಸ್ಕ್‌ಟಾಪ್ / ಲ್ಯಾಪ್‌ಟಾಪ್‌ನಲ್ಲಿ ವೆಬ್ ವಾಲ್ಟ್ ಮತ್ತು ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳು (ಕ್ರೋಮ್, ಒಪೇರಾ, ವಿವಾಲ್ಡಿ, ಅಥವಾ ಎಫ್‌ಐಡಿಒ ಯು 2 ಎಫ್ ಸಕ್ರಿಯಗೊಳಿಸಿದ ಫೈರ್‌ಫಾಕ್ಸ್)." + }, + "twoFactorU2fWaiting": { + "message": "ನಿಮ್ಮ ಭದ್ರತಾ ಕೀಲಿಯ ಬಟನ್ ಸ್ಪರ್ಶಿಸಲು ನೀವು ಕಾಯುತ್ತಿದ್ದೀರಿ" + }, + "twoFactorU2fClickSave": { + "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್‌ಗಾಗಿ ಈ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಕೆಳಗಿನ \"ಉಳಿಸು\" ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಓದುವಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು." + }, + "twoFactorWebAuthnWarning": { + "message": "ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಮಿತಿಗಳ ಕಾರಣ, ಎಲ್ಲಾ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ವೆಬ್‌ಆಥ್ನ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. ನೀವು ಇನ್ನೊಂದು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಒದಗಿಸುವವರನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು ಇದರಿಂದ ವೆಬ್‌ಆಥ್ನ್ ಅನ್ನು ಬಳಸಲಾಗದಿದ್ದಾಗ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಬೆಂಬಲಿತ ವೇದಿಕೆಗಳು:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "ವೆಬ್‌ಆಥ್ನ್ ಶಕ್ತಗೊಂಡ ಬ್ರೌಸರ್‌ನೊಂದಿಗೆ ಡೆಸ್ಕ್‌ಟಾಪ್ / ಲ್ಯಾಪ್‌ಟಾಪ್‌ನಲ್ಲಿ ವೆಬ್ ವಾಲ್ಟ್ ಮತ್ತು ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳು (ಕ್ರೋಮ್, ಒಪೇರಾ, ವಿವಾಲ್ಡಿ, ಅಥವಾ ಎಫ್‌ಐಡಿಒ ಯು 2 ಎಫ್ ಸಕ್ರಿಯಗೊಳಿಸಿದ ಫೈರ್‌ಫಾಕ್ಸ್)." + }, + "twoFactorRecoveryYourCode": { + "message": "ನಿಮ್ಮ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್" + }, + "twoFactorRecoveryNoCode": { + "message": "ನೀವು ಇನ್ನೂ ಯಾವುದೇ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಪೂರೈಕೆದಾರರನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿಲ್ಲ. ನೀವು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಒದಗಿಸುವವರನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ ನಂತರ ನಿಮ್ಮ ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್‌ಗಾಗಿ ನೀವು ಇಲ್ಲಿ ಮತ್ತೆ ಪರಿಶೀಲಿಸಬಹುದು." + }, + "printCode": { + "message": "ಪ್ರಿಂಟ್ ಕೋಡ್", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "ವರದಿಗಳು" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "ಅಸುರಕ್ಷಿತ ವೆಬ್‌ಸೈಟ್‌ಗಳ ವರದಿ" + }, + "unsecuredWebsitesReportDesc": { + "message": "Http:// ಯೋಜನೆಯೊಂದಿಗೆ ಅಸುರಕ್ಷಿತ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಬಳಸುವುದು ಅಪಾಯಕಾರಿ. ವೆಬ್‌ಸೈಟ್ ಅನುಮತಿಸಿದರೆ, ನೀವು ಅದನ್ನು ಯಾವಾಗಲೂ https:// ಸ್ಕೀಮ್ ಬಳಸಿ ಪ್ರವೇಶಿಸಬೇಕು ಇದರಿಂದ ನಿಮ್ಮ ಸಂಪರ್ಕವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ." + }, + "unsecuredWebsitesFound": { + "message": "ಅಸುರಕ್ಷಿತ ವೆಬ್‌ಸೈಟ್‌ಗಳು ಕಂಡುಬಂದಿವೆ" + }, + "unsecuredWebsitesFoundDesc": { + "message": "ಅಸುರಕ್ಷಿತ URI ಗಳೊಂದಿಗೆ ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ $COUNT$ ವಸ್ತುಗಳನ್ನು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ವೆಬ್‌ಸೈಟ್ ಅನುಮತಿಸಿದರೆ ನೀವು ಅವರ ಯುಆರ್‌ಐ ಯೋಜನೆಯನ್ನು https: // ಗೆ ಬದಲಾಯಿಸಬೇಕು.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಯಾವುದೇ ಐಟಂಗಳು ಅಸುರಕ್ಷಿತ ಯುಆರ್‌ಐಗಳನ್ನು ಹೊಂದಿಲ್ಲ." + }, + "inactive2faReport": { + "message": "ನಿಷ್ಕ್ರಿಯ 2 ಎಫ್ಎ ವರದಿ" + }, + "inactive2faReportDesc": { + "message": "ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣ (2 ಎಫ್ಎ) ನಿಮ್ಮ ಖಾತೆಗಳನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುವ ಪ್ರಮುಖ ಭದ್ರತಾ ಸೆಟ್ಟಿಂಗ್ ಆಗಿದೆ. ವೆಬ್‌ಸೈಟ್ ಅದನ್ನು ನೀಡಿದರೆ, ನೀವು ಯಾವಾಗಲೂ ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು." + }, + "inactive2faFound": { + "message": "2FA ಇಲ್ಲದೆ ಲಾಗಿನ್‌ಗಳು ಕಂಡುಬಂದಿಲ್ಲ" + }, + "inactive2faFoundDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ $COUNT$ ವೆಬ್‌ಸೈಟ್ (ಗಳನ್ನು) ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ, ಅದನ್ನು ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣದೊಂದಿಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ (2fa.directory ಪ್ರಕಾರ). ಈ ಖಾತೆಗಳನ್ನು ಮತ್ತಷ್ಟು ರಕ್ಷಿಸಲು, ನೀವು ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "ಕಾಣೆಯಾದ ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣ ಸಂರಚನೆಯೊಂದಿಗೆ ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಯಾವುದೇ ವೆಬ್‌ಸೈಟ್‌ಗಳು ಕಂಡುಬಂದಿಲ್ಲ." + }, + "instructions": { + "message": "ಸೂಚನೆಗಳು" + }, + "exposedPasswordsReport": { + "message": "ಬಹಿರಂಗಪಡಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳ ವರದಿ" + }, + "exposedPasswordsReportDesc": { + "message": "ಬಹಿರಂಗಪಡಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಪಾಸ್‌ವರ್ಡ್‌ಗಳಾಗಿವೆ, ಅವುಗಳು ತಿಳಿದಿರುವ ಡೇಟಾ ಉಲ್ಲಂಘನೆಗಳಲ್ಲಿ ಬಹಿರಂಗಗೊಂಡಿವೆ, ಅವು ಸಾರ್ವಜನಿಕವಾಗಿ ಬಿಡುಗಡೆಯಾಗಿವೆ ಅಥವಾ ಹ್ಯಾಕರ್‌ಗಳು ಡಾರ್ಕ್ ವೆಬ್‌ನಲ್ಲಿ ಮಾರಾಟವಾಗುತ್ತವೆ." + }, + "exposedPasswordsFound": { + "message": "ಬಹಿರಂಗಪಡಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಕಂಡುಬಂದಿವೆ" + }, + "exposedPasswordsFoundDesc": { + "message": "ತಿಳಿದಿರುವ ದತ್ತಾಂಶ ಉಲ್ಲಂಘನೆಗಳಲ್ಲಿ ಬಹಿರಂಗಗೊಂಡ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ $COUNT$ ವಸ್ತುಗಳನ್ನು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಬಳಸಲು ನೀವು ಅವುಗಳನ್ನು ಬದಲಾಯಿಸಬೇಕು.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಯಾವುದೇ ಐಟಂಗಳು ತಿಳಿದಿರುವ ಡೇಟಾ ಉಲ್ಲಂಘನೆಗಳಲ್ಲಿ ಬಹಿರಂಗಗೊಂಡ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಹೊಂದಿಲ್ಲ." + }, + "checkExposedPasswords": { + "message": "ಬಹಿರಂಗಪಡಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ" + }, + "exposedXTimes": { + "message": "ಬಹಿರಂಗಪಡಿಸಿದ $COUNT$ ಸಮಯ (ಗಳು)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "ದುರ್ಬಲ ಪಾಸ್‌ವರ್ಡ್‌ಗಳ ವರದಿ" + }, + "weakPasswordsReportDesc": { + "message": "ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಭೇದಿಸಲು ಬಳಸುವ ಹ್ಯಾಕರ್ಸ್ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತ ಸಾಧನಗಳಿಂದ ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಊಹಿಸಬಹುದು. ಬಲವಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ರಚಿಸಲು ಬಿಟ್‌ವಾರ್ಡನ್ ಪಾಸ್‌ವರ್ಡ್ ಜನರೇಟರ್ ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ." + }, + "weakPasswordsFound": { + "message": "ದುರ್ಬಲ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಕಂಡುಬಂದಿವೆ" + }, + "weakPasswordsFoundDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಪ್ರಬಲವಲ್ಲದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳೊಂದಿಗೆ $COUNT$ ವಸ್ತುಗಳನ್ನು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ಬಲವಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಬಳಸಲು ನೀವು ಅವುಗಳನ್ನು ನವೀಕರಿಸಬೇಕು.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಯಾವುದೇ ಐಟಂಗಳು ದುರ್ಬಲ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಹೊಂದಿಲ್ಲ." + }, + "reusedPasswordsReport": { + "message": "ಮರುಬಳಕೆ ಮಾಡಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳ ವರದಿ" + }, + "reusedPasswordsReportDesc": { + "message": "ನೀವು ಬಳಸುವ ಸೇವೆಯು ರಾಜಿ ಮಾಡಿಕೊಂಡಿದ್ದರೆ, ಅದೇ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬೇರೆಡೆ ಮರುಬಳಕೆ ಮಾಡುವುದರಿಂದ ನಿಮ್ಮ ಹೆಚ್ಚಿನ ಆನ್‌ಲೈನ್ ಖಾತೆಗಳಿಗೆ ಹ್ಯಾಕರ್‌ಗಳು ಸುಲಭವಾಗಿ ಪ್ರವೇಶ ಪಡೆಯಬಹುದು. ಪ್ರತಿ ಖಾತೆ ಅಥವಾ ಸೇವೆಗೆ ನೀವು ಅನನ್ಯ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬಳಸಬೇಕು." + }, + "reusedPasswordsFound": { + "message": "ಮರುಬಳಕೆ ಮಾಡಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಕಂಡುಬಂದಿವೆ" + }, + "reusedPasswordsFoundDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಮರುಬಳಕೆ ಮಾಡಲಾಗುತ್ತಿರುವ $COUNT$ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ನೀವು ಅವುಗಳನ್ನು ಅನನ್ಯ ಮೌಲ್ಯಕ್ಕೆ ಬದಲಾಯಿಸಬೇಕು.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿನ ಯಾವುದೇ ಲಾಗಿನ್‌ಗಳು ಮರುಬಳಕೆ ಮಾಡಲಾಗುತ್ತಿರುವ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಹೊಂದಿಲ್ಲ." + }, + "reusedXTimes": { + "message": "$COUNT$ ಬಾರಿ ಮರುಬಳಕೆ ಮಾಡಲಾಗಿದೆ", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "ಡೇಟಾ ಉಲ್ಲಂಘನೆ ವರದಿ" + }, + "breachDesc": { + "message": "\"ಉಲ್ಲಂಘನೆ\" ಎನ್ನುವುದು ಸೈಟ್‌ನ ಡೇಟಾವನ್ನು ಹ್ಯಾಕರ್‌ಗಳು ಅಕ್ರಮವಾಗಿ ಪ್ರವೇಶಿಸಿ ನಂತರ ಸಾರ್ವಜನಿಕವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಿದ ಘಟನೆಯಾಗಿದೆ. ರಾಜಿ ಮಾಡಿಕೊಂಡ ಡೇಟಾದ ಪ್ರಕಾರಗಳನ್ನು ಪರಿಶೀಲಿಸಿ (ಇಮೇಲ್ ವಿಳಾಸಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್‌ಗಳು ಇತ್ಯಾದಿ) ಮತ್ತು ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವಂತಹ ಸೂಕ್ತ ಕ್ರಮ ತೆಗೆದುಕೊಳ್ಳಿ." + }, + "breachCheckUsernameEmail": { + "message": "ನೀವು ಬಳಸುವ ಯಾವುದೇ ಬಳಕೆದಾರಹೆಸರುಗಳು ಅಥವಾ ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ಪರಿಶೀಲಿಸಿ." + }, + "checkBreaches": { + "message": "ಉಲ್ಲಂಘನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ" + }, + "breachUsernameNotFound": { + "message": "ತಿಳಿದಿರುವ ಯಾವುದೇ ಡೇಟಾ ಉಲ್ಲಂಘನೆಗಳಲ್ಲಿ $USERNAME$\nಕಂಡುಬಂದಿಲ್ಲ.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "ಸಿಹಿ ಸುದ್ದಿ", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ $COUNT$ ವಿಭಿನ್ನ ಡೇಟಾ ಉಲ್ಲಂಘನೆಗಳಲ್ಲಿ $USERNAME$ ಕಂಡುಬಂದಿದೆ.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "ಉಲ್ಲಂಘಿಸಿದ ಖಾತೆಗಳು ಕಂಡುಬಂದಿವೆ" + }, + "compromisedData": { + "message": "ರಾಜಿ ಮಾಡಿಕೊಂಡ ಡೇಟಾ" + }, + "website": { + "message": "ಜಾಲತಾಣ" + }, + "affectedUsers": { + "message": "ಬಾಧಿತ ಬಳಕೆದಾರರು" + }, + "breachOccurred": { + "message": "ಉಲ್ಲಂಘನೆ ಸಂಭವಿಸಿದೆ" + }, + "breachReported": { + "message": "ಉಲ್ಲಂಘನೆ ವರದಿಯಾಗಿದೆ" + }, + "reportError": { + "message": "ವರದಿಯನ್ನು ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುವಾಗ ದೋಷ ಸಂಭವಿಸಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು" + }, + "billing": { + "message": "ಬಿಲ್ಲಿಂಗ್" + }, + "accountCredit": { + "message": "ಖಾತೆ ಕ್ರೆಡಿಟ್", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "ಖಾತೆ ಬ್ಯಾಲೆನ್ಸ್", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "ಕ್ರೆಡಿಟ್ ಸೇರಿಸಿ", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "ಮೊತ್ತ", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "ಪಾವತಿಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದ ನಂತರ ಸೇರಿಸಿದ ಕ್ರೆಡಿಟ್ ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿ ಗೋಚರಿಸುತ್ತದೆ. ಕೆಲವು ಪಾವತಿ ವಿಧಾನಗಳು ವಿಳಂಬವಾಗುತ್ತವೆ ಮತ್ತು ಇತರರಿಗಿಂತ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು." + }, + "makeSureEnoughCredit": { + "message": "ಈ ಖರೀದಿಗೆ ನಿಮ್ಮ ಖಾತೆಗೆ ಸಾಕಷ್ಟು ಕ್ರೆಡಿಟ್ ಲಭ್ಯವಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನಿಮ್ಮ ಖಾತೆಗೆ ಸಾಕಷ್ಟು ಕ್ರೆಡಿಟ್ ಲಭ್ಯವಿಲ್ಲದಿದ್ದರೆ, ಫೈಲ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಪಾವತಿ ವಿಧಾನವನ್ನು ವ್ಯತ್ಯಾಸಕ್ಕಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಬಿಲ್ಲಿಂಗ್ ಪುಟದಿಂದ ನಿಮ್ಮ ಖಾತೆಗೆ ನೀವು ಕ್ರೆಡಿಟ್ ಸೇರಿಸಬಹುದು." + }, + "creditAppliedDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯ ಕ್ರೆಡಿಟ್ ಅನ್ನು ಖರೀದಿ ಮಾಡಲು ಬಳಸಬಹುದು. ಲಭ್ಯವಿರುವ ಯಾವುದೇ ಕ್ರೆಡಿಟ್ ಅನ್ನು ಈ ಖಾತೆಗಾಗಿ ರಚಿಸಲಾದ ಇನ್‌ವಾಯ್ಸ್‌ಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ." + }, + "goPremium": { + "message": "ಪ್ರೀಮಿಯಮ್ ಮೆಂಬರ್ ಆಗಿ", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "ನೀವು ಪ್ರೀಮಿಯಂಗೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿದ್ದೀರಿ." + }, + "premiumUpgradeUnlockFeatures": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವಕ್ಕೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿ ಮತ್ತು ಕೆಲವು ಉತ್ತಮ ಹೆಚ್ಚುವರಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ." + }, + "premiumSignUpStorage": { + "message": "ಫೈಲ್ ಲಗತ್ತುಗಳಿಗಾಗಿ 1 ಜಿಬಿ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಸಂಗ್ರಹ." + }, + "premiumSignUpTwoStep": { + "message": "ಹೆಚ್ಚುವರಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಆಯ್ಕೆಗಳಾದ ಯೂಬಿಕೆ, ಎಫ್‌ಐಡಿಒ ಯು 2 ಎಫ್, ಮತ್ತು ಡ್ಯುವೋ." + }, + "premiumSignUpEmergency": { + "message": "ತುರ್ತು ಪ್ರವೇಶ" + }, + "premiumSignUpReports": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು ಪಾಸ್ವರ್ಡ್ ನೈರ್ಮಲ್ಯ, ಖಾತೆ ಆರೋಗ್ಯ ಮತ್ತು ಡೇಟಾ ಉಲ್ಲಂಘನೆ ವರದಿಗಳು." + }, + "premiumSignUpTotp": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿನ ಲಾಗಿನ್‌ಗಳಿಗಾಗಿ TOTP ಪರಿಶೀಲನಾ ಕೋಡ್ (2FA) ಜನರೇಟರ್." + }, + "premiumSignUpSupport": { + "message": "ಆದ್ಯತೆಯ ಗ್ರಾಹಕ ಬೆಂಬಲ." + }, + "premiumSignUpFuture": { + "message": "ಎಲ್ಲಾ ಭವಿಷ್ಯದ ಪ್ರೀಮಿಯಂ ವೈಶಿಷ್ಟ್ಯಗಳು. ಹೆಚ್ಚು ಶೀಘ್ರದಲ್ಲೇ ಬರಲಿದೆ!" + }, + "premiumPrice": { + "message": "ಎಲ್ಲವೂ ಕೇವಲ $PRICE$ / ವರ್ಷಕ್ಕೆ!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "ಆಡ್ಸಾನ್ಗಳು" + }, + "premiumAccess": { + "message": "ಪ್ರೀಮಿಯಂ ಪ್ರವೇಶ" + }, + "premiumAccessDesc": { + "message": "$PRICE$ / $INTERVAL$ ಗಾಗಿ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಎಲ್ಲಾ ಸದಸ್ಯರಿಗೆ ನೀವು ಪ್ರೀಮಿಯಂ ಪ್ರವೇಶವನ್ನು ಸೇರಿಸಬಹುದು.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆ (ಜಿಬಿ)" + }, + "additionalStorageGbDesc": { + "message": "# ಹೆಚ್ಚುವರಿ ಜಿಬಿ" + }, + "additionalStorageIntervalDesc": { + "message": "ನಿಮ್ಮ ಯೋಜನೆ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಫೈಲ್ ಸಂಗ್ರಹಣೆಯ $SIZE$ ನೊಂದಿಗೆ ಬರುತ್ತದೆ. ಪ್ರತಿ ಜಿಬಿಗೆ $PRICE$ ಗೆ ನೀವು ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆಯನ್ನು ಸೇರಿಸಬಹುದು / $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "ಸಾರಾಂಶ" + }, + "total": { + "message": "ಒಟ್ಟು" + }, + "year": { + "message": "ವರ್ಷ" + }, + "month": { + "message": "ತಿಂಗಳು" + }, + "monthAbbr": { + "message": "ತಿಂ.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನವನ್ನು ತಕ್ಷಣವೇ ನಂತರ ಪ್ರತಿ ವರ್ಷ ಮರುಕಳಿಸುವ ಆಧಾರದ ಮೇಲೆ ವಿಧಿಸಲಾಗುತ್ತದೆ. ನೀವು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ರದ್ದುಗೊಳಿಸಬಹುದು." + }, + "paymentCharged": { + "message": "ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನವನ್ನು ತಕ್ಷಣವೇ ವಿಧಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಂತರ ಮರುಕಳಿಸುವ ಆಧಾರದ ಮೇಲೆ ಪ್ರತಿ $INTERVAL$. ನೀವು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ರದ್ದುಗೊಳಿಸಬಹುದು.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "ನಿಮ್ಮ ಯೋಜನೆ 7 ದಿನಗಳ ಉಚಿತ ಪ್ರಯೋಗದೊಂದಿಗೆ ಬರುತ್ತದೆ. ಪ್ರಯೋಗ ಮುಗಿಯುವವರೆಗೆ ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನಕ್ಕೆ ಶುಲ್ಕ ವಿಧಿಸಲಾಗುವುದಿಲ್ಲ. ಪ್ರತಿ $INTERVAL$ ಮರುಕಳಿಸುವ ಆಧಾರದ ಮೇಲೆ ಬಿಲ್ಲಿಂಗ್ ಸಂಭವಿಸುತ್ತದೆ. ನೀವು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ರದ್ದುಗೊಳಿಸಬಹುದು." + }, + "paymentInformation": { + "message": "ಪಾವತಿ ಮಾಹಿತಿ" + }, + "billingInformation": { + "message": "ಬಿಲ್ಲಿಂಗ್ ಮಾಹಿತಿ" + }, + "creditCard": { + "message": "ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್" + }, + "paypalClickSubmit": { + "message": "ನಿಮ್ಮ ಪೇಪಾಲ್ ಖಾತೆಗೆ ಲಾಗ್ ಇನ್ ಮಾಡಲು ಪೇಪಾಲ್ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ, ನಂತರ ಮುಂದುವರಿಸಲು ಕೆಳಗಿನ ಸಲ್ಲಿಕೆ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ." + }, + "cancelSubscription": { + "message": "ಚಂದಾದಾರಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಿ" + }, + "subscriptionCanceled": { + "message": "ಚಂದಾದಾರಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ." + }, + "pendingCancellation": { + "message": "ರದ್ದತಿ ಬಾಕಿ ಉಳಿದಿದೆ" + }, + "subscriptionPendingCanceled": { + "message": "ಪ್ರಸ್ತುತ ಬಿಲ್ಲಿಂಗ್ ಅವಧಿಯ ಕೊನೆಯಲ್ಲಿ ರದ್ದತಿಗೆ ಚಂದಾದಾರಿಕೆಯನ್ನು ಗುರುತಿಸಲಾಗಿದೆ." + }, + "reinstateSubscription": { + "message": "ಚಂದಾದಾರಿಕೆಯನ್ನು ಮರುಸ್ಥಾಪಿಸಿ" + }, + "reinstateConfirmation": { + "message": "ಬಾಕಿ ಉಳಿದಿರುವ ರದ್ದತಿ ವಿನಂತಿಯನ್ನು ತೆಗೆದುಹಾಕಲು ಮತ್ತು ನಿಮ್ಮ ಚಂದಾದಾರಿಕೆಯನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "reinstated": { + "message": "ಚಂದಾದಾರಿಕೆಯನ್ನು ಪುನಃ ಸ್ಥಾಪಿಸಲಾಗಿದೆ." + }, + "cancelConfirmation": { + "message": "ನೀವು ರದ್ದು ಮಾಡಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ಈ ಬಿಲ್ಲಿಂಗ್ ಚಕ್ರದ ಕೊನೆಯಲ್ಲಿ ಈ ಎಲ್ಲಾ ಚಂದಾದಾರಿಕೆಯ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ." + }, + "canceledSubscription": { + "message": "ಚಂದಾದಾರಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ." + }, + "neverExpires": { + "message": "ಎಂದಿಗೂ ಅವಧಿ" + }, + "status": { + "message": "ಸ್ಥಿತಿ" + }, + "nextCharge": { + "message": "ಮುಂದಿನ ಶುಲ್ಕ" + }, + "details": { + "message": "ವಿವರಗಳು" + }, + "downloadLicense": { + "message": "ಪರವಾನಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ" + }, + "updateLicense": { + "message": "ಪರವಾನಗಿ ನವೀಕರಿಸಿ" + }, + "updatedLicense": { + "message": "ನವೀಕರಿಸಿದ ಪರವಾನಗಿ" + }, + "manageSubscription": { + "message": "ಚಂದಾದಾರಿಕೆಯನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "storage": { + "message": "ಸಂಗ್ರಹಣೆ" + }, + "addStorage": { + "message": "ಸಂಗ್ರಹಣೆಯನ್ನು ಸೇರಿಸಿ" + }, + "removeStorage": { + "message": "ಸಂಗ್ರಹಣೆಯನ್ನು ತೆಗೆದುಹಾಕಿ" + }, + "subscriptionStorage": { + "message": "ನಿಮ್ಮ ಚಂದಾದಾರಿಕೆಯು ಒಟ್ಟು $MAX_STORAGE$ GB ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಫೈಲ್ ಸಂಗ್ರಹವನ್ನು ಹೊಂದಿದೆ. ನೀವು ಪ್ರಸ್ತುತ $USED_STORAGE$ ಅನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "ಪಾವತಿ ವಿಧಾನ" + }, + "noPaymentMethod": { + "message": "ಫೈಲ್‌ನಲ್ಲಿ ಪಾವತಿ ವಿಧಾನವಿಲ್ಲ." + }, + "addPaymentMethod": { + "message": "ಪಾವತಿ ವಿಧಾನವನ್ನು ಸೇರಿಸಿ" + }, + "changePaymentMethod": { + "message": "ಪಾವತಿ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸಿ" + }, + "invoices": { + "message": "ಇನ್ವಾಯ್ಸ್ಗಳು" + }, + "noInvoices": { + "message": "ಇನ್‌ವಾಯ್ಸ್‌ಗಳಿಲ್ಲ." + }, + "paid": { + "message": "ಪಾವತಿ ಮಾಡಲಾಗಿದೆ", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "ಪಾವತಿಸಲಾಗಿಲ್ಲ", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "ವ್ಯವಹಾರಗಳು", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "ಯಾವುದೇ ವಹಿವಾಟು ಇಲ್ಲ." + }, + "chargeNoun": { + "message": "ಶುಲ್ಕ", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "ಮರುಪಾವತಿ", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "ಯಾವುದೇ ಹೇಳಿಕೆಗಳು ನಿಮ್ಮ ಹೇಳಿಕೆಯಲ್ಲಿ $STATEMENT_NAME$ ಆಗಿ ಕಾಣಿಸುತ್ತದೆ.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "ಸೇರಿಸಲು ಜಿಬಿ ಸಂಗ್ರಹಣೆ" + }, + "gbStorageRemove": { + "message": "ತೆಗೆದುಹಾಕಲು ಶೇಖರಣೆಯ ಜಿಬಿ" + }, + "storageAddNote": { + "message": "ಸಂಗ್ರಹಣೆಯನ್ನು ಸೇರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ಮೊತ್ತಕ್ಕೆ ಹೊಂದಾಣಿಕೆ ಉಂಟಾಗುತ್ತದೆ ಮತ್ತು ತಕ್ಷಣ ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನವನ್ನು ಫೈಲ್‌ನಲ್ಲಿ ಚಾರ್ಜ್ ಮಾಡುತ್ತದೆ. ಪ್ರಸ್ತುತ ಬಿಲ್ಲಿಂಗ್ ಚಕ್ರದ ಉಳಿದ ಭಾಗಕ್ಕೆ ಮೊದಲ ಶುಲ್ಕವನ್ನು ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ." + }, + "storageRemoveNote": { + "message": "ಸಂಗ್ರಹಣೆಯನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ಮೊತ್ತಕ್ಕೆ ಹೊಂದಾಣಿಕೆಗಳು ಉಂಟಾಗುತ್ತವೆ, ಅದು ನಿಮ್ಮ ಮುಂದಿನ ಬಿಲ್ಲಿಂಗ್ ಶುಲ್ಕಕ್ಕೆ ಸಾಲಗಳಾಗಿ ಸಾಬೀತಾಗುತ್ತದೆ." + }, + "adjustedStorage": { + "message": "$AMOUNT$ GB ಸಂಗ್ರಹಣೆಯನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "ಗ್ರಾಹಕ ಬೆಂಬಲವನ್ನು ಸಂಪರ್ಕಿಸಿ" + }, + "updatedPaymentMethod": { + "message": "ಪಾವತಿ ವಿಧಾನವನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ." + }, + "purchasePremium": { + "message": "ಪ್ರೀಮಿಯಂ ಖರೀದಿಸಿ" + }, + "licenseFile": { + "message": "ಪರವಾನಗಿ ಫೈಲ್" + }, + "licenseFileDesc": { + "message": "ನಿಮ್ಮ ಪರವಾನಗಿ ಫೈಲ್‌ಗೆ $FILE_NAME$ ಎಂದು ಹೆಸರಿಸಲಾಗುವುದು", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವಕ್ಕೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಲು ನೀವು ಮಾನ್ಯ ಪರವಾನಗಿ ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ." + }, + "uploadLicenseFileOrg": { + "message": "ಆನ್-ಆವರಣದ ಹೋಸ್ಟ್ ಸಂಸ್ಥೆಯನ್ನು ರಚಿಸಲು ನೀವು ಮಾನ್ಯವಾದ ಪರವಾನಗಿ ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ." + }, + "accountEmailMustBeVerified": { + "message": "ನಿಮ್ಮ ಖಾತೆಯ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಬೇಕು." + }, + "newOrganizationDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನ ಭಾಗಗಳನ್ನು ಇತರರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು ಮತ್ತು ಕುಟುಂಬ, ಸಣ್ಣ ತಂಡ ಅಥವಾ ದೊಡ್ಡ ಕಂಪನಿಯಂತಹ ನಿರ್ದಿಷ್ಟ ಘಟಕಕ್ಕಾಗಿ ಸಂಬಂಧಿತ ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಲು ಸಂಸ್ಥೆಗಳು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತವೆ." + }, + "generalInformation": { + "message": "ಸಾಮಾನ್ಯ ಮಾಹಿತಿ" + }, + "organizationName": { + "message": "ಸಂಸ್ಥೆಯ ಹೆಸರು" + }, + "accountOwnedBusiness": { + "message": "ಈ ಖಾತೆಯು ವ್ಯವಹಾರದ ಒಡೆತನದಲ್ಲಿದೆ." + }, + "billingEmail": { + "message": "ಬಿಲ್ಲಿಂಗ್ ಇಮೇಲ್" + }, + "businessName": { + "message": "ವ್ಯವಹಾರದ ಹೆಸರು" + }, + "chooseYourPlan": { + "message": "ನಿಮ್ಮ ಯೋಜನೆಯನ್ನು ಆರಿಸಿ" + }, + "users": { + "message": "ಬಳಕೆದಾರರು" + }, + "userSeats": { + "message": "ಬಳಕೆದಾರರ ಆಸನಗಳು" + }, + "additionalUserSeats": { + "message": "ಹೆಚ್ಚುವರಿ ಬಳಕೆದಾರ ಆಸನಗಳು" + }, + "userSeatsDesc": { + "message": "# ಬಳಕೆದಾರರ ಆಸನಗಳು" + }, + "userSeatsAdditionalDesc": { + "message": "ನಿಮ್ಮ ಯೋಜನೆ $BASE_SEATS$ ಬಳಕೆದಾರ ಆಸನಗಳೊಂದಿಗೆ ಬರುತ್ತದೆ. ನೀವು ಪ್ರತಿ ಬಳಕೆದಾರರಿಗೆ / ತಿಂಗಳಿಗೆ $SEAT_PRICE$ ಗೆ ಹೆಚ್ಚುವರಿ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಬಹುದು.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "ನಿಮಗೆ ಎಷ್ಟು ಬಳಕೆದಾರ ಆಸನಗಳು ಬೇಕು? ಅಗತ್ಯವಿದ್ದರೆ ನೀವು ನಂತರ ಹೆಚ್ಚುವರಿ ಆಸನಗಳನ್ನು ಕೂಡ ಸೇರಿಸಬಹುದು." + }, + "planNameFree": { + "message": "ಉಚಿತ", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "ಪರೀಕ್ಷೆ ಅಥವಾ ವೈಯಕ್ತಿಕ ಬಳಕೆದಾರರಿಗೆ $COUNT$ ಇತರ ಬಳಕೆದಾರರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "ಕುಟುಂಬಗಳು" + }, + "planDescFamilies": { + "message": "ವೈಯಕ್ತಿಕ ಬಳಕೆಗಾಗಿ, ಕುಟುಂಬ ಮತ್ತು ಸ್ನೇಹಿತರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು." + }, + "planNameTeams": { + "message": "ತಂಡಗಳು" + }, + "planDescTeams": { + "message": "ವ್ಯವಹಾರಗಳು ಮತ್ತು ಇತರ ತಂಡದ ಸಂಸ್ಥೆಗಳಿಗೆ." + }, + "planNameEnterprise": { + "message": "ಉದ್ಯಮ" + }, + "planDescEnterprise": { + "message": "ವ್ಯವಹಾರಗಳು ಮತ್ತು ಇತರ ದೊಡ್ಡ ಸಂಸ್ಥೆಗಳಿಗೆ." + }, + "freeForever": { + "message": "ಉಚಿತ ಶಾಶ್ವತವಾಗಿ" + }, + "includesXUsers": { + "message": "$COUNT$ ಬಳಕೆದಾರರನ್ನು ಒಳಗೊಂಡಿದೆ", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "ಹೆಚ್ಚುವರಿ ಬಳಕೆದಾರರು" + }, + "costPerUser": { + "message": "ಪ್ರತಿ ಬಳಕೆದಾರರಿಗೆ $COST$", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "$COUNT$ ಬಳಕೆದಾರರಿಗೆ ಸೀಮಿತವಾಗಿದೆ (ನೀವು ಸೇರಿದಂತೆ)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "$COUNT$ ಸಂಗ್ರಹಗಳಿಗೆ ಸೀಮಿತವಾಗಿದೆ", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "$COUNT$ ಬಳಕೆದಾರರೊಂದಿಗೆ ಸೇರಿಸಿ ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಿ", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "ಅನಿಯಮಿತ ಬಳಕೆದಾರರೊಂದಿಗೆ ಸೇರಿಸಿ ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಿ" + }, + "createUnlimitedCollections": { + "message": "ಅನಿಯಮಿತ ಸಂಗ್ರಹಗಳನ್ನು ರಚಿಸಿ" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಫೈಲ್ ಸಂಗ್ರಹಣೆ", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "ಆನ್-ಪ್ರಿಮೈಸ್ ಹೋಸ್ಟಿಂಗ್ (ಐಚ್ಛಿಕ)" + }, + "usersGetPremium": { + "message": "ಬಳಕೆದಾರರು ಪ್ರೀಮಿಯಂ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯುತ್ತಾರೆ" + }, + "controlAccessWithGroups": { + "message": "ಗುಂಪುಗಳೊಂದಿಗೆ ಬಳಕೆದಾರ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಿ" + }, + "syncUsersFromDirectory": { + "message": "ಡೈರೆಕ್ಟರಿಯಿಂದ ನಿಮ್ಮ ಬಳಕೆದಾರರು ಮತ್ತು ಗುಂಪುಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಿ" + }, + "trackAuditLogs": { + "message": "ಆಡಿಟ್ ಲಾಗ್‌ಗಳೊಂದಿಗೆ ಬಳಕೆದಾರರ ಕ್ರಿಯೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ" + }, + "enforce2faDuo": { + "message": "ಡ್ಯುಯೊ ಜೊತೆ 2 ಎಫ್ಎ ಜಾರಿಗೊಳಿಸಿ" + }, + "priorityCustomerSupport": { + "message": "ಆದ್ಯತೆಯ ಗ್ರಾಹಕ ಬೆಂಬಲ" + }, + "xDayFreeTrial": { + "message": "$COUNT$ ದಿನದ ಉಚಿತ ಪ್ರಯೋಗ, ಯಾವಾಗ ಬೇಕಾದರೂ ರದ್ದುಗೊಳಿಸಿ", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "ಮಾಸಿಕ" + }, + "annually": { + "message": "ವಾರ್ಷಿಕವಾಗಿ" + }, + "basePrice": { + "message": "ಮೂಲ ದರ" + }, + "organizationCreated": { + "message": "ಸಂಸ್ಥೆ ರಚಿಸಲಾಗಿದೆ" + }, + "organizationReadyToGo": { + "message": "ನಿಮ್ಮ ಹೊಸ ಸಂಸ್ಥೆ ಹೋಗಲು ಸಿದ್ಧವಾಗಿದೆ!" + }, + "organizationUpgraded": { + "message": "ನಿಮ್ಮ ಸಂಸ್ಥೆಯನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ." + }, + "leave": { + "message": "ಬಿಡಿ" + }, + "leaveOrganizationConfirmation": { + "message": "ಈ ಸಂಸ್ಥೆಯನ್ನು ಬಿಡಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "leftOrganization": { + "message": "ನೀವು ಸಂಸ್ಥೆಯನ್ನು ತೊರೆದಿದ್ದೀರಿ." + }, + "defaultCollection": { + "message": "ಡೀಫಾಲ್ಟ್ ಸಂಗ್ರಹ" + }, + "getHelp": { + "message": "ಸಹಾಯ ಪಡೆ" + }, + "getApps": { + "message": "ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಪಡೆಯಿರಿ" + }, + "loggedInAs": { + "message": "ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪಡೆಯಿರಿ" + }, + "eventLogs": { + "message": "ಈವೆಂಟ್ ದಾಖಲೆಗಳು" + }, + "people": { + "message": "ಜನರು" + }, + "policies": { + "message": "ನೀತಿಗಳು" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "ನೀತಿಯನ್ನು ತಿದ್ದು" + }, + "groups": { + "message": "ಗುಂಪುಗಳು" + }, + "newGroup": { + "message": "ಹೊಸ ಗುಂಪು" + }, + "addGroup": { + "message": "ಗುಂಪನ್ನು ಸೇರಿಸಿ" + }, + "editGroup": { + "message": "ಗುಂಪು ಎಡಿಟ್ ಮಾಡು" + }, + "deleteGroupConfirmation": { + "message": "ಈ ಗುಂಪನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "removeUserConfirmation": { + "message": "ಈ ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "ಬಾಹ್ಯ ಐಡಿ" + }, + "externalIdDesc": { + "message": "ಬಾಹ್ಯ ಐಡಿಯನ್ನು ಉಲ್ಲೇಖವಾಗಿ ಬಳಸಬಹುದು ಅಥವಾ ಈ ಸಂಪನ್ಮೂಲವನ್ನು ಬಳಕೆದಾರರ ಡೈರೆಕ್ಟರಿಯಂತಹ ಬಾಹ್ಯ ವ್ಯವಸ್ಥೆಗೆ ಲಿಂಕ್ ಮಾಡಬಹುದು." + }, + "accessControl": { + "message": "ಪ್ರವೇಶ ನಿಯಂತ್ರಣ" + }, + "groupAccessAllItems": { + "message": "ಈ ಗುಂಪು ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಮತ್ತು ಮಾರ್ಪಡಿಸಬಹುದು." + }, + "groupAccessSelectedCollections": { + "message": "ಈ ಗುಂಪು ಆಯ್ದ ಸಂಗ್ರಹಗಳನ್ನು ಮಾತ್ರ ಪ್ರವೇಶಿಸಬಹುದು." + }, + "readOnly": { + "message": "ಓದಲು ಮಾತ್ರ" + }, + "newCollection": { + "message": "ಹೊಸ ಸಂಗ್ರಹ" + }, + "addCollection": { + "message": "ಸಂಗ್ರಹವನ್ನು ಸೇರಿಸಿ" + }, + "editCollection": { + "message": "ಸಂಗ್ರಹವನ್ನು ತಿದ್ದು" + }, + "deleteCollectionConfirmation": { + "message": "ಈ ಸಂಗ್ರಹವನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "editUser": { + "message": "ಬಳಕೆದಾರರನ್ನು ತಿದ್ದು" + }, + "inviteUser": { + "message": "ಬಳಕೆದಾರರನ್ನು ಆಹ್ವಾನಿಸಿ" + }, + "inviteUserDesc": { + "message": "ನಿಮ್ಮ ಬಳಕೆದಾರರಿಗೆ ಅವರ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಕೆಳಗೆ ನಮೂದಿಸುವ ಮೂಲಕ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಆಹ್ವಾನಿಸಿ. ಅವರು ಈಗಾಗಲೇ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಖಾತೆಯನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ, ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಲು ಅವರನ್ನು ಕೇಳಲಾಗುತ್ತದೆ." + }, + "inviteMultipleEmailDesc": { + "message": "ಇಮೇಲ್ ವಿಳಾಸಗಳ ಪಟ್ಟಿಯನ್ನು ಅಲ್ಪವಿರಾಮದಿಂದ ಬೇರ್ಪಡಿಸುವ ಮೂಲಕ ನೀವು ಒಂದು ಸಮಯದಲ್ಲಿ $COUNT$ ಬಳಕೆದಾರರನ್ನು ಆಹ್ವಾನಿಸಬಹುದು.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "ಈ ಬಳಕೆದಾರರು ತಮ್ಮ ಖಾತೆಯನ್ನು ರಕ್ಷಿಸಲು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದಾರೆ." + }, + "userAccessAllItems": { + "message": "ಈ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಮತ್ತು ಮಾರ್ಪಡಿಸಬಹುದು." + }, + "userAccessSelectedCollections": { + "message": "ಈ ಬಳಕೆದಾರರು ಆಯ್ದ ಸಂಗ್ರಹಗಳನ್ನು ಮಾತ್ರ ಪ್ರವೇಶಿಸಬಹುದು." + }, + "search": { + "message": "ಹುಡುಕಿ" + }, + "invited": { + "message": "ಆಹ್ವಾನಿಸಲಾಗಿದೆ" + }, + "accepted": { + "message": "ಸ್ವೀಕರಿಸಲಾಗಿದೆ" + }, + "confirmed": { + "message": "ದೃಢಪಡಿಸಲಾಗಿದೆ" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "ಮಾಲೀಕರು" + }, + "ownerDesc": { + "message": "ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಎಲ್ಲಾ ಅಂಶಗಳನ್ನು ನಿರ್ವಹಿಸಬಲ್ಲ ಅತ್ಯುನ್ನತ ಪ್ರವೇಶ ಬಳಕೆದಾರ." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "ಅಡ್ಮಿನ್" + }, + "adminDesc": { + "message": "ನಿರ್ವಾಹಕರು ನಿಮ್ಮ ಸಂಸ್ಥೆಯಲ್ಲಿನ ಎಲ್ಲಾ ವಸ್ತುಗಳು, ಸಂಗ್ರಹಣೆಗಳು ಮತ್ತು ಬಳಕೆದಾರರನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಮತ್ತು ನಿರ್ವಹಿಸಬಹುದು." + }, + "user": { + "message": "ಬಳಕೆದಾರ" + }, + "userDesc": { + "message": "ನಿಮ್ಮ ಸಂಸ್ಥೆಯಲ್ಲಿ ನಿಯೋಜಿಸಲಾದ ಸಂಗ್ರಹಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುವ ಸಾಮಾನ್ಯ ಬಳಕೆದಾರ." + }, + "manager": { + "message": "ವ್ಯವಸ್ಥಾಪಕ" + }, + "managerDesc": { + "message": "ನಿಮ್ಮ ಸಂಸ್ಥೆಯಲ್ಲಿ ನಿಯೋಜಿತ ಸಂಗ್ರಹಣೆಯನ್ನು ವ್ಯವಸ್ಥಾಪಕರು ಪ್ರವೇಶಿಸಬಹುದು ಮತ್ತು ನಿರ್ವಹಿಸಬಹುದು." + }, + "all": { + "message": "ಎಲ್ಲಾ" + }, + "refresh": { + "message": "ರಿಫ್ರೆಶ್" + }, + "timestamp": { + "message": "ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್" + }, + "event": { + "message": "ಈವೆಂಟ್‌" + }, + "unknown": { + "message": "ಅಪರಿಚಿತ" + }, + "loadMore": { + "message": "ಇನ್ನಷ್ಟು ಲೋಡ್ ಮಾಡಿ" + }, + "mobile": { + "message": "ಮೊಬೈಲ್", + "description": "Mobile app" + }, + "extension": { + "message": "ವಿಸ್ತರಣೆ", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "ಡೆಸ್ಕ್‌ಟಾಪ್", + "description": "Desktop app" + }, + "webVault": { + "message": "ವೆಬ್ ವಾಲ್ಟ್" + }, + "loggedIn": { + "message": "ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ." + }, + "changedPassword": { + "message": "ಖಾತೆಯ ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಲಾಗಿದೆ." + }, + "enabledUpdated2fa": { + "message": "ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ / ನವೀಕರಿಸಲಾಗಿದೆ." + }, + "disabled2fa": { + "message": "ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ." + }, + "recovered2fa": { + "message": "ಎರಡು-ಹಂತದ ಲಾಗಿನ್‌ನಿಂದ ಖಾತೆಯನ್ನು ಮರುಪಡೆಯಲಾಗಿದೆ." + }, + "failedLogin": { + "message": "ತಪ್ಪಾದ ಪಾಸ್‌ವರ್ಡ್‌ನೊಂದಿಗೆ ಲಾಗಿನ್ ಪ್ರಯತ್ನ ವಿಫಲವಾಗಿದೆ." + }, + "failedLogin2fa": { + "message": "ತಪ್ಪಾದ ಎರಡು-ಹಂತದ ಲಾಗಿನ್‌ನೊಂದಿಗೆ ಲಾಗಿನ್ ಪ್ರಯತ್ನ ವಿಫಲವಾಗಿದೆ." + }, + "exportedVault": { + "message": "ರಫ್ತು ಮಾಡಿದ ವಾಲ್ಟ್." + }, + "exportedOrganizationVault": { + "message": "ರಫ್ತು ಮಾಡಿದ ಸಂಸ್ಥೆ ವಾಲ್ಟ್." + }, + "editedOrgSettings": { + "message": "ರಫ್ತು ಮಾಡಿದ ಸಂಸ್ಥೆ ವಾಲ್ಟ್." + }, + "createdItemId": { + "message": "ಐಟಂ $ID$ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "ಐಟಂ $ID$ ಅನ್ನು ಸಂಪಾದಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "ಐಟಂ $ID$ಅನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "ಐಟಂ $ID$ ಅನ್ನು ಸಂಸ್ಥೆಗೆ ಸರಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "ವೀಕ್ಷಿಸಿದ ಐಟಂ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "ಐಟಂ$ID$ ಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್ ವೀಕ್ಷಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "ಐಟಂ $ID$ ಗಾಗಿ ಮರೆಮಾಡಿದ ಕ್ಷೇತ್ರವನ್ನು ವೀಕ್ಷಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "ಐಟಂ $ID$ ಗಾಗಿ ಭದ್ರತಾ ಕೋಡ್ ವೀಕ್ಷಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "ಐಟಂ $ID$ ಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಕಲಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "ಐಟಂ $ID$ ಗಾಗಿ ಗುಪ್ತ ಕ್ಷೇತ್ರವನ್ನು ನಕಲಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "ಐಟಂ$ID$ ಗಾಗಿ ಭದ್ರತಾ ಕೋಡ್ ಅನ್ನು ನಕಲಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "ಸ್ವಯಂ ತುಂಬಿದ ಐಟಂ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "ಸಂಗ್ರಹ $ID$ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "ಸಂಗ್ರಹಣೆ ಸಂಪಾದನೆ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "ಸಂಗ್ರಹವನ್ನು ಅಳಿಸಲಾಗಿದೆ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "ನೀತಿ ಸಂಪಾದಿಸಲಾಗಿದೆ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "ಗುಂಪು $ID$ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "ಗುಂಪು $ID$ ಅನ್ನು ಸಂಪಾದಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "ಅಳಿಸಿದ ಗುಂಪು $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "ತೆಗೆದುಹಾಕಲಾದ ಬಳಕೆದಾರ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "ಐಟಂ $ID$ ಗಾಗಿ ಲಗತ್ತನ್ನು ರಚಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "ಐಟಂ $ID$ ಗಾಗಿ ಲಗತ್ತಿಸಲಾದ ಅಳಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "ಐಟಂ $ID$ ಗಾಗಿ ಸಂಗ್ರಹಗಳನ್ನು ಸಂಪಾದಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "ಆಹ್ವಾನಿತ ಬಳಕೆದಾರ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "ದೃಢೀಕರಿಸಿದ ಬಳಕೆದಾರ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "ತಿದ್ಸಿದ ಬಳಕೆದಾರ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "ಬಳಕೆದಾರ $ID$ ಗಾಗಿ ಗುಂಪುಗಳನ್ನು ತಿದ್ಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "ಬಳಕೆದಾರ $ID$ ಗಾಗಿ ಲಿಂಕ್ ಮಾಡದ SSO.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "ಡಿವೈಸ್" + }, + "view": { + "message": "ವೀಕ್ಷಣೆ" + }, + "invalidDateRange": { + "message": "ಅಮಾನ್ಯ ದಿನಾಂಕ ಶ್ರೇಣಿ." + }, + "errorOccurred": { + "message": "ದೋಷ ಸಂಭವಿಸಿದೆ." + }, + "userAccess": { + "message": "ಬಳಕೆದಾರ ಪ್ರವೇಶ" + }, + "userType": { + "message": "ಬಳಕೆದಾರ ವಿಧ" + }, + "groupAccess": { + "message": "ಗುಂಪು ಪ್ರವೇಶ" + }, + "groupAccessUserDesc": { + "message": "ಈ ಬಳಕೆದಾರರು ಸೇರಿರುವ ಗುಂಪುಗಳನ್ನು ಸಂಪಾದಿಸಿ." + }, + "invitedUsers": { + "message": "ಆಹ್ವಾನಿತ ಬಳಕೆದಾರ (ಗಳು)." + }, + "resendInvitation": { + "message": "ಆಹ್ವಾನವನ್ನು ಮರುಹೊಂದಿಸಿ" + }, + "resendEmail": { + "message": "ಇಮೇಲ್‌ ಮತ್ತೊಮ್ಮೆ ಕಳುಹಿಸಿ" + }, + "hasBeenReinvited": { + "message": "$USER$ ಅನ್ನು ಮರುಸೃಷ್ಟಿಸಲಾಗಿದೆ.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "ದೃಢೀಕರಿಸಿ" + }, + "confirmUser": { + "message": "ಬಳಕೆದಾರರನ್ನು ದೃಢೀಕರಿಸಿ" + }, + "hasBeenConfirmed": { + "message": "$USER$ ಅನ್ನು ದೃಢಪಡಿಸಲಾಗಿದೆ.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "ಬಳಕೆದಾರರನ್ನು ದೃಢೀಕರಿಸಿ" + }, + "usersNeedConfirmed": { + "message": "ಅವರ ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಿದ ಬಳಕೆದಾರರನ್ನು ನೀವು ಹೊಂದಿದ್ದೀರಿ, ಆದರೆ ಇನ್ನೂ ದೃಢೀಕರಿಸಬೇಕಾಗಿದೆ. ಬಳಕೆದಾರರು ದೃಢೀಕರಿಸುವವರೆಗೂ ಸಂಸ್ಥೆಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ." + }, + "startDate": { + "message": "ಪ್ರಾರಂಭ ದಿನಾಂಕ" + }, + "endDate": { + "message": "ಕೊನೆಯಾದ ದಿನಾಂಕ" + }, + "verifyEmail": { + "message": "ಇಮೇಲ್ ಪರಿಶೀಲಿಸಿ" + }, + "verifyEmailDesc": { + "message": "ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು ನಿಮ್ಮ ಖಾತೆಯ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಿ." + }, + "verifyEmailFirst": { + "message": "ನಿಮ್ಮ ಖಾತೆಯ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಮೊದಲು ಪರಿಶೀಲಿಸಬೇಕು." + }, + "checkInboxForVerification": { + "message": "ಪರಿಶೀಲನೆ ಲಿಂಕ್‌ಗಾಗಿ ನಿಮ್ಮ ಇಮೇಲ್ ಇನ್‌ಬಾಕ್ಸ್ ಪರಿಶೀಲಿಸಿ." + }, + "emailVerified": { + "message": "ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿದೆ." + }, + "emailVerifiedFailed": { + "message": "ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಹೊಸ ಪರಿಶೀಲನೆ ಇಮೇಲ್ ಕಳುಹಿಸಲು ಪ್ರಯತ್ನಿಸಿ." + }, + "emailVerificationRequired": { + "message": "ಇಮೇಲ್ ಪರಿಶೀಲನೆ ಅಗತ್ಯವಿದೆ" + }, + "emailVerificationRequiredDesc": { + "message": "ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬೇಕು." + }, + "updateBrowser": { + "message": "ಬ್ರೌಸರ್ ನವೀಕರಿಸಿ" + }, + "updateBrowserDesc": { + "message": "ನೀವು ಬೆಂಬಲಿಸದ ವೆಬ್ ಬ್ರೌಸರ್ ಅನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ. ವೆಬ್ ವಾಲ್ಟ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರಬಹುದು." + }, + "joinOrganization": { + "message": "ಸಂಸ್ಥೆಗೆ ಸೇರಿ" + }, + "joinOrganizationDesc": { + "message": "ಮೇಲೆ ಪಟ್ಟಿ ಮಾಡಲಾದ ಸಂಸ್ಥೆಗೆ ಸೇರಲು ನಿಮ್ಮನ್ನು ಆಹ್ವಾನಿಸಲಾಗಿದೆ. ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಲು, ನೀವು ಲಾಗ್ ಇನ್ ಆಗಬೇಕು ಅಥವಾ ಹೊಸ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆಯನ್ನು ರಚಿಸಬೇಕು." + }, + "inviteAccepted": { + "message": "ಆಮಂತ್ರಣವನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ" + }, + "inviteAcceptedDesc": { + "message": "ನಿರ್ವಾಹಕರು ನಿಮ್ಮ ಸದಸ್ಯತ್ವವನ್ನು ಖಚಿತಪಡಿಸಿದ ನಂತರ ನೀವು ಈ ಸಂಸ್ಥೆಯನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಅದು ಸಂಭವಿಸಿದಾಗ ನಾವು ನಿಮಗೆ ಇಮೇಲ್ ಕಳುಹಿಸುತ್ತೇವೆ." + }, + "inviteAcceptFailed": { + "message": "ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಹೊಸ ಆಹ್ವಾನವನ್ನು ಕಳುಹಿಸಲು ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರನ್ನು ಕೇಳಿ." + }, + "inviteAcceptFailedShort": { + "message": "ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "ಇಮೇಲ್ ನೆನಪಿಡಿ" + }, + "recoverAccountTwoStepDesc": { + "message": "ನಿಮ್ಮ ಸಾಮಾನ್ಯ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ವಿಧಾನಗಳ ಮೂಲಕ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ನಿಮ್ಮ ಖಾತೆಯ ಎಲ್ಲಾ ಎರಡು-ಹಂತದ ಪೂರೈಕೆದಾರರನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನಿಮ್ಮ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್ ಅನ್ನು ನೀವು ಬಳಸಬಹುದು." + }, + "recoverAccountTwoStep": { + "message": "ಖಾತೆಯನ್ನು ಮರುಪಡೆಯಿರಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್" + }, + "twoStepRecoverDisabled": { + "message": "ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿ ಎರಡು ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ." + }, + "learnMore": { + "message": "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ" + }, + "deleteRecoverDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಮರುಪಡೆಯಲು ಮತ್ತು ಅಳಿಸಲು ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಕೆಳಗೆ ನಮೂದಿಸಿ." + }, + "deleteRecoverEmailSent": { + "message": "ನಿಮ್ಮ ಖಾತೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ, ಹೆಚ್ಚಿನ ಸೂಚನೆಗಳೊಂದಿಗೆ ನಾವು ನಿಮಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿದ್ದೇವೆ." + }, + "deleteRecoverConfirmDesc": { + "message": "ನಿಮ್ಮ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆಯನ್ನು ಅಳಿಸಲು ನೀವು ವಿನಂತಿಸಿದ್ದೀರಿ. ಖಚಿತಪಡಿಸಲು ಕೆಳಗಿನ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ." + }, + "myOrganization": { + "message": "ನನ್ನ ಸಂಸ್ಥೆ" + }, + "deleteOrganization": { + "message": "ಸಂಸ್ಥೆಯನ್ನು ಅಳಿಸಿ" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "ಸಂಸ್ಥೆ ಅಳಿಸಲಾಗಿದೆ" + }, + "organizationDeletedDesc": { + "message": "ಸಂಸ್ಥೆ ಮತ್ತು ಎಲ್ಲಾ ಸಂಬಂಧಿತ ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗಿದೆ." + }, + "organizationUpdated": { + "message": "ಸಂಸ್ಥೆ ನವೀಕರಿಸಲಾಗಿದೆ" + }, + "taxInformation": { + "message": "ತೆರಿಗೆ ಮಾಹಿತಿ" + }, + "taxInformationDesc": { + "message": "ಯುಎಸ್ನೊಳಗಿನ ಗ್ರಾಹಕರಿಗೆ, ಮಾರಾಟ ತೆರಿಗೆ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸಲು ಪಿನ್ ಕೋಡ್ ಅಗತ್ಯವಿದೆ, ಇತರ ದೇಶಗಳಿಗೆ ನೀವು ಐಚ್ಛಿಕವಾಗಿ ತೆರಿಗೆ ಗುರುತಿನ ಸಂಖ್ಯೆ (ವ್ಯಾಟ್ / ಜಿಎಸ್ಟಿ) ಮತ್ತು / ಅಥವಾ ನಿಮ್ಮ ಇನ್ವಾಯ್ಸ್ಗಳಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಲು ವಿಳಾಸವನ್ನು ಒದಗಿಸಬಹುದು." + }, + "billingPlan": { + "message": "ಯೋಜನೆ", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "ಯೋಜನೆಯನ್ನು ಬದಲಾಯಿಸಿ", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "ಕೆಳಗಿನ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಮತ್ತೊಂದು ಯೋಜನೆಗೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿ. ನೀವು ಖಾತೆಗೆ ಸಕ್ರಿಯ ಪಾವತಿ ವಿಧಾನವನ್ನು ಸೇರಿಸಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "ಸರಕುಪಟ್ಟಿ #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "ಸರಕುಪಟ್ಟಿ ವೀಕ್ಷಿಸಿ" + }, + "downloadInvoice": { + "message": "ಸರಕುಪಟ್ಟಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ" + }, + "verifyBankAccount": { + "message": "ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ" + }, + "verifyBankAccountDesc": { + "message": "ನಿಮ್ಮ ಬ್ಯಾಂಕ್ ಖಾತೆಗೆ ನಾವು ಎರಡು ಮೈಕ್ರೋ-ಠೇವಣಿಗಳನ್ನು ಮಾಡಿದ್ದೇವೆ (ಅದನ್ನು ತೋರಿಸಲು 1-2 ವ್ಯವಹಾರ ದಿನಗಳು ತೆಗೆದುಕೊಳ್ಳಬಹುದು). ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಈ ಮೊತ್ತವನ್ನು ನಮೂದಿಸಿ." + }, + "verifyBankAccountInitialDesc": { + "message": "ಬ್ಯಾಂಕ್ ಖಾತೆಯೊಂದಿಗೆ ಪಾವತಿ ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ನ ಗ್ರಾಹಕರಿಗೆ ಮಾತ್ರ ಲಭ್ಯವಿದೆ. ನಿಮ್ಮ ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ನೀವು ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿದೆ. ಮುಂದಿನ 1-2 ವ್ಯವಹಾರ ದಿನಗಳಲ್ಲಿ ನಾವು ಎರಡು ಮೈಕ್ರೋ-ಠೇವಣಿ ಮಾಡುತ್ತೇವೆ. ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಂಸ್ಥೆಯ ಬಿಲ್ಲಿಂಗ್ ಪುಟದಲ್ಲಿ ಈ ಮೊತ್ತವನ್ನು ನಮೂದಿಸಿ." + }, + "verifyBankAccountFailureWarning": { + "message": "ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸುವಲ್ಲಿ ವಿಫಲವಾದರೆ ಪಾವತಿ ತಪ್ಪಿಹೋಗುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಚಂದಾದಾರಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ." + }, + "verifiedBankAccount": { + "message": "ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿದೆ." + }, + "bankAccount": { + "message": "ಬ್ಯಾಂಕ್ ಖಾತೆ" + }, + "amountX": { + "message": "ಮೊತ್ತ $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "ರೂಟಿಂಗ್ ಸಂಖ್ಯೆ", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "ಖಾತೆ ಸಂಖ್ಯೆ" + }, + "accountHolderName": { + "message": "ಖಾತೆದಾರನ ಹೆಸರು" + }, + "bankAccountType": { + "message": "ಅಕೌಂಟ್ ಪ್ರಕಾರ" + }, + "bankAccountTypeCompany": { + "message": "ಕಂಪನಿ (ವ್ಯವಹಾರ)" + }, + "bankAccountTypeIndividual": { + "message": "ವೈಯಕ್ತಿಕ (ವೈಯಕ್ತಿಕ)" + }, + "enterInstallationId": { + "message": "ನಿಮ್ಮ ಸ್ಥಾಪನಾ ಐಡಿಯನ್ನು ನಮೂದಿಸಿ" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "ಆಸನಗಳನ್ನು ಸೇರಿಸಿ", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "ಆಸನಗಳನ್ನು ತೆಗೆದುಹಾಕಿ", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "ನಿಮ್ಮ ಚಂದಾದಾರಿಕೆ ಒಟ್ಟು $COUNT$ ಬಳಕೆದಾರರಿಗೆ ಅನುಮತಿಸುತ್ತದೆ.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "ಸೇರಿಸಲು ಆಸನಗಳು" + }, + "seatsToRemove": { + "message": "ತೆಗೆದುಹಾಕಲು ಆಸನಗಳು" + }, + "seatsAddNote": { + "message": "ಬಳಕೆದಾರರ ಆಸನಗಳನ್ನು ಸೇರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ಮೊತ್ತಕ್ಕೆ ಹೊಂದಾಣಿಕೆ ಉಂಟಾಗುತ್ತದೆ ಮತ್ತು ತಕ್ಷಣ ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನವನ್ನು ಫೈಲ್‌ನಲ್ಲಿ ಚಾರ್ಜ್ ಮಾಡುತ್ತದೆ. ಪ್ರಸ್ತುತ ಬಿಲ್ಲಿಂಗ್ ಚಕ್ರದ ಉಳಿದ ಭಾಗಕ್ಕೆ ಮೊದಲ ಶುಲ್ಕವನ್ನು ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ." + }, + "seatsRemoveNote": { + "message": "ಬಳಕೆದಾರರ ಆಸನಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ಮೊತ್ತಕ್ಕೆ ಹೊಂದಾಣಿಕೆಗಳು ಉಂಟಾಗುತ್ತವೆ, ಅದು ನಿಮ್ಮ ಮುಂದಿನ ಬಿಲ್ಲಿಂಗ್ ಶುಲ್ಕದ ಕ್ರೆಡಿಟ್‌ಗಳಾಗಿ ಸಾಬೀತಾಗುತ್ತದೆ." + }, + "adjustedSeats": { + "message": "$AMOUNT$ ಬಳಕೆದಾರರ ಆಸನಗಳನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "ಕೀ ನವೀಕರಿಸಲಾಗಿದೆ" + }, + "updateKeyTitle": { + "message": "ಕೀ ನವೀಕರಿಸಿ" + }, + "updateEncryptionKey": { + "message": "ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸಿ" + }, + "updateEncryptionKeyShortDesc": { + "message": "ನೀವು ಪ್ರಸ್ತುತ ಹಳತಾದ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಯೋಜನೆಯನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ." + }, + "updateEncryptionKeyDesc": { + "message": "ಉತ್ತಮ ಸುರಕ್ಷತೆ ಮತ್ತು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುವ ದೊಡ್ಡ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಗಳಿಗೆ ನಾವು ಸರಿಸಿದ್ದೇವೆ. ನಿಮ್ಮ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸುವುದು ತ್ವರಿತ ಮತ್ತು ಸುಲಭ. ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಕೆಳಗೆ ಟೈಪ್ ಮಾಡಿ. ಈ ನವೀಕರಣವು ಅಂತಿಮವಾಗಿ ಕಡ್ಡಾಯವಾಗುತ್ತದೆ." + }, + "updateEncryptionKeyWarning": { + "message": "ನಿಮ್ಮ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸಿದ ನಂತರ, ನೀವು ಪ್ರಸ್ತುತ ಬಳಸುತ್ತಿರುವ (ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ ಅಥವಾ ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳಂತಹ) ಎಲ್ಲಾ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ನೀವು ಲಾಗ್ ಔಟ್ ಮತ್ತು ಬ್ಯಾಕ್ ಇನ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಲಾಗ್ and ಟ್ ಮಾಡಲು ಮತ್ತು ಹಿಂತಿರುಗಲು ವಿಫಲವಾದರೆ (ಅದು ನಿಮ್ಮ ಹೊಸ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ) ಡೇಟಾ ಭ್ರಷ್ಟಾಚಾರಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ನಾವು ನಿಮ್ಮನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಗ್ ಔಟ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ, ಆದಾಗ್ಯೂ, ಇದು ವಿಳಂಬವಾಗಬಹುದು." + }, + "updateEncryptionKeyExportWarning": { + "message": "ನೀವು ಉಳಿಸಿದ ಯಾವುದೇ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ರಫ್ತು ಸಹ ಅಮಾನ್ಯವಾಗುತ್ತದೆ." + }, + "subscription": { + "message": "ಚಂದಾದಾರಿಕೆ" + }, + "loading": { + "message": "ಲೋಡ್‌ಆಗುತ್ತಿದೆ" + }, + "upgrade": { + "message": "ನವೀಕರಿಸಿ" + }, + "upgradeOrganization": { + "message": "ಸಂಘಟನೆಯನ್ನು ನವೀಕರಿಸಿ" + }, + "upgradeOrganizationDesc": { + "message": "ಉಚಿತ ಸಂಸ್ಥೆಗಳಿಗೆ ಈ ವೈಶಿಷ್ಟ್ಯವು ಲಭ್ಯವಿಲ್ಲ. ಹೆಚ್ಚಿನ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು ಪಾವತಿಸಿದ ಯೋಜನೆಗೆ ಬದಲಿಸಿ." + }, + "createOrganizationStep1": { + "message": "ಸಂಘಟನೆಯನ್ನು ರಚಿಸಿ: ಹಂತ 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "ನಿಮ್ಮ ಸಂಸ್ಥೆಯನ್ನು ರಚಿಸುವ ಮೊದಲು, ನೀವು ಮೊದಲು ಉಚಿತ ವೈಯಕ್ತಿಕ ಖಾತೆಯನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ." + }, + "refunded": { + "message": "ಮರುಪಾವತಿ ಮಾಡಲಾಗಿದೆ" + }, + "nothingSelected": { + "message": "ನೀವು ಯಾವುದನ್ನೂ ಆಯ್ಕೆ ಮಾಡಿಲ್ಲ." + }, + "acceptPolicies": { + "message": "ಈ ಪೆಟ್ಟಿಗೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ನೀವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒಪ್ಪುತ್ತೀರಿ:" + }, + "acceptPoliciesError": { + "message": "ಸೇವಾ ನಿಯಮಗಳು ಮತ್ತು ಗೌಪ್ಯತೆ ನೀತಿಯನ್ನು ಅಂಗೀಕರಿಸಲಾಗಿಲ್ಲ." + }, + "termsOfService": { + "message": "ಸೇವಾ ನಿಯಮಗಳು" + }, + "privacyPolicy": { + "message": "ಗೌಪ್ಯತಾ ನೀತಿ" + }, + "filters": { + "message": "ಶೋಧಕಗಳು" + }, + "vaultTimeout": { + "message": "ವಾಲ್ಟ್ ಕಾಲಾವಧಿ" + }, + "vaultTimeoutDesc": { + "message": "ನಿಮ್ಮ ಕಮಾನು ಸಮಯ ಮೀರಲಿ ಮತ್ತು ಆಯ್ದ ಕ್ರಮವನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಆರಿಸಿಕೊಳ್ಳಿ." + }, + "oneMinute": { + "message": "೧ ನಿಮಿಷ" + }, + "fiveMinutes": { + "message": "೫ ನಿಮಿಷಗಳು" + }, + "fifteenMinutes": { + "message": "೧೫ ನಿಮಿಷಗಳು" + }, + "thirtyMinutes": { + "message": "30 ನಿಮಿಷಗಳು" + }, + "oneHour": { + "message": "೧ ಗಂಟೆ" + }, + "fourHours": { + "message": "೪ ಗಂಟೆಗಳು" + }, + "onRefresh": { + "message": "ಬ್ರೌಸರ್ ರಿಫ್ರೆಶ್‌ನಲ್ಲಿ" + }, + "dateUpdated": { + "message": "ನವೀಕರಿಸಲಾಗಿದೆ", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "ಪಾಸ್ವರ್ಡ್ ನವೀಕರಿಸಲಾಗಿದೆ", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "ಸಂಘಟನೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ." + }, + "licenseIsExpired": { + "message": "ಪರವಾನಗಿ ಅವಧಿ ಮೀರಿದೆ." + }, + "updatedUsers": { + "message": "ನವೀಕರಿಸಿದ ಬಳಕೆದಾರರು" + }, + "selected": { + "message": "ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ" + }, + "ownership": { + "message": "ಮಾಲೀಕತ್ವ" + }, + "whoOwnsThisItem": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಯಾರು ಹೊಂದಿದ್ದಾರೆ?" + }, + "strong": { + "message": "ಬಲಶಾಲಿ", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "ಒಳ್ಳೆಯ", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "ದುರ್ಬಲ", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "ಅತ್ಯಂತ ದುರ್ಬಲ", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "ದುರ್ಬಲ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್" + }, + "weakMasterPasswordDesc": { + "message": "ನೀವು ಆಯ್ಕೆ ಮಾಡಿದ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ದುರ್ಬಲವಾಗಿದೆ. ನಿಮ್ಮ ಬಿಟ್ವರ್ಡ್ ಖಾತೆಯನ್ನು ಸರಿಯಾಗಿ ರಕ್ಷಿಸಲು ನೀವು ಬಲವಾದ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ (ಅಥವಾ ಪಾಸ್ಫ್ರೇಸ್) ಅನ್ನು ಬಳಸಬೇಕು. ಈ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನೀವು ಬಳಸಲು ಬಯಸುತ್ತೀರಾ?" + }, + "rotateAccountEncKey": { + "message": "ನನ್ನ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ಸಹ ತಿರುಗಿಸಿ" + }, + "rotateEncKeyTitle": { + "message": "ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ತಿರುಗಿಸಿ" + }, + "rotateEncKeyConfirmation": { + "message": "ನಿಮ್ಮ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ತಿರುಗಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "attachmentsNeedFix": { + "message": "ಈ ಐಟಂ ಹಳೆಯ ಫೈಲ್ ಲಗತ್ತುಗಳನ್ನು ಹೊಂದಿದ್ದು ಅದನ್ನು ಸರಿಪಡಿಸಬೇಕಾಗಿದೆ." + }, + "attachmentFixDesc": { + "message": "ಇದು ಸರಿಪಡಿಸಬೇಕಾದ ಹಳೆಯ ಫೈಲ್ ಲಗತ್ತು. ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಕ್ಲಿಕ್ ಮಾಡಿ." + }, + "fix": { + "message": "ಹೊಂದಿಸು", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಹಳೆಯ ಫೈಲ್ ಲಗತ್ತುಗಳಿವೆ, ಅದನ್ನು ನಿಮ್ಮ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ತಿರುಗಿಸುವ ಮೊದಲು ಸರಿಪಡಿಸಬೇಕಾಗಿದೆ." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "ಉಚಿತ", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API ಕೀಲಿ" + }, + "apiKeyDesc": { + "message": "ನಿಮ್ಮ API ಕೀಲಿಯನ್ನು ಬಿಟ್‌ವಾರ್ಡೆನ್ ಸಾರ್ವಜನಿಕ API ಗೆ ದೃಢೀಕರಿಸಲು ಬಳಸಬಹುದು." + }, + "apiKeyRotateDesc": { + "message": "API ಕೀಲಿಯನ್ನು ತಿರುಗಿಸುವುದರಿಂದ ಹಿಂದಿನ ಕೀಲಿಯನ್ನು ಅಮಾನ್ಯಗೊಳಿಸುತ್ತದೆ. ಪ್ರಸ್ತುತ ಕೀಲಿಯು ಇನ್ನು ಮುಂದೆ ಸುರಕ್ಷಿತವಲ್ಲ ಎಂದು ನೀವು ಭಾವಿಸಿದರೆ ನಿಮ್ಮ API ಕೀಲಿಯನ್ನು ನೀವು ತಿರುಗಿಸಬಹುದು." + }, + "apiKeyWarning": { + "message": "ನಿಮ್ಮ API ಕೀ ಸಂಸ್ಥೆಗೆ ಪೂರ್ಣ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ. ಅದನ್ನು ರಹಸ್ಯವಾಗಿಡಬೇಕು." + }, + "userApiKeyDesc": { + "message": "ನಿಮ್ಮ API ಕೀಲಿಯನ್ನು ಬಿಟ್‌ವಾರ್ಡನ್ CLI ನಲ್ಲಿ ದೃಢೀಕರಿಸಲು ಬಳಸಬಹುದು." + }, + "userApiKeyWarning": { + "message": "ನಿಮ್ಮ API ಕೀ ಪರ್ಯಾಯ ದೃಢೀಕರಣ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ. ಅದನ್ನು ರಹಸ್ಯವಾಗಿಡಬೇಕು." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 ಕ್ಲೈಂಟ್ ರುಜುವಾತುಗಳು", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API ಕೀಲಿಯನ್ನು ವೀಕ್ಷಿಸಿ" + }, + "rotateApiKey": { + "message": "API ಕೀಲಿಯನ್ನು ತಿರುಗಿಸಿ" + }, + "selectOneCollection": { + "message": "ನೀವು ಕನಿಷ್ಠ ಒಂದು ಸಂಗ್ರಹವನ್ನು ಆರಿಸಬೇಕು." + }, + "couldNotChargeCardPayInvoice": { + "message": "ನಿಮ್ಮ ಕಾರ್ಡ್ ಅನ್ನು ಚಾರ್ಜ್ ಮಾಡಲು ನಮಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದಯವಿಟ್ಟು ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾದ ಪಾವತಿಸದ ಸರಕುಪಟ್ಟಿ ವೀಕ್ಷಿಸಿ ಮತ್ತು ಪಾವತಿಸಿ." + }, + "inAppPurchase": { + "message": "ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಖರೀದಿ" + }, + "cannotPerformInAppPurchase": { + "message": "ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಖರೀದಿ ಪಾವತಿ ವಿಧಾನವನ್ನು ಬಳಸುವಾಗ ನೀವು ಈ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." + }, + "manageSubscriptionFromStore": { + "message": "ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಖರೀದಿಸಿದ ಅಂಗಡಿಯಿಂದ ನಿಮ್ಮ ಚಂದಾದಾರಿಕೆಯನ್ನು ನೀವು ನಿರ್ವಹಿಸಬೇಕು." + }, + "minLength": { + "message": "ಕನಿಷ್ಠ ಉದ್ದ" + }, + "clone": { + "message": "ಕ್ಲೋನ್" + }, + "masterPassPolicyDesc": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಶಕ್ತಿಗಾಗಿ ಕನಿಷ್ಠ ಅವಶ್ಯಕತೆಗಳನ್ನು ಹೊಂದಿಸಿ." + }, + "twoStepLoginPolicyDesc": { + "message": "ಬಳಕೆದಾರರು ತಮ್ಮ ವೈಯಕ್ತಿಕ ಖಾತೆಗಳಲ್ಲಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಹೊಂದಿಸಲು ಅಗತ್ಯವಿದೆ." + }, + "twoStepLoginPolicyWarning": { + "message": "ಮಾಲೀಕರು ಅಥವಾ ನಿರ್ವಾಹಕರಲ್ಲದ ಮತ್ತು ಅವರ ವೈಯಕ್ತಿಕ ಖಾತೆಗಾಗಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸದ ಸಂಸ್ಥೆಯ ಸದಸ್ಯರನ್ನು ಸಂಸ್ಥೆಯಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ ಮತ್ತು ಬದಲಾವಣೆಯ ಬಗ್ಗೆ ಅವರಿಗೆ ತಿಳಿಸುವ ಇಮೇಲ್ ಅನ್ನು ಸ್ವೀಕರಿಸಲಾಗುತ್ತದೆ." + }, + "twoStepLoginPolicyUserWarning": { + "message": "ನಿಮ್ಮ ಬಳಕೆದಾರ ಖಾತೆಯಲ್ಲಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಅಗತ್ಯವಿರುವ ಸಂಸ್ಥೆಯ ಸದಸ್ಯರಾಗಿದ್ದೀರಿ. ನೀವು ಎಲ್ಲಾ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಪೂರೈಕೆದಾರರನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ ನಿಮ್ಮನ್ನು ಈ ಸಂಸ್ಥೆಗಳಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ." + }, + "passwordGeneratorPolicyDesc": { + "message": "ಪಾಸ್ವರ್ಡ್ ಜನರೇಟರ್ ಕಾನ್ಫಿಗರೇಶನ್ಗಾಗಿ ಕನಿಷ್ಠ ಅವಶ್ಯಕತೆಗಳನ್ನು ಹೊಂದಿಸಿ." + }, + "passwordGeneratorPolicyInEffect": { + "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": "ನಿಮ್ಮ ಹೊಸ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ನೀತಿಯ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸುವುದಿಲ್ಲ." + }, + "minimumNumberOfWords": { + "message": "ಪದಗಳ ಕನಿಷ್ಠ ಸಂಖ್ಯೆ" + }, + "defaultType": { + "message": "ಡೀಫಾಲ್ಟ್ ಪ್ರಕಾರ" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "ಅನುಪಯುಕ್ತವನ್ನು ಹುಡುಕಿ" + }, + "permanentlyDelete": { + "message": "ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಿ" + }, + "permanentlyDeleteSelected": { + "message": "ಆಯ್ದವನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಿ" + }, + "permanentlyDeleteItem": { + "message": "ಐಟಂ ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಿ" + }, + "permanentlyDeleteItemConfirmation": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "permanentlyDeletedItem": { + "message": "ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾದ ಐಟಂ" + }, + "permanentlyDeletedItems": { + "message": "ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾದ ವಸ್ತುಗಳು" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲು ನೀವು $COUNT$ ಐಟಂ (ಗಳನ್ನು) ಆಯ್ಕೆ ಮಾಡಿದ್ದೀರಿ. ಈ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾದ ಐಟಂ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "ಪುನಸ್ಥಾಪಿಸಿ" + }, + "restoreSelected": { + "message": "ಆಯ್ಕೆಮಾಡಿ ಮರುಸ್ಥಾಪಿಸಿ" + }, + "restoreItem": { + "message": "ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಿ" + }, + "restoredItem": { + "message": "ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗಿದೆ" + }, + "restoredItems": { + "message": "ವಸ್ತುಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗಿದೆ" + }, + "restoreItemConfirmation": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "restoreItems": { + "message": "ವಸ್ತುಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸಿ" + }, + "restoreSelectedItemsDesc": { + "message": "ಪುನಃಸ್ಥಾಪಿಸಲು ನೀವು $COUNT$ ಐಟಂ (ಗಳನ್ನು) ಆಯ್ಕೆ ಮಾಡಿದ್ದೀರಿ. ಈ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಪುನಃಸ್ಥಾಪಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "ಐಟಂ $ID$ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ಲಾಗ್ ಔಟ್ ಆಗುವುದರಿಂದ ನಿಮ್ಮ ವಾಲ್ಟ್‌ನ ಎಲ್ಲಾ ಪ್ರವೇಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ ಮತ್ತು ಕಾಲಾವಧಿ ಅವಧಿಯ ನಂತರ ಆನ್‌ಲೈನ್ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬಳಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "ಕಾಲಾವಧಿ ಕ್ರಿಯೆಯ ದೃಢೀಕರಣ" + }, + "hidePasswords": { + "message": "ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಮರೆಮಾಡಿ" + }, + "countryPostalCodeRequiredDesc": { + "message": "ಮಾರಾಟ ತೆರಿಗೆ ಮತ್ತು ಹಣಕಾಸು ವರದಿಯನ್ನು ಮಾತ್ರ ಲೆಕ್ಕಹಾಕಲು ನಮಗೆ ಈ ಮಾಹಿತಿಯ ಅಗತ್ಯವಿದೆ." + }, + "includeVAT": { + "message": "ವ್ಯಾಟ್ / ಜಿಎಸ್ಟಿ ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸಿ (ಐಚ್ಛಿಕ)" + }, + "taxIdNumber": { + "message": "ವ್ಯಾಟ್ / ಜಿಎಸ್ಟಿ ತೆರಿಗೆ ಐಡಿ" + }, + "taxInfoUpdated": { + "message": "ತೆರಿಗೆ ಮಾಹಿತಿಯನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ." + }, + "setMasterPassword": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಹೊಂದಿಸಿ" + }, + "ssoCompleteRegistration": { + "message": "ಎಸ್‌ಎಸ್‌ಒನೊಂದಿಗೆ ಲಾಗಿನ್ ಆಗುವುದನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ದಯವಿಟ್ಟು ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಮತ್ತು ರಕ್ಷಿಸಲು ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಹೊಂದಿಸಿ." + }, + "identifier": { + "message": "ಗುರುತಿಸುವಿಕೆ" + }, + "organizationIdentifier": { + "message": "ಸಂಸ್ಥೆ ಗುರುತಿಸುವಿಕೆ" + }, + "ssoLogInWithOrgIdentifier": { + "message": "ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಏಕ ಸೈನ್-ಆನ್ ಪೋರ್ಟಲ್ ಬಳಸಿ ಲಾಗ್ ಇನ್ ಮಾಡಿ. ಪ್ರಾರಂಭಿಸಲು ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಗುರುತಿಸುವಿಕೆಯನ್ನು ನಮೂದಿಸಿ." + }, + "enterpriseSingleSignOn": { + "message": "ಎಂಟರ್‌ಪ್ರೈಸ್ ಏಕ ಸೈನ್-ಆನ್" + }, + "ssoHandOff": { + "message": "ನೀವು ಈಗ ಈ ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಬಹುದು ಮತ್ತು ವಿಸ್ತರಣೆಯಲ್ಲಿ ಮುಂದುವರಿಯಬಹುದು." + }, + "includeAllTeamsFeatures": { + "message": "ಎಲ್ಲಾ ತಂಡಗಳ ವೈಶಿಷ್ಟ್ಯಗಳು, ಜೊತೆಗೆ:" + }, + "includeSsoAuthentication": { + "message": "SAML2.0 ಮತ್ತು OpenID Connect ಮೂಲಕ SSO ದೃಢೀಕರಣ" + }, + "includeEnterprisePolicies": { + "message": "ಎಂಟರ್‌ಪ್ರೈಸ್ ನೀತಿಗಳು" + }, + "ssoValidationFailed": { + "message": "ಎಸ್‌ಎಸ್‌ಒ ಕ್ರಮಬದ್ಧಗೊಳಿಸುವಿಕೆ ವಿಫಲವಾಗಿದೆ" + }, + "ssoIdentifierRequired": { + "message": "ಸಂಸ್ಥೆ ಗುರುತಿಸುವಿಕೆ ಅಗತ್ಯವಿದೆ." + }, + "unlinkSso": { + "message": "ಎಸ್‌ಎಸ್‌ಒ ಅನ್ಲಿಂಕ್ ಮಾಡಿ" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "ಎಸ್‌ಎಸ್‌ಒ ಲಿಂಕ್ ಮಾಡಿ" + }, + "singleOrg": { + "message": "ಏಕ ಸಂಸ್ಥೆ" + }, + "singleOrgDesc": { + "message": "ಬಳಕೆದಾರರು ಬೇರೆ ಯಾವುದೇ ಸಂಸ್ಥೆಗಳಿಗೆ ಸೇರಲು ಸಾಧ್ಯವಾಗದಂತೆ ನಿರ್ಬಂಧಿಸಿ." + }, + "singleOrgBlockCreateMessage": { + "message": "ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಸಂಸ್ಥೆಯು ಒಂದು ನೀತಿಯನ್ನು ಹೊಂದಿದ್ದು ಅದು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಂಸ್ಥೆಗಳಿಗೆ ಸೇರಲು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ ಅಥವಾ ಬೇರೆ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆಯಿಂದ ಸೈನ್ ಅಪ್ ಮಾಡಿ." + }, + "singleOrgPolicyWarning": { + "message": "ಮಾಲೀಕರು ಅಥವಾ ನಿರ್ವಾಹಕರಲ್ಲದ ಮತ್ತು ಈಗಾಗಲೇ ಮತ್ತೊಂದು ಸಂಸ್ಥೆಯ ಸದಸ್ಯರಾಗಿರುವ ಸಂಸ್ಥೆಯ ಸದಸ್ಯರನ್ನು ನಿಮ್ಮ ಸಂಸ್ಥೆಯಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ." + }, + "requireSso": { + "message": "ಏಕ ಸೈನ್-ಆನ್ ದೃಢೀಕರಣ" + }, + "requireSsoPolicyDesc": { + "message": "ಎಂಟರ್ಪ್ರೈಸ್ ಸಿಂಗಲ್ ಸೈನ್-ಆನ್ ವಿಧಾನದೊಂದಿಗೆ ಬಳಕೆದಾರರು ಲಾಗ್ ಇನ್ ಆಗಬೇಕು." + }, + "prerequisite": { + "message": "ಪೂರ್ವಾಪೇಕ್ಷಿತ" + }, + "requireSsoPolicyReq": { + "message": "ಈ ನೀತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೊದಲು ಏಕ ಸಂಸ್ಥೆ ಉದ್ಯಮ ನೀತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು." + }, + "requireSsoPolicyReqError": { + "message": "ಏಕ ಸಂಸ್ಥೆ ನೀತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ." + }, + "requireSsoExemption": { + "message": "ಸಂಸ್ಥೆಯ ಮಾಲೀಕರು ಮತ್ತು ನಿರ್ವಾಹಕರು ಈ ನೀತಿಯ ಜಾರಿಯಿಂದ ವಿನಾಯಿತಿ ಪಡೆದಿದ್ದಾರೆ." + }, + "sendTypeFile": { + "message": "ಫೈಲ್" + }, + "sendTypeText": { + "message": "ಪಠ್ಯ" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "ಅಳಿಸಿ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "ಇದು ಯಾವ ರೀತಿಯ ಕಳುಹಿಸುತ್ತದೆ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "ಪ್ರಸ್ತುತ ಪ್ರವೇಶ ಎಣಿಕೆ" + }, + "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." + }, + "disabled": { + "message": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" + }, + "sendLink": { + "message": "ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ತೆಗೆದುಹಾಕಿ" + }, + "removedPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ತೆಗೆದುಹಾಕಲಾಗಿದೆ" + }, + "removePasswordConfirmation": { + "message": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "hideEmail": { + "message": "ಸ್ವೀಕರಿಸುವವರಿಂದ ನನ್ನ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಮರೆಮಾಡಿ." + }, + "disableThisSend": { + "message": "ಇದನ್ನು ಕಳುಹಿಸುವುದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ಇದರಿಂದ ಯಾರೂ ಅದನ್ನು ಪ್ರವೇಶಿಸಲಾಗುವುದಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "ಎಲ್ಲಾ ಕಳುಹಿಸುತ್ತದೆ" + }, + "maxAccessCountReached": { + "message": "ಗರಿಷ್ಠ ಪ್ರವೇಶ ಎಣಿಕೆ ತಲುಪಿದೆ", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "ಅಳಿಸುವಿಕೆ ಬಾಕಿ ಉಳಿದಿದೆ" + }, + "expired": { + "message": "ಅವಧಿ ಮೀರಿದೆ" + }, + "searchSends": { + "message": "ಹುಡುಕಾಟ ಕಳುಹಿಸುತ್ತದೆ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಪಾಸ್‌ವರ್ಡ್‌ನೊಂದಿಗೆ ರಕ್ಷಿಸಲಾಗಿದೆ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಕೆಳಗಿನ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "ಪಾಸ್ವರ್ಡ್ ತಿಳಿದಿಲ್ಲವೇ? ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಅಗತ್ಯವಿರುವ ಪಾಸ್‌ವರ್ಡ್‌ಗಾಗಿ ಕಳುಹಿಸುವವರನ್ನು ಕೇಳಿ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಮರೆಮಾಡಲಾಗಿದೆ. ಕೆಳಗಿನ ಬಟನ್ ಬಳಸಿ ನೀವು ಅದರ ಗೋಚರತೆಯನ್ನು ಟಾಗಲ್ ಮಾಡಬಹುದು.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "ಫೈಲ್ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ" + }, + "sendAccessUnavailable": { + "message": "ನೀವು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಕಳುಹಿಸುವಿಕೆಯು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ ಅಥವಾ ಇನ್ನು ಮುಂದೆ ಲಭ್ಯವಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "ಈ ಕಳುಹಿಸುವಿಕೆಗೆ ಸಂಬಂಧಿಸಿದ ಫೈಲ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಕಳುಹಿಸುವುದಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "ತುರ್ತು ಪ್ರವೇಶ" + }, + "emergencyAccessDesc": { + "message": "ವಿಶ್ವಾಸಾರ್ಹ ಸಂಪರ್ಕಗಳಿಗಾಗಿ ತುರ್ತು ಪ್ರವೇಶವನ್ನು ನೀಡಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ. ವಿಶ್ವಾಸಾರ್ಹ ಸಂಪರ್ಕಗಳು ತುರ್ತು ಸಂದರ್ಭದಲ್ಲಿ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ವೀಕ್ಷಿಸಲು ಅಥವಾ ಸ್ವಾಧೀನಪಡಿಸಿಕೊಳ್ಳಲು ಪ್ರವೇಶವನ್ನು ಕೋರಬಹುದು. ಶೂನ್ಯ ಜ್ಞಾನ ಹಂಚಿಕೆ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿ ಮತ್ತು ವಿವರಗಳಿಗಾಗಿ ನಮ್ಮ ಸಹಾಯ ಪುಟಕ್ಕೆ ಭೇಟಿ ನೀಡಿ." + }, + "emergencyAccessOwnerWarning": { + "message": "ನೀವು ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಸ್ಥೆಗಳ ಮಾಲೀಕರು. ತುರ್ತು ಸಂಪರ್ಕಕ್ಕೆ ನೀವು ಸ್ವಾಧೀನದ ಪ್ರವೇಶವನ್ನು ನೀಡಿದರೆ, ಸ್ವಾಧೀನದ ನಂತರ ಅವರು ನಿಮ್ಮ ಎಲ್ಲ ಅನುಮತಿಗಳನ್ನು ಮಾಲೀಕರಾಗಿ ಬಳಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ." + }, + "trustedEmergencyContacts": { + "message": "ವಿಶ್ವಾಸಾರ್ಹ ತುರ್ತು ಸಂಪರ್ಕಗಳು" + }, + "noTrustedContacts": { + "message": "ನೀವು ಇನ್ನೂ ಯಾವುದೇ ತುರ್ತು ಸಂಪರ್ಕಗಳನ್ನು ಸೇರಿಸಿಲ್ಲ, ಪ್ರಾರಂಭಿಸಲು ವಿಶ್ವಾಸಾರ್ಹ ಸಂಪರ್ಕವನ್ನು ಆಹ್ವಾನಿಸಿ." + }, + "addEmergencyContact": { + "message": "ತುರ್ತು ಸಂಪರ್ಕವನ್ನು ಸೇರಿಸಿ" + }, + "designatedEmergencyContacts": { + "message": "ತುರ್ತು ಸಂಪರ್ಕ ಎಂದು ಗೊತ್ತುಪಡಿಸಲಾಗಿದೆ" + }, + "noGrantedAccess": { + "message": "ನಿಮ್ಮನ್ನು ಇನ್ನೂ ಯಾರಿಗೂ ತುರ್ತು ಸಂಪರ್ಕವಾಗಿ ನೇಮಿಸಲಾಗಿಲ್ಲ." + }, + "inviteEmergencyContact": { + "message": "ತುರ್ತು ಸಂಪರ್ಕವನ್ನು ಆಹ್ವಾನಿಸಿ" + }, + "editEmergencyContact": { + "message": "ತುರ್ತು ಸಂಪರ್ಕವನ್ನು ಸಂಪಾದಿಸಿ" + }, + "inviteEmergencyContactDesc": { + "message": "ಅವರ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಕೆಳಗೆ ನಮೂದಿಸುವ ಮೂಲಕ ಹೊಸ ತುರ್ತು ಸಂಪರ್ಕವನ್ನು ಆಹ್ವಾನಿಸಿ. ಅವರು ಈಗಾಗಲೇ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆಯನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ, ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಲು ಅವರನ್ನು ಕೇಳಲಾಗುತ್ತದೆ." + }, + "emergencyAccessRecoveryInitiated": { + "message": "ತುರ್ತು ಪ್ರವೇಶ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ" + }, + "emergencyAccessRecoveryApproved": { + "message": "ತುರ್ತು ಪ್ರವೇಶ ಅನುಮೋದಿಸಲಾಗಿದೆ" + }, + "viewDesc": { + "message": "ನಿಮ್ಮ ಸ್ವಂತ ವಾಲ್ಟ್ನಲ್ಲಿ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ವೀಕ್ಷಿಸಬಹುದು." + }, + "takeover": { + "message": "ಸ್ವಾಧೀನ" + }, + "takeoverDesc": { + "message": "ಹೊಸ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್‌ನೊಂದಿಗೆ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಮರುಹೊಂದಿಸಬಹುದು." + }, + "waitTime": { + "message": "ಸಮಯ ಕಾಯಿರಿ" + }, + "waitTimeDesc": { + "message": "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರವೇಶವನ್ನು ನೀಡುವ ಮೊದಲು ಸಮಯ ಬೇಕಾಗುತ್ತದೆ." + }, + "oneDay": { + "message": "1 ದಿನ" + }, + "days": { + "message": "$DAYS$ ದಿನಗಳು", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "ಆಹ್ವಾನಿತ ಬಳಕೆದಾರ." + }, + "acceptEmergencyAccess": { + "message": "ಮೇಲೆ ಪಟ್ಟಿ ಮಾಡಲಾದ ಬಳಕೆದಾರರಿಗೆ ತುರ್ತು ಸಂಪರ್ಕವಾಗಲು ನಿಮ್ಮನ್ನು ಆಹ್ವಾನಿಸಲಾಗಿದೆ. ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಲು, ನೀವು ಲಾಗ್ ಇನ್ ಆಗಬೇಕು ಅಥವಾ ಹೊಸ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆಯನ್ನು ರಚಿಸಬೇಕು." + }, + "emergencyInviteAcceptFailed": { + "message": "ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಹೊಸ ಆಹ್ವಾನವನ್ನು ಕಳುಹಿಸಲು ಬಳಕೆದಾರರನ್ನು ಕೇಳಿ." + }, + "emergencyInviteAcceptFailedShort": { + "message": "ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "ನಿಮ್ಮ ಗುರುತನ್ನು ದೃಢಪಡಿಸಿದ ನಂತರ ನೀವು ಈ ಬಳಕೆದಾರರಿಗಾಗಿ ತುರ್ತು ಆಯ್ಕೆಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಅದು ಸಂಭವಿಸಿದಾಗ ನಾವು ನಿಮಗೆ ಇಮೇಲ್ ಕಳುಹಿಸುತ್ತೇವೆ." + }, + "requestAccess": { + "message": "ಪ್ರವೇಶವನ್ನು ವಿನಂತಿಸಿ" + }, + "requestAccessConfirmation": { + "message": "ತುರ್ತು ಪ್ರವೇಶವನ್ನು ಕೋರಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? $WAITTIME$ ದಿನ (ಗಳ) ನಂತರ ಅಥವಾ ಬಳಕೆದಾರರು ವಿನಂತಿಯನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಅನುಮೋದಿಸಿದಾಗಲೆಲ್ಲಾ ನಿಮಗೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸಲಾಗುತ್ತದೆ.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "ತುರ್ತು ಪ್ರವೇಶವನ್ನು $USER$ ಗೆ ವಿನಂತಿಸಲಾಗಿದೆ. ಮುಂದುವರಿಯಲು ಸಾಧ್ಯವಾದಾಗ ನಾವು ನಿಮಗೆ ಇಮೇಲ್ ಮೂಲಕ ತಿಳಿಸುತ್ತೇವೆ.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "ಅನುಮೋದಿಸಿದೆ" + }, + "reject": { + "message": "ತಿರಸ್ಕರಿಸು" + }, + "approveAccessConfirmation": { + "message": "ತುರ್ತು ಪ್ರವೇಶವನ್ನು ಅನುಮೋದಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ಇದು ನಿಮ್ಮ ಖಾತೆಗೆ $USER$ ಗೆ $ACTION$ ಗೆ ಅನುಮತಿಸುತ್ತದೆ.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "ತುರ್ತು ಪ್ರವೇಶ ಅನುಮೋದಿಸಲಾಗಿದೆ." + }, + "emergencyRejected": { + "message": "ತುರ್ತು ಪ್ರವೇಶವನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ" + }, + "passwordResetFor": { + "message": "$USER$ ಗೆ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ. ನೀವು ಈಗ ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಬಳಸಿ ಲಾಗಿನ್ ಮಾಡಬಹುದು.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "ವೈಯಕ್ತಿಕ ಮಾಲೀಕತ್ವ" + }, + "personalOwnershipPolicyDesc": { + "message": "ವೈಯಕ್ತಿಕ ಮಾಲೀಕತ್ವದ ಆಯ್ಕೆಯನ್ನು ತೆಗೆದುಹಾಕುವ ಮೂಲಕ ಬಳಕೆದಾರರಿಗೆ ವಾಲ್ಟ್ ವಸ್ತುಗಳನ್ನು ಸಂಸ್ಥೆಗೆ ಉಳಿಸಲು ಅಗತ್ಯವಿದೆ." + }, + "personalOwnershipExemption": { + "message": "ಸಂಸ್ಥೆಯ ಮಾಲೀಕರು ಮತ್ತು ನಿರ್ವಾಹಕರು ಈ ನೀತಿಯ ಜಾರಿಯಿಂದ ವಿನಾಯಿತಿ ಪಡೆದಿದ್ದಾರೆ." + }, + "personalOwnershipSubmitError": { + "message": "ಎಂಟರ್‌ಪ್ರೈಸ್ ನೀತಿಯಿಂದಾಗಿ, ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ವಾಲ್ಟ್‌ಗೆ ವಸ್ತುಗಳನ್ನು ಉಳಿಸುವುದರಿಂದ ನಿಮ್ಮನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಮಾಲೀಕತ್ವದ ಆಯ್ಕೆಯನ್ನು ಸಂಸ್ಥೆಗೆ ಬದಲಾಯಿಸಿ ಮತ್ತು ಲಭ್ಯವಿರುವ ಸಂಗ್ರಹಗಳಿಂದ ಆರಿಸಿಕೊಳ್ಳಿ." + }, + "disableSend": { + "message": "ಕಳುಹಿಸುವುದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableSendPolicyDesc": { + "message": "ಬಿಟ್‌ವಾರ್ಡೆನ್ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ರಚಿಸಲು ಅಥವಾ ಸಂಪಾದಿಸಲು ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಬೇಡಿ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಅಳಿಸಲು ಇನ್ನೂ ಅನುಮತಿಸಲಾಗಿದೆ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "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." + }, + "sendOptions": { + "message": "ಆಯ್ಕೆಗಳನ್ನು ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "ಕಳುಹಿಸುವಿಕೆಯನ್ನು ರಚಿಸಲು ಮತ್ತು ಸಂಪಾದಿಸಲು ಆಯ್ಕೆಗಳನ್ನು ಹೊಂದಿಸಿ.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "ಸಂಸ್ಥೆಯ ನೀತಿಗಳನ್ನು ನಿರ್ವಹಿಸಬಲ್ಲ ಸಂಸ್ಥೆ ಬಳಕೆದಾರರಿಗೆ ಈ ನೀತಿಯ ಜಾರಿಯಿಂದ ವಿನಾಯಿತಿ ಇದೆ." + }, + "disableHideEmail": { + "message": "ಕಳುಹಿಸುವಿಕೆಯನ್ನು ರಚಿಸುವಾಗ ಅಥವಾ ಸಂಪಾದಿಸುವಾಗ ಬಳಕೆದಾರರು ತಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಸ್ವೀಕರಿಸುವವರಿಂದ ಮರೆಮಾಡಲು ಅನುಮತಿಸಬೇಡಿ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "ಕೆಳಗಿನ ಸಂಸ್ಥೆಯ ನೀತಿಗಳು ಪ್ರಸ್ತುತ ಜಾರಿಯಲ್ಲಿವೆ:" + }, + "sendDisableHideEmailInEffect": { + "message": "ಕಳುಹಿಸುವಿಕೆಯನ್ನು ರಚಿಸುವಾಗ ಅಥವಾ ಸಂಪಾದಿಸುವಾಗ ಬಳಕೆದಾರರು ತಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಸ್ವೀಕರಿಸುವವರಿಂದ ಮರೆಮಾಡಲು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "ಮಾರ್ಪಡಿಸಿದ ನೀತಿ $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "ಯೋಜನೆ ಬೆಲೆ" + }, + "estimatedTax": { + "message": "ಅಂದಾಜು ತೆರಿಗೆ" + }, + "custom": { + "message": "ಕಸ್ಟಮ್" + }, + "customDesc": { + "message": "ಸುಧಾರಿತ ಸಂರಚನೆಗಳಿಗಾಗಿ ಬಳಕೆದಾರರ ಅನುಮತಿಗಳ ಹೆಚ್ಚಿನ ಹರಳಿನ ನಿಯಂತ್ರಣವನ್ನು ಅನುಮತಿಸುತ್ತದೆ." + }, + "permissions": { + "message": "ಅನುಮತಿಗಳು" + }, + "accessEventLogs": { + "message": "ಈವೆಂಟ್ ಲಾಗ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಿ" + }, + "accessImportExport": { + "message": "ಆಮದು / ರಫ್ತು ಪ್ರವೇಶಿಸಿ" + }, + "accessReports": { + "message": "ಪ್ರವೇಶ ವರದಿಗಳು" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "ಎಲ್ಲಾ ಸಂಗ್ರಹಗಳನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "ನಿಯೋಜಿಸಲಾದ ಸಂಗ್ರಹಗಳನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "ಗುಂಪುಗಳನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "managePolicies": { + "message": "ನೀತಿಗಳನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "manageSso": { + "message": "SSO ಅನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "manageUsers": { + "message": "ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "manageResetPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಕೆಯನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "ಸಂಸ್ಥೆಯ ನೀತಿಯು ನಿಮ್ಮ ಮಾಲೀಕತ್ವದ ಆಯ್ಕೆಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತಿದೆ." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "ಸಂಸ್ಥೆ ಬಳಕೆದಾರರಿಗಾಗಿ ವೈಯಕ್ತಿಕ ಮಾಲೀಕತ್ವವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "textHiddenByDefault": { + "message": "ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸುವಾಗ, ಪಠ್ಯವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಮರೆಮಾಡಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "ಇದನ್ನು ಕಳುಹಿಸಲು ವಿವರಿಸಲು ಸ್ನೇಹಪರ ಹೆಸರು.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "ನೀವು ಕಳುಹಿಸಲು ಬಯಸುವ ಪಠ್ಯ." + }, + "sendFileDesc": { + "message": "ನೀವು ಕಳುಹಿಸಲು ಬಯಸುವ ಫೈಲ್." + }, + "copySendLinkOnSave": { + "message": "ಇದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಲಿಂಕ್ ಅನ್ನು ನಕಲಿಸಿ ಉಳಿಸಿದ ನಂತರ ನನ್ನ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ಕಳುಹಿಸಿ." + }, + "sendLinkLabel": { + "message": "ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್ ಕಳುಹಿಸಿ ಸೂಕ್ಷ್ಮ ಮತ್ತು ತಾತ್ಕಾಲಿಕ ಮಾಹಿತಿಯನ್ನು ಇತರರಿಗೆ ಸುಲಭವಾಗಿ ಮತ್ತು ಸುರಕ್ಷಿತವಾಗಿ ರವಾನಿಸುತ್ತದೆ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "ಪಠ್ಯ ಅಥವಾ ಫೈಲ್‌ಗಳನ್ನು ಯಾರೊಂದಿಗೂ ನೇರವಾಗಿ ಹಂಚಿಕೊಳ್ಳಿ." + }, + "sendVaultCardLearnMore": { + "message": "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "ನೋಡಿ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "ಅಥವ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "ಅದನ್ನೀಗ ಪ್ರಯತ್ನಿಸಿ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "ಅಥವ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "ಸೈನ್ ಅಪ್ ಮಾಡಿ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "ಇಂದು ಅದನ್ನು ಪ್ರಯತ್ನಿಸಲು.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "ಬಿಟ್‌ವಾರ್ಡೆನ್ ಬಳಕೆದಾರ $USER_IDENTIFIER$ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ನಿಮ್ಮೊಂದಿಗೆ ಹಂಚಿಕೊಂಡಿದ್ದಾರೆ", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ರಚಿಸಿದ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಬಳಕೆದಾರರು ತಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಮರೆಮಾಡಲು ಆಯ್ಕೆ ಮಾಡಿದ್ದಾರೆ. ಈ ಲಿಂಕ್‌ನ ವಿಷಯವನ್ನು ಬಳಸುವ ಅಥವಾ ಡೌನ್‌ಲೋಡ್ ಮಾಡುವ ಮೊದಲು ಅದರ ಮೂಲವನ್ನು ನೀವು ನಂಬಿದ್ದೀರಿ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "ಒದಗಿಸಿದ ಮುಕ್ತಾಯ ದಿನಾಂಕವು ಮಾನ್ಯವಾಗಿಲ್ಲ." + }, + "deletionDateIsInvalid": { + "message": "ಒದಗಿಸಿದ ಅಳಿಸುವ ದಿನಾಂಕವು ಮಾನ್ಯವಾಗಿಲ್ಲ." + }, + "expirationDateAndTimeRequired": { + "message": "ಮುಕ್ತಾಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ ಅಗತ್ಯವಿದೆ." + }, + "deletionDateAndTimeRequired": { + "message": "ಅಳಿಸುವ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ ಅಗತ್ಯವಿದೆ." + }, + "dateParsingError": { + "message": "ನಿಮ್ಮ ಅಳಿಸುವಿಕೆ ಮತ್ತು ಮುಕ್ತಾಯ ದಿನಾಂಕಗಳನ್ನು ಉಳಿಸುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿದೆ." + }, + "webAuthnFallbackMsg": { + "message": "ನಿಮ್ಮ 2FA ಅನ್ನು ಪರಿಶೀಲಿಸಲು ದಯವಿಟ್ಟು ಕೆಳಗಿನ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ." + }, + "webAuthnAuthenticate": { + "message": "WebAuthn ಅನ್ನು ಪ್ರಮಾಣಿಕರಿಸು" + }, + "webAuthnNotSupported": { + "message": "ಈ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ವೆಬ್‌ಆಥ್ನ್ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ." + }, + "webAuthnSuccess": { + "message": "WebAuthn ಯಶಸ್ವಿಯಾಗಿ ಪರಿಶೀಲಿಸಲಾಗಿದೆ! ನೀವು ಈ ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಬಹುದು." + }, + "hintEqualsPassword": { + "message": "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ನಂತೆಯೇ ಇರಬಾರದು." + }, + "enrollPasswordReset": { + "message": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಲು ನೋಂದಾಯಿಸಿ" + }, + "enrolledPasswordReset": { + "message": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಲು ದಾಖಲಾಗಿದೆ" + }, + "withdrawPasswordReset": { + "message": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸುವಿಕೆಯಿಂದ ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ" + }, + "enrollPasswordResetSuccess": { + "message": "ದಾಖಲಾತಿ ಯಶಸ್ಸು!" + }, + "withdrawPasswordResetSuccess": { + "message": "ಹಿಂತೆಗೆದುಕೊಳ್ಳುವ ಯಶಸ್ಸು!" + }, + "eventEnrollPasswordReset": { + "message": "ಬಳಕೆದಾರ $ID$ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಸಹಾಯಕ್ಕೆ ಸೇರಿಕೊಂಡಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "ಬಳಕೆದಾರ $ID$ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಸಹಾಯದಿಂದ ಹಿಂದೆ ಸರಿದಿದೆ.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "ಬಳಕೆದಾರ $ID$ ಗಾಗಿ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ" + }, + "resetPasswordLoggedOutWarning": { + "message": "ಮುಂದುವರಿಯುವುದರಿಂದ ಅವರ ಪ್ರಸ್ತುತ ಸೆಷನ್‌ನಿಂದ $NAME$ ಅನ್ನು ಲಾಗ್ ಮಾಡುತ್ತದೆ, ಅವರಿಗೆ ಮತ್ತೆ ಲಾಗ್ ಇನ್ ಆಗುವ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇತರ ಸಾಧನಗಳಲ್ಲಿನ ಸಕ್ರಿಯ ಸೆಷನ್‌ಗಳು ಒಂದು ಗಂಟೆಯವರೆಗೆ ಸಕ್ರಿಯವಾಗಿ ಮುಂದುವರಿಯಬಹುದು.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "ಈ ಬಳಕೆದಾರ" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಸ್ಥೆಯ ನೀತಿಗಳಿಗೆ ಈ ಕೆಳಗಿನ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸಲು ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅಗತ್ಯವಿದೆ:" + }, + "resetPasswordSuccess": { + "message": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಯಶಸ್ಸು!" + }, + "resetPasswordEnrollmentWarning": { + "message": "ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರಿಗೆ ದಾಖಲಾತಿ ಅನುಮತಿಸುತ್ತದೆ. ನೀವು ದಾಖಲಾತಿ ಮಾಡಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "resetPasswordPolicy": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ" + }, + "resetPasswordPolicyDescription": { + "message": "ಸಂಸ್ಥೆಯ ಬಳಕೆದಾರರ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ಸಂಸ್ಥೆಯಲ್ಲಿನ ನಿರ್ವಾಹಕರನ್ನು ಅನುಮತಿಸಿ." + }, + "resetPasswordPolicyWarning": { + "message": "ನಿರ್ವಾಹಕರು ತಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸುವ ಮೊದಲು ಸಂಸ್ಥೆಯಲ್ಲಿನ ಬಳಕೆದಾರರು ಸ್ವಯಂ-ದಾಖಲಾತಿ ಅಥವಾ ಸ್ವಯಂ-ದಾಖಲಾತಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "ಸ್ವಯಂಚಾಲಿತ ದಾಖಲಾತಿ" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "ಎಲ್ಲಾ ಬಳಕೆದಾರರು ತಮ್ಮ ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವಿಕೆಗೆ ದಾಖಲಾಗುತ್ತಾರೆ." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "ಈಗಾಗಲೇ ಸಂಸ್ಥೆಯಲ್ಲಿರುವ ಬಳಕೆದಾರರನ್ನು ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವಿಕೆಯಲ್ಲಿ ಪೂರ್ವಭಾವಿಯಾಗಿ ದಾಖಲಿಸಲಾಗುವುದಿಲ್ಲ. ನಿರ್ವಾಹಕರು ತಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸುವ ಮೊದಲು ಅವರು ಸ್ವಯಂ-ದಾಖಲಾತಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ದಾಖಲಿಸಿ" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "ಈ ಸಂಸ್ಥೆಯು ಎಂಟರ್‌ಪ್ರೈಸ್ ನೀತಿಯನ್ನು ಹೊಂದಿದ್ದು ಅದು ನಿಮ್ಮನ್ನು ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸಲು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ದಾಖಲಿಸುತ್ತದೆ. ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರಿಗೆ ದಾಖಲಾತಿ ಅನುಮತಿಸುತ್ತದೆ." + }, + "resetPasswordOrgKeysError": { + "message": "ಸಂಸ್ಥೆ ಕೀಗಳ ಪ್ರತಿಕ್ರಿಯೆ ಶೂನ್ಯವಾಗಿದೆ" + }, + "resetPasswordDetailsError": { + "message": "ಪಾಸ್ವರ್ಡ್ ವಿವರಗಳನ್ನು ಮರುಹೊಂದಿಸಿ ಪ್ರತಿಕ್ರಿಯೆ ಶೂನ್ಯವಾಗಿದೆ" + }, + "trashCleanupWarning": { + "message": "30 ದಿನಗಳಿಗಿಂತ ಹೆಚ್ಚು ಅನುಪಯುಕ್ತದಲ್ಲಿರುವ ಐಟಂಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ." + }, + "trashCleanupWarningSelfHosted": { + "message": "ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ಅನುಪಯುಕ್ತದಲ್ಲಿರುವ ಐಟಂಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ." + }, + "passwordPrompt": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಮರು-ಪ್ರಾಂಪ್ಟ್" + }, + "passwordConfirmation": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಣ" + }, + "passwordConfirmationDesc": { + "message": "ಮುಂದುವರಿಯಲು ಈ ಕ್ರಿಯೆಯನ್ನು ರಕ್ಷಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು ನಿಮ್ಮ ಗುರುತನ್ನು ಪರಿಶೀಲಿಸಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರು ನಮೂದಿಸಿ." + }, + "reinviteSelected": { + "message": "ಆಮಂತ್ರಣಗಳನ್ನು ಮರುಹೊಂದಿಸಿ" + }, + "noSelectedUsersApplicable": { + "message": "ಆಯ್ದ ಯಾವುದೇ ಬಳಕೆದಾರರಿಗೆ ಈ ಕ್ರಿಯೆ ಅನ್ವಯಿಸುವುದಿಲ್ಲ." + }, + "removeUsersWarning": { + "message": "ಕೆಳಗಿನ ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ಪ್ರಕ್ರಿಯೆಯು ಪೂರ್ಣಗೊಳ್ಳಲು ಕೆಲವು ಸೆಕೆಂಡುಗಳು ತೆಗೆದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಅದನ್ನು ಅಡ್ಡಿಪಡಿಸಲು ಅಥವಾ ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "ಆಯ್ಕೆಮಾಡಿದದನ್ನು ದೃಢೀಕರಿಸಿ" + }, + "bulkConfirmStatus": { + "message": "ಬೃಹತ್ ಕ್ರಿಯೆಯ ಸ್ಥಿತಿ" + }, + "bulkConfirmMessage": { + "message": "ಯಶಸ್ವಿಯಾಗಿ ದೃಢಪಡಿಸಲಾಗಿದೆ." + }, + "bulkReinviteMessage": { + "message": "ಯಶಸ್ವಿಯಾಗಿ ಪುನಃ ಆಹ್ವಾನಿಸಲಾಗಿದೆ." + }, + "bulkRemovedMessage": { + "message": "ಯಶಸ್ವಿಯಾಗಿ ತೆಗೆದುಹಾಕಲಾಗಿದೆ" + }, + "bulkFilteredMessage": { + "message": "ಹೊರಗಿಡಲಾಗಿದೆ, ಈ ಕ್ರಿಯೆಗೆ ಅನ್ವಯಿಸುವುದಿಲ್ಲ." + }, + "fingerprint": { + "message": "ಫಿಂಗರ್‌ಪ್ರಿಂಟ್" + }, + "removeUsers": { + "message": "ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಿ" + }, + "error": { + "message": "ದೋಷ" + }, + "resetPasswordManageUsers": { + "message": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ ಅನುಮತಿಯೊಂದಿಗೆ ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json new file mode 100644 index 0000000000..dd72400512 --- /dev/null +++ b/apps/web/src/locales/ko/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ 웹 보관함", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "비밀번호" + }, + "newPassword": { + "message": "새 비밀번호" + }, + "passphrase": { + "message": "패스프레이즈" + }, + "notes": { + "message": "메모" + }, + "customFields": { + "message": "사용자 지정 필드" + }, + "cardholderName": { + "message": "카드 소유자 이름" + }, + "number": { + "message": "번호" + }, + "brand": { + "message": "브랜드" + }, + "expiration": { + "message": "만료" + }, + "securityCode": { + "message": "카드 보안 코드 (CVV)" + }, + "identityName": { + "message": "ID 이름" + }, + "company": { + "message": "회사" + }, + "ssn": { + "message": "주민등록번호" + }, + "passportNumber": { + "message": "여권 번호" + }, + "licenseNumber": { + "message": "면허 번호" + }, + "email": { + "message": "이메일" + }, + "phone": { + "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월" + }, + "title": { + "message": "제목" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "만료 월" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "제거" + }, + "unassigned": { + "message": "지정되지 않음" + }, + "noneFolder": { + "message": "폴더 없음", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "폴더 추가" + }, + "editFolder": { + "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." + }, + "never": { + "message": "잠그지 않음" + }, + "toggleVisibility": { + "message": "표시 전환" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "비밀번호 생성" + }, + "checkPassword": { + "message": "비밀번호가 노출되었는지 확인합니다." + }, + "passwordExposed": { + "message": "이 비밀번호는 데이터 유출에 $VALUE$회 노출되었습니다. 비밀번호를 변경하는 것이 좋습니다.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "이 비밀번호는 데이터 유출 목록에 없습니다. 사용하기에 안전한 비밀번호입니다." + }, + "save": { + "message": "저장" + }, + "cancel": { + "message": "취소" + }, + "canceled": { + "message": "취소됨" + }, + "close": { + "message": "닫기" + }, + "delete": { + "message": "삭제" + }, + "favorite": { + "message": "즐겨찾기" + }, + "unfavorite": { + "message": "즐겨찾기 해제" + }, + "edit": { + "message": "편집" + }, + "searchCollection": { + "message": "컬렉션 검색" + }, + "searchFolder": { + "message": "폴더 검색" + }, + "searchFavorites": { + "message": "즐겨찾기 검색" + }, + "searchType": { + "message": "유형 검색", + "description": "Search item type" + }, + "searchVault": { + "message": "보관함 검색" + }, + "allItems": { + "message": "모든 항목" + }, + "favorites": { + "message": "즐겨찾기" + }, + "types": { + "message": "유형" + }, + "typeLogin": { + "message": "로그인" + }, + "typeCard": { + "message": "카드" + }, + "typeIdentity": { + "message": "신원" + }, + "typeSecureNote": { + "message": "보안 메모" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "폴더" + }, + "collections": { + "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": "국가" + }, + "shared": { + "message": "공유됨" + }, + "attachments": { + "message": "첨부 파일" + }, + "select": { + "message": "선택" + }, + "addItem": { + "message": "항목 추가" + }, + "editItem": { + "message": "항목 편집" + }, + "viewItem": { + "message": "항목 보기" + }, + "ex": { + "message": "예)", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "기타" + }, + "share": { + "message": "공유" + }, + "moveToOrganization": { + "message": "조직으로 이동하기" + }, + "valueCopied": { + "message": "$VALUE$를 클립보드에 복사함", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "값 복사", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "비밀번호 복사", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "사용자 이름 복사", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "번호 복사", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "보안 코드 복사", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "URI 복사", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "내 보관함" + }, + "vault": { + "message": "보관함" + }, + "moveSelectedToOrg": { + "message": "선택한 항목을 조직으로 이동함" + }, + "deleteSelected": { + "message": "선택 항목 삭제" + }, + "moveSelected": { + "message": "선택 항목 이동" + }, + "selectAll": { + "message": "모두 선택" + }, + "unselectAll": { + "message": "모두 선택 해제" + }, + "launch": { + "message": "열기" + }, + "newAttachment": { + "message": "새 첨부 파일 추가" + }, + "deletedAttachment": { + "message": "첨부 파일 삭제함" + }, + "deleteAttachmentConfirmation": { + "message": "정말 이 첨부 파일을 삭제하시겠습니까?" + }, + "attachmentSaved": { + "message": "첨부 파일을 저장했습니다." + }, + "file": { + "message": "파일" + }, + "selectFile": { + "message": "파일을 선택하세요." + }, + "maxFileSize": { + "message": "최대 파일 크기는 500MB입니다." + }, + "updateKey": { + "message": "이 기능을 사용하려면 암호화 키를 업데이트해야 합니다." + }, + "addedItem": { + "message": "항목 추가함" + }, + "editedItem": { + "message": "항목 편집함" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$이(가) $ORGNAME$(으)로 이동됨", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "선택한 항목이 $ORGNAME$(으)로 이동됨", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "항목 삭제" + }, + "deleteFolder": { + "message": "폴더 삭제" + }, + "deleteAttachment": { + "message": "첨부 파일 삭제" + }, + "deleteItemConfirmation": { + "message": "정말로 휴지통으로 이동시킬까요?" + }, + "deletedItem": { + "message": "항목 삭제함" + }, + "deletedItems": { + "message": "항목 삭제함" + }, + "movedItems": { + "message": "항목 이동함" + }, + "overwritePasswordConfirmation": { + "message": "정말 현재 비밀번호를 덮어쓰시겠습니까?" + }, + "editedFolder": { + "message": "폴더 편집함" + }, + "addedFolder": { + "message": "폴더 추가함" + }, + "deleteFolderConfirmation": { + "message": "정말 이 폴더를 삭제하시겠습니까?" + }, + "deletedFolder": { + "message": "폴더 삭제함" + }, + "loggedOut": { + "message": "로그아웃됨" + }, + "loginExpired": { + "message": "로그인 세션이 만료되었습니다." + }, + "logOutConfirmation": { + "message": "정말 로그아웃하시겠습니까?" + }, + "logOut": { + "message": "로그아웃" + }, + "ok": { + "message": "확인" + }, + "yes": { + "message": "예" + }, + "no": { + "message": "아니오" + }, + "loginOrCreateNewAccount": { + "message": "안전 보관함에 접근하려면 로그인하거나 새 계정을 만드세요." + }, + "createAccount": { + "message": "계정 만들기" + }, + "logIn": { + "message": "로그인" + }, + "submit": { + "message": "보내기" + }, + "emailAddressDesc": { + "message": "로그인에 이메일 주소를 사용하게 될 것입니다." + }, + "yourName": { + "message": "이름" + }, + "yourNameDesc": { + "message": "당신은 어떻게 불립니까?" + }, + "masterPass": { + "message": "마스터 비밀번호" + }, + "masterPassDesc": { + "message": "마스터 비밀번호는 보관함을 열 때 필요한 비밀번호입니다. 절대 마스터 비밀번호를 잊어버리지 마세요. 잊어버리면 복구할 수 있는 방법이 없습니다." + }, + "masterPassHintDesc": { + "message": "마스터 비밀번호 힌트는 마스터 비밀번호를 잊었을 때 도움이 될 수 있습니다." + }, + "reTypeMasterPass": { + "message": "마스터 비밀번호 다시 입력" + }, + "masterPassHint": { + "message": "마스터 비밀번호 힌트 (선택)" + }, + "masterPassHintLabel": { + "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": "예기치 못한 오류가 발생했습니다." + }, + "emailAddress": { + "message": "이메일 주소" + }, + "yourVaultIsLocked": { + "message": "보관함이 잠겨 있습니다. 마스터 비밀번호를 입력하여 계속하세요." + }, + "unlock": { + "message": "잠금 해제" + }, + "loggedInAsEmailOn": { + "message": "$HOSTNAME$ 에 $EMAIL$ 로 로그인했습니다.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "잘못된 마스터 비밀번호" + }, + "lockNow": { + "message": "지금 잠그기" + }, + "noItemsInList": { + "message": "항목이 없습니다." + }, + "noCollectionsInList": { + "message": "콜렉션이 없습니다." + }, + "noGroupsInList": { + "message": "그룹이 없습니다." + }, + "noUsersInList": { + "message": "유저가 없습니다." + }, + "noEventsInList": { + "message": "이벤트가 없습니다." + }, + "newOrganization": { + "message": "새 조직" + }, + "noOrganizationsList": { + "message": "당신은 어떤 조직에도 속해있지 않습니다. 조직은 다른 사용자들과 안전하게 항목을 공유할 수 있게 해줍니다." + }, + "versionNumber": { + "message": "버전 $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 포트에 삽입하고 버튼이 있는 경우 누르세요." + }, + "loginUnavailable": { + "message": "로그인 불가능" + }, + "noTwoStepProviders": { + "message": "이 계정은 2단계 인증을 사용합니다. 그러나 설정된 2단계 인증 중 이 웹 브라우저에서 지원하는 방식이 없습니다." + }, + "noTwoStepProviders2": { + "message": "지원하는 웹 브라우저(Chrome 등)를 사용하거나 더 많은 브라우저를 지원하는 2단계 인증 방식(인증 앱 등)을 추가하세요." + }, + "twoStepOptions": { + "message": "2단계 인증 옵션" + }, + "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." + }, + "u2fDesc": { + "message": "FIDO U2F가 활성화된 보안 키를 사용하여 계정에 접근하세요." + }, + "u2fTitle": { + "message": "FIDO U2F 보안 키" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "WebAuthn이 활성화된 보안 키를 사용하여 계정에 접근하세요." + }, + "webAuthnMigrated": { + "message": "(FIDO에서 이전됨)" + }, + "emailTitle": { + "message": "이메일" + }, + "emailDesc": { + "message": "인증 코드가 담긴 이메일을 다시 보냅니다." + }, + "continue": { + "message": "계속" + }, + "organization": { + "message": "조직" + }, + "organizations": { + "message": "조직" + }, + "moveToOrgDesc": { + "message": "이 항목을 이동할 조직을 선택하십시오. 항목이 조직으로 이동되면 소유권이 조직으로 이전됩니다. 일단 이동되면, 더는 이동된 항목의 직접적인 소유자가 아니게 됩니다." + }, + "moveManyToOrgDesc": { + "message": "이 항목을 이동할 조직을 선택하십시오. 항목이 조직으로 이동되면 소유권이 조직으로 이전됩니다. 일단 이동되면, 더는 이동된 항목의 직접적인 소유자가 아니게 됩니다." + }, + "collectionsDesc": { + "message": "이 항목이 공유될 콜렉션을 수정하십시오. 이 콜렉션에 접근할 수 있는 조직 사용자만 이 항목을 볼 수 있습니다." + }, + "deleteSelectedItemsDesc": { + "message": "삭제를 위해 $COUNT$ 개의 항목이 선택됨. 정말로 이 항목들을 삭제하시겠습니까?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "선택된 $COUNT$ 개의 항목을 옮길 폴더를 선택하십시오.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "$COUNT$개의 항목을 선택하셨습니다. $MOVEABLE_COUNT$개의 항목은 조직으로 이동시킬 수 있지만 나머지 $NONMOVEABLE_COUNT$개의 항목은 이동시킬 수 없습니다.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "인증 코드 (TOTP)" + }, + "copyVerificationCode": { + "message": "인증 코드 복사" + }, + "warning": { + "message": "경고" + }, + "confirmVaultExport": { + "message": "보관함 내보내기 확인" + }, + "exportWarningDesc": { + "message": "내보내기는 보관함 데이터가 암호화되지 않은 형식으로 포함됩니다. 내보낸 파일을 안전하지 않은 채널(예: 이메일)을 통해 저장하거나 보내지 마십시오. 사용이 끝난 후에는 즉시 삭제하십시오." + }, + "encExportKeyWarningDesc": { + "message": "이 내보내기는 계정의 암호화 키를 사용하여 데이터를 암호화합니다. 추후 계정의 암호화 키를 교체할 경우 다시 내보내기를 진행해야 합니다. 그러지 않을 경우 이 내보내기 파일을 해독할 수 없게 됩니다." + }, + "encExportAccountWarningDesc": { + "message": "모든 Bitwarden 사용자 계정은 고유한 계정 암호화 키를 가지고 있습니다. 따라서, 다른 계정에서는 암호화된 내보내기를 가져올 수 없습니다." + }, + "export": { + "message": "내보내기" + }, + "exportVault": { + "message": "보관함 내보내기" + }, + "fileFormat": { + "message": "파일 형식" + }, + "exportSuccess": { + "message": "보관함 데이터를 내보냈습니다." + }, + "passwordGenerator": { + "message": "비밀번호 생성기" + }, + "minComplexityScore": { + "message": "최소 복잡도 점수" + }, + "minNumbers": { + "message": "숫자 최소 개수" + }, + "minSpecial": { + "message": "특수 문자 최소 개수", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "모호한 문자 사용 안 함" + }, + "regeneratePassword": { + "message": "비밀번호 재생성" + }, + "length": { + "message": "길이" + }, + "numWords": { + "message": "단어 수" + }, + "wordSeparator": { + "message": "구분 기호" + }, + "capitalize": { + "message": "첫 글자를 대문자로", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "숫자 추가" + }, + "passwordHistory": { + "message": "비밀번호 변경 기록" + }, + "noPasswordsInList": { + "message": "비밀번호가 없습니다." + }, + "clear": { + "message": "삭제", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "계정 업데이트됨" + }, + "changeEmail": { + "message": "이메일 변경" + }, + "changeEmailTwoFactorWarning": { + "message": "계속 진행하면 계정의 이메일 주소가 변경됩니다. 이때, 2단계 인증에 사용되는 이메일 주소는 변경되지 않습니다. 2단계 인증 설정에서 해당 이메일 주소를 변경할 수 있습니다." + }, + "newEmail": { + "message": "새 이메일" + }, + "code": { + "message": "코드" + }, + "changeEmailDesc": { + "message": "$EMAIL$으로 인증 코드를 발송했습니다. 이메일에서 이 코드를 확인하고 아래에 입력하여 이메일 주소 변경을 완료하십시오.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "계속 진행하면, 현재 세션 또한 로그아웃 되므로 다시 로그인하여야 합니다. 2단계 로그인이 활성화 된 경우 다시 요구하는 메세지가 표시됩니다. 다른 기기의 활성화 된 세션은 최대 1시간 동안 유지 될 수 있습니다." + }, + "emailChanged": { + "message": "이메일 변경됨" + }, + "logBackIn": { + "message": "다시 로그인해 주세요." + }, + "logBackInOthersToo": { + "message": "다시 로그인해 주세요. 다른 Bitwarden 앱을 사용 중인 경우 해당 앱에서도 다시 로그인해야 합니다." + }, + "changeMasterPassword": { + "message": "마스터 비밀번호 변경" + }, + "masterPasswordChanged": { + "message": "마스터 비밀번호 변경됨" + }, + "currentMasterPass": { + "message": "현재 마스터 비밀번호" + }, + "newMasterPass": { + "message": "새 마스터 비밀번호" + }, + "confirmNewMasterPass": { + "message": "새 마스터 비밀번호 확인" + }, + "encKeySettings": { + "message": "암호화 키 설정" + }, + "kdfAlgorithm": { + "message": "KDF 알고리즘" + }, + "kdfIterations": { + "message": "KDF 이터레이션" + }, + "kdfIterationsDesc": { + "message": "높은 KDF 반복자는 공격자의 무차별 공격으로부터 마스터 비밀번호를 보호해줍니다. $VALUE$ 이상의 값을 추천합니다.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "KDF 반복자를 너무 높게 설정하면 CPU가 느린 장치에서 Bitwarden에 로그인(및 잠금 해제)할 때 성능이 저하될 수 있습니다. $INCREMENT$ 단위로 값을 올려가며 모든 장치를 테스트하는 것이 좋습니다.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDF 변경" + }, + "encKeySettingsChanged": { + "message": "암호화 키 설정 변경됨" + }, + "dangerZone": { + "message": "위험 구역" + }, + "dangerZoneDesc": { + "message": "주의, 이 행동들은 되돌릴 수 없음!" + }, + "deauthorizeSessions": { + "message": "세션 해제" + }, + "deauthorizeSessionsDesc": { + "message": "계정이 다른 장치에 로그인되어 있습니까? 이전에 사용된 모든 컴퓨터 또는 장치 인증을 취소하려면 다음 단계로 나아가십시오. 이 보안 단계는 이전에 공용 PC를 사용했거나 실수로 타인의 장치에 비밀번호를 저장한 경우 권장됩니다. 이 단계에서는 이전에 기억된 2단계 로그인 세션도 모두 삭제됩니다." + }, + "deauthorizeSessionsWarning": { + "message": "계속 진행하면, 현재 세션 또한 로그아웃 되므로 다시 로그인하여야 합니다. 2단계 로그인이 활성화 된 경우 다시 요구하는 메세지가 표시됩니다. 다른 기기의 활성화 된 세션은 최대 1시간 동안 유지 될 수 있습니다." + }, + "sessionsDeauthorized": { + "message": "모든 세션 해제 됨" + }, + "purgeVault": { + "message": "보관함 삭제" + }, + "purgedOrganizationVault": { + "message": "삭제 된 조직 보관함" + }, + "vaultAccessedByProvider": { + "message": "보관함에 제공자가 액세스했습니다." + }, + "purgeVaultDesc": { + "message": "보관함 내의 모든 항목과 폴더를 삭제하려면 다음 단계로 나아가십시오. 조직에 속한 공유 항목들은 삭제되지 않습니다." + }, + "purgeOrgVaultDesc": { + "message": "조직의 보관함 내 모든 항목을 삭제하려면 다음 단계로 나아가십시오." + }, + "purgeVaultWarning": { + "message": "계정 삭제는 영구적이며 되돌릴 수 없습니다." + }, + "vaultPurged": { + "message": "보관함이 삭제되었습니다." + }, + "deleteAccount": { + "message": "계정 삭제" + }, + "deleteAccountDesc": { + "message": "귀하의 계정과 저장된 데이터들을 삭제하려면 아래를 계속 진행하십시오." + }, + "deleteAccountWarning": { + "message": "계정 삭제는 영구적이며 되돌릴 수 없습니다." + }, + "accountDeleted": { + "message": "계정 삭제됨" + }, + "accountDeletedDesc": { + "message": "당신의 계정과 연관된 모든 데이터들이 삭제되었습니다." + }, + "myAccount": { + "message": "내 계정" + }, + "tools": { + "message": "도구" + }, + "importData": { + "message": "데이터 가져오기" + }, + "importError": { + "message": "가져오기 오류" + }, + "importErrorDesc": { + "message": "가져오려고 하는 데이터에 문제가 있습니다. 아래에 표시된 파일의 오류를 해결한 뒤 다시 시도해 주세요." + }, + "importSuccess": { + "message": "데이터를 보관함으로 성공적으로 불러왔습니다." + }, + "importWarning": { + "message": "$ORGANIZATION$ 조직으로 데이터를 가져오려고 합니다. 데이터가 이 조직의 구성원과 공유될 수 있습니다. 계속하시겠습니까?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "데이터의 포맷이 올바르지 않습니다. 불러올 파일을 확인하고 다시 시도해 주십시오." + }, + "importNothingError": { + "message": "아무것도 가져오지 못했습니다." + }, + "importEncKeyError": { + "message": "내보내려는 파일을 복호화하던 중 오류가 발생했습니다. 암호화 키가 내보내려는 데이터를 암호화한 키와 일치하지 않습니다." + }, + "selectFormat": { + "message": "불러올 파일의 포맷" + }, + "selectImportFile": { + "message": "불러올 파일" + }, + "orCopyPasteFileContents": { + "message": "또는 가져온 파일 내용 복사/붙여넣기" + }, + "instructionsFor": { + "message": "$NAME$ 안내사항", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "옵션" + }, + "optionsDesc": { + "message": "웹 보관함 환경 사용자 지정" + }, + "optionsUpdated": { + "message": "옵션 업데이트됨" + }, + "language": { + "message": "언어(Language)" + }, + "languageDesc": { + "message": "웹 보관함에서 사용할 언어를 변경합니다." + }, + "disableIcons": { + "message": "웹 사이트 아이콘 사용 안 함" + }, + "disableIconsDesc": { + "message": "웹 사이트 아이콘을 사용하면 보관함 각 항목 옆에 이미지를 보여줍니다." + }, + "enableGravatars": { + "message": "Gravatar 사용", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "gravatar.com의 아바타 이미지를 사용." + }, + "enableFullWidth": { + "message": "전체 너비 레이아웃 활성화", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "웹 보관함이 브라우저 창의 전체 너비를 사용하도록 확장합니다." + }, + "default": { + "message": "기본값" + }, + "domainRules": { + "message": "도메인 규칙" + }, + "domainRulesDesc": { + "message": "여러 웹 사이트 도메인에 대해 동일한 로그인이 있는 경우, 웹 사이트가 \"유사\"하다고 표시할 수 있습니다. \"전역\" 도메인은 Bitwarden에서 당신을 위해 이미 생성했습니다." + }, + "globalEqDomains": { + "message": "전역 유사 도메인" + }, + "customEqDomains": { + "message": "사용자 지정 유사 도메인" + }, + "exclude": { + "message": "제외" + }, + "include": { + "message": "포함" + }, + "customize": { + "message": "사용자 지정" + }, + "newCustomDomain": { + "message": "새 사용자 지정 도메인" + }, + "newCustomDomainDesc": { + "message": "도메인 목록을 쉼표(,)로 구분하여 입력하십시오. \"기본\" 도메인만 사용할 수 있습니다. 하위 도메인을 입력하지 마십시오. 예를 들면, \"www.google.com\" 대신 \"google.com\"을 입력합니다. Android 앱을 다른 웹 사이트 도메인과 연결하려면 \"androidapp://package.name\"을 입력하십시오." + }, + "customDomainX": { + "message": "사용자 정의 도메인 $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "도메인 업데이트됨" + }, + "twoStepLogin": { + "message": "2단계 인증" + }, + "twoStepLoginDesc": { + "message": "로그인할 때 추가 단계를 요구하여 계정을 보호하십시오." + }, + "twoStepLoginOrganizationDesc": { + "message": "조직 수준에서 제공자를 구성하여 조직 내 사용자에게 2단계 로그인을 요구합니다." + }, + "twoStepLoginRecoveryWarning": { + "message": "2단계 로그인을 활성화하면 Bitwarden 계정을 영원히 잠글 수 있습니다. 복구 코드를 사용하면 정상적인 2단계 로그인 제공자를 더 이상 사용할 수 없는 경우(예. 장치를 잃어버렸을 때) 계정에 액세스할 수 있습니다. 계정에 접근하지 못한다면 Bitwarden 지원팀은 어떤 도움도 줄 수 없습니다. 복구 코드를 기록하거나 출력하여 안전한 장소에 보관할 것을 권장합니다." + }, + "viewRecoveryCode": { + "message": "복구 코드" + }, + "providers": { + "message": "공급자", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "활성화" + }, + "enabled": { + "message": "활성화됨" + }, + "premium": { + "message": "프리미엄", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "프리미엄 멤버십" + }, + "premiumRequired": { + "message": "프리미엄 멤버십 필요" + }, + "premiumRequiredDesc": { + "message": "이 기능을 사용하려면 프리미엄 멤버십이 필요합니다." + }, + "youHavePremiumAccess": { + "message": "프리미엄 멤버십 사용 중" + }, + "alreadyPremiumFromOrg": { + "message": "소속된 조직으로 이미 프리미엄 기능에 액세스할 수 있습니다." + }, + "manage": { + "message": "관리" + }, + "disable": { + "message": "비활성화" + }, + "twoStepLoginProviderEnabled": { + "message": "이 2단계 로그인 제공자는 귀하의 계정에 사용 가능합니다." + }, + "twoStepLoginAuthDesc": { + "message": "2단계 로그인 설정을 수정하려면 마스터 암호를 입력하십시오." + }, + "twoStepAuthenticatorDesc": { + "message": "다음 단계에 따라 인증자 앱으로 2단계 로그인 설정:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "2단계 인증자 앱 다운로드" + }, + "twoStepAuthenticatorNeedApp": { + "message": "2단계 인증자 앱이 필요하십니까? 다음 중 하나를 다운로드하세요" + }, + "iosDevices": { + "message": "iOS 기기" + }, + "androidDevices": { + "message": "Android 기기" + }, + "windowsDevices": { + "message": "Windows 기기" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "이 QR 코드를 인증 앱으로 스캔" + }, + "key": { + "message": "키" + }, + "twoStepAuthenticatorEnterCode": { + "message": "앱에서 결과로 나온 6자리 인증코드를 입력하십시오" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "다른 장치에 추가해야 하는 경우, 아래의 QR코드(혹은 키) 가 인증자 앱에 필요합니다." + }, + "twoStepDisableDesc": { + "message": "이 2단계 로그인 제공자를 사용하지 않도록 설정하시겠습니까?" + }, + "twoStepDisabled": { + "message": "2단계 로그인 제공자 비활성화됨." + }, + "twoFactorYubikeyAdd": { + "message": "계정에 새로운 YubiKey를 추가합니다." + }, + "twoFactorYubikeyPlugIn": { + "message": "YubiKey(NEO 혹은 4 시리즈)를 컴퓨터 USB 포트에 삽입하십시오." + }, + "twoFactorYubikeySelectKey": { + "message": "첫번째 비어있는 YubiKey 입력 필드를 선택하십시오." + }, + "twoFactorYubikeyTouchButton": { + "message": "YubiKey의 버튼을 터치하십시오" + }, + "twoFactorYubikeySaveForm": { + "message": "폼 저장하기" + }, + "twoFactorYubikeyWarning": { + "message": "플랫폼 제한으로 인해, 모든 Bitwarden 애플리케이션에서 YubiKey를 사용할 수 없습니다. YubiKey를 사용할 수 없을 때 계정에 접근할 수 있도록 다른 2단계 로그인 제공자를 활성화하십시오. 지원하는 플랫폼:" + }, + "twoFactorYubikeySupportUsb": { + "message": "웹 보관함, 데스크톱 응용프로그램, 명령 줄 인터페이스, USB 포트가 있는 장치의 브라우저 확장 기능은 YubiKey를 사용할 수 있습니다." + }, + "twoFactorYubikeySupportMobile": { + "message": "NFC 또는 USB 포트가 있는 장치의 모바일 앱은 YubiKey를 사용할 수 있습니다." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn 키 $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC 지원" + }, + "twoFactorYubikeySupportsNfc": { + "message": "내 키 중의 하나가 NFC를 지원합니다." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "YubiKey중 하나가 NFC(예: YubiKey NEO)를 지원할 경우, NFC 사용가능 여부가 감지될 때마다 모바일 장치에서 메시지가 표시됩니다." + }, + "yubikeysUpdated": { + "message": "YubiKey 업데이트됨" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Duo 관리자 패널에서 Bitwarden 애플리케이션 정보를 입력하십시오." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "비밀 키" + }, + "twoFactorDuoApiHostname": { + "message": "API 호스트 이름" + }, + "twoFactorEmailDesc": { + "message": "다음 단계에 따라 이메일로 2단계 로그인 설정:" + }, + "twoFactorEmailEnterEmail": { + "message": "확인 코드를 수신할 이메일을 입력하십시오." + }, + "twoFactorEmailEnterCode": { + "message": "이메일에서 결과로 나온 6자리 인증코드를 입력하십시오" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "계정에 FIDO U2F 보안 키 추가" + }, + "removeU2fConfirmation": { + "message": "정말로 이 보안 키를 제거하시겠습니까?" + }, + "twoFactorWebAuthnAdd": { + "message": "계정에 WebAuthn 보안 키 추가" + }, + "readKey": { + "message": "키 읽기" + }, + "keyCompromised": { + "message": "키가 손상되었습니다." + }, + "twoFactorU2fGiveName": { + "message": "보안 키를 식별할 수 있는 친근한 이름을 지정하십시오." + }, + "twoFactorU2fPlugInReadKey": { + "message": "컴퓨터의 USB 포트에 보안 키를 삽입하고 \"키 읽기\" 버튼을 클릭하십시오." + }, + "twoFactorU2fTouchButton": { + "message": "보안 키에 버튼이 있다면, 터치하십시오" + }, + "twoFactorU2fSaveForm": { + "message": "폼 저장하기" + }, + "twoFactorU2fWarning": { + "message": "플랫폼 제한으로 인해, 모든 Bitwarden 애플리케이션에서 FIDO U2F를 사용할 수 없습니다. FIDO U2F를 사용할 수 없을 때 계정에 접근할 수 있도록 다른 2단계 로그인 제공자를 활성화하십시오. 지원하는 플랫폼:" + }, + "twoFactorU2fSupportWeb": { + "message": "U2F 지원 브라우저가 있는 데스크탑/랩탑의 웹 보관함 및 브라우저 확장 (FIDO U2F가 활성화된 Chrome, Opera, Vivaldi 또는 Firefox 사용)" + }, + "twoFactorU2fWaiting": { + "message": "보안 키 버튼 터치를 기다리는 중" + }, + "twoFactorU2fClickSave": { + "message": "2단계 로그인에 이 보안 키를 사용하려면 아래의 \"저장\" 버튼을 클릭하십시오" + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "보안 키를 읽어오는데 문제가 발생했습니다. 다시 시도해보십시오." + }, + "twoFactorWebAuthnWarning": { + "message": "플랫폼 제한으로 인해, 모든 Bitwarden 애플리케이션에서 WebAuthn을 사용할 수 없습니다. WebAuthn을 사용할 수 없을 때 계정에 접근할 수 있도록 다른 2단계 로그인 방법을 활성화하십시오. 지원하는 플랫폼:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "WebAuthn 지원 브라우저가 있는 데스크탑/랩탑의 웹 보관함 및 브라우저 확장 (WebAuthn이 활성화된 Chrome, Opera, Vivaldi 또는 Firefox 사용)" + }, + "twoFactorRecoveryYourCode": { + "message": "Bitwarden 2단계 로그인 복구 코드" + }, + "twoFactorRecoveryNoCode": { + "message": "아직 2단계 로그인 제공자를 사용하도록 설정하지 않았습니다. 2단계 로그인 제공자를 사용하도록 설정한 후 여기에서 복구 코드를 확인하십시오." + }, + "printCode": { + "message": "코드 출력", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "보고서" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "안전하지 않은 웹사이트들 보고서" + }, + "unsecuredWebsitesReportDesc": { + "message": "http:// 스키마처럼 안전하지 않은 웹 사이트를 사용하는 것은 위험할 수 있습니다. 웹 사이트가 허용하는 경우 항상 https:// 스키마를 통해 액세스하여 연결이 암호화되도록 하십시오." + }, + "unsecuredWebsitesFound": { + "message": "안전하지 않은 웹사이트가 발견됨" + }, + "unsecuredWebsitesFoundDesc": { + "message": "보관함에 안전하지 않은 URI를 가진 항목 $COUNT$개를 발견했습니다. 웹 사이트에서 허용하는 경우 URI 스키마를 https://로 변경하십시오.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "보관함에 안전하지 않은 URI를 가진 항목이 없습니다." + }, + "inactive2faReport": { + "message": "비활성 2단계 인증 보고서" + }, + "inactive2faReportDesc": { + "message": "2단계 인증은 계정을 보호하는데 중요한 보안 설정입니다. 웹 사이트에서 제공하는 경우 항상 2단계 인증을 사용해야 합니다." + }, + "inactive2faFound": { + "message": "2단계 인증이 없는 로그인이 발견됨" + }, + "inactive2faFoundDesc": { + "message": "보관함에 (2fa.directory에 따른) 2단계 인증이 설정되지 않은 웹 사이트를 $COUNT$개 발견했습니다. 이러한 계정을 더욱 보호하려면 2단계 인증을 사용하십시오.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "보관함에서 2단계 인증 구성이 누락된 웹 사이트를 찾을 수 없습니다." + }, + "instructions": { + "message": "안내사항" + }, + "exposedPasswordsReport": { + "message": "노출된 비밀번호 보고서" + }, + "exposedPasswordsReportDesc": { + "message": "노출된 비밀번호는 해커들이 공개적으로 배포하거나 다크 웹에 판매되어 알려진 데이터 유출에서 발견된 비밀번호입니다." + }, + "exposedPasswordsFound": { + "message": "노출된 비밀번호가 발견됨" + }, + "exposedPasswordsFoundDesc": { + "message": "보관함에 알려진 데이터 유출로 노출된 비밀번호가 있는 $COUNT$개의 항목을 발견했습니다. 새 암호를 사용하도록 암호를 변경해야합니다.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "보관함 내 알려진 데이터 유출로 노출된 비밀번호를 사용하는 항목이 없습니다." + }, + "checkExposedPasswords": { + "message": "노출된 비밀번호 확인하기" + }, + "exposedXTimes": { + "message": "$COUNT$회 노출됨", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "취약한 비밀번호 보고서" + }, + "weakPasswordsReportDesc": { + "message": "취약한 비밀번호는 해커와 암호 해독에 사용되는 자동화 도구로 쉽게 짐작할 수 있습니다. Bitwarden 암호 생성기는 강력한 암호를 만드는데 도움을 줄 것입니다." + }, + "weakPasswordsFound": { + "message": "취약한 비밀번호가 발견됨" + }, + "weakPasswordsFoundDesc": { + "message": "강력한 비밀번호가 아닌 $COUNT$개의 항목을 보관함에서 찾았습니다. 더 강력한 암호를 사용하도록 업데이트해야 합니다.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "보관함에 취약한 비밀번호를 가진 항목이 없습니다." + }, + "reusedPasswordsReport": { + "message": "재사용된 비밀번호 보고서" + }, + "reusedPasswordsReportDesc": { + "message": "사용하는 서비스가 손상된 경우 다른 곳에서 동일한 암호를 다시 사용하면 해커가 더 많은 온라인 계정에 쉽게 액세스할 수 있습니다. 모든 계정 또는 서비스에 대해 고유한 암호를 사용하십시오." + }, + "reusedPasswordsFound": { + "message": "재사용된 비밀번호가 발견됨" + }, + "reusedPasswordsFoundDesc": { + "message": "보관함에서 재사용중인 $COUNT$개의 비밀번호를 찾았습니다. 고유한 값으로 변경해야 합니다.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "보관함에 재사용된 비밀번호를 가진 로그인이 없습니다." + }, + "reusedXTimes": { + "message": "$COUNT$회 재사용됨", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "데이터 유출 보고서" + }, + "breachDesc": { + "message": "\"유출(breach)\"이란, 사이트의 데이터가 불법적으로 해커에 의해 접근되고 공개되는 사건을 뜻합니다. 손상된 데이터 유형(이메일 주소, 비밀번호, 신용카드 등)을 검토하고 비밀번호 변경 등 적절한 조치를 취하십시오." + }, + "breachCheckUsernameEmail": { + "message": "사용하는 사용자 이름 혹은 이메일 주소를 확인해보세요." + }, + "checkBreaches": { + "message": "유출 확인하기" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$을 알려진 데이터 유출에서 발견하지 못했습니다.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "좋은 소식이에요", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$을 $COUNT$개의 온라인 상의 데이터 유출에서 발견되었습니다.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "유출된 계정이 발견됨" + }, + "compromisedData": { + "message": "손상된 데이터" + }, + "website": { + "message": "웹 사이트" + }, + "affectedUsers": { + "message": "영향을 받는 사용자" + }, + "breachOccurred": { + "message": "유출 발생함" + }, + "breachReported": { + "message": "유출 보고됨" + }, + "reportError": { + "message": "보고서를 불러오는 도중 오류가 발생했습니다. 다시 시도해주세요." + }, + "billing": { + "message": "결제" + }, + "accountCredit": { + "message": "계정 크레딧", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "계정 잔액", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "크레딧 추가", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "금액", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "추가된 크레딧은 결제가 완전히 처리된 후 계정에 표시됩니다. 일부 결제 방식은 지연되거나 처리하는 데 시간이 오래 걸릴 수 있습니다." + }, + "makeSureEnoughCredit": { + "message": "이 구매에 사용할 수 있는 크레딧이 충분한지 확인하십시오. 만약 계정에 충분한 크레딧이 없다면, 그 차액만큼 기본 결제 방식에서 지불될 것입니다. 청구 페이지를 통해 계정에 크레딧을 추가할 수 있습니다." + }, + "creditAppliedDesc": { + "message": "계정의 크레딧을 구매에 사용할 수 있습니다. 사용 가능한 모든 크레딧이 이 계정에 대해 생성된 청구서에 자동으로 적용됩니다." + }, + "goPremium": { + "message": "프리미엄 가입", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "프리미엄으로 업그레이드했습니다." + }, + "premiumUpgradeUnlockFeatures": { + "message": "프리미엄 회원으로 계정을 업그레이드하고 몇 가지 훌륭한 추가 기능을 잠금 해제하세요." + }, + "premiumSignUpStorage": { + "message": "1GB의 암호화된 파일 저장소." + }, + "premiumSignUpTwoStep": { + "message": "YubiKey나 FIDO U2F, Duo 등의 추가적인 2단계 인증 옵션." + }, + "premiumSignUpEmergency": { + "message": "긴급 접근" + }, + "premiumSignUpReports": { + "message": "보관함을 안전하게 유지하기 위한 암호 위생, 계정 상태, 데이터 유출 보고서" + }, + "premiumSignUpTotp": { + "message": "보관함에 등록된 로그인 항목을 위한 TOTP 인증 코드(2FA) 생성기." + }, + "premiumSignUpSupport": { + "message": "고객 지원 우선 순위 제공." + }, + "premiumSignUpFuture": { + "message": "앞으로 추가될 모든 프리미엄 기능을 사용할 수 있습니다. 기대하세요!" + }, + "premiumPrice": { + "message": "이 모든 기능을 연 $PRICE$에 이용하실 수 있습니다!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "부가 기능" + }, + "premiumAccess": { + "message": "프리미엄 이용권" + }, + "premiumAccessDesc": { + "message": "$INTERVAL$간 $PRICE$로 조직의 모든 구성원에게 프리미엄 액세스를 추가할 수 있습니다.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "추가 저장소 용량 (GB)" + }, + "additionalStorageGbDesc": { + "message": "# 의 추가 GB" + }, + "additionalStorageIntervalDesc": { + "message": "귀하의 플랜은 $SIZE$의 암호화된 파일 저장소가 제공됩니다. GB / $INTERVAL$당 $PRICE$로 저장소용량을 추가할 수 있습니다.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "요약" + }, + "total": { + "message": "총합" + }, + "year": { + "message": "년" + }, + "month": { + "message": "월" + }, + "monthAbbr": { + "message": "월", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "귀하의 결제방식으로 즉시 요금이 부과되고 정기적으로 매 년 부과됩니다. 언제든지 취소할 수 있습니다." + }, + "paymentCharged": { + "message": "귀하의 결제방식으로 즉시 요금이 부과되고 정기적으로 매 $INTERVAL$ 부과됩니다. 언제든지 취소할 수 있습니다.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "귀하의 플랜은 7일 무료 평가판입니다. 평가 기간이 만료될 때까지 카드에서 대금이 지불되지 않습니다. 이후 정기적으로 매 $INTERVAL$ 청구됩니다. 언제든지 취소할 수 있습니다." + }, + "paymentInformation": { + "message": "결제 정보" + }, + "billingInformation": { + "message": "결제 정보" + }, + "creditCard": { + "message": "신용카드" + }, + "paypalClickSubmit": { + "message": "PayPal 버튼을 클릭하여 PayPal 계정에 로그인한 후 아래의 제출 버튼을 클릭하여 계속 진행하십시오." + }, + "cancelSubscription": { + "message": "구독 취소" + }, + "subscriptionCanceled": { + "message": "구독을 취소했습니다." + }, + "pendingCancellation": { + "message": "보류 취소" + }, + "subscriptionPendingCanceled": { + "message": "구독은 현재 결제 기간이 끝날 때 취소로 표시됩니다." + }, + "reinstateSubscription": { + "message": "구독 복원" + }, + "reinstateConfirmation": { + "message": "보류중인 취소 요청을 제거하고 구독을 복원하시겠습니까?" + }, + "reinstated": { + "message": "구독을 복원했습니다." + }, + "cancelConfirmation": { + "message": "정말로 취소하시겠습니까? 청구 주기 후에 이 구독의 모든 기능에 대한 접근을 잃게 됩니다." + }, + "canceledSubscription": { + "message": "구독을 취소했습니다." + }, + "neverExpires": { + "message": "만료 없음" + }, + "status": { + "message": "상태" + }, + "nextCharge": { + "message": "다음 지불" + }, + "details": { + "message": "세부사항" + }, + "downloadLicense": { + "message": "라이선스 다운로드" + }, + "updateLicense": { + "message": "라이선스 업데이트" + }, + "updatedLicense": { + "message": "라이선스 업데이트됨" + }, + "manageSubscription": { + "message": "구독 관리" + }, + "storage": { + "message": "저장소" + }, + "addStorage": { + "message": "저장소 용량 추가" + }, + "removeStorage": { + "message": "저장소 용량 제거" + }, + "subscriptionStorage": { + "message": "귀하의 구독은 총 $MAX_STORAGE$ GB의 암호화된 파일 저장소 용량을 갖고 있습니다. 현재 $USED_STORAGE$만큼 사용했습니다.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "결제 수단" + }, + "noPaymentMethod": { + "message": "파일에 결제방식이 없습니다." + }, + "addPaymentMethod": { + "message": "결제 수단 추가" + }, + "changePaymentMethod": { + "message": "결제 수단 변경" + }, + "invoices": { + "message": "청구서" + }, + "noInvoices": { + "message": "청구서 없음" + }, + "paid": { + "message": "결제됨", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "미결제", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "거래내역", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "거래내역 없음." + }, + "chargeNoun": { + "message": "결제", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "환불", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "모든 요금은 $STATEMENT_NAME$으로 내역서에 표시됩니다.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "추가되는 저장소 용량 (GB)" + }, + "gbStorageRemove": { + "message": "삭제되는 저장소 용량 (GB)" + }, + "storageAddNote": { + "message": "저장소 용량을 추가하면 청구 총계가 조정되고 파일에 즉시 지불 방법이 청구됩니다. 첫 번째 요금은 현재 청구 주기의 나머지 기간 동안 적립될 것입니다." + }, + "storageRemoveNote": { + "message": "저장소 용량을 제거하면 다음 청구 비용에 대한 크레딧으로 할당된 청구 총계가 조정될 것입니다." + }, + "adjustedStorage": { + "message": "$AMOUNT$GB 저장소로 조정됨", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "고객 지원 서비스에 문의" + }, + "updatedPaymentMethod": { + "message": "결제방식 업데이트됨." + }, + "purchasePremium": { + "message": "프리미엄 구매" + }, + "licenseFile": { + "message": "라이선스 파일" + }, + "licenseFileDesc": { + "message": "라이선스 파일의 파일명은 $FILE_NAME$과 같을 것입니다.", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "프리미엄 멤버십으로 계정을 업그레이드하려면 유효한 라이선스 파일을 업로드해야 합니다." + }, + "uploadLicenseFileOrg": { + "message": "온-프레미스 호스트 조직을 생성하려면 유효한 라이선스 파일을 업로드하십시오." + }, + "accountEmailMustBeVerified": { + "message": "계정의 이메일 주소를 확인 해야 합니다." + }, + "newOrganizationDesc": { + "message": "조직에서는 다른 사람과 저장소 일부를 공유할 수 있을 뿐 아니라 가족, 소규모 팀 또는 대기업과 같은 특정 엔터티에 대한 관련 사용자를 관리할 수 있습니다." + }, + "generalInformation": { + "message": "일반 정보" + }, + "organizationName": { + "message": "조직 이름" + }, + "accountOwnedBusiness": { + "message": "이 계정은 기업이 소유하고 있습니다." + }, + "billingEmail": { + "message": "결제 이메일" + }, + "businessName": { + "message": "기업 이름" + }, + "chooseYourPlan": { + "message": "플랜을 선택하십시오" + }, + "users": { + "message": "사용자" + }, + "userSeats": { + "message": "사용자 수" + }, + "additionalUserSeats": { + "message": "추가 사용자 수" + }, + "userSeatsDesc": { + "message": "# 의 사용자 수" + }, + "userSeatsAdditionalDesc": { + "message": "귀하의 플랜은 $BASE_SEATS$개의 사용자 수가 제공됩니다. 사용자 당 월 $SEAT_PRICE$로 사용자를 추가할 수 있습니다.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "사용자 수가 얼마나 필요하십니까? 필요한 경우 나중에 사용자를 추가할 수 있습니다." + }, + "planNameFree": { + "message": "무료", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "테스트 용도나 개인 사용자는 다른 사용자에게 $COUNT$회 공유할 수 있습니다.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "가정" + }, + "planDescFamilies": { + "message": "개인적인 사용을 위해 가족과 친구들에게 공유하세요." + }, + "planNameTeams": { + "message": "팀" + }, + "planDescTeams": { + "message": "기업 및 기타 팀 조직용." + }, + "planNameEnterprise": { + "message": "기업" + }, + "planDescEnterprise": { + "message": "기업 및 기타 대규모 조직용." + }, + "freeForever": { + "message": "영구 무료" + }, + "includesXUsers": { + "message": "$COUNT$명의 사용자 포함", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "추가 사용자" + }, + "costPerUser": { + "message": "사용자 당 $COST$", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "$COUNT$명의 사용자(자신 포함) 로 제한됨", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "$COUNT$개의 컬렉션으로 제한됨", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "$COUNT$명까지 사용자 추가 및 공유", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "사용자 무제한 추가 및 공유" + }, + "createUnlimitedCollections": { + "message": "무제한 컬렉션 만들기" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$의 암호화된 파일 저장소", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "온-프레미스 호스팅 (선택 사항)" + }, + "usersGetPremium": { + "message": "사용자가 프리미엄 멤버십 기능에 액세스 가능" + }, + "controlAccessWithGroups": { + "message": "그룹을 통한 사용자 액세스 제어" + }, + "syncUsersFromDirectory": { + "message": "디렉토리로부터 사용자 및 그룹 동기화" + }, + "trackAuditLogs": { + "message": "감사 로그로 사용자 동작 추적" + }, + "enforce2faDuo": { + "message": "Duo 2FA를 적용" + }, + "priorityCustomerSupport": { + "message": "우선 고객 지원" + }, + "xDayFreeTrial": { + "message": "$COUNT$일간 무료 평가, 언제든지 취소", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "월간" + }, + "annually": { + "message": "연간" + }, + "basePrice": { + "message": "기준 단가" + }, + "organizationCreated": { + "message": "조직 생성됨" + }, + "organizationReadyToGo": { + "message": "새 조직이 준비 완료되었습니다!" + }, + "organizationUpgraded": { + "message": "조직이 업그레이드되었습니다." + }, + "leave": { + "message": "나가기" + }, + "leaveOrganizationConfirmation": { + "message": "정말 이 조직을 떠나시겠습니까?" + }, + "leftOrganization": { + "message": "조직을 떠났습니다." + }, + "defaultCollection": { + "message": "기본 컬렉션" + }, + "getHelp": { + "message": "문의하기" + }, + "getApps": { + "message": "앱 다운로드" + }, + "loggedInAs": { + "message": "로그인됨" + }, + "eventLogs": { + "message": "이벤트 로그" + }, + "people": { + "message": "인물" + }, + "policies": { + "message": "정책" + }, + "singleSignOn": { + "message": "통합 인증(SSO)" + }, + "editPolicy": { + "message": "정책 수정" + }, + "groups": { + "message": "그룹" + }, + "newGroup": { + "message": "새 그룹" + }, + "addGroup": { + "message": "그룹 추가" + }, + "editGroup": { + "message": "그룹 편집" + }, + "deleteGroupConfirmation": { + "message": "정말 이 그룹을 삭제하시겠습니까?" + }, + "removeUserConfirmation": { + "message": "정말 이 사용자를 제거하시겠습니까?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "외부 ID" + }, + "externalIdDesc": { + "message": "외부 Id는 참조로 사용되거나 사용자 디렉토리같은 외부 시스템에 리소스를 링크할 수 있습니다." + }, + "accessControl": { + "message": "접근 제어" + }, + "groupAccessAllItems": { + "message": "이 그룹은 모든 항목에 액세스하고 수정할 수 있습니다." + }, + "groupAccessSelectedCollections": { + "message": "이 그룹은 선택된 컬렉션에만 액세스할 수 있습니다." + }, + "readOnly": { + "message": "읽기 전용" + }, + "newCollection": { + "message": "새 컬렉션" + }, + "addCollection": { + "message": "컬렉션 추가" + }, + "editCollection": { + "message": "컬렉션 편집" + }, + "deleteCollectionConfirmation": { + "message": "정말 이 컬렉션을 삭제하시겠습니까?" + }, + "editUser": { + "message": "사용자 편집" + }, + "inviteUser": { + "message": "사용자 초대" + }, + "inviteUserDesc": { + "message": "아래에 Bitwarden 계정 이메일 주소를 입력하여 조직에 새 사용자를 초대하십시오. Bitwarden 계정을 가지고 있지 않다면, 새로운 계정을 만들라는 메시지가 표시됩니다." + }, + "inviteMultipleEmailDesc": { + "message": "이메일 주소 목록을 쉼표(,)로 구분하여 한 번에 최대 $COUNT$명의 사용자를 초대할 수 있습니다.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "이 사용자는 계정을 보호하기 위해 2단계 로그인을 사용하고 있습니다." + }, + "userAccessAllItems": { + "message": "이 사용자는 모든 항목에 액세스하고 수정할 수 있습니다." + }, + "userAccessSelectedCollections": { + "message": "이 사용자는 선택된 컬렉션에만 액세스할 수 있습니다." + }, + "search": { + "message": "검색" + }, + "invited": { + "message": "초대함" + }, + "accepted": { + "message": "수락함" + }, + "confirmed": { + "message": "확인됨" + }, + "clientOwnerEmail": { + "message": "클라이언트 소유자 이메일" + }, + "owner": { + "message": "소유자" + }, + "ownerDesc": { + "message": "조직의 모든 측면을 관리할 수있는 최고 액세스 사용자." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "관리자" + }, + "adminDesc": { + "message": "관리자는 모든 항목, 컬렉션 및 조직 내 속한 사용자에 대해 액세스하고 관리할 수 있습니다." + }, + "user": { + "message": "사용자" + }, + "userDesc": { + "message": "조직 내 할당된 컬렉션에 액세스할 수 있는 일반 사용자." + }, + "manager": { + "message": "관리자" + }, + "managerDesc": { + "message": "관리자는 조직 내 할당된 컬렉션에 액세스하고 관리할 수 있습니다." + }, + "all": { + "message": "모두" + }, + "refresh": { + "message": "새로 고침" + }, + "timestamp": { + "message": "타임스탬프" + }, + "event": { + "message": "이벤트" + }, + "unknown": { + "message": "알 수 없음" + }, + "loadMore": { + "message": "더 불러오기" + }, + "mobile": { + "message": "모바일", + "description": "Mobile app" + }, + "extension": { + "message": "확장", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "데스크탑", + "description": "Desktop app" + }, + "webVault": { + "message": "웹 보관함" + }, + "loggedIn": { + "message": "로그인됨." + }, + "changedPassword": { + "message": "계정 비밀번호가 변경됨." + }, + "enabledUpdated2fa": { + "message": "2단계 로그인 활성화/갱신됨." + }, + "disabled2fa": { + "message": "2단계 로그인 비활성화됨." + }, + "recovered2fa": { + "message": "2단계 로그인으로 복구된 계정." + }, + "failedLogin": { + "message": "잘못된 암호로 로그인 시도가 실패했습니다." + }, + "failedLogin2fa": { + "message": "잘못된 2단계 로그인으로 로그인 시도가 실패했습니다." + }, + "exportedVault": { + "message": "보관함을 내보냈습니다." + }, + "exportedOrganizationVault": { + "message": "조직 보관함을 내보냈습니다." + }, + "editedOrgSettings": { + "message": "조직 설정이 수정되었습니다." + }, + "createdItemId": { + "message": "$ID$ 항목이 생성되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "$ID$ 항목이 수정되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "$ID$ 항목이 삭제되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "$ID$ 항목을 조직으로 이동시켰습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "$ID$ 항목을 확인했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "$ID$ 항목의 비밀번호를 확인했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "$ID$ 항목의 숨겨진 필드를 확인했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "$ID$ 항목의 보안 코드를 확인했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "$ID$ 항목의 비밀번호를 복사했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "$ID$ 항목의 숨겨진 필드를 복사했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "$ID$ 항목의 보안 코드를 복사했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "$ID$ 항목을 자동으로 채웠습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "$ID$ 컬렉션이 생성되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "$ID$ 컬렉션이 수정되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "$ID$ 컬렉션이 삭제되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "$ID$ 정책을 편집했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "$ID$ 그룹을 만들었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "$ID$ 그룹을 편집했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "$ID$ 그룹을 삭제했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "$ID$ 사용자를 제거했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "$ID$ 항목에 첨부 파일을 만들었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "$ID$ 항목에서 첨부 파일을 삭제했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "$ID$ 항목에 대한 컬렉션이 수정되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "$ID$ 사용자를 초대했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "$ID$ 사용자가 확인되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "$ID$ 사용자를 편집했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "$ID$ 사용자에 대한 그룹이 편집되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "$ID$ 사용자에 대한 SSO 연결이 해제되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "$ID$ 조직을 만들었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "$ID$ 조직을 추가했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "$ID$ 조직을 제거했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "기기" + }, + "view": { + "message": "보기" + }, + "invalidDateRange": { + "message": "날짜 범위가 잘못되었습니다." + }, + "errorOccurred": { + "message": "오류가 발생했습니다." + }, + "userAccess": { + "message": "사용자 접근" + }, + "userType": { + "message": "사용자 유형" + }, + "groupAccess": { + "message": "그룹 접근" + }, + "groupAccessUserDesc": { + "message": "이 사용자가 속한 그룹을 편집합니다." + }, + "invitedUsers": { + "message": "사용자를 초대했습니다." + }, + "resendInvitation": { + "message": "초대장 다시 보내기" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$가 다시 초대되었습니다.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "확인" + }, + "confirmUser": { + "message": "사용자 확인" + }, + "hasBeenConfirmed": { + "message": "$USER$가 확인되었습니다.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "사용자 확인" + }, + "usersNeedConfirmed": { + "message": "초대에 수락한 사용자가 있지만 여전히 확인이 필요합니다. 사용자는 확인될 때까지 조직에 액세스할 수 없습니다." + }, + "startDate": { + "message": "시작 날짜" + }, + "endDate": { + "message": "종료 날짜" + }, + "verifyEmail": { + "message": "이메일 인증하기" + }, + "verifyEmailDesc": { + "message": "모든 기능에 대한 액세스 잠금을 해제하려면 계정의 이메일을 인증하십시오." + }, + "verifyEmailFirst": { + "message": "계정의 이메일 주소를 먼저 확인해야 합니다." + }, + "checkInboxForVerification": { + "message": "이메일 편지함에서 인증 링크를 확인하십시오." + }, + "emailVerified": { + "message": "이메일이 확인되었습니다." + }, + "emailVerifiedFailed": { + "message": "이메일을 인증할 수 없습니다. 새로운 인증을 이메일로 전송하십시오." + }, + "emailVerificationRequired": { + "message": "이메일 인증 필요함" + }, + "emailVerificationRequiredDesc": { + "message": "이 기능을 이용하기 위해서는 이메일을 인증해야 합니다." + }, + "updateBrowser": { + "message": "브라우저 업데이트" + }, + "updateBrowserDesc": { + "message": "지원하지 않는 웹 브라우저를 사용하고 있습니다. 웹 보관함 기능이 제대로 동작하지 않을 수 있습니다." + }, + "joinOrganization": { + "message": "조직 참가" + }, + "joinOrganizationDesc": { + "message": "이 조직에서 귀하에게 가입 초대를 보냈습니다. 초대를 수락하려면 로그인하거나 Bitwarden 계정을 생성해야 합니다." + }, + "inviteAccepted": { + "message": "초대 수락됨" + }, + "inviteAcceptedDesc": { + "message": "관리자의 확인을 받으면 조직에 액세스할 수 있습니다. 승인이 이뤄지면 이메일을 보내드리겠습니다." + }, + "inviteAcceptFailed": { + "message": "초대를 수락할 수 없습니다. 조직 관리자에게 새 초대장을 보내도록 요청하십시오." + }, + "inviteAcceptFailedShort": { + "message": "초대를 수락할 수 없습니다. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "이메일 기억하기" + }, + "recoverAccountTwoStepDesc": { + "message": "일반적인 2단계 로그인 방법을 통해 계정에 액세스할 수 없는 경우, 2단계 로그인 복구 코드를 사용하여 계정의 모든 2단계 제공자를 비활성화할 수 있습니다." + }, + "recoverAccountTwoStep": { + "message": "계정 2단계 로그인 복구하기" + }, + "twoStepRecoverDisabled": { + "message": "계정에 2단계 로그인이 비활성화되어 있습니다." + }, + "learnMore": { + "message": "더 알아보기" + }, + "deleteRecoverDesc": { + "message": "계정을 복구하거나 삭제하려면 아래에 이메일 주소를 입력하십시오." + }, + "deleteRecoverEmailSent": { + "message": "계정이 존재한다면 추가적인 안내사항이 있는 이메일을 보냈습니다." + }, + "deleteRecoverConfirmDesc": { + "message": "Biitiwarden 계정을 삭제하도록 요청했습니다. 아래 버튼을 클릭하여 확인하십시오." + }, + "myOrganization": { + "message": "내 조직" + }, + "deleteOrganization": { + "message": "조직 삭제" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "조직 삭제됨" + }, + "organizationDeletedDesc": { + "message": "조직과 연관된 모든 데이터가 삭제되었습니다." + }, + "organizationUpdated": { + "message": "조직 갱신됨" + }, + "taxInformation": { + "message": "세금 정보" + }, + "taxInformationDesc": { + "message": "청구서에 대한 세금 정보를 제공(또는 업데이트) 하려면 지원팀에 문의하십시오." + }, + "billingPlan": { + "message": "플랜", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Change Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "아래 정보를 제공하여 계정을 다른 플랜으로 업그레이드하십시오. 계정에 활성화된 결제 방식이 추가되어 있는지 확인하십시오.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "청구서 #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "청구서 보기" + }, + "downloadInvoice": { + "message": "청구서 다운로드" + }, + "verifyBankAccount": { + "message": "은행 계좌 인증하기" + }, + "verifyBankAccountDesc": { + "message": "우리는 귀하의 은행 계좌에 2건의 소액 결제정보를 생성했습니다(보여지기까지 1~2영업일 소요됨). 은행 계좌를 인증하려면 해당 금액을 입력하십시오." + }, + "verifyBankAccountInitialDesc": { + "message": "은행 계좌를 통한 결제는 미국 내 고객만 이용할 수 있습니다. 은행 계좌는 확인이 필요합니다. 1-2영업일 이내에 2건의 소액 결제정보를 생성할 것입니다. 은행 계좌를 인증하려면 조직 내 청구 페이지에서 해당 금액을 입력하십시오." + }, + "verifyBankAccountFailureWarning": { + "message": "은행 계좌를 확인하지 않으면 결제가 누락되어 구독이 비활성화됩니다." + }, + "verifiedBankAccount": { + "message": "계좌 번호가 확인되었습니다." + }, + "bankAccount": { + "message": "은행 계좌" + }, + "amountX": { + "message": "금액 $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "라우팅 번호", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "계좌 번호" + }, + "accountHolderName": { + "message": "계좌 소유자 이름" + }, + "bankAccountType": { + "message": "계좌 유형" + }, + "bankAccountTypeCompany": { + "message": "회사 (기업)" + }, + "bankAccountTypeIndividual": { + "message": "개인 (개인)" + }, + "enterInstallationId": { + "message": "설치 ID를 입력하십시오" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "최대 시트 제한 (선택)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "사용자 수 추가", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "사용자 수 제거", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "귀하의 구독은 총 $COUNT$명의 사용자를 허용합니다.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "구독 제한 (선택)" + }, + "subscriptionSeats": { + "message": "구독 시트" + }, + "subscriptionUpdated": { + "message": "구독 업데이트됨" + }, + "additionalOptions": { + "message": "추가 옵션" + }, + "additionalOptionsDesc": { + "message": "구독과 관련하여 추가적인 도움이 필요한 경우 고객 지원에 문의하십시오." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "추가할 사용자 수" + }, + "seatsToRemove": { + "message": "제거할 사용자 수" + }, + "seatsAddNote": { + "message": "사용자 수를 추가하면 청구 총계가 조정되고 파일에 즉시 지불 방법이 청구됩니다. 첫 번째 요금은 현재 청구 주기의 나머지 기간 동안 적립될 것입니다." + }, + "seatsRemoveNote": { + "message": "사용자 수를 제거하면 다음 청구 비용에 대한 크레딧으로 할당된 청구 총계가 조정될 것입니다." + }, + "adjustedSeats": { + "message": "사용자 수가 $AMOUNT$명으로 조정됨", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "키 업데이트됨" + }, + "updateKeyTitle": { + "message": "키 업데이트" + }, + "updateEncryptionKey": { + "message": "암호화 키 업데이트" + }, + "updateEncryptionKeyShortDesc": { + "message": "현재 오래된 암호화 체계를 사용하고 있습니다." + }, + "updateEncryptionKeyDesc": { + "message": "우리는 더 나은 보안 및 새로운 기능에 대한 액세스를 제공하는 더 큰 암호화 키로 이동했습니다. 암호화 키를 업데이트하는 것은 빠르고 쉽습니다. 그저 마스터 비밀번호를 입력하면 됩니다. 이 업데이트는 결국 필수사항이 될 것입니다." + }, + "updateEncryptionKeyWarning": { + "message": "암호화 키를 업데이트하고난 후 현재 사용 중인 모든 Bitwarden 애플리케이션(예. 모바일 앱 혹은 브라우저 확장 기능)에서 로그아웃 후 다시 로그인해야 합니다. 재로그인하지 않으면 (새 암호화 키를 다운로드받는 경우) 데이터 손실이 발생할 수 있습니다. 자동으로 로그아웃을 시도하지만 지연될 수 있습니다." + }, + "updateEncryptionKeyExportWarning": { + "message": "이전에 암호화 상태로 내보내기하여 저장한 데이터도 무효화됩니다." + }, + "subscription": { + "message": "구독" + }, + "loading": { + "message": "불러오는 중" + }, + "upgrade": { + "message": "업그레이드" + }, + "upgradeOrganization": { + "message": "조직 업그레이드" + }, + "upgradeOrganizationDesc": { + "message": "이 기능은 무료 조직에서는 사용할 수 없습니다. 더 많은 기능을 이용하려면 유료 플랜으로 전환하십시오." + }, + "createOrganizationStep1": { + "message": "조직 만들기: 1단계" + }, + "createOrganizationCreatePersonalAccount": { + "message": "조직을 생성하기 전에 먼저 무료 개인 계정을 생성해야 합니다." + }, + "refunded": { + "message": "환불됨" + }, + "nothingSelected": { + "message": "아무것도 선택하지 않았습니다." + }, + "acceptPolicies": { + "message": "이 박스를 체크하면 다음에 동의하는 것으로 간주됩니다:" + }, + "acceptPoliciesError": { + "message": "서비스 약관 및 개인 정보 보호 정책을 확인하지 않았습니다." + }, + "termsOfService": { + "message": "서비스 약관" + }, + "privacyPolicy": { + "message": "개인 정보 보호 정책" + }, + "filters": { + "message": "필터" + }, + "vaultTimeout": { + "message": "보관함 시간 제한" + }, + "vaultTimeoutDesc": { + "message": "보관함이 언제까지 시간을 제한하고 선택된 행동을 수행하지 선택해주세요." + }, + "oneMinute": { + "message": "1분" + }, + "fiveMinutes": { + "message": "5분" + }, + "fifteenMinutes": { + "message": "15분" + }, + "thirtyMinutes": { + "message": "30분" + }, + "oneHour": { + "message": "1시간" + }, + "fourHours": { + "message": "4시간" + }, + "onRefresh": { + "message": "브라우저 새로 고침 시" + }, + "dateUpdated": { + "message": "업데이트됨", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "비밀번호 업데이트됨", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "조직이 비활성화됨" + }, + "licenseIsExpired": { + "message": "라이선스가 만료되었습니다." + }, + "updatedUsers": { + "message": "업데이트된 사용자" + }, + "selected": { + "message": "선택됨" + }, + "ownership": { + "message": "소유자" + }, + "whoOwnsThisItem": { + "message": "이 항목의 소유자는 누구입니까?" + }, + "strong": { + "message": "강함", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "괜찮음", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "약함", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "매우 약함", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "취약한 마스터 비밀번호" + }, + "weakMasterPasswordDesc": { + "message": "선택한 마스터 비밀번호는 취약합니다. Bitwarden 계정을 확실히 보호하려면 강력한 마스터 비밀번호(혹은 패스프레이즈)를 사용해야 합니다. 정말 이 마스터 비밀번호를 사용하시겠습니까?" + }, + "rotateAccountEncKey": { + "message": "내 계정의 암호화 키 회전" + }, + "rotateEncKeyTitle": { + "message": "암호화 키 교체하기" + }, + "rotateEncKeyConfirmation": { + "message": "정말 계정의 암호화 키를 교체하시겠습니까?" + }, + "attachmentsNeedFix": { + "message": "이 항목은 수정이 필요한 오래된 파일을 갖고 있습니다." + }, + "attachmentFixDesc": { + "message": "이것은 수정이 필요한 오래된 파일입니다. 자세한 내용을 보려면 클릭하십시오." + }, + "fix": { + "message": "수정", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "계정의 암호화 키를 교체하기 전에 보관함 내 오래된 파일 수정이 필요합니다." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "무료", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API 키" + }, + "apiKeyDesc": { + "message": "API 키를 사용하여 Bitwarden 공용 API에 인증할 수 있습니다." + }, + "apiKeyRotateDesc": { + "message": "API 키를 교체하면 이전 키는 무효화됩니다. 현재 키가 더 이상 안전하지 않다고 판단되면 API 키를 교체할 수 있습니다." + }, + "apiKeyWarning": { + "message": "귀하의 API 키는 조직에 대한 전체 액세스 권한을 가집니다. 이것은 비밀로 해야 합니다." + }, + "userApiKeyDesc": { + "message": "API 키를 사용하여 Bitwarden CLI에 인증할 수 있습니다." + }, + "userApiKeyWarning": { + "message": "당신의 API 키는 대체 인증 수단입니다. 안전하게 보관해주세요." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 클라이언트 자격 증명", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API 키 보기" + }, + "rotateApiKey": { + "message": "API 키 교체" + }, + "selectOneCollection": { + "message": "반드시 하나 이상의 모음을 선택해야 합니다." + }, + "couldNotChargeCardPayInvoice": { + "message": "카드에 청구할 수 없습니다. 아래 목록에서 결제되지 않은 인보이스를 확인하고 결제해주세요." + }, + "inAppPurchase": { + "message": "애플리케이션 내 구매" + }, + "cannotPerformInAppPurchase": { + "message": "인 앱 결제 수단을 사용하고 있을 때에는 이 행동을 수행할 수 없습니다." + }, + "manageSubscriptionFromStore": { + "message": "인 앱 결제가 이루어진 스토어에서 구독을 관리해야 합니다." + }, + "minLength": { + "message": "최소 길이" + }, + "clone": { + "message": "복제" + }, + "masterPassPolicyDesc": { + "message": "마스터 비밀번호 강도에 대한 최소 요구 사항을 설정해주세요." + }, + "twoStepLoginPolicyDesc": { + "message": "개인 계정에서 2단계 로그인을 요구합니다." + }, + "twoStepLoginPolicyWarning": { + "message": "2단계 로그인을 활성화하지 않은 단체 맴버는 단체에서 제거되며 변경 사항에 대한 이메일 알림을 받습니다." + }, + "twoStepLoginPolicyUserWarning": { + "message": "사용자 계정에 대해서 2단계 로그인을 요구하는 단체의 멤버입니다. 모든 2단계 로그인 수단을 비활성화한다면 단체에서 자동으로 제거됩니다." + }, + "passwordGeneratorPolicyDesc": { + "message": "비밀번호 생성기 설정에 최소 요구 사항을 설정해주세요." + }, + "passwordGeneratorPolicyInEffect": { + "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": "새 마스터 비밀번호가 정책 요구 사항을 따르지 않습니다." + }, + "minimumNumberOfWords": { + "message": "단어 최소 개수" + }, + "defaultType": { + "message": "기본 유형" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "휴지통 검색" + }, + "permanentlyDelete": { + "message": "영구적으로 삭제" + }, + "permanentlyDeleteSelected": { + "message": "선택한 항목을 영구적으로 삭제" + }, + "permanentlyDeleteItem": { + "message": "영구적으로 항목 삭제" + }, + "permanentlyDeleteItemConfirmation": { + "message": "정말로 이 항목을 영구적으로 삭제하시겠습니까?" + }, + "permanentlyDeletedItem": { + "message": "영구적으로 삭제된 항목" + }, + "permanentlyDeletedItems": { + "message": "영구적으로 삭제된 항목" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "영구 삭제를 위해 $COUNT$ 개의 항목이 선택되었습니다. 정말로 이 항목들을 모두 영구적으로 삭제하시겠습니까?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "영구적으로 삭제된 항목 $ID$ 을(를) 삭제했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "복원" + }, + "restoreSelected": { + "message": "선택 항목 복원" + }, + "restoreItem": { + "message": "항목 복구" + }, + "restoredItem": { + "message": "복구된 항목" + }, + "restoredItems": { + "message": "복구된 항목" + }, + "restoreItemConfirmation": { + "message": "정말로 이 항목을 복구하시겠습니까?" + }, + "restoreItems": { + "message": "항목 복구" + }, + "restoreSelectedItemsDesc": { + "message": "복구를 위해 $COUNT$ 개의 항목이 선택되었습니다. 정말로 이 항목들을 모두 복구하시겠습니까?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "$ID$ 항목이 복구되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "로그아웃하면 보관함에 대한 모든 접근이 제거되며 시간 제한을 초과하면 온라인 인증을 요구합니다. 정말로 이 설정을 사용하시겠습니까?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "시간 제한 초과시 동작 확인" + }, + "hidePasswords": { + "message": "비밀번호 숨기기" + }, + "countryPostalCodeRequiredDesc": { + "message": "세금 계산 및 금융 보고만을 위해서 해당 정보가 필요합니다." + }, + "includeVAT": { + "message": "VAT/GST 정보 포함 (선택)" + }, + "taxIdNumber": { + "message": "VAT/GST 세금 ID" + }, + "taxInfoUpdated": { + "message": "세금 정보가 업데이트되었습니다." + }, + "setMasterPassword": { + "message": "마스터 비밀번호 설정" + }, + "ssoCompleteRegistration": { + "message": "SSO 로그인을 하기 위해서 보관함에 접근하고 보호할 수 있도록 마스터 비밀번호를 설정해주세요." + }, + "identifier": { + "message": "식별자" + }, + "organizationIdentifier": { + "message": "조직 식별자" + }, + "ssoLogInWithOrgIdentifier": { + "message": "조직의 통합 인증(SSO) 포탈을 통해서 로그인하세요. 시작하려면 조직 식별자를 입력해주세요." + }, + "enterpriseSingleSignOn": { + "message": "엔터프라이즈 통합 인증 (SSO)" + }, + "ssoHandOff": { + "message": "이제 이 탭을 닫고 확장 프로그램에서 계속 진행하셔도 됩니다." + }, + "includeAllTeamsFeatures": { + "message": "모든 팀 기능, 추가로:" + }, + "includeSsoAuthentication": { + "message": "SAML2.0과 OpenID Connect를 통한 SSO 인증" + }, + "includeEnterprisePolicies": { + "message": "엔터프라이즈 정책" + }, + "ssoValidationFailed": { + "message": "SSO 검증 실패" + }, + "ssoIdentifierRequired": { + "message": "조직 식별자가 필요합니다." + }, + "unlinkSso": { + "message": "SSO 연결 해제" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "SSO 연결" + }, + "singleOrg": { + "message": "통합 조직" + }, + "singleOrgDesc": { + "message": "사용자들이 다른 조직에 가입하지 못하도록 제한합니다." + }, + "singleOrgBlockCreateMessage": { + "message": "현재 조직에 하나 이상의 조직에 참가할 수 없도록 정책이 지정되어 있습니다. 조직 관리자에게 문의하거나 다른 Bitwarden 계정으로 로그앤해주세요." + }, + "singleOrgPolicyWarning": { + "message": "소유자 또는 관리자가 아닌 조직 구성원 및 이미 다른 조직의 구성원인 경우 이 조직에서 제거됩니다." + }, + "requireSso": { + "message": "통합 (SSO) 인증" + }, + "requireSsoPolicyDesc": { + "message": "엔터프라이즈 통합 로그인 (SSO) 수단을 사용해서 로그인해야 합니다." + }, + "prerequisite": { + "message": "필요 조건" + }, + "requireSsoPolicyReq": { + "message": "이 정책을 활성화하기 전에 통합 조직 엔터프라이즈 정책이 활성화되어 있어야합니다." + }, + "requireSsoPolicyReqError": { + "message": "통합 조직 정책이 활성화되지 않았습니다." + }, + "requireSsoExemption": { + "message": "조직 소유자와 관리자는 이 정책을 적용받지 않습니다." + }, + "sendTypeFile": { + "message": "파일" + }, + "sendTypeText": { + "message": "텍스트" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "Send 삭제", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "정말 이 Send를 삭제하시겠습니까?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "어떤 유형의 Send인가요?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "현재 접근 횟수" + }, + "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." + }, + "disabled": { + "message": "비활성화됨" + }, + "sendLink": { + "message": "Send 링크", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Send 링크 복사", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "비밀번호 제거" + }, + "removedPassword": { + "message": "비밀번호 제거함" + }, + "removePasswordConfirmation": { + "message": "비밀번호를 제거하시겠습니까?" + }, + "hideEmail": { + "message": "받는 사람으로부터 나의 이메일 주소 숨기기" + }, + "disableThisSend": { + "message": "이 Send를 비활성화하여 아무도 접근할 수 없게 합니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "모든 Send" + }, + "maxAccessCountReached": { + "message": "최대 접근 횟수 도달", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "삭제 대기 중" + }, + "expired": { + "message": "만료됨" + }, + "searchSends": { + "message": "Send 검색", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "이 Send는 비밀번호로 보호되어 있습니다. 계속하려면 비밀번호를 입력해주세요.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "비밀번호를 모르시나요? 보낸 사람에게 Send에 접근할 수 있는 비밀번호를 요청하세요.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "이 Send는 기본적으로 숨겨져 있습니다. 아래의 버튼을 눌러 공개 여부를 전환할 수 있습니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "파일 다운로드" + }, + "sendAccessUnavailable": { + "message": "접근하려고 하는 Send가 존재하지 않거나 더이상 제공되지 않습니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "이 Send와 연관된 파일을 찾을 수 없습니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Send가 없습니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "긴급 접근" + }, + "emergencyAccessDesc": { + "message": "신뢰할 수 있는 연락처에 긴급 접근 권한을 부여하고 관리합니다. 신뢰할 수 있는 연락처는 보관함 내용을 보거나 계정을 넘겨받기 위해 권한을 요청할 수도 있습니다. 도움말 페이지를 방문하여 영지식 증명을 통한 공유의 작동 방식에 대해 더 자세히 알아보세요." + }, + "emergencyAccessOwnerWarning": { + "message": "현재 하나 이상의 조직의 소유자입니다. 긴급 연락처에 넘겨받기 권한을 부여할 경우, 해당 연락처가 계정을 넘겨받은 뒤에는 소유자로서의 당신의 권한을 모두 행사할 수 있게 됩니다." + }, + "trustedEmergencyContacts": { + "message": "신뢰할 수 있는 긴급 연락처" + }, + "noTrustedContacts": { + "message": "아직 긴급 연락처를 추가하지 않으셨습니다. 시작하려면 신뢰할 수 있는 연락처를 초대하십시오." + }, + "addEmergencyContact": { + "message": "긴급 연락처 추가" + }, + "designatedEmergencyContacts": { + "message": "긴급 연락처로 지정됨" + }, + "noGrantedAccess": { + "message": "아직 당신을 긴급 연락처로 지정한 사람이 없습니다." + }, + "inviteEmergencyContact": { + "message": "긴급 연락처 초대" + }, + "editEmergencyContact": { + "message": "긴급 연락처 편집" + }, + "inviteEmergencyContactDesc": { + "message": "긴급 연락처로 초대하고자 하는 사람의 Bitwarden 계정 이메일 주소를 아래에 입력하십시오. 초대받는 사람이 Bitwarden 계정을 가지고 있지 않은 경우에는 새로운 계정을 만들라는 메시지가 표시될 것입니다." + }, + "emergencyAccessRecoveryInitiated": { + "message": "긴급 접근 시작됨" + }, + "emergencyAccessRecoveryApproved": { + "message": "긴급 접근 승인됨" + }, + "viewDesc": { + "message": "보관함의 모든 항목을 볼 수 있습니다." + }, + "takeover": { + "message": "넘겨받기" + }, + "takeoverDesc": { + "message": "새로운 마스터 비밀번호를 만들어 계정을 재설정할 수 있습니다." + }, + "waitTime": { + "message": "대기 시간" + }, + "waitTimeDesc": { + "message": "자동으로 접근 권한을 부여하기까지 필요한 시간." + }, + "oneDay": { + "message": "1일" + }, + "days": { + "message": "$DAYS$일", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "사용자를 초대했습니다." + }, + "acceptEmergencyAccess": { + "message": "위에 표시된 사용자가 자신의 긴급 연락처에 당신을 초대했습니다. 이 초대를 수락하기 위해서는 로그인하거나 새로운 Bitwarden 계정을 만들어야 합니다." + }, + "emergencyInviteAcceptFailed": { + "message": "초대를 수락할 수 없습니다. 해당 사용자에게 새 초대장을 보내도록 요청하십시오." + }, + "emergencyInviteAcceptFailedShort": { + "message": "초대를 수락할 수 없습니다. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "이 사용자가 당신의 신원을 확인하면 이 사용자에 대한 긴급 설정에 접근할 수 있게 됩니다. 확인이 진행되면 이메일을 보내드리겠습니다." + }, + "requestAccess": { + "message": "접근 요청" + }, + "requestAccessConfirmation": { + "message": "정말 긴급 접근을 요청하시겠습니까? $WAITTIME$일 후 혹은 해당 사용자가 직접 이 요청을 수락할 때 접근할 수 있게 됩니다.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "$USER$에 대한 긴급 접근을 요청했습니다. 다음 단계로 진행할 수 있을 때 이메일로 알려드리겠습니다.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "승인" + }, + "reject": { + "message": "거절" + }, + "approveAccessConfirmation": { + "message": "정말 긴급 접근을 승인하시겠습니까? 승인하는 경우 $USER$ 사용자가 이 계정에 다음의 동작을 수행할 수 있습니다: $ACTION$", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "긴급 접근 승인됨." + }, + "emergencyRejected": { + "message": "긴급 접근 거절됨." + }, + "passwordResetFor": { + "message": "$USER$ 사용자의 비밀번호가 초기화되었습니다. 이제 새로운 비밀번호로 로그인할 수 있습니다.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "개인 소유권" + }, + "personalOwnershipPolicyDesc": { + "message": "개인 소유권 옵션을 해제함으로써 보관함의 항목을 조직에 저장하도록 사용자에게 요청합니다." + }, + "personalOwnershipExemption": { + "message": "조직 소유자와 관리자는 이 정책을 적용받지 않습니다." + }, + "personalOwnershipSubmitError": { + "message": "엔터프라이즈 정책으로 인해 개인 보관함에 항목을 저장할 수 없습니다. 조직에서 소유권 설정을 변경한 다음, 사용 가능한 컬렉션 중에서 선택해주세요." + }, + "disableSend": { + "message": "Send 비활성화" + }, + "disableSendPolicyDesc": { + "message": "사용자가 Bitwarden Send를 생성하거나 수정할 수 없게 합니다. 이미 생성된 Send를 삭제하는 것은 계속 허용됩니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "조직의 정책을 관리할 수 있는 사용자는 이 정책의 영향을 받지 않습니다." + }, + "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." + }, + "sendOptions": { + "message": "Send 설정", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Send를 생성하거나 수정하는 것과 관련된 옵션을 설정합니다.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "조직의 정책을 관리할 수 있는 사용자는 이 정책의 영향을 받지 않습니다." + }, + "disableHideEmail": { + "message": "사용자가 Send를 생성하거나 수정할 때 받는 사람으로부터 자신의 이메일 주소를 숨기지 못하게 합니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "다음 단체 정책이 현재 영향을 미치고 있습니다:" + }, + "sendDisableHideEmailInEffect": { + "message": "사용자는 Send를 생성하거나 수정할 때 받는 사람으로부터 자신의 이메일 주소를 숨기지 못하게 됩니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "$ID$ 정책을 편집했습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "요금제 가격" + }, + "estimatedTax": { + "message": "예상 세금" + }, + "custom": { + "message": "사용자 지정" + }, + "customDesc": { + "message": "고급 설정을 위해 더욱 세분화된 사용자 권한 설정을 활성화합니다." + }, + "permissions": { + "message": "권한" + }, + "accessEventLogs": { + "message": "이벤트 로그 접근" + }, + "accessImportExport": { + "message": "가져오기/내보내기 접근" + }, + "accessReports": { + "message": "보고서 접근" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "모든 컬렉션 관리" + }, + "createNewCollections": { + "message": "새 컬렉션 만들기" + }, + "editAnyCollection": { + "message": "아무 컬렉션 편집" + }, + "deleteAnyCollection": { + "message": "아무 컬렉션 삭제" + }, + "manageAssignedCollections": { + "message": "할당된 컬렉션 관리" + }, + "editAssignedCollections": { + "message": "할당된 컬렉션 수정" + }, + "deleteAssignedCollections": { + "message": "할당된 컬렉션 삭제" + }, + "manageGroups": { + "message": "그룹 관리" + }, + "managePolicies": { + "message": "정책 관리" + }, + "manageSso": { + "message": "SSO 관리" + }, + "manageUsers": { + "message": "사용자 관리" + }, + "manageResetPassword": { + "message": "비밀번호 초기화 관리" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "조직의 정책이 소유권 설정에 영향을 미치고 있습니다." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "조직 사용자의 개인 소유권 비활성화" + }, + "textHiddenByDefault": { + "message": "Send에 접근할 때 기본적으로 텍스트를 숨김", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "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": "전송하려는 파일" + }, + "copySendLinkOnSave": { + "message": "저장할 때 이 Send를 공유하기 위한 링크를 클립보드에 복사합니다." + }, + "sendLinkLabel": { + "message": "Send 링크", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send는 민감하고 일시적인 정보를 다른 사람들에게 쉽고 안전하게 보낼 수 있게 해줍니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "오늘", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "다른 사람에게 텍스트 또는 파일을 공유하세요." + }, + "sendVaultCardLearnMore": { + "message": "자세히 알아보고", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "어떻게", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "작동하는지 확인하거나", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "지금", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "체험해보세요", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "에 대해서 알아보거나", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "가입을", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "해서 체험해보세요.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden의 $USER_IDENTIFIER$ 사용자가 다음 내용을 당신과 공유했습니다", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "이 Send를 생성한 Bitwarden 사용자가 자신의 이메일 주소를 숨겼습니다. 이 링크에 접속하거나 내용을 다운로드하기 전에, 이 링크의 출처를 신뢰하는지 확인하십시오.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "제공된 만료 날짜가 유효하지 않습니다." + }, + "deletionDateIsInvalid": { + "message": "제공된 삭제 날짜가 유효하지 않습니다." + }, + "expirationDateAndTimeRequired": { + "message": "만료 날짜와 시간은 반드시 입력해야 합니다." + }, + "deletionDateAndTimeRequired": { + "message": "삭제 날짜와 시간은 반드시 입력해야 합니다." + }, + "dateParsingError": { + "message": "삭제 날짜와 만료 날짜를 저장하는 도중 오류가 발생했습니다." + }, + "webAuthnFallbackMsg": { + "message": "2단계 인증을 확인하려면 아래의 버튼을 클릭하십시오." + }, + "webAuthnAuthenticate": { + "message": "WebAuthn 인증" + }, + "webAuthnNotSupported": { + "message": "이 브라우저에서는 WebAuthn이 지원되지 않습니다." + }, + "webAuthnSuccess": { + "message": "WebAuthn 인증을 성공적으로 완료했습니다!
이제 이 탭을 닫아도 좋습니다." + }, + "hintEqualsPassword": { + "message": "비밀번호 힌트는 비밀번호와 같을 수 없습니다." + }, + "enrollPasswordReset": { + "message": "비밀번호 초기화에 등록" + }, + "enrolledPasswordReset": { + "message": "비밀번호 초기화에 등록됨" + }, + "withdrawPasswordReset": { + "message": "비밀번호 초기화에서 등록 해제" + }, + "enrollPasswordResetSuccess": { + "message": "성공적으로 등록됨!" + }, + "withdrawPasswordResetSuccess": { + "message": "성공적으로 등록 해제됨!" + }, + "eventEnrollPasswordReset": { + "message": "$ID$ 사용자가 비밀번호 초기화 지원에 등록되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "$ID$ 사용자가 비밀번호 초기화 지원에서 등록 해제되었습니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "$ID$ 사용자의 마스터 비밀번호를 재설정합니다.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "사용자 $ID$ SSO 링크 초기화", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "비밀번호 재설정" + }, + "resetPasswordLoggedOutWarning": { + "message": "계속 진행하면 $NAME$이 로그아웃되므로 다시 로그인해야 합니다. 다른 기기에서 접속 중인 세션은 1시간 동안 접속이 가능합니다.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "이 사용자" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "하나 이상의 단체 정책이 마스터 비밀번호가 다음 사항을 따르도록 요구합니다:" + }, + "resetPasswordSuccess": { + "message": "비밀번호 재설정 성공!" + }, + "resetPasswordEnrollmentWarning": { + "message": "등록하면 조직 관리자가 마스터 비밀번호를 변경할 수 있습니다. 등록하시겠습니까?" + }, + "resetPasswordPolicy": { + "message": "마스터 비밀번호 재설정" + }, + "resetPasswordPolicyDescription": { + "message": "조직 관리자가 조직 사용자의 마스터 비밀번호를 재설정할 수 있도록 허용합니다." + }, + "resetPasswordPolicyWarning": { + "message": "조직의 사용자는 관리자가 마스터 암호를 재설정하기 전에 직접 등록 또는 자동 등록이 되어야 합니다." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "자동 등록" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "초대가 수락되면 모든 사용자는 자동으로 비밀번호 재설정에 등록됩니다." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "조직에 이미 있는 사용자는 비밀번호 재설정에 등록되지 않습니다. 관리자가 마스터 암호를 재설정하려면 먼저 직접 등록해야 합니다." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "자동으로 새로운 사용자 등록" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "이 조직에는 자동으로 비밀번호 재설정에 등록하는 기업 정책이 있습니다. 등록하면 조직 관리자가 마스터 암호를 변경할 수 있습니다." + }, + "resetPasswordOrgKeysError": { + "message": "조직 키 반응 없음" + }, + "resetPasswordDetailsError": { + "message": "비밀번호 재성정 정보 반응 없음" + }, + "trashCleanupWarning": { + "message": "휴지통으로 이동된 암호는 30일 이후 자동으로 삭제됩니다." + }, + "trashCleanupWarningSelfHosted": { + "message": "휴지통으로 이동된 암호는 일정 기간 이후 자동으로 삭제됩니다." + }, + "passwordPrompt": { + "message": "마스터 비밀번호 재확인" + }, + "passwordConfirmation": { + "message": "마스터 비밀번호 확인" + }, + "passwordConfirmationDesc": { + "message": "이 작업은 보호되어 있습니다. 계속하려면 마스터 비밀번호를 입력하여 신원을 인증하세요." + }, + "reinviteSelected": { + "message": "초대장 다시 보내기" + }, + "noSelectedUsersApplicable": { + "message": "이 작업은 선택한 사용자에게 적용할 수 없습니다." + }, + "removeUsersWarning": { + "message": "정말로 다음 사용자를 삭제하시겠어요? 프로세스를 완료하는 데에는 몇 초 정도가 걸릴 수 있으며 도중에 중단하거나 취소할 수 없습니다." + }, + "theme": { + "message": "테마" + }, + "themeDesc": { + "message": "보관함에 사용할 테마를 선택하십시오." + }, + "themeSystem": { + "message": "시스템 테마 사용하기" + }, + "themeDark": { + "message": "어두운 테마" + }, + "themeLight": { + "message": "밝은 테마" + }, + "confirmSelected": { + "message": "선택 항목 확인" + }, + "bulkConfirmStatus": { + "message": "일괄 작업 상태" + }, + "bulkConfirmMessage": { + "message": "성공적으로 확인되었습니다." + }, + "bulkReinviteMessage": { + "message": "성공적으로 재초대되었습니다." + }, + "bulkRemovedMessage": { + "message": "성공적으로 제거됨" + }, + "bulkFilteredMessage": { + "message": "제외되었습니다. 이 작업에는 적용되지 않습니다." + }, + "fingerprint": { + "message": "지문" + }, + "removeUsers": { + "message": "사용자 삭제" + }, + "error": { + "message": "오류" + }, + "resetPasswordManageUsers": { + "message": "비밀번호 재설정 관리 권한으로 사용자 관리도 활성화해야 합니다" + }, + "setupProvider": { + "message": "공급자 설정" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "공급자 이름" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "클라이언트" + }, + "providerAdmin": { + "message": "공급자 관리자" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "서비스 사용자" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "공급자 참가" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "공급자" + }, + "newClientOrganization": { + "message": "새 클라이언트 조직" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "이미 있는 조직 추가" + }, + "myProvider": { + "message": "내 공급자" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "공급자가 비활성화되었습니다." + }, + "providerUpdated": { + "message": "공급자 업데이트됨" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "추가" + }, + "updatedMasterPassword": { + "message": "마스터 비밀번호 변경됨" + }, + "updateMasterPassword": { + "message": "마스터 비밀번호 변경" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "보관함 시간 제한" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "최대 보관함 시간 제한" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "hours": { + "message": "시" + }, + "minutes": { + "message": "분" + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "사용자 지정 보관함 시간 제한" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "개인 보관함 내보내기 비활성화" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "보관함 내보내기 비활성화됨" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "SSO 유형 선택" + }, + "type": { + "message": "유형" + }, + "openIdConnectConfig": { + "message": "OpenID 연결 설정" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "콜백 경로" + }, + "signedOutCallbackPath": { + "message": "로그아웃 콜백 경로" + }, + "authority": { + "message": "기관" + }, + "clientId": { + "message": "클라이언트 ID" + }, + "clientSecret": { + "message": "클라이언트 비밀" + }, + "metadataAddress": { + "message": "메타데이터 액세스" + }, + "oidcRedirectBehavior": { + "message": "OIDC 리다이렉트 동작" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "추가/사용자 지정 사용자 ID 클레임 유형 (쉼표로 구분됨)" + }, + "additionalEmailClaimTypes": { + "message": "추가/사용자 지정 이메일 클레임 유형 (쉼표로 구분됨)" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP 엔티티 ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 메타데이터 URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "이름 ID 형식" + }, + "spOutboundSigningAlgorithm": { + "message": "아웃바운드 서명 알고리즘" + }, + "spSigningBehavior": { + "message": "로그인 동작" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "어써션 서명 필요" + }, + "spValidateCertificates": { + "message": "인증서 확인" + }, + "idpEntityId": { + "message": "엔티티 ID" + }, + "idpBindingType": { + "message": "바인딩 유형" + }, + "idpSingleSignOnServiceUrl": { + "message": "SSO 서비스 URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "SLO 서비스 URL" + }, + "idpX509PublicCert": { + "message": "X509 공개 인증서" + }, + "idpOutboundSigningAlgorithm": { + "message": "아웃바운드 서명 알고리즘" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "키 커넥터 URL" + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "코드 전송" + }, + "codeSent": { + "message": "코드 전송됨" + }, + "verificationCode": { + "message": "인증 코드" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "인증 코드는 반드시 입력해야 합니다." + }, + "invalidVerificationCode": { + "message": "유효하지 않은 확인 코드" + }, + "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": "조직 나가기" + }, + "removeMasterPassword": { + "message": "마스터 비밀번호 제거" + }, + "removedMasterPassword": { + "message": "마스터 비밀번호가 제거되었습니다." + }, + "allowSso": { + "message": "SSO 인증 허용" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "활성화:", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO 인증 정책", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "멤버 복호화 옵션" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "키 커넥터" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "SSO 활성화됨" + }, + "disabledSso": { + "message": "SSO 비활성화됨" + }, + "enabledKeyConnector": { + "message": "키 커넥터 활성화됨" + }, + "disabledKeyConnector": { + "message": "키 커넥터 비활성화됨" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "키 커넥터로 마이그레이션됨" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "테스트" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json new file mode 100644 index 0000000000..38fa0e7a98 --- /dev/null +++ b/apps/web/src/locales/lv/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ tīmekļa glabātava", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Kāda veida vienums tas ir?" + }, + "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" + }, + "newPassword": { + "message": "Jauna parole" + }, + "passphrase": { + "message": "Paroles vārdkopa" + }, + "notes": { + "message": "Piezīmes" + }, + "customFields": { + "message": "Pielāgoti lauki" + }, + "cardholderName": { + "message": "Kartes īpašnieka vārds" + }, + "number": { + "message": "Numurs" + }, + "brand": { + "message": "Zīmols" + }, + "expiration": { + "message": "Derīgums" + }, + "securityCode": { + "message": "Drošības kods (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Noņemt" + }, + "unassigned": { + "message": "Nav piešķirts" + }, + "noneFolder": { + "message": "Nav mapes", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Pievienot mapi" + }, + "editFolder": { + "message": "Labot mapi" + }, + "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." + }, + "never": { + "message": "Nekad" + }, + "toggleVisibility": { + "message": "Pārslēgt redzamību" + }, + "toggleCollapse": { + "message": "Pārslēgt sakļaušanu", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Veidot paroli" + }, + "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." + }, + "save": { + "message": "Saglabāt" + }, + "cancel": { + "message": "Atcelt" + }, + "canceled": { + "message": "Atcelts" + }, + "close": { + "message": "Aizvērt" + }, + "delete": { + "message": "Dzēst" + }, + "favorite": { + "message": "Izlasē" + }, + "unfavorite": { + "message": "Izņemt no izlases" + }, + "edit": { + "message": "Labot" + }, + "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" + }, + "searchVault": { + "message": "Meklēt glabātavā" + }, + "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" + }, + "typeLoginPlural": { + "message": "Pierakstīšanās vienumi" + }, + "typeCardPlural": { + "message": "Kartes" + }, + "typeIdentityPlural": { + "message": "Identitātes" + }, + "typeSecureNotePlural": { + "message": "Drošās piezīmes" + }, + "folders": { + "message": "Mapes" + }, + "collections": { + "message": "Krājumi" + }, + "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" + }, + "shared": { + "message": "Kopīgots" + }, + "attachments": { + "message": "Pielikumi" + }, + "select": { + "message": "Atlasīt" + }, + "addItem": { + "message": "Pievienot vienumu" + }, + "editItem": { + "message": "Labot vienumu" + }, + "viewItem": { + "message": "Skatīt vienumu" + }, + "ex": { + "message": "piem.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Cits" + }, + "share": { + "message": "Kopīgot" + }, + "moveToOrganization": { + "message": "Pārvietot uz apvienību" + }, + "valueCopied": { + "message": "$VALUE$ ievietota starpliktuvē", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Ievietot vērtību starpliktuvē", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Ievietot paroli starpliktuvē", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Ievietot lietotājvārdu starpliktuvē", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Ievietot numuru starpliktuvē", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Ievietot drošības kodu starpliktuvē", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Ievietot URI starpliktuvē", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mana glabātava" + }, + "vault": { + "message": "Glabātava" + }, + "moveSelectedToOrg": { + "message": "Pārvietot atzīmēto uz apvienību" + }, + "deleteSelected": { + "message": "Izdzēst atlasītos" + }, + "moveSelected": { + "message": "Pārvietot atlasītos" + }, + "selectAll": { + "message": "Atlasīt visu" + }, + "unselectAll": { + "message": "Noņemt atlasi" + }, + "launch": { + "message": "Palaist" + }, + "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." + }, + "addedItem": { + "message": "Vienums pievienots" + }, + "editedItem": { + "message": "Vienums labots" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ pārvietots uz $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Atzīmētie vienumi pārvietoti uz $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Izdzēst vienumu" + }, + "deleteFolder": { + "message": "Izdzēst mapi" + }, + "deleteAttachment": { + "message": "Izdzēst pielikumu" + }, + "deleteItemConfirmation": { + "message": "Vai tiešām pārvietot uz atkritni?" + }, + "deletedItem": { + "message": "Vienums pārvietots uz atkritni" + }, + "deletedItems": { + "message": "Vienumi pārvietoti uz atkritni" + }, + "movedItems": { + "message": "Vienumi pārvietoti" + }, + "overwritePasswordConfirmation": { + "message": "Vai tiešām pārrakstīt esošo paroli?" + }, + "editedFolder": { + "message": "Mape labota" + }, + "addedFolder": { + "message": "Mape pievienota" + }, + "deleteFolderConfirmation": { + "message": "Vai tiešām izdzēst šo mapi?" + }, + "deletedFolder": { + "message": "Mape izdzēsta" + }, + "loggedOut": { + "message": "Izrakstījies" + }, + "loginExpired": { + "message": "Pierakstīšanās sesija ir beigusies." + }, + "logOutConfirmation": { + "message": "Vai tiešām izrakstīties?" + }, + "logOut": { + "message": "Izrakstīties" + }, + "ok": { + "message": "Labi" + }, + "yes": { + "message": "Jā" + }, + "no": { + "message": "Nē" + }, + "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" + }, + "emailAddressDesc": { + "message": "E-pasta adrese būs jāizmanto, lai pierakstītos." + }, + "yourName": { + "message": "Vārds" + }, + "yourNameDesc": { + "message": "Kā mums Tevi uzrunāt?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Galvenās paroles norāde" + }, + "settings": { + "message": "Iestatījumi" + }, + "passwordHint": { + "message": "Paroles norāde" + }, + "enterEmailToGetHint": { + "message": "Norādīt 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": "Galvenās paroles norāde ir nosūtīta e-pastā." + }, + "unexpectedError": { + "message": "Ir radusies neparedzēta kļūda." + }, + "emailAddress": { + "message": "E-pasta adrese" + }, + "yourVaultIsLocked": { + "message": "Glabātava ir slēgta. Nepieciešams norādīt galveno paroli, lai turpinātu." + }, + "unlock": { + "message": "Atslēgt" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Aizslēgt" + }, + "noItemsInList": { + "message": "Nav vienumu, ko parādīt." + }, + "noCollectionsInList": { + "message": "Nav krājumu, ko parādīt." + }, + "noGroupsInList": { + "message": "Nav kopu, ko parādīt." + }, + "noUsersInList": { + "message": "Nav lietotāju, ko parādīt." + }, + "noEventsInList": { + "message": "Nav notikumu, ko parādīt." + }, + "newOrganization": { + "message": "Jauna apvienība" + }, + "noOrganizationsList": { + "message": "Tu neesi iekļauts nevienā apvienībā. Apvienības sniedz iespēju droši kopīgot vienumus ar citiem lietotājiem." + }, + "versionNumber": { + "message": "Laidiens $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "Atkārtoti nosūtīt apstiprinājuma kodu" + }, + "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!" + }, + "loginUnavailable": { + "message": "Pierakstīšanās nav pieejama" + }, + "noTwoStepProviders": { + "message": "Šim kontam ir iespējota divpakāpju pierakstīšanās, bet šajā pārlūkā netiek atbalstīts neviens no uzstādītajiem divpakāpju pārbaudes nodrošinātājiem." + }, + "noTwoStepProviders2": { + "message": "Lūgums izmantot atbalstītu tīmekļa pārlūku (piemēram Chrome) un/vai pievienot papildus nodrošinātājus, kas tiek labāk atbalstīti dažādos pārlūkos (piemēram autentificētāja lietotni)." + }, + "twoStepOptions": { + "message": "Divpakāpju pierakstīšanās iespējas" + }, + "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. un 5. sērijas 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." + }, + "u2fDesc": { + "message": "Izmantot jebkuru FIDO U2F atbalstošu drošības atslēgu, lai piekļūtu kontam." + }, + "u2fTitle": { + "message": "FIDO U2F drošības atslēga" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Izmantot jebkuru WebAuthn atbalstošu drošības atslēgu, lai piekļūtu kontam." + }, + "webAuthnMigrated": { + "message": "(Pārgājis no FIDO)" + }, + "emailTitle": { + "message": "E-pasts" + }, + "emailDesc": { + "message": "Apstiprinājuma kodi tiks nosūtīti e-pastā." + }, + "continue": { + "message": "Turpināt" + }, + "organization": { + "message": "Apvienība" + }, + "organizations": { + "message": "Apvienības" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Izvēlies apvienību, uz kuru pārvietot šos vienumus. Pārvietošana nodod šo vienumu piederību apvienībai. Tu vairs nebūsi šo vienumu tiešais īpašnieks pēc to pārvietošanas." + }, + "collectionsDesc": { + "message": "Labot krājumus, ar kuriem šis vienums ir kopīgots. Tikai apvienības lietotāji, kam ir piekļuve šiem krājumiem, redzēs šo vienumu." + }, + "deleteSelectedItemsDesc": { + "message": "Izdzēšanai ir atlasīts(i) $COUNT$ vienums(i). Vai tiešām izdzēst tos visus?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Izvēlēties mapi, uz kuru pārvietot atlasīto(s) $COUNT$ vienumu(s).", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Ir atzīmēts(i) $COUNT$ vienums(i). $MOVEABLE_COUNT$ vienums(i) var tikt pārvietoti uz apvienību, bet $NONMOVEABLE_COUNT$ nē.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Apstiprinājuma kods (TOTP)" + }, + "copyVerificationCode": { + "message": "Ievietot apstiprinājuma kodu starpliktuvē" + }, + "warning": { + "message": "Brīdinājums" + }, + "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ā." + }, + "export": { + "message": "Izgūšana" + }, + "exportVault": { + "message": "Izgūt glabātavas saturu" + }, + "fileFormat": { + "message": "Datnes veids" + }, + "exportSuccess": { + "message": "Glabātavas saturs ir izgūts." + }, + "passwordGenerator": { + "message": "Paroļu veidotājs" + }, + "minComplexityScore": { + "message": "Mazākais pieļaujamais sarežģītības novērtējums" + }, + "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" + }, + "regeneratePassword": { + "message": "Pārizveidot paroli" + }, + "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" + }, + "passwordHistory": { + "message": "Paroles izmaiņu vēsture" + }, + "noPasswordsInList": { + "message": "Nav paroļu, ko parādīt." + }, + "clear": { + "message": "Notīrīt", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Konts atjaunināts" + }, + "changeEmail": { + "message": "Mainīt e-pasta adresi" + }, + "changeEmailTwoFactorWarning": { + "message": "Turpinot tiks mainīta konta e-pasta adrese. Netiks mainīta tā e-pasta adrese, kas tiek izmantota divpakāpju apstiprinājumam. To var mainīt divpakāpju pieteikšanās iestatījumos." + }, + "newEmail": { + "message": "Jauna e-pasta adrese" + }, + "code": { + "message": "Kods" + }, + "changeEmailDesc": { + "message": "Uz e-pasta adresi $EMAIL$ ir nosūtīts apstiprinājuma kods. Lūgums pārbaudīt e-pastu, vai tas ir saņemts, un ievadīt kodu zemāk esošajā laukā, lai pabeigtu e-pasta adreses maiņu.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Tiks veikta izrakstīšanās no pašreizējās sesijas, un pēc tam būs nepieciešams pierakstīties. Citās ierīcēs darbojošās sesijas var būt spēkā līdz vienai stundai." + }, + "emailChanged": { + "message": "E-pasta adrese nomainīta" + }, + "logBackIn": { + "message": "Lūgums atkārtoti pierakstīties." + }, + "logBackInOthersToo": { + "message": "Lūgums pierakstīties atkārtoti. Ja tiek izmantotas citas Bitwarden lietotnes, ir nepieciešams izrakstīties un atkārtoti pierakstīties arī tajās." + }, + "changeMasterPassword": { + "message": "Mainīt galveno paroli" + }, + "masterPasswordChanged": { + "message": "Galvenā parole nomainīta" + }, + "currentMasterPass": { + "message": "Pašreizējā galvenā parole" + }, + "newMasterPass": { + "message": "Jaunā galvenā parole" + }, + "confirmNewMasterPass": { + "message": "Apstiprināt jauno galveno paroli" + }, + "encKeySettings": { + "message": "Šifrēšanas atslēgas iestatījumi" + }, + "kdfAlgorithm": { + "message": "KDF algoritms" + }, + "kdfIterations": { + "message": "KDF atkārtojumi" + }, + "kdfIterationsDesc": { + "message": "Lielāks KDF atkārtojumu skaits var palīdzēt aizsargāt galveno paroli no pārlases uzbrukumiem. Ieteicamā vērtība ir $VALUE$ vai lielāka.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Iestatot pārāk lielu KDF atkārtojumu skaitu var novest pie vājas veiktspējas, kad notiek pierakstīšanās Bitwarden (un atslēgšana) ierīcēs ar lēnākiem procesoriem. Ir ieteicams secīgi palielināt vērtību par $INCREMENT$ un tad pārbaudīt ietekmi visās ierīcēs.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Mainīt KDF" + }, + "encKeySettingsChanged": { + "message": "Šifrēšanas atslēgas iestatījumi mainīti" + }, + "dangerZone": { + "message": "Bīstamā sadaļa" + }, + "dangerZoneDesc": { + "message": "Piesardzību, šīs darbības nav atsaucamas!" + }, + "deauthorizeSessions": { + "message": "Padarīt sesijas spēkā neesošas" + }, + "deauthorizeSessionsDesc": { + "message": "Vai ir raizes par to, ka pierakstīšanās kontā ir notikusi citā ierīcē? Turpināt zemāk, lai atsauktu pierakstīšanos visos datoros un ierīcēs, kas iepriekš ir izmantoti. Šis solis ir nepieciešams, ja tika izmantots koplietošanas dators vai nejauši saglabāta parole nepiederošā ierīcē. Šis solis notīrīs arī visas iepriekš iegaumētās divpakāpju pierakstīšanās sesijas." + }, + "deauthorizeSessionsWarning": { + "message": "Tiks veikta izrakstīšanās no pašreizējāš sesijas, un pēc tam būs nepieciešams atkārtoti pierakstīties. Būs nepieciešama arī divpakāpju pierakstīšanās, ja tā ir iespējota. Citās ierīcēs darbojošās sesijas var būt spēkā līdz vienai stundai." + }, + "sessionsDeauthorized": { + "message": "Visu sesiju darbība ir atsaukta" + }, + "purgeVault": { + "message": "Iztīrīt glabātavu" + }, + "purgedOrganizationVault": { + "message": "Apvienības glabātava iztīrīta." + }, + "vaultAccessedByProvider": { + "message": "Glabātavai piekļuva sniedzējs." + }, + "purgeVaultDesc": { + "message": "Turpnāt zemāk, lai izdzēstu visus glabātavas vienumus un mapes. Vienumi, kas pieder apvienībai un kas tiek koplietoti, netiks izdzēsti." + }, + "purgeOrgVaultDesc": { + "message": "Turpināt zemāk, lai izdzēstu visus apvienības glabātavas vienumus." + }, + "purgeVaultWarning": { + "message": "Glabātavas iztīrīšana ir paliekoša. To nevar tikt atsaukta." + }, + "vaultPurged": { + "message": "Glabātava tika iztīrīta." + }, + "deleteAccount": { + "message": "Dzēst kontu" + }, + "deleteAccountDesc": { + "message": "Turpināt zemāk, lai izdzēstu kontu un visus saistītos datus." + }, + "deleteAccountWarning": { + "message": "Konta dzēšana ir paliekoša. To nevar atsaukt." + }, + "accountDeleted": { + "message": "Konts izdzēsts" + }, + "accountDeletedDesc": { + "message": "Konts ir slēgts, un visi saistītie dati ir izdzēsti." + }, + "myAccount": { + "message": "Mans konts" + }, + "tools": { + "message": "Rīki" + }, + "importData": { + "message": "Ievietot datus" + }, + "importError": { + "message": "Ievietošanas kļūda" + }, + "importErrorDesc": { + "message": "Ir nepilnības ievietojamajos datos. Lūgums novērst zemāk uzskaitītās kļūdas avota datnē un mēģināt vēlreiz." + }, + "importSuccess": { + "message": "Dati ir veiksmīgi ievietoti glabātavā." + }, + "importWarning": { + "message": "Dati tiks ievietoti $ORGANIZATION$. Tie var tikt kopīgoti ar citiem apvienības dalībniekiem. Vai turpināt?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Dati nav pareizā veidolā. Lūgums pārbaudīt ievietošanas datni un mēģināt vēlreiz." + }, + "importNothingError": { + "message": "Nekas netika ievietots." + }, + "importEncKeyError": { + "message": "Kļūda izguves datnes atšifrēšanā. Izmantotā atslēga neatbilst tai, kas tika izmantota satura izgūšanai." + }, + "selectFormat": { + "message": "Atlasīt ievietošanas datnes veidolu" + }, + "selectImportFile": { + "message": "Atlasīt ievietošanas datni" + }, + "orCopyPasteFileContents": { + "message": "vai ievietot starpliktuvē un ielīmēt ievietošanas datnes saturu" + }, + "instructionsFor": { + "message": "Norādījumi $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Iespējas" + }, + "optionsDesc": { + "message": "Pielāgot tīmekļa glabātavas lietošanas pieredzi." + }, + "optionsUpdated": { + "message": "Iespējas atjauninātas" + }, + "language": { + "message": "Valoda" + }, + "languageDesc": { + "message": "Nomainīt tīmekļa glabātavā izmantoto valodu." + }, + "disableIcons": { + "message": "Atspējot tīmekļa vietņu ikonas" + }, + "disableIconsDesc": { + "message": "Tīmekļa vietņu ikonas nodrošina atpazīstamu attēlu pie katra glabātavas pieteikšanās vienuma." + }, + "enableGravatars": { + "message": "Iespējot Gravatārus", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Izmantot no gravatar.com ielādētus avatāra attēlus." + }, + "enableFullWidth": { + "message": "Iespējot pilna platuma izkārtojumu", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Ļauj tīmekļa glabātavai aizņemt visu pārlūka loga platumu." + }, + "default": { + "message": "Noklusējums" + }, + "domainRules": { + "message": "Domēnu nosacījumi" + }, + "domainRulesDesc": { + "message": "Ja viens pierakstīšanās vienums tiek izmantots dažādos tīmekļa vietņu domēnos, tīmekļa vietni var atzīmēt kā \"līdzvērtīgu\". \"Vispārējie\" domēni jau ir Bitwarden izveidoti." + }, + "globalEqDomains": { + "message": "Vispārēji vienlīdzīgie domēni" + }, + "customEqDomains": { + "message": "Pielāgoti vienlīdzīgie domēni" + }, + "exclude": { + "message": "Izslēgt" + }, + "include": { + "message": "Iekļaut" + }, + "customize": { + "message": "Pielāgot" + }, + "newCustomDomain": { + "message": "Jauns pielāgotais domēns" + }, + "newCustomDomainDesc": { + "message": "Jāievada ar komatiem atdalīts domēnu saraksts. Ir atļauti tikai \"pamata\" domēni. Neievadīt apakšdomēnus. Piemēram, ievadīt \"google.com\" \"www.google.com\" vietā. Ir iespējams ievadīt arī \"androidapp://package.name\", lai saistītu Android lietotni ar citiem tīmekļa vietņu domēniem." + }, + "customDomainX": { + "message": "Pielāgotais domēns $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domēni atjaunināti" + }, + "twoStepLogin": { + "message": "Divpakāpju pierakstīšanās" + }, + "twoStepLoginDesc": { + "message": "Nodrošināt kontu, pieprasot papildus darbību pierakstoties." + }, + "twoStepLoginOrganizationDesc": { + "message": "Pieprasīt divpakāpju pierakstīšanos apvienības lietotājiem, uzstādot nodrošinātājus apvienības līmenī." + }, + "twoStepLoginRecoveryWarning": { + "message": "Divpakāpju pierakstīšanās var pastāvīgi liegt piekļuvi Bitwarden kontam. Atkopšanas kods ļauj piekļūt tam gadījumā, kad vairs nav iespējams izmantot ierasto divpakāpju pierakstīšanās nodrošinātāju (piemēram, ir pazaudēta ierīce). Bitwarden atbalsts nevarēs palīdzēt, ja tiks pazaudēta piekļuve kontam. Ir ieteicams, ka atkopšanas kods tiek pierakstīts vai izdrukāts un turēts drošā vietā." + }, + "viewRecoveryCode": { + "message": "Skatīt atkopšanas kodu" + }, + "providers": { + "message": "Nodrošinātāji", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Iespējot" + }, + "enabled": { + "message": "Iespējots" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium dalība" + }, + "premiumRequired": { + "message": "Nepieciešams Premium" + }, + "premiumRequiredDesc": { + "message": "Ir nepieciešama Premium dalība, lai izmantotu šo iespēju." + }, + "youHavePremiumAccess": { + "message": "Tev ir Premium piekļuve" + }, + "alreadyPremiumFromOrg": { + "message": "Tev jau ir piekļuve Premium iespējām no apvienības, kuras dalībnieks Tu esi." + }, + "manage": { + "message": "Pārvaldīt" + }, + "disable": { + "message": "Atspējot" + }, + "twoStepLoginProviderEnabled": { + "message": "Šis divpakāpju pierakstīšanās nodrošinātājs ir iespējots kontā." + }, + "twoStepLoginAuthDesc": { + "message": "Ievadīt galveno paroli, lai mainītu divpakāpju pierakstīšanās iestatījumus." + }, + "twoStepAuthenticatorDesc": { + "message": "Sekot šiem soļiem, lai uzstādīt divpakāpju pierakstīšanos ar autentificētāja lietotni:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Jālejupielādē divpakāpju autentificētāja lietotne" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Ir nepieciešama divpakāpju autentificētāja lietotne? Lejupielādē vienu no sekojošām" + }, + "iosDevices": { + "message": "iOS ierīces" + }, + "androidDevices": { + "message": "Android ierīces" + }, + "windowsDevices": { + "message": "Windows ierīces" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Šīs ir ieteicamās lietotnes, bet darbosies arī citas autentificētāja lietotnes." + }, + "twoStepAuthenticatorScanCode": { + "message": "Nolasīt šo kvadrātkodu ar autentificētāja lietotni" + }, + "key": { + "message": "Atslēga" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Ievadīt lietotnes izveidoto 6 ciparu apstiprināšanas kodu" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Ja ir vajadzība pievienot citās ierīcēs, zemāk ir kvadrātkods (vai atslēga), kas ir izmantojams autentificētāja lietotnē." + }, + "twoStepDisableDesc": { + "message": "Vai tiešām atspējot šo divpakāpju pierakstīšanās nodrošinātāju?" + }, + "twoStepDisabled": { + "message": "Divpakāpju pierakstīšanāš nodrošinātājs atspējots." + }, + "twoFactorYubikeyAdd": { + "message": "Pievienot jaunu YubiKey kontam" + }, + "twoFactorYubikeyPlugIn": { + "message": "YubiKey ir jāievieto datora USB ligzdā." + }, + "twoFactorYubikeySelectKey": { + "message": "Jāizvēlas pirmais tukšais zemāk esošais YubiKey ievades lauks." + }, + "twoFactorYubikeyTouchButton": { + "message": "Jāpieskaras YubiKey pogai." + }, + "twoFactorYubikeySaveForm": { + "message": "Saglabāt veidlapu." + }, + "twoFactorYubikeyWarning": { + "message": "Platformas ierobežojumu dēļ YubiKey nevar izmantot visās Bitwarden lietotnēs. Ir ieteicams iespējot vēl kādu divpakāpju pierakstīšanās nodrošinātāju, lai varētu piekļūt kontam, kad nevar izmantot YubiKey. Atbalstītās platformas:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Tīmekļa glabātava, darbvirsmas lietotne, CLI un visi pārlūku paplašinājums ierīcēs ar USB ligzdu, kas pieņem YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Tālruņa lietotnes ierīcē ar NFC iespējām vai datu ligzdu, kas pieņem YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F atslēga $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn atslēga $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC atbalsts" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Viena no atslēgām atbalsta NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Ja kāda no YubiKey atbalsta NFC (kā, piemēram, YubiKey NEO), pārvietojamajās ierīcēs tiks attēlota uzvedne, kad vien tiks noteikta NFC pieejamība." + }, + "yubikeysUpdated": { + "message": "YubiKey atjauninātas" + }, + "disableAllKeys": { + "message": "Atspējot visas atslēgas" + }, + "twoFactorDuoDesc": { + "message": "Ievadīt Bitwarden lietotnes informāciju no Duo pārvaldības rīka." + }, + "twoFactorDuoIntegrationKey": { + "message": "Iekļaušanas atslēga" + }, + "twoFactorDuoSecretKey": { + "message": "Slepenā atslēga" + }, + "twoFactorDuoApiHostname": { + "message": "API saimniekdatora nosaukums" + }, + "twoFactorEmailDesc": { + "message": "Sekot šiem soļiem, lai uzstādīt divpakāpju pierakstīšanos ar e-pastu:" + }, + "twoFactorEmailEnterEmail": { + "message": "Ievadīt e-pasta adresi, uz kuru saņemt apstiprināšanas kodus" + }, + "twoFactorEmailEnterCode": { + "message": "Ievadīt e-pastā saņemto 6 ciparu apstiprinājuma kodu" + }, + "sendEmail": { + "message": "Nosūtīt e-pastu" + }, + "twoFactorU2fAdd": { + "message": "Pievienot FIDO U2F drošības atslēgu kontam" + }, + "removeU2fConfirmation": { + "message": "Vai tiešām noņemt šo drošības atslēgu?" + }, + "twoFactorWebAuthnAdd": { + "message": "Pievienot kontam WebAuthn drošības atslēgu" + }, + "readKey": { + "message": "Nolasīt atslēgu" + }, + "keyCompromised": { + "message": "Atslēgas drošība ir ietekmēta." + }, + "twoFactorU2fGiveName": { + "message": "Piešķirt drošības atslēgai vienkāršu nosaukumu, lai tā būtu vieglāk nosakāma." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Ievietot drošības atslēgu datora USB ligzdā un nospiest pogu \"Nolasīt atslēgu\"." + }, + "twoFactorU2fTouchButton": { + "message": "Ja drošības atslēgai ir poga, tai ir jāpieskaras." + }, + "twoFactorU2fSaveForm": { + "message": "Saglabāt veidlapu." + }, + "twoFactorU2fWarning": { + "message": "Platformas ierobežojumu dēļ FIDO U2F nevar izmantot visās Bitwarden lietotnēs. Ir Ieteicams iespējot vēl kādu divpakāpju pierakstīšanās nodrošinātāju, lai varētu piekļūt kontam, kad FIDO U2F nevar izmantot. Atbalstītās platformas:" + }, + "twoFactorU2fSupportWeb": { + "message": "Tīmekļa glabātava un pārlūku paplašinājums galddatorā/klēpjdatorā ar U2F iespējotu pārlūku (Chrome, Opera, Vivaldi vai Firefox ar iespējotu FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "Tiek gaidīts, līdz tiks veikta pieskaršanās drošības atslēgas pogai" + }, + "twoFactorU2fClickSave": { + "message": "Nospist zemāk esošo pogu \"Saglabāt\", lai iespējotu šo drošības atslēgu divpakāpju pierakstīšanās pārbaudei." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Radās sarežģījumi, nolasot drošības atslēgu. Jāmēģina vēlreiz." + }, + "twoFactorWebAuthnWarning": { + "message": "Platformas ierobežojumu dēļ WebAuth nevar izmantot visās Bitwarden lietotnēs. Ir ieteicams iespējot vēl kādu divpakāpju pierakstīšanās nodrošinātāju, lai varētu piekļūt kontam, kad nav iespējams izmantot WebAuth. Atbalstītās platformas:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Tīmekļa glabātava un pārlūku paplašinājums galddatorā/klēpjdatorā ar WebAuthn iespējotu pārlūku (Chrome, Opera, Vivaldi vai Firefox ar iespējotu FIDO U2F)." + }, + "twoFactorRecoveryYourCode": { + "message": "Bitwarden divpakāpju pierakstīšanās atkopšanas kods" + }, + "twoFactorRecoveryNoCode": { + "message": "Vēl nav iespējots neviens divpakāpju pierakstīšanās nodrošinātāju. Kad tas būs izdarīts, šeit varēs apskatīt atkopšanas kodu." + }, + "printCode": { + "message": "Izdrukāt kodu", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Pārskati" + }, + "reportsDesc": { + "message": "Noteikt un novērst drošības nepilnības tiešsaistes kontos klikšķinot uz zemāk esošajām atskaitēm." + }, + "unsecuredWebsitesReport": { + "message": "Nedrošu tīmekļa vietņu pārskats" + }, + "unsecuredWebsitesReportDesc": { + "message": "Nedrošu tīmekļa vietņu, kuru adrese sākas ar http://, apmeklēšana var būt bīstama. Ja tīmekļa vietne to nodrošina, vienmēr ir ieteicams tai piekļūt, izmantojot adresi ar https://, lai savienojums būtu šifrēts." + }, + "unsecuredWebsitesFound": { + "message": "Atrastas nedrošās tīmekļa vietnes" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Glabātavā tika atrasts(i) $COUNT$ vienums(i) ar nedrošām adresēm. Ir ieteicams tās mainīt uz URI ar https://, ja tīmekļa vietne to nodrošina.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Nevienam glabātavas vienumam nav nedrošu URI." + }, + "inactive2faReport": { + "message": "Neizmantoto 2FA pārskats" + }, + "inactive2faReportDesc": { + "message": "Divfaktoru autentificēšanās (2FA) ir būtisks drošības iestatījums, kas palīdz nodrošināt kontus. Ja tīmekļa vietne to piedāvā, vienmēr vajadzētu iespējot divfaktoru autentificēšanos." + }, + "inactive2faFound": { + "message": "Atrastie pierakstīšanās vienumi bez 2FA" + }, + "inactive2faFoundDesc": { + "message": "Glabātavā tika atrasta(s) $COUNT$ tīmekļa vietne(s), kurās nav uzstādīta divfaktoru autentificēšanās (vadoties pēc twofactorauth.org). Lai labāk aizsargātu šos kontus, ir ieteicams iespējot divfaktoru autentificēšanos.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Glabātavā netika atrasta neviena tīmekļa vietne bez uzstādītas divfaktoru autentificēšanās." + }, + "instructions": { + "message": "Norādes" + }, + "exposedPasswordsReport": { + "message": "Atklāto paroļu pārskats" + }, + "exposedPasswordsReportDesc": { + "message": "Atklātās paroles ir paroles, kas ir atrastas zināmos datu pārkāpumos, kuras urķi ir publicējuši vai pārdod tumšajā tīmeklī." + }, + "exposedPasswordsFound": { + "message": "Atrastas atklātās paroles" + }, + "exposedPasswordsFoundDesc": { + "message": "Glabātavā tika atrasts(i) $COUNT$ vienums(i), kuros ir paroles, kas ir atklātas zināmos datu pārkāpumos. Vienumus vajadzētu mainīt, lai izmantotu jaunu paroli.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Glabātavā nav vienumu, kam būtu paroles, kas ir atklātas zināmos datu pārkāpumos." + }, + "checkExposedPasswords": { + "message": "Pārbaudīt atklātās paroles" + }, + "exposedXTimes": { + "message": "Atklātas $COUNT$ reizi(-es)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Vājo paroļu pārskats" + }, + "weakPasswordsReportDesc": { + "message": "Vājas paroles var viegli uzminēt urķi un automatizētie rīki, kas tiek izmantoti paroļu uzlaušanā. Bitwarden paroļu veidotājs var palīdzēt izveidot spēcīgas paroles." + }, + "weakPasswordsFound": { + "message": "Atrastas vājas paroles" + }, + "weakPasswordsFoundDesc": { + "message": "Glabātavā tika atrasts(i) $COUNT$ vienums(i) ar parolēm, kas nav spēcīgas. Tos vajadzētu atjaunināt, lai izmantotu spēcīgākas paroles.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Glabātavā nav vienumu ar vājām parolēm." + }, + "reusedPasswordsReport": { + "message": "Vairākkārt izmantoto paroļu pārskats" + }, + "reusedPasswordsReportDesc": { + "message": "Ja izmantota pakalpojuma drošība ir ietekmēta, vienādas paroles izmantošana citur rada urķiem iespēju viegli iegūt piekļuvi citiem tiešsaistes kontiem. Katrā kontā vai pakalpojumā ir ieteicams izmantot paroli, kas nav izmantota citur." + }, + "reusedPasswordsFound": { + "message": "Atrastās vairākkārt izmantotās paroles" + }, + "reusedPasswordsFoundDesc": { + "message": "Glabātavā tika atrasta(s) $COUNT$ parole(s), kas tiek vairākkārt izmantotas. Ir ieteicams tās nomainīt uz vērtību, kas neatkārtojas citur.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Glabātavā nav pierakstīšanās vienumu ar vairākkārt izmantotām parolēm." + }, + "reusedXTimes": { + "message": "Vairākkārt izmantota(s) $COUNT$ reizi(es)", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Datu pārākumu pārskats" + }, + "breachDesc": { + "message": "\"Pārkāpums\" ir notikums, kurā urķi ir nelikumīgi piekļuvuši tās datiem un tad tos ir publicējuši. Jāpārskata datu veidi, kas ir ietekmēti (e-pasta adreses, paroles, bankas kartes utt.) un jāveic atbilstošas darbības, piemēram, paroļu nomaiņa." + }, + "breachCheckUsernameEmail": { + "message": "Jāpārbauda jebkurš lietotājvārds vai e-pasta adrese, kas tiek izmantota." + }, + "checkBreaches": { + "message": "Pārbaudīt datu pārkāpumus" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ netika atrasts nevienā zināmā datu noplūdē.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Labas ziņas", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ tika atrasts $COUNT$ (dažādos) datu pārkāpumā(os) tīmeklī.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Atrasti datu pārkāpumos iekļuvušie konti" + }, + "compromisedData": { + "message": "Datu pārkāpumos iesaistītie dati" + }, + "website": { + "message": "Tīmekļa vietne" + }, + "affectedUsers": { + "message": "Ietekmētie lietotāji" + }, + "breachOccurred": { + "message": "Ir bijis datu pārkāpums" + }, + "breachReported": { + "message": "Par datu pārkāpumu ir ziņots" + }, + "reportError": { + "message": "Radusies kļūda pārskata lādēšanā. Lūgums mēģināt vēlreiz" + }, + "billing": { + "message": "Norēķini" + }, + "accountCredit": { + "message": "Konta kredīts", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Konta bilance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Pievienot kredītu", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Daudzums", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Pievienotais kredīts būs redzams kontā, kad maksājums būs pilnībā apstrādāts. Daži norēķinu veidi aizkavējas un to apstrāde var aizņemt vairāk laika nekā citiem." + }, + "makeSureEnoughCredit": { + "message": "Lūgums pārliecināties, ka kontā ir pieejams pietiekami daudz kredīta šim pirkumam. Ja kontā nav pieejams pietiekami daudz kredīta, tiks izmantots noklusējuma norēķinu veids, lai segtu starpību. Kredītu kontam var pievienot norēķinu sadaļā." + }, + "creditAppliedDesc": { + "message": "Konta kredīts var tikt izmantots, lai veiktu pirkumus. Viss pieejamais kredīts tiks automātiski izmantots kontam veidotajiem rēķiniem." + }, + "goPremium": { + "message": "Iegūt Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Tu esi pārgājis uz Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Kontu var uzlabot ar Premium dalību un piekļūt lieliskām papildiespējām." + }, + "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." + }, + "premiumSignUpEmergency": { + "message": "Ārkārtas piekļuve" + }, + "premiumSignUpReports": { + "message": "Paroļu higiēnas, kontu veselības un datu pārkāpumu atskaites, 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ā!" + }, + "premiumPrice": { + "message": "Viss par tikai $PRICE$ gadā!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Papildinājumi" + }, + "premiumAccess": { + "message": "Premium piekļuve" + }, + "premiumAccessDesc": { + "message": "Ir iespējams pievienot Premium piekļuvi visiem apvienības dalībniekiem par $PRICE$/$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Papildus krātuve (GB)" + }, + "additionalStorageGbDesc": { + "message": "# papildus GB" + }, + "additionalStorageIntervalDesc": { + "message": "Pašreizējais plāns iever $SIZE$ šifrētas datņu krātuves. Ir iespējams pievienot papildus krātuvi par $PRICE$ GB / $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Kopsavilkums" + }, + "total": { + "message": "Kopā" + }, + "year": { + "message": "gadā" + }, + "month": { + "message": "mēnesī" + }, + "monthAbbr": { + "message": "mēn.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Summa no apmaksas veida tiks iekasēta nekavējoties un atkārtoti ik gadu. To var atcelt jebkurā laikā." + }, + "paymentCharged": { + "message": "Summa no apmaksas veida tiks iekasēta nekavējoties un atkārtoti katru $INTERVAL$. To var atcelt jebkurā laikā.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Pašreizējā plānā ir iekļauts bezmaksas 7 dienu izmēģinājuma laiks. Izvēlētais apmaksas veids netiks izmantots līdz izmēģinājuma beigā. Norēķini notiks katru $INTERVAL$. To var atcelt jebkurā brīdī." + }, + "paymentInformation": { + "message": "Maksājuma informācija" + }, + "billingInformation": { + "message": "Norēķinu informācija" + }, + "creditCard": { + "message": "Maksājumu karte" + }, + "paypalClickSubmit": { + "message": "Nospiest PayPal pogu, lai pierakstītos PayPal kontā, pēc tam jāspiež poga \"Iesniegt\", lai turpinātu." + }, + "cancelSubscription": { + "message": "Atcelt abonementu" + }, + "subscriptionCanceled": { + "message": "Abonements ir atcelts." + }, + "pendingCancellation": { + "message": "Tiek gaidīta atcelšana" + }, + "subscriptionPendingCanceled": { + "message": "Abonements ir atzīmēts atcelšanai pašreizējā norēķinu perioda beigās." + }, + "reinstateSubscription": { + "message": "Atjaunot abonementu" + }, + "reinstateConfirmation": { + "message": "Vai tiešām noņemt abonementa atcelšanas pieprasījumu un atjaunot abonementu?" + }, + "reinstated": { + "message": "Abonements tika atjaunots." + }, + "cancelConfirmation": { + "message": "Vai tiešām atcelt? Tiks zaudēta piekļuve visām abonementa iespējām pēc pašreizējā norēķinu laika posma beigām." + }, + "canceledSubscription": { + "message": "Abonements ir atcelts." + }, + "neverExpires": { + "message": "Nekad nebeidzas" + }, + "status": { + "message": "Stāvoklis" + }, + "nextCharge": { + "message": "Nākamais maksājums" + }, + "details": { + "message": "Izklāsts" + }, + "downloadLicense": { + "message": "Lejupielādēt licenci" + }, + "updateLicense": { + "message": "Atjaunināt licenci" + }, + "updatedLicense": { + "message": "Atjauninātā licence" + }, + "manageSubscription": { + "message": "Pārvaldīt abonementus" + }, + "storage": { + "message": "Krātuve" + }, + "addStorage": { + "message": "Pievienot krātuvi" + }, + "removeStorage": { + "message": "Noņemt krātuvi" + }, + "subscriptionStorage": { + "message": "Pašreizējam abonementam ir $MAX_STORAGE$ GB šifrētas datņu krātuves. Pašreiz izmantotais apjoms ir $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Apmaksas veids" + }, + "noPaymentMethod": { + "message": "Nav norādīts apmaksas veids." + }, + "addPaymentMethod": { + "message": "Pievienot apmaksas veidu" + }, + "changePaymentMethod": { + "message": "Mainīt apmaksas veidu" + }, + "invoices": { + "message": "Rēķini" + }, + "noInvoices": { + "message": "Nav rēķinu." + }, + "paid": { + "message": "Apmaksāts", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Neapmaksāts", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Darījumi", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Nav darījumu." + }, + "chargeNoun": { + "message": "Apmaksa", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Atmaksa", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Visas apmaksas parādīsies izrakstā kā $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Krātuves GB, ko pievienot" + }, + "gbStorageRemove": { + "message": "Krātuves GB, ko noņemt" + }, + "storageAddNote": { + "message": "Krātuves izmēra palielināšana ietekmēs norēķinu kopējo apjomu, un uzreiz tiks veikta apmaksa ar norādīto maksājumu veidu. Pirmās apmaksas lielums būs atbilstošs atlikušajai pašreizējā norēķinu laika posma daļai." + }, + "storageRemoveNote": { + "message": "Krātuves apjoma samazināšana ietekmēs apmaksas apjomu, kas tiks piešķirts kā kredīts, kas atbilst atlikušajam laikam līdz nākamajam apmaksas laika posmam." + }, + "adjustedStorage": { + "message": "Tika mainīts(i) $AMOUNT$ GB krātuves.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Sazinieties ar klientu atbalstu" + }, + "updatedPaymentMethod": { + "message": "Apmaksas veids atjaunināts." + }, + "purchasePremium": { + "message": "Iegādāties Premium" + }, + "licenseFile": { + "message": "Licences datne" + }, + "licenseFileDesc": { + "message": "Licences datne tiks nosaukta apmēram šādi: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Lai uzlabotu kontu ar Premium dalību, ir nepieciešams augšupielādēt derīgu licences datni." + }, + "uploadLicenseFileOrg": { + "message": "Lai izveidotu pašizvietotu apvienību, ir nepieciešams augšupielādēt derīgu licences datni." + }, + "accountEmailMustBeVerified": { + "message": "Ir jāapstiprina konta e-pasta adrese." + }, + "newOrganizationDesc": { + "message": "Apvienības sniedz iespēju kopīgot daļu no glabātavas ar citiem, kā arī pārvaldīt saistītos lietotājus tādos veidojumos kā ģimene, maza vienība vai liels uzņēmums." + }, + "generalInformation": { + "message": "Vispārīga informācija" + }, + "organizationName": { + "message": "Apvienības nosaukums" + }, + "accountOwnedBusiness": { + "message": "Šis konts pieder uzņēmumam." + }, + "billingEmail": { + "message": "E-pasta adrese norēķiniem" + }, + "businessName": { + "message": "Uzņēmuma nosaukums" + }, + "chooseYourPlan": { + "message": "Izvēlēties plānu" + }, + "users": { + "message": "Lietotāji" + }, + "userSeats": { + "message": "Lietotāju vietas" + }, + "additionalUserSeats": { + "message": "Papildus lietotāju vietas" + }, + "userSeatsDesc": { + "message": "# lietotāju vietas" + }, + "userSeatsAdditionalDesc": { + "message": "Pašreizējā plānā ir iekļauta(s) $BASE_SEATS$ lietotāju vieta(s). Papildus lietotājus var pievienot par $SEAT_PRICE$ mēnesī par katru.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Cik daudz lietotāju vietas ir nepieciešamas? Vēlāk ir iespējams pievienot papildus vietas, ja nepieciešams." + }, + "planNameFree": { + "message": "Bezmaksas", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Pārbaudei vai personīgai izmantošanai, lai kopīgotu ar $COUNT$ citiem lietotājiem.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Ģimenes" + }, + "planDescFamilies": { + "message": "Personīgai izmantošanai, lai kopīgotu ar ģimeni un draugiem." + }, + "planNameTeams": { + "message": "Vienības" + }, + "planDescTeams": { + "message": "Uzņēmumiem un citām apvienībām." + }, + "planNameEnterprise": { + "message": "Uzņēmējdarbība" + }, + "planDescEnterprise": { + "message": "Uzņēmumiem un citām lielām apvienībām." + }, + "freeForever": { + "message": "Vienmēr bezmaksas" + }, + "includesXUsers": { + "message": "ietver $COUNT$ lietotāju(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Papildus lietotāji" + }, + "costPerUser": { + "message": "$COST$ par lietotāju", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Ierobežots līdz $COUNT$ lietotājiem (ieskaitot Tevi)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Ierobežots līdz $COUNT$ krājumiem", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Pievieno un kopīgo ar līdz $COUNT$ lietotājiem", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Pievieno un kopīgo ar neierobežotu lietotāju skaitu" + }, + "createUnlimitedCollections": { + "message": "Izveido neierobežotu daudzumu krājumu" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ šifrēta datņu krātuve", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Pašizvietošana (nav nepieciešama)" + }, + "usersGetPremium": { + "message": "Lietotāji saņem piekļuvi Premium iespējām" + }, + "controlAccessWithGroups": { + "message": "Pārvaldi lietotāju piekļuvi ar kopām" + }, + "syncUsersFromDirectory": { + "message": "Sinhronizē lietotājus un kopas no direktorija" + }, + "trackAuditLogs": { + "message": "Seko lietotāju darbībām pārbaudes žurnālos" + }, + "enforce2faDuo": { + "message": "Ieviest 2FA ar Duo" + }, + "priorityCustomerSupport": { + "message": "Priekšrocīgs lietotāju atbalsts" + }, + "xDayFreeTrial": { + "message": "$COUNT$ dienu bezmaksas izmēģinājums, atcelt var jebkurā brīdī", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Katru mēnesi" + }, + "annually": { + "message": "Katru gadu" + }, + "basePrice": { + "message": "Pamata cena" + }, + "organizationCreated": { + "message": "Apvienība izveidota" + }, + "organizationReadyToGo": { + "message": "Jaunā apvienība ir gatava darbam!" + }, + "organizationUpgraded": { + "message": "Apvienība tika uzlabota." + }, + "leave": { + "message": "Pamest" + }, + "leaveOrganizationConfirmation": { + "message": "Vai tiešām pamest šo apvienību?" + }, + "leftOrganization": { + "message": "Apvienība ir pamesta." + }, + "defaultCollection": { + "message": "Noklusējuma krājums" + }, + "getHelp": { + "message": "Saņemt palīdzību" + }, + "getApps": { + "message": "Iegūt lietotnes" + }, + "loggedInAs": { + "message": "Pierakstījies kā" + }, + "eventLogs": { + "message": "Notikumu žurnāli" + }, + "people": { + "message": "Cilvēki" + }, + "policies": { + "message": "Nosacījumi" + }, + "singleSignOn": { + "message": "Vienotā pierakstīšanās (Single Sign-On)" + }, + "editPolicy": { + "message": "Labot nosacījumus" + }, + "groups": { + "message": "Kopas" + }, + "newGroup": { + "message": "Jauna kopa" + }, + "addGroup": { + "message": "Pievienot kopu" + }, + "editGroup": { + "message": "Labot kopu" + }, + "deleteGroupConfirmation": { + "message": "Vai tiešām vēlaties dzēst šo kopu?" + }, + "removeUserConfirmation": { + "message": "Vai tiešām noņemt šo lietotāju?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Uzmanību! Šim lietotājam ir nepieciešams Key Connector, lai pārvaldītu šifrēšanu. Lietotāja noņemšana no apvienības neatgriezeniski atspējos viņa kontu. Šī darbība nevar tikt atdarīta. Vai turpināt?" + }, + "externalId": { + "message": "Ārējais ID" + }, + "externalIdDesc": { + "message": "Ārējo ID var izmanto kā atsauci vai kā saikni starp šo līdzekli un ārēju sistēmu, piemēram, lietotāju direktoriju." + }, + "accessControl": { + "message": "Piekļuves pārraudzība" + }, + "groupAccessAllItems": { + "message": "Šī kopa var piekļūt visiem vienumiem un mainīt tos." + }, + "groupAccessSelectedCollections": { + "message": "Šī kopa var piekļūt tikai izvēlētajiem krājumiem." + }, + "readOnly": { + "message": "Tikai lasāms" + }, + "newCollection": { + "message": "Jauns krājums" + }, + "addCollection": { + "message": "Pievienot krājumu" + }, + "editCollection": { + "message": "Labot krājumu" + }, + "deleteCollectionConfirmation": { + "message": "Vai tiešām izdzēst šo krājumu?" + }, + "editUser": { + "message": "Labot lietotāju" + }, + "inviteUser": { + "message": "Uzaicināt lietotāju" + }, + "inviteUserDesc": { + "message": "Uziacināt apvienībā jaunu lietotāju, zemāk esošajā laukā ievadot viņa Bitwarden konta e-pasta adresi. Ja viņam vēl nav Bitwarden konta, tiks vaicāts izveidot jaunu." + }, + "inviteMultipleEmailDesc": { + "message": "Ir iespējams vienlaicīgi uzaicināt līdz $COUNT$ lietotājiem, atdalot to e-pasta adreses ar komatiem.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Šis lietotājs izmanto divpakāpju pierakstīšanos, lai aizsargātu savu kontu." + }, + "userAccessAllItems": { + "message": "Šis lietotājs var piekļūt visiem vienumiem un mainīt tos." + }, + "userAccessSelectedCollections": { + "message": "Šis lietotājs var piekļūt tikai pie atlasītajiem krājumiem." + }, + "search": { + "message": "Meklēt" + }, + "invited": { + "message": "Uzaicināts" + }, + "accepted": { + "message": "Pieņemts" + }, + "confirmed": { + "message": "Apstiprināts" + }, + "clientOwnerEmail": { + "message": "Pasūtītāja īpašnieka e-pasta adrese" + }, + "owner": { + "message": "Īpašnieks" + }, + "ownerDesc": { + "message": "Lietotājs ar augstākajām piekļuves tiesībām, kurš var pārvaldīt visu apvienībā." + }, + "clientOwnerDesc": { + "message": "Šim lietotājam būtu jābūt neatkarīgam no sniedzēja. Ja sniedzējs tiek atdalīts no apvienības, šis lietotājs saglabās tās īpašumtiesības." + }, + "admin": { + "message": "Pārvaldnieks" + }, + "adminDesc": { + "message": "Pārvaldnieki var piekļūt un pārvaldīt visus apvienības vienumus, krājumus un lietotājus." + }, + "user": { + "message": "Lietotājs" + }, + "userDesc": { + "message": "Parasts lietotājs ar piekļuvi piešķirtajiem apvienības krājumiem." + }, + "manager": { + "message": "Vadītājs" + }, + "managerDesc": { + "message": "Vadītāji var piekļūt un pārvaldīt piešķirtos apvienības krājumus." + }, + "all": { + "message": "Visi" + }, + "refresh": { + "message": "Atsvaidzināt" + }, + "timestamp": { + "message": "Laikspiedols" + }, + "event": { + "message": "Notikums" + }, + "unknown": { + "message": "Nezināms" + }, + "loadMore": { + "message": "Ielādēt vairāk" + }, + "mobile": { + "message": "Tālrunis", + "description": "Mobile app" + }, + "extension": { + "message": "Paplašinājums", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Darbvirsma", + "description": "Desktop app" + }, + "webVault": { + "message": "Tīmekļa glabātava" + }, + "loggedIn": { + "message": "Pierakstījies." + }, + "changedPassword": { + "message": "Konta parole nomainīta." + }, + "enabledUpdated2fa": { + "message": "Divpakāpju pierakstīšanās iespējota/atjaunināta." + }, + "disabled2fa": { + "message": "Divpakāpju pierakstīšanās atspējota." + }, + "recovered2fa": { + "message": "Konts atkopts no divpakāpju pierakstīšanās." + }, + "failedLogin": { + "message": "Pierakstīšanās mēģinājums neizdevās nepareizas paroles dēļ." + }, + "failedLogin2fa": { + "message": "Pierakstīšanās mēģinājums neizdevās nepareizas divpakāpju pierakstīšanās dēļ." + }, + "exportedVault": { + "message": "Glabātavas saturs izgūts." + }, + "exportedOrganizationVault": { + "message": "Izgūts apvienības glabātavas saturs." + }, + "editedOrgSettings": { + "message": "Laboti apvienības iestatījumi." + }, + "createdItemId": { + "message": "Izveidots vienums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Labots vienums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Vienumu $ID$ pārvietots uz atkritni.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Vienums $ID$ tika pārvietots uz apvienību.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Skatīts vienums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Skatīta vienuma $ID$ parole.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Skatīts vienuma $ID$ slēpts lauks.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Skatīts vienuma $ID$ drošības kods.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Vienuma $ID$ parole ievietota starpliktuvē.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Vienuma $ID$ slēpts lauks ievietots starpliktuvē.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Vienuma $ID$ drošības kods ievietots starpliktuvē.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Automātiski aizpildīts vienums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Izveidots krājums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Labots krājums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Izdzēsts krājums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Labots nosacījumu kopums $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Izveidota kopa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Labota kopa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Izdzēsta kopa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Noņemts lietotājs $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Izveidots pielikumu vienumam $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Izdzēsts pielikums vienumam $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Laboti krājumi vienumam $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Uzaicināts lietotājs $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Apstiprināts lietotājs $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Labots lietotājs $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Labotas kopas lietotājam $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Atsaistīta vienotā pieteikšanās lietotājam $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Izveidota apvienība $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Pievienota apvienība $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Noņemta apvienība $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Piekļūts apvienības $ID$ glabātavai.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Ierīce" + }, + "view": { + "message": "Skatīt" + }, + "invalidDateRange": { + "message": "Nederīgs datumu apgabals." + }, + "errorOccurred": { + "message": "Radusies kļūda." + }, + "userAccess": { + "message": "Lietotāja piekļuve" + }, + "userType": { + "message": "Lietotāja veids" + }, + "groupAccess": { + "message": "Kopu piekļuve" + }, + "groupAccessUserDesc": { + "message": "Labot kopas, kurās ir iekļauts šis lietotājs." + }, + "invitedUsers": { + "message": "Uzaicināts(i) lietotājs(i)." + }, + "resendInvitation": { + "message": "Atkārtoti nosūtīt uzaicinājumu" + }, + "resendEmail": { + "message": "Atkārtoti nosūtīt e-pastu" + }, + "hasBeenReinvited": { + "message": "$USER$ tika atkārtoti uzaicināts.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Apstiprināt" + }, + "confirmUser": { + "message": "Apstiprināt lietotāju" + }, + "hasBeenConfirmed": { + "message": "$USER$ tika apstiprināts.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Apstiprināt lietotājus" + }, + "usersNeedConfirmed": { + "message": "Ir lietotāji, kas nav pieņēmuši uzaicinājumu, bet joprojām ir jāapstiprina. Lietotājiem nebūs piekļuves apvienībai, līdz tie nebūs apstiprināti." + }, + "startDate": { + "message": "Sākuma datums" + }, + "endDate": { + "message": "Beigu datums" + }, + "verifyEmail": { + "message": "Apstiprināt e-pastu" + }, + "verifyEmailDesc": { + "message": "Ir jāapstiprina konta e-pasta adrese, lai piekļūtu visām iespējām." + }, + "verifyEmailFirst": { + "message": "Vispirms ir jāapstiprina konta e-pasta adrese." + }, + "checkInboxForVerification": { + "message": "Jāpārbauda e-pasts, vai tajā ir ziņojums ar apstiprinājuma saiti." + }, + "emailVerified": { + "message": "E-pasta adrese ir apstiprināta." + }, + "emailVerifiedFailed": { + "message": "Nevarēja apstiprināt e-pasta adresi. Var mēģināt sūtīt atkārtotu apstiprinājuma e-pasta ziņojumu." + }, + "emailVerificationRequired": { + "message": "Nepieciešama e-pasta adreses apstiprināšana" + }, + "emailVerificationRequiredDesc": { + "message": "Ir jāapstiprina e-pasta adrese, lai izmantotu šo iespēju." + }, + "updateBrowser": { + "message": "Atjaunināt pārlūku" + }, + "updateBrowserDesc": { + "message": "Tiek izmantots neatbalstīts tīmekļa pārlūks. Tīmekļa glabātava var darboties nepareizi." + }, + "joinOrganization": { + "message": "Pievienoties apvienībai" + }, + "joinOrganizationDesc": { + "message": "Tu esi uzaicināts pievienoties augstāk norādītajai apvienībai. Lai to pieņemtu, jāpierakstās vai jāizveido jauns Bitwarden konts." + }, + "inviteAccepted": { + "message": "Uzaicinājums pieņemts" + }, + "inviteAcceptedDesc": { + "message": "Piekļūt apvienībai varēs, kad tās pārvaldnieks apstiprinās dalību. Tiks nosūtīts e-pasta ziņojums, kad tas notiks." + }, + "inviteAcceptFailed": { + "message": "Nav iespējams pieņemt uzaicinājumu. Jālūdz apvienības pārvaldniekam nosūtīt jaunu." + }, + "inviteAcceptFailedShort": { + "message": "Neizdevās pieņemt uzaicinājumu. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Atcerēties e-pasta adresi" + }, + "recoverAccountTwoStepDesc": { + "message": "Ja kontam nevar piekļūt ar ierastajiem divpakāpju pierakstīšanās veidiem, var izmantot atkopšanas kodu, lai atspējotu visus konta divpakāpju pierakstīšanās nodrošinātājus." + }, + "recoverAccountTwoStep": { + "message": "Atkopt konta divpakāpju pierakstīšanos" + }, + "twoStepRecoverDisabled": { + "message": "Divpakāpju pierakstīšanās kontā ir atspējota." + }, + "learnMore": { + "message": "Uzzināt vairāk" + }, + "deleteRecoverDesc": { + "message": "Ievadīt e-pasta adresi zemāk esošajā laukā, lai atkoptu un izdzēstu kontu." + }, + "deleteRecoverEmailSent": { + "message": "Ja konts pastāv, tika nosūtīts e-pasta ziņojums ar turpmākām norādēm." + }, + "deleteRecoverConfirmDesc": { + "message": "Tika pieprasīts dzēst Bitwarden kontu. Nospiest zemāk esošo pogu, lai apstiprinātu." + }, + "myOrganization": { + "message": "Mana apvienība" + }, + "deleteOrganization": { + "message": "Izdzēst apvienību" + }, + "deletingOrganizationContentWarning": { + "message": "Ir jāievada galvenā parole, lai apstiprinātu $ORGANIZATION$ un saistīto datu dzēšanu. $ORGANIZATION$ glabātavas dati iekļauj:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Pēc dzēšanas lietotāju konti joprojām darbosies, bet tie vairs nebūs saistīti ar šo apvienību." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "$ORGANIZATION$ dzēšana ir paliekoša un neatgriezeniska.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Apvienība izdzēsta" + }, + "organizationDeletedDesc": { + "message": "Apvienība un visi ar to saistītie dati ir izdzēsti." + }, + "organizationUpdated": { + "message": "Apvienība atjaunināta" + }, + "taxInformation": { + "message": "Nodokļu informācija" + }, + "taxInformationDesc": { + "message": "Klientiem, kas atrodas ASV, pasta indeksu ir nepieciešams norādīt, lai izpildītu pārdošanas nodokļa prasības, un citām valstīm var norādīt nodokļu maksātāja numuru (VAT/GST) un/vai adresi kas, būs redzama rēķinos." + }, + "billingPlan": { + "message": "Plāns", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Mainīt plānu", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Uzlabot kontu uz citu plānu var norādot informāciju zemāk. Lūgums pārliecinieties, ka kontam ir pievienots derīgs apmaksas veids.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Rēķins #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Skatīt rēķinu" + }, + "downloadInvoice": { + "message": "Lejupielādēt rēķinu" + }, + "verifyBankAccount": { + "message": "Apstiprināt bankas kontu" + }, + "verifyBankAccountDesc": { + "message": "Bankas kontā ir veiktas divas niecīga apjoma iemaksas (var būt nepieciešama 1 - 2 darba dienas, līdz tās tiks saņemtas). Šie daudzumi ir jāievada, lai apstiprinātu bankas kontu." + }, + "verifyBankAccountInitialDesc": { + "message": "Apmaksa no bankas konta ir pieejama tikai Amerikas Savienoto Valstu klientiem. Būs nepieciešams apstiprināt bankas kontu. Tiks veiktas divas niecīga apjoma iemaksas nākamās 1 - 2 darba dienu laikā. To apjoms būs jāievada apvienības norēķinu sadaļā, lai apstiprinātu bankas kontu." + }, + "verifyBankAccountFailureWarning": { + "message": "Ja neizdosies apstiprināt bankas kontu, tiks kavēts maksājums, un abonements tiks atspējots." + }, + "verifiedBankAccount": { + "message": "Bankas konts tika apstiprināts." + }, + "bankAccount": { + "message": "Bankas konts" + }, + "amountX": { + "message": "Summa $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Maršrutēšanas numurs", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Konta numurs" + }, + "accountHolderName": { + "message": "Konta īpašnieks vārds" + }, + "bankAccountType": { + "message": "Konta veids" + }, + "bankAccountTypeCompany": { + "message": "Uzņēmums (uzņēmējdarbība)" + }, + "bankAccountTypeIndividual": { + "message": "Persona (personīgs)" + }, + "enterInstallationId": { + "message": "Ievadīt uzstādīšanas ID" + }, + "limitSubscriptionDesc": { + "message": "Uzstāda abonentu skaita ierobežojumu. Kad tas tiks sasniegts, nebūs iespējams uzaicināt jaunus lietotājus." + }, + "maxSeatLimit": { + "message": "Lielākais iespējamais vietu skaits (var nenorādīt)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Lielākā iespējamā vietas cena" + }, + "addSeats": { + "message": "Pievienot vietas", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Noņemt vietas", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Abonementa pielāgojumi izvērtīsies attiecīgās izmaiņās kopējā rēķinā. Ja jauno uzaicināto lietotāju skaits pārsniedz abonementu vietas, nekavējoties tiks veikts atbilstošs maksājums par papildu lietotājiem." + }, + "subscriptionUserSeats": { + "message": "Pašreizējais abonements pieļaujamais lietotāju skaits ir līdz $COUNT$.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Ierobežot abonēšanu (pēc izvēles)" + }, + "subscriptionSeats": { + "message": "Abonementu skaits" + }, + "subscriptionUpdated": { + "message": "Abonements atjaunināts" + }, + "additionalOptions": { + "message": "Papildu iespējas" + }, + "additionalOptionsDesc": { + "message": "Papildu palīdzības saņemšanai abonementa pārvaldībā lūgums sazināties ar klientu atbalstu." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Abonementa pielāgojumi izvērtīsies attiecīgās izmaiņās kopējā rēķinā. Ja jauno uzaicināto lietotāju skaits pārsniedz abonementu vietas, nekavējoties tiks veikts atbilstošs maksājums par papildu lietotājiem." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Abonementa pielāgojumi izvērtīsies attiecīgās izmaiņās kopējā rēķinā. Ja jauno uzaicināto lietotāju skaits pārsniedz abonementu vietas, nekavējoties tiks veikts atbilstošs maksājums par papildu lietotājiem līdz tiks sasniegts $MAX$ vietu ierobežojums.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Nevar uzaicināt vairāk kā $COUNT$ lietotāju(s) bez plāna paaugstināšanas.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Nevar uzaicināt vairāk kā $COUNT$ lietotāju(s) bez plāna paaugstināšanas. Lūgums sazināties ar klientu atbalstu, lai to izdarītu.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Abonements pieļauj $COUNT$ lietotāju(s). Plānu ir apmaksāts un norēķinus veic ārēja apvienība.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Abonementa pielāgojumi izvērtīsies attiecīgās izmaiņās kopējā rēķinā. Nav iespējams uzaicināt vairāk kā $COUNT$ lietotājus bez abonementu vietu skaita palielināšanas.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Vietas, ko pievienot" + }, + "seatsToRemove": { + "message": "Vietas, ko noņemt" + }, + "seatsAddNote": { + "message": "Lietotāju vietu pievienošana ietekmēs norēķinu kopējo apjomu, un uzreiz tiks veikta apmaksa ar norādīto maksājumu veidu. Pirmās apmaksas lielums būs atbilstošs atlikušajai pašreizējā norēķinu laika posma daļai." + }, + "seatsRemoveNote": { + "message": "Lietotāju vietu mazināšana mainīs jūsu kopsummu, kas tiks atgriezta kā kredīti nākamai norēķinu apmaksai." + }, + "adjustedSeats": { + "message": "Pielāgota(s) $AMOUNT$ lietotāju vieta(s).", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Atslēga atjaunināta" + }, + "updateKeyTitle": { + "message": "Atjaunināt atslēgu" + }, + "updateEncryptionKey": { + "message": "Atjaunināt šifrēšanas atslēgu" + }, + "updateEncryptionKeyShortDesc": { + "message": "Pašreiz tiek izmantots novecojis šifrēšanas veids." + }, + "updateEncryptionKeyDesc": { + "message": "Tiek izmantotas garākas šifrēšanas atslēgas, kas nodrošina labāku drošību un piekļuvi jaunākām iespējām. Šifrēšanas atslēgas atjaunināšana ir ātra un vienkārša. Zemāk ir tikai jāievada galvenā parole. Ar laiku šis atjauninājums kļūs nepieciešams." + }, + "updateEncryptionKeyWarning": { + "message": "Pēc šifrēšanas atslēgas atjaunināšanas ir nepieciešams izrakstīties un tad pierakstīties visās Bitwarden lietotnēs, kas pašreiz tiek izmantotas (piemēram, tālruņa lietotnē vai pārlūku paplašinājumā). Ja tas netiks darīts (tā tiek lejupielādēta jaunā šifrēšanas atslēga), dati var tikt bojāti. Tiks veikts automātiskās izrakstīšanās mēģinājums, tomēr tas var notikt ar aizkavi." + }, + "updateEncryptionKeyExportWarning": { + "message": "Arī katra šifrētā izguve, kas ir saglabāta, kļūs nederīga." + }, + "subscription": { + "message": "Abonements" + }, + "loading": { + "message": "Ielādē" + }, + "upgrade": { + "message": "Uzlabot" + }, + "upgradeOrganization": { + "message": "Uzlabot apvienību" + }, + "upgradeOrganizationDesc": { + "message": "Šī iespēja nav pieejama bezmaksas apvienībām. Maksas plāna izvēle sniedz plašākas iespējas." + }, + "createOrganizationStep1": { + "message": "Apvienības izveidošana: 1. solis" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Pirms apvienības izveidošanas, vispirms ir nepieciešams izveidot bezmaksas personīgo kontu." + }, + "refunded": { + "message": "Atmaksa veikta" + }, + "nothingSelected": { + "message": "Nekas nav atlasīts." + }, + "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." + }, + "termsOfService": { + "message": "Izmantošanas nosacījumi" + }, + "privacyPolicy": { + "message": "Privātuma nosacījumi" + }, + "filters": { + "message": "Atlases" + }, + "vaultTimeout": { + "message": "Glabātavas noildze" + }, + "vaultTimeoutDesc": { + "message": "Izvēlēties, kad glabātavai iestāsies noildze un tiks izpildīta atlasītā darbība." + }, + "oneMinute": { + "message": "1 minūte" + }, + "fiveMinutes": { + "message": "5 minūtes" + }, + "fifteenMinutes": { + "message": "15 minūtes" + }, + "thirtyMinutes": { + "message": "30 minūtes" + }, + "oneHour": { + "message": "1 stunda" + }, + "fourHours": { + "message": "4 stundas" + }, + "onRefresh": { + "message": "Pēc pārlūka pārlādes" + }, + "dateUpdated": { + "message": "Atjaunināts", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parole atjaunināta", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Apvienība ir atspējota." + }, + "licenseIsExpired": { + "message": "Ir beidzies licences izmantošanas laiks." + }, + "updatedUsers": { + "message": "Lietotāji atjaunināti" + }, + "selected": { + "message": "Atlasīts" + }, + "ownership": { + "message": "Īpašumtiesības" + }, + "whoOwnsThisItem": { + "message": "Kam pieder šis vienums?" + }, + "strong": { + "message": "Spēcīga", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Laba", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Vāja", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Ļoti vāja", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Mainīt arī konta šifrēšanas atslēgu" + }, + "rotateEncKeyTitle": { + "message": "Mainīt šifrēšanas atslēgu" + }, + "rotateEncKeyConfirmation": { + "message": "Vai tiešām mainīt konta šifrēšanas atslēgu?" + }, + "attachmentsNeedFix": { + "message": "Šim vienumam ir veci datņu pielikumi, kas ir jāsalabo." + }, + "attachmentFixDesc": { + "message": "Šis ir vecs datnes pielikums, kas ir jāsalabo. Klikšķināt, lai uzzinātu vairāk." + }, + "fix": { + "message": "Salabot", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Glabātavā atrodas veci datņu pielikumi, kas ir jāsalabo, pirms tiek veikta konta šifrēšanas atslēgu maiņa." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Lai pārliecinātos par šifrēšanas atslēgu neskartību, lūgums pirms turpināšanas pārbaudīt lietotāja atpazīšanas vārdkopu.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Vairs nevaicāt pārbaudīt atpazīšanas vārdkopu", + "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." + }, + "free": { + "message": "Bezmaksas", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API atslēga" + }, + "apiKeyDesc": { + "message": "API atslēga var tikt izmantota, lai autentificētos Bitwarden publiskā API izmantošanai." + }, + "apiKeyRotateDesc": { + "message": "API atslēgas mainīšana padarīs nederīgu iepriekšējo. Pašreizējo API atslēgu var mainīt, ja ir aizdomas, ka tā vairs nav droša izmantošanai." + }, + "apiKeyWarning": { + "message": "API atslēga nodrošina pilnīgu piekļuvi apvienībai. To vajadzētu glabāt noslēpumā." + }, + "userApiKeyDesc": { + "message": "API atslēga var tikt izmantota, lai autentificētos Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "API atslēga ir papildus autentificēšanās risinājums. To vajadzētu glabāt noslēpumā." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 klienta akreditācijas dati", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Skatīt API atslēgu" + }, + "rotateApiKey": { + "message": "Mainīt API atslēgu" + }, + "selectOneCollection": { + "message": "Ir jāizvēlas vismaz viens krājums." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nebija iespējams veikt apmaksu ar norādīto karti. Lūgums apskatīt un apmaksāt zemāk norādīto rēķinu." + }, + "inAppPurchase": { + "message": "Pirkšana lietotnē" + }, + "cannotPerformInAppPurchase": { + "message": "Šī darbība nevar tikt veikta, izmantojot pirkšana lietotnē apmaksas veidu." + }, + "manageSubscriptionFromStore": { + "message": "Abonements ir jāpārvalda veikalā, kurā tika veikts pirkums lietotnē." + }, + "minLength": { + "message": "Mazākais pieļaujamais garums" + }, + "clone": { + "message": "Pavairot" + }, + "masterPassPolicyDesc": { + "message": "Uzstādīt galvenās paroles stipruma mazākās izpildāmās prasības." + }, + "twoStepLoginPolicyDesc": { + "message": "Pieprasīt lietotājiem uzstādīt divpakāpju pierakstīšanos personīgajiem kontiem." + }, + "twoStepLoginPolicyWarning": { + "message": "Apvienības dalībnieki, kuri nav īpašnieki vai pārvaldītāji un kuriem nav iespējota divpakāpju pierakstīšanās personīgajam kontam, tiks noņemti, un viņiem tiks nosūtīts e-pasta ziņojums par izmaiņām." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Tu esi apvienību, kas pieprasa lietotāju kontā iespējot divpakāpju pierakstīšanos, dalībnieks. Ja tiks atspējoti visi divpakāpju pierakstīšanās nodrošinātāji, Tu automātiski tiksi noņemts šīm apvienībām." + }, + "passwordGeneratorPolicyDesc": { + "message": "Uzstādīt paroļu veidotāja uzstādījumu mazākās izpildāmās prasības." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Viens vai vairāki apvienības nosacījumi ietekmē veidotāja iestatījumus." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Mazākais pieļaujamais vārdu skaits" + }, + "defaultType": { + "message": "Noklusējuma veids" + }, + "userPreference": { + "message": "Lietotāja izvēle" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Meklēt atkritnē" + }, + "permanentlyDelete": { + "message": "Neatgriezeniski izdzēst" + }, + "permanentlyDeleteSelected": { + "message": "Neatgriezeniski izdzēst atlasīto" + }, + "permanentlyDeleteItem": { + "message": "Neatgriezeniski izdzēst vienumu" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Vai tiešām neatgriezeniski izdzēst šo vienumu?" + }, + "permanentlyDeletedItem": { + "message": "Vienums neatgriezeniski izdzēsts" + }, + "permanentlyDeletedItems": { + "message": "Vienum neatgriezeniski izdzēsti" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Neatgriezeniskai izdzēšanai ir atlasīts(i) $COUNT$ vienums(i). Vai tiešām izdzēst tos visus?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Vienums $ID$ neatgriezeniski izdzēsts.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Atjaunot" + }, + "restoreSelected": { + "message": "Atjaunot atlasīto" + }, + "restoreItem": { + "message": "Atjaunot vienumu" + }, + "restoredItem": { + "message": "Vienums atjaunots" + }, + "restoredItems": { + "message": "Vienumi atjaunoti" + }, + "restoreItemConfirmation": { + "message": "Vai tiešām atjaunot šo vienumu?" + }, + "restoreItems": { + "message": "Atjaunot vienumus" + }, + "restoreSelectedItemsDesc": { + "message": "Atjaunošanai ir atlasīts(i) $COUNT$ vienums(i). Vai tiešām atjaunot tos visus?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Vienums $ID$ atjaunots.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Slēpt paroles" + }, + "countryPostalCodeRequiredDesc": { + "message": "Šī informācija ir nepieciešama tikai tirdzniecības nodokļa aprēķināšanai un finanšu atskaitēm." + }, + "includeVAT": { + "message": "Iekļaut VAT/GST informāciju (nav nepieciešama)" + }, + "taxIdNumber": { + "message": "VAT/GST nodokļu maksātāja numurs" + }, + "taxInfoUpdated": { + "message": "Nodokļu informācija atjaunināta." + }, + "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." + }, + "identifier": { + "message": "Identifikators" + }, + "organizationIdentifier": { + "message": "Apvienības identifikators" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Pierakstīties, izmantojot apvienības vienotās pieteikšanās portālu. Lūgums ievadīt apvienības identifikatoru, lai sāktu." + }, + "enterpriseSingleSignOn": { + "message": "Uzņēmuma vienotā pierakstīšanās" + }, + "ssoHandOff": { + "message": "Šo cilni tagad var aizvērt un turpināt paplašinājumā." + }, + "includeAllTeamsFeatures": { + "message": "Visas vienību iespējas, kā arī:" + }, + "includeSsoAuthentication": { + "message": "Vienotā autentificēšanās ar SAML 2.0 un OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Uzņēmuma nosacījumi" + }, + "ssoValidationFailed": { + "message": "SSO pārbaude neizdevās" + }, + "ssoIdentifierRequired": { + "message": "Ir nepieciešams apvienības identifikators." + }, + "unlinkSso": { + "message": "Atsaistīt SSO" + }, + "unlinkSsoConfirmation": { + "message": "Vai tiešām atsaistīt vienoto pieteikšanos šai apvienībai?" + }, + "linkSso": { + "message": "Piesaistīt SSO" + }, + "singleOrg": { + "message": "Viena vienīga apvienība" + }, + "singleOrgDesc": { + "message": "Ierobežo lietotāju iespēju pievienoties citām apvienībām." + }, + "singleOrgBlockCreateMessage": { + "message": "Tavā pašreizējā apvienībā ir nosacījums, kas neļauj pievienoties vairāk kā vienai. Lūdzu, sazinies ar savas apvienības pārvaldniekiem vai piesakies no cita Bitwarden konta!" + }, + "singleOrgPolicyWarning": { + "message": "Apvienības dalībnieki, kas nav īpašnieki vai pārvaldītāji un jau ir dalībnieki citā apvienībā, tiks atbrīvoti." + }, + "requireSso": { + "message": "Vienotās pieteikšanās autentificēšana" + }, + "requireSsoPolicyDesc": { + "message": "Norāda, ka lietotājiem ir jāpierakstās ar uzņēmuma vienoto pieteikšanos." + }, + "prerequisite": { + "message": "Priekšnosacījumi" + }, + "requireSsoPolicyReq": { + "message": "Vienas vienīgas apvienības uzņēmuma nosacījumiem ir jābūt iespējotai pirms šī nosacījuma uzstādīšanas." + }, + "requireSsoPolicyReqError": { + "message": "Vienas vienīgas apvienības nosacījumi nav iespējoti." + }, + "requireSsoExemption": { + "message": "Uz apvienības īpašniekiem un pārvaldītājiem neattiecas šīs nosacījumu kopas piemērošana." + }, + "sendTypeFile": { + "message": "Datne" + }, + "sendTypeText": { + "message": "Teksts" + }, + "createSend": { + "message": "Izveidot jaunu \"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." + }, + "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." + }, + "deleteSend": { + "message": "Dzēst \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Atspējots" + }, + "sendLink": { + "message": "\"Send\" saite", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Ievietot \"Send\" saiti starpliktuvē", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Noņemt paroli" + }, + "removedPassword": { + "message": "Parole noņemta" + }, + "removePasswordConfirmation": { + "message": "Vai tiešām noņemt paroli?" + }, + "hideEmail": { + "message": "Slēpt e-pasta adresi no saņēmējiem." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Visi \"Send\"" + }, + "maxAccessCountReached": { + "message": "Sasniegts lielākais pieļaujamais piekļuvju skaits", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Gaida dzēšanu" + }, + "expired": { + "message": "Beidzies izmantošanas laiks" + }, + "searchSends": { + "message": "Meklēt \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Šis \"Send\" ir aizsargāts ar paroli. Lūgums ievadīt paroli, lai varētu turpināt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Nezini paroli? Vaicā to sūtītājam, lai 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." + }, + "sendHiddenByDefault": { + "message": "Šis \"Send\" pēc noklusējuma ir paslēpts. Tā redzamību var pārslēgt ar zemāk esošo pogu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Lejupielādēt datni" + }, + "sendAccessUnavailable": { + "message": "\"Send\", kam mēģini piekļūt, nepastāv vai arī nav vairs pieejams.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Ar šo \"Send\" saistīto datni nevarēja atrast.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Nav \"Send\", ko parādīt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Ārkārtas piekļuve" + }, + "emergencyAccessDesc": { + "message": "Nodrošināt un pārvaldīt ārkārtas piekļuvi uzticamām kontaktpersonām. Tās var pieprasīt piekļuvi vai nu skatīt, vai arī pārņemt kontu ārkārtas gadījumā. Mūsu palīdzības lapā var uzzināt vairāk par to, kā darbojas bezzināšanu kopīgošana." + }, + "emergencyAccessOwnerWarning": { + "message": "Tu esi vienas vai vairāku apvienību īpašnieks. Ja sniegsi pārņemšanas piekļuvi ārkārtas kontaktpersonām, tās arī varēs izmantot visas īpašnieka tiesības pēc pārņemšanas." + }, + "trustedEmergencyContacts": { + "message": "Uzticamas ārkārtas kontaktpersonas" + }, + "noTrustedContacts": { + "message": "Vēl nav pievienots neviena ārkārtas kontaktpersona. Uzaicini kādu, lai uzsāktu!" + }, + "addEmergencyContact": { + "message": "Pievienot ārkārtas kontaktpersonu" + }, + "designatedEmergencyContacts": { + "message": "Norādīta kā ārkārtas kontaktpersona" + }, + "noGrantedAccess": { + "message": "Tu vēl neesi norādīts kā kāda ārkārtas kontaktpersona." + }, + "inviteEmergencyContact": { + "message": "Uzaicināt ārkārtas kontaktpersonu" + }, + "editEmergencyContact": { + "message": "Labot ārkārtas kontaktpersonu" + }, + "inviteEmergencyContactDesc": { + "message": "Uzaicināt jaunu ārkārtas kontaktpersonu, norādot tās Bitwarden konta e-pasta adresi zemāk esošajā ievades laukā. Ja kontaktpersonai vēl nav Bitwarden konta, tai tiks vaicāts izveidot jaunu." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Uzsākta ārkārtas piekļuve" + }, + "emergencyAccessRecoveryApproved": { + "message": "Ārkārtas piekļuve apstiprināta" + }, + "viewDesc": { + "message": "Var apskatīt visus glabātavas vienumus." + }, + "takeover": { + "message": "Pārņemšana" + }, + "takeoverDesc": { + "message": "Var atiestatīt kontu ar jaunu galveno paroli." + }, + "waitTime": { + "message": "Gaidīšanas laiks" + }, + "waitTimeDesc": { + "message": "Nepieciešamais laiks, pirms automātiski atļaut piekļuvi." + }, + "oneDay": { + "message": "1 diena" + }, + "days": { + "message": "$DAYS$ dienas", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Lietotājs uzaicināts." + }, + "acceptEmergencyAccess": { + "message": "Tu esi uzaicināts kļūt par ārkārtas kontaktpersonu augstāk norādītajam lietotājam. Lai apstiprinātu uzaicinājumu, ir nepieciešams pierakstīties vai izveidot jaunu Bitwarden kontu." + }, + "emergencyInviteAcceptFailed": { + "message": "Nav iespējams apstiprināt uzaicinājumu. Lūdz lietotājam nosūtīt jaunu!" + }, + "emergencyInviteAcceptFailedShort": { + "message": "Nav iespējams apstiprināt uzaicinājumu. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Šī lietotāja ārkārtas iespējas būs pieejamas pēc tam, kad būs apliecināta Tava identitāte. Tiks nosūtīts e-pasta paziņojums, kad tas notiks." + }, + "requestAccess": { + "message": "Pieprasīt piekļuvi" + }, + "requestAccessConfirmation": { + "message": "Vai tiešām pieprasīt ārkārtas piekļuvi? Tā tiks nodrošināta pēc $WAITTIME$ dienas(ām) vai pēc tam, kad lietotājs apstiprinās pieprasījumu.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Ārkārtas piekļuve ir pieprasīta lietotājam $USER$. Tiks nosūtīts e-pasta paziņojums, kad būs iespējams turpināt.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Apstiprināt" + }, + "reject": { + "message": "Noraidīt" + }, + "approveAccessConfirmation": { + "message": "Vai tiešām apstiprināt ārkārtas piekļuvi? Tā ļaus lietotājam $USER$ Tavā kontā veikt šādas darbības: $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Ārkārtas piekļuve apstiprināta." + }, + "emergencyRejected": { + "message": "Ārkārtas piekļuve noraidīta" + }, + "passwordResetFor": { + "message": "Parole atiestatīta lietotājam $USER$. Tagad var pierakstīties ar jauno paroli.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personīgās īpašumtiesības" + }, + "personalOwnershipPolicyDesc": { + "message": "Pieprasa lietotājus piesaistīt glabātavas vienumus apvienībai, noņemot personīgo īpašumtiesību iespēju." + }, + "personalOwnershipExemption": { + "message": "Uz apvienības īpašniekiem un pārvaldītājiem neattiecas šīs nosacījumu kopas piemērošana." + }, + "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." + }, + "disableSend": { + "message": "Atspējot \"Send\"" + }, + "disableSendPolicyDesc": { + "message": "Neļaut lietotājiem izveidot vai labot Bitwarden \"Send\". Esošu \"Send\" dzēšana joprojām ir iespējama.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Apvienību lietotāji, kas var pārvaldīt apvienības nosacījumu kopas, nav pakļauti šīs nosacījumu kopas piemērošanai." + }, + "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." + }, + "sendOptions": { + "message": "\"Send\" iestatījumi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Uzstādīt iestatījumus \"Send\" izveidošanai un labošanai.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Apvienību lietotāji, kas var pārvaldīt apvienības nosacījumu kopas, nav pakļauti šīs nosacījumu kopas piemērošanai." + }, + "disableHideEmail": { + "message": "Neļaut lietotājiem slēpt e-pasta adresi no saņēmējiem, kad tiek izveidots vai labots \"Send\".", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Ir spēkā zemāk uzskaitītie apvienības nosacījumi:" + }, + "sendDisableHideEmailInEffect": { + "message": "Lietotājiem nav ļauts slēpt e-pasta adresi no saņēmējiem, kad tiek izveidots vai labots \"Send\".", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Nosacījums $ID$ izmainīts.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plāna cena" + }, + "estimatedTax": { + "message": "Aptuvenais nodokļa aprēķins" + }, + "custom": { + "message": "Pielāgots" + }, + "customDesc": { + "message": "Nodrošina izvērstāku lietotāju tiesību pārvaldību sarežģītākos uzstādījumos." + }, + "permissions": { + "message": "Atļaujas" + }, + "accessEventLogs": { + "message": "Piekļūt notikumu žurnāla ierakstiem" + }, + "accessImportExport": { + "message": "Piekļūt ievietošanai/izgūšanai" + }, + "accessReports": { + "message": "Piekļūt atskaitēm" + }, + "missingPermissions": { + "message": "Trūkst nepieciešamo atļauju, lai veiktu šo darbību." + }, + "manageAllCollections": { + "message": "Pārvaldīt visus krājumus" + }, + "createNewCollections": { + "message": "Izvaidot jaunus krājumus" + }, + "editAnyCollection": { + "message": "Labot jebkuru krājumu" + }, + "deleteAnyCollection": { + "message": "Izdzēst jebkuru kolekciju" + }, + "manageAssignedCollections": { + "message": "Pārvaldīt norīkotos krājumus" + }, + "editAssignedCollections": { + "message": "Labot norīkotos krājumus" + }, + "deleteAssignedCollections": { + "message": "Izdzēst norīkotos krājumus" + }, + "manageGroups": { + "message": "Pārvaldīt kopas" + }, + "managePolicies": { + "message": "Pārvaldīt nosacījumus" + }, + "manageSso": { + "message": "Pārvaldīt vienoto pieteikšanos" + }, + "manageUsers": { + "message": "Pārvaldīt lietotājus" + }, + "manageResetPassword": { + "message": "Pārvaldīt paroles atiestatīšanu" + }, + "disableRequiredError": { + "message": "Vispirms pašrocīgi ir jāatspējo nosacījums $POLICYNAME$, lai varētu atspējot šo.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Apvienības nosacījumi ietekmē Tavas īpašumtiesību iespējas." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Apvienības nosacījums neļauj ievietot ārējos vienumus personīgajā glabātavā." + }, + "personalOwnershipCheckboxDesc": { + "message": "Atspējot personīgās īpašumtiesības apvienības lietotājiem" + }, + "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." + }, + "sendNameDesc": { + "message": "Lasāms nosaukums, kas apraksta šo \"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." + }, + "copySendLinkOnSave": { + "message": "Saglabājot ievietot šī \"Send\" saiti starpliktuvē." + }, + "sendLinkLabel": { + "message": "\"Send\" saite", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "\"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden \"Send\" vienkārši un droši pārsūta citiem slepenu un īslaicīgu informāciju.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Uzzināt vairāk par", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Tieša teksta vai datņu kopīgošana ar jebkuru." + }, + "sendVaultCardLearnMore": { + "message": "Uzzināt vairāk", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "skatīt", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": ", kā tas darbojas", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "vai", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "izmēģināt tagad", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "vai", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "pieteikties", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "izmēģinātu šodien.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden lietotājs $USER_IDENTIFIER$ kopīgoja sekojošo", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Bitwarden lietotājs, kurš izveidoja šo \"Send\", ir izvēlējies slēpt savu e-pasta adresi. Ir jāpārliecinās par avota uzticamību, pirms tiek izmantots vai lejupielādēts tā saturs.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Norādītais derīguma beigu datums nav derīgs." + }, + "deletionDateIsInvalid": { + "message": "Norādītais dzēšanas datums nav derīgs." + }, + "expirationDateAndTimeRequired": { + "message": "Ir jānorāda derīguma beigu datums un laiks." + }, + "deletionDateAndTimeRequired": { + "message": "Ir jānorāda dzēšanas datums un laiks." + }, + "dateParsingError": { + "message": "Atgadījās kļūda, saglabājot dzēšanas un derīguma beigu datumus." + }, + "webAuthnFallbackMsg": { + "message": "Lai apstiprinātu 2FA, lūgums klikšķināt uz zemāk esošās pogas." + }, + "webAuthnAuthenticate": { + "message": "Autentificēt WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn šajā pārlūkā netiek atbalstīts." + }, + "webAuthnSuccess": { + "message": "WebAuthn tika veiksmīgi apstiprināts.
Šo cilni var aizvērt." + }, + "hintEqualsPassword": { + "message": "Paroles norāde nedrīkst būt tāda pati kā parole." + }, + "enrollPasswordReset": { + "message": "Pievienot paroles atiestatīšanās sarakstam" + }, + "enrolledPasswordReset": { + "message": "Pievienots paroles atiestatīšanās sarakstam" + }, + "withdrawPasswordReset": { + "message": "Izņemt no paroles atiestatīšanas saraksta" + }, + "enrollPasswordResetSuccess": { + "message": "Pievienošana bija veiksmīga." + }, + "withdrawPasswordResetSuccess": { + "message": "Izņemšana bija veiksmīga." + }, + "eventEnrollPasswordReset": { + "message": "Lietotājs $ID$ tika pievienots paroles atiestatīšanas atbalsta sarakstam.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Lietotājs $ID$ tika izņemts no paroles atiestatīšanas atbalsta saraksta.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Lietotāja $ID$ galvenā parole tika atiestatīta.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Atiestatīt vienotās pierakstīšānās saiti lietotājam $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ pirmo reizi pierakstījās izmantojot vienoto pieteikšanos", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Atiestatīt paroli" + }, + "resetPasswordLoggedOutWarning": { + "message": "Turpināšana izrakstīs $NAME$ no pašreizējās sesijas, un pēc tam būs nepieciešams pierakstīties. Citās ierīcēs darbojošās sesijas var būt spēkā līdz vienai stundai.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "šo lietotāju" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Vienā vai vairākos apvienības nosacījumos ir norādīts, ka galvenajai parolei ir jāatbilst šādām prasībām:" + }, + "resetPasswordSuccess": { + "message": "Peroles atiestatīšana bija veiksmīga" + }, + "resetPasswordEnrollmentWarning": { + "message": "Ievietošana sarakstā ļaus apvienības pārvaldniekiem mainīt galveno paroli. Vai tiešām ievietot sarakstā?" + }, + "resetPasswordPolicy": { + "message": "Galvenās paroles atiestatīšana" + }, + "resetPasswordPolicyDescription": { + "message": "Ļaut apvienības pārvaldniekiem atiestatīt lietotāju galveno paroli." + }, + "resetPasswordPolicyWarning": { + "message": "Apvienības lietotājiem pašiem būs sevi jāievieto sarakstā vai viņiem jābūt automātiski ievietotiem sarakstā, pirms pārvaldnieki var atiestatīt galveno paroli." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automātiska ievietošana sarakstā" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Visi lietotāji tiks automātiski ievietoti paroles atiestatīšanas sarakstā, tiklīdz viņi apstiprinās uzaicinājumu." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Apvienībā jau esošie lietotāji netiks ar atpakaļejošu spēku ievietoti paroles atiestatīšanas sarakstā. Viņiem būs tas jāizdara pašiem, pirms pārvaldnieki varēs atiestatīt viņu galveno paroli." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Automātiski ievietot sarakstā jaunos lietotājus" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Apvienības atslēgu atbilde ir `null`" + }, + "resetPasswordDetailsError": { + "message": "Paroles atiestatīšanas informācijas atbilde ir `null`" + }, + "trashCleanupWarning": { + "message": "Šifri, kas atkritnē atrodas vairāk nekā 30 dienas, tiks izdzēsti." + }, + "trashCleanupWarningSelfHosted": { + "message": "Šifri, kas atkritnē atrodas jau kādu laika posmu, tiks izdzēsti." + }, + "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." + }, + "reinviteSelected": { + "message": "Atkārtoti nosūtīt uzaicinājumus" + }, + "noSelectedUsersApplicable": { + "message": "Šī darbība nav attiecināma uz nevienu no atlasītajiem lietotājiem." + }, + "removeUsersWarning": { + "message": "Vai tiešām noņemt šos lietotājus? Tas var aizņemt dažas sekundes un nevar tikt pārtraukts vai atcelts." + }, + "theme": { + "message": "Izskats" + }, + "themeDesc": { + "message": "Izvēlēties tīmekļa glabātavas izskatu." + }, + "themeSystem": { + "message": "Izmantot sistēmas izskatu" + }, + "themeDark": { + "message": "Tumšs" + }, + "themeLight": { + "message": "Gaišs" + }, + "confirmSelected": { + "message": "Apstiprināt atlasīto" + }, + "bulkConfirmStatus": { + "message": "Apjoma darbību stāvoklis" + }, + "bulkConfirmMessage": { + "message": "Veiksmīgi apstiprināts." + }, + "bulkReinviteMessage": { + "message": "Uzaicinājums veiksmīgi nosūtīts atkārtoti." + }, + "bulkRemovedMessage": { + "message": "Veiksmīgi noņemts" + }, + "bulkFilteredMessage": { + "message": "Nav iekļauts, tādēļ nav piemērojams šai darbībai." + }, + "fingerprint": { + "message": "Pirkstu nospiedums" + }, + "removeUsers": { + "message": "Noņemt lietotājus" + }, + "error": { + "message": "Kļūda" + }, + "resetPasswordManageUsers": { + "message": "Lietotāju pārvaldīšanai ir jābūt iespējotai arī ar paroļu atiestatīšanas pārvaldīšanas atļauju" + }, + "setupProvider": { + "message": "Sniedzēja iestatīšana" + }, + "setupProviderLoginDesc": { + "message": "Ir saņemts uzaicinājums iestatīt jaunu sniedzēju. Lai turpinātu, ir nepieciešams pierakstīties vai izveidot jaunu Bitwarden kontu." + }, + "setupProviderDesc": { + "message": "Lūgums zemāk norādīt nepieciešamo, lai pabeigtu sniedzēja iestatīšanu. Jautājumu gadījumā jāsazinās ar klientu atbalstu." + }, + "providerName": { + "message": "Sniedzēja nosaukums" + }, + "providerSetup": { + "message": "Sniedzējs ir iestatīts." + }, + "clients": { + "message": "Pasūtītāji" + }, + "providerAdmin": { + "message": "Sniedzēja pārvaldnieks" + }, + "providerAdminDesc": { + "message": "Augstākās piekļuves lietotājs, kurš var pilnībā pārvaldīt sniedzēju, kā arī piekļūt pasūtītāju apvienībām un tās pārvaldīt." + }, + "serviceUser": { + "message": "Pakalpojuma lietotājs" + }, + "serviceUserDesc": { + "message": "Apkalpes lietotāji var piekļūt visām pasūtītāju apvienībām un tās pārvaldīt." + }, + "providerInviteUserDesc": { + "message": "Uziacināt jaunu sniedzēja lietotāju, zemāk esošajā laukā ievadot viņa Bitwarden konta e-pasta adresi. Ja viņam vēl nav Bitwarden konta, tiks vaicāts izveidot jaunu." + }, + "joinProvider": { + "message": "Pievienoties sniedzējam" + }, + "joinProviderDesc": { + "message": "Tu esi uzaicināts pievienoties augstāk norādītajam sniedzējam. Lai to pieņemtu, jāpierakstās vai jāizveido jauns Bitwarden konts." + }, + "providerInviteAcceptFailed": { + "message": "Nav iespējams pieņemt uzaicinājumu. Jālūdz sniedzēja pārvaldniekam nosūtīt jaunu." + }, + "providerInviteAcceptedDesc": { + "message": "Piekļūt sniedzējam būs iespējams, kad tās pārvaldnieks apstiprinās dalību. Tiks nosūtīts e-pasta ziņojums, kad tas notiks." + }, + "providerUsersNeedConfirmed": { + "message": "Ir lietotāji, kas nav pieņēmuši uzaicinājumu, bet joprojām ir jāapstiprina. Lietotājiem nebūs piekļuves sniedzējam, līdz tie nebūs apstiprināti." + }, + "provider": { + "message": "Sniedzējs" + }, + "newClientOrganization": { + "message": "Jauna sniedzēja apvienība" + }, + "newClientOrganizationDesc": { + "message": "Izveidot jaunu pasūtītāja apvienību, kas būs piesaistīta šim kontam kā sniedzējam. Tas nodrošinās iespēju piekļūt šai apvienībai un to pārvaldīt." + }, + "addExistingOrganization": { + "message": "Pievienot esošo apvienību" + }, + "myProvider": { + "message": "Mans sniedzējs" + }, + "addOrganizationConfirmation": { + "message": "Vai tiešām pievienot $ORGANIZATION$ kā pasūtītāju $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Apvienība tika veiksmīgi pievienota sniedzējam" + }, + "accessingUsingProvider": { + "message": "Piekļūst apvienībai ar sniedzēju $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Sniedzējs ir atspējots." + }, + "providerUpdated": { + "message": "Sniedzējs atjaunināts" + }, + "yourProviderIs": { + "message": "Tavs nodrošinātājs ir $PROVIDER$. Tam apvienībā ir pārvaldīšanas (tajā skaitā izmaksu) tiesības.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Apvienība $ORGANIZATION$ tika atdalīta no sniedzēja.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Vai tiešām atdalīt šo apvienību? Tā turpinās pastāvēt, bet to vairs nepārvaldīs sniedzējs." + }, + "add": { + "message": "Pievienot" + }, + "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." + }, + "masterPasswordInvalidWarning": { + "message": "Galvenā parole neatbilst apvienības nosacījumu prasībām. Lai pievienotos apvienībai, ir nepieciešams atjaunināt galveno paroli. Turpinot notiks izrakstīšanās no pašreizējās sesijas, pieprasot atkal pierakstīties. Esošās sesijas citās iekārtās var turpināt darboties līdz vienai stundai." + }, + "maximumVaultTimeout": { + "message": "Glabātavas noildze" + }, + "maximumVaultTimeoutDesc": { + "message": "Uzstādīt lielāko iespējamo glabātavas noildzi visiem lietotājiem." + }, + "maximumVaultTimeoutLabel": { + "message": "Lielākā iespējamā glabātavas noildze" + }, + "invalidMaximumVaultTimeout": { + "message": "Nederīga lielākās iespējamās glabātavas noildzes vērtība." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Pielāgota glabātavas noildze" + }, + "vaultTimeoutToLarge": { + "message": "Glabātavas noildze pāŗsniedz apvienības uzstādīto ierobežojumu." + }, + "disablePersonalVaultExport": { + "message": "Atspējot personīgās glabātavas izgūšanu" + }, + "disablePersonalVaultExportDesc": { + "message": "Aizliedz lietotājiem izgūt viņu personīgo glabātavu saturu." + }, + "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." + }, + "selectType": { + "message": "Atlasīt vienotās pieteikšanās veidu" + }, + "type": { + "message": "Veids" + }, + "openIdConnectConfig": { + "message": "OpenID Connect uzstādījumi" + }, + "samlSpConfig": { + "message": "SAML pakalpojuma nodrošinātāja uzstādījumi" + }, + "samlIdpConfig": { + "message": "SAML identitātes nodrošinātāja uzstādījumi" + }, + "callbackPath": { + "message": "Atzvana ceļš" + }, + "signedOutCallbackPath": { + "message": "Izrakstīšanās atzvana ceļš" + }, + "authority": { + "message": "Autoritāte" + }, + "clientId": { + "message": "Pasūtītāja Id" + }, + "clientSecret": { + "message": "Pasūtītāja noslēpums" + }, + "metadataAddress": { + "message": "Metadatu adrese" + }, + "oidcRedirectBehavior": { + "message": "OIDC pārvirzīšanas uzvedība" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Iegūt prasības no lietotāja informācijas galapunkta" + }, + "additionalScopes": { + "message": "Papildu/pielāgoti tvērumi (atdalīti ar komatu)" + }, + "additionalUserIdClaimTypes": { + "message": "Papildu/pielāgoti lietotāja Id prasību veidi (atdalīti ar komatu)" + }, + "additionalEmailClaimTypes": { + "message": "Papildu/pielāgoti e-pasta prasību veidi (atdalīti ar komatu)" + }, + "additionalNameClaimTypes": { + "message": "Papildu/pielāgoti vārda prasību veidi (atdalīti ar komatu)" + }, + "acrValues": { + "message": "Pieprasītās autentifikācijas konteksta klases atsauces vērtības (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Gaidāmā \"acr\" prasību vērtība atbildē (\"acr\" pārbaude)" + }, + "spEntityId": { + "message": "SP vienības Id" + }, + "spMetadataUrl": { + "message": "SAML 2.0 metadatu URL" + }, + "spAcsUrl": { + "message": "Apgalvojuma patērētāja pakalpes (ACS) URL" + }, + "spNameIdFormat": { + "message": "Vārda Id veidols" + }, + "spOutboundSigningAlgorithm": { + "message": "Izejošais parakstīšanas algoritms" + }, + "spSigningBehavior": { + "message": "Parakstīšānas uzvedība" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Mazākais pieļaujamais ienākošās parakstīšanas algoritms" + }, + "spWantAssertionsSigned": { + "message": "Grib parakstītus apgalvojumus" + }, + "spValidateCertificates": { + "message": "Pārbaudīt sertifikātus" + }, + "idpEntityId": { + "message": "Vienības Id" + }, + "idpBindingType": { + "message": "Saistīšanas veids" + }, + "idpSingleSignOnServiceUrl": { + "message": "Vienotās pierakstīšanās pakalpojuma URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Vienotās izrakstīšanās pakalpojuma URL" + }, + "idpX509PublicCert": { + "message": "X509 publiskais sertifikāts" + }, + "idpOutboundSigningAlgorithm": { + "message": "Izejošais parakstīšanas algoritms" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Atļaut nelūgtas autentifikācijas atbildi" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Atļaut izejošos izrakstīšanās pieprasījumus" + }, + "idpSignAuthenticationRequests": { + "message": "Parakstīt autentifikācijas pieprasījumus" + }, + "ssoSettingsSaved": { + "message": "Vienotās pieteikšanās uzstādījumi tika saglabāti." + }, + "sponsoredFamilies": { + "message": "Bezmaksas Bitwarden ģimenēm" + }, + "sponsoredFamiliesEligible": { + "message": "Tu un Tava ģimene esat atbilstīgi bezmaksas Bitwarden Families. Piesakies ar personīgo e-pasta adresi, lai turētu datus drošībā pat tad, kad neesi darbā!" + }, + "sponsoredFamiliesEligibleCard": { + "message": "Izmanto savu bezmaksas Bitwarden ģimenēm šodien, lai turētu datus drošībā pat tad, kad neesi darbā." + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden ģimenēm iekļauj" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium piekļuve līdz 6 lietotājiem" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Ģimenes noslēpumu kopīgotie krājumi" + }, + "badToken": { + "message": "Saite vairs nav derīga. Lūdz pabalstītāju atkārtoti nosūtīt piedāvājumu!" + }, + "reclaimedFreePlan": { + "message": "Mainīts uz bezmaksas plānu" + }, + "redeem": { + "message": "Izmantot" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Atlastīt apvienību, kuru atbalstīt" + }, + "familiesSponsoringOrgSelect": { + "message": "Kuru bezmaksas ģimeņu piedāvājumu Tu vēlies izmantot?" + }, + "sponsoredFamiliesEmail": { + "message": "Ievadīt personīgo e-pasta adresi, lai izmantotu Bitwarden ģimenēm" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Ja Tu pamet vai tiec noņemts no atbalstošās apvienības, Tavs ģimeņu plāns beigsies apmaksas laika posma beigās." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Pieņemt piedāvājumu esošai apvienībai vai izveidot jaunu ģimenes apvienību." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Tev ir piedāvāta bezmaksas Bitwarden ģimenēm apvienība. Lai turpinātu, ir nepieciešams pierakstītites kontā, kas saņēma piedāvājumu." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Nav iespējams pieņemt piedāvājumu. Lūgums pārsūtīt piedāvājuma e-pasta ziņu no uzņēmējdarbības konta un mēģināt vēlreiz." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Nav iespējams apstiprināt piedāvājumu. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Pieņemt bezmaksas Bitwarden ģimenēm" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Bezmaksas Bitwarden ģimenēm piedāvājums veiksmīgi izmantots" + }, + "redeemed": { + "message": "Izmantots" + }, + "redeemedAccount": { + "message": "Izmantots konts" + }, + "revokeAccount": { + "message": "Atsaukt kontu $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Pārsūtīt $NAME$ pabalstītājdarbības e-pasta ziņojumu", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Bezmaksas ģimenes plāns" + }, + "redeemNow": { + "message": "Izmantot tagad" + }, + "recipient": { + "message": "Saņēmējs" + }, + "removeSponsorship": { + "message": "Noņemt pabalstītājdarbību" + }, + "removeSponsorshipConfirmation": { + "message": "Pēc pabalstītājdarbības noņemšanas Tu būsi atbildīgs par šo abonementu un saistītajiem rēķiniem. Vai tiešām turpināt?" + }, + "sponsorshipCreated": { + "message": "Izveidota pabalstītājdarbība" + }, + "revoke": { + "message": "Atsaukt" + }, + "emailSent": { + "message": "E-pasts nosūtīts" + }, + "revokeSponsorshipConfirmation": { + "message": "Pēc šī konta noņemšanas, ģimenes apvienības īpašnieks būsi atbildīgs par šo abonementu un saistītajiem rēķiniem. Vai tiešām turpināt?" + }, + "removeSponsorshipSuccess": { + "message": "Noņemta pabalstītājdarbība" + }, + "ssoKeyConnectorUnavailable": { + "message": "Nav iespējams sasniegt Key Connector, tāpēc vēlāk jāmēģina atkal." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Noņemt galveno paroli" + }, + "removedMasterPassword": { + "message": "Galvenā parole tika noņemta." + }, + "allowSso": { + "message": "Atļauto vienoto pieteikšanos" + }, + "allowSsoDesc": { + "message": "Pēc pabeigšanas uzstādījumi tiks saglabāti un dalībnieki varēs pieslēgties izmantojot savus identitātes nodrošinātāja akreditācijas datus." + }, + "ssoPolicyHelpStart": { + "message": "Iespējot", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Vienotās pieteikšanās nosacījumi", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": ", lai pieprasītu dalībniekiem pierakstīties ar vienoto pieteikšanos.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Ir nepieciešami vienotās pieteikšanās un vienas apvienības nosacījumi, lai uzstādītu Key Connector šifrēšanu." + }, + "memberDecryptionOption": { + "message": "Dalībnieka atšifrēšanas iespējas" + }, + "memberDecryptionPassDesc": { + "message": "Pēc pieteikšanās dalībnieki atšifrēs glabātavas saturu ar galveno paroli." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Savienot pierakstīšanos ar vienoto pieteikšanos pašizvietotā atšifrēšanas atslēgu serverī. Šī iespēja nodrošina, ka dalībniekiem nebūs nepieciešama galvenā parole, lai atšifrētu glabātavas saturu." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Pierakstīšanas ar vienoto pieteikšanos un Key Connectory atšifrēšana\" ir iespējots. Šis nosacījums attieksies tikai uz īpašniekiem un pārvaldniekiem." + }, + "enabledSso": { + "message": "Iespējota vienotā pieteikšanās" + }, + "disabledSso": { + "message": "Atspējota vienotā pieteikšanās" + }, + "enabledKeyConnector": { + "message": "Iespējots Key Connector" + }, + "disabledKeyConnector": { + "message": "Atspējots Key Connector" + }, + "keyConnectorWarning": { + "message": "Tiklīdz Key Connector ir uzstādīts, dalībnieku atšifrēšanas iespējas nevar mainīt." + }, + "migratedKeyConnector": { + "message": "Pāriets uz Key Connector" + }, + "paymentSponsored": { + "message": "Lūgums norādīt maksājumu veidu, ko piesaistīt apvienībai. Satraukties nevajag, jo iemaksa netiks ieturēta, ja vien netiks izvēlētas papildu iespējas vai kad izbeigsies pabalstītājdarbība. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Atbalsta piedāvājums ir beidzies. Ir iespējams izdzēst izveidoto apvienību, lai izvairītos no maksas pēc 7 dienu izmēģinājuma laika. Pretējā gadījumā šo uzvedni, lai turpinātu izmantot apvienību un uzņemtos atbildību par norēķiniem." + }, + "newFamiliesOrganization": { + "message": "Jauna ģimeņu apvienība" + }, + "acceptOffer": { + "message": "Pieņemt piedāvājumu" + }, + "sponsoringOrg": { + "message": "Atbalstoša apvienība" + }, + "keyConnectorTest": { + "message": "Pārbaude" + }, + "keyConnectorTestSuccess": { + "message": "Panākums! Key Connector sasniegts." + }, + "keyConnectorTestFail": { + "message": "Nav iespējams sasniegt Key Connector. Jāpārbauda URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Atbalsta piedāvājums ir beidzies." + }, + "freeWithSponsorship": { + "message": "Bezmaksas ar pabalstītājdarbību" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ augstāk esošajiem laukiem ir jāpievērš uzmanība.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 augstāk esošajam laukam jāpievērš uzmanība." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ ir nepieciešams.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "nepieciešams" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Nepieciešams, ja vienības Id nav URL." + }, + "openIdOptionalCustomizations": { + "message": "Papildu pielāgojumi" + }, + "openIdAuthorityRequired": { + "message": "Nepieciešams, ja autoritāte ir nederīga." + }, + "separateMultipleWithComma": { + "message": "Vairākus atdalīt ar komatu." + }, + "sessionTimeout": { + "message": "Sesijai iestājās noildze. Lūgums mēģināt pierakstīties vēlreiz." + }, + "exportingPersonalVaultTitle": { + "message": "Izdod personīgo glabātavu" + }, + "exportingOrganizationVaultTitle": { + "message": "Izdod apvienības 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Tiks izdota tikai apvienības glabātava, kas ir saistīta ar $ORGANIZATION$. Personīgie glabātavas vienumi un vienumi no citām apvienībām netiks iekļauti.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Atgriezties pie atskaitēm" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Izmantot e-pasta pakalpojuma nodrošinātāja apakšadresēšanas spējas." + }, + "catchallEmail": { + "message": "Visu tveroša 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" + }, + "service": { + "message": "Pakalpojums" + } +} diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json new file mode 100644 index 0000000000..6e799f1f95 --- /dev/null +++ b/apps/web/src/locales/ml/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ വെബ് വാൾട്", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "പാസ്‌വേഡ്" + }, + "newPassword": { + "message": "പുതിയ പാസ്വേഡ്" + }, + "passphrase": { + "message": "രഹസ്യ വാചകം" + }, + "notes": { + "message": "കുറിപ്പുകൾ" + }, + "customFields": { + "message": "ഇഷ്‌ടാനുസൃത ഫീൽഡുകൾ" + }, + "cardholderName": { + "message": "കാർഡ് ഉടമയുടെ പേര്" + }, + "number": { + "message": "നമ്പർ" + }, + "brand": { + "message": "ബ്രാൻഡ്" + }, + "expiration": { + "message": "കാലഹരണപ്പെടൽ" + }, + "securityCode": { + "message": "സുരക്ഷാ കോഡ് സിവി‌വി" + }, + "identityName": { + "message": "തിരിച്ചറിയലിൻ്റെ പേര്" + }, + "company": { + "message": "കമ്പനി" + }, + "ssn": { + "message": "സാമൂഹിക സുരക്ഷാ നമ്പർ" + }, + "passportNumber": { + "message": "പാസ്പോർട്ട് നമ്പർ" + }, + "licenseNumber": { + "message": "ലൈസൻസ് നമ്പർ" + }, + "email": { + "message": "ഇമെയിൽ" + }, + "phone": { + "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": "ഡിസംബർ" + }, + "title": { + "message": "ശീർഷകം" + }, + "mr": { + "message": "ശ്രീ" + }, + "mrs": { + "message": "ശ്രിമതി" + }, + "ms": { + "message": "കുമാരി" + }, + "dr": { + "message": "ഡോ" + }, + "expirationMonth": { + "message": "കാലാവതി കഴിയുന്ന മാസം" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "നീക്കംചെയ്യുക" + }, + "unassigned": { + "message": "നിയുക്തമാക്കിയിട്ടില്ല" + }, + "noneFolder": { + "message": "ഫോൾഡർ ഇല്ല", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "ഫോൾഡർ ചേർക്കുക" + }, + "editFolder": { + "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." + }, + "never": { + "message": "അത് ചെയ്യരുത്" + }, + "toggleVisibility": { + "message": "ദൃശ്യപരത ടോഗിൾ ചെയ്യുക" + }, + "toggleCollapse": { + "message": "ചുരുക്കുക", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "പാസ്‌വേഡ് സൃഷ്ടിക്കുക" + }, + "checkPassword": { + "message": "പാസ്സ്‌വേർഡ് ചോർന്നോ എന്ന് നോക്കുക." + }, + "passwordExposed": { + "message": "ഈ പാസ്‌വേഡ് ഡാറ്റാ $VALUE$ ലംഘനങ്ങളിൽ ചോർന്നു. തങ്ങൾ ഇത് മാറ്റണം.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "അറിയപ്പെടുന്ന ഡാറ്റാ ലംഘനങ്ങളിൽ ഒന്നും ഈ പാസ്‌വേഡ് കണ്ടെത്തിയില്ല. ഇത് ഉപയോഗിക്കുന്നത് സുരക്ഷിതമായിരിക്കും." + }, + "save": { + "message": "സംരക്ഷിക്കുക " + }, + "cancel": { + "message": "റദ്ദാക്കുക" + }, + "canceled": { + "message": "റദ്ദാക്കി" + }, + "close": { + "message": "അടയ്ക്കുക" + }, + "delete": { + "message": "നീക്കംചെയ്യുക" + }, + "favorite": { + "message": "പ്രിയങ്കരം" + }, + "unfavorite": { + "message": "പ്രിയങ്കരമല്ല" + }, + "edit": { + "message": "തിരുത്തുക" + }, + "searchCollection": { + "message": "കളക്ഷനുകൾ തിരയുക" + }, + "searchFolder": { + "message": "ഫോൾഡറുകൾ തിരയുക" + }, + "searchFavorites": { + "message": "പ്രിയങ്കരങ്ങൾ തിരയുക" + }, + "searchType": { + "message": "തരം തിരയുക", + "description": "Search item type" + }, + "searchVault": { + "message": "വാൾട് തിരയുക" + }, + "allItems": { + "message": "എല്ലാ ഇനങ്ങൾ" + }, + "favorites": { + "message": "പ്രിയങ്കരങ്ങള്‍" + }, + "types": { + "message": "തരങ്ങൾ" + }, + "typeLogin": { + "message": "പ്രവേശനം" + }, + "typeCard": { + "message": "കാർഡ്" + }, + "typeIdentity": { + "message": "തിരിച്ചറിയൽ" + }, + "typeSecureNote": { + "message": "സുരക്ഷിത കുറിപ്പ്" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "ഫോൾഡറുകൾ" + }, + "collections": { + "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": "രാജ്യം" + }, + "shared": { + "message": "പങ്കിട്ടവ" + }, + "attachments": { + "message": "അറ്റാച്ചുമെന്റുകൾ" + }, + "select": { + "message": "തിരഞ്ഞെടുക്കുക" + }, + "addItem": { + "message": "ഇനം ചേർക്കുക" + }, + "editItem": { + "message": "ഇനം എഡിറ്റുചെയ്യുക" + }, + "viewItem": { + "message": "ഇനം കാണുക" + }, + "ex": { + "message": "ഉദാഹരണം.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "മറ്റുള്ളവ" + }, + "share": { + "message": "പങ്കിടുക" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ പകർത്തി", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "മൂല്യം പകർത്തുക", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "പാസ്‌വേഡ് ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുക", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "ഉപയോക്തൃനാമം പകർത്തുക", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "നമ്പർ പകർത്തുക ", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "സുരക്ഷാ കോഡ് പകർത്തുക", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "URL പകർത്തുക", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "എൻ്റെ വാൾട്" + }, + "vault": { + "message": "വാൾട്" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "തിരഞ്ഞെടുത്തത് ഇല്ലാതാക്കുക" + }, + "moveSelected": { + "message": "തിരഞ്ഞെടുത്തത് നീക്കുക " + }, + "selectAll": { + "message": "എല്ലാം തിരഞ്ഞെടുക്കുക" + }, + "unselectAll": { + "message": "എല്ലാം തിരഞ്ഞെടുത്തത് മാറ്റുക" + }, + "launch": { + "message": "തുറക്കുക" + }, + "newAttachment": { + "message": "പുതിയ അറ്റാച്ചുമെന്റ് ചേർക്കുക" + }, + "deletedAttachment": { + "message": "മായ്ച്ച അറ്റാച്ചുമെന്റ്" + }, + "deleteAttachmentConfirmation": { + "message": "ഈ അറ്റാച്ചുമെന്റ് ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "attachmentSaved": { + "message": "ഈ അറ്റാച്ചുമെന്റ് സംരക്ഷിച്ചു." + }, + "file": { + "message": "ഫയൽ" + }, + "selectFile": { + "message": "ഫയൽ തിരഞ്ഞെടുക്കുക." + }, + "maxFileSize": { + "message": "പരമാവധി ഫയൽ വലുപ്പം 500 MB ആണ്." + }, + "updateKey": { + "message": "നിങ്ങളുടെ എൻ‌ക്രിപ്ഷൻ കീ അപ്‌ഡേറ്റ് ചെയ്യുന്നതുവരെ നിങ്ങൾക്ക് ഈ സവിശേഷത ഉപയോഗിക്കാൻ കഴിയില്ല." + }, + "addedItem": { + "message": "ചേർക്കപ്പെട്ട ഇനം" + }, + "editedItem": { + "message": "തിരുത്തപ്പെട്ട ഇനം" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "ഇനം ഇല്ലാതാക്കുക " + }, + "deleteFolder": { + "message": "ഫോൾഡർ ഇല്ലാതാക്കുക" + }, + "deleteAttachment": { + "message": "അറ്റാച്ചുമെന്റ് ഇല്ലാതാക്കുക" + }, + "deleteItemConfirmation": { + "message": "ഈ ഇനം ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "deletedItem": { + "message": "ഇനം ട്രാഷിലേക്ക് അയച്ചു" + }, + "deletedItems": { + "message": "ഇനങ്ങൾ ട്രാഷിലേക്ക് അയച്ചു" + }, + "movedItems": { + "message": "നീക്കിയ ഇനങ്ങൾ" + }, + "overwritePasswordConfirmation": { + "message": "നിലവിലെ പാസ്‌വേഡ് പുനരാലേഖനം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?" + }, + "editedFolder": { + "message": "തിരുത്തിയ ഫോൾഡറുകൾ" + }, + "addedFolder": { + "message": "ചേർക്കപ്പെട്ട ഫോൾഡർ" + }, + "deleteFolderConfirmation": { + "message": "ഈ ഫോൾഡർ ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "deletedFolder": { + "message": "ഇല്ലാതാക്കിയ ഫോൾഡർ" + }, + "loggedOut": { + "message": "ലോഗ് ഔട്ട് ചെയ്തിരിക്കുന്നു" + }, + "loginExpired": { + "message": "നിങ്ങളുടെ പ്രവർത്തന സമയം കഴിഞ്ഞിരിക്കുന്നു." + }, + "logOutConfirmation": { + "message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?" + }, + "logOut": { + "message": "ലോഗ് ഔട്ട്" + }, + "ok": { + "message": "ശരി" + }, + "yes": { + "message": "അതെ" + }, + "no": { + "message": "അല്ല" + }, + "loginOrCreateNewAccount": { + "message": "നിങ്ങളുടെ സുരക്ഷിത വാൾട്ടിലേക്ക് പ്രവേശിക്കാൻ ലോഗിൻ ചെയ്യുക അല്ലെങ്കിൽ ഒരു പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക." + }, + "createAccount": { + "message": "അക്കൗണ്ട് സൃഷ്ടിക്കുക" + }, + "logIn": { + "message": "പ്രവേശിക്കുക" + }, + "submit": { + "message": "സമർപ്പിക്കുക" + }, + "emailAddressDesc": { + "message": "ലോഗിൻ ചെയ്യുന്നതിന് നിങ്ങളുടെ ഇമെയിൽ വിലാസം ഉപയോഗിക്കും." + }, + "yourName": { + "message": "നിങ്ങളുടെ പേര്" + }, + "yourNameDesc": { + "message": "ഞങ്ങൾ തങ്ങളെ എന്ത് വിളിക്കണം?" + }, + "masterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ്" + }, + "masterPassDesc": { + "message": "നിങ്ങളുടെ വാൾട്ടിലേക്ക് പ്രവേശിക്കാൻ ഉപയോഗിക്കുന്ന പാസ്‌വേഡാണ് പ്രാഥമിക പാസ്‌വേഡ്. പ്രാഥമിക പാസ്‌വേഡ് നിങ്ങൾ ഒരു കാരണവശാലും മറക്കരുത്. നിങ്ങൾ പാസ്‌വേഡ് മറന്നാൽ, വീണ്ടെടുക്കാൻ വേറെ ഒരു മാർഗ്ഗവുമില്ല." + }, + "masterPassHintDesc": { + "message": "നിങ്ങളുടെ പാസ്‌വേഡ് മറന്നാൽ അത് ഓർമ്മിക്കാൻ ഒരു പ്രാഥമിക പാസ്‌വേഡ് സൂചന സഹായിക്കും." + }, + "reTypeMasterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് വീണ്ടും ടൈപ്പ്‌ ചെയ്യുക" + }, + "masterPassHint": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സൂചന (ഇഷ്ടാനുസൃതമായ)" + }, + "masterPassHintLabel": { + "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": "ഒരു അപ്രതീക്ഷിത പിശക് സംഭവിച്ചു." + }, + "emailAddress": { + "message": "ഇ-മെയിൽ വിലാസം" + }, + "yourVaultIsLocked": { + "message": "നിങ്ങളുടെ വാൾട് പൂട്ടിയിരിക്കുന്നു. തുടരുന്നതിന് നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക." + }, + "unlock": { + "message": "അൺലോക്ക്" + }, + "loggedInAsEmailOn": { + "message": "$HOSTNAME$-ൽ $EMAIL$ ലോഗിൻ ചെയ്തിരിക്കുന്നു.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "അസാധുവായ പ്രാഥമിക പാസ്‌വേഡ്" + }, + "lockNow": { + "message": "ഇപ്പോൾ പൂട്ടുക" + }, + "noItemsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ ഇനങ്ങളൊന്നുമില്ല." + }, + "noCollectionsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ കളക്ഷൻസ് ഒന്നും ഇല്ല." + }, + "noGroupsInList": { + "message": "പട്ടികപ്പെടുത്താൻ ഗ്രൂപ്പുകളൊന്നുമില്ല." + }, + "noUsersInList": { + "message": "പ്രദർശിപ്പിക്കാൻ ഉപയോക്താക്കളൊന്നുമില്ല." + }, + "noEventsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ ഇവന്റുകളൊന്നുമില്ല." + }, + "newOrganization": { + "message": "പുതിയ സംഘടന" + }, + "noOrganizationsList": { + "message": "നിങ്ങൾ ഒരു സംഘടനയുടെയും അംഗമല്ല. മറ്റ് ഉപയോക്താക്കളുമായി ഇനങ്ങൾ സുരക്ഷിതമായി പങ്കിടാൻ ഓർഗനൈസേഷനുകൾ നിങ്ങളെ അനുവദിക്കുന്നു." + }, + "versionNumber": { + "message": "വേർഷൻ $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ യുഎസ്ബി പോർട്ടിൽ സുരക്ഷാ കീ ഇടുക. അതിന് ഒരു ബട്ടൺ ഉണ്ടെങ്കിൽ അത് അമർത്തുക." + }, + "loginUnavailable": { + "message": "പ്രവേശനം ലഭ്യമല്ല" + }, + "noTwoStepProviders": { + "message": "ഈ അക്കൗണ്ടിന് രണ്ട്-ഘട്ട പ്രവേശനം പ്രാപ്തമാക്കിയിട്ടുണ്ട്, എന്നിരുന്നാലും, ക്രമീകരിച്ച രണ്ട്-ഘട്ട ദാതാക്കളെയൊന്നും ഈ ഉപകരണം പിന്തുണയ്ക്കുന്നില്ല." + }, + "noTwoStepProviders2": { + "message": "മികച്ച പിന്തുണയുള്ള, കൂടുതൽ ദാതാക്കളെ ദയവായി ചേർക്കുക (ഒരു ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷൻ പോലുള്ളവ)." + }, + "twoStepOptions": { + "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, എസ്എംഎസ്, ഫോൺ കോൾ അല്ലെങ്കിൽ യു 2 എഫ് സുരക്ഷാ കീ ഉപയോഗിച്ച് നിങ്ങളുടെ ഓർഗനൈസേഷനെ ഡ്യുവോ സെക്യൂരിറ്റി ഉപയോഗിച്ച് പരിശോധിക്കുക.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "u2fDesc": { + "message": "നിങ്ങളുടെ അക്കൗണ്ട് ആക്സസ് ചെയ്യുന്നതിന് ഏതെങ്കിലും FIDO U2F പ്രാപ്തമാക്കിയ സുരക്ഷാ കീ ഉപയോഗിക്കുക." + }, + "u2fTitle": { + "message": "FIDO U2F സുരക്ഷാ കീ" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "ഇമെയിൽ" + }, + "emailDesc": { + "message": "സ്ഥിരീകരണ കോഡുകൾ നിങ്ങൾക്ക് ഇമെയിൽ ചെയ്യും." + }, + "continue": { + "message": "തുടരുക" + }, + "organization": { + "message": "ഓർഗനൈസേഷൻ" + }, + "organizations": { + "message": "സംഘടനകൾ" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "$COUNT$ തിരഞ്ഞെടുത്ത ഇനങ്ങൾ നീക്കാൻ ആഗ്രഹിക്കുന്ന ഒരു ഫോൾഡർ തിരഞ്ഞെടുക്കുക).", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "സ്ഥിരീകരണ കോഡ് (TOTP)" + }, + "copyVerificationCode": { + "message": "സ്ഥിരീകരണ കോഡ് പകർത്തുക " + }, + "warning": { + "message": "മുന്നറിയിപ്പ്" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "വാൾട് എക്സ്പോർട്" + }, + "fileFormat": { + "message": "ഫയൽ ഫോർമാറ്റ്" + }, + "exportSuccess": { + "message": "നിങ്ങളുടെ വാൾട് ഡാറ്റ എക്‌സ്‌പോർട്ടുചെയ്‌തു." + }, + "passwordGenerator": { + "message": "പാസ്സ്‌വേഡ് സൃഷ്ടാവ്" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "കുറഞ്ഞ സംഖ്യകൾ" + }, + "minSpecial": { + "message": "കുറഞ്ഞ പ്രത്യേക പ്രതീകങ്ങൾ", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "അവ്യക്തമായ പ്രതീകങ്ങൾ ഒഴിവാക്കുക" + }, + "regeneratePassword": { + "message": "പാസ്സ്‌വേഡ് വീണ്ടും സൃഷ്ടിക്കുക" + }, + "length": { + "message": "ദൈര്‍ഘ്യം" + }, + "numWords": { + "message": "വാക്കുകളുടെ എണ്ണം" + }, + "wordSeparator": { + "message": "വേര്‍പെടുത്തുക" + }, + "capitalize": { + "message": "വലിയഅക്ഷരമാകുക", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "നമ്പർ ഉൾപ്പെടുത്തുക" + }, + "passwordHistory": { + "message": "പാസ്സ്‌വേഡ് ചരിത്രം" + }, + "noPasswordsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ പാസ്സ്‌വേഡുകൾ ഒന്നും ഇല്ല." + }, + "clear": { + "message": "മായ്ക്കുക", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "അക്കൗണ്ട് അപ്‌ഡേറ്റുചെയ്‌തു" + }, + "changeEmail": { + "message": "ഇമെയില്‍ മാറ്റുക" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "പുതിയ ഇമെയിൽ" + }, + "code": { + "message": "കോഡ്" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "ഇമെയിൽ മാറ്റി" + }, + "logBackIn": { + "message": "ദയവായി തിരികെ പ്രവേശിക്കുക." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് മാറ്റുക" + }, + "masterPasswordChanged": { + "message": "മാസ്റ്റർ പാസ്‌വേഡ് മാറ്റി" + }, + "currentMasterPass": { + "message": "നിലവിലെ മാസ്റ്റർ പാസ്‌വേഡ്" + }, + "newMasterPass": { + "message": "പുതിയ പ്രാഥമിക പാസ്‌വേഡ് " + }, + "confirmNewMasterPass": { + "message": "പുതിയ പ്രാഥമിക പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക" + }, + "encKeySettings": { + "message": "എൻക്രിപ്ഷൻ കീയുടെ ക്രമീകരണങ്ങൾ" + }, + "kdfAlgorithm": { + "message": "KDF അൽഗോരിതം" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDF മാറ്റുക" + }, + "encKeySettingsChanged": { + "message": "എൻക്രിപ്ഷൻ കീയുടെ ക്രമീകരണങ്ങൾ മാറ്റി" + }, + "dangerZone": { + "message": "അപകട മേഖല" + }, + "dangerZoneDesc": { + "message": "ശ്രദ്ധിക്കുക, ഈ പ്രവർത്തനങ്ങൾ മാറ്റാനാവില്ല!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "എല്ലാ സെഷനും നിരസിച്ചു." + }, + "purgeVault": { + "message": "വാൾട് നശിപ്പിക്കുക" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "അക്കൗണ്ട് ഇല്ലാതാക്കുക" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "അക്കൗണ്ട് നീക്കംചെയ്തു" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "എന്റെ അക്കൗണ്ട്" + }, + "tools": { + "message": "ഉപകരണങ്ങൾ" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "ഓപ്ഷനുകൾ" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "ഭാഷ" + }, + "languageDesc": { + "message": "അപ്ലിക്കേഷൻ ഉപയോഗിക്കുന്ന ഭാഷ മാറ്റുക. പുനരാരംഭിക്കൽ ആവശ്യമാണ്." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "സാധാരണ പോലെ" + }, + "domainRules": { + "message": "ഡൊമെയ്ൻ നിയമങ്ങൾ" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "ഒഴിവാക്കുക" + }, + "include": { + "message": "ഉൾപെടുത്തുക " + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "ഡൊമെയ്‌നുകൾ അപ്‌ഡേറ്റുചെയ്‌തു" + }, + "twoStepLogin": { + "message": "രണ്ട്-ഘട്ട പ്രവേശനം" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "ദാതാക്കൾ", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "പ്രവർത്തനക്ഷമമാക്കി" + }, + "premium": { + "message": "പ്രീമിയം", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "പ്രീമിയം അംഗത്വം" + }, + "premiumRequired": { + "message": "പ്രീമിയം അംഗത്വം ആവശ്യമാണ്" + }, + "premiumRequiredDesc": { + "message": "ഈ സവിശേഷത ഉപയോഗിക്കുന്നതിന് പ്രീമിയം അംഗത്വം ആവശ്യമാണ്." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "നിയന്ത്രിക്കുക" + }, + "disable": { + "message": "പ്രവര്‍ത്തന രഹിതമാക്കുക" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "രണ്ട്-ഘട്ട ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷൻ ഡൗൺലോഡുചെയ്യുക" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS ഉപകരണങ്ങൾ" + }, + "androidDevices": { + "message": "Android ഉപകരണങ്ങൾ" + }, + "windowsDevices": { + "message": "Windows ഉപകരണങ്ങൾ" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "ഇമെയിൽ അയയ്ക്കുക" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "റിപ്പോർട്ടുകൾ" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecured Websites Report" + }, + "unsecuredWebsitesReportDesc": { + "message": "Using unsecured websites with the http:// scheme can be dangerous. If the website allows, you should always access it using the https:// scheme so that your connection is encrypted." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive 2FA Report" + }, + "inactive2faReportDesc": { + "message": "Two-factor authentication (2FA) is an important security setting that helps secure your accounts. If the website offers it, you should always enable two-factor authentication." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to twofactorauth.org). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords Report" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords that have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords Report" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can easily be guessed by hackers and automated tools that are used to crack passwords. The Bitwarden password generator can help you create strong passwords." + }, + "weakPasswordsFound": { + "message": "ദുർബലമായ പാസ്‌വേഡുകൾ കണ്ടെത്തി" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "നിങ്ങളുടെ വാൾട്ടിലെ ഒരു ഇനത്തിനും ദുർബലമായ പാസ്‌വേഡുകൾ ഇല്ല." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords Report" + }, + "reusedPasswordsReportDesc": { + "message": "If a service that you use is compromised, reusing the same password elsewhere can allow hackers to easily gain access to more of your online accounts. You should use a unique password for every account or service." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach Report" + }, + "breachDesc": { + "message": "A \"breach\" is an incident where a site's data has been illegally accessed by hackers and then released publicly. Review the types of data that were compromised (email addresses, passwords, credit cards etc.) and take appropriate action, such as changing passwords." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "നല്ല വാർത്ത", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "വെബ്സൈറ്റ്" + }, + "affectedUsers": { + "message": "ബാധിത ഉപയോക്താക്കൾ" + }, + "breachOccurred": { + "message": "ലംഘനം സംഭവിച്ചു" + }, + "breachReported": { + "message": "ലംഘനം റിപ്പോർട്ടുചെയ്‌തു" + }, + "reportError": { + "message": "റിപ്പോർട്ട് ലഭ്യമാക്കുന്നതിൽ ഒരു പിശക് സംഭവിച്ചു. വീണ്ടും ശ്രമിക്ക്." + }, + "billing": { + "message": "ബില്ലിംഗ്" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "അക്കൗണ്ട് ബാലൻസ്", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "ക്രെഡിറ്റ് ചേർക്കുക", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "തുക", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "പ്രീമിയത്തിലേക്ക് പോകുക", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "നിങ്ങൾ പ്രീമിയത്തിലേക്ക് അപ്‌ഗ്രേഡുചെയ്‌തു." + }, + "premiumUpgradeUnlockFeatures": { + "message": "മികച്ച സവിശേഷതകൾ അൺലോക്ക് ചെയ്യാൻ നിങ്ങളുടെ അക്കൗണ്ട് പ്രീമിയംത്തിലേക്കു അപ്ഗ്രേഡ് ചെയ്യുക." + }, + "premiumSignUpStorage": { + "message": "ഫയൽ അറ്റാച്ചുമെന്റുകൾക്കായി 1 GB എൻക്രിപ്റ്റുചെയ്‌ത സ്റ്റോറേജ്." + }, + "premiumSignUpTwoStep": { + "message": "രണ്ട്-ഘട്ട പ്രവേശന ഓപ്ഷനുകളായ Yubikey, FIDO U2F, Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "premiumSignUpReports": { + "message": "നിങ്ങളുടെ വാൾട് സൂക്ഷിക്കുന്നതിന്. പാസ്‌വേഡ് ശുചിത്വം, അക്കൗണ്ട് ആരോഗ്യം, ഡാറ്റ ലംഘന റിപ്പോർട്ടുകൾ." + }, + "premiumSignUpTotp": { + "message": "നിങ്ങളുടെ വാൾട്ടിലെ പ്രവേശനങ്ങൾക്കായി TOTP പരിശോധന കോഡ് (2FA) സൃഷ്ടാവ്." + }, + "premiumSignUpSupport": { + "message": "മുൻ‌ഗണന ഉപഭോക്തൃ പിന്തുണ." + }, + "premiumSignUpFuture": { + "message": "ഭാവിയിലെ എല്ലാ പ്രീമിയം സവിശേഷതകളും. കൂടുതൽ ഉടനെ വരുന്നു !" + }, + "premiumPrice": { + "message": "എല്ലാം വെറും $PRICE$/ വർഷത്തേക്ക്!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "പ്രീമിയം ആക്സസ്" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "ആകെ" + }, + "year": { + "message": "വർഷം" + }, + "month": { + "message": "മാസം" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. Billing will occur on a recurring basis each $INTERVAL$. You may cancel at any time." + }, + "paymentInformation": { + "message": "പേയ്‌മെന്റ് വിവരങ്ങൾ" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "ക്രെഡിറ്റ് കാർഡ്" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "സബ്‌സ്‌ക്രിപ്‌ഷൻ റദ്ദാക്കുക" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "ലൈസൻസ് ഡൌൺലോഡ് ചെയ്യുക" + }, + "updateLicense": { + "message": "ലൈസൻസ് അപ്ഡേറ്റ് ചെയ്യുക" + }, + "updatedLicense": { + "message": "ലൈസൻസ് അപ്ഡേറ്റ് ചെയ്തു" + }, + "manageSubscription": { + "message": "സബ്സ്‌ക്രിപ്ഷനുകൾ മാനേജുചെയ്യുക" + }, + "storage": { + "message": "സ്റ്റോറേജ്" + }, + "addStorage": { + "message": "സ്റ്റോറേജ് ചേർക്കുക" + }, + "removeStorage": { + "message": "സ്റ്റോറേജ് നീക്കംചെയ്യുക" + }, + "subscriptionStorage": { + "message": "നിങ്ങളുടെ സബ്‌സ്‌ക്രിപ്‌ഷനിൽ മൊത്തം $MAX_STORAGE$ GB എൻ‌ക്രിപ്റ്റ് ചെയ്ത ഫയൽ സംഭരണമുണ്ട്. നിങ്ങൾ നിലവിൽ $USED_STORAGE$ ഉപയോഗിക്കുന്നു.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "പണംകൊടുക്കൽ രീതി" + }, + "noPaymentMethod": { + "message": "ഫയലിൽ പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല." + }, + "addPaymentMethod": { + "message": "പണംകൊടുക്കൽ രീതി ചേർക്കുക" + }, + "changePaymentMethod": { + "message": "പണംകൊടുക്കൽരീതി മാറ്റുക" + }, + "invoices": { + "message": "ഇൻവോയ്സുകൾ" + }, + "noInvoices": { + "message": "ഇൻവോയ്സുകൾ ഇല്ല." + }, + "paid": { + "message": "പണമടച്ചു", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "പണമടച്ചില്ല", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "ഇടപാടുകൾ", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "ഇടപാടുകളൊന്നുമില്ല." + }, + "chargeNoun": { + "message": "ചാർജ്ജ്", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "റീഫണ്ട്", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "ചാർജുകൾ നിങ്ങളുടെ പ്രസ്താവനയിൽ $STATEMENT_NAME$ ആയി ദൃശ്യമാകും.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "ചേർക്കുന്നതിനുള്ള സംഭരണത്തിന്റെ ജിബി" + }, + "gbStorageRemove": { + "message": "നീക്കംചെയ്യുന്നതിന് സംഭരണത്തിന്റെ ജിബി" + }, + "storageAddNote": { + "message": "സംഭരണം ചേർക്കുന്നത് നിങ്ങളുടെ ബില്ലിംഗ് ആകെത്തുകകളിലേക്ക് ക്രമീകരിക്കുകയും ഫയലിൽ നിങ്ങളുടെ പേയ്‌മെന്റ് രീതി ഉടൻ ചാർജ് ചെയ്യുകയും ചെയ്യും. നിലവിലെ ബില്ലിംഗ് സൈക്കിളിന്റെ ബാക്കി ഭാഗത്തിനായി ആദ്യ ചാർജ് പ്രോറേറ്റ് ചെയ്യും." + }, + "storageRemoveNote": { + "message": "സംഭരണം നീക്കംചെയ്യുന്നത് നിങ്ങളുടെ ബില്ലിംഗ് ടോട്ടലുകളിലേക്കുള്ള ക്രമീകരണങ്ങളിൽ കലാശിക്കും, അത് നിങ്ങളുടെ അടുത്ത ബില്ലിംഗ് ചാർജിലേക്കുള്ള ക്രെഡിറ്റായി കണക്കാക്കപ്പെടും." + }, + "adjustedStorage": { + "message": "$AMOUNT$ GB സംഭരണം ക്രമീകരിച്ചു.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "ഉപഭോക്തൃ പിന്തുണയുമായി ബന്ധപ്പെടുക" + }, + "updatedPaymentMethod": { + "message": "പേയ്‌മെന്റ് രീതി പുതുക്കുക. " + }, + "purchasePremium": { + "message": "പ്രീമിയം വാങ്ങുക" + }, + "licenseFile": { + "message": "ലൈസൻസ് ഫയൽ" + }, + "licenseFileDesc": { + "message": "നിങ്ങളുടെ ലൈസൻസ് ഫയലിന് $FILE_NAME$ എന്ന് പേരുനൽകും", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "നിങ്ങളുടെ അക്കൗണ്ട് പ്രീമിയം അംഗത്വത്തിലേക്ക് അപ്ഗ്രേഡ് ചെയ്യുന്നതിന്, നിങ്ങൾ ശെരിയായ ഒരു ലൈസൻസ് ഫയൽ അപ്‌ലോഡ് ചെയ്യണം." + }, + "uploadLicenseFileOrg": { + "message": "ഒരു പരിസരത്ത് ഹോസ്റ്റുചെയ്ത ഓർഗനൈസേഷൻ സൃഷ്ടിക്കുന്നതിന് നിങ്ങൾ സാധുവായ ഒരു ലൈസൻസ് ഫയൽ അപ്‌ലോഡ് ചെയ്യേണ്ടതുണ്ട്." + }, + "accountEmailMustBeVerified": { + "message": "നിങ്ങളുടെ അക്കൗണ്ടിന്റെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കേണ്ടതാണ്." + }, + "newOrganizationDesc": { + "message": "നിങ്ങളുടെ നിലവറയുടെ ഭാഗങ്ങൾ മറ്റുള്ളവരുമായി പങ്കിടാനും ഒരു കുടുംബം, ചെറിയ ടീം അല്ലെങ്കിൽ വലിയ കമ്പനി പോലുള്ള ഒരു നിർദ്ദിഷ്ട എന്റിറ്റിക്കായി ബന്ധപ്പെട്ട ഉപയോക്താക്കളെ മാനേജുചെയ്യാനും ഓർഗനൈസേഷനുകൾ നിങ്ങളെ അനുവദിക്കുന്നു." + }, + "generalInformation": { + "message": "പൊതുവിവരം" + }, + "organizationName": { + "message": "സംഘടനയുടെ പേര്" + }, + "accountOwnedBusiness": { + "message": "ഈ അക്കൗണ്ട് ഒരു ബിസിനസ്സിന്റെ ഉടമസ്ഥതയിലാണ്." + }, + "billingEmail": { + "message": "ബില്ലിംഗ് ഇമെയിൽ" + }, + "businessName": { + "message": "ബിസിനസ്സ് പേര്" + }, + "chooseYourPlan": { + "message": "നിങ്ങളുടെ പ്ലാൻ തിരഞ്ഞെടുക്കുക" + }, + "users": { + "message": "ഉപയോക്താക്കൾ" + }, + "userSeats": { + "message": "ഉപയോക്തൃ സീറ്റുകൾ" + }, + "additionalUserSeats": { + "message": "അധിക ഉപയോക്തൃ സീറ്റുകൾ" + }, + "userSeatsDesc": { + "message": "# ഉപയോക്തൃ സീറ്റുകൾ" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "സൗജന്യം", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "കുടുംബങ്ങൾ" + }, + "planDescFamilies": { + "message": "വ്യക്തിഗത ഉപയോഗത്തിനായി, കുടുംബവുമായും സുഹൃത്തുക്കളുമായും പങ്കിടാൻ." + }, + "planNameTeams": { + "message": "ടീമുകൾ" + }, + "planDescTeams": { + "message": "ബിസിനസുകൾക്കും മറ്റ് ടീം ഓർഗനൈസേഷനുകൾക്കുമായി." + }, + "planNameEnterprise": { + "message": "എന്റർപ്രൈസ്" + }, + "planDescEnterprise": { + "message": "ബിസിനസുകൾക്കും മറ്റ് വലിയ ഓർഗനൈസേഷനുകൾക്കുമായി." + }, + "freeForever": { + "message": "എന്നേക്കും സൗജന്യം" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "ഉപയോക്തൃ ആക്സസ് ഗ്രൂപ്പുകൾ ഉപയോഗിച്ച് നിയന്ത്രിക്കുക" + }, + "syncUsersFromDirectory": { + "message": "ഒരു ഡയറക്‌ടറിയിൽ‌ നിന്നും നിങ്ങളുടെ ഉപയോക്താക്കളെയും ഗ്രൂപ്പുകളെയും സമന്വയിപ്പിക്കുക" + }, + "trackAuditLogs": { + "message": "ഓഡിറ്റ് ലോഗുകൾ ഉപയോഗിച്ച് ഉപയോക്തൃ പ്രവർത്തനങ്ങൾ ട്രാക്കുചെയ്യുക" + }, + "enforce2faDuo": { + "message": "ഡ്യുവോ ഉപയോഗിച്ച് 2 എഫ്എ നടപ്പിലാക്കുക" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ ദിവസത്തെ സ trial ജന്യ ട്രയൽ, എപ്പോൾ വേണമെങ്കിലും റദ്ദാക്കുക", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "പ്രതിമാസം" + }, + "annually": { + "message": "വർഷം തോറും" + }, + "basePrice": { + "message": "അടിസ്ഥാന വില" + }, + "organizationCreated": { + "message": "സംഘടനാ സൃഷ്ടിച്ചു" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "നയങ്ങൾ" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "നയം എഡിറ്റുചെയ്യുക" + }, + "groups": { + "message": "ഗ്രൂപ്പുകൾ" + }, + "newGroup": { + "message": "പുതിയ ഗ്രൂപ്പ്" + }, + "addGroup": { + "message": "ഗ്രൂപ്പ് ചേർക്കുക" + }, + "editGroup": { + "message": "ഗ്രൂപ്പ് തിരുത്തുക" + }, + "deleteGroupConfirmation": { + "message": "ഈ ഗ്രൂപ്പ് ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "removeUserConfirmation": { + "message": "ഈ ഉപയോക്താവിനെ നീക്കംചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "ബാഹ്യ Id" + }, + "externalIdDesc": { + "message": "ബാഹ്യ ഐഡി ഒരു റഫറൻസായി ഉപയോഗിക്കാം അല്ലെങ്കിൽ ഈ ഉറവിടം ഒരു ഉപയോക്തൃ ഡയറക്ടറി പോലുള്ള ഒരു ബാഹ്യ സിസ്റ്റത്തിലേക്ക് ലിങ്കുചെയ്യാൻ കഴിയും." + }, + "accessControl": { + "message": "പ്രവേശന നിയന്ത്രണം" + }, + "groupAccessAllItems": { + "message": "ഈ ഗ്രൂപ്പിന്എല്ലാ ഇനങ്ങളും ആക്‌സസ് ചെയ്യാനും പരിഷ്‌ക്കരിക്കാനും കഴിയും." + }, + "groupAccessSelectedCollections": { + "message": "തിരഞ്ഞെടുത്ത കളക്ഷനുകൾ മാത്രമേ ഈ ഗ്രൂപ്പിന് ആക്‌സസ് ചെയ്യാൻ കഴിയൂ." + }, + "readOnly": { + "message": "വായിക്കാൻ മാത്രം" + }, + "newCollection": { + "message": "പുതിയ കളക്ഷൻ" + }, + "addCollection": { + "message": "കളക്ഷൻ ചേർക്കുക " + }, + "editCollection": { + "message": "കളക്ഷൻ എഡിറ്റുചെയ്യുക" + }, + "deleteCollectionConfirmation": { + "message": "ഈ കളക്ഷൻ ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "editUser": { + "message": "ഉപയോക്താവിനെ എഡിറ്റുചെയ്യുക" + }, + "inviteUser": { + "message": "ഉപയോക്താവിനെ ക്ഷണിക്കുക" + }, + "inviteUserDesc": { + "message": "നിങ്ങളുടെ ഓർ‌ഗനൈസേഷനിലേക്ക് ഒരു പുതിയ ഉപയോക്താവിനെ അവരുടെ ബിറ്റ്‌വർ‌ഡൻ‌ അക്ക email ണ്ട് ഇമെയിൽ‌ വിലാസം നൽ‌കിക്കൊണ്ട് ക്ഷണിക്കുക. അവർക്ക് ഇതിനകം ഒരു ബിറ്റ്വാർഡൻ അക്ക have ണ്ട് ഇല്ലെങ്കിൽ, ഒരു പുതിയ അക്ക create ണ്ട് സൃഷ്ടിക്കാൻ അവരോട് ആവശ്യപ്പെടും." + }, + "inviteMultipleEmailDesc": { + "message": "ഇമെയിൽ വിലാസങ്ങളുടെ ഒരു ലിസ്റ്റ് കോമയാൽ വേർതിരിക്കുന്നതിലൂടെ നിങ്ങൾക്ക് ഒരു സമയം $COUNT$ വരെ ഉപയോക്താക്കളെ ക്ഷണിക്കാൻ കഴിയും.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "ഈ ഉപയോക്താവ് അവരുടെ അക്കൗണ്ട് രണ്ട്-പ്രവേശനം ഉപയോഗിച്ച് സുരക്ഷിതമാക്കിയിരിക്കുന്നു." + }, + "userAccessAllItems": { + "message": "ഈ ഉപയോക്താവിന് എല്ലാ ഇനങ്ങളും ആക്‌സസ് ചെയ്യാനും പരിഷ്‌ക്കരിക്കാനും കഴിയും." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "തിരയുക" + }, + "invited": { + "message": "ക്ഷണിച്ചു" + }, + "accepted": { + "message": "അംഗീകരിച്ചു" + }, + "confirmed": { + "message": "സ്ഥിരീകരിച്ചു" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "ഉടമ" + }, + "ownerDesc": { + "message": "നിങ്ങളുടെ ഓർഗനൈസേഷന്റെ എല്ലാ വശങ്ങളും നിയന്ത്രിക്കാൻ കഴിയുന്ന ഏറ്റവും ഉയർന്ന ആക്‌സസ്സുള്ള ഉപയോക്താവ്." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "അഡ്മിൻ" + }, + "adminDesc": { + "message": "നിങ്ങളുടെ ഓർ‌ഗനൈസേഷനിലെ എല്ലാ ഇനങ്ങൾ‌, ശേഖരണങ്ങൾ‌, ഉപയോക്താക്കൾ‌ എന്നിവയിലേക്ക് അഡ്മിൻ‌മാർ‌ക്ക് പ്രവേശിക്കാനും മാനേജുചെയ്യാനും കഴിയും." + }, + "user": { + "message": "ഉപയോക്താവ്" + }, + "userDesc": { + "message": "നിങ്ങളുടെ ഓർഗനൈസേഷനിൽ നിയുക്ത ശേഖരങ്ങളിലേക്ക് ആക്‌സസ് ഉള്ള ഒരു സാധാരണ ഉപയോക്താവ്." + }, + "manager": { + "message": "മാനേജർ" + }, + "managerDesc": { + "message": "മാനേജർമാർക്ക് നിങ്ങളുടെ ഓർഗനൈസേഷനിൽ നിയുക്ത ശേഖരങ്ങൾ ആക്‌സസ് ചെയ്യാനും നിയന്ത്രിക്കാനും കഴിയും." + }, + "all": { + "message": "എല്ലാം" + }, + "refresh": { + "message": "റിഫ്രഷ് ചെയ്യുക" + }, + "timestamp": { + "message": "ടൈംസ്റ്റാമ്പ്" + }, + "event": { + "message": "ഇവന്റ്" + }, + "unknown": { + "message": "അറിയപ്പെടാത്ത" + }, + "loadMore": { + "message": "കൂടുതൽ ലഭ്യമാക്കുക" + }, + "mobile": { + "message": "മൊബൈൽ", + "description": "Mobile app" + }, + "extension": { + "message": "എക്സ്റ്റൻഷൻ", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "ഡെസ്‌ക്ടോപ്പ്", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "പ്രവേശിച്ചിരിക്കുന്നു." + }, + "changedPassword": { + "message": "അക്കൗണ്ടിന്റെ പാസ്സ്‌വേർഡ് മാറ്റി." + }, + "enabledUpdated2fa": { + "message": "രണ്ട്-ഘട്ട ലോഗിൻ പ്രവർത്തനക്ഷമമാക്കി / അപ്‌ഡേറ്റുചെയ്‌തു." + }, + "disabled2fa": { + "message": "രണ്ട് ഘട്ട പ്രവേശനം അപ്രാപ്‌തമാക്കുക." + }, + "recovered2fa": { + "message": "രണ്ട്-ഘട്ട ലോഗിനിൽ നിന്ന് അക്കൗണ്ട് വീണ്ടെടുത്തു." + }, + "failedLogin": { + "message": "തെറ്റായ പാസ്‌വേഡ് ഉപയോഗിച്ച് ലോഗിൻ ശ്രമം പരാജയപ്പെട്ടു." + }, + "failedLogin2fa": { + "message": "തെറ്റായ രണ്ട്-ഘട്ട ലോഗിൻ ഉപയോഗിച്ച് ലോഗിൻ ശ്രമം പരാജയപ്പെട്ടു." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "ഉപകരണം" + }, + "view": { + "message": "പ്രദർശനം" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "ഒരു പിഴവ് സംഭവിച്ചിരിക്കുന്നു." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "ക്ഷണം വീണ്ടും അയയ്‌ക്കുക" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$-നെ വീണ്ടും ക്ഷണിച്ചു.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "സ്ഥിരീകരിക്കുക" + }, + "confirmUser": { + "message": "ഉപയോക്താവിനെ സ്ഥിരീകരിക്കുക" + }, + "hasBeenConfirmed": { + "message": "$USER$-നെ സ്ഥിരീകരിച്ചു.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "ഉപയോക്താക്കളെ സ്ഥിരീകരിക്കുക" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "തുടങ്ങുന്ന ദിവസം" + }, + "endDate": { + "message": "അവസാന ദിവസം" + }, + "verifyEmail": { + "message": "ഇമെയില് ശരിയാണെന്ന് ഉറപ്പുവരുത്തക" + }, + "verifyEmailDesc": { + "message": "എല്ലാ സവിശേഷതകളിലേക്കും ആക്സസ് അൺലോക്കുചെയ്യുന്നതിന് നിങ്ങളുടെ അക്കൗണ്ടിന്റെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കുക." + }, + "verifyEmailFirst": { + "message": "നിങ്ങളുടെ അക്കൗണ്ടിന്റെ ഇമെയിൽ വിലാസം ആദ്യം സ്ഥിരീകരിക്കേണ്ടതാണ്. " + }, + "checkInboxForVerification": { + "message": "ഒരു സ്ഥിരീകരണ ലിങ്കിനായി നിങ്ങളുടെ ഇമെയിൽ ഇൻ‌ബോക്സ് പരിശോധിക്കുക." + }, + "emailVerified": { + "message": "നിങ്ങളുടെ ഇമെയിൽ സ്ഥിരീകരിച്ചു." + }, + "emailVerifiedFailed": { + "message": "നിങ്ങളുടെ ഇമെയിൽ പരിശോധിച്ചുറപ്പിക്കാനായില്ല. ഒരു പുതിയ സ്ഥിരീകരണ ഇമെയിൽ അയയ്‌ക്കാൻ ശ്രമിക്കുക." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "ബ്രൌസർ അപ്‌ഡേറ്റുചെയ്യുക" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "ഓർഗനൈസേഷനിൽ ചേരുക" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "ക്ഷണം സ്വീകരിച്ചു" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "ക്ഷണം സ്വീകരിക്കാൻ കഴിയില്ല. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "ഇമെയിൽ ഓർക്കണം" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "അക്കൗണ്ടിന്റെ രണ്ട്-ഘട്ട പ്രവേശനം വീണ്ടെടുക്കുക" + }, + "twoStepRecoverDisabled": { + "message": "നിങ്ങളുടെ അക്കൗണ്ടിൽ രണ്ട്-ഘട്ട പ്രവേശനം പ്രവർത്തനരഹിതമാക്കി." + }, + "learnMore": { + "message": "കൂടുതൽ അറിയുക" + }, + "deleteRecoverDesc": { + "message": "നിങ്ങളുടെ അക്കൗണ്ട് വീണ്ടെടുക്കുന്നതിനും ഇല്ലാതാക്കുന്നതിനും ചുവടെ നിങ്ങളുടെ ഇമെയിൽ വിലാസം നൽകുക." + }, + "deleteRecoverEmailSent": { + "message": "നിങ്ങളുടെ അക്കൗണ്ട് നിലവിലുണ്ടെങ്കിൽ, കൂടുതൽ നിർദ്ദേശങ്ങളുള്ള ഒരു ഇമെയിൽ ഞങ്ങൾ നിങ്ങൾക്ക് അയച്ചു." + }, + "deleteRecoverConfirmDesc": { + "message": "നിങ്ങളുടെ Bitwarden അക്കൗണ്ട് ഇല്ലാതാക്കാൻ നിങ്ങൾ അഭ്യർത്ഥിച്ചു. സ്ഥിരീകരിക്കുന്നതിന് ചുവടെയുള്ള ബട്ടൺ ക്ലിക്കുചെയ്യുക." + }, + "myOrganization": { + "message": "എന്റെ സംഘടന" + }, + "deleteOrganization": { + "message": "സംഘടന ഇല്ലാതാക്കുക" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "സംഘടന ഇല്ലാതാക്കി" + }, + "organizationDeletedDesc": { + "message": "സംഘടനയും ബന്ധപ്പെട്ട എല്ലാ ഡാറ്റയും ഇല്ലാതാക്കി." + }, + "organizationUpdated": { + "message": "സംഘടന അപ്‌ഡേറ്റുചെയ്‌തു" + }, + "taxInformation": { + "message": "നികുതി വിവരങ്ങൾ" + }, + "taxInformationDesc": { + "message": "യു‌എസിനുള്ളിലെ ഉപഭോക്താക്കൾ‌ക്കായി, വിൽ‌പന നികുതി ആവശ്യകതകൾ‌ നിറവേറ്റുന്നതിന് പിൻ‌ കോഡ് ആവശ്യമാണ്, മറ്റ് രാജ്യങ്ങൾ‌ക്കായി നിങ്ങളുടെ ഇൻ‌വോയിസുകളിൽ‌ പ്രത്യക്ഷപ്പെടുന്നതിന് ഒരു ടാക്സ് ഐഡൻറിഫിക്കേഷൻ നമ്പറും (വാറ്റ് / ജിഎസ്ടി) കൂടാതെ / അല്ലെങ്കിൽ വിലാസവും നൽകാം." + }, + "billingPlan": { + "message": "പ്ലാൻ", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "പ്ലാൻ മാറ്റുക", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "ചുവടെയുള്ള വിവരങ്ങൾ നൽകി നിങ്ങളുടെ പ്ലാൻ മറ്റൊരു പ്ലാനിലേക്ക് അപ്‌ഗ്രേഡുചെയ്യുക. നിങ്ങൾക്ക് അക്കൗണ്ടിലേക്ക് ഒരു സജീവ പേയ്‌മെന്റ് രീതി ചേർത്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "ഇൻവോയ്സ് #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "ഇൻവോയ്സ് കാണിക്കുക" + }, + "downloadInvoice": { + "message": "ഇൻവോയ്സ് ഡൗൺലോഡുചെയ്യുക" + }, + "verifyBankAccount": { + "message": "ബാങ്ക് അക്കൗണ്ട് സ്ഥിരീകരിക്കുക" + }, + "verifyBankAccountDesc": { + "message": "ഞങ്ങൾ നിങ്ങളുടെ ബാങ്ക് അക്കൗണ്ടിലേക്ക് രണ്ട് മൈക്രോ ഡെപ്പോസിറ്റുകൾ നടത്തി (ഇത് കാണിക്കാൻ 1-2 പ്രവൃത്തി ദിവസമെടുത്തേക്കാം). ബാങ്ക് അക്കൗണ്ട് സ്ഥിരീകരിക്കുന്നതിന് ഈ തുകകൾ നൽകുക." + }, + "verifyBankAccountInitialDesc": { + "message": "ഒരു ബാങ്ക് അക്ക with ണ്ട് ഉപയോഗിച്ചുള്ള പേയ്‌മെന്റ് യുണൈറ്റഡ് സ്റ്റേറ്റ്സിലെ ഉപയോക്താക്കൾക്ക് മാത്രമേ ലഭ്യമാകൂ. നിങ്ങളുടെ ബാങ്ക് അക്കൗണ്ട് പരിശോധിക്കേണ്ടതുണ്ട്. അടുത്ത 1-2 പ്രവൃത്തി ദിവസത്തിനുള്ളിൽ ഞങ്ങൾ രണ്ട് മൈക്രോ നിക്ഷേപങ്ങൾ നടത്തും. ബാങ്ക് അക്കൗണ്ട് സ്ഥിരീകരിക്കുന്നതിന് ഓർഗനൈസേഷന്റെ ബില്ലിംഗ് പേജിൽ ഈ തുകകൾ നൽകുക." + }, + "verifyBankAccountFailureWarning": { + "message": "ബാങ്ക് അക്കൗണ്ട് സ്ഥിരീകരിക്കുന്നതിൽ പരാജയപ്പെടുന്നത് പേയ്‌മെന്റ് നഷ്‌ടപ്പെടുന്നതിനും നിങ്ങളുടെ സബ്‌സ്‌ക്രിപ്‌ഷൻ പ്രവർത്തനരഹിതമാക്കുന്നതിനും ഇടയാക്കും." + }, + "verifiedBankAccount": { + "message": "ബാങ്ക് അക്കൗണ്ട് സ്ഥിരീകരിച്ചു." + }, + "bankAccount": { + "message": "ബാങ്ക് അക്കൗണ്ട്" + }, + "amountX": { + "message": "തുക $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "അക്കൗണ്ട് നമ്പർ" + }, + "accountHolderName": { + "message": "അക്കൗണ്ട് ഉടമയുടെ പേര്" + }, + "bankAccountType": { + "message": "അക്കൗണ്ട് തരം" + }, + "bankAccountTypeCompany": { + "message": "കമ്പനി (ബിസിനസ്)" + }, + "bankAccountTypeIndividual": { + "message": "വ്യക്തിഗത (വ്യക്തിഗത)" + }, + "enterInstallationId": { + "message": "നിങ്ങളുടെ ഇൻസ്റ്റാളേഷൻ ഐഡി നൽകുക" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "സീറ്റുകൾ ചേർക്കുക ", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "സീറ്റുകൾ നീക്കംചെയ്യുക", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "നിങ്ങളുടെ സബ്സ്ക്രിപ്ഷൻ മൊത്തം $COUNT$ ഉപയോക്താക്കളെ അനുവദിക്കുന്നു.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "നീക്കംചെയ്യാനുള്ള സീറ്റുകൾ" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "കീ അപ്‌ഡേറ്റുചെയ്‌തു" + }, + "updateKeyTitle": { + "message": "കീ അപ്‌ഡേറ്റുചെയ്യുക" + }, + "updateEncryptionKey": { + "message": "എൻക്രിപ്ഷൻ കീ അപ്‌ഡേറ്റുചെയ്യുക" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "സബ്സ്ക്രിപ്ഷൻ" + }, + "loading": { + "message": "ലഭ്യമാക്കുന്നു" + }, + "upgrade": { + "message": "അപ്ഗ്രേഡ് ചെയ്യുക" + }, + "upgradeOrganization": { + "message": "സംഘടന അപ്ഗ്രേഡ് ചെയ്യുക" + }, + "upgradeOrganizationDesc": { + "message": "സൗജന്യ സംഘടനകൾക്കു ഈ സവിശേഷത ലഭ്യമല്ല. കൂടുതൽ സവിശേഷതകൾ അൺലോക്കുചെയ്യുന്നതിന് പ്രീമിയം പ്ലാനിലേക്ക് മാറുക." + }, + "createOrganizationStep1": { + "message": "സംഘടനാ സൃഷ്‌ടിക്കുക: ഘട്ടം 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "നിങ്ങളുടെ സംഘടനാ സൃഷ്‌ടിക്കുന്നതിന് മുമ്പ്, നിങ്ങൾ ആദ്യം ഒരു വ്യതസ്തമായ അക്കൗണ്ട് സൃഷ്ടിക്കണം." + }, + "refunded": { + "message": "റീഫണ്ട് ചെയ്തു" + }, + "nothingSelected": { + "message": "നിങ്ങൾ ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല." + }, + "acceptPolicies": { + "message": "ഈ ബോക്സ് ചെക്കുചെയ്യുന്നതിലൂടെ നിങ്ങൾ ഇനിപ്പറയുന്നവ അംഗീകരിക്കുന്നു:" + }, + "acceptPoliciesError": { + "message": "സേവന നിബന്ധനകളും സ്വകാര്യതാ നയവും അംഗീകരിച്ചിട്ടില്ല." + }, + "termsOfService": { + "message": "സേവന വ്യവസ്ഥകൾ" + }, + "privacyPolicy": { + "message": "സ്വകാര്യതാനയം" + }, + "filters": { + "message": "ഫിൽറ്ററുകൾ" + }, + "vaultTimeout": { + "message": "വാൾട് ടൈംഔട്ട്" + }, + "vaultTimeoutDesc": { + "message": "തങ്ങളുടെ വാൾട് എപ്പോൾ ടൈംഔട്ട് ആകും എന്ന് നിശ്ചയിക്കുക. തിരഞ്ഞെടുത്ത പ്രവർത്തനം നടത്തുക." + }, + "oneMinute": { + "message": "1 മിനിറ്റ്" + }, + "fiveMinutes": { + "message": "5 മിനിറ്റ്" + }, + "fifteenMinutes": { + "message": "15 മിനിറ്റ്" + }, + "thirtyMinutes": { + "message": "30 മിനിറ്റ്" + }, + "oneHour": { + "message": "1 മണിക്കൂർ" + }, + "fourHours": { + "message": "4 മണിക്കൂർ" + }, + "onRefresh": { + "message": "ബ്രൗസർ റിഫ്രഷ് ചെയ്യുമ്പോൾ" + }, + "dateUpdated": { + "message": "പുതുക്കിയത്", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "പാസ്‍വേഡ് പുതുക്കി", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "സംഘടന അപ്രാപ്‌തമാക്കി." + }, + "licenseIsExpired": { + "message": "ലൈസൻസ് കാലഹരണപ്പെട്ടു." + }, + "updatedUsers": { + "message": "അപ്‌ഡേറ്റുചെയ്‌ത ഉപയോക്താക്കൾ" + }, + "selected": { + "message": "തിരഞ്ഞെടുത്തത്" + }, + "ownership": { + "message": "ഉടമസ്ഥാവകാശം" + }, + "whoOwnsThisItem": { + "message": "ഈ ഇനം ആരുടേതാണ്?" + }, + "strong": { + "message": "ശക്തമായ", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "നല്ലത്", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "ദുർബലമാണ്", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "വളരെ ദുർബലമാണ്", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "ദുര്ബലമായ പ്രാഥമിക പാസ്‌വേഡ്" + }, + "weakMasterPasswordDesc": { + "message": "നിങ്ങൾ തിരഞ്ഞെടുത്ത പ്രാഥമിക പാസ്‌വേഡ് ദുർബലമാണ്. നിങ്ങളുടെ Bitwarden അക്കൗണ്ട് ശരിയായി സുരക്ഷിതമാക്കാൻ നിങ്ങൾ ഒരു ശക്തമായ മാസ്റ്റർ പാസ്‌വേഡ് (അല്ലെങ്കിൽ ഒരു പാസ്‌ഫ്രേസ്) ഉപയോഗിക്കണം. ഈ മാസ്റ്റർ പാസ്‌വേഡ് ഉപയോഗിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "rotateAccountEncKey": { + "message": "എന്റെ അക്കൗണ്ടിന്റെ എൻക്രിപ്ഷൻ കീയും rotate ചെയ്യുക" + }, + "rotateEncKeyTitle": { + "message": "എൻക്രിപ്ഷൻ കീ തിരിക്കുക" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "പരിഹരിക്കേണ്ട അറ്റാച്മെന്റുകൾ ഈ ഇനത്തിൽ ഉണ്ട്." + }, + "attachmentFixDesc": { + "message": "പരിഹരിക്കേണ്ട അറ്റാച്മെന്റുകൾ ഈ ഇനത്തിൽ ഉണ്ട്. കൂടുതലറിയാൻ ക്ലിക്കുചെയ്യുക." + }, + "fix": { + "message": "പരിഹരിക്കുക", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "നിങ്ങളുടെ അക്കൗണ്ടിന്റെ എൻ‌ക്രിപ്ഷൻ കീ തിരിക്കുന്നതിന് മുമ്പ് ശരിയാക്കേണ്ട പഴയ ഫയൽ അറ്റാച്ചുമെന്റുകൾ നിങ്ങളുടെ നിലവറയിൽ ഉണ്ട്." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "സൗജന്യം ", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API കീ" + }, + "apiKeyDesc": { + "message": "Bitwarden പബ്ലിക് API-ലേക്ക് പ്രാമാണീകരിക്കാൻ നിങ്ങളുടെ API കീ ഉപയോഗിക്കാം." + }, + "apiKeyRotateDesc": { + "message": "API കീ തിരിക്കുന്നത് മുമ്പത്തെ കീ അസാധുവാക്കും. നിലവിലെ കീ ഉപയോഗിക്കാൻ സുരക്ഷിതമല്ലെന്ന് നിങ്ങൾ വിശ്വസിക്കുന്നുവെങ്കിൽ നിങ്ങളുടെ API കീ തിരിക്കാൻ കഴിയും." + }, + "apiKeyWarning": { + "message": "നിങ്ങളുടെ API കീയ്ക്ക് സംഘടനയിലേക്ക് പൂർണ്ണ ആക്‌സസ് ഉണ്ട്. അതുകൊണ്ടു ഇത് രഹസ്യമായി സൂക്ഷിക്കണം." + }, + "userApiKeyDesc": { + "message": "ബിറ്റ്വാർഡൻ CLI- യിൽ പ്രാമാണീകരിക്കാൻ നിങ്ങളുടെ API കീ ഉപയോഗിക്കാം." + }, + "userApiKeyWarning": { + "message": "നിങ്ങളുടെ API കീ ഒരു ഇതര പ്രാമാണീകരണ സംവിധാനമാണ്. അത് രഹസ്യമായി സൂക്ഷിക്കണം." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 ക്ലയൻറ് ക്രെഡൻഷ്യലുകൾ", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API കീ കാണുക " + }, + "rotateApiKey": { + "message": "API കീ തിരിക്കുക" + }, + "selectOneCollection": { + "message": "നിങ്ങൾ ഒരു കളക്ഷനെങ്കിലും തിരഞ്ഞെടുക്കണം." + }, + "couldNotChargeCardPayInvoice": { + "message": "ഞങ്ങൾക്ക് നിങ്ങളുടെ കാർഡ് ഈടാക്കാൻ കഴിഞ്ഞില്ല. ചുവടെ ലിസ്റ്റുചെയ്തിട്ടുള്ള പണമടയ്ക്കാത്ത ഇൻവോയ്സ് കാണുകയും അടയ്ക്കുകയും ചെയ്യുക." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "കുറഞ്ഞ നീളം" + }, + "clone": { + "message": "ക്ലോൺ" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "ഉപയോക്താക്കൾക്ക് അവരുടെ സ്വകാര്യ അക്കൗണ്ടുകളിൽ രണ്ട്-ഘട്ട പ്രവേശനം സജ്ജമാക്കാൻ ആവശ്യപ്പെടുക." + }, + "twoStepLoginPolicyWarning": { + "message": "വ്യക്തിഗത അക്ക for ണ്ടിനായി രണ്ട്-ഘട്ട ലോഗിൻ പ്രാപ്തമാക്കിയിട്ടില്ലാത്ത ഓർഗനൈസേഷൻ അംഗങ്ങളെ ഓർഗനൈസേഷനിൽ നിന്ന് നീക്കംചെയ്യുകയും മാറ്റത്തെക്കുറിച്ച് അറിയിക്കുന്ന ഒരു ഇമെയിൽ ലഭിക്കുകയും ചെയ്യും." + }, + "twoStepLoginPolicyUserWarning": { + "message": "നിങ്ങളുടെ ഉപയോക്തൃ അക്കൗണ്ടിൽ രണ്ട്-ഘട്ട പ്രവേശനം പ്രവർത്തനക്ഷമമാക്കേണ്ട ഒരു സംഘടനയിലെ അംഗമാണ് നിങ്ങൾ. രണ്ട്-ഘട്ട പ്രവേശന ദാതാക്കളെ നിങ്ങൾ അപ്രാപ്തമാക്കിയാൽ, ഈ സംഘടനകളിൽ നിന്ന് നിങ്ങളെ സ്വപ്രേരിതമായി നീക്കംചെയ്യും." + }, + "passwordGeneratorPolicyDesc": { + "message": "പാസ്‌വേഡ് ജനറേറ്റർ കോൺഫിഗറേഷനായി മിനിമം ആവശ്യകതകൾ സജ്ജമാക്കുക." + }, + "passwordGeneratorPolicyInEffect": { + "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": "നിങ്ങളുടെ പുതിയ മാസ്റ്റർ പാസ്‌വേഡ് നയ ആവശ്യകതകൾ നിറവേറ്റുന്നില്ല." + }, + "minimumNumberOfWords": { + "message": "വാക്കുകളുടെ ഏറ്റവും കുറഞ്ഞ എണ്ണം" + }, + "defaultType": { + "message": "സ്ഥിരസ്ഥിതി തരം" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "ട്രാഷ് തിരയുക" + }, + "permanentlyDelete": { + "message": "എന്നെന്നേക്കുമായി നീക്കം ചെയ്യുക" + }, + "permanentlyDeleteSelected": { + "message": "തിരഞ്ഞെടുത്തത് എന്നെന്നേക്കുമായി നീക്കം ചെയ്യുക" + }, + "permanentlyDeleteItem": { + "message": "ഇനം എന്നെന്നേക്കുമായി നീക്കം ചെയ്യുക" + }, + "permanentlyDeleteItemConfirmation": { + "message": "ഈ എന്നെന്നേക്കുമായി നീക്കം ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "permanentlyDeletedItem": { + "message": "എന്നെന്നേക്കുമായി നീക്കം ചെയ്ത ഇനം" + }, + "permanentlyDeletedItems": { + "message": "എന്നെന്നേക്കുമായി നീക്കം ചെയ്ത ഇനങ്ങൾ" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "ശാശ്വതമായി ഇല്ലാതാക്കാൻ നിങ്ങൾ $COUNT$ ഇനം (കൾ) തിരഞ്ഞെടുത്തു. ഈ ഇനങ്ങളെല്ലാം ശാശ്വതമായി ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "$ID$ എന്നെന്നേക്കുമായി നീക്കം ചെയ്തു.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "വീണ്ടെടുക്കുക " + }, + "restoreSelected": { + "message": "തിരഞ്ഞെടുത്തത് വീണ്ടെടുക്കുക " + }, + "restoreItem": { + "message": "ഇനം വീണ്ടെടുക്കുക " + }, + "restoredItem": { + "message": "വീണ്ടെടുത്ത ഇനങ്ങൾ" + }, + "restoredItems": { + "message": "വീണ്ടെടുത്ത ഇനങ്ങൾ" + }, + "restoreItemConfirmation": { + "message": "ഈ ഇനം വീണ്ടെടുക്കണമെന്ന് ഉറപ്പാണോ?" + }, + "restoreItems": { + "message": "ഇനങ്ങൾ വീണ്ടെടുക്കുക" + }, + "restoreSelectedItemsDesc": { + "message": "വീണ്ടെടുക്കാൻ നിങ്ങൾ $COUNT$ ഇനം(ങ്ങൾ) തിരഞ്ഞെടുത്തു. ഈ ഇനങ്ങളെല്ലാം വീണ്ടെടുക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "$ID$ എന്ന ഇനം വീണ്ടെടുത്തു.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ലോഗ് ഔട്ട് ചെയ്യുന്നത് തങ്ങളുടെ വാൾട്ടിലേക്കുള്ള എല്ലാ ആക്സസും നീക്കംചെയ്യുകയും. കാലയളവിനുശേഷം ഓൺലൈൻ ഓതന്റിക്കേറ്റർ ആവശ്യമാണ്. ഈ ക്രമീകരണം ഉപയോഗിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "ടൈംഔട് ആക്ഷൻ സ്ഥിരീകരണം" + }, + "hidePasswords": { + "message": "പാസ്‌വേഡുകൾ മറയ്‌ക്കുക" + }, + "countryPostalCodeRequiredDesc": { + "message": "വിൽപ്പന നികുതിയും സാമ്പത്തിക റിപ്പോർട്ടിംഗും മാത്രം കണക്കാക്കാൻ ഞങ്ങൾക്ക് ഈ വിവരങ്ങൾ ആവശ്യമാണ്." + }, + "includeVAT": { + "message": "VAT/GST വിവരങ്ങൾ ഉൾപ്പെടുത്തുക (ഓപ്ഷണൽ)" + }, + "taxIdNumber": { + "message": "VAT/GST ടാക്സ് ഐഡി" + }, + "taxInfoUpdated": { + "message": "നികുതി വിവരങ്ങൾ പുതുക്കിയിരിക്കുന്നു." + }, + "setMasterPassword": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സജ്ജമാക്കു" + }, + "ssoCompleteRegistration": { + "message": "SSO ഉപയോഗിച്ച് പ്രവേശനം പൂർത്തിയാക്കാനും, നിങ്ങളുടെ വാൾട് ആക്സസ് ചെയ്യാനും സുരക്ഷിതമാക്കാനും ഒരു പ്രാഥമിക പാസ്‌വേഡ് സജ്ജമാക്കുക." + }, + "identifier": { + "message": "ഐഡന്റിഫയർ" + }, + "organizationIdentifier": { + "message": "സംഘടനയുടെ ഐഡന്റിഫയർ" + }, + "ssoLogInWithOrgIdentifier": { + "message": "നിങ്ങളുടെ സംഘടനയുടെ സിംഗിൾ സൈൻ-ഓൺ പോർട്ടൽ ഉപയോഗിച്ച് വേഗത്തിൽ ലോഗിൻ ചെയ്യുക. ആരംഭിക്കുന്നതിന് ദയവായി നിങ്ങളുടെ സംഘടനയുടെ ഐഡന്റിഫയർ നൽകുക." + }, + "enterpriseSingleSignOn": { + "message": "എന്റർപ്രൈസ് SSO" + }, + "ssoHandOff": { + "message": "നിങ്ങൾക്ക് ഇപ്പോൾ ഈ ടാബ് അടച്ച് വിപുലീകരണത്തിൽ തുടരാം." + }, + "includeAllTeamsFeatures": { + "message": "എല്ലാ ടീമുകളുടെ സവിശേഷതകളും, കൂടാതെ:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "എന്റർപ്രൈസ് പോളിസികൾ" + }, + "ssoValidationFailed": { + "message": "SSO മൂല്യനിർണ്ണയം പരാജയപ്പെട്ടു" + }, + "ssoIdentifierRequired": { + "message": "സംഘടനയുടെ ഐഡന്റിഫയർ ആവശ്യമാണ്." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "SSO ബന്ധിപ്പിക്കുക" + }, + "singleOrg": { + "message": "ഒറ്റ ഓർഗനൈസേഷൻ" + }, + "singleOrgDesc": { + "message": "മറ്റേതെങ്കിലും ഓർഗനൈസേഷനിൽ ചേരുന്നതിൽ നിന്ന് ഉപയോക്താക്കളെ നിയന്ത്രിക്കുക." + }, + "singleOrgBlockCreateMessage": { + "message": "ഒന്നിൽ കൂടുതൽ ഓർഗനൈസേഷനിൽ ചേരാൻ നിങ്ങളെ അനുവദിക്കാത്ത ഒരു നയമാണ് നിങ്ങളുടെ നിലവിലെ ഓർഗനൈസേഷന് ഉള്ളത്. നിങ്ങളുടെ ഓർഗനൈസേഷൻ അഡ്‌മിനുകളുമായി ബന്ധപ്പെടുക അല്ലെങ്കിൽ മറ്റൊരു ബിറ്റ്‌വാർഡൻ അക്കൗണ്ടിൽ നിന്ന് സൈൻ അപ്പ് ചെയ്യുക." + }, + "singleOrgPolicyWarning": { + "message": "ഉടമകളോ അഡ്മിനിസ്ട്രേറ്റർമാരോ അല്ലാത്തവരും ഇതിനകം മറ്റൊരു ഓർഗനൈസേഷനിൽ അംഗവുമായ ഓർഗനൈസേഷൻ അംഗങ്ങളെ നിങ്ങളുടെ ഓർഗനൈസേഷനിൽ നിന്ന് നീക്കംചെയ്യും." + }, + "requireSso": { + "message": "സിംഗിൾ സൈൻ-ഓൺ പ്രാമാണീകരണം" + }, + "requireSsoPolicyDesc": { + "message": "എന്റർപ്രൈസ് സിംഗിൾ സൈൻ-ഓൺ രീതി ഉപയോഗിച്ച് ഉപയോക്താക്കൾ ലോഗിൻ ചെയ്യാൻ ആവശ്യപ്പെടുന്നു." + }, + "prerequisite": { + "message": "മുൻവ്യവസ്ഥ" + }, + "requireSsoPolicyReq": { + "message": "ഈ നയം സജീവമാക്കുന്നതിന് മുമ്പ് സിംഗിൾ ഓർഗനൈസേഷൻ എന്റർപ്രൈസ് നയം പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം." + }, + "requireSsoPolicyReqError": { + "message": "സിംഗിൾ ഓർഗനൈസേഷൻ നയം പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല." + }, + "requireSsoExemption": { + "message": "ഓർ‌ഗനൈസേഷൻ‌ ഉടമകളെയും രക്ഷാധികാരികളെയും ഈ നയം നടപ്പിലാക്കുന്നതിൽ‌ നിന്നും ഒഴിവാക്കിയിരിക്കുന്നു." + }, + "sendTypeFile": { + "message": "ഫയൽ" + }, + "sendTypeText": { + "message": "വാചകം" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "Send ഇല്ലാതാക്കുക", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "ഈ Send ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "ഇത് ഏത് തരം അയയ്ക്കലാണ്?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "പരമാവധി ആക്സസ് എണ്ണം" + }, + "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": "നിലവിലെ ആക്‌സസ്സ് എണ്ണം" + }, + "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." + }, + "disabled": { + "message": "അപ്രാപ്‌തമാക്കി" + }, + "sendLink": { + "message": "ലിങ്ക് അയയ്‌ക്കുക", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Send ലിങ്ക് പകർത്തുക", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "പാസ്‌വേഡ് നീക്കംചെയ്യുക" + }, + "removedPassword": { + "message": "പാസ്‌വേഡ് നീക്കംചെയ്‌തു" + }, + "removePasswordConfirmation": { + "message": "പാസ്‌വേഡ് നീക്കംചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "എല്ലാം Send-കൾ" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Send-കൾ തിരയുക", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "ഈ Send പാസ്‌വേഡ് ഉപയോഗിച്ച് സുരക്ഷിതമാക്കിയിരിക്കുന്നു. തുടരുന്നതിന് ദയവായി ചുവടെ പാസ്‌വേഡ് ടൈപ്പുചെയ്യുക.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "പാസ്‌വേഡ് അറിയില്ലേ? ഈ അയയ്‌ക്കൽ ആക്‌സസ് ചെയ്യുന്നതിന് ആവശ്യമായ പാസ്‌വേഡിനായി അയച്ചയാളോട് ചോദിക്കുക.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "ഈ Send സ്ഥിരസ്ഥിതിയായി മറച്ചിരിക്കുന്നു. ചുവടെയുള്ള ബട്ടൺ ഉപയോഗിച്ചാൽ നിങ്ങൾക്ക് അതിന്റെ ദൃശ്യപരത ടോഗിൾ ചെയ്യാൻ കഴിയും.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "ഫയൽ ഡൗൺലോഡുചെയ്യുക" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ Send-കളൊന്നുമില്ല.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "അക്സസ്സ് അഭ്യർത്ഥിക്കുക" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "നിരസിക്കുക" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "വ്യക്തിഗത ഉടമസ്ഥാവകാശം" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "കണക്കാക്കിയ നികുതി" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "അനുമതികൾ" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "റിപ്പോർട്ടുകൾ അക്സസ്സ് ചെയ്യുക" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "എല്ലാ കളക്ഷനുകളും നിയത്രിക്കുക" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "ഗ്രൂപ്പുകൾ നിയന്ത്രിക്കുക" + }, + "managePolicies": { + "message": "നയങ്ങൾ നിയന്ത്രിക്കുക" + }, + "manageSso": { + "message": "SSO നിയന്ത്രിക്കുക" + }, + "manageUsers": { + "message": "ഉപയോക്താക്കളെ നിയന്ത്രിക്കുക" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json new file mode 100644 index 0000000000..cd1319d2be --- /dev/null +++ b/apps/web/src/locales/nb/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ netthvelv", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Hvilken type gjenstand er dette?" + }, + "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" + }, + "newPassword": { + "message": "Nytt passord" + }, + "passphrase": { + "message": "Passfrase" + }, + "notes": { + "message": "Notater" + }, + "customFields": { + "message": "Tilpassede felter" + }, + "cardholderName": { + "message": "Kortholderens navn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Merke" + }, + "expiration": { + "message": "Utløp" + }, + "securityCode": { + "message": "Sikkerhetskode (CVV)" + }, + "identityName": { + "message": "Identitetsnavn" + }, + "company": { + "message": "Firma" + }, + "ssn": { + "message": "Nummer for sosial stønad" + }, + "passportNumber": { + "message": "Pass-nummer" + }, + "licenseNumber": { + "message": "Lisens-/førerkort-nummer" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Fjern" + }, + "unassigned": { + "message": "Utilegnet" + }, + "noneFolder": { + "message": "Ingen mappe", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Legg til en mappe" + }, + "editFolder": { + "message": "Rediger mappen" + }, + "baseDomain": { + "message": "Grunndomene", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domene", + "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": "Samsvar-gjenkjenning", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Standard match-gjenkjenning", + "description": "Default URI match detection for auto-fill." + }, + "never": { + "message": "Aldri" + }, + "toggleVisibility": { + "message": "Juster synlighet" + }, + "toggleCollapse": { + "message": "Bytt mellom skjul/utvid", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generer et passord" + }, + "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." + }, + "save": { + "message": "Lagre" + }, + "cancel": { + "message": "Avbryt" + }, + "canceled": { + "message": "Avbrutt" + }, + "close": { + "message": "Lukk" + }, + "delete": { + "message": "Slett" + }, + "favorite": { + "message": "Gi favorittstempel" + }, + "unfavorite": { + "message": "Fjern favorittstempel" + }, + "edit": { + "message": "Rediger" + }, + "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" + }, + "searchVault": { + "message": "Søk i hvelvet" + }, + "allItems": { + "message": "Alle gjenstander" + }, + "favorites": { + "message": "Favoritter" + }, + "types": { + "message": "Typer" + }, + "typeLogin": { + "message": "Innlogging" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Sikker notis" + }, + "typeLoginPlural": { + "message": "Innlogginger" + }, + "typeCardPlural": { + "message": "Kort" + }, + "typeIdentityPlural": { + "message": "Identiteter" + }, + "typeSecureNotePlural": { + "message": "Sikre notater" + }, + "folders": { + "message": "Mapper" + }, + "collections": { + "message": "Samlinger" + }, + "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" + }, + "shared": { + "message": "Delt" + }, + "attachments": { + "message": "Vedlegg" + }, + "select": { + "message": "Velg" + }, + "addItem": { + "message": "Legg til en gjenstand" + }, + "editItem": { + "message": "Rediger gjenstanden" + }, + "viewItem": { + "message": "Vis objektet" + }, + "ex": { + "message": "f.eks.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Annet" + }, + "share": { + "message": "Del" + }, + "moveToOrganization": { + "message": "Flytt til organisasjon" + }, + "valueCopied": { + "message": "$VALUE$ har blitt kopiert", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopier verdien", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopier passordet", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopier brukernavnet", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopier nummeret", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopier sikkerhetskoden", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopier URIen", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mitt hvelv" + }, + "vault": { + "message": "Hvelv" + }, + "moveSelectedToOrg": { + "message": "Flytt valgte til organisasjon" + }, + "deleteSelected": { + "message": "Slett de valgte" + }, + "moveSelected": { + "message": "Flytt de valgte" + }, + "selectAll": { + "message": "Velg alt" + }, + "unselectAll": { + "message": "Avvelg alt" + }, + "launch": { + "message": "Åpne" + }, + "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." + }, + "addedItem": { + "message": "La til gjenstanden" + }, + "editedItem": { + "message": "Redigerte gjenstanden" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ flyttet til $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Valgte elementer flyttet til $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Slett objektet" + }, + "deleteFolder": { + "message": "Slett mappen" + }, + "deleteAttachment": { + "message": "Slett vedlegget" + }, + "deleteItemConfirmation": { + "message": "Er du sikker på at du vil slette denne gjenstanden?" + }, + "deletedItem": { + "message": "Slettet objektet" + }, + "deletedItems": { + "message": "Slettet objektene" + }, + "movedItems": { + "message": "Flyttede gjenstander" + }, + "overwritePasswordConfirmation": { + "message": "Er du sikker på at du vil overskrive det nåværende passordet?" + }, + "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" + }, + "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" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nei" + }, + "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" + }, + "emailAddressDesc": { + "message": "Du skal bruke E-postadressen din til å logge på." + }, + "yourName": { + "message": "Ditt navn" + }, + "yourNameDesc": { + "message": "Hva burde vi kalle deg?" + }, + "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": "Et hint for hovedpassordet (valgfritt)" + }, + "masterPassHintLabel": { + "message": "Hint til hovedpassordet" + }, + "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 langt." + }, + "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." + }, + "emailAddress": { + "message": "E-postadresse" + }, + "yourVaultIsLocked": { + "message": "Hvelvet ditt er låst. Kontroller superpassordet ditt for å fortsette." + }, + "unlock": { + "message": "Lås opp" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lås nå" + }, + "noItemsInList": { + "message": "Det er ingen gjenstander å liste opp." + }, + "noCollectionsInList": { + "message": "Det er ingen samlinger å liste opp." + }, + "noGroupsInList": { + "message": "Det er ingen grupper å liste opp." + }, + "noUsersInList": { + "message": "Det er ingen brukere å liste opp." + }, + "noEventsInList": { + "message": "Det er ingen hendelser å liste opp." + }, + "newOrganization": { + "message": "Ny organisasjon" + }, + "noOrganizationsList": { + "message": "Du tilhører ikke noen organisasjoner. Organisasjoner gjør det mulig for deg å trygt dele objekter med andre brukere." + }, + "versionNumber": { + "message": "Versjon $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "loginUnavailable": { + "message": "Innloggingen er utilgjengelig" + }, + "noTwoStepProviders": { + "message": "Denne kontoen har 2-trinnsinnlogging aktivert, men ingen av de oppsatte 2-trinnsleverandørene er støttet av denne nettleseren." + }, + "noTwoStepProviders2": { + "message": "Vennligst bruk en støttet nettleser (f.eks. Chrome) og/eller legg til flere leverandører som er bedre støttet mellom flere nettlesere (slik som en autentiseringsapp)." + }, + "twoStepOptions": { + "message": "2-trinnsinnloggingsalternativer" + }, + "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." + }, + "u2fDesc": { + "message": "Bruk enhver FIDO U2F-aktivert sikkerhetsnøkkel til å få tilgang til kontoen din." + }, + "u2fTitle": { + "message": "FIDO U2F-sikkerhetsnøkkel" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Bruk en hvilken som helst WebAuthn aktivert sikkerhetsnøkkel til å få tilgang til kontoen din." + }, + "webAuthnMigrated": { + "message": "(Migrert fra FIDO)" + }, + "emailTitle": { + "message": "E-post" + }, + "emailDesc": { + "message": "Verifiseringskoder vil bli sendt til deg med E-post." + }, + "continue": { + "message": "Fortsett" + }, + "organization": { + "message": "Organisasjon" + }, + "organizations": { + "message": "Organisasjoner" + }, + "moveToOrgDesc": { + "message": "Velg en organisasjon som du ønsker å flytte denne gjenstanden til. Flytting til en organisasjon overfører eierskap til den aktuelle organisasjonen. Du vil ikke lenger være den direkte eieren av denne varen når den er flyttet." + }, + "moveManyToOrgDesc": { + "message": "Velg en organisasjon som du ønsker å flytte denne gjenstanden til. Flytting til en organisasjon overfører eierskap til den aktuelle organisasjonen. Du vil ikke lenger være den direkte eieren av denne varen når den er flyttet." + }, + "collectionsDesc": { + "message": "Rediger samlingene som dette objektet blir delt med. Kun organisasjonsbrukere med tilgang til disse samlingene vil kunne se dette objektet." + }, + "deleteSelectedItemsDesc": { + "message": "Du har valgt $COUNT$ gjenstand(er) som skal slettes. Er du sikker på du vil slette alle disse gjenstandene?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Velg en mappe som du ønsker å flytte $COUNT$ valgt(e) gjenstand(er) til.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Du har valgt $COUNT$ gjenstand(er). $MOVEABLE_COUNT$ gjenstand(er) kan flyttes til en organisasjon, $NONMOVEABLE_COUNT$ kan ikke.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verifiseringskode (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopier verifiseringskoden" + }, + "warning": { + "message": "Advarsel" + }, + "confirmVaultExport": { + "message": "Bekreft eksport av hvelvet" + }, + "exportWarningDesc": { + "message": "Eksporten inneholder dine hvelvdata i ukryptert format. Du bør ikke lagre eller sende den eksporterte filen over usikre tjenester (som e-post). Slett filen umiddelbart etter at du er ferdig med å bruke den." + }, + "encExportKeyWarningDesc": { + "message": "Denne eksporteringen krypterer dataene dine ved hjelp av din kontos 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." + }, + "export": { + "message": "Eksporter" + }, + "exportVault": { + "message": "Eksporter hvelvet" + }, + "fileFormat": { + "message": "Filformat" + }, + "exportSuccess": { + "message": "Ditt hvelvs data har blitt eksportert." + }, + "passwordGenerator": { + "message": "Passordgenerator" + }, + "minComplexityScore": { + "message": "Minimum kompleksitetscore" + }, + "minNumbers": { + "message": "Minste antall sifre" + }, + "minSpecial": { + "message": "Minste antall spesialtegn", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Unngå tvetydige tegn" + }, + "regeneratePassword": { + "message": "Regenerer passord" + }, + "length": { + "message": "Lengde" + }, + "numWords": { + "message": "Antall ord" + }, + "wordSeparator": { + "message": "Orddeler" + }, + "capitalize": { + "message": "Stor forbokstav", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inkluder siffer" + }, + "passwordHistory": { + "message": "Passordhistorikk" + }, + "noPasswordsInList": { + "message": "Det er ingen passord å liste opp." + }, + "clear": { + "message": "Tøm", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Konto oppdatert" + }, + "changeEmail": { + "message": "Endre e-postadresse" + }, + "changeEmailTwoFactorWarning": { + "message": "Om du fortsetter vil du endre e-postadressen til kontoen din. Det vil ikke endre e-postadressen som brukes ved to-faktorinnlogging. Du kan endre denne e-postadressen i to-trinns innloggingsinnstillinger." + }, + "newEmail": { + "message": "Ny e-postadresse" + }, + "code": { + "message": "Kode" + }, + "changeEmailDesc": { + "message": "Vi har sendt en E-post med en verifiseringskode til $EMAIL$. Vennligst se etter koden i E-postinnboksen din, og skriv den inn nedenfor for å endeliggjøre din E-postadresseendring.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Å fortsette vil logge deg ut av din nåværende økt, og krever at du logger deg på igjen. Aktive økter på andre enheter kan forbli aktive i opptil en time." + }, + "emailChanged": { + "message": "E-postadressen endret" + }, + "logBackIn": { + "message": "Vennligst logg på igjen." + }, + "logBackInOthersToo": { + "message": "Vennligst logg inn på nytt. Dersom du bruker andre Bitwarden-applikasjoner logg av og på på dem også." + }, + "changeMasterPassword": { + "message": "Endre hovedpassordet" + }, + "masterPasswordChanged": { + "message": "Hovedpassordet er endret" + }, + "currentMasterPass": { + "message": "Det nåværende hovedpassordet" + }, + "newMasterPass": { + "message": "Nytt hovedpassord" + }, + "confirmNewMasterPass": { + "message": "Bekreft det nye hovedpassordet" + }, + "encKeySettings": { + "message": "Innstillinger for krypteringsnøkkel" + }, + "kdfAlgorithm": { + "message": "KDF-algoritme" + }, + "kdfIterations": { + "message": "KDF-iterasjoner" + }, + "kdfIterationsDesc": { + "message": "Flere KDF-gjentakelser kan hjelpe til med å beskytte superpassordet fra å bli tvunget inn i av en angriper. Vi anbefaler en verdi på $VALUE$ eller mer.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Å velge for mange KDF-gjentakelser kan føre til dårlig ytelse når du logger inn på (og låser opp) Bitwarden på enheter med tregere CPUer. Vi anbefaler at du øker verdien trinnvis, $INCREMENT$ om gangen, og å så teste det på alle dine enheter.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Endre KDF" + }, + "encKeySettingsChanged": { + "message": "Krypteringsnøkkelinnstillingene endret" + }, + "dangerZone": { + "message": "Faresone" + }, + "dangerZoneDesc": { + "message": "Vær forsiktig, disse handlingene kan ikke reverseres!" + }, + "deauthorizeSessions": { + "message": "Fjern autorisering av økter" + }, + "deauthorizeSessionsDesc": { + "message": "Er du bekymret for at kontoen din er pålogget på en annen enhet? Fortsett nedenfor for å fjerne autoriseringen til alle datamaskiner eller enheter som du tidligere har brukt. Dette sikkerhetstrinnet er anbefalt dersom du tidligere har brukt en offentlig datamaskin eller lagret passordet ditt ved et uhell på en enhet som ikke er din. Dette vil også fjerne alle tidligere huskede 2-trinnsinnloggingsøkter." + }, + "deauthorizeSessionsWarning": { + "message": "Å fortsette vil også logge deg av din nåværende økt, og gjør at du vil måtte logge på igjen. Du vil også bli bedt om 2-trinnsinnlogging igjen, dersom det er aktivert. Aktive økter på andre enheter kan kanskje forbli aktive i opptil en time." + }, + "sessionsDeauthorized": { + "message": "Fjernet autoriseringen fra alle økter" + }, + "purgeVault": { + "message": "Tøm hvelvet" + }, + "purgedOrganizationVault": { + "message": "Organisasjonens hvelv tømt." + }, + "vaultAccessedByProvider": { + "message": "Hvelv tilgjengelig av leverandør." + }, + "purgeVaultDesc": { + "message": "Fortsett nedenfor for å slette alle objektet og mapper i ditt hvelv. Objekter som tilhører en organisasjon som du deler med, vil ikke bli slettet." + }, + "purgeOrgVaultDesc": { + "message": "Fortsett nedenfor for å slette alle objektene i organisasjonens hvelv." + }, + "purgeVaultWarning": { + "message": "Å tømme hvelvet ditt er permanent. Det kan ikke bli angret på." + }, + "vaultPurged": { + "message": "Hvelvet ditt har blitt tømt." + }, + "deleteAccount": { + "message": "Slett kontoen din" + }, + "deleteAccountDesc": { + "message": "Fortsett nedenfor for å slette din konto og alle dens tilknyttede data." + }, + "deleteAccountWarning": { + "message": "Å slette kontoen din er permanent. Det kan ikke bli angret på." + }, + "accountDeleted": { + "message": "Kontoen er slettet" + }, + "accountDeletedDesc": { + "message": "Kontoen din har blitt avsluttet, og alle dens tilkoblede data har blitt slettet." + }, + "myAccount": { + "message": "Min konto" + }, + "tools": { + "message": "Verktøy" + }, + "importData": { + "message": "Importer data" + }, + "importError": { + "message": "Importer feil" + }, + "importErrorDesc": { + "message": "Det oppstod et problem med dataene du prøvde å importere. Vennligst løs feilene listet nedenfor i kildefilen og prøv på nytt." + }, + "importSuccess": { + "message": "Dataene har blitt vellykket importert inn i hvelvet ditt." + }, + "importWarning": { + "message": "Du importerer data til $ORGANIZATION$. Dataene kan deles med medlemmer av denne organisasjonen. Vil du fortsette?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Dataene er ikke formattert riktig. Vennligst sjekk importfilen din og prøv igjen." + }, + "importNothingError": { + "message": "Ingenting ble importert." + }, + "importEncKeyError": { + "message": "Feil under dekryptering av den eksporterte filen. Krypteringsnøkkelen samsvarte ikke med krypteringsnøkkelen som ble brukt eksport av data." + }, + "selectFormat": { + "message": "Velg formatet til importfilen" + }, + "selectImportFile": { + "message": "Velg importfilen" + }, + "orCopyPasteFileContents": { + "message": "eller kopier og lim inn importfilens innhold" + }, + "instructionsFor": { + "message": "$NAME$-instrukser", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Alternativer" + }, + "optionsDesc": { + "message": "Tilpass din netthvelvopplevelse." + }, + "optionsUpdated": { + "message": "Innstillingene er oppdatert" + }, + "language": { + "message": "Språk" + }, + "languageDesc": { + "message": "Endre språket som brukes av netthvelvet." + }, + "disableIcons": { + "message": "Skru av nettstedsikoner" + }, + "disableIconsDesc": { + "message": "Nettstedsikoner sørger for et gjenkjennelig bilde ved siden av hvert innloggingsobjekt i hvelvet ditt." + }, + "enableGravatars": { + "message": "Skru på Gravatarer", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Bruk avatarbilder som har blitt lastet inn fra gravatar.com." + }, + "enableFullWidth": { + "message": "Aktiver fullbreddeoppsett", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Tillat netthvelvet å utvide til hele bredden i nettleservinduet." + }, + "default": { + "message": "Standard" + }, + "domainRules": { + "message": "Domeneregler" + }, + "domainRulesDesc": { + "message": "Hvis du har den samme innloggingen på flere forskjellige nettstedsdomene, kan du merke nettstedet som \"tilsvarende\". \"Forvalgte\" domener er de som har blitt forhåndsvalgt for deg av Bitwarden." + }, + "globalEqDomains": { + "message": "Standard samsvaringsdomener" + }, + "customEqDomains": { + "message": "Selvvalgte samsvaringsdomener" + }, + "exclude": { + "message": "Ekskluder" + }, + "include": { + "message": "Inkluder" + }, + "customize": { + "message": "Tilpass" + }, + "newCustomDomain": { + "message": "Nytt tilpasset domene" + }, + "newCustomDomainDesc": { + "message": "Skriv inn en liste over domener som er adskilt med kommaer. Bare grunndomener er tillatt. Ikke skriv inn underdomener. For eksempel, skriv inn \"google.no\" i stedet for \"www.google.no\". Du kan også skrive inn \"androidapp://pakkens.navn\" for å knytte en Android-app sammen med andre nettstedsdomener." + }, + "customDomainX": { + "message": "Tilpasset domene nr. $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domenene er oppdatert" + }, + "twoStepLogin": { + "message": "2-trinnsinnlogging" + }, + "twoStepLoginDesc": { + "message": "Sikre kontoen din ved å kreve et ekstra trinn når du logger på." + }, + "twoStepLoginOrganizationDesc": { + "message": "Krev 2-trinnsinnlogging for din organisasjons brukere, ved å sette opp leverandører på organisasjonsnivået." + }, + "twoStepLoginRecoveryWarning": { + "message": "Å skru på 2-trinnsinnlogging kan låse deg permanent ut av din Bitwarden-konto. En gjenopprettingskode gir deg tilgang til kontoen din i det tilfellet at du ikke lenger kan bruke din vanlige 2-trinnsinnloggingsleverandør (f.eks. at du mister enheten din). Bitwarden-kundestøtten vil ikke kunne hjelpe deg dersom du mister tilgang til kontoen din. Vi anbefaler at du skriver ned eller skriver ut gjenopprettingskoden og legger den på en trygg plass." + }, + "viewRecoveryCode": { + "message": "Vis gjenopprettingskode" + }, + "providers": { + "message": "Leverandører", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Aktiver" + }, + "enabled": { + "message": "Aktivert" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium-medlemskap" + }, + "premiumRequired": { + "message": "Premium er påkrevd" + }, + "premiumRequiredDesc": { + "message": "Et Premium-medlemskap er påkrevd for å bruke denne funksjonen." + }, + "youHavePremiumAccess": { + "message": "Du har Premium-tilgang" + }, + "alreadyPremiumFromOrg": { + "message": "Du har allerede tilgang til Premium-funksjoner takket være en organisasjon som du er medlem av." + }, + "manage": { + "message": "Behandle" + }, + "disable": { + "message": "Deaktiver" + }, + "twoStepLoginProviderEnabled": { + "message": "Denne 2-trinnsleverandøren er aktivert på din konto." + }, + "twoStepLoginAuthDesc": { + "message": "Skriv inn ditt superpassord for å endre på 2-trinnsinnloggingsinnstillingene." + }, + "twoStepAuthenticatorDesc": { + "message": "Følg disse trinnene for å sette opp 2-trinnsinnlogging med en autentiseringsapp:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Last ned en 2-trinnsinnloggingsapp" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Trenger du en 2-trinnsinnloggingsapp? Last ned en av de følgende" + }, + "iosDevices": { + "message": "iOS-enheter" + }, + "androidDevices": { + "message": "Android-enheter" + }, + "windowsDevices": { + "message": "Windows-enheter" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Disse appene er anbefalt, men andre autentiseringsapper vil også fungere." + }, + "twoStepAuthenticatorScanCode": { + "message": "Skann denne QR-koden med din autentiseringsapp" + }, + "key": { + "message": "Nøkkel" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Skriv inn den påfølgende 6-sifrede verifiseringskoden fra appen" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Dersom du trenger å legge den til til en annen enhet, er QR-koden (eller -nøkkelen) som kreves av din autentiseringsapp nedenfor." + }, + "twoStepDisableDesc": { + "message": "Er du sikker på at du vil skru av denne 2-trinnsinnloggingsleverandøren?" + }, + "twoStepDisabled": { + "message": "2-trinnsinnloggingsleverandøren har blitt skrudd av." + }, + "twoFactorYubikeyAdd": { + "message": "Legg til en ny YubiKey til din konto" + }, + "twoFactorYubikeyPlugIn": { + "message": "Sett YubiKey-en (fra NEO- eller 4-seriene) inn i din datamaskins USB-port." + }, + "twoFactorYubikeySelectKey": { + "message": "Velg det første tomme YubiKey-inndatafeltet nedenfor." + }, + "twoFactorYubikeyTouchButton": { + "message": "Trykk på YubiKey-ens knapp." + }, + "twoFactorYubikeySaveForm": { + "message": "Lagre skjemaet." + }, + "twoFactorYubikeyWarning": { + "message": "På grunn av plattformbegrensninger, kan YubiKey-er ikke bli brukt på alle Bitwarden-apper. Du burde skru på en annen 2-trinnsinnloggingsleverandør, sånn at du kan få tilgang til din konto når YubiKeys ikke kan bli brukt. Støttede plattformer:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Netthvelvet, datamaskinprogrammet, CLI, og alle nettleserutvidelser, på en enhet med en USB-port som støtter din YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobilapper på en enhet med NFC-funksjoner, eller som har en USB-port som støtter din YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F-nøkkel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC-støtte" + }, + "twoFactorYubikeySupportsNfc": { + "message": "En av mine YubiKey-er støtter NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Dersom en av dine YubiKey-er støtter NFC (f.eks. en YubiKey NEO), vil du på mobilenheter bli bedt om det når enn NFC-støtte blir oppdaget." + }, + "yubikeysUpdated": { + "message": "YubiKey-ene har blitt oppdatert" + }, + "disableAllKeys": { + "message": "Deaktiver alle YubiKey-ene" + }, + "twoFactorDuoDesc": { + "message": "Skriv inn Bitwarden-appinformasjonen i ditt Duo Admin-panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integreringsnøkkel" + }, + "twoFactorDuoSecretKey": { + "message": "Hemmelig nøkkel" + }, + "twoFactorDuoApiHostname": { + "message": "API-vertsnavn" + }, + "twoFactorEmailDesc": { + "message": "Følg disse trinnene for å sette opp 2-trinnsinnlogging med E-post:" + }, + "twoFactorEmailEnterEmail": { + "message": "Skriv inn E-posten som du vil bruke til å motta verifiseringskoder" + }, + "twoFactorEmailEnterCode": { + "message": "Skriv inn den påfølgende 6-sifrede verifiseringskoden fra E-posten" + }, + "sendEmail": { + "message": "Send en E-post" + }, + "twoFactorU2fAdd": { + "message": "Legg til en FIDO U2F-sikkerhetsnøkkel til din konto" + }, + "removeU2fConfirmation": { + "message": "Er du sikker på at du vil fjerne denne sikkerhetsnøkkelen?" + }, + "twoFactorWebAuthnAdd": { + "message": "Legg til en WebAuthn sikkerhetsnøkkel til kontoen din" + }, + "readKey": { + "message": "Les nøkkel" + }, + "keyCompromised": { + "message": "Nøkkelen er kompromittert." + }, + "twoFactorU2fGiveName": { + "message": "Gi sikkerhetsnøkkelen et vennlig navn for å identifisere den." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Sett sikkerhetsnøkkelen inn i din datamaskins USB-port, og klikk på «Les nøkkel»-knappen." + }, + "twoFactorU2fTouchButton": { + "message": "Dersom sikkerhetsnøkkelen har en knapp, trykk på den." + }, + "twoFactorU2fSaveForm": { + "message": "Lagre skjemaet." + }, + "twoFactorU2fWarning": { + "message": "På grunn av plattformbegrensninger, kan FIDO U2F ikke bli brukt på alle Bitwarden-apper. Du burde skru på en annen 2-trinnsinnloggingsleverandør, sånn at du kan få tilgang til din konto når FIDO U2F ikke kan bli brukt. Støttede plattformer:" + }, + "twoFactorU2fSupportWeb": { + "message": "Netthvelv og nettleserutvidelser, på en datamaskin med en U2F-støttende nettleser (Chrome, Opera, Vivaldi, eller Firefox med FIDO U2F aktivert)." + }, + "twoFactorU2fWaiting": { + "message": "Venter på at du skal trykke på knappen på din sikkerhetsnøkkel" + }, + "twoFactorU2fClickSave": { + "message": "Klikk på «Lagre»-knappen nedenfor for å aktivere denne sikkerhetsnøkkelen for 2-trinnsinnlogging." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Det oppsto et problem med å lese sikkerhetsnøkkelen. Prøv igjen." + }, + "twoFactorWebAuthnWarning": { + "message": "På grunn av plattformbegrensninger, kan ikke WebAuthn brukes på alle Bitwarden-apper. Du bør aktivere en annen 2-trinnsinnloggingsleverandør, slik at du kan få tilgang til kontoen din når WebAuthn ikke kan brukes. Støttede plattformer:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Netthvelv og nettleserutvidelser, på en datamaskin med en WebAuthn støttende nettleser (Chrome, Opera, Vivaldi, eller Firefox med FIDO U2F aktivert)." + }, + "twoFactorRecoveryYourCode": { + "message": "Din 2-trinnsinnloggingsgjenopprettingskode for Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Du har ikke aktivert noen 2-trinnsinnloggingsleverandører ennå. Etter at du har aktivert en 2-trinnsinnloggingsleverandør, kan du komme tilbake hit for å se din gjenopprettingskode." + }, + "printCode": { + "message": "Skriv ut koden", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Rapporter" + }, + "reportsDesc": { + "message": "Identifiser og løs sikkerhetsavvik i kontoene dine på nettet ved å klikke på rapportene nedenfor." + }, + "unsecuredWebsitesReport": { + "message": "Rapport om usikrede nettsteder" + }, + "unsecuredWebsitesReportDesc": { + "message": "Å bruke usikrede nettsteder som benytter http://, kan være farlig. Dersom nettstedet tillater det, burde du alltid besøke det gjennom https://, slik at tilkoblingen din er kryptert." + }, + "unsecuredWebsitesFound": { + "message": "Usikrede nettsteder ble funnet" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Vi fant $COUNT$ elementer i hvelvet ditt som benytter usikrede URIer. Du burde endre deres URI til å benytte https://, dersom det nettstedet tillater det.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Ingen gjenstander i hvelvet ditt har usikrede URI-er." + }, + "inactive2faReport": { + "message": "Rapport om 2FA-nettsteder" + }, + "inactive2faReportDesc": { + "message": "2-trinnsinnlogging (2FA) er en viktig sikkerhetsinnstilling som hjelper til med å sikre kontoene dine. Dersom det nettstedet tillater det, burde du alltid skru på 2-trinnsinnlogging." + }, + "inactive2faFound": { + "message": "Pålogginger som støtter 2FA ble funnet" + }, + "inactive2faFoundDesc": { + "message": "Vi fant $COUNT$ nettsted(er) i hvelvet ditt som kanskje eller kanskje ikke er satt opp for 2-trinnsinnlogging (i følge twofactorauth.org). For å beskytte disse kontoene ytterligere, burde du skru på 2-trinnsinnlogging.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Ingen nettsteder som støtter 2-trinnsinnlogging i følge twofactorauth.org ble funnet i hvelvet ditt." + }, + "instructions": { + "message": "Instruksjoner" + }, + "exposedPasswordsReport": { + "message": "Rapport om eksponerte passord" + }, + "exposedPasswordsReportDesc": { + "message": "Eksponerte passord er passord som har blitt oppdaget i kjente databrudd som har blitt offentliggjort eller solgt på det mørke nettet av hackere." + }, + "exposedPasswordsFound": { + "message": "Eksponerte passord ble funnet" + }, + "exposedPasswordsFoundDesc": { + "message": "Vi fant $COUNT$ gjenstander i hvelvet ditt som har passord som er eksponert i kjente databrudd. Du burde endre passordene deres til noe nytt.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Ingen elementer i hvelvet ditt har passord som har vært eksponert i kjente databrudd." + }, + "checkExposedPasswords": { + "message": "Sjekk eksponerte passord" + }, + "exposedXTimes": { + "message": "Eksponert $COUNT$ gang(er)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Rapport om svake passord" + }, + "weakPasswordsReportDesc": { + "message": "Svake passord kan lett bli gjettet på av hackere og automatiserte verktøy som brukes til å knekke passord. Bitwarden sin passordgenerator kan hjelpe deg med å opprette sterke passord." + }, + "weakPasswordsFound": { + "message": "Svake passord ble funnet" + }, + "weakPasswordsFoundDesc": { + "message": "Vi fant $COUNT$ elementer i hvelvet ditt som har passord som ikke er sterke. Du burde endre dem slik at de har sterkere passord.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Ingen elementer i hvelvet ditt har svake passord." + }, + "reusedPasswordsReport": { + "message": "Rapport om gjenbrukte passord" + }, + "reusedPasswordsReportDesc": { + "message": "Dersom en tjeneste du bruker er kompromittert, kan det å benytte samme passord flere steder gjøre at hackere lett får tilgang til flere av nettkontoene dine. Du burde bruke et unikt passord for hver konto eller tjeneste." + }, + "reusedPasswordsFound": { + "message": "Gjenbrukte passord ble funnet" + }, + "reusedPasswordsFoundDesc": { + "message": "Vi fant $COUNT$ passord som blir gjenbrukt i hvelvet ditt. Du burde endre dem slik at de er unike.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Ingen innlogginger i hvelvet ditt har passord som blir gjenbrukt." + }, + "reusedXTimes": { + "message": "Gjenbrukt $COUNT$ ganger", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Databruddrapporter" + }, + "breachDesc": { + "message": "Kontoer som har blitt avslørt kan lekke personlig informasjon. Gjør kontoene tryggere ved å aktivere 2FA eller ved å lage et sterkere passord." + }, + "breachCheckUsernameEmail": { + "message": "Sjekk noen av brukernavnene eller E-postadressene som du bruker." + }, + "checkBreaches": { + "message": "Sjekk databrudd" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ ble ikke funnet i noen kjente databrudd.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Gode nyheter", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ ble funnet i $COUNT$ forskjellige databrudd på nettet.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Inntrengte kontoer ble funnet" + }, + "compromisedData": { + "message": "Kompromitterte data" + }, + "website": { + "message": "Nettsted" + }, + "affectedUsers": { + "message": "Påvirkede brukere" + }, + "breachOccurred": { + "message": "Databruddet hendte den" + }, + "breachReported": { + "message": "Databruddet ble meldt ifra om den" + }, + "reportError": { + "message": "En feil oppstod under forsøk på å laste inn rapporten. Prøv igjen." + }, + "billing": { + "message": "Fakturering" + }, + "accountCredit": { + "message": "Kontokreditt", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Legg til kreditt", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Beløp", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Lagt til kreditt vil vises på kontoen din etter at betalingen er fullstendig behandlet. Noen betalingsmetoder er forsinket og kan ta lengre tid å behandle enn andre." + }, + "makeSureEnoughCredit": { + "message": "Vær sikker på at kontoen din har nok kreditt tilgjengelig for dette kjøpet. Hvis kontoen din ikke har nok kreditt tilgjengelig, vil standard betalingsmåten din bli brukt til forskjellen. Du kan legge til kreditt på kontoen din på Faktureringssiden." + }, + "creditAppliedDesc": { + "message": "Kontoens kreditt kan brukes til kjøp. Eventuell tilgjengelig kreditt vil automatisk bli brukt mot fakturaer generert for denne kontoen." + }, + "goPremium": { + "message": "Oppgrader til Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Du har oppgradert til Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Oppgrader kontoen din til et Premium-medlemsskap og lås opp noen strålende ekstra egenskaper." + }, + "premiumSignUpStorage": { + "message": "1 GB med kryptert fillagring." + }, + "premiumSignUpTwoStep": { + "message": "Ytterligere 2-trinnsinnloggingsmuligheter, slik som YubiKey, FIDO U2F, og Duo." + }, + "premiumSignUpEmergency": { + "message": "Nødtilgang" + }, + "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!" + }, + "premiumPrice": { + "message": "Alt dette for bare $PRICE$/år!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Utvidelser" + }, + "premiumAccess": { + "message": "Premium-tilgang" + }, + "premiumAccessDesc": { + "message": "Du kan gi Premium-tilgang til alle brukere i din organisasjon for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Ytterligere lagringsplass (GB)" + }, + "additionalStorageGbDesc": { + "message": "Antall ekstra GB" + }, + "additionalStorageIntervalDesc": { + "message": "Din funksjonsplan kommer med $SIZE$ kryptert fillagring. Du kan legge til ytterligere lagring for $PRICE$ per GB per $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Sammendrag" + }, + "total": { + "message": "Totalt" + }, + "year": { + "message": "år" + }, + "month": { + "message": "måned" + }, + "monthAbbr": { + "message": "må.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Din betalingsmetode vil bli trekt umiddelbart og deretter på en gjentakende basis hvert år. Du kan avbryte det til enhver tid." + }, + "paymentCharged": { + "message": "Betalingsmåten din belastes umiddelbart og deretter hver gang $INTERVAL$. Du kan kansellere når som helst.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Funksjonsplanen din kommer med en gratis 7-dagersprøveperiode. Din betalingsmetode vil ikke bli trekt før prøveperiode har utløpt. Regningstrekk vil skje på en gjentakende basis hver(t) $INTERVAL$. Du kan avbryte når som helst." + }, + "paymentInformation": { + "message": "Betalingsinformasjon" + }, + "billingInformation": { + "message": "Faktureringsdetaljer" + }, + "creditCard": { + "message": "Bankkort" + }, + "paypalClickSubmit": { + "message": "Klikk på PayPal-knappen for å logge på din PayPal-konto, og så klikk på «Send inn»-knappen nedenfor for å fortsette." + }, + "cancelSubscription": { + "message": "Avbryt abonnementet" + }, + "subscriptionCanceled": { + "message": "Abonnementet har blitt avbrutt." + }, + "pendingCancellation": { + "message": "Avventer planlagt avbrytelse" + }, + "subscriptionPendingCanceled": { + "message": "Abonnementet har blitt øremerket for avbrytelse etter den nåværende regningsperioden." + }, + "reinstateSubscription": { + "message": "Gjeninnfør abonnementet" + }, + "reinstateConfirmation": { + "message": "Er du sikker på at du vil fjerne den avventende avbrytelsesforespørselen og i stedet gjeninnføre abonnementet ditt?" + }, + "reinstated": { + "message": "Abonnementet har blitt gjeninnført." + }, + "cancelConfirmation": { + "message": "Er du sikker på at du vil avbryte? Du vil miste tilgang til alle funksjonene til dette abonnementet etter den inneværende regningsperioden." + }, + "canceledSubscription": { + "message": "Abonnementet har blitt avbrutt." + }, + "neverExpires": { + "message": "Utløper aldri" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Neste trekk" + }, + "details": { + "message": "Detaljer" + }, + "downloadLicense": { + "message": "Last ned lisens" + }, + "updateLicense": { + "message": "Oppdater lisens" + }, + "updatedLicense": { + "message": "Oppdaterte lisensen" + }, + "manageSubscription": { + "message": "Behandle abonnementet" + }, + "storage": { + "message": "Lagring" + }, + "addStorage": { + "message": "Legg til lagring" + }, + "removeStorage": { + "message": "Fjern lagring" + }, + "subscriptionStorage": { + "message": "Ditt abonnement har totalt $MAX_STORAGE$GB med kryptert fillagring til rådighet. Du bruker for øyeblikket $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Betalingsmetode" + }, + "noPaymentMethod": { + "message": "Ingen lagrede betalingsmetoder." + }, + "addPaymentMethod": { + "message": "Legg til betalingsmetode" + }, + "changePaymentMethod": { + "message": "Endre betalingsmetoden" + }, + "invoices": { + "message": "Fakturaer" + }, + "noInvoices": { + "message": "Ingen fakturaer." + }, + "paid": { + "message": "Betalt", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Ikke betalt", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transaksjoner", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Ingen transaksjoner." + }, + "chargeNoun": { + "message": "Trekk", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refusjon", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Ethvert trekk vil dukke opp i bankkontooppsummeringen din som $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Antall GB lagring som skal legges til" + }, + "gbStorageRemove": { + "message": "Antall GB lagring som skal fjernes" + }, + "storageAddNote": { + "message": "Å legge til lagring vil føre til justeringer i dine regningssummer og vil umiddelbart trekke fra den lagrede betalingsmetoden din. Det første trekket vil bli fordelt utover resten av den nåværende regningsperioden." + }, + "storageRemoveNote": { + "message": "Å fjerne lagring vil føre til justeringer i dine regningssummer som vil bli fordelt som kreditt opp mot ditt neste regningstrekk." + }, + "adjustedStorage": { + "message": "Justerte $AMOUNT$GB med lagring.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Ta kontakt med kundestøtte" + }, + "updatedPaymentMethod": { + "message": "Oppdaterte betalingsmetoden." + }, + "purchasePremium": { + "message": "Kjøp Premium" + }, + "licenseFile": { + "message": "Lisensfil" + }, + "licenseFileDesc": { + "message": "Lisensfilen din vil være navngitt noe i retning $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "For å oppgradere kontoen din til et Premium-medlemsskap, vil du måtte laste opp en gyldig lisensfil." + }, + "uploadLicenseFileOrg": { + "message": "For å opprette en lokalt betjent organisasjon, vil måtte laste opp en gyldig lisensfil." + }, + "accountEmailMustBeVerified": { + "message": "Din kontos E-postadresse må bli verifisert." + }, + "newOrganizationDesc": { + "message": "Organisasjoner gjør at du kan dele deler av hvelvet ditt med andre, i tillegg til å behandle relaterte brukere for en spesifikk enhet, f.eks. en familie, et lite lag, eller et stort firma." + }, + "generalInformation": { + "message": "Generell informasjon" + }, + "organizationName": { + "message": "Organisasjonens navn" + }, + "accountOwnedBusiness": { + "message": "Denne kontoen er eid av et firma." + }, + "billingEmail": { + "message": "E-post for fakturering" + }, + "businessName": { + "message": "Firmaets navn" + }, + "chooseYourPlan": { + "message": "Velg din funksjonsplan" + }, + "users": { + "message": "Brukere" + }, + "userSeats": { + "message": "Brukerseter" + }, + "additionalUserSeats": { + "message": "Ekstra brukerseter" + }, + "userSeatsDesc": { + "message": "Antall brukerseter" + }, + "userSeatsAdditionalDesc": { + "message": "Planen din kommer $BASE_SEATS$ brukerseter. Du kan legge til ekstra brukere for $SEAT_PRICE$ per bruker per måned.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Hvor mange brukerseter behøver du? Du kan også legge til ekstra seter senere dersom det skulle bli nødvendig." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing eller personlige brukere til å dele med $COUNT$ annen bruker(e).", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familier" + }, + "planDescFamilies": { + "message": "For personlig bruk, til å dele med familie og venner." + }, + "planNameTeams": { + "message": "Lag (Teams)" + }, + "planDescTeams": { + "message": "For firmaer og andre lagorganisasjoner." + }, + "planNameEnterprise": { + "message": "Bedrift" + }, + "planDescEnterprise": { + "message": "For firmaer og andre store organisjoner." + }, + "freeForever": { + "message": "Gratis for alltid" + }, + "includesXUsers": { + "message": "inkluderer $COUNT$ brukere", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Ekstra brukere" + }, + "costPerUser": { + "message": "$COST$ per bruker", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Begrenset til $COUNT$ brukere (inkludert deg)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Begrenset til $COUNT$ samlinger", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Legg til og del med opptil $COUNT$ brukere", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Legg til og del med et ubegrenset antall brukere" + }, + "createUnlimitedCollections": { + "message": "Lag ubegrenset med samlinger" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ kryptert fillagring", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Lokal betjening (valgfritt)" + }, + "usersGetPremium": { + "message": "Brukerne får tilgang til Premium-medlemskapsfunksjoner" + }, + "controlAccessWithGroups": { + "message": "Kontroller brukertilgang med grupper" + }, + "syncUsersFromDirectory": { + "message": "Synkroniser dine brukere og grupper fra en mappe" + }, + "trackAuditLogs": { + "message": "Spor brukerhandlinger med undersøkingslogger" + }, + "enforce2faDuo": { + "message": "Krev 2FA med Duo" + }, + "priorityCustomerSupport": { + "message": "Prioritert kundestøtte" + }, + "xDayFreeTrial": { + "message": "$COUNT$-dagers gratis prøveperiode, avbryt når som helst", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Månedlig" + }, + "annually": { + "message": "Årlig" + }, + "basePrice": { + "message": "Grunnpris" + }, + "organizationCreated": { + "message": "Organisasjonen ble opprettet" + }, + "organizationReadyToGo": { + "message": "Din nye organisasjon er klar til å begynne!" + }, + "organizationUpgraded": { + "message": "Din organisasjon har blitt oppgradert." + }, + "leave": { + "message": "Forlat" + }, + "leaveOrganizationConfirmation": { + "message": "Er du sikker på at du vil forlate denne organisasjonen?" + }, + "leftOrganization": { + "message": "Du har forlatt organisasjonen." + }, + "defaultCollection": { + "message": "Standardsamling" + }, + "getHelp": { + "message": "Få hjelp" + }, + "getApps": { + "message": "Hent appene" + }, + "loggedInAs": { + "message": "Pålogget som" + }, + "eventLogs": { + "message": "Hendelsesloggbøker" + }, + "people": { + "message": "Personer" + }, + "policies": { + "message": "Vilkår" + }, + "singleSignOn": { + "message": "Enkelt pålogging" + }, + "editPolicy": { + "message": "Endre vilkår" + }, + "groups": { + "message": "Grupper" + }, + "newGroup": { + "message": "Ny gruppe" + }, + "addGroup": { + "message": "Legg til gruppe" + }, + "editGroup": { + "message": "Rediger gruppe" + }, + "deleteGroupConfirmation": { + "message": "Er du sikker på at du vil slette denne gruppen?" + }, + "removeUserConfirmation": { + "message": "Er du sikker på at du vil slette denne brukeren?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Advarsel! Denne brukeren krever nøkkelkobling for å administrere krypteringen. Fjerner du denne brukeren fra organisasjonen din vil deaktivere kontoen sin. Denne handlingen kan ikke angres. Vil du fortsette?" + }, + "externalId": { + "message": "Ekstern ID" + }, + "externalIdDesc": { + "message": "Den eksterne Id-en kan brukes som referanse eller for å koble denne ressursen til et eksternt system, for eksempel en brukerkatalog." + }, + "accessControl": { + "message": "Tilgangsstyring" + }, + "groupAccessAllItems": { + "message": "Denne gruppen kan få tilgang til og modifisere alle gjenstander." + }, + "groupAccessSelectedCollections": { + "message": "Denne gruppen har bare tilgang til de valgte samlingene." + }, + "readOnly": { + "message": "Skrivebeskyttet" + }, + "newCollection": { + "message": "Ny samling" + }, + "addCollection": { + "message": "Legg til samling" + }, + "editCollection": { + "message": "Rediger samling" + }, + "deleteCollectionConfirmation": { + "message": "Er du sikker på at du vil slette denne samlingen?" + }, + "editUser": { + "message": "Rediger bruker" + }, + "inviteUser": { + "message": "Inviter bruker" + }, + "inviteUserDesc": { + "message": "Inviter en ny bruker til din organisasjon ved å skrive inn E-postadressen til Bitwarden-kontoen deres nedenfor. Hvis de ikke allerede har en Bitwarden-konto, vil de bli forespurt om å lage en ny konto." + }, + "inviteMultipleEmailDesc": { + "message": "Du kan invitere opptil $COUNT$ brukere om gangen ved å komma-adskille en liste over E-postadresser.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Denne brukeren bruker 2-trinnsinnlogging til å beskytte kontoen sin." + }, + "userAccessAllItems": { + "message": "Denne brukeren kan få tilgang til og modifisere alle gjenstander." + }, + "userAccessSelectedCollections": { + "message": "Denne brukeren har bare tilgang til de valgte samlingene." + }, + "search": { + "message": "Søk" + }, + "invited": { + "message": "Invitert" + }, + "accepted": { + "message": "Godtatt" + }, + "confirmed": { + "message": "Bekreftet" + }, + "clientOwnerEmail": { + "message": "Klienteier e-post" + }, + "owner": { + "message": "Eier" + }, + "ownerDesc": { + "message": "Høyestetilgangsbrukeren som kan behandle alle aspekter av din organisasjon." + }, + "clientOwnerDesc": { + "message": "Denne brukeren bør være uavhengig av leverandøren. Hvis leverandøren er uavhengig av organisasjonen, vil denne brukeren opprettholde eierskap til organisasjonen." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Administratorer kan få tilgang til og behandle alle objekter, samlinger og brukere i din organisasjon." + }, + "user": { + "message": "Bruker" + }, + "userDesc": { + "message": "En vanlig bruker med tilgang til tilegnede samlinger i din organisasjon." + }, + "manager": { + "message": "Behandler" + }, + "managerDesc": { + "message": "Behandlere har tilgang til og kan behandle tilegnede samlinger i din organisasjon." + }, + "all": { + "message": "Alle" + }, + "refresh": { + "message": "Oppfrisk" + }, + "timestamp": { + "message": "Tidsstempel" + }, + "event": { + "message": "Hendelse" + }, + "unknown": { + "message": "Ukjent" + }, + "loadMore": { + "message": "Last inn mer" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Utvidelse", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Skrivebord", + "description": "Desktop app" + }, + "webVault": { + "message": "Netthvelv" + }, + "loggedIn": { + "message": "Pålogget." + }, + "changedPassword": { + "message": "Endret kontopassordet." + }, + "enabledUpdated2fa": { + "message": "Aktiverte/oppdaterte 2-trinnsinnloggingen." + }, + "disabled2fa": { + "message": "Skrudde av 2-trinnsinnlogging." + }, + "recovered2fa": { + "message": "Fikk tilgang til kontoen igjen med 2-trinnsinnlogging." + }, + "failedLogin": { + "message": "Innloggingsforsøket mislyktes grunnet feil passord." + }, + "failedLogin2fa": { + "message": "Innloggingsforsøket mislyktes grunnet feil 2-trinnsinnlogging." + }, + "exportedVault": { + "message": "Eksportert hvelv." + }, + "exportedOrganizationVault": { + "message": "Eksportert organisasjonshvelv." + }, + "editedOrgSettings": { + "message": "Redigerte organisasjonens innstillinger." + }, + "createdItemId": { + "message": "Lagde $ID$-gjenstanden.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Redigerte $ID$-gjenstanden.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Slettet $ID$-objektet.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Flyttet elementet $ID$ til en organisasjon.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Vist $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Vist passordet for objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Vist skjult felt for objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Vist sikkerhetskoden for objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Kopiert passordet for objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Kopiert skjult felt for objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kopiert sikkerhetskoden for objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Automatisk utfylt objekt $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Lagde $ID$-samlingen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Redigerte $ID$-samlingen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Slettet $ID$-samlingen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Endret vilkår $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Lagde $ID$-gruppen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Redigerte $ID$-gruppen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Slettet $ID$-gruppen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Fjernet brukeren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Lagde et vedlegg for $ID$-gjenstanden.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Slettet et vedlegg for $ID$-gjenstanden.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Redigerte samlingene til $ID$-gjenstanden.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Inviterte brukeren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Bekreftet brukeren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Redigerte brukeren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Redigerte gruppene til brukeren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Koblet fra SSO for brukeren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Opprettet organisasjon $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "La til organisasjon $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Fjernet organisasjonen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Benyttet $ID$ organisasjonshvelv.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Enhet" + }, + "view": { + "message": "Vis" + }, + "invalidDateRange": { + "message": "Ugyldig datoområde." + }, + "errorOccurred": { + "message": "En feil har oppstått." + }, + "userAccess": { + "message": "Brukertilgang" + }, + "userType": { + "message": "Brukertype" + }, + "groupAccess": { + "message": "Gruppetilgang" + }, + "groupAccessUserDesc": { + "message": "Rediger gruppene som denne brukeren tilhører." + }, + "invitedUsers": { + "message": "Inviterte bruker(e)." + }, + "resendInvitation": { + "message": "Send invitasjonen på nytt" + }, + "resendEmail": { + "message": "Send e-post på nytt" + }, + "hasBeenReinvited": { + "message": "$USER$ har blitt invitert på nytt.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Bekreft" + }, + "confirmUser": { + "message": "Bekreft bruker" + }, + "hasBeenConfirmed": { + "message": "$USER$ har blitt bekreftet.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Bekreft brukere" + }, + "usersNeedConfirmed": { + "message": "Du har brukere som har akseptert sin invitasjon, men som fortsatt må bekreftes. Brukere vil ikke ha tilgang til organisasjonen før de er bekreftet." + }, + "startDate": { + "message": "Startdato" + }, + "endDate": { + "message": "Sluttdato" + }, + "verifyEmail": { + "message": "Bekreft E-postadresse" + }, + "verifyEmailDesc": { + "message": "Bekreft din kontos E-postadresse for å få tilgang til alle egenskapene." + }, + "verifyEmailFirst": { + "message": "E-postadressen til kontoen din må verifiseres først." + }, + "checkInboxForVerification": { + "message": "Se etter i din E-postkontos innboks for en verifiseringslenke." + }, + "emailVerified": { + "message": "Din E-postadresse har blitt bekreftet." + }, + "emailVerifiedFailed": { + "message": "Klarte ikke å bekrefte E-postadressen din. Prøv å sende en ny bekreftelses-E-post." + }, + "emailVerificationRequired": { + "message": "Bekreftelse av e-post nødvendig" + }, + "emailVerificationRequiredDesc": { + "message": "Du må bekrefte e-postadressen din for å bruke denne funksjonen." + }, + "updateBrowser": { + "message": "Oppdater nettleseren" + }, + "updateBrowserDesc": { + "message": "Du bruker en ustøttet nettleser. Netthvelvet vil kanskje ikke fungere ordentlig." + }, + "joinOrganization": { + "message": "Bli med i organisasjon" + }, + "joinOrganizationDesc": { + "message": "Du har blitt invitert til å bli med i organisasjonen som er listet opp ovenfor. For å godkjenne invitasjonen, må du enten logge på eller lage en ny Bitwarden-konto." + }, + "inviteAccepted": { + "message": "Invitasjonen ble godkjent" + }, + "inviteAcceptedDesc": { + "message": "Du kan få tilgang til denne organisasjonen så fort en administrator godkjenner ditt medlemskap. Vi vil sende deg E-post når det skjer." + }, + "inviteAcceptFailed": { + "message": "Klarte ikke å godkjenne invitasjonen. Spør en organisasjonsadmin om å sende en ny invitasjon." + }, + "inviteAcceptFailedShort": { + "message": "Ikke i stand til å godta invitasjon. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Husk på E-postadressen" + }, + "recoverAccountTwoStepDesc": { + "message": "Hvis du ikke klarer å få tilgang til kontoen din gjennom dine vanlige 2-trinnsinnloggingsmetoder, kan du bruke din 2-trinnsinnloggingsgjenopprettingskode til å deaktivere alle 2-trinnsinnloggingsleverandører på din konto." + }, + "recoverAccountTwoStep": { + "message": "Få tilbake tilgangen til din kontos 2-trinnsinnlogging" + }, + "twoStepRecoverDisabled": { + "message": "2-trinnsinnlogging har blitt skrudd av på din konto." + }, + "learnMore": { + "message": "Lær mer" + }, + "deleteRecoverDesc": { + "message": "Skriv inn din E-postadresse nedenfor for å få tilbake tilgangen til og å slette din konto." + }, + "deleteRecoverEmailSent": { + "message": "Dersom kontoen din eksisterer, har vi sendt deg en E-post med ytterligere instrukser." + }, + "deleteRecoverConfirmDesc": { + "message": "Du har bedt om å slette Bitwarden-kontoen din. Klikk knappen nedenfor for å bekrefte." + }, + "myOrganization": { + "message": "Min organisasjon" + }, + "deleteOrganization": { + "message": "Slett organisasjonen" + }, + "deletingOrganizationContentWarning": { + "message": "Skriv inn hovedpassordet for å bekrefte sletting av $ORGANIZATION$ og alle tilknyttede data. Data i hvelvet i $ORGANIZATION$ inkluderer:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Brukerkontoer vil forbli aktive etter sletting, men vil ikke lenger knyttes til denne organisasjonen." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Sletting av $ORGANIZATION$ er permanent og kan ikke angres.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisasjonen ble slettet" + }, + "organizationDeletedDesc": { + "message": "Organisasjonen og alle dens tilknyttede data ble slettet." + }, + "organizationUpdated": { + "message": "Organisasjonen ble oppdatert" + }, + "taxInformation": { + "message": "Skatteinformasjon" + }, + "taxInformationDesc": { + "message": "Vennligst kontakt kundestøtte for å sende inn (eller oppdatere) skatteinformasjonen til dine fakturaer." + }, + "billingPlan": { + "message": "Funksjonsplan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Endre abonnement", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Oppgrader kontoen din til et annet abonnement ved å fylle inn informasjonen nedenfor. Sørg for at du har en aktiv betalingsmetode lagt til kontoen.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Se faktura" + }, + "downloadInvoice": { + "message": "Last ned faktura" + }, + "verifyBankAccount": { + "message": "Bekreft bankkontoen din" + }, + "verifyBankAccountDesc": { + "message": "Vi har gjort 2 mikroinnskudd i bankkontoen din (Det kan 1-2 virkedager før de dukker opp). Skriv inn disse summene for å bekrefte bankkontoen." + }, + "verifyBankAccountInitialDesc": { + "message": "Betaling med en bankkonto er selvfølgelig bare tilgjengelig til kunder i USA. Du vi bli påkrevd å bekrefte din bankkonto. Vi vil sende deg 2 mikroinnskudd innen 1-2 virkedager. Skriv inn disse summene på din organisasjons regningsside for å bekrefte bankkontoen." + }, + "verifyBankAccountFailureWarning": { + "message": "Å mislykkes i å bekrefte bankkontoen vil føre til en uteblivende betaling og at abonnementet ditt blir skrudd av." + }, + "verifiedBankAccount": { + "message": "Bankkontoen har blitt bekreftet." + }, + "bankAccount": { + "message": "Bankkonto" + }, + "amountX": { + "message": "Sum $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Rutingsnummer", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Kontonummer" + }, + "accountHolderName": { + "message": "Kontoholderens navn" + }, + "bankAccountType": { + "message": "Kontotype" + }, + "bankAccountTypeCompany": { + "message": "Firma" + }, + "bankAccountTypeIndividual": { + "message": "Individuelt (Personlig)" + }, + "enterInstallationId": { + "message": "Skriv inn din installasjons-ID" + }, + "limitSubscriptionDesc": { + "message": "Angi en seteramme for ditt abonnement. Når denne grensen er nådd, vil du ikke kunne invitere nye brukere." + }, + "maxSeatLimit": { + "message": "Maksimal setegrense (valgfritt)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maks. potensielle setekostnader" + }, + "addSeats": { + "message": "Legg til seter", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Fjern seter", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Justeringer av ditt abonnement vil resultere i utsatt endring av dine faktureringsbeløp. Hvis nyinviterte brukere overstiger ditt abonnementssete, vil du umiddelbart få et betalt for ekstra brukere." + }, + "subscriptionUserSeats": { + "message": "Ditt abonnement tillater opptil $COUNT$ brukere.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Begrens abonnement (valgfritt)" + }, + "subscriptionSeats": { + "message": "Abonnements seter" + }, + "subscriptionUpdated": { + "message": "Abonnement er oppdatert" + }, + "additionalOptions": { + "message": "Tilleggsvalg" + }, + "additionalOptionsDesc": { + "message": "For ytterligere hjelp til å administrere ditt abonnement, ta kontakt med kundestøtte." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Justeringer av ditt abonnement vil resultere i utsatt endring av dine faktureringsbeløp. Hvis nyinviterte brukere overstiger ditt abonnementssete, vil du umiddelbart få et betalt for ekstra brukere." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Justeringer av ditt abonnement vil resultere i utsatt endring av dine faktureringsbeløp. Om nyinviterte brukere overskrider ditt abonnementssete, umiddelbart vil du få en skattekostnad for tilleggsbrukerne inntil din plass på $MAX$ er nådd.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Du kan ikke invitere flere enn $COUNT$ brukere uten å oppgradere abonnementet ditt.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Du kan ikke invitere flere enn $COUNT$ brukere uten å oppgradere planen. Kontakt kundestøtte for å oppgradere.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Ditt abonnement tillater totalt $COUNT$ brukere. Din plan er sponset og fakturert til en ekstern organisasjon.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Justeringer av ditt abonnement vil resultere i autorerte endringer av dine regningssummer beløp. Du kan ikke invitere flere enn $COUNT$ brukere uten å øke abonnementssetene.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seter som skal legges til" + }, + "seatsToRemove": { + "message": "Seter som skal fjernes" + }, + "seatsAddNote": { + "message": "Å legge til brukerseter vil føre til justeringer i dine regningssummer og vil umiddelbart trekke på den lagrede betalingsmetoden din. Det første trekket vil bli fordelt utover resten av den nåværende regningsperioden." + }, + "seatsRemoveNote": { + "message": "Å fjerne brukerseter vil føre til justeringer i dine regningssummer som vil bli fordelt som kreditt opp mot ditt neste regningstrekk." + }, + "adjustedSeats": { + "message": "Justerte $AMOUNT$ brukerseter.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Nøkkelen ble oppdatert" + }, + "updateKeyTitle": { + "message": "Oppdater nøkkelen" + }, + "updateEncryptionKey": { + "message": "Oppdater krypteringsnøkkelen" + }, + "updateEncryptionKeyShortDesc": { + "message": "Du bruker for øyeblikket et utdatert krypteringsoppsett." + }, + "updateEncryptionKeyDesc": { + "message": "Vi har byttet over til lengre krypteringsnøkler som sørger for bedre sikkerhet og tilgang til nyere funksjoner. Å oppdatere krypteringsnøkkelen din er raskt og enkelt. Bare skriv inn superpassordet ditt nedenfor. Denne oppdateringen vil etter hvert bli påbudt." + }, + "updateEncryptionKeyWarning": { + "message": "Etter å ha oppdatert krypteringsnøkkelen din, er du påkrevd å logge av og på på alle Bitwarden-appene og -programmene som du bruker for øyeblikket (deriblant mobilappen og nettleserutvidelsene). Å ikke logge av og på igjen (noe som vil laste ned din nye krypteringsnøkkel) kan føre til datakorrumpering. Vi vil forsøke å logge deg av automatisk, men det kan kanskje bli forsinket." + }, + "updateEncryptionKeyExportWarning": { + "message": "Eventuelle krypterte eksporter som du har lagret blir også ugyldig." + }, + "subscription": { + "message": "Abonnement" + }, + "loading": { + "message": "Laster inn" + }, + "upgrade": { + "message": "Oppgrader" + }, + "upgradeOrganization": { + "message": "Oppgrader organisasjonen" + }, + "upgradeOrganizationDesc": { + "message": "Denne egenskapen er ikke tilgjengelig for gratisorganisasjoner. Bytt over til en betalt funksjonsplan for å låse opp flere egenskaper." + }, + "createOrganizationStep1": { + "message": "Lag en organisasjon: Trinn 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Før du lager organisasjonen din, må du først lage en gratis personlig konto." + }, + "refunded": { + "message": "Tilbakebetalt" + }, + "nothingSelected": { + "message": "Du har ikke valgt noe." + }, + "acceptPolicies": { + "message": "Ved å huke av denne boksen sier du deg enig i følgende:" + }, + "acceptPoliciesError": { + "message": "Bruksvilkårene og personvernerklæring er ikke godkjent." + }, + "termsOfService": { + "message": "Tjenestevilkår" + }, + "privacyPolicy": { + "message": "Personvern" + }, + "filters": { + "message": "Filtre" + }, + "vaultTimeout": { + "message": "Pause for hvelvet" + }, + "vaultTimeoutDesc": { + "message": "Velg når hvelvet ditt skal ta pause og utføre den valgte handlingen." + }, + "oneMinute": { + "message": "1 minutt" + }, + "fiveMinutes": { + "message": "5 minutter" + }, + "fifteenMinutes": { + "message": "15 minutter" + }, + "thirtyMinutes": { + "message": "30 minutter" + }, + "oneHour": { + "message": "1 time" + }, + "fourHours": { + "message": "4 timer" + }, + "onRefresh": { + "message": "Ved nettlesergjeninnlasting" + }, + "dateUpdated": { + "message": "Oppdatert den", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Passordet ble oppdatert den", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisasjonen er skrudd av." + }, + "licenseIsExpired": { + "message": "Lisensen har utløpt." + }, + "updatedUsers": { + "message": "Oppdaterte brukere" + }, + "selected": { + "message": "Valgt" + }, + "ownership": { + "message": "Eierskap" + }, + "whoOwnsThisItem": { + "message": "Hvem eier dette elementet?" + }, + "strong": { + "message": "Sterkt", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Bra", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Svakt", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Veldig svakt", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Oppdater også krypteringsnøkkelen til kontoen min" + }, + "rotateEncKeyTitle": { + "message": "Oppdater krypteringsnøkkelen" + }, + "rotateEncKeyConfirmation": { + "message": "Er du sikker på at du vil oppdatere krypteringsnøkkelen til kontoen din?" + }, + "attachmentsNeedFix": { + "message": "Denne oppføringen har gamle fil-vedlegg som må repareres." + }, + "attachmentFixDesc": { + "message": "Dette er et gammelt fil-vedlegg som må repareres. Klikk for å se mer." + }, + "fix": { + "message": "Reparer", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Hvelvet ditt har gamle fil-vedlegg som må repareres før du kan oppdatere krypteringsnøkkelen til kontoen din." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "For å sikre integriteten til krypteringsnøkene dine, vær vennlig å bekrefte brukerens fingeravtrykksfrase før du fortsetter.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Ikke be om bekreftelse av fingeravtrykksfrase flere ganger", + "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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-nøkkel" + }, + "apiKeyDesc": { + "message": "API-nøkkelen din kan brukes til å godkjenne til den offentlige API-en for Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Hvis du roterer API-nøkkel, blir den forrige nøkkelen ugyldig. Du kan rotere API-nøkkelen din hvis du mener at den nåværende nøkkelen ikke lenger er trygt å bruke." + }, + "apiKeyWarning": { + "message": "Din API-nøkkel har full tilgang til organisasjonen. Det bør holdes hemmelig." + }, + "userApiKeyDesc": { + "message": "API-nøkkelen din kan brukes til å godkjenne i Bitwarden sin CLI." + }, + "userApiKeyWarning": { + "message": "Din API-nøkkel er en alternativ autentiseringsmekanisme. Det bør holdes hemmelig." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0-klientinformasjon", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Se API-nøkkel" + }, + "rotateApiKey": { + "message": "Roter API-nøkkel" + }, + "selectOneCollection": { + "message": "Du må velge minst én samling." + }, + "couldNotChargeCardPayInvoice": { + "message": "Vi kunne ikke belaste kortet ditt. Vennligst se og betal den ubetalte fakturaen nedenfor." + }, + "inAppPurchase": { + "message": "Kjøp i appen" + }, + "cannotPerformInAppPurchase": { + "message": "Du kan ikke utføre denne handlingen mens du bruker en betalingsmetode for kjøp i appen." + }, + "manageSubscriptionFromStore": { + "message": "Du kan bare styre abonnementet ditt fra nettbutikken du kjøpte i appen." + }, + "minLength": { + "message": "Minimumslengde" + }, + "clone": { + "message": "Klon" + }, + "masterPassPolicyDesc": { + "message": "Sett minimumskrav til hovedpassordets styrke." + }, + "twoStepLoginPolicyDesc": { + "message": "Krev at brukere konfigurere totrinns pålogging på sine personlige kontoer." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisasjonsmedlemmer som ikke har to-trinns pålogging aktivert for sin personlige konto, vil bli fjernet fra organisasjonen og vil motta en e-post som melder dem om endringen." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Du er medlem av minst én organisasjon, som krever to-trinns pålogging for å være aktivert på kontoen din. Hvis du deaktiverer alle leverandører av totrinns pålogging, blir du automatisk fjernet fra disse organisasjonene." + }, + "passwordGeneratorPolicyDesc": { + "message": "Sett minimumskrav for konfigurasjon av passordgenerator." + }, + "passwordGeneratorPolicyInEffect": { + "message": "En eller flere av organisasjonens vilkår påvirker generatorinnstillingene dine." + }, + "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 er $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Inneholder ett eller flere store tegn" + }, + "policyInEffectLowercase": { + "message": "Inneholder ett eller flere små tegn" + }, + "policyInEffectNumbers": { + "message": "Inneholde 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." + }, + "minimumNumberOfWords": { + "message": "Minimum antall ord" + }, + "defaultType": { + "message": "Standardtype" + }, + "userPreference": { + "message": "Brukerinnstillinger" + }, + "vaultTimeoutAction": { + "message": "Handling ved pause 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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Søk i papirkurven" + }, + "permanentlyDelete": { + "message": "Slett permanent" + }, + "permanentlyDeleteSelected": { + "message": "Slett valgte permanent" + }, + "permanentlyDeleteItem": { + "message": "Slett objektet permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Er du sikker på at du vil slette dette objektet permanent?" + }, + "permanentlyDeletedItem": { + "message": "Slett objektet permanent" + }, + "permanentlyDeletedItems": { + "message": "Slettet objektene permanent" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Du har valgt $COUNT$ objekt(er) som skal slettes permanent. Er du sikker på du vil slette alle disse objektene?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanent slettet objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Gjenopprett" + }, + "restoreSelected": { + "message": "Gjenopprett valgte" + }, + "restoreItem": { + "message": "Gjenopprett objekt" + }, + "restoredItem": { + "message": "Gjenopprettet objekt" + }, + "restoredItems": { + "message": "Gjenopprettete objekter" + }, + "restoreItemConfirmation": { + "message": "Er du sikker på at du vil gjenopprette dette objektet?" + }, + "restoreItems": { + "message": "Gjenopprett objekter" + }, + "restoreSelectedItemsDesc": { + "message": "Du har valgt $COUNT$ objekt(er) som skal gjenopprettes. Er du sikker på at du vil gjenopprette alle disse objektene?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Gjenopprettet objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Hvis du logger ut, fjerner du all tilgang til hvelvet ditt og krever online godkjenning etter tidsavbrudd. Er du sikker på at du vil bruke denne innstillingen?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bekreftelse av handling ved pause" + }, + "hidePasswords": { + "message": "Skjul passord" + }, + "countryPostalCodeRequiredDesc": { + "message": "Vi krever denne informasjonen for beregning av merverdiavgift og finansiell rapportering." + }, + "includeVAT": { + "message": "Inkluder MVA-informasjon (valgfritt)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Skatteinformasjonen er oppdatert." + }, + "setMasterPassword": { + "message": "Angi hovedpassord" + }, + "ssoCompleteRegistration": { + "message": "For å fullføre innloggingen med SSO, angi et superpassord for å få tilgang til og beskytte hvelvet ditt." + }, + "identifier": { + "message": "Identifikator" + }, + "organizationIdentifier": { + "message": "Organisasjons identifikator" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Logg inn ved hjelp av din organisasjons eneste signalportal. Angi din organisasjons identifikator for å begynne." + }, + "enterpriseSingleSignOn": { + "message": "Bedriftsinnlogging (SSO)" + }, + "ssoHandOff": { + "message": "Du kan nå lukke denne fanen og fortsette i utvidelsen." + }, + "includeAllTeamsFeatures": { + "message": "Alle Lag funksjoner, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO autentisering via SAML2.0 og OpenID Koble til" + }, + "includeEnterprisePolicies": { + "message": "Bedriftens retningslinjer" + }, + "ssoValidationFailed": { + "message": "SSO validering feilet" + }, + "ssoIdentifierRequired": { + "message": "Organisasjonsidentifikator er påkrevd." + }, + "unlinkSso": { + "message": "Koble fra SSO" + }, + "unlinkSsoConfirmation": { + "message": "Er du sikker på at du vil oppheve koblingen til SSO for denne organisasjonen?" + }, + "linkSso": { + "message": "Lenke SSO" + }, + "singleOrg": { + "message": "Enkel organisasjon" + }, + "singleOrgDesc": { + "message": "Begrense brukere fra å kunne bli med i andre organisasjoner." + }, + "singleOrgBlockCreateMessage": { + "message": "Din nåværende organisasjon har en policy som ikke lar deg bli med i mer enn én organisasjon. Kontakt din organisasjons admins eller registrer deg fra en annen Bitwarden-konto." + }, + "singleOrgPolicyWarning": { + "message": "Organisasjonsmedlemmer som ikke er eiere eller administratorer, og som allerede er medlem av en annen organisasjon, blir fjernet fra din organisasjon." + }, + "requireSso": { + "message": "Single på-på-autentisering" + }, + "requireSsoPolicyDesc": { + "message": "Krev brukere å logge inn med Enterprise Single Sign-On metoden." + }, + "prerequisite": { + "message": "Forutsetninger" + }, + "requireSsoPolicyReq": { + "message": "Virksomhetspolitikken for enkeltorganisasjoner må være i stand til å aktivere denne politikken." + }, + "requireSsoPolicyReqError": { + "message": "Retningslinjer for én organisasjon ikke aktivert." + }, + "requireSsoExemption": { + "message": "Organisasjonens eiere og administratorer er unntatt fra denne policyens håndheving." + }, + "sendTypeFile": { + "message": "Fil" + }, + "sendTypeText": { + "message": "Tekst" + }, + "createSend": { + "message": "Opprett ny Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Slett Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Er du sikker på at du vil slette denne Send-en?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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 ikke brukere 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 tilganger" + }, + "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." + }, + "disabled": { + "message": "Deaktivert" + }, + "sendLink": { + "message": "Send lenke", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopier Send-lenke", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Fjern passord" + }, + "removedPassword": { + "message": "Fjernet passord" + }, + "removePasswordConfirmation": { + "message": "Er du sikker på at du vil fjerne passordet?" + }, + "hideEmail": { + "message": "Skjul min e-postadresse fra mottakere." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Alle Send-er" + }, + "maxAccessCountReached": { + "message": "Maksimalt antall tilganger nådd", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Venter på sletting" + }, + "expired": { + "message": "Utløpt" + }, + "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." + }, + "sendProtectedPassword": { + "message": "Send er beskyttet med et passord. Skriv inn passordet nedenfor for å fortsette.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Vet du ikke passordet? Be avsender om nødvendig tilgang til denne Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Denne sendingen er skjult som standard. Du kan velge å vise den ved å bruke knappen nedenfor.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Last ned fil" + }, + "sendAccessUnavailable": { + "message": "Sende du prøver å få tilgang eksisterer ikke, eller er ikke lenger tilgjengelig.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Filen knyttet til sendingen ble ikke funnet.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Det er ingen Sends å vise.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Nødtilgang" + }, + "emergencyAccessDesc": { + "message": "Gi og behandle nødstilgang for betrodde kontakter. Pålitelige kontakter kan be om tilgang til enten vis eller overta kontoen din i tilfelle en nødssituasjon. Besøk vår hjelpeside for mer informasjon og detaljer om hvordan null-kunnskapsdeling fungerer." + }, + "emergencyAccessOwnerWarning": { + "message": "Du er en eier av en eller flere organisasjoner. Hvis du gir deg tilgang til en nødkontakt, vil de kunne bruke alle dine rettigheter som eier etter at du har gått over." + }, + "trustedEmergencyContacts": { + "message": "Betrodde nødkontakter" + }, + "noTrustedContacts": { + "message": "Du har ikke lagt til noen nødkontakter ennå. Inviter en betrodd kontakt for å komme i gang." + }, + "addEmergencyContact": { + "message": "Legg til nødkontakt" + }, + "designatedEmergencyContacts": { + "message": "Utpekt som nødkontakt" + }, + "noGrantedAccess": { + "message": "Du har ikke blitt utpekt som nødkontakt for noen enda." + }, + "inviteEmergencyContact": { + "message": "Inviter nødkontakt" + }, + "editEmergencyContact": { + "message": "Rediger nødkontakt" + }, + "inviteEmergencyContactDesc": { + "message": "Inviter en ny nødkontakt ved å skrive inn e-postadressen til deres Bitwarden-konto nedenfor. Dersom de ikke allerede har en Bitwarden-konto, vil de bli bedt om å opprette en ny konto." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Nødtilgang initiert" + }, + "emergencyAccessRecoveryApproved": { + "message": "Nødtilgang godkjent" + }, + "viewDesc": { + "message": "Kan se alle objekter i hvelvet ditt." + }, + "takeover": { + "message": "Overtakelse" + }, + "takeoverDesc": { + "message": "Kan tilbakestille kontoen med et nytt hovedpassord." + }, + "waitTime": { + "message": "Ventetid" + }, + "waitTimeDesc": { + "message": "Tid nødvendig før det gis automatisk tilgang." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dager", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invitert bruker." + }, + "acceptEmergencyAccess": { + "message": "Du har blitt invitert til å bli en nødkontakt for brukeren som er listet ovenfor. For å godkjenne invitasjonen, må du logge på eller lage en ny Bitwarden-konto." + }, + "emergencyInviteAcceptFailed": { + "message": "Klarte ikke å godkjenne invitasjonen. Be brukeren om å sende en ny invitasjon." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Kunne ikke godkjenne invitasjonen. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Du får tilgang til nødalternativer for denne brukeren etter at identiteten din er bekreftet. Vi vil sende deg en e-post når det skjer." + }, + "requestAccess": { + "message": "Be om tilgang" + }, + "requestAccessConfirmation": { + "message": "Er du sikker på at du vil be om nødtilgang? Du vil få tilgang etter $WAITTIME$ dag(er) eller når brukeren manuelt godkjenner forespørselen.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Nødadgang forespurt for $USER$. Vi varsler deg via e-post når det er mulig å fortsette prosessen.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Godkjenn" + }, + "reject": { + "message": "Avvis" + }, + "approveAccessConfirmation": { + "message": "Er du sikker på at du vil godkjenne nødtilgang? Dette vil tillate $USER$ til $ACTION$ kontoen din.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Nødtilgang er godkjent." + }, + "emergencyRejected": { + "message": "Nødtilgang avvist" + }, + "passwordResetFor": { + "message": "Passord tilbakestille for $USER$. Du kan nå logge inn ved å bruke det nye passordet.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personlig eierskap" + }, + "personalOwnershipPolicyDesc": { + "message": "Krev at brukere lagrer hvelvgjenstander i en organisasjon ved å fjerne den personlige eierskapsmodulen." + }, + "personalOwnershipExemption": { + "message": "Organisasjonens eiere og administratorer er unntatt fra denne policyens håndheving." + }, + "personalOwnershipSubmitError": { + "message": "På grunn av en virksomhetsregel er du begrenset fra å lagre gjenstander til ditt personlige hvelv. Endre eierskapet til en organisasjon og velg blant tilgjengelige samlinger." + }, + "disableSend": { + "message": "Deaktiver Send" + }, + "disableSendPolicyDesc": { + "message": "Ikke tillat brukere å opprette eller redigere en Bitwarden Send. Å slette en eksisterende Send er fortsatt tillatt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organisasjonsbrukere som kan håndtere organisasjonens regler, er unntatt fra håndheving av denne reglen." + }, + "sendDisabled": { + "message": "Send deaktivert", + "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." + }, + "sendOptions": { + "message": "Alternativer for sending", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Angi alternativer for oppretting og redigering av Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organisasjonsbrukere som kan håndtere organisasjonens regler, er unntatt fra håndheving av denne reglen." + }, + "disableHideEmail": { + "message": "Ikke tillat brukere å skjule sin e-postadresse fra mottakere når de oppretter eller redigerer en Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Følgende organisasjonspolicyer er for tiden i virkning:" + }, + "sendDisableHideEmailInEffect": { + "message": "Brukere kan ikke skjule sin e-postadresse fra mottakere når de oppretter eller redigerer en Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modifisert policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Pris på plan" + }, + "estimatedTax": { + "message": "Beregnet avgift" + }, + "custom": { + "message": "Egendefinert" + }, + "customDesc": { + "message": "Tillater mer granatær kontroll med brukertillatelser for avanserte konfigurasjoner." + }, + "permissions": { + "message": "Rettigheter" + }, + "accessEventLogs": { + "message": "Få tilgang til hendelseslogger" + }, + "accessImportExport": { + "message": "Få tilgang til importering/eksportering" + }, + "accessReports": { + "message": "Få tilgang til rapporter" + }, + "missingPermissions": { + "message": "Du mangler de nødvendige tillatelsene for å utføre denne handlingen." + }, + "manageAllCollections": { + "message": "Administrer alle samlinger" + }, + "createNewCollections": { + "message": "Opprett nye samlinger" + }, + "editAnyCollection": { + "message": "Rediger enhver samling" + }, + "deleteAnyCollection": { + "message": "Slett enhver samling" + }, + "manageAssignedCollections": { + "message": "Administrer alle tildelte samlinger" + }, + "editAssignedCollections": { + "message": "Rediger tildelte samlinger" + }, + "deleteAssignedCollections": { + "message": "Slett tildelte samlinger" + }, + "manageGroups": { + "message": "Administrer grupper" + }, + "managePolicies": { + "message": "Administrer vilkår" + }, + "manageSso": { + "message": "Administrer SSO" + }, + "manageUsers": { + "message": "Administrer brukere" + }, + "manageResetPassword": { + "message": "Behandle tilbakestilling av passord" + }, + "disableRequiredError": { + "message": "Du må manuelt deaktivere $POLICYNAME$ policyen før denne policyen kan deaktiveres.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "En bedriftsretningslinje påvirker dine eierskapsinnstillinger." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "En organisasjonspolicy har deaktivert import av gjenstander til ditt personlige hvelv." + }, + "personalOwnershipCheckboxDesc": { + "message": "Deaktiver personlig eierskap for organisasjonsbrukere" + }, + "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." + }, + "sendNameDesc": { + "message": "Et vennlig navn for å beskrive dette 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 å send." + }, + "sendFileDesc": { + "message": "Filen du vil send." + }, + "copySendLinkOnSave": { + "message": "Kopier lenken for å dele denne Send-en til utklippstavlen min ved lagring." + }, + "sendLinkLabel": { + "message": "Send lenke", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send sender sensitiv, midlertidig informasjon til andre enkelt og sikkert.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Lær mer om", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Del tekst eller filer direkte med hvem som helst." + }, + "sendVaultCardLearnMore": { + "message": "Lær mer", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "se", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "hvordan det fungerer", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "eller", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "prøv det nå", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "eller", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "registrer deg", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "for å prøve det i dag.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden-bruker $USER_IDENTIFIER$ delte følgende med deg", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Bitwarden-brukeren som opprettet denne sendingen, har valgt å skjule deres e-postadresse. Du bør forsikre deg om at du stoler på kilden til denne lenken før du bruker eller laster ned innholdet.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Utløpsdatoen angitt er ikke gyldig." + }, + "deletionDateIsInvalid": { + "message": "Slettingsdatoen som er gitt er ikke gyldig." + }, + "expirationDateAndTimeRequired": { + "message": "Utløps dato og tid er påkrevd." + }, + "deletionDateAndTimeRequired": { + "message": "Det kreves en slettingsdato og -tid." + }, + "dateParsingError": { + "message": "Det oppstod en feil ved lagring av slettingen og utløpsdatoene." + }, + "webAuthnFallbackMsg": { + "message": "For å verifisere din 2FA vennligst klikk knappen nedenfor." + }, + "webAuthnAuthenticate": { + "message": "Autentiser WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn støttes ikke i denne nettleseren." + }, + "webAuthnSuccess": { + "message": "WebAuthn bekreftet vellykket! Du kan lukke denne fanen." + }, + "hintEqualsPassword": { + "message": "Passordhintet ditt kan ikke være det samme som passordet ditt." + }, + "enrollPasswordReset": { + "message": "Registrer i tilbakestilling av passord" + }, + "enrolledPasswordReset": { + "message": "Registrert i tilbakestilling av passord" + }, + "withdrawPasswordReset": { + "message": "Trekk tilbake fra tilbakestilling av passord" + }, + "enrollPasswordResetSuccess": { + "message": "Innrulleringssuksess!" + }, + "withdrawPasswordResetSuccess": { + "message": "Tilbaketrekking vellykket!" + }, + "eventEnrollPasswordReset": { + "message": "Bruker $ID$ ble valgt for hjelp til å tilbakestille passordet.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Brukeren $ID$ trakk seg ved hjelp av hjelp for tilbakestilling av passord.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Superpassordtilbakestilling for brukeren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Tilbakestill kobling for brukeren $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logget inn med Sso for første gang", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Tilbakestill passord" + }, + "resetPasswordLoggedOutWarning": { + "message": "Å fortsette vil logge $NAME$ av deres nåværende økt, og krever at de logger på igjen. Aktive økter på andre enheter kan forbli aktive i opptil en time.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "denne brukeren" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "En eller flere av organisasjonens vilkår krever hovedpassordet ditt for å oppfylle følgende krav:" + }, + "resetPasswordSuccess": { + "message": "Tilbakestilling av passord vellykket!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Ikrafttredelse vil tillate organisasjonsadministratorer å endre hovedpassordet ditt. Er du sikker på at du vil inkludere?" + }, + "resetPasswordPolicy": { + "message": "Tilbakestill hovedpassord" + }, + "resetPasswordPolicyDescription": { + "message": "Tillat administratorer i organisasjonen å tilbakestille organisasjonens hovedpassord." + }, + "resetPasswordPolicyWarning": { + "message": "Brukere i organisasjonen må bytte selv eller bli automatisk registrert før administratorer kan tilbakestille sitt hovedpassord." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatisk registrering" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Alle brukere vil automatisk bli registrert i tilbakestilling av passord når deres invitasjon er akseptert og vil ikke kunne trekke tilbake." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Brukere som allerede er i organisasjonen, vil ikke komme tilbake med tilbakestilling av passord. De må kjøre selv før administratorer kan tilbakestille passordet sitt." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Krever at nye brukere inkluderes automatisk" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Denne organisasjonen har en virksomhet som automatisk registrerer deg innen tilbakestilling av passord. Innsending vil gjøre det mulig for organisasjonsadministratorer å endre passordet ditt." + }, + "resetPasswordOrgKeysError": { + "message": "Organisasjonsnøkler respons er null" + }, + "resetPasswordDetailsError": { + "message": "Tilbakestilling av passorddetaljer er null" + }, + "trashCleanupWarning": { + "message": "Elementer som har vært i papirkurv mer enn 30 dager vil automatisk bli slettet." + }, + "trashCleanupWarningSelfHosted": { + "message": "Elementer som har vært i papirkurven for en stund vil bli slettet automatisk." + }, + "passwordPrompt": { + "message": "Forespørsel om hovedpassord på nytt" + }, + "passwordConfirmation": { + "message": "Superpassord bekreftelse" + }, + "passwordConfirmationDesc": { + "message": "Denne handlingen er beskyttet. For å fortsette, skriv inn superpassordet på nytt for å bekrefte identiteten din." + }, + "reinviteSelected": { + "message": "Send invitasjoner på nytt" + }, + "noSelectedUsersApplicable": { + "message": "Denne handlingen er ikke relevant for noen av de valgte brukerne." + }, + "removeUsersWarning": { + "message": "Er du sikker på at du vil fjerne følgende brukere? Prosessen kan ta noen sekunder å fullføre og ikke kan avbrytes eller avbrytes." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Velg et tema for netthvelvet ditt." + }, + "themeSystem": { + "message": "Bruk systemtema" + }, + "themeDark": { + "message": "Mørkt" + }, + "themeLight": { + "message": "Lyst" + }, + "confirmSelected": { + "message": "Bekreft valgte" + }, + "bulkConfirmStatus": { + "message": "Massehandling status" + }, + "bulkConfirmMessage": { + "message": "Bekreftet vellykket." + }, + "bulkReinviteMessage": { + "message": "Reinvitasjon vellykket." + }, + "bulkRemovedMessage": { + "message": "Fjernet" + }, + "bulkFilteredMessage": { + "message": "Unntatt dette, gjelder ikke for dette tiltaket." + }, + "fingerprint": { + "message": "Fingeravtrykk" + }, + "removeUsers": { + "message": "Fjern brukere" + }, + "error": { + "message": "Feil" + }, + "resetPasswordManageUsers": { + "message": "Behandle brukere må også være aktivert med tilgang for 'Administrere passord'-tilbakestilling" + }, + "setupProvider": { + "message": "Oppsett av søkeleverandør" + }, + "setupProviderLoginDesc": { + "message": "Du har blitt invitert til å sette opp en ny leverandør. For å fortsette, må du logge på eller lage en ny Bitwarden-konto." + }, + "setupProviderDesc": { + "message": "Skriv inn opplysningene nedenfor for å fullføre leverandøroppsettet. Kontakt kundestøtte hvis du har spørsmål." + }, + "providerName": { + "message": "Navn på søkeleverandør" + }, + "providerSetup": { + "message": "Leverandøren har blitt satt opp." + }, + "clients": { + "message": "Klienter" + }, + "providerAdmin": { + "message": "Administrator for søkeleverandør" + }, + "providerAdminDesc": { + "message": "Høyestetilgangsbrukeren som kan behandle alle aspekter av leverandøren i tillegg til tilgang og styring av klientorganisasjoner." + }, + "serviceUser": { + "message": "Tjeneste bruker" + }, + "serviceUserDesc": { + "message": "Tjenestebrukere kan få tilgang til og administrere alle kundeorganisasjoner." + }, + "providerInviteUserDesc": { + "message": "Inviter en ny bruker til leverandøren din ved å skrive inn E-postadressen til Bitwarden-kontoen deres nedenfor. Dersom de ikke allerede har en Bitwarden-konto, vil de bli bedt om å opprette en ny konto." + }, + "joinProvider": { + "message": "Koble til leverandør" + }, + "joinProviderDesc": { + "message": "Du har blitt invitert til å bli med i leverandøren som er listet opp ovenfor. For å godkjenne invitasjonen, må du enten logge på eller lage en ny Bitwarden-konto." + }, + "providerInviteAcceptFailed": { + "message": "Klarte ikke å godkjenne invitasjonen. Spør en leverandøradministrator om å sende en ny invitasjon." + }, + "providerInviteAcceptedDesc": { + "message": "Du kan få tilgang til denne leverandøren så fort en administrator godkjenner ditt medlemskap. Vi vil sende deg E-post når det skjer." + }, + "providerUsersNeedConfirmed": { + "message": "Du har brukere som har akseptert sin invitasjon, men som fortsatt må bekreftes. Brukere vil ikke ha tilgang til leverandøren før de er bekreftet." + }, + "provider": { + "message": "Leverandør" + }, + "newClientOrganization": { + "message": "Ny klientorganisasjon" + }, + "newClientOrganizationDesc": { + "message": "Opprett en ny bestillerorganisasjon som vil være tilknyttet deg som leverandør. Du vil kunne få tilgang til og styre denne organisasjonen." + }, + "addExistingOrganization": { + "message": "Legg til eksisterende organisasjon" + }, + "myProvider": { + "message": "Min leverandør" + }, + "addOrganizationConfirmation": { + "message": "Er du sikker på at du vil legge til $ORGANIZATION$ som klient til $PROVIDER$-?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organisasjonen ble lagt til i leverandøren" + }, + "accessingUsingProvider": { + "message": "Tilgang til organisasjon med leverandør $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Leverandør er deaktivert." + }, + "providerUpdated": { + "message": "Leverandøren er oppdatert" + }, + "yourProviderIs": { + "message": "Din leverandør er $PROVIDER$. De har administrative og faktureringsrettigheter for din organisasjon.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Organisasjonen $ORGANIZATION$ har blitt koblet fra leverandøren din.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Er du sikker på at du vil fjerne denne organisasjonen? Organisasjonen vil fortsette å eksistere, men vil ikke lenger bli administrert av leverandøren." + }, + "add": { + "message": "Legg til" + }, + "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 hovedpassordet ditt 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." + }, + "masterPasswordInvalidWarning": { + "message": "Hovedpassordet ditt oppfyller ikke kravene i denne organisasjonen. For å bli med i organisasjonen, må du oppdatere hovedpassordet ditt nå. Å fortsette vil logge deg ut av din nåværende økt, og krever at du logger deg på igjen. Aktive økter på andre enheter kan forbli aktive i opptil en time." + }, + "maximumVaultTimeout": { + "message": "Tidsavbrudd i hvelvet" + }, + "maximumVaultTimeoutDesc": { + "message": "Konfigurere en maks tidsavbrudd for hvelvet for alle brukere." + }, + "maximumVaultTimeoutLabel": { + "message": "Maksimal hvelv tidsavbrudd" + }, + "invalidMaximumVaultTimeout": { + "message": "Ugyldig maksimal hvelv tidsavbrudd." + }, + "hours": { + "message": "Åpningstider" + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Egendefinert hvelv tidsavbrudd" + }, + "vaultTimeoutToLarge": { + "message": "Tidsavbrudd i hvelvet ditt overskrider begrensningen fastsatt av organisasjonen din." + }, + "disablePersonalVaultExport": { + "message": "Deaktivere personlig hvelv eksport" + }, + "disablePersonalVaultExportDesc": { + "message": "Forbud brukere fra å eksportere sine private hvelvdataer." + }, + "vaultExportDisabled": { + "message": "Hvelveksportering er skrudd av" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flere regler i organisasjonsoppsettet forhindrer deg i å eksportere ditt personlige hvelv." + }, + "selectType": { + "message": "Velg SSO-type" + }, + "type": { + "message": "Skriv" + }, + "openIdConnectConfig": { + "message": "OpenID tilkobling konfigurasjon" + }, + "samlSpConfig": { + "message": "SAML tjenesteleverandør konfigurasjon" + }, + "samlIdpConfig": { + "message": "SAML ID-leverandør konfigurasjon" + }, + "callbackPath": { + "message": "Sti for tilbakeringing" + }, + "signedOutCallbackPath": { + "message": "Logget av tilbakeringingsbanen" + }, + "authority": { + "message": "Autoritet" + }, + "clientId": { + "message": "Klient-ID" + }, + "clientSecret": { + "message": "Klienthemmelighet" + }, + "metadataAddress": { + "message": "Metadataadresse" + }, + "oidcRedirectBehavior": { + "message": "OIDC omdirigerer oppførsel" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Hent claims fra endpoint for brukeropplysninger" + }, + "additionalScopes": { + "message": "Egendefinerte Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Egendefinerte bruker-ID Claim-typer" + }, + "additionalEmailClaimTypes": { + "message": "E-post Claim-typer" + }, + "additionalNameClaimTypes": { + "message": "Egendefinerte navne claim-typer" + }, + "acrValues": { + "message": "Bedt om verdier for Authentication Context Class Reference" + }, + "expectedReturnAcrValue": { + "message": "Forventet \"acr\"-claimverdi i svar" + }, + "spEntityId": { + "message": "SP Enhets-ID" + }, + "spMetadataUrl": { + "message": "'SAML 2.0'-metadata-URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Navne-ID-format" + }, + "spOutboundSigningAlgorithm": { + "message": "Utgående signeringsalgoritme" + }, + "spSigningBehavior": { + "message": "Signeringsatferd" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum innkommende signeringsalgoritme" + }, + "spWantAssertionsSigned": { + "message": "Forvent signerte assertions" + }, + "spValidateCertificates": { + "message": "Valider sertifikater" + }, + "idpEntityId": { + "message": "Enhets-ID" + }, + "idpBindingType": { + "message": "Bindingstype" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign-On tjeneste URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out-tjeneste URL" + }, + "idpX509PublicCert": { + "message": "X509 offentlig sertifikat" + }, + "idpOutboundSigningAlgorithm": { + "message": "Utgående signeringsalgoritme" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Tillat uoppfordret godkjennelsessvar" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Tillat utgående utloggingsforespørsler" + }, + "idpSignAuthenticationRequests": { + "message": "Signér autentiseringsforespørseler" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On konfigurasjon ble lagret." + }, + "sponsoredFamilies": { + "message": "Gratis Bitwarden Familier" + }, + "sponsoredFamiliesEligible": { + "message": "Du og din familie er kvalifisert for Free Bitwarden Familier. Løs inn med din personlige e-post for å holde dataene dine sikre, selv om du ikke er på jobb." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Løs inn din Free Bitwarden for Familier-abonnement i dag for å holde dataene sikre, selv om du ikke er på jobb." + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden for familier-abonnementet inkluderer" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premiumtilgang for opptil 6 brukere" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Delte samlinger til familie-hemmeligheter" + }, + "badToken": { + "message": "Lenken er ikke lenger gyldig. Vennligst ha sponsor på nytt tilbudet." + }, + "reclaimedFreePlan": { + "message": "Ny gratis plan" + }, + "redeem": { + "message": "Løs inn" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Velg den organisasjonen du ønsker å ha sponset" + }, + "familiesSponsoringOrgSelect": { + "message": "Hvilket gratis familier tilbyr deg å innløse?" + }, + "sponsoredFamiliesEmail": { + "message": "Skriv inn din personlige e-post til Bitwarden sin familier" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Hvis du forlater eller fjernes fra sponsor organisasjonen, vil din familieplan utløpe etter utløpet av faktureringsperioden." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Godta tilbudet til en eksisterende organisasjon eller opprett en ny Familie-organisasjon." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Du har blitt tilbudt en gratis Bitwarden Familier Planlegg-organisasjon. For å fortsette må du logge inn på kontoen som mottok tilbudet." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Tilbudet kan ikke godtas. Vennligst send tilbuds-e-posten fra din virksomhetskonto, og forsøk igen." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Kan ikke godta tilbudet. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Aksepter gratis Bitwarden Familier" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Gratis Bitwarden Familier-tilbud er innløst" + }, + "redeemed": { + "message": "Innløst" + }, + "redeemedAccount": { + "message": "Konto innløst" + }, + "revokeAccount": { + "message": "Opphev konto $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Send sponsorat-e-post til $NAME$ sponsorat på nytt", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Gratis Familier-abonnement" + }, + "redeemNow": { + "message": "Løs inn nå" + }, + "recipient": { + "message": "Mottaker" + }, + "removeSponsorship": { + "message": "Fjern sponsorat" + }, + "removeSponsorshipConfirmation": { + "message": "Etter å ha fjernet en sponsor, vil du være ansvarlig for dette abonnementet og relaterte fakturaer. Er du sikker på at du vil fortsette?" + }, + "sponsorshipCreated": { + "message": "Sponsor fjernet" + }, + "revoke": { + "message": "Tilbakekall" + }, + "emailSent": { + "message": "E-post sendt" + }, + "revokeSponsorshipConfirmation": { + "message": "Etter at kontoen er fjernet, vil Familier-organisasjonens eier bli ansvarlig for dette abonnementet og relaterede fakturaer. Er du sikker på at du vil fortsette?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsor fjernet" + }, + "ssoKeyConnectorUnavailable": { + "message": "Kan ikke nå nøkkelkontakt. Prøv igjen senere." + }, + "keyConnectorUrl": { + "message": "Tast Connector URL" + }, + "sendVerificationCode": { + "message": "Send en bekreftelseskode til E-postadressen 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 bekreftelseskode" + }, + "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 organisasjonen" + }, + "removeMasterPassword": { + "message": "Fjern hovedpassord" + }, + "removedMasterPassword": { + "message": "Hovedpassordet er fjernet." + }, + "allowSso": { + "message": "Tillat SSO-autentisering" + }, + "allowSsoDesc": { + "message": "Når du er konfigurert, vil konfigurasjonen din bli lagret, og medlemmer vil kunne godkjenne med deres legitimasjon fra leverandøren." + }, + "ssoPolicyHelpStart": { + "message": "Skru på", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO godkjenningspolicy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "for å få alle medlemmer til å logge inn med SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO-autentisering og Enslig organisasjons politikk er nødvendig for å sette opp nøkkel Connector dekryptering." + }, + "memberDecryptionOption": { + "message": "Medlem dekrypteringsalternativer" + }, + "memberDecryptionPassDesc": { + "message": "Når de er autentisert, vil medlemmer dekryptere hvelvdataene sine ved å bruke hovedpassordene sine." + }, + "keyConnector": { + "message": "Nøkkel Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Koble innlogging med SSO til din selvbetjente dekrypteringsnøkkelserver. Bruk av dette valget vil ikke medlemmer trenge å bruke Master Passwords for å dekryptere hvelvdataene. Kontakt Bitwarden Support for å lage hjelp." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Logg inn med SSO og Key Connector Decryption\" er aktivert. Denne policyen gjelder bare for eiere og administratorer." + }, + "enabledSso": { + "message": "Skrudde på SSO" + }, + "disabledSso": { + "message": "Skrudde av SSO" + }, + "enabledKeyConnector": { + "message": "Key Connector aktivert" + }, + "disabledKeyConnector": { + "message": "Key Connector deaktivert" + }, + "keyConnectorWarning": { + "message": "Når medlemmer begynner å bruke Key Connector, kan ikke organisasjonen din gå tilbake til hovedpassord-dekryptering. Fortsett kun dersom du er fortrolig med å implementere og administrere en nøkkelserver." + }, + "migratedKeyConnector": { + "message": "Migrert til Key Connector" + }, + "paymentSponsored": { + "message": "Angi en betalingsmetode som skal knyttes til organisationen. Ta det med ro, vi vil ikke belaste deg med mindre du velger ytterligere funksjoner, eller at ditt sponsorat går ut. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Sponsortilbuddet er utgått. Du kan slette organisasjonen du har opprettet for at unngå belastning ved utgangen av din 7-dagers prøveperiode. Ellers kan du lukke denne meldingen for å beholde organisasjonen og påta deg faktureringsansvaret." + }, + "newFamiliesOrganization": { + "message": "Ny Familier-organisation" + }, + "acceptOffer": { + "message": "Aksepter tilbudet" + }, + "sponsoringOrg": { + "message": "Sponsende organisasjon" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Suksess! Key Connector nådd." + }, + "keyConnectorTestFail": { + "message": "Kan ikke nå Key Connector. Sjekk URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Sponsoratet er utgått." + }, + "freeWithSponsorship": { + "message": "GRATIS med sponsorat" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ felt trenger din oppmerksomhet.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 felt ovenfor trenger din oppmerksomhet." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ er obligatorisk.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "obligatorisk" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Kreves hvis enhets-ID ikke er en URL." + }, + "openIdOptionalCustomizations": { + "message": "Valgfrie tilpasninger" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Avskill flere med komma." + }, + "sessionTimeout": { + "message": "Økten ble tidsavbrutt. Vennligst gå tilbake og prøv å logge inn på nytt." + }, + "exportingPersonalVaultTitle": { + "message": "Eksporterer personlig hvelv" + }, + "exportingOrganizationVaultTitle": { + "message": "Eksporterer organisasjonshvelv" + }, + "exportingPersonalVaultDescription": { + "message": "Bare de personlige hvelvets gjenstandene som er knyttet til $EMAIL$ vil bli eksportert. Organisasjonshvelvets gjenstander vil ikke bli inkludert.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Bare organisasjonens hvelv knyttet til $ORGANIZATION$ vil bli eksportert. Personlige hvelvelementer og gjenstander fra andre organisasjoner vil ikke bli inkludert.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Tilbake til rapporter" + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "Hva vil du generere?" + }, + "passwordType": { + "message": "Passordtype" + }, + "regenerateUsername": { + "message": "Regenerer Brukernavn" + }, + "generateUsername": { + "message": "Generer brukernavn" + }, + "usernameType": { + "message": "Brukernavntype" + }, + "plusAddressedEmail": { + "message": "Pluss-adressert e-post", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Bruk e-posttilbyderens sub-adresseringsmuligheter." + }, + "catchallEmail": { + "message": "Catch-all e-post" + }, + "catchallEmailDesc": { + "message": "Bruk domenets konfigurerte catch-all innboks." + }, + "random": { + "message": "Vilkårlig" + }, + "randomWord": { + "message": "Vilkårlig ord" + }, + "service": { + "message": "Tjeneste" + } +} diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json new file mode 100644 index 0000000000..5a01345ba3 --- /dev/null +++ b/apps/web/src/locales/nl/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Webkluis", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Van welke categorie is dit 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": "Nieuwe URI" + }, + "username": { + "message": "Gebruikersnaam" + }, + "password": { + "message": "Wachtwoord" + }, + "newPassword": { + "message": "Nieuw wachtwoord" + }, + "passphrase": { + "message": "Wachtwoordzin" + }, + "notes": { + "message": "Notities" + }, + "customFields": { + "message": "Aangepaste velden" + }, + "cardholderName": { + "message": "Naam kaarthouder" + }, + "number": { + "message": "Kaartnummer" + }, + "brand": { + "message": "Merk" + }, + "expiration": { + "message": "Vervaldatum" + }, + "securityCode": { + "message": "Beveiligingscode (CVV)" + }, + "identityName": { + "message": "Identiteitsnaam" + }, + "company": { + "message": "Bedrijf" + }, + "ssn": { + "message": "Burgerservicenummer" + }, + "passportNumber": { + "message": "Paspoortnummer" + }, + "licenseNumber": { + "message": "Rijbewijsnummer" + }, + "email": { + "message": "E-mailadres" + }, + "phone": { + "message": "Telefoonnummer" + }, + "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" + }, + "title": { + "message": "Aanhef" + }, + "mr": { + "message": "Dhr." + }, + "mrs": { + "message": "Mevr." + }, + "ms": { + "message": "Mej." + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Vervalmaand" + }, + "expirationYear": { + "message": "Vervaljaar" + }, + "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." + }, + "remove": { + "message": "Verwijderen" + }, + "unassigned": { + "message": "Niet toegewezen" + }, + "noneFolder": { + "message": "Geen map", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Map toevoegen" + }, + "editFolder": { + "message": "Map bewerken" + }, + "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." + }, + "never": { + "message": "Nooit" + }, + "toggleVisibility": { + "message": "Zichtbaarheid wisselen" + }, + "toggleCollapse": { + "message": "Inklappen/uitklappen", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Wachtwoord genereren" + }, + "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 datalekken. Het kan veilig gebruikt worden." + }, + "save": { + "message": "Opslaan" + }, + "cancel": { + "message": "Annuleren" + }, + "canceled": { + "message": "Geannuleerd" + }, + "close": { + "message": "Sluiten" + }, + "delete": { + "message": "Verwijderen" + }, + "favorite": { + "message": "Favoriet" + }, + "unfavorite": { + "message": "Verwijderen uit favorieten" + }, + "edit": { + "message": "Bewerken" + }, + "searchCollection": { + "message": "Verzameling doorzoeken" + }, + "searchFolder": { + "message": "Map doorzoeken" + }, + "searchFavorites": { + "message": "Favorieten doorzoeken" + }, + "searchType": { + "message": "Categorie doorzoeken", + "description": "Search item type" + }, + "searchVault": { + "message": "Kluis doorzoeken" + }, + "allItems": { + "message": "Alle Items" + }, + "favorites": { + "message": "Favorieten" + }, + "types": { + "message": "Categorieën" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Kaart" + }, + "typeIdentity": { + "message": "Identiteit" + }, + "typeSecureNote": { + "message": "Veilige notitie" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Kaarten" + }, + "typeIdentityPlural": { + "message": "Identiteiten" + }, + "typeSecureNotePlural": { + "message": "Beveiligde notities" + }, + "folders": { + "message": "Mappen" + }, + "collections": { + "message": "Verzamelingen" + }, + "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" + }, + "shared": { + "message": "Gedeeld" + }, + "attachments": { + "message": "Bijlagen" + }, + "select": { + "message": "Selecteren" + }, + "addItem": { + "message": "Item toevoegen" + }, + "editItem": { + "message": "Item bewerken" + }, + "viewItem": { + "message": "Item weergeven" + }, + "ex": { + "message": "bijv.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Overig" + }, + "share": { + "message": "Delen" + }, + "moveToOrganization": { + "message": "Naar organisatie verplaatsen" + }, + "valueCopied": { + "message": "$VALUE$ gekopieerd", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Waarde kopiëren", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Wachtwoord kopiëren", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Gebruikersnaam kopiëren", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Nummer Kopiëren", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Beveiligingscode kopiëren", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "URI kopiëren", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mijn kluis" + }, + "vault": { + "message": "Kluis" + }, + "moveSelectedToOrg": { + "message": "Selectie naar organisatie verplaatsen" + }, + "deleteSelected": { + "message": "Selectie verwijderen" + }, + "moveSelected": { + "message": "Selectie verplaatsen" + }, + "selectAll": { + "message": "Alles selecteren" + }, + "unselectAll": { + "message": "Alles deselecteren" + }, + "launch": { + "message": "Starten" + }, + "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." + }, + "addedItem": { + "message": "Item is toegevoegd" + }, + "editedItem": { + "message": "Item is bewerkt" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ verplaatst naar $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Geselecteerde items verplaatst naar $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Item verwijderen" + }, + "deleteFolder": { + "message": "Map verwijderen" + }, + "deleteAttachment": { + "message": "Bijlage verwijderen" + }, + "deleteItemConfirmation": { + "message": "Weet je zeker dat je dit item wilt verwijderen?" + }, + "deletedItem": { + "message": "Item is verwijderd" + }, + "deletedItems": { + "message": "Items zijn verwijderd" + }, + "movedItems": { + "message": "Item is verplaatst" + }, + "overwritePasswordConfirmation": { + "message": "Weet je zeker dat je het huidige wachtwoord wilt overschrijven?" + }, + "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" + }, + "loggedOut": { + "message": "Uitgelogd" + }, + "loginExpired": { + "message": "Je inlogsessie is verlopen." + }, + "logOutConfirmation": { + "message": "Weet je zeker dat je wilt uitloggen?" + }, + "logOut": { + "message": "Uitloggen" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nee" + }, + "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": "Versturen" + }, + "emailAddressDesc": { + "message": "Je gebruikt je e-mailadres om in te loggen." + }, + "yourName": { + "message": "Jouw naam" + }, + "yourNameDesc": { + "message": "Hoe moeten we je noemen?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Hoofdwachtwoordhint" + }, + "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 is vereist." + }, + "invalidEmail": { + "message": "Ongeldig e-mailadres." + }, + "masterPassRequired": { + "message": "Hoofdwachtwoord is 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." + }, + "emailAddress": { + "message": "E-mailadres" + }, + "yourVaultIsLocked": { + "message": "Je kluis is vergrendeld. Voer je hoofdwachtwoord in om door te gaan." + }, + "unlock": { + "message": "Ontgrendelen" + }, + "loggedInAsEmailOn": { + "message": "Aangemeld als $EMAIL$ op $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ongeldig hoofdwachtwoord" + }, + "lockNow": { + "message": "Nu vergrendelen" + }, + "noItemsInList": { + "message": "Er zijn geen items om weer te geven." + }, + "noCollectionsInList": { + "message": "Er zijn geen verzamelingen om weer te geven." + }, + "noGroupsInList": { + "message": "Er zijn geen groepen om weer te geven." + }, + "noUsersInList": { + "message": "Er zijn geen gebruikers om weer te geven." + }, + "noEventsInList": { + "message": "Er zijn geen gebeurtenissen om weer te geven." + }, + "newOrganization": { + "message": "Nieuwe organisatie" + }, + "noOrganizationsList": { + "message": "Je behoort niet tot een organisatie. Via organisaties deel je je items veilig met andere gebruikers." + }, + "versionNumber": { + "message": "Versie $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 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": "Steek je beveilingssleutel in de USB-poort van je computer. Als het een knop heeft, druk deze dan in." + }, + "loginUnavailable": { + "message": "Login niet beschikbaar" + }, + "noTwoStepProviders": { + "message": "Dit account heeft tweestapsaanmelding ingeschakeld, maar deze webbrowser ondersteunt geen van de geconfigureerde aanbieders." + }, + "noTwoStepProviders2": { + "message": "Gebruik een ondersteunde webbrowser (zoals Chrome) en/of voeg extra aanbieders toe die beter worden ondersteund in webbrowsers (zoals een authenticator-app)." + }, + "twoStepOptions": { + "message": "Opties voor tweestapsaanmelding" + }, + "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": "Verifieer 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": "Verifieer met Duo Security voor jouw organisatie 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." + }, + "u2fDesc": { + "message": "Gebruik een FIDO U2F-beveiligingssleutel om toegang te krijgen tot je account." + }, + "u2fTitle": { + "message": "FIDO U2F-beveiligingssleutel" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Gebruik een WebAuthn-beveilingssleutel om toegang te krijgen tot je account." + }, + "webAuthnMigrated": { + "message": "(Gemigreerd van FIDO)" + }, + "emailTitle": { + "message": "E-mailadres" + }, + "emailDesc": { + "message": "Je ontvangt verificatiecodes via e-mail." + }, + "continue": { + "message": "Doorgaan" + }, + "organization": { + "message": "Organisatie" + }, + "organizations": { + "message": "Organisaties" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Kies een organisatie waarnaar je deze items wilt verplaatsen. Door het verplaatsen krijgt de organisatie de eigendomsrechten van deze items. Je bent niet langer de directe eigenaar meer van deze items als ze zijn verplaatst." + }, + "collectionsDesc": { + "message": "Wijzig de verzamelingen waarmee dit item gedeeld is. Alleen organisatiegebruikers met toegang tot deze verzamelingen kunnen dit item inzien." + }, + "deleteSelectedItemsDesc": { + "message": "Je hebt $COUNT$ item(s) geselecteerd om te verwijderen. Weet je zeker dat je al deze items wilt verwijderen?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Kies een map waar je de $COUNT$ geselecteerde item(s) heen wilt verplaatsen.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Je hebt $COUNT$ item(s) geselecteerd. Je kunt $MOVEABLE_COUNT$ verplaatsen naar een organisatie, $NONMOVEABLE_COUNT$ niet.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verificatiecode (TOTP)" + }, + "copyVerificationCode": { + "message": "Verificatiecode kopiëren" + }, + "warning": { + "message": "Waarschuwing" + }, + "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." + }, + "export": { + "message": "Exporteren" + }, + "exportVault": { + "message": "Kluis exporteren" + }, + "fileFormat": { + "message": "Bestandsindeling" + }, + "exportSuccess": { + "message": "Je kluisgegevens zijn geëxporteerd." + }, + "passwordGenerator": { + "message": "Wachtwoordgenerator" + }, + "minComplexityScore": { + "message": "Minimale complexiteitsscore" + }, + "minNumbers": { + "message": "Minimum aantal cijfers" + }, + "minSpecial": { + "message": "Minimum aantal speciale tekens", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Dubbelzinnige tekens vermijden" + }, + "regeneratePassword": { + "message": "Opnieuw genereren" + }, + "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" + }, + "passwordHistory": { + "message": "Geschiedenis" + }, + "noPasswordsInList": { + "message": "Er zijn geen wachtwoorden om weer te geven." + }, + "clear": { + "message": "Wissen", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account is bijgewerkt" + }, + "changeEmail": { + "message": "E-mailadres wijzigen" + }, + "changeEmailTwoFactorWarning": { + "message": "Doorgaan zal het e-mailadres van je account wijzigen. Het verander het e-mailadres dat wordt gebruikt voor tweestapsaanmelding niet. Je kunt dit e-mailadres wijzigen in de tweestapsaanmeldingsinstellingen." + }, + "newEmail": { + "message": "Nieuw e-mailadres" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We hebben een verificatiecode naar $EMAIL$ gestuurd. Controleer je mail voor de code en vul deze hieronder in om je e-mailadres daadwerkelijk te wijzigen.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Doorgaan zal je huidige sessie uitloggen, waarna je opnieuw moet inloggen. Actieve sessies op andere apparaten blijven mogelijk nog een uur actief." + }, + "emailChanged": { + "message": "E-mailadres gewijzigd" + }, + "logBackIn": { + "message": "Log opnieuw in." + }, + "logBackInOthersToo": { + "message": "Svp opnieuw inloggen. Als je andere Bitwarden-applicaties gebruikt, dan moet je daar ook uit- en inloggen." + }, + "changeMasterPassword": { + "message": "Hoofdwachtwoord wijzigen" + }, + "masterPasswordChanged": { + "message": "Hoofdwachtwoord gewijzigd" + }, + "currentMasterPass": { + "message": "Huidig hoofdwachtwoord" + }, + "newMasterPass": { + "message": "Nieuw hoofdwachtwoord" + }, + "confirmNewMasterPass": { + "message": "Nieuw hoofdwachtwoord bevestigen" + }, + "encKeySettings": { + "message": "Instellingen encryptiesleutel" + }, + "kdfAlgorithm": { + "message": "KDF-algortime" + }, + "kdfIterations": { + "message": "KDF-iteraties" + }, + "kdfIterationsDesc": { + "message": "Hogere KDF-iteraties beschermen je hoofdwachtwoord tegen brute-force aanvallen. Kies minimaal voor $VALUE$.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Je KDF-iteraties te hoog instellen leidt tot een vertraging bij het inloggen (en ontgrendelen) van Bitwarden op apparaten met langzamere processoren. We raden aan de waarde in stappen van $INCREMENT$ te verhogen en steeds al je apparaten te testen.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDF wijzigen" + }, + "encKeySettingsChanged": { + "message": "Instellingen encryptiesleutel zijn gewijzigd" + }, + "dangerZone": { + "message": "Gevarenzone" + }, + "dangerZoneDesc": { + "message": "Waarschuwing - deze acties zijn niet terug te draaien!" + }, + "deauthorizeSessions": { + "message": "Sessie-autorisaties intrekken" + }, + "deauthorizeSessionsDesc": { + "message": "Bezorgd dat je account op een ander apparaat is ingelogd? Hieronder kun je de autorisatie van alle computers of apparaten die je eerder hebt gebruikt verwijderen. Deze beveiligingsstap is aanbevolen als een openbare computer hebt gebruikt of je wachtwoord per ongeluk hebt opgeslagen op een apparaat dat niet van jou is. Deze stap wist ook alle eerder onthouden tweestapsaanmeldsessies." + }, + "deauthorizeSessionsWarning": { + "message": "Doorgaan zal je huidige sessie uitloggen, waarna je opnieuw moet inloggen. Je moet ook je tweestapsaanmelding opnieuw doorlopen, als die is ingeschakeld. Actieve sessies op andere apparaten blijven mogelijk nog een uur actief." + }, + "sessionsDeauthorized": { + "message": "Autorisatie van alle sessies ingetrokken" + }, + "purgeVault": { + "message": "Kluis verwijderen" + }, + "purgedOrganizationVault": { + "message": "Organisatiekluis verwijderd." + }, + "vaultAccessedByProvider": { + "message": "Kluis benaderd door provider." + }, + "purgeVaultDesc": { + "message": "Ga hieronder verder om alle items en mappen in je kluis te verwijderen. Items die behoren tot een organisatie waarmee je deelt, worden niet verwijderd." + }, + "purgeOrgVaultDesc": { + "message": "Ga hieronder verder om alle items in de organisatiekluis te verwijderen." + }, + "purgeVaultWarning": { + "message": "Het verwijderen van je webkluis is definitief. Je kunt het niet ongedaan maken." + }, + "vaultPurged": { + "message": "Je kluisgegevens zijn verwijderd." + }, + "deleteAccount": { + "message": "Account verwijderen" + }, + "deleteAccountDesc": { + "message": "Ga hieronder verder om je account en alle bijbehorende gegevens te verwijderen." + }, + "deleteAccountWarning": { + "message": "Het verwijderen van je account is definitief. Je kunt dit niet ongedaan maken." + }, + "accountDeleted": { + "message": "Account verwijderd" + }, + "accountDeletedDesc": { + "message": "Je account is afgesloten en alle bijbehorende gegevens zijn verwijderd." + }, + "myAccount": { + "message": "Mijn account" + }, + "tools": { + "message": "Hulpmiddelen" + }, + "importData": { + "message": "Gegevens importeren" + }, + "importError": { + "message": "Fout bij importeren" + }, + "importErrorDesc": { + "message": "Er was een probleem met de data die je probeerde te importeren. Los de onderstaande fouten op in het bronbestand en probeer het opnieuw." + }, + "importSuccess": { + "message": "De gegevens zijn in je kluis geïmporteerd." + }, + "importWarning": { + "message": "Je importeert gegevens naar $ORGANIZATION$. Je gegevens kunnen gedeeld worden met de leden van deze organisatie. Wil je doorgaan?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "De gegevens zijn niet correct opgemaakt. Controleer je importbestand en probeer het opnieuw." + }, + "importNothingError": { + "message": "Er is niets geïmporteerd." + }, + "importEncKeyError": { + "message": "Fout bij het decoderen van het geëxporteerde bestand. Je encryptiesleutel komt niet overeen met de gebruikte sleutel waarmee de gegevens zijn geëxporteerd." + }, + "selectFormat": { + "message": "Selecteer het formaat van het importbestand" + }, + "selectImportFile": { + "message": "Kies het importbestand" + }, + "orCopyPasteFileContents": { + "message": "of kopieer en plak de inhoud van het importbestand" + }, + "instructionsFor": { + "message": "Instructies voor $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opties" + }, + "optionsDesc": { + "message": "Pas je ervaring met de webkluis aan." + }, + "optionsUpdated": { + "message": "Opties bijgewerkt" + }, + "language": { + "message": "Taal" + }, + "languageDesc": { + "message": "De taal van de webkluis aanpassen." + }, + "disableIcons": { + "message": "Websitepictogrammen uitschakelen" + }, + "disableIconsDesc": { + "message": "Websitepictogrammen geven een herkenbare afbeelding naast elk item in je kluis." + }, + "enableGravatars": { + "message": "Gravatars activeren", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Gebruik avatar-afbeeldingen van gravatar.com." + }, + "enableFullWidth": { + "message": "Weergave op volle breedte inschakelen", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Laat de webkluis de volledige breedte van het browservenster gebruiken." + }, + "default": { + "message": "Standaard" + }, + "domainRules": { + "message": "Domeinregels" + }, + "domainRulesDesc": { + "message": "Als je dezelfde inloggegevens over verschillende websitedomeinen gebruikt, kun je de website als \"equivalent\" kenmerken. \"Globale\" domeinen zijn al voor je aangemaakt door Bitwarden." + }, + "globalEqDomains": { + "message": "Globale equivalente domeinen" + }, + "customEqDomains": { + "message": "Persoonlijke equivalente domeinen" + }, + "exclude": { + "message": "Uitsluiten" + }, + "include": { + "message": "Insluiten" + }, + "customize": { + "message": "Personaliseren" + }, + "newCustomDomain": { + "message": "Nieuw gepersonaliseerd domein" + }, + "newCustomDomainDesc": { + "message": "Voer een lijst in met domeinen door komma's. Alleen basisdomeinen zijn toegestaan. Voer geen subdomeinen in. Gebruik bijvoorbeeld \"google.com\" in plaats van \"www.google.com\". Je kunt ook \"androidapp://package.name\" invoeren om een Android-app aan andere websitedomeinen te koppelen." + }, + "customDomainX": { + "message": "Gepersonaliseerd domein $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domeinen bijgewerkt" + }, + "twoStepLogin": { + "message": "Tweestapsaanmelding" + }, + "twoStepLoginDesc": { + "message": "Beveilig je account door een extra stap te vereisen bij het inloggen." + }, + "twoStepLoginOrganizationDesc": { + "message": "Vereis tweestapsaanmelding voor de gebruikers van je organisatie door aanbieders op organisatieniveau in te stellen." + }, + "twoStepLoginRecoveryWarning": { + "message": "Door aanmelden in twee stappen in te schakelen, kun je jezelf definitief buitensluiten van je Bitwarden-account. Een herstelcode geeft je toegang tot je account in het geval dat je je normale tweestapsaanmelding niet meer kunt gebruiken (bijv. als je je apparaat verliest). De Bitwarden-klantondersteuning kan je niet helpen als je de toegang tot je account verliest. We raden je met klem aan de herstelcode op te schrijven of af te drukken en op een veilige plaats te bewaren." + }, + "viewRecoveryCode": { + "message": "Herstelcode weergeven" + }, + "providers": { + "message": "Aanbieders", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Inschakelen" + }, + "enabled": { + "message": "Ingeschakeld" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium-abonnement" + }, + "premiumRequired": { + "message": "Premium is vereist" + }, + "premiumRequiredDesc": { + "message": "Je hebt een Premium-abonnement nodig om deze functie te gebruiken." + }, + "youHavePremiumAccess": { + "message": "Je hebt Premium-toegang" + }, + "alreadyPremiumFromOrg": { + "message": "Je hebt al toegang tot Premium-functionaliteit, via een organisatie waar je lid van bent." + }, + "manage": { + "message": "Beheren" + }, + "disable": { + "message": "Uitschakelen" + }, + "twoStepLoginProviderEnabled": { + "message": "Deze tweestapsaanmeldingsaanbieder is geactiveerd voor je account." + }, + "twoStepLoginAuthDesc": { + "message": "Vul je hoofdwachtwoord in om je tweestapsaanmeldingsinstellingen te wijzigen." + }, + "twoStepAuthenticatorDesc": { + "message": "Volg deze stappen om tweestapsaanmelding in te stellen met een authenticatie-app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download een tweestapsauthenticatie-app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Een tweestapsauthenticatie app nodig? Download een van de volgende" + }, + "iosDevices": { + "message": "iOS-apparaten" + }, + "androidDevices": { + "message": "Android-apparaten" + }, + "windowsDevices": { + "message": "Windows-apparaten" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Deze apps zijn aanbevolen, maar andere authenticatie-apps werken ook." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan deze QR-code met je authenticatie-app" + }, + "key": { + "message": "Sleutel" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Voer de 6-cijferige verificatiecode uit je authenticatie-app in" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In het geval dat je het aan een ander apparaat moet toevoegen, is hieronder de QR-code (of sleutel) die je authenticatie-app nodig heeft." + }, + "twoStepDisableDesc": { + "message": "Weet je zeker dat je deze aanbieder van tweestapsaanmeldig wilt uitschakelen?" + }, + "twoStepDisabled": { + "message": "Tweestapsaanmeldingsaanbieder is uitgeschakeld." + }, + "twoFactorYubikeyAdd": { + "message": "Nieuwe YubiKey aan je account toevoegen" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plaats de YubiKey in de USB-poort van je computer." + }, + "twoFactorYubikeySelectKey": { + "message": "Selecteer hieronder het eerste lege YubiKey-invoerveld." + }, + "twoFactorYubikeyTouchButton": { + "message": "Druk op de knop van de YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Formulier opslaan." + }, + "twoFactorYubikeyWarning": { + "message": "Vanwege platformbeperkingen kun je YubiKeys niet in alle Bitwarden-applicaties gebruiken. Stel een andere tweestapsaanmeldingsaanbieder in voor situaties waar YubiKeys niet gebruikt kunnen worden. De volgende platformen worden ondersteund:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Webkluis, desktop-applicatie, CLI en alle browser-extensies op een apparaat met een USB-poort welke YubiKey accepteert." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobiele apps op een apparaat met NFC of een USB-poort welke YubiKey accepteert." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F-sleutel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn-sleutel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC-ondersteuning" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Een van mijn sleutels ondersteunt NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Als een van je YubiKeys NFC ondersteunt (zoals een YubiKey NEO) dan word je op een mobiel apparaat met NFC gevraagd om deze te gebruiken." + }, + "yubikeysUpdated": { + "message": "YubiKeys bijgewerkt" + }, + "disableAllKeys": { + "message": "Alle sleutels uitschakelen" + }, + "twoFactorDuoDesc": { + "message": "Vul de informatie van de Bitwarden-applicatie van uw Duo Admin-scherm in." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integratiesleutel" + }, + "twoFactorDuoSecretKey": { + "message": "Geheime sleutel" + }, + "twoFactorDuoApiHostname": { + "message": "API-hostnaam" + }, + "twoFactorEmailDesc": { + "message": "Volg deze stappen voor het instellen van tweestapsaanmelding met e-mail:" + }, + "twoFactorEmailEnterEmail": { + "message": "Voer het e-mailadres in waar je de verificatiecodes op wilt ontvangen" + }, + "twoFactorEmailEnterCode": { + "message": "Voer de 6-cijferige verificatiecode uit de e-mail in" + }, + "sendEmail": { + "message": "E-mail versturen" + }, + "twoFactorU2fAdd": { + "message": "FIDO U2F-beveiligingssleutel aan je account toevoegen" + }, + "removeU2fConfirmation": { + "message": "Weet je zeker dat je deze beveiligingssleutel wilt verwijderen?" + }, + "twoFactorWebAuthnAdd": { + "message": "Voeg een WebAuthn-beveiligingssleutel toe aan je account" + }, + "readKey": { + "message": "Sleutel lezen" + }, + "keyCompromised": { + "message": "Sleutel is uitgelekt." + }, + "twoFactorU2fGiveName": { + "message": "Geef de beveiligingssleutel een beschrijvende naam om deze te identificeren." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plaats de beveiligingssleutel in een USB-poort van je computer en klik \"Lees sleutel\"." + }, + "twoFactorU2fTouchButton": { + "message": "Als de beveiligingssleutel een knop heeft, druk deze dan in." + }, + "twoFactorU2fSaveForm": { + "message": "Formulier opslaan." + }, + "twoFactorU2fWarning": { + "message": "Vanwege platformbeperkingen kun je FIDO U2F niet in alle Bitwarden-applicaties gebruiken. Stel een andere tweestapsaanmeldingsaanbieder in voor situaties waar FIDO U2F niet gebruikt kan worden. De volgende platformen worden ondersteund:" + }, + "twoFactorU2fSupportWeb": { + "message": "Webkluis en browser-extensies op een desktop/laptop met browserondersteuning voor U2F (Chrome, Opera, Vivaldi of Firefox met FIDO U2F ingeschakeld)." + }, + "twoFactorU2fWaiting": { + "message": "Wachten tot je op de knop van de beveiligingssleutel hebt gedrukt" + }, + "twoFactorU2fClickSave": { + "message": "Klik hieronder op \"Opslaan\" voor het instellen van deze beveiligingssleutel als tweestapsaanmeldingsmethode." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Er was een probleem met het lezen van de beveiligingssleutel. Probeer het nogmaals." + }, + "twoFactorWebAuthnWarning": { + "message": "Vanwege platformbeperkingen kan WebAuthn niet in alle Bitwarden applicaties gebruikt worden. Stel een andere tweestapsaanmeldingsaanbieder in zodat je je account kunt benaderen wanneer WebAuthn niet beschikbaar is. De volgende platformen worden ondersteund:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Webkluis en browser-extensies op een desktop/laptop met een browser met ondersteuning voor WebAuthn (Chrome, Opera, Vivaldi of Firefox met FIDO U2F ingeschakeld)." + }, + "twoFactorRecoveryYourCode": { + "message": "Je herstelcode voor Bitwarden-tweestapsaanmelding" + }, + "twoFactorRecoveryNoCode": { + "message": "Je hebt nog geen tweestapsaanmeldingsaanbieders ingeschakeld. Nadat je een tweestapsaanmeldingsaanbieder hebt ingeschakeld kun je hier je herstelcode vinden." + }, + "printCode": { + "message": "Code afdrukken", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Rapportages" + }, + "reportsDesc": { + "message": "Identificeer en sluit beveiligingsgaten in je online accounts door op onderstaande rapporten te klikken." + }, + "unsecuredWebsitesReport": { + "message": "Niet-beveiligde websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "Onbeveiligde websites met http:// gebruiken kan gevaarlijk zijn. Als de website het ondersteunt, moet je deze altijd benaderen met behulp van https:// zodat je verbinding versleuteld is." + }, + "unsecuredWebsitesFound": { + "message": "Onveilige websites gevonden" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We hebben $COUNT$ items met onbeveiligde URIs in je kluis gevonden. Als de website het ondersteunt, moet je de URI naar https:// wijzigen.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Geen items in je kluis met onbeveiligde URIs." + }, + "inactive2faReport": { + "message": "Tweestapsaanmelding" + }, + "inactive2faReportDesc": { + "message": "Tweestapsaanmelding (2FA) is een belangrijke instelling die bijdraagt aan de beveiliging van je accounts. Als de website het ondersteunt, zou je altijd tweestapsaanmelding moeten gebruiken." + }, + "inactive2faFound": { + "message": "Logins zonder 2FA gevonden" + }, + "inactive2faFoundDesc": { + "message": "We hebben $COUNT$ website(s) in je kluis gevonden waar je (volgens 2fa.directory) nog tweestapsaanmelding kunt instellen. Om deze accounts beter te beschermen, zou je tweestapsaanmelding moeten inschakelen.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Er zijn geen websites in je kluis gevonden waarin tweestapsaanmelding ontbreekt." + }, + "instructions": { + "message": "Instructies" + }, + "exposedPasswordsReport": { + "message": "Gelekte wachtwoorden" + }, + "exposedPasswordsReportDesc": { + "message": "Gelekte wachtwoorden zijn wachtwoorden die zijn ontdekt in bekende datalekken die publiekelijk zijn vrijgegeven of door hackers op het dark web worden verkocht." + }, + "exposedPasswordsFound": { + "message": "Gelekte wachtwoorden gevonden" + }, + "exposedPasswordsFoundDesc": { + "message": "We hebben in je kluis $COUNT$ wachtwoorden gevonden die zijn gelekt. Je zou voor deze accounts een nieuw wachtwoord moeten instellen.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Er zijn geen items in je kluis die gelekte wachtwoorden gebruiken." + }, + "checkExposedPasswords": { + "message": "Controleer gelekte wachtwoorden" + }, + "exposedXTimes": { + "message": "$COUNT$ keer gelekt", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Zwakke wachtwoorden" + }, + "weakPasswordsReportDesc": { + "message": "Hackers en geautomatiseerde gereedschappen die wachtwoorden kraken kunnen zwakke wachtwoorden eenvoudig raden. De wachtwoordgenerator van Bitwarden helpt je bij het maken van sterke wachtwoorden." + }, + "weakPasswordsFound": { + "message": "Zwakke wachtwoorden gevonden" + }, + "weakPasswordsFoundDesc": { + "message": "We hebben $COUNT$ zwakke wachtwoorden in je kluis gevonden. Je zou ze moeten veranderen in sterke wachtwoorden.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Er zijn geen items met zwakke wachtwoorden in je kluis gevonden." + }, + "reusedPasswordsReport": { + "message": "Dubbele wachtwoorden" + }, + "reusedPasswordsReportDesc": { + "message": "Als hackers wachtwoorden stelen bij een dienst die je gebruikt, kunnen zij met hetzelfde wachtwoord eenvoudig toegang krijgen tot meer van je online accounts. Je zou voor iedere dienst een uniek wachtwoord moeten gebruiken." + }, + "reusedPasswordsFound": { + "message": "Dubbele wachtwoorden gevonden" + }, + "reusedPasswordsFoundDesc": { + "message": "We hebben $COUNT$ dubbele wachtwoorden in je kluis gevonden. Je zou deze moeten veranderen in unieke wachtwoorden.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Er zijn in je kluis geen dubbele wachtwoorden gevonden." + }, + "reusedXTimes": { + "message": "$COUNT$ keer dubbel gebruikt", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Datalekken" + }, + "breachDesc": { + "message": "Een \"datalek\" is een incident waarbij de gegevens van een website zijn gestolen door hackers en vervolgens openbaar zijn gemaakt. Controleer de soorten gegevens die zijn gelekt (e-mailadressen, wachtwoorden, creditcards, enz.) en neem passende maatregelen, zoals het wijzigen van wachtwoorden." + }, + "breachCheckUsernameEmail": { + "message": "Controleer elke gebruikersnaam of e-mailadres die je gebruikt." + }, + "checkBreaches": { + "message": "Controleer datalekken" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ is niet gevonden in bekende datalekken.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Goed nieuws", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ is in $COUNT$ verschillende datalekken gevonden.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Gelekte accounts gevonden" + }, + "compromisedData": { + "message": "Gelekte gegevens" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Betrokken gebruikers" + }, + "breachOccurred": { + "message": "Gelekt op" + }, + "breachReported": { + "message": "Gerapporteerd op" + }, + "reportError": { + "message": "Er is een fout opgetreden bij het laden van het overzicht. Probeer het nog eens" + }, + "billing": { + "message": "Facturering" + }, + "accountCredit": { + "message": "Rekeningtegoed", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Rekeningbalans", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Krediet toevoegen", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Bedrag", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Toegevoegd krediet verschijnt in je account nadat de betaling volledig is verwerkt. Sommige betaalmethoden zijn vertraagd en kunnen langer duren om te verwerken dan andere." + }, + "makeSureEnoughCredit": { + "message": "Verzeker jezelf ervan dat je account voldoende krediet voor deze aankoop beschikbaar heeft. Als je account niet genoeg krediet heeft, zal je standaard betaalmethode worden gebruikt voor het verschil. Je kunt krediet aan je account toevoegen vanaf de factuurpagina." + }, + "creditAppliedDesc": { + "message": "Je kunt het krediet van je account voor aankopen gebruiken. Elk beschikbaar krediet zal automatisch worden toegepast op facturen die gegenereerd zijn voor dit account." + }, + "goPremium": { + "message": "Neem Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Je bent opgewaardeerd naar Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade je account naar een Premium-abonnement en ontgrendel enkele geweldige extra functionaliteiten." + }, + "premiumSignUpStorage": { + "message": "1 GB versleutelde opslag voor bijlagen." + }, + "premiumSignUpTwoStep": { + "message": "Extra tweestapsaanmeldingsopties zoals YubiKey, FIDO U2F en Duo." + }, + "premiumSignUpEmergency": { + "message": "Noodtoegang" + }, + "premiumSignUpReports": { + "message": "Rapportages op wachtwoordhygiëne, gezondheid van je account en datalekken om je kluis veilig te houden." + }, + "premiumSignUpTotp": { + "message": "TOTP-verificatiecodegenerator (tweestapsaanmelding) voor aanmeldingsgegevens in je kluis." + }, + "premiumSignUpSupport": { + "message": "Klantondersteuning met hoge prioriteit." + }, + "premiumSignUpFuture": { + "message": "Alle toekomstige Premium-functionaliteiten. Binnenkort meer!" + }, + "premiumPrice": { + "message": "Dit alles voor slechts $PRICE$ per jaar!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Add-ons" + }, + "premiumAccess": { + "message": "Premium-toegang" + }, + "premiumAccessDesc": { + "message": "Je kunt alle leden van je organisatie Premium-toegang verlenen voor $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Extra opslagruimte (GB)" + }, + "additionalStorageGbDesc": { + "message": "# extra GB" + }, + "additionalStorageIntervalDesc": { + "message": "Je lidmaatschap omvat $SIZE$ beveiligde bestandsopslag. Je kunt extra opslagruimte toevoegen voor $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Samenvatting" + }, + "total": { + "message": "Totaal" + }, + "year": { + "message": "jaar" + }, + "month": { + "message": "maand" + }, + "monthAbbr": { + "message": "mnd", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Het bedrag wordt direct in rekening gebracht en vervolgens jaarlijks op terugkerende basis. Je kunt op ieder moment opzeggen." + }, + "paymentCharged": { + "message": "Het bedrag wordt direct op je betaalmethode in rekening gebracht en vervolgens iedere $INTERVAL$ op terugkerende basis. Je kunt op ieder moment opzeggen.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Je lidmaatschap omvat een gratis proefperiode van 7 dagen. Kosten worden pas in rekening gebracht als de proefperiode voorbij is. De betaling vindt ieder(e) $INTERVAL$ op terugkerende basis plaats. Je kunt op ieder moment opzeggen." + }, + "paymentInformation": { + "message": "Betaalgegevens" + }, + "billingInformation": { + "message": "Factureringsgegevens" + }, + "creditCard": { + "message": "Creditcard" + }, + "paypalClickSubmit": { + "message": "Klik op de PayPal-knop om je aan te melden op je PayPal-account. Klik vervolgens hieronder op de knop Verzenden om verder te gaan." + }, + "cancelSubscription": { + "message": "Abonnement opzeggen" + }, + "subscriptionCanceled": { + "message": "Het abonnement is opgezegd." + }, + "pendingCancellation": { + "message": "In afwachting van opzegging" + }, + "subscriptionPendingCanceled": { + "message": "Het abonnement is gemarkeerd voor opzegging aan het einde van de huidige betalingsperiode." + }, + "reinstateSubscription": { + "message": "Abonnement opnieuw activeren" + }, + "reinstateConfirmation": { + "message": "Weet je zeker dat je de lopende opzegging wilt verwijderen en je abonnement opnieuw wilt activeren?" + }, + "reinstated": { + "message": "Het abonnement is opnieuw geactiveerd." + }, + "cancelConfirmation": { + "message": "Weet je zeker dat je wilt opzeggen? Je verliest toegang tot alle functionaliteiten van dit abonnement aan het einde van deze betalingscyclus." + }, + "canceledSubscription": { + "message": "Het abonnement is opgezegd." + }, + "neverExpires": { + "message": "Vervalt nooit" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Volgende betaling" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Licentie downloaden" + }, + "updateLicense": { + "message": "Licentie bijwerken" + }, + "updatedLicense": { + "message": "Licentie bijgewerkt" + }, + "manageSubscription": { + "message": "Abonnement beheren" + }, + "storage": { + "message": "Opslagruimte" + }, + "addStorage": { + "message": "Opslagruimte toevoegen" + }, + "removeStorage": { + "message": "Opslagruimte verwijderen" + }, + "subscriptionStorage": { + "message": "Je abonnement biedt in totaal $MAX_STORAGE$ GB versleutelde bestandsopslag. Je gebruikt momenteel $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Betaalwijze" + }, + "noPaymentMethod": { + "message": "Geen betaalwijze gekozen." + }, + "addPaymentMethod": { + "message": "Betaalwijze toevoegen" + }, + "changePaymentMethod": { + "message": "Betaalwijze aanpassen" + }, + "invoices": { + "message": "Facturen" + }, + "noInvoices": { + "message": "Geen facturen." + }, + "paid": { + "message": "Betaald", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Openstaand", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transacties", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Geen transacties." + }, + "chargeNoun": { + "message": "Kosten", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Terugbetaling", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Kosten verschijnen op je afschrift als $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB aan opslagruimte toevoegen" + }, + "gbStorageRemove": { + "message": "GB aan opslagruimte verwijderen" + }, + "storageAddNote": { + "message": "Opslag toevoegen heeft gevolgen voor je factuurbedrag en wordt onmiddellijk in rekening gebracht op je geregistreerde betaalmethode. De eerste rekening wordt pro-rata berekend voor de resterende factureringscyclus." + }, + "storageRemoveNote": { + "message": "Opslag verwijderen heeft gevolgen voor je factuurbedrag en wordt pro-rata gecrediteerd op je volgende betaling." + }, + "adjustedStorage": { + "message": "Opslagruimte aangepast naar $AMOUNT$ GB.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Neem contact op met de klantondersteuning" + }, + "updatedPaymentMethod": { + "message": "Betaalmethode bijgewerkt." + }, + "purchasePremium": { + "message": "Premium aanschaffen" + }, + "licenseFile": { + "message": "Licentiebestand" + }, + "licenseFileDesc": { + "message": "Je licentiebestand heeft een naam als $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Om je account te upgraden naar een Premium-abonnement, moet je een geldig licentiebestand uploaden." + }, + "uploadLicenseFileOrg": { + "message": "Voor het aanmaken van een zelfgehoste organisatie moet je een geldig licentiebestand uploaden." + }, + "accountEmailMustBeVerified": { + "message": "Het e-mailadres van je account moet geverifieerd zijn." + }, + "newOrganizationDesc": { + "message": "Met organisaties kun je delen van je kluis met anderen delen en gebruikers in een bepaalde samenstelling beheren, zoals een familie, klein team of groot bedrijf." + }, + "generalInformation": { + "message": "Algemene informatie" + }, + "organizationName": { + "message": "Organisatienaam" + }, + "accountOwnedBusiness": { + "message": "Dit account is eigendom van een bedrijf." + }, + "billingEmail": { + "message": "E-mailadres voor facturering" + }, + "businessName": { + "message": "Bedrijfsnaam" + }, + "chooseYourPlan": { + "message": "Kies je abonnement" + }, + "users": { + "message": "Gebruikers" + }, + "userSeats": { + "message": "Gebruikersplaatsen" + }, + "additionalUserSeats": { + "message": "Extra gebruikersplaatsen" + }, + "userSeatsDesc": { + "message": "# gebruikersplaatsen" + }, + "userSeatsAdditionalDesc": { + "message": "Bij je abonnement horen $BASE_SEATS$ gebruikersplaatsen. Je kunt extra gebruikersplaatsen aankopen voor $SEAT_PRICE$ per gebruiker/maand.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Hoeveel gebruikersplaatsen heb je nodig? Je kunt later altijd nog extra plaatsen toevoegen." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Voor het testen of een persoonlijk gebruiker die deelt met $COUNT$ andere gebruiker(s).", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "Voor persoonlijke gebruik, om met familie en vrienden te delen." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "Voor bedrijven en andere team-organisaties." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "Voor bedrijven en andere grote organisaties." + }, + "freeForever": { + "message": "Altijd gratis" + }, + "includesXUsers": { + "message": "inclusief $COUNT$ gebruikers", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Extra gebruikers" + }, + "costPerUser": { + "message": "$COST$ per gebruiker", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Beperkt tot $COUNT$ gebruikers (inclusief jijzelf)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Beperkt tot $COUNT$ verzamelingen", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Toevoegen en delen met maximaal $COUNT$ gebruikers", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Toevoegen en delen met een onbeperkt aantal gebruikers" + }, + "createUnlimitedCollections": { + "message": "Oneindig veel verzamelingen aanmaken" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ versleutelde bestandsopslag", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Zelfhosting (optioneel)" + }, + "usersGetPremium": { + "message": "Gebruikers krijgen toegang tot Premium-functies" + }, + "controlAccessWithGroups": { + "message": "Gebruikerstoegang beheren met groepen" + }, + "syncUsersFromDirectory": { + "message": "Gebruikers en groepen vanuit een directory synchroniseren" + }, + "trackAuditLogs": { + "message": "Gebruikersacties vastleggen in auditlogboeken" + }, + "enforce2faDuo": { + "message": "Tweestapsaanmelding afdwingen met Duo" + }, + "priorityCustomerSupport": { + "message": "Klantondersteuning met hoge prioriteit" + }, + "xDayFreeTrial": { + "message": "$COUNT$ dagen gratis proefperiode, op ieder moment opzegbaar", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Maandelijks" + }, + "annually": { + "message": "Jaarlijks" + }, + "basePrice": { + "message": "Basisprijs" + }, + "organizationCreated": { + "message": "Organisatie aangemaakt" + }, + "organizationReadyToGo": { + "message": "Je nieuwe organisatie is klaar voor gebruik!" + }, + "organizationUpgraded": { + "message": "Je organisatie is bijgewerkt." + }, + "leave": { + "message": "Verlaten" + }, + "leaveOrganizationConfirmation": { + "message": "Weet je zeker dat je deze organisatie wilt verlaten?" + }, + "leftOrganization": { + "message": "Je hebt de organisatie verlaten." + }, + "defaultCollection": { + "message": "Standaardverzameling" + }, + "getHelp": { + "message": "Hulp vragen" + }, + "getApps": { + "message": "De apps downloaden" + }, + "loggedInAs": { + "message": "Ingelogd als" + }, + "eventLogs": { + "message": "Gebeurtenislog" + }, + "people": { + "message": "Personen" + }, + "policies": { + "message": "Beleidseisen" + }, + "singleSignOn": { + "message": "Single sign-on" + }, + "editPolicy": { + "message": "Beleid bewerken" + }, + "groups": { + "message": "Groepen" + }, + "newGroup": { + "message": "Nieuwe groep" + }, + "addGroup": { + "message": "Groep toevoegen" + }, + "editGroup": { + "message": "Groep bewerken" + }, + "deleteGroupConfirmation": { + "message": "Weet je zeker dat je deze groep wilt verwijderen?" + }, + "removeUserConfirmation": { + "message": "Weet je zeker dat je deze gebruiker wilt verwijderen?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Waarschuwing! Deze gebruiker vereist de Key Connector om de versleuteling te beheren. Als je deze gebruiker uit je organisatie verwijdert, wordt zijn account permanent uitgeschakeld. Deze actie kan niet ongedaan worden gemaakt. Wil je doorgaan?" + }, + "externalId": { + "message": "Externe ID" + }, + "externalIdDesc": { + "message": "Je kunt het externe ID gebruiken als referentie of om een koppeling te leggen tussen deze bron en een extern systeem zoals een directory met gebruikers." + }, + "accessControl": { + "message": "Toegangsbeheer" + }, + "groupAccessAllItems": { + "message": "Deze groep kan alle items inzien en bewerken." + }, + "groupAccessSelectedCollections": { + "message": "Deze groep heeft alleen toegang tot de geselecteerde verzamelingen." + }, + "readOnly": { + "message": "Alleen-lezen" + }, + "newCollection": { + "message": "Nieuwe verzameling" + }, + "addCollection": { + "message": "Verzameling toevoegen" + }, + "editCollection": { + "message": "Verzameling bewerken" + }, + "deleteCollectionConfirmation": { + "message": "Weet je zeker dat je deze verzameling wilt verwijderen?" + }, + "editUser": { + "message": "Gebruiker bewerken" + }, + "inviteUser": { + "message": "Gebruiker uitnodigen" + }, + "inviteUserDesc": { + "message": "Nodig een nieuwe gebruiker uit voor je organisatie door het e-mailadres van hun Bitwarden-account hieronder in te vullen. Als ze nog geen Bitwarden-account hebben, kunnen ze een nieuw account aanmaken." + }, + "inviteMultipleEmailDesc": { + "message": "Je kunt tot $COUNT$ gebruikers per keer uitnodigen door middel van een lijst met komma's gescheiden e-mailadressen.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Het account van deze gebruiker is beschermd met tweestapsaanmelding." + }, + "userAccessAllItems": { + "message": "Deze gebruiker kan alle items inzien en bewerken." + }, + "userAccessSelectedCollections": { + "message": "Deze gebruiker heeft alleen toegang tot de geselecteerde verzamelingen." + }, + "search": { + "message": "Zoeken" + }, + "invited": { + "message": "Uitgenodigd" + }, + "accepted": { + "message": "Geaccepteerd" + }, + "confirmed": { + "message": "Bevestigd" + }, + "clientOwnerEmail": { + "message": "E-mailadres apparaateigenaar" + }, + "owner": { + "message": "Eigenaar" + }, + "ownerDesc": { + "message": "De gebruiker met de hoogste toegangsrechten. Deze gebruiker kan alle aspecten van je organisatie beheren." + }, + "clientOwnerDesc": { + "message": "Deze gebruiker moet onafhankelijk zijn van de provider. Als de provider is losgekoppeld van de organisatie, blijft deze gebruiker eigenaar van de organisatie." + }, + "admin": { + "message": "Beheerder" + }, + "adminDesc": { + "message": "Beheerders hebben toegang tot alle items, verzamelingen en gebruikers binnen je organisatie en kunnen deze ook beheren." + }, + "user": { + "message": "Gebruiker" + }, + "userDesc": { + "message": "Een standaardgebruiker met toegang tot de verzamelingen van je organisatie." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers hebben toegang tot toegewezen verzamelingen binnen je organisatie en kunnen deze ook beheren." + }, + "all": { + "message": "Alle" + }, + "refresh": { + "message": "Verversen" + }, + "timestamp": { + "message": "Tijdstempel" + }, + "event": { + "message": "Gebeurtenis" + }, + "unknown": { + "message": "Onbekend" + }, + "loadMore": { + "message": "Meer ophalen" + }, + "mobile": { + "message": "Mobiel", + "description": "Mobile app" + }, + "extension": { + "message": "Extensie", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Webkluis" + }, + "loggedIn": { + "message": "Ingelogd." + }, + "changedPassword": { + "message": "Accountwachtwoord veranderd." + }, + "enabledUpdated2fa": { + "message": "Tweestapsaanmelding geactiveerd/bijgewerkt." + }, + "disabled2fa": { + "message": "Tweestapsaanmelding uitgeschakeld." + }, + "recovered2fa": { + "message": "Account hersteld van tweestapsaanmelding." + }, + "failedLogin": { + "message": "Inlogpoging met onjuist wachtwoord mislukt." + }, + "failedLogin2fa": { + "message": "Inlogpoging met onjuiste tweestapsaanmelding mislukt." + }, + "exportedVault": { + "message": "Kluis geëxporteerd." + }, + "exportedOrganizationVault": { + "message": "Organisatiekluis geëxporteerd." + }, + "editedOrgSettings": { + "message": "Organisatie-instellingen gewijzigd." + }, + "createdItemId": { + "message": "Aangemaakt item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Gewijzigd item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Verwijderd item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Item $ID$ naar een organisatie verplaatst.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Bekeken item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Wachtwoord bekeken voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Verborgen veld bekeken voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Beveiligingscode bekeken voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Wachtwoord gekopieerd voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Verborgen veld gekopieerd voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Beveiligingscode gekopieerd voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Automatisch-invullen voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Verzameling aangemaakt $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Verzameling gewijzigd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Verzameling verwijderd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Bewerkt beleid $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Groep aangemaakt $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Groep gewijzigd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Groep verwijderd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Gebruiker verwijderd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Bijlage aangemaakt voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Bijlage verwijderd voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Verzamelingen gewijzigd voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Gebruiker uitgenodigd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Gebruiker bevestigd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Gebruiker gewijzigd $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Groepen gewijzigd van gebruiker $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO ontkoppeld voor gebruiker $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organisatie $ID$ aangemaakt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organisatie $ID$ toegevoegd.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organisatie $ID$ verwijderd.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "$ID$ organisatiekluis geopend.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Apparaat" + }, + "view": { + "message": "Weergeven" + }, + "invalidDateRange": { + "message": "Ongeldig datumbereik." + }, + "errorOccurred": { + "message": "Er is een fout opgetreden." + }, + "userAccess": { + "message": "Gebruikerstoegang" + }, + "userType": { + "message": "Soort gebruiker" + }, + "groupAccess": { + "message": "Groepstoegang" + }, + "groupAccessUserDesc": { + "message": "Wijzig de groep waar deze gebruiker bij hoort." + }, + "invitedUsers": { + "message": "Gebruiker(s) uitgenodigd." + }, + "resendInvitation": { + "message": "Uitnodiging opnieuw versturen" + }, + "resendEmail": { + "message": "E-mail opnieuw versturen" + }, + "hasBeenReinvited": { + "message": "$USER$ is opnieuw uitgenodigd.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Bevestigen" + }, + "confirmUser": { + "message": "Gebruiker bevestigen" + }, + "hasBeenConfirmed": { + "message": "$USER$ is bevestigd.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Gebruikers bevestigen" + }, + "usersNeedConfirmed": { + "message": "Je hebt gebruikers die hun uitnodiging hebben geaccepteerd, maar nog moeten worden bevestigd. Gebruikers hebben pas toegang tot de organisatie nadat ze zijn bevestigd." + }, + "startDate": { + "message": "Begindatum" + }, + "endDate": { + "message": "Einddatum" + }, + "verifyEmail": { + "message": "E-mailadres verifiëren" + }, + "verifyEmailDesc": { + "message": "Verifieer het e-mailadres van je account om toegang te krijgen tot alle functionaliteiten." + }, + "verifyEmailFirst": { + "message": "Je moet eerst het e-mailadres van je account verifiëren." + }, + "checkInboxForVerification": { + "message": "Kijk in het postvak IN van je e-mail voor een verificatielink." + }, + "emailVerified": { + "message": "Je e-mailadres is geverifieerd." + }, + "emailVerifiedFailed": { + "message": "Je e-mailadres kon niet worden geverifieerd. Probeer een nieuwe e-mail met verificatielink te versturen." + }, + "emailVerificationRequired": { + "message": "E-mailverificatie vereist" + }, + "emailVerificationRequiredDesc": { + "message": "Je moet je e-mailadres verifiëren om deze functionaliteit te gebruiken." + }, + "updateBrowser": { + "message": "Webbrowser bijwerken" + }, + "updateBrowserDesc": { + "message": "Je maakt gebruik van webbrowser die we niet ondersteunen. De webkluis werkt mogelijk niet goed." + }, + "joinOrganization": { + "message": "Lid worden van organisatie" + }, + "joinOrganizationDesc": { + "message": "Je bent uitgenodigd om lid te worden van bovenstaande organisatie. Om de uitnodiging te accepteren, moet je inloggen of een nieuw Bitwarden-account aanmaken." + }, + "inviteAccepted": { + "message": "Uitnodiging geaccepteerd" + }, + "inviteAcceptedDesc": { + "message": "Je krijgt toegang tot deze organisatie zodra een beheerder je lidmaatschap bevestigt. We sturen je een e-mail zodra dat gebeurt." + }, + "inviteAcceptFailed": { + "message": "De uitnodiging is niet geaccepteerd. Vraag een beheerder van de organisatie om een nieuwe uitnodiging te versturen." + }, + "inviteAcceptFailedShort": { + "message": "Uitnodiging kan niet worden geaccepteerd. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Mijn e-mailadres onthouden" + }, + "recoverAccountTwoStepDesc": { + "message": "Als je geen toegang tot je account kunt krijgen via je normale tweestapsaanmeldingsmethodes, kun je met je herstelcode alle aanbieders van tweestapsaanmelding in je account uitschakelen." + }, + "recoverAccountTwoStep": { + "message": "Tweestapsaanmelding herstellen" + }, + "twoStepRecoverDisabled": { + "message": "Tweestapsaanmeldig is uitgeschakeld voor je account." + }, + "learnMore": { + "message": "Meer informatie" + }, + "deleteRecoverDesc": { + "message": "Voer hieronder je e-mailadres in om je account te herstellen en te verwijderen." + }, + "deleteRecoverEmailSent": { + "message": "Als je account bestaat, hebben we je een e-mailbericht met nadere instructies gestuurd." + }, + "deleteRecoverConfirmDesc": { + "message": "Je hebt een aanvraag gedaan om je Bitwarden-account te verwijderen. Klik op onderstaande knop om dit te bevestigen." + }, + "myOrganization": { + "message": "Mijn organisatie" + }, + "deleteOrganization": { + "message": "Organisatie verwijderen" + }, + "deletingOrganizationContentWarning": { + "message": "Voer het hoofdwachtwoord in om de verwijdering van $ORGANIZATION$ en alle bijbehorende gegevens te bevestigen. De kluisgegevens in $ORGANIZATION$ bevatten:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Gebruikersaccounts blijven actief na het verwijderen maar worden niet langer gekoppeld aan deze organisatie." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Het verwijderen van $ORGANIZATION$ is permanent en onomkeerbaar.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisatie verwijderd" + }, + "organizationDeletedDesc": { + "message": "De organisatie en alle bijhorende gegevens zijn verwijderd." + }, + "organizationUpdated": { + "message": "Organisatie bijgewerkt" + }, + "taxInformation": { + "message": "Belastinginformatie" + }, + "taxInformationDesc": { + "message": "Voor klanten in de VS is een postcode nodig om te voldoen aan belastingvoorschriften. Klanten uit andere landen kunnen desgewenst een belastingnummer (BTW/VAT/GST) en/of adres opgeven voor vermelding op de facturen." + }, + "billingPlan": { + "message": "Abonnement", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Abonnement wijzigen", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade je account naar een ander abonnement door onderstaande informatie door te geven. Verzeker jezelf ervan dat er een actieve betaalmethode aan het account is gekoppeld.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Factuur #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Factuur bekijken" + }, + "downloadInvoice": { + "message": "Factuur downloaden" + }, + "verifyBankAccount": { + "message": "Bankrekening verifiëren" + }, + "verifyBankAccountDesc": { + "message": "We hebben twee microbetalingen naar je bankrekening uitgevoerd (het kan 1-2 werkdagen duren voordat deze zichtbaar zijn). Voer deze bedragen in om de bankrekening te verifiëren." + }, + "verifyBankAccountInitialDesc": { + "message": "Betaling met een bankrekening is alleen beschikbaar voor klanten in de Verenigde Staten. Je moet eerst je bankrekening verifiëren. We zullen de komende 1-2 werkdagen twee microbetalingen uitvoeren. Voer deze bedragen in op de factureringspagina van de organisatie om de bankrekening te verifiëren." + }, + "verifyBankAccountFailureWarning": { + "message": "Als je de bankrekening niet verifieert mis je een betaling waardoor je abonnement wordt uitgeschakeld." + }, + "verifiedBankAccount": { + "message": "Bankrekening geverifieerd." + }, + "bankAccount": { + "message": "Bankrekening" + }, + "amountX": { + "message": "Bedrag $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routeringsnummer", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Rekeningnummer" + }, + "accountHolderName": { + "message": "Naam rekeninghouder" + }, + "bankAccountType": { + "message": "Soort rekening" + }, + "bankAccountTypeCompany": { + "message": "Bedrijf (zakelijk)" + }, + "bankAccountTypeIndividual": { + "message": "Individu (persoonlijk)" + }, + "enterInstallationId": { + "message": "Installatie-id invoeren" + }, + "limitSubscriptionDesc": { + "message": "Stel een limiet voor gebruikersplaatsen in voor je abonnement. Zodra deze limiet is bereikt, kun je geen nieuwe gebruikers uitnodigen." + }, + "maxSeatLimit": { + "message": "Maximale gebruikersplaatsen (optioneel)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max. potentiële kosten gebruikersplaatsen" + }, + "addSeats": { + "message": "Plaatsen toevoegen", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Plaatsen verwijderen", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Aanpassingen aan je abonnement leiden tot evenredige wijzigingen in je factuurtotaal. Als nieuwe gebruikers je gebruikersplaatsen overschrijden, ontvang je onmiddellijk een afschrijving voor de extra gebruikers." + }, + "subscriptionUserSeats": { + "message": "Je abonnement omvat $COUNT$ gebruikers.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limiteer abonnement (optioneel)" + }, + "subscriptionSeats": { + "message": "Gebruikersplaatsen abonnement" + }, + "subscriptionUpdated": { + "message": "Abonnement bijgewerkt" + }, + "additionalOptions": { + "message": "Extra opties" + }, + "additionalOptionsDesc": { + "message": "Neem contact op met de klantenservice voor extra hulp bij het beheren van je abonnement." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Aanpassingen aan je abonnement leiden tot evenredige wijzigingen in je factuurtotaal. Als nieuwe gebruikers je gebruikersplaatsen overschrijden, ontvang je onmiddellijk een afschrijving voor de extra gebruikers." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Aanpassingen aan je abonnement leiden tot evenredige wijzigingen in je factuurtotaal. Als nieuwe gebruikers je gebruikersplaatsen overschrijden, ontvang je onmiddellijk een afschrijving voor de extra gebruikers tot het aantal van $MAX$ gebruikersplaatsen is bereikt.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Je kunt niet meer dan $COUNT$ gebruikers uitnodigen zonder je abonnement te upgraden.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Je kunt niet meer dan $COUNT$ gebruikers uitnodigen zonder je abonnement te upgraden. Neem contact op met Customer Support om te upgraden.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Je abonnement staat $COUNT$ gebruikers toe. Je abonnement wordt gesponsord en gefactureerd aan een externe organisatie.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Aanpassingen aan je abonnement leiden tot evenredige wijzigingen in uw factuurtotaal. Je kunt niet meer dan $COUNT$ gebruikers uitnodigen zonder je abonnementsplaatsen te verhogen.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Toe te voegen plaatsen" + }, + "seatsToRemove": { + "message": "Te verwijderen plaatsen" + }, + "seatsAddNote": { + "message": "Gebruikersplaatsen toevoegen heeft gevolgen voor je factuurbedrag en wordt onmiddellijk in rekening gebracht op je geregistreerde betaalmethode. De eerste aanrekening wordt pro-rata berekend voor de resterende factureringscyclus." + }, + "seatsRemoveNote": { + "message": "Gebruikersplaatsen verwijderen heeft gevolgen voor je factuurbedrag en wordt pro-rata gecrediteerd op je volgende betaling." + }, + "adjustedSeats": { + "message": "Aantal plaatsen aangepast naar $AMOUNT$.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Sleutel bijgewerkt" + }, + "updateKeyTitle": { + "message": "Sleutel bijwerken" + }, + "updateEncryptionKey": { + "message": "Encryptiesleutel bijwerken" + }, + "updateEncryptionKeyShortDesc": { + "message": "Je gebruikt een oud versleutelingsschema." + }, + "updateEncryptionKeyDesc": { + "message": "We zijn overgeschakeld naar langere encryptiesleutels die beter beveiligen en nieuwe functionaliteiten mogelijk maken. Het bijwerken van je encryptiesleutel gaat snel en eenvoudig. Typ gewoon je hoofdwachtwoord hieronder in. Deze wijziging zal uiteindelijk verplicht worden." + }, + "updateEncryptionKeyWarning": { + "message": "Na het bijwerken van je encryptiesleutel moet je je afmelden en weer aanmelden bij alle Bitwarden-applicaties die je gebruikt (zoals de mobiele app of browserextensies). Als je niet opnieuw inlogt (wat je nieuwe encryptiesleutel downloadt), kan dit gegevensbeschadiging tot gevolg hebben. We proberen je automatisch uit te loggen, maar het kan zijn dat dit met enige vertraging gebeurt." + }, + "updateEncryptionKeyExportWarning": { + "message": "Elke versleutelde export die je hebt bewaard wordt onbruikbaar." + }, + "subscription": { + "message": "Abonnement" + }, + "loading": { + "message": "Laden" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Organisatie upgraden" + }, + "upgradeOrganizationDesc": { + "message": "Deze mogelijkheid is niet beschikbaar voor gratis organisaties. Schakel over naar een betaald abonnement om meer mogelijkheden te ontgrendelen." + }, + "createOrganizationStep1": { + "message": "Organisatie aanmaken: Stap 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Voordat je een organisatie kunt aanmaken moet je eerst een gratis persoonlijk account aanmaken." + }, + "refunded": { + "message": "Terugbetaald" + }, + "nothingSelected": { + "message": "Je hebt niets geselecteerd." + }, + "acceptPolicies": { + "message": "Door dit vakje aan te vinken ga je akkoord met het volgende:" + }, + "acceptPoliciesError": { + "message": "Algemene voorwaarden en privacybeleid zijn nog niet erkend." + }, + "termsOfService": { + "message": "Algemene gebruiksvoorwaarden" + }, + "privacyPolicy": { + "message": "Privacybeleid" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Time-out van de kluis" + }, + "vaultTimeoutDesc": { + "message": "Stel de time-out van de kluis en de bijbehorende actie in." + }, + "oneMinute": { + "message": "1 minuut" + }, + "fiveMinutes": { + "message": "5 minuten" + }, + "fifteenMinutes": { + "message": "15 minuten" + }, + "thirtyMinutes": { + "message": "30 minuten" + }, + "oneHour": { + "message": "1 uur" + }, + "fourHours": { + "message": "4 uur" + }, + "onRefresh": { + "message": "Bij het verversen van de webbrowser" + }, + "dateUpdated": { + "message": "Bijgewerkt", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Wachtwoord bijgewerkt", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisatie uitgeschakeld." + }, + "licenseIsExpired": { + "message": "Licentie verlopen." + }, + "updatedUsers": { + "message": "Gebruikers bijgewerkt" + }, + "selected": { + "message": "Geselecteerd" + }, + "ownership": { + "message": "Eigendom" + }, + "whoOwnsThisItem": { + "message": "Wie is eigenaar van dit object?" + }, + "strong": { + "message": "Sterk", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Goed", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Zwak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Zeer zwak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "De encryptiesleutel van mijn account ook roteren" + }, + "rotateEncKeyTitle": { + "message": "Encryptiesleutel roteren" + }, + "rotateEncKeyConfirmation": { + "message": "Weet je zeker dat je de encryptiesleutel van je account wilt roteren?" + }, + "attachmentsNeedFix": { + "message": "Dit item heeft oude bestandsbijlagen die aangepast moeten worden." + }, + "attachmentFixDesc": { + "message": "Dit is een oude bestandsbijlage die moet worden aangepast. Klik voor meer informatie." + }, + "fix": { + "message": "Oplossen", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Er zijn oude bestandsbijlagen in je kluis die aangepast moeten worden voordat je je encryptiesleutels kunt roteren." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Verzeker jezelf van de integriteit van je encryptiesleutels, controleer de vingerafdrukzin van de gebruiker voor je verder gaat.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Niet meer vragen om de vingerafdrukzin te controleren", + "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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-sleutel" + }, + "apiKeyDesc": { + "message": "Je kunt je API-sleutel gebruiken om in te loggen op de openbare API van Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Het roteren van de API-sleutel maakt de vorige sleutel ongeldig. Je kunt je API-sleutel roteren als je denkt dat de huidige sleutel niet langer veilig is om te gebruiken." + }, + "apiKeyWarning": { + "message": "Je API-sleutel heeft volledige toegang tot de organisatie. Houd het geheim." + }, + "userApiKeyDesc": { + "message": "Met je API-sleutel kun je inloggen in de Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Je API-sleutel is een alternatieve manier van inloggen. Het moet geheim blijven." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 clientreferenties", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API-sleutel bekijken" + }, + "rotateApiKey": { + "message": "API-sleutel roteren" + }, + "selectOneCollection": { + "message": "Je moet ten minste één collectie selecteren." + }, + "couldNotChargeCardPayInvoice": { + "message": "We konden geen kosten op je kaart in rekening brengen. Bekijk en betaal onderstaande openstaande factuur." + }, + "inAppPurchase": { + "message": "In-app aankoop" + }, + "cannotPerformInAppPurchase": { + "message": "Je kunt deze actie niet uitvoeren tijdens de uitvoering van een in-app aankoop." + }, + "manageSubscriptionFromStore": { + "message": "Je moet je abonnement beheren vanuit de winkel waar je in-app aankoop is gemaakt." + }, + "minLength": { + "message": "Minimale lengte" + }, + "clone": { + "message": "Dupliceren" + }, + "masterPassPolicyDesc": { + "message": "Minimale eisen voor de sterkte van het hoofdwachtwoord instellen." + }, + "twoStepLoginPolicyDesc": { + "message": "Vereis tweestapsaanmelding op het persoonlijke account van gebruikers." + }, + "twoStepLoginPolicyWarning": { + "message": "Organisatieleden die geen eigenaren of beheerders zijn en geen tweestapsaanmelding hebben ingeschakeld voor hun persoonlijke account worden verwijderd uit de organisatie en ontvangen een e-mail waarin ze worden geïnformeerd over de wijziging." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Je bent lid van een organisatie die tweestapsaanmelding vereist op je persoonlijke account. Als je tweestapsaanmelding uitschakelt wordt je automatisch uit deze organisaties verwijderd." + }, + "passwordGeneratorPolicyDesc": { + "message": "Stel minimale vereisten in voor de configuratie van de wachtwoordgenerator." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen heeft invloed op de instellingen van je generator." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum aantal woorden" + }, + "defaultType": { + "message": "Standaardtype" + }, + "userPreference": { + "message": "Persoonlijke voorkeur" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Prullenbak doorzoeken" + }, + "permanentlyDelete": { + "message": "Definitief verwijderen" + }, + "permanentlyDeleteSelected": { + "message": "Selectie definitief verwijderen" + }, + "permanentlyDeleteItem": { + "message": "Item definitief verwijderen" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Weet je zeker dat je dit item definitief wilt verwijderen?" + }, + "permanentlyDeletedItem": { + "message": "Definitief verwijderd item" + }, + "permanentlyDeletedItems": { + "message": "Definitief verwijderde items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Je hebt $COUNT$ item(s) geselecteerd voor verwijdering. Weet je zeker dat je al deze items definitief wilt verwijderen?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Definitief verwijderd item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Herstellen" + }, + "restoreSelected": { + "message": "Selectie herstellen" + }, + "restoreItem": { + "message": "Item herstellen" + }, + "restoredItem": { + "message": "Hersteld item" + }, + "restoredItems": { + "message": "Herstelde items" + }, + "restoreItemConfirmation": { + "message": "Weet je zeker dat je dit item wilt herstellen?" + }, + "restoreItems": { + "message": "Items herstellen" + }, + "restoreSelectedItemsDesc": { + "message": "Je hebt $COUNT$ item(s) geselecteerd voor herstel. Weet je zeker dat je al deze items wilt herstellen?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Hersteld item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Wachtwoorden verbergen" + }, + "countryPostalCodeRequiredDesc": { + "message": "We gebruiken deze informatie alleen voor het berekenen van belasting en financiële rapportages." + }, + "includeVAT": { + "message": "Inclusief btw-informatie (optioneel)" + }, + "taxIdNumber": { + "message": "Btw-nummer" + }, + "taxInfoUpdated": { + "message": "Belastinginformatie bijgewerkt." + }, + "setMasterPassword": { + "message": "Hoofdwachtwoord instellen" + }, + "ssoCompleteRegistration": { + "message": "Voor het inloggen met SSO moet je een hoofdwachtwoord instellen voor toegang tot en bescherming van je kluis." + }, + "identifier": { + "message": "Identificatie" + }, + "organizationIdentifier": { + "message": "Organisatie-identificatie" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Inloggen met het single sign-on portaal van je organisatie. Voer de identificatie van je organisatie in om te beginnen." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "Je kunt dit tabblad nu sluiten en doorgaan in de extensie." + }, + "includeAllTeamsFeatures": { + "message": "Alle functionaliteit van Teams plus:" + }, + "includeSsoAuthentication": { + "message": "SSO-authenticatie via SAML2.0 en OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprisebeleid" + }, + "ssoValidationFailed": { + "message": "SSO-validatie mislukt" + }, + "ssoIdentifierRequired": { + "message": "Organisatie-identificatie vereist." + }, + "unlinkSso": { + "message": "SSO ontkoppelen" + }, + "unlinkSsoConfirmation": { + "message": "Weet je zeker dat je SSO voor deze organisatie wilt ontkoppelen?" + }, + "linkSso": { + "message": "SSO koppelen" + }, + "singleOrg": { + "message": "Enkele organisatie" + }, + "singleOrgDesc": { + "message": "Beperk de mogelijkheid voor gebruikers om deel te nemen aan andere organisaties." + }, + "singleOrgBlockCreateMessage": { + "message": "Jouw huidige organisatie heeft een beleid dat je niet toestaat om deel te nemen aan meer dan één organisatie. Neem contact op met de beheerders van jouw organisatie of meld je aan met een ander Bitwarden-account." + }, + "singleOrgPolicyWarning": { + "message": "Leden van de organisatie die geen eigenaar of beheerder zijn en die al lid zijn van een andere organisatie, worden verwijderd uit jouw organisatie." + }, + "requireSso": { + "message": "Single Sign-On Authenticatie" + }, + "requireSsoPolicyDesc": { + "message": "Verplicht gebruikers om in te loggen met de Enterprise Single Sign-On methode." + }, + "prerequisite": { + "message": "Vereisten" + }, + "requireSsoPolicyReq": { + "message": "Voordat je dit beleid kunt activeren moet je eerst het Enkele organisatie-bedrijfsbeleid inschakelen." + }, + "requireSsoPolicyReqError": { + "message": "Enkele Organisatie-beleid is niet ingeschakeld." + }, + "requireSsoExemption": { + "message": "Eigenaren en beheerders van de organisatie zijn vrijgesteld van de handhaving van dit beleid." + }, + "sendTypeFile": { + "message": "Bestand" + }, + "sendTypeText": { + "message": "Tekst" + }, + "createSend": { + "message": "Nieuwe Send aanmaken", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Send verwijderen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "deletionDate": { + "message": "Verwijderingsdatum" + }, + "deletionDateDesc": { + "message": "Deze Send wordt definitief verwijderd op de aangegeven datum en tijd.", + "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" + }, + "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." + }, + "disabled": { + "message": "Uitgeschakeld" + }, + "sendLink": { + "message": "Send-koppeling", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Send-koppeling kopiëren", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Wachtwoord verwijderen" + }, + "removedPassword": { + "message": "Wachtwoord verwijderd" + }, + "removePasswordConfirmation": { + "message": "Weet je zeker dat je dit wachtwoord wilt verwijderen?" + }, + "hideEmail": { + "message": "Verberg mijn e-mailadres voor ontvangers." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Alle Sends" + }, + "maxAccessCountReached": { + "message": "Maximum aantal keren benaderd", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Wordt verwijderd" + }, + "expired": { + "message": "Verlopen" + }, + "searchSends": { + "message": "Sends zoeken", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Deze Send is beveiligd met een wachtwoord. Voer het wachtwoord hieronder in om door te gaan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Weet je het wachtwoord niet? Vraag de afzender om het wachtwoord 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." + }, + "sendHiddenByDefault": { + "message": "Deze Send is standaard verborgen. Je kunt de zichtbaarheid ervan in- en uitschakelen met de knop hieronder.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Bestand downloaden" + }, + "sendAccessUnavailable": { + "message": "De Send die je probeert te benaderen is niet (langer) beschikbaar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Het aan deze Send gekoppelde bestand kon niet gevonden worden.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Er zijn geen Sends beschikbaar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Noodtoegang" + }, + "emergencyAccessDesc": { + "message": "Verleen en beheer noodtoegang voor vertrouwde contacten. Vertrouwde contacten kunnen in noodgevallen toegang vragen om je account te bekijken of overnemen. Bezoek onze helppagina voor meer informatie en details over de werking van \"zero knowledge sharing\"." + }, + "emergencyAccessOwnerWarning": { + "message": "Je bent eigenaar van een of meer organisaties. Als je toegang tot overname geeft aan een noodcontact, kan deze na een overname jouw toegangsrechten als eigenaar gebruiken." + }, + "trustedEmergencyContacts": { + "message": "Vertrouwde noodcontacten" + }, + "noTrustedContacts": { + "message": "Je hebt nog geen noodcontacten, nodig een vertrouwde contactpersoon uit om te beginnen." + }, + "addEmergencyContact": { + "message": "Noodcontact toevoegen" + }, + "designatedEmergencyContacts": { + "message": "Aangewezen als noodcontact" + }, + "noGrantedAccess": { + "message": "Je bent nog door niemand aangewezen als noodcontact." + }, + "inviteEmergencyContact": { + "message": "Noodcontact uitnodigen" + }, + "editEmergencyContact": { + "message": "Noodcontact bewerken" + }, + "inviteEmergencyContactDesc": { + "message": "Nodig een nieuw noodcontact uit door hieronder het e-mailadres van hun Bitwarden-account in te vullen. Als ze nog geen Bitwarden-account hebben, krijgen ze de mogelijkheid direct een account aan te maken." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Noodtoegang geïnitieerd" + }, + "emergencyAccessRecoveryApproved": { + "message": "Noodtoegang goedgekeurd" + }, + "viewDesc": { + "message": "Kan alle items in je eigen kluis bekijken." + }, + "takeover": { + "message": "Overnemen" + }, + "takeoverDesc": { + "message": "Kan op jouw account een nieuw hoofdwachtwoord instellen." + }, + "waitTime": { + "message": "Wachttijd" + }, + "waitTimeDesc": { + "message": "Wachttijd tot het automatisch verlenen van toegang." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dagen", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Uitgenodigde gebruiker." + }, + "acceptEmergencyAccess": { + "message": "Je bent uitgenodigd als noodcontact voor bovenstaande gebruiker. Om de uitnodiging te accepteren, moet je inloggen of een nieuw Bitwarden-account aanmaken." + }, + "emergencyInviteAcceptFailed": { + "message": "Kon de uitnodiging niet accepteren. Vraag de gebruiker om een nieuwe uitnodiging te versturen." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Kon de uitnodiging niet accepteren. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Je kunt de instellingen voor noodtoegang van deze gebruiker benaderen zodra je identiteit is bevestigd. We sturen je een e-mail wanneer dat is gerealiseerd." + }, + "requestAccess": { + "message": "Toegang aanvragen" + }, + "requestAccessConfirmation": { + "message": "Weet je zeker dat je noodtoegang wilt aanvragen? Je krijgt toegang na $WAITTIME$ dag(en) of zodra de gebruiker de aanvraag handmatig goedkeurt.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Noodtoegang aangevraagd voor $USER$. We brengen je per e-mail op de hoogte wanneer je verder kunt.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Goedkeuren" + }, + "reject": { + "message": "Afwijzen" + }, + "approveAccessConfirmation": { + "message": "Weet je zeker dat je noodtoegang wilt goedkeuren? Hiermee verleen je $USER$ toegang tot je account $ACTION$.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Noodtoegang goedgekeurd." + }, + "emergencyRejected": { + "message": "Noodtoegang afgewezen" + }, + "passwordResetFor": { + "message": "Wachtwoord opnieuw ingesteld voor $USER$. Je kunt nu inloggen met het nieuwe wachtwoord.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Persoonlijk eigendom" + }, + "personalOwnershipPolicyDesc": { + "message": "Verplicht gebruikers kluisitems op te slaan in een organisatie door de persoonlijke eigendomsoptie te verwijderen." + }, + "personalOwnershipExemption": { + "message": "Eigenaren en beheerders van de organisatie zijn vrijgesteld van de handhaving van dit beleid." + }, + "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." + }, + "disableSend": { + "message": "Send uitschakelen" + }, + "disableSendPolicyDesc": { + "message": "Gebruikers mogen geen Bitwarden Send maken of bewerken. Het verwijderen van een bestaande Send is nog steeds toegestaan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Gebruikers in de organisatie die het beleid van de organisatie kunnen beheren, zijn vrijgesteld van de handhaving van dit beleid." + }, + "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." + }, + "sendOptions": { + "message": "Send-opties", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Stel opties in voor het maken en bewerken van Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Gebruikers die het beleid van de organisatie kunnen beheren, zijn vrijgesteld van de handhaving van dit beleid." + }, + "disableHideEmail": { + "message": "Gebruikers mogen hun e-mailadres niet verbergen voor ontvangers bij het aanmaken of bewerken van een Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Het volgende organisatiebeleid is momenteel van toepassing:" + }, + "sendDisableHideEmailInEffect": { + "message": "Gebruikers mogen hun e-mailadres niet verbergen voor ontvangers bij het aanmaken of bewerken van een Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Bewerkt beleid $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Prijs" + }, + "estimatedTax": { + "message": "Geschatte belasting" + }, + "custom": { + "message": "Aangepast" + }, + "customDesc": { + "message": "Maakt een fijnmazige controle van gebruikersrechten voor geavanceerde configuraties mogelijk." + }, + "permissions": { + "message": "Rechten" + }, + "accessEventLogs": { + "message": "Eventlogs" + }, + "accessImportExport": { + "message": "Importeren/exporteren" + }, + "accessReports": { + "message": "Rapporten" + }, + "missingPermissions": { + "message": "Je hebt geen rechten om deze actie uit te voeren." + }, + "manageAllCollections": { + "message": "Alle verbindingen beheren" + }, + "createNewCollections": { + "message": "Nieuwe verzamelingen aanmaken" + }, + "editAnyCollection": { + "message": "Iedere verzameling bewerken" + }, + "deleteAnyCollection": { + "message": "Iedere verzameling verwijderen" + }, + "manageAssignedCollections": { + "message": "Toegewezen collecties beheren" + }, + "editAssignedCollections": { + "message": "Toegewezen verzamelingen bewerken" + }, + "deleteAssignedCollections": { + "message": "Toegewezen verzamelingen verwijderen" + }, + "manageGroups": { + "message": "Groepen beheren" + }, + "managePolicies": { + "message": "Beleid beheren" + }, + "manageSso": { + "message": "SSO beheren" + }, + "manageUsers": { + "message": "Gebruikers beheren" + }, + "manageResetPassword": { + "message": "Wachtwoordherstel beheren" + }, + "disableRequiredError": { + "message": "Je moet handmatig het $POLICYNAME$-beleid uitschakelen voordat je dit beleid kunt uitschakelen.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Een organisatiebeleid heeft invloed op je eigendomsopties." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Een organisatiebeleid heeft het importeren van items in je persoonlijke kluis uitgeschakeld." + }, + "personalOwnershipCheckboxDesc": { + "message": "Schakel persoonlijke eigendom uit voor organisatiegebruikers" + }, + "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." + }, + "sendNameDesc": { + "message": "Een vriendelijke naam om deze Send te beschrijven.", + "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." + }, + "copySendLinkOnSave": { + "message": "Kopieer de link om deze Send te delen bij opslaan naar mijn klembord." + }, + "sendLinkLabel": { + "message": "Send-link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send verstuurt gevoelige, tijdelijke informatie naar anderen op een gemakkelijke en veilige manier.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Leer meer over", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Deel tekst of bestanden met wie je maar wilt." + }, + "sendVaultCardLearnMore": { + "message": "Meer informatie", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "zien", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "hoe het werkt", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "of", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "probeer het nu", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "of", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "meld je aan", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "om het vandaag te proberen.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden-gebruiker $USER_IDENTIFIER$ heeft het volgende met je gedeeld", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "De Bitwarden-gebruiker die deze Send heeft gemaakt heeft ervoor gekozen het e-mailadres te verbergen. Je moet je ervan verzekeren dat je de bron van deze link vertrouwt voordat je de inhoud gebruikt of downloadt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "De opgegeven vervaldatum is niet geldig." + }, + "deletionDateIsInvalid": { + "message": "De opgegeven verwijderdatum is niet geldig." + }, + "expirationDateAndTimeRequired": { + "message": "Een vervaldatum en -tijd zijn vereist." + }, + "deletionDateAndTimeRequired": { + "message": "Een verwijderingsdatum en -tijd zijn vereist." + }, + "dateParsingError": { + "message": "Er is een fout opgetreden bij het opslaan van je verwijder- en vervaldatum." + }, + "webAuthnFallbackMsg": { + "message": "Klik op onderstaande knop om je 2FA te verifiëren." + }, + "webAuthnAuthenticate": { + "message": "Authenticeer WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn wordt niet ondersteund in deze browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn met succes geverifieerd! Je kunt dit tabblad sluiten." + }, + "hintEqualsPassword": { + "message": "Je wachtwoordhint moet anders zijn dan je wachtwoord." + }, + "enrollPasswordReset": { + "message": "Aanmelden voor wachtwoordherstel" + }, + "enrolledPasswordReset": { + "message": "Aangemeld voor wachtwoordherstel" + }, + "withdrawPasswordReset": { + "message": "Teruggetrokken van wachtwoordherstel" + }, + "enrollPasswordResetSuccess": { + "message": "Succesvol aangemeld!" + }, + "withdrawPasswordResetSuccess": { + "message": "Succesvol ingetrokken!" + }, + "eventEnrollPasswordReset": { + "message": "Gebruiker $ID$ heeft zich aangemeld voor assistentie bij wachtwoordherstel.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Gebruiker $ID$ heeft zich teruggetrokken van assistentie bij wachtwoordherstel.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Hoofdwachtwoord opnieuw instellen voor gebruiker $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Sso-link voor gebruiker $ID$ opnieuw instellen", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ heeft voor de eerste keer ingelogd met Sso", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Wachtwoord opnieuw instellen" + }, + "resetPasswordLoggedOutWarning": { + "message": "Doorgaan logt de huidige sessie van $NAME$ uit, waarna deze opnieuw moet aanmelden. Actieve sessies op andere apparaten kunnen mogelijk nog één uur actief blijven.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "deze gebruiker" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen stelt de volgende eisen aan je hoofdwachtwoord:" + }, + "resetPasswordSuccess": { + "message": "Wachtwoord opnieuw ingesteld!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Inschrijving stelt organisatiebeheerders in staat om je hoofdwachtwoord te wijzigen. Weet je zeker dat je wilt inschrijven?" + }, + "resetPasswordPolicy": { + "message": "Hoofdwachtwoord opnieuw instellen" + }, + "resetPasswordPolicyDescription": { + "message": "Beheerders in de organisatie toestaan het hoofdwachtwoord van gebruikers van de organisatie opnieuw in te stellen." + }, + "resetPasswordPolicyWarning": { + "message": "Gebruikers in de organisatie moeten zichzelf inschrijven of automatisch worden ingeschreven voordat beheerders hun hoofdwachtwoord opnieuw kunnen instellen." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatische inschrijving" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Alle gebruikers worden automatisch ingeschreven voor wachtwoordherstel zodra hun uitnodiging wordt geaccepteerd." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Gebruikers die al deel uitmaken van de organisatie worden niet met terugwerkende kracht aangemeld voor wachtwoordherstel. Zij zullen zichzelf moeten inschrijven voordat beheerders hun hoofdwachtwoord kunnen herstellen." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Automatisch nieuwe gebruikers inschrijven" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Reactie organisatiesleutels is null" + }, + "resetPasswordDetailsError": { + "message": "Reactie Wachtwoordhersteldetails is null" + }, + "trashCleanupWarning": { + "message": "Codes die meer dan 30 dagen in de prullenbak zitten worden automatisch verwijderd." + }, + "trashCleanupWarningSelfHosted": { + "message": "Codes die een tijdje in de prullenbak zitten worden automatisch verwijderd." + }, + "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." + }, + "reinviteSelected": { + "message": "Uitnodigingen opnieuw verzenden" + }, + "noSelectedUsersApplicable": { + "message": "Deze actie is niet van toepassing op de geselecteerde gebruikers." + }, + "removeUsersWarning": { + "message": "Weet je zeker dat je de volgende gebruikers wilt verwijderen? Dit proces duurt enkele seconden en kan niet worden onderbroken of geannuleerd." + }, + "theme": { + "message": "Thema" + }, + "themeDesc": { + "message": "Kies een thema voor je webkluis." + }, + "themeSystem": { + "message": "Systeemthema" + }, + "themeDark": { + "message": "Donker" + }, + "themeLight": { + "message": "Licht" + }, + "confirmSelected": { + "message": "Bevestig selectie" + }, + "bulkConfirmStatus": { + "message": "Bulkactie status" + }, + "bulkConfirmMessage": { + "message": "Succesvol bevestigd." + }, + "bulkReinviteMessage": { + "message": "Succesvol opnieuw uitgenodigd." + }, + "bulkRemovedMessage": { + "message": "Succesvol verwijderd" + }, + "bulkFilteredMessage": { + "message": "Uitgezonderd, niet van toepassing voor deze actie." + }, + "fingerprint": { + "message": "Vingerafdruk" + }, + "removeUsers": { + "message": "Gebruikers verwijderen" + }, + "error": { + "message": "Fout" + }, + "resetPasswordManageUsers": { + "message": "Gebruikers beheren moet ingeschakeld zijn met de optie Wachtwoordherstel beheren" + }, + "setupProvider": { + "message": "Providerinstellingen" + }, + "setupProviderLoginDesc": { + "message": "Je bent uitgenodigd om een nieuwe provider in te stellen. Om door te gaan, moet je inloggen of een nieuw Bitwarden-account aanmaken." + }, + "setupProviderDesc": { + "message": "Vul de gegevens hieronder in om de configuratie van de provider te voltooien. Neem contact op met de klantenservice als je vragen hebt." + }, + "providerName": { + "message": "Providernaam" + }, + "providerSetup": { + "message": "De provider is ingesteld." + }, + "clients": { + "message": "Apparaten" + }, + "providerAdmin": { + "message": "Providerbeheerder" + }, + "providerAdminDesc": { + "message": "De gebruiker met de hoogste toegang, die alle aspecten van je provider kan beheren alsmede toegang en klantorganisaties kan beheren." + }, + "serviceUser": { + "message": "Servicegebruiker" + }, + "serviceUserDesc": { + "message": "Servicegebruikers hebben toegang tot alle clientorganisaties en kunnen deze beheren." + }, + "providerInviteUserDesc": { + "message": "Nodig een nieuw gebruikers uit voor je provider door hun Bitwarden-account e-mailadres hieronder in te vullen. Wanneer ze nog geen Bitwarden-account hebben worden ze gevraagd om een nieuw account aan te maken." + }, + "joinProvider": { + "message": "Aansluiten bij provider" + }, + "joinProviderDesc": { + "message": "Je bent uitgenodigd om je aan te sluiten bij de bovenstaande provider. Om de uitnodiging te accepteren, moet je inloggen of een nieuw Bitwarden-account aanmaken." + }, + "providerInviteAcceptFailed": { + "message": "Kan de uitnodiging niet accepteren. Vraag een providerbeheerder om een nieuwe uitnodiging te versturen." + }, + "providerInviteAcceptedDesc": { + "message": "Je krijgt toegang tot deze provider zodra een beheerder je lidmaatschap bevestigt. We sturen je een e-mail wanneer dat gebeurt." + }, + "providerUsersNeedConfirmed": { + "message": "Je hebt gebruikers die hun uitnodiging hebben geaccepteerd, maar die nog moeten worden bevestigd. Gebruikers hebben geen toegang tot de provider totdat ze zijn bevestigd." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "Nieuwe klant-organisatie" + }, + "newClientOrganizationDesc": { + "message": "Maak een nieuwe klantorganisatie aan die aan jou als provider zal worden gekoppeld. Je kunt toegang krijgen tot en deze organisatie beheren." + }, + "addExistingOrganization": { + "message": "Bestaande organisatie toevoegen" + }, + "myProvider": { + "message": "Mijn provider" + }, + "addOrganizationConfirmation": { + "message": "Weet je zeker dat je $ORGANIZATION$ als client wilt toevoegen aan $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organisatie succesvol toegevoegd aan de provider" + }, + "accessingUsingProvider": { + "message": "Organisatie benaderen via provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is uitgeschakeld." + }, + "providerUpdated": { + "message": "Provider bijgewerkt" + }, + "yourProviderIs": { + "message": "Je provider is $PROVIDER$. Ze hebben administratieve- en factuurrechten voor jouw organisatie.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "De organisatie $ORGANIZATION$ is losgekoppeld van jouw provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Weet je zeker dat je deze organisatie wilt loskoppelen? De organisatie zal blijven bestaan maar zal niet langer worden beheerd door de provider." + }, + "add": { + "message": "Toevoegen" + }, + "updatedMasterPassword": { + "message": "Hoofdwachtwoord bijgewerkt" + }, + "updateMasterPassword": { + "message": "Hoofdwachtwoord bijwerken" + }, + "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." + }, + "masterPasswordInvalidWarning": { + "message": "Je hoofdwachtwoord voldoet niet aan het beleid van deze organisatie. Om lid te worden van deze organisatie, moet je nu je hoofdwachtwoord veranderen. Als je doorgaat moet je opnieuw inloggen. Sessies op andere apparaten blijven mogelijk nog een uur actief." + }, + "maximumVaultTimeout": { + "message": "Time-out van de kluis" + }, + "maximumVaultTimeoutDesc": { + "message": "Stel een maximale time-out van de kluis in voor alle gebruikers." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximale time-out van de kluis" + }, + "invalidMaximumVaultTimeout": { + "message": "Ongeldige maximale time-out van de kluis." + }, + "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 time-out voor je kluis is $HOURS$ uur en $MINUTES$ minuten", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "customVaultTimeout": { + "message": "Aangepaste time-out van de kluis" + }, + "vaultTimeoutToLarge": { + "message": "Je kluis time-out is hoger dan het maximum van jouw organisatie." + }, + "disablePersonalVaultExport": { + "message": "Persoonlijke kluis exporteren uitschakelen" + }, + "disablePersonalVaultExportDesc": { + "message": "Verbiedt gebruikers om hun privékluisgegevens te exporteren." + }, + "vaultExportDisabled": { + "message": "Kluis exporteren uitgeschakeld" + }, + "personalVaultExportPolicyInEffect": { + "message": "Organisatiebeleid voorkomt dat je je persoonlijke kluis exporteert." + }, + "selectType": { + "message": "Selecteer Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get Claims From User Info Endpoint" + }, + "additionalScopes": { + "message": "Additional/Custom Scopes (comma delimited)" + }, + "additionalUserIdClaimTypes": { + "message": "Additional/Custom User ID Claim Types (comma delimited)" + }, + "additionalEmailClaimTypes": { + "message": "Additional/Custom Email Claim Types (comma delimited)" + }, + "additionalNameClaimTypes": { + "message": "Additional/Custom Name Claim Types (comma delimited)" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response (acr validation)" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Want Assertions Signed" + }, + "spValidateCertificates": { + "message": "Validate Certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Unsolicited Authentication Response toestaan" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Uitgaande uitlog aanvragen toestaan" + }, + "idpSignAuthenticationRequests": { + "message": "Onderteken authenticatie aanvragen" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuratie is opgeslagen." + }, + "sponsoredFamilies": { + "message": "Gratis Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "Jij en je familie komen in aanmerking voor gratis Bitwarden Families. Verzilver met je persoonlijke e-mail om je gegevens veilig te houden, zelfs als je niet op het werk bent." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Verzilver je gratis Bitwarden Families vandaag om je gegevens veilig te houden, zelfs wanneer je niet aan het werk bent." + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden Families omvat" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium-toegang voor maximaal 6 gebruikers" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Gedeelde collecties voor familiegeheimen" + }, + "badToken": { + "message": "De link is niet langer geldig. Zorg ervoor dat de sponsors de uitnodiging opnieuw versturen." + }, + "reclaimedFreePlan": { + "message": "Gratis abonnement hergebruikt" + }, + "redeem": { + "message": "Verzilveren" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Selecteer de organisatie die je wilt sponsoren" + }, + "familiesSponsoringOrgSelect": { + "message": "Welke gratis Families wil je inwisselen?" + }, + "sponsoredFamiliesEmail": { + "message": "Voer je persoonlijke e-mailadres in om Bitwarden Families te verzilveren" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Als je vertrekt of verwijderd wordt uit deze organisatie, vervalt je Families-plan aan het einde van de factureringsperiode." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accepteer aanbod voor een bestaande organisatie of maak een nieuwe Families-organisatie aan." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Je hebt een gratis Bitwarden Families Plan-organisatie aangeboden gekregen. Om door te gaan, moet je inloggen op het account dat de aanbieding heeft ontvangen." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Kan aanbieding niet accepteren. Verstuur de aanbieding opnieuw via je bedrijfsaccount en probeer het opnieuw." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Kan aanbieding niet accepteren. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Gratis Bitwarden Families-organisatieaanbod verzilveren" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Gratis Bitwarden Families-aanbod succesvol verzilverd" + }, + "redeemed": { + "message": "Verzilverd" + }, + "redeemedAccount": { + "message": "Account verzilverd" + }, + "revokeAccount": { + "message": "Account $NAME$ intrekken", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Sponsoring e-mail opnieuw verzenden naar $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Gratis Families Plan" + }, + "redeemNow": { + "message": "Nu verzilveren" + }, + "recipient": { + "message": "Ontvanger" + }, + "removeSponsorship": { + "message": "Sponsoring verwijderen" + }, + "removeSponsorshipConfirmation": { + "message": "Na het verwijderen van sponsoring ben je verantwoordelijk voor dit abonnement en de bijbehorende facturen. Weet je zeker dat je wilt doorgaan?" + }, + "sponsorshipCreated": { + "message": "Sponsoring aangemaakt" + }, + "revoke": { + "message": "Intrekken" + }, + "emailSent": { + "message": "E-mail verzonden" + }, + "revokeSponsorshipConfirmation": { + "message": "Als je dit account verwijderd is de eigenaar van de Families-organisatie verantwoordelijk voor dit abonnement en de bijbehorende facturen. Weet je zeker dat je wilt doorgaan?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsoring verwijderd" + }, + "ssoKeyConnectorUnavailable": { + "message": "Kan de Key Connector niet bereiken, probeer het later opnieuw." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Hoofdwachtwoord verwijderen" + }, + "removedMasterPassword": { + "message": "Hoofdwachtwoord verwijderd." + }, + "allowSso": { + "message": "SSO-authenticatie toestaan" + }, + "allowSsoDesc": { + "message": "Na het instellen zal uw configuratie worden opgeslagen en kunnen leden zich authenticeren met behulp van hun Identity Provider inloggegevens." + }, + "ssoPolicyHelpStart": { + "message": "Inschakelen", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO-beleid", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "om alle leden inloggen met SSO te verplichten.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO-authenticatie en Enkele Organisatie-beleid zijn vereist voor het instellen van de versleuteling van de Key Connector." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Eenmaal ingelogd, ontsleutelen leden kluisgegevens met hun hoofdwachtwoorden." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Verbind Login met SSO met je zelf gehoste decoderingssleutelserver. Met deze optie kunnen leden kluisgegevens ontsleutelen zonder hoofdwachtwoord." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login met SSO en Key Connector Decryption\" is ingeschakeld. Dit beleid is alleen van toepassing op de eigenaren en beheerders." + }, + "enabledSso": { + "message": "SSO ingeschakeld" + }, + "disabledSso": { + "message": "SSO uitgeschakeld" + }, + "enabledKeyConnector": { + "message": "Key Connector ingeschakeld" + }, + "disabledKeyConnector": { + "message": "Key Connector uigeschakeld" + }, + "keyConnectorWarning": { + "message": "Zodra Key Connector is ingesteld, kunnen Member Decryption Options niet worden gewijzigd." + }, + "migratedKeyConnector": { + "message": "Gemigreerd naar Key Connector" + }, + "paymentSponsored": { + "message": "Geef een betalingsmethode om aan de organisatie te koppelen. Maak je geen zorgen, we brengen niets in rekening tenzij je aanvullende functies kiest of je sponsoring verloopt. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "De sponsoring is verlopen. Je kunt de organisatie die je hebt aangemaakt verwijderen om kosten aan het einde van je proefperiode van 7 dagen te voorkomen. Anders kun je deze pop-up sluiten om de organisatie te behouden en factureringsverantwoordelijkheid te nemen." + }, + "newFamiliesOrganization": { + "message": "Nieuwe Families-oganisatie" + }, + "acceptOffer": { + "message": "Aanbod accepteren" + }, + "sponsoringOrg": { + "message": "Sponsoringorganisatie" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Gelukt! Key Connector bereikt." + }, + "keyConnectorTestFail": { + "message": "Kan Key Connector niet bereiken. Controleer de URL." + }, + "sponsorshipTokenHasExpired": { + "message": "De sponsoring is verlopen." + }, + "freeWithSponsorship": { + "message": "GRATIS met sponsoring" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ velden hierboven vereisen je aandacht.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 veld hierboven vereist je aandacht." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is vereist.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "vereist" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Vereist als Entiteit ID geen URL is." + }, + "openIdOptionalCustomizations": { + "message": "Optionele aanpassingen" + }, + "openIdAuthorityRequired": { + "message": "Vereist als Autoriteit niet geldig is." + }, + "separateMultipleWithComma": { + "message": "Scheid meerdere met kommas." + }, + "sessionTimeout": { + "message": "Je sessie is verlopen. Ga terug en probeer opnieuw in te loggen." + }, + "exportingPersonalVaultTitle": { + "message": "Persoonlijke kluis exporteren" + }, + "exportingOrganizationVaultTitle": { + "message": "Organisatiekluis 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Exporteert alleen de organisatiekluis van $ORGANIZATION$. Geen persoonlijke kluis-items of items van andere organisaties.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Terug naar rapporten" + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "Wat wil je genereren?" + }, + "passwordType": { + "message": "Type wachtwoord" + }, + "regenerateUsername": { + "message": "Gebruikersnaam opnieuw genereren" + }, + "generateUsername": { + "message": "Gebruikersnaam genereren" + }, + "usernameType": { + "message": "Type gebruikersnaam" + }, + "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 e-mail" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Willekeurig" + }, + "randomWord": { + "message": "Willekeurig woord" + }, + "service": { + "message": "Dienst" + } +} diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json new file mode 100644 index 0000000000..09e41acffc --- /dev/null +++ b/apps/web/src/locales/nn/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Kva type oppføring er dette?" + }, + "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": "New URI" + }, + "username": { + "message": "Brukarnamn" + }, + "password": { + "message": "Passord" + }, + "newPassword": { + "message": "Nytt passord" + }, + "passphrase": { + "message": "Passordfrase" + }, + "notes": { + "message": "Notat" + }, + "customFields": { + "message": "Eigendefinert felt" + }, + "cardholderName": { + "message": "Namn til korteigar" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Type" + }, + "expiration": { + "message": "Utløp" + }, + "securityCode": { + "message": "Verifiseringskode (CVC)" + }, + "identityName": { + "message": "Intentitetsnamn" + }, + "company": { + "message": "Firmanamn" + }, + "ssn": { + "message": "Personnummer" + }, + "passportNumber": { + "message": "Passnummer" + }, + "licenseNumber": { + "message": "Førarkortnummer" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "title": { + "message": "Tittel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Frøken" + }, + "dr": { + "message": "Dr․" + }, + "expirationMonth": { + "message": "Utløpsmånad" + }, + "expirationYear": { + "message": "Utløpår" + }, + "authenticatorKeyTotp": { + "message": "Autentiseringsnøkkel (TOTP)" + }, + "folder": { + "message": "Mappe" + }, + "newCustomField": { + "message": "Nytt eigendefinert felt" + }, + "value": { + "message": "Verdi" + }, + "dragToSort": { + "message": "Dra for å sortera" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Skjult" + }, + "cfTypeBoolean": { + "message": "Boolsk" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Remove" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "Ingen mappe", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Legg til mappe" + }, + "editFolder": { + "message": "Rediger mappe" + }, + "baseDomain": { + "message": "Grunndomene", + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "canceled": { + "message": "Canceled" + }, + "close": { + "message": "Close" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "Edit" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "Alle oppføringar" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Adresse 2" + }, + "address3": { + "message": "Adresse 3" + }, + "cityTown": { + "message": "By/tettstad" + }, + "stateProvince": { + "message": "Fylke/område" + }, + "zipPostalCode": { + "message": "Postnummer" + }, + "country": { + "message": "Land" + }, + "shared": { + "message": "Delt" + }, + "attachments": { + "message": "Vedlegg" + }, + "select": { + "message": "Marker" + }, + "addItem": { + "message": "Legg til ei oppføring" + }, + "editItem": { + "message": "Endre oppføring" + }, + "viewItem": { + "message": "Sjå oppføring" + }, + "ex": { + "message": "t.d.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Anna" + }, + "share": { + "message": "Delt" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ er kopiert", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopier verdi", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopier passordet", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopier brukarnamnet", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My Vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Flytt markerte til organisasjon" + }, + "deleteSelected": { + "message": "Slett markerte" + }, + "moveSelected": { + "message": "Flytt markerte" + }, + "selectAll": { + "message": "Marker alle" + }, + "unselectAll": { + "message": "Marker ingen" + }, + "launch": { + "message": "Launch" + }, + "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." + }, + "addedItem": { + "message": "Oppføringar du har lagt til" + }, + "editedItem": { + "message": "Oppføringar du har endra" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ flytta til $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Dei valde oppføringane vart flytta til $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Sletta oppføring" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Vil du verkeleg flytta denne til boss?" + }, + "deletedItem": { + "message": "Oppføringa vart sendt til boss" + }, + "deletedItems": { + "message": "Oppføringar sendt til boss" + }, + "movedItems": { + "message": "Flytta oppføringar" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "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" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "Your Name" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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." + }, + "emailAddress": { + "message": "Email Address" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "Det er inga oppføringar å lista opp." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "Det er inga brukarar å lista opp." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "New Organization" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "Bruk ein annan tofaktormetode for pålogging" + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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": "Bruk ein app for autentisering (til dømes Authy eller Google Authenticator) for å generera tidsavgrensa verifiseringskodar.", + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Continue" + }, + "organization": { + "message": "Organization" + }, + "organizations": { + "message": "Organizations" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "Du har valgt $COUNT$ oppføring(ar) til sletting. Vil du verkeleg sletta dei?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Velg ei mappe som du vil flytta $COUNT$ markert(e) oppføring(ar) til.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Warning" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Legg inn ei liste med domener, skilt med komma. Berre \"grunndomener\" vert godteke. Ikkje skriv inn subdomener (underdomener). Skriv til dømes \"google.com\" i staden for \"www.google.com\". Du kan òg skriva \"androidapp://package.name\" for å knyta ein Android-app mot domener til heimesider." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Rapport over passord som er brukt fleire gongar" + }, + "reusedPasswordsReportDesc": { + "message": "Om ei teneste du nyttar vert avslørt eller kompromittert, vil gjenbruk av passord gjer det enkelt for angriparen å få tilgang til dei andre kontoane du har på nettet. Bruk ulike og unike passord på kontoane og tenestene du har." + }, + "reusedPasswordsFound": { + "message": "Gjenbrukte passord blei funne" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Grunnpris" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Send oppføringa $ID$ til boss.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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": "Boss", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Søk i boss" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Oppføringar får liggja 30 dagar i boss, før dei forsvinn for godt." + }, + "trashCleanupWarningSelfHosted": { + "message": "Oppføringar som har lagt i boss ei stund, blir automatisk sletta." + }, + "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." + }, + "reinviteSelected": { + "message": "Inviter igjen" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Stadfest markerte" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json new file mode 100644 index 0000000000..aab046c284 --- /dev/null +++ b/apps/web/src/locales/pl/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Sejf internetowy $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Jakiego rodzaju jest to 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" + }, + "newPassword": { + "message": "Nowe hasło" + }, + "passphrase": { + "message": "Hasło wyrazowe" + }, + "notes": { + "message": "Notatki" + }, + "customFields": { + "message": "Pola niestandardowe" + }, + "cardholderName": { + "message": "Właściciel karty" + }, + "number": { + "message": "Numer" + }, + "brand": { + "message": "Wydawca" + }, + "expiration": { + "message": "Data wygaśnięcia" + }, + "securityCode": { + "message": "Kod zabezpieczający (CVV)" + }, + "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" + }, + "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ń" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Usuń" + }, + "unassigned": { + "message": "Nieprzypisany" + }, + "noneFolder": { + "message": "Nieprzypisane", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj folder" + }, + "editFolder": { + "message": "Edytuj folder" + }, + "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." + }, + "never": { + "message": "Nigdy" + }, + "toggleVisibility": { + "message": "Pokaż / Ukryj" + }, + "toggleCollapse": { + "message": "Zwiń/rozwiń", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generuj hasło" + }, + "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." + }, + "save": { + "message": "Zapisz" + }, + "cancel": { + "message": "Anuluj" + }, + "canceled": { + "message": "Anulowane" + }, + "close": { + "message": "Zamknij" + }, + "delete": { + "message": "Usuń" + }, + "favorite": { + "message": "Dodaj do ulubionych" + }, + "unfavorite": { + "message": "Usuń z ulubionych" + }, + "edit": { + "message": "Edytuj" + }, + "searchCollection": { + "message": "Szukaj w kolekcji" + }, + "searchFolder": { + "message": "Szukaj w folderze" + }, + "searchFavorites": { + "message": "Szukaj w ulubionych" + }, + "searchType": { + "message": "Szukaj elementu", + "description": "Search item type" + }, + "searchVault": { + "message": "Szukaj w sejfie" + }, + "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" + }, + "typeLoginPlural": { + "message": "Dane logowania" + }, + "typeCardPlural": { + "message": "Karty" + }, + "typeIdentityPlural": { + "message": "Tożsamości" + }, + "typeSecureNotePlural": { + "message": "Bezpieczne notatki" + }, + "folders": { + "message": "Foldery" + }, + "collections": { + "message": "Kolekcje" + }, + "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" + }, + "shared": { + "message": "Udostępnione" + }, + "attachments": { + "message": "Załączniki" + }, + "select": { + "message": "Wybierz" + }, + "addItem": { + "message": "Dodaj element" + }, + "editItem": { + "message": "Edytuj element" + }, + "viewItem": { + "message": "Zobacz element" + }, + "ex": { + "message": "np.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Inne" + }, + "share": { + "message": "Udostępnij" + }, + "moveToOrganization": { + "message": "Przenieś do organizacji" + }, + "valueCopied": { + "message": "Skopiowano $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopiuj wartość", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopiuj hasło", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopiuj nazwę użytkownika", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopiuj numer karty", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiuj kod zabezpieczający", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopiuj URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mój sejf" + }, + "vault": { + "message": "Sejf" + }, + "moveSelectedToOrg": { + "message": "Przenieś zaznaczone do organizacji" + }, + "deleteSelected": { + "message": "Usuń zaznaczone" + }, + "moveSelected": { + "message": "Przenieś zaznaczone" + }, + "selectAll": { + "message": "Zaznacz wszystko" + }, + "unselectAll": { + "message": "Odznacz wszystko" + }, + "launch": { + "message": "Uruchom" + }, + "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." + }, + "addedItem": { + "message": "Element został dodany" + }, + "editedItem": { + "message": "Element został zaktualizowany" + }, + "movedItemToOrg": { + "message": "Element $ITEMNAME$ został przeniesiony do organizacji $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Zaznaczone elementy zostały przeniesione do organizacji $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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" + }, + "deletedItems": { + "message": "Elementy zostały przeniesione do kosza" + }, + "movedItems": { + "message": "Przeniesione elementy" + }, + "overwritePasswordConfirmation": { + "message": "Czy na pewno chcesz zastąpić obecne hasło?" + }, + "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" + }, + "loggedOut": { + "message": "Wylogowano" + }, + "loginExpired": { + "message": "Twoja sesja wygasła." + }, + "logOutConfirmation": { + "message": "Czy na pewno chcesz się wylogować?" + }, + "logOut": { + "message": "Wyloguj się" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Tak" + }, + "no": { + "message": "Nie" + }, + "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" + }, + "emailAddressDesc": { + "message": "Używaj swojego adresu e-mail do logowania." + }, + "yourName": { + "message": "Twoje imię" + }, + "yourNameDesc": { + "message": "Jak powinniśmy cię nazywać?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Podpowiedź do hasła głównego" + }, + "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." + }, + "emailAddress": { + "message": "Adres e-mail" + }, + "yourVaultIsLocked": { + "message": "Sejf jest zablokowany. Wpisz hasło główne, aby kontynuować." + }, + "unlock": { + "message": "Odblokuj" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Zablokuj" + }, + "noItemsInList": { + "message": "Brak elementów." + }, + "noCollectionsInList": { + "message": "Brak kolekcji do wyświetlenia." + }, + "noGroupsInList": { + "message": "Brak grup do wyświetlenia." + }, + "noUsersInList": { + "message": "Brak użytkowników do wyświetlenia." + }, + "noEventsInList": { + "message": "Brak wydarzeń do wyświetlenia." + }, + "newOrganization": { + "message": "Nowa organizacja" + }, + "noOrganizationsList": { + "message": "Nie należysz do żadnej organizacji. Organizacje pozwalają na bezpieczne udostępnianie elementów innym użytkownikom." + }, + "versionNumber": { + "message": "Wersja $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "loginUnavailable": { + "message": "Logowanie jest niedostępne" + }, + "noTwoStepProviders": { + "message": "Konto posiada włączoną opcję logowania dwustopniowego, jednak ta przeglądarka nie wspiera żadnego ze skonfigurowanych mechanizmów autoryzacji dwustopniowej." + }, + "noTwoStepProviders2": { + "message": "Skorzystaj z obsługiwanej przeglądarki internetowej (takiej jak Chrome) i/lub dodaj dodatkowych dostawców, którzy są lepiej wspierani przez przeglądarki (np. aplikacja uwierzytelniająca)." + }, + "twoStepOptions": { + "message": "Opcje logowania dwustopniowego" + }, + "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 serii 4, serii 5 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." + }, + "u2fDesc": { + "message": "Użyj dowolnego klucza bezpieczeństwa FIDO U2F, aby uzyskać dostęp do Twojego konta." + }, + "u2fTitle": { + "message": "Klucz bezpieczeństwa FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Użyj dowolnego klucza bezpieczeństwa WebAuthn, aby uzyskać dostęp do swojego konta." + }, + "webAuthnMigrated": { + "message": "(przeniesiony z FIDO)" + }, + "emailTitle": { + "message": "Adres e-mail" + }, + "emailDesc": { + "message": "Kody weryfikacyjne zostaną wysłane do Ciebie wiadomością e-mail." + }, + "continue": { + "message": "Kontynuuj" + }, + "organization": { + "message": "Organizacja" + }, + "organizations": { + "message": "Organizacje" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Wybierz organizację, do której chcesz przenieść te elementy. Ta czynność spowoduje utratę własności elementów i przenosi te uprawnienia do organizacji." + }, + "collectionsDesc": { + "message": "Edytuj kolekcje zawierające ten element. Tylko użytkownicy organizacji posiadający dostęp do tych kolekcji będą mogli zobaczyć ten element." + }, + "deleteSelectedItemsDesc": { + "message": "Wybrałeś elementy do usunięcia. Czy na pewno chcesz je wszystkie usunąć?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Wybierz folder do którego chcesz przenieść zaznaczone elementy.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Zaznaczone elementy: $COUNT$\nElementy możliwe do przeniesienia: $MOVEABLE_COUNT$\nElementy niemożliwe do przeniesienia: $NONMOVEABLE_COUNT$", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Kod weryfikacyjny (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiuj kod weryfikacyjny" + }, + "warning": { + "message": "Ostrzeżenie" + }, + "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." + }, + "export": { + "message": "Eksportuj" + }, + "exportVault": { + "message": "Eksportuj sejf" + }, + "fileFormat": { + "message": "Format pliku" + }, + "exportSuccess": { + "message": "Dane z sejfu zostały wyeksportowane." + }, + "passwordGenerator": { + "message": "Generator hasła" + }, + "minComplexityScore": { + "message": "Minimalny poziom złożoności" + }, + "minNumbers": { + "message": "Minimalna liczba cyfr" + }, + "minSpecial": { + "message": "Minimalna liczba znaków specjalnych", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Unikaj niejednoznacznych znaków" + }, + "regeneratePassword": { + "message": "Wygeneruj hasło ponownie" + }, + "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" + }, + "passwordHistory": { + "message": "Historia haseł" + }, + "noPasswordsInList": { + "message": "Brak haseł." + }, + "clear": { + "message": "Wyczyść", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Konto zostało zaktualizowane" + }, + "changeEmail": { + "message": "Zmień adres e-mail" + }, + "changeEmailTwoFactorWarning": { + "message": "Kontynuowanie spowoduje zmianę adresu e-mail konta. Nie spowoduje to zmiany adresu używanego do logowania dwustopniowego. Możesz zmienić ten adres w ustawieniach logowania dwustopniowego." + }, + "newEmail": { + "message": "Nowy adres e-mail" + }, + "code": { + "message": "Kod" + }, + "changeEmailDesc": { + "message": "Wysłaliśmy kod weryfikacyjny na adres $EMAIL$. Sprawdź pocztę i wpisz kod, aby ukończyć proces zmiany adresu e-mail.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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ę." + }, + "emailChanged": { + "message": "Adres e-mail został zmieniony" + }, + "logBackIn": { + "message": "Zaloguj się ponownie." + }, + "logBackInOthersToo": { + "message": "Zaloguj się ponownie. Jeśli używasz innych aplikacji Bitwarden, wyloguj się i zaloguj ponownie również w nich." + }, + "changeMasterPassword": { + "message": "Zmień hasło główne" + }, + "masterPasswordChanged": { + "message": "Hasło główne zostało zmienione" + }, + "currentMasterPass": { + "message": "Obecne hasło główne" + }, + "newMasterPass": { + "message": "Nowe hasło główne" + }, + "confirmNewMasterPass": { + "message": "Potwierdź nowe hasło główne" + }, + "encKeySettings": { + "message": "Ustawienia klucza szyfrowania" + }, + "kdfAlgorithm": { + "message": "Algorytm KDF" + }, + "kdfIterations": { + "message": "Iteracje KDF" + }, + "kdfIterationsDesc": { + "message": "Wyższa liczba iteracji KDF pomaga chronić hasło główne przed atakami siłowymi. Zalecamy ustawienie wartości $VALUE$ lub wyższej.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Ustawienie zbyt wysokiej liczby iteracji KDF może skutkować obniżeniem wydajności podczas logowania do Bitwarden (oraz odblokowywania sejfu) na urządzeniach z wolniejszym procesorem. Zalecamy stopniowe zwiększanie tej wartości o $INCREMENT$ i przetestowanie jej na wszystkich swoich urządzeniach.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Zmień KDF" + }, + "encKeySettingsChanged": { + "message": "Ustawienia klucza szyfrowania zostały zaktualizowane" + }, + "dangerZone": { + "message": "Niebezpieczna strefa" + }, + "dangerZoneDesc": { + "message": "Uwaga - te operacje są nieodwracalne!" + }, + "deauthorizeSessions": { + "message": "Zakończ sesje" + }, + "deauthorizeSessionsDesc": { + "message": "Martwisz się, że jesteś zalogowany na innym urządzeniu? Przejdź poniżej, aby wylogować się ze wszystkich komputerów, których wcześniej używałeś. Ta czynność jest zalecana, jeśli korzystałeś z publicznego komputera lub przypadkowo zapisałeś swoje hasło na cudzym urządzeniu. Ta czynność wyczyści również wszystkie sesje z zapamiętanym logowaniem dwustopniowym." + }, + "deauthorizeSessionsWarning": { + "message": "Ta czynność spowoduje wylogowanie z bieżącej sesji, przez co konieczne będzie ponowne zalogowanie się. Zostaniesz również poproszony o ponowne logowanie dwustopniowe, jeśli masz włączoną tę opcję. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę." + }, + "sessionsDeauthorized": { + "message": "Wszystkie sesje zostały zakończone" + }, + "purgeVault": { + "message": "Wyczyść sejf" + }, + "purgedOrganizationVault": { + "message": "Sejf organizacji został wyczyszczony." + }, + "vaultAccessedByProvider": { + "message": "Dostęp do sejfu przez dostawcę." + }, + "purgeVaultDesc": { + "message": "Kontynuuj poniżej, aby usunąć wszystkie elementy i foldery z sejfu. Elementy udostępnione organizacji nie zostaną usunięte." + }, + "purgeOrgVaultDesc": { + "message": "Przejdź poniżej, aby usunąć wszystkie elementy z sejfu organizacji." + }, + "purgeVaultWarning": { + "message": "Wyczyszczenie sejfu jest nieodwracalne. Ta czynność nie może zostać cofnięta." + }, + "vaultPurged": { + "message": "Sejf został wyczyszczony." + }, + "deleteAccount": { + "message": "Usuń konto" + }, + "deleteAccountDesc": { + "message": "Kontynuuj poniżej, aby usunąć konto i wszystkie związane z nim dane." + }, + "deleteAccountWarning": { + "message": "Usunięcie konta jest nieodwracalne. Ta czynność nie może zostać cofnięta." + }, + "accountDeleted": { + "message": "Konto zostało usunięte" + }, + "accountDeletedDesc": { + "message": "Konto zostało zamknięte i wszystkie powiązane z nim dane zostały usunięte." + }, + "myAccount": { + "message": "Moje konto" + }, + "tools": { + "message": "Narzędzia" + }, + "importData": { + "message": "Importuj dane" + }, + "importError": { + "message": "Wystąpił błąd podczas importowania" + }, + "importErrorDesc": { + "message": "Wystąpił problem z danymi, które chcesz zaimportować. Rozwiąż poniższe problemy w Twoim pliku i spróbuj ponownie." + }, + "importSuccess": { + "message": "Dane zostały zaimportowane do sejfu." + }, + "importWarning": { + "message": "Importujesz dane do organizacji $ORGANIZATION$. Dane mogą zostać udostępnione członkom organizacji. Czy chcesz kontynuować?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Dane nie są poprawnie sformatowane. Sprawdź importowany plik i spróbuj ponownie." + }, + "importNothingError": { + "message": "Nic nie zostało zaimportowane." + }, + "importEncKeyError": { + "message": "Wystąpił błąd podczas odszyfrowywania pliku. Klucz szyfrowania nie pasuje do klucza użytego podczas eksportowania danych." + }, + "selectFormat": { + "message": "Wybierz format importowanego pliku" + }, + "selectImportFile": { + "message": "Wybierz plik do zaimportowania" + }, + "orCopyPasteFileContents": { + "message": "lub skopiuj/wklej treść pliku" + }, + "instructionsFor": { + "message": "Instrukcja dla $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opcje" + }, + "optionsDesc": { + "message": "Spersonalizuj swój sejf." + }, + "optionsUpdated": { + "message": "Opcje zostały zaktualizowane" + }, + "language": { + "message": "Język" + }, + "languageDesc": { + "message": "Zmień język używany przez sejf." + }, + "disableIcons": { + "message": "Wyłącz ikony stron" + }, + "disableIconsDesc": { + "message": "Wyświetlaj rozpoznawalną ikonę serwisu obok danych logowania w sejfie." + }, + "enableGravatars": { + "message": "Włącz Gravatary", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Korzystaj ze zdjęć profilowych załadowanych z serwisu gravatar.com." + }, + "enableFullWidth": { + "message": "Włącz układ na całą szerokość", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Rozszerz układ sejfu internetowego na całą szerokość okna przeglądarki." + }, + "default": { + "message": "Domyślny" + }, + "domainRules": { + "message": "Reguły domeny" + }, + "domainRulesDesc": { + "message": "Jeśli używasz tych samych danych logowania na różnych domenach, możesz zaznaczyć tę stronę jako \"ekwiwalent\". \"Globalne\" domeny to domeny utworzone już przez zespół Bitwarden." + }, + "globalEqDomains": { + "message": "Globalne domeny równoważne" + }, + "customEqDomains": { + "message": "Niestandardowe domeny równoważne" + }, + "exclude": { + "message": "Wyklucz" + }, + "include": { + "message": "Dołącz" + }, + "customize": { + "message": "Dostosuj" + }, + "newCustomDomain": { + "message": "Nowa niestandardowa domena" + }, + "newCustomDomainDesc": { + "message": "Wpisz listę domen oddzielonych przecinkami. Dozwolone są tylko \"podstawowe\" domeny. Nie wpisuj subdomen. Przykładowo wpisz \"google.com\", zamiast \"www.google.com\". Możesz również wpisać \"androidapp://nazwa.pakietu\", aby powiązać aplikację Android z innymi domenami." + }, + "customDomainX": { + "message": "Niestandardowa domena $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domeny zostały zaktualizowane" + }, + "twoStepLogin": { + "message": "Logowanie dwustopniowe" + }, + "twoStepLoginDesc": { + "message": "Zabezpiecz swoje konto poprzez wymóg wykonania dodatkowego kroku podczas logowania." + }, + "twoStepLoginOrganizationDesc": { + "message": "Wymagaj logowania dwustopniowego dla użytkowników w Twojej organizacji, poprzez skonfigurowanie dostawców na poziomie organizacji." + }, + "twoStepLoginRecoveryWarning": { + "message": "Włączenie logowania dwustopniowego można trwale zablokować konto Bitwarden. Kod odzyskiwania pozwala na dostęp do konta w przypadku, gdy nie będziesz mógł skorzystać ze standardowego dostawcy logowania dwustopniowego (np. w przypadku utraty urządzenia). Pomoc techniczna Bitwarden nie będzie w stanie Ci pomóc, jeśli stracisz dostęp do swojego konta. Zalecamy zapisanie lub wydrukowanie kodu odzyskiwania i przechowywanie go w bezpiecznym miejscu." + }, + "viewRecoveryCode": { + "message": "Wyświetl kod odzyskiwania" + }, + "providers": { + "message": "Dostawcy", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Włącz" + }, + "enabled": { + "message": "Włączone" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Konto Premium" + }, + "premiumRequired": { + "message": "Konto Premium jest wymagane" + }, + "premiumRequiredDesc": { + "message": "Konto Premium jest wymagane, aby skorzystać z tej funkcji." + }, + "youHavePremiumAccess": { + "message": "Posiadasz dostęp do funkcji konta Premium" + }, + "alreadyPremiumFromOrg": { + "message": "Posiadasz już dostęp do funkcji konta Premium dzięki organizacji, której jesteś członkiem." + }, + "manage": { + "message": "Zarządzaj" + }, + "disable": { + "message": "Wyłącz" + }, + "twoStepLoginProviderEnabled": { + "message": "Ten dostawca logowania dwustopniowego jest już włączony na koncie." + }, + "twoStepLoginAuthDesc": { + "message": "Wpisz hasło główne, aby zmienić ustawienia logowania dwustopniowego." + }, + "twoStepAuthenticatorDesc": { + "message": "Wykonaj poniższe kroki, aby aktywować logowanie dwustopniowe przez aplikację uwierzytelniającą:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Pobierz aplikację uwierzytelniającą" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Potrzebujesz aplikacji uwierzytelniającej? Pobierz jedną z nich" + }, + "iosDevices": { + "message": "Urządzenia z systemem iOS" + }, + "androidDevices": { + "message": "Urządzenia z systemem Android" + }, + "windowsDevices": { + "message": "Urządzenia z systemem Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Te aplikacje uwierzytelniające są zalecane, jednak inne również będą działać." + }, + "twoStepAuthenticatorScanCode": { + "message": "Zeskanuj kod QR w aplikacji uwierzytelniającej" + }, + "key": { + "message": "Klucz" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Wpisz 6-cyfrowy kod weryfikacyjny z aplikacji uwierzytelniającej" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Jeśli chcesz dodać inne urządzenie, poniżej znajdziesz kod QR (lub klucz) wymagany przez aplikację uwierzytelniającą." + }, + "twoStepDisableDesc": { + "message": "Czy na pewno chcesz wyłączyć tego dostawcę logowania dwustopniowego?" + }, + "twoStepDisabled": { + "message": "Dostawca logowania dwustopniowego został wyłączony." + }, + "twoFactorYubikeyAdd": { + "message": "Dodaj nowy klucz YubiKey do swojego konta" + }, + "twoFactorYubikeyPlugIn": { + "message": "Włóż YubiKey do portu USB swojego komputera." + }, + "twoFactorYubikeySelectKey": { + "message": "Wybierz poniżej pierwsze wolne pole YubiKey." + }, + "twoFactorYubikeyTouchButton": { + "message": "Dotknij przycisku YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Zapisz formularz." + }, + "twoFactorYubikeyWarning": { + "message": "Z powodu ograniczeń platformy, klucze YubiKey nie mogą być używane we wszystkich aplikacjach Bitwarden. Musisz włączyć inną metodę logowania dwustopniowego, aby zachować dostęp do konta w pozostałych sytuacjach. Wspierane platformy:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Sejf internetowy, aplikacja desktopowa, wiersz poleceń i rozszerzenia dla wszystkich przeglądarek na urządzeniu posiadającym port USB akceptujący Twój klucz YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Aplikacje mobilne na urządzeniach obsługujących NFC lub posiadające port USB, który akceptuje klucz YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Klucz U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Klucz WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Obsługa NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Jeden z moich kluczy obsługuje technologię NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Jeśli jeden z Twoich kluczy YubiKey obsługuje NFC (np. YubiKey NEO), otrzymasz powiadomienie na urządzeniach mobilnych za każdym razem, gdy zostanie wykryta dostępność NFC." + }, + "yubikeysUpdated": { + "message": "Klucze YubiKey zostały zaktualizowane" + }, + "disableAllKeys": { + "message": "Wyłącz wszystkie klucze" + }, + "twoFactorDuoDesc": { + "message": "Wpisz informacje o aplikacji Bitwarden z panelu administracyjnego Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Klucz integracji" + }, + "twoFactorDuoSecretKey": { + "message": "Tajny klucz" + }, + "twoFactorDuoApiHostname": { + "message": "Nazwa domeny interfejsu API" + }, + "twoFactorEmailDesc": { + "message": "Wykonaj poniższe kroki, aby aktywować logowanie dwustopniowe przez adres e-mail:" + }, + "twoFactorEmailEnterEmail": { + "message": "Wpisz adres e-mail, na który chcesz otrzymywać kody weryfikacyjne" + }, + "twoFactorEmailEnterCode": { + "message": "Wpisz 6-cyfrowy kod weryfikacyjny z wiadomości e-mail" + }, + "sendEmail": { + "message": "Wyślij wiadomość" + }, + "twoFactorU2fAdd": { + "message": "Dodaj klucz bezpieczeństwa FIDO U2F do swojego konta" + }, + "removeU2fConfirmation": { + "message": "Czy na pewno chcesz usunąć ten klucz bezpieczeństwa?" + }, + "twoFactorWebAuthnAdd": { + "message": "Dodaj klucz bezpieczeństwa WebAuthn do swojego konta" + }, + "readKey": { + "message": "Odczytaj klucz" + }, + "keyCompromised": { + "message": "Klucz został wykradziony." + }, + "twoFactorU2fGiveName": { + "message": "Nadaj kluczowi bezpieczeństwa przyjazną nazwę, aby go łatwiej zidentyfikować." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Podłącz klucz bezpieczeństwa do portu USB komputera i kliknij przycisk \"Odczytaj klucz\"." + }, + "twoFactorU2fTouchButton": { + "message": "Jeśli klucz bezpieczeństwa posiada przycisk, dotknij go." + }, + "twoFactorU2fSaveForm": { + "message": "Zapisz formularz." + }, + "twoFactorU2fWarning": { + "message": "Z powodu ograniczeń platformy, klucze FIDO U2F nie mogą być używane we wszystkich aplikacjach Bitwarden. Musisz włączyć inną metodę logowania dwustopniowego, aby zachować dostęp do konta w pozostałych sytuacjach. Wspierane platformy:" + }, + "twoFactorU2fSupportWeb": { + "message": "Sejf internetowy i rozszerzenia przeglądarki na komputerze/laptopie z przeglądarką obsługującą U2F (Chrome, Opera, Vivaldi lub Firefox z włączoną obsługą FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "Oczekiwanie na dotknięcie klucza bezpieczeństwa" + }, + "twoFactorU2fClickSave": { + "message": "Kliknij przycisk \"Zapisz\", aby włączyć ten klucz bezpieczeństwa dla logowania dwustopniowego." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Wystąpił problem z odczytem klucza bezpieczeństwa. Spróbuj ponownie." + }, + "twoFactorWebAuthnWarning": { + "message": "Z powodu ograniczeń platformy, klucze WebAuthn nie mogą być używane we wszystkich aplikacjach Bitwarden. Musisz włączyć inną metodę logowania dwustopniowego, aby zachować dostęp do konta w pozostałych sytuacjach. Wspierane platformy:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Sejf internetowy i rozszerzenia przeglądarki na komputerze/laptopie z przeglądarką obsługującą WebAuthn (Chrome, Opera, Vivaldi lub Firefox z włączoną obsługą FIDO U2F)." + }, + "twoFactorRecoveryYourCode": { + "message": "Kod odzyskiwania konta Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Nie włączyłeś żadnego dostawcy logowania dwustopniowego. Po włączeniu dostawcy wróć tutaj, aby odczytać swój kod odzyskiwania." + }, + "printCode": { + "message": "Wydrukuj kod", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Raporty" + }, + "reportsDesc": { + "message": "Zidentyfikuj i napraw luki bezpieczeństwa na swoich kontach online, klikając raporty poniżej." + }, + "unsecuredWebsitesReport": { + "message": "Niezabezpieczone witryny" + }, + "unsecuredWebsitesReportDesc": { + "message": "Używanie niezabezpieczonych stron (protokół HTTP) może być niebezpieczne. Jeśli strona na to pozwala, zawsze powinieneś używać protokołu HTTPS, aby Twoje połączenie było szyfrowane." + }, + "unsecuredWebsitesFound": { + "message": "Znaleźliśmy niezabezpieczone strony" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Znaleźliśmy elementy w Twoim sejfie zawierające niezabezpieczone adresy URI. Jeśli witryna to umożliwia, zmień schemat adresu na protokół HTTPS.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Brak niezabezpieczonych elementów w Twoim sejfie." + }, + "inactive2faReport": { + "message": "Raport stron z nieaktywnym logowaniem dwustopniowym" + }, + "inactive2faReportDesc": { + "message": "Logowanie dwustopniowe (2FA) jest ważnym ustawieniem bezpieczeństwa, które pomaga chronić Twoje konto. Jeśli witryna to umożliwia, zawsze powinieneś aktywować logowanie dwustopniowe." + }, + "inactive2faFound": { + "message": "Znaleźliśmy elementy bez włączonej opcji logowania dwustopniowego" + }, + "inactive2faFoundDesc": { + "message": "Znaleźliśmy witryny w sejfie, które mogą nie korzystać z opcji logowania dwustopniowego (według 2fa.directory). Włącz logowanie dwustopniowe, aby dodatkowo zabezpieczyć te konta.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Nie znaleźliśmy w sejfie stron z wyłączoną opcją logowania dwustopniowego." + }, + "instructions": { + "message": "Instrukcje" + }, + "exposedPasswordsReport": { + "message": "Ujawnione hasła" + }, + "exposedPasswordsReportDesc": { + "message": "Ujawnione hasła to hasła odkryte w znanych wyciekach danych, które zostały publicznie wydane lub sprzedane w sieci przez hakerów." + }, + "exposedPasswordsFound": { + "message": "Znaleźliśmy ujawnione hasła" + }, + "exposedPasswordsFoundDesc": { + "message": "Znaleźliśmy elementy w sejfie, które zawierają ujawnione hasła w znanych wyciekach danych. Zmień te hasła.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Brak elementów zawierających ujawnione hasła w znanych wyciekach danych." + }, + "checkExposedPasswords": { + "message": "Sprawdź ujawnione hasła" + }, + "exposedXTimes": { + "message": "Ujawnione $COUNT$ raz(y)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Słabe hasła" + }, + "weakPasswordsReportDesc": { + "message": "Słabe hasła mogą być łatwo odgadnięte przez hakerów i zautomatyzowane narzędzia używane do łamania haseł. Generator haseł Bitwarden tworzy silne hasła." + }, + "weakPasswordsFound": { + "message": "Znaleźliśmy słabe hasła" + }, + "weakPasswordsFoundDesc": { + "message": "Znaleźliśmy elementy w sejfie, które zawierają słabe hasła. Zaktualizuj je na silniejsze hasła.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Brak elementów zawierających słabe hasła." + }, + "reusedPasswordsReport": { + "message": "Raport identycznych haseł" + }, + "reusedPasswordsReportDesc": { + "message": "Jeśli używasz tego samego hasła w różnych miejscach, to w przypadku jego ujawnienia w jednej usłudze, hakerzy mogą uzyskać dostęp do wielu Twoich kont. Powinieneś używać unikalnych haseł dla każdego z kont lub usług." + }, + "reusedPasswordsFound": { + "message": "Znaleźliśmy identyczne hasła" + }, + "reusedPasswordsFoundDesc": { + "message": "Znaleźliśmy hasła, które powtarzają się w sejfie. Zmień je, aby były unikalne.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Nie znaleźliśmy identycznych haseł w sejfie." + }, + "reusedXTimes": { + "message": "Wykorzystane $COUNT$ razy", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Raport naruszeń danych" + }, + "breachDesc": { + "message": "\"Wyciek\" jest zdarzeniem, w którym hakerzy uzyskali nielegalny dostęp do danych serwisu, a następnie je upublicznili. Przejrzyj rodzaj danych, które zostały naruszone (adresy e-mail, hasła, karty kredytowe itp.) i podejmij odpowiednie działania, takie jak zmiana hasła." + }, + "breachCheckUsernameEmail": { + "message": "Sprawdź nazwy użytkownika lub adresy e-mail, których używasz." + }, + "checkBreaches": { + "message": "Sprawdź naruszenia" + }, + "breachUsernameNotFound": { + "message": "Nazwa użytkownika $USERNAME$ nie została znaleziona w żadnym znanym wycieku danych.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Dobra wiadomość", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "Nazwa użytkownika $USERNAME$ została znaleziona w wyciekach danych.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Znaleźliśmy naruszone konta" + }, + "compromisedData": { + "message": "Wykradzione dane" + }, + "website": { + "message": "Strona" + }, + "affectedUsers": { + "message": "Liczba poszkodowanych użytkowników" + }, + "breachOccurred": { + "message": "Data wystąpienia naruszenia" + }, + "breachReported": { + "message": "Data zgłoszenia naruszenia" + }, + "reportError": { + "message": "Wystąpił błąd podczas próby załadowania raportu. Spróbuj ponownie" + }, + "billing": { + "message": "Płatności" + }, + "accountCredit": { + "message": "Dostępne środki", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo konta", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Dodaj środki", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Kwota", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Dodane środki pojawią się na twoim koncie po przetworzeniu płatności. Niektóre metody płatności mogą być przetwarzane dłużej niż inne." + }, + "makeSureEnoughCredit": { + "message": "Upewnij się, że na koncie posiadasz wystarczająca ilość środków do dokonania tego zakupu. Jeśli na koncie nie ma wystarczających środków, do opłacenia brakującej różnicy zostanie użyta domyślna metoda płatności. Możesz też dodać środki do swojego konta na stronie Płatności." + }, + "creditAppliedDesc": { + "message": "Środki dodane do konta mogą zostać użyte do dokonywania płatności. Dostępne środki będą automatycznie wykorzystane do opłacenia faktur wygenerowanych dla tego konta." + }, + "goPremium": { + "message": "Przejdź na konto Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Konto Premium zostało zaktualizowane." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Zaktualizuj swoje konto do konta Premium i odblokuj dodatkowe funkcje." + }, + "premiumSignUpStorage": { + "message": "1 GB przestrzeni na zaszyfrowane załączniki." + }, + "premiumSignUpTwoStep": { + "message": "Dodatkowe opcje logowania dwustopniowego, takie jak klucze YubiKey, FIDO U2F oraz Duo." + }, + "premiumSignUpEmergency": { + "message": "Dostęp awaryjny" + }, + "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!" + }, + "premiumPrice": { + "message": "Wszystko to jedynie za $PRICE$ /rok!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Dodatki" + }, + "premiumAccess": { + "message": "Konto Premium" + }, + "premiumAccessDesc": { + "message": "Możesz przyznać konta Premium wszystkim użytkownikom w Twojej organizacji za $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Dodatkowa przestrzeń (GB)" + }, + "additionalStorageGbDesc": { + "message": "# dodatkowych GB" + }, + "additionalStorageIntervalDesc": { + "message": "Twój plan zawiera $SIZE$ szyfrowanej przestrzeni. Możesz zwiększyć rozmiar dostępnej przestrzeni za $PRICE$ za GB/$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Podsumowanie" + }, + "total": { + "message": "Łącznie" + }, + "year": { + "message": "rok" + }, + "month": { + "message": "miesiąc" + }, + "monthAbbr": { + "message": "m-c", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Płatność zostanie zrealizowana natychmiast i będzie powtarzana corocznie. Możesz zrezygnować z niej w dowolnej chwili." + }, + "paymentCharged": { + "message": "Płatność zostanie zrealizowana natychmiast i będzie powtarzana co $INTERVAL$. Możesz zrezygnować z niej w dowolnej chwili.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Twój plan zawiera 7-dniowy okres próbny. W tym czasie nie poniesiesz żadnych kosztów. Możesz zrezygnować z niego w każdej chwili." + }, + "paymentInformation": { + "message": "Informacje o płatności" + }, + "billingInformation": { + "message": "Informacje o płatności" + }, + "creditCard": { + "message": "Karta płatnicza" + }, + "paypalClickSubmit": { + "message": "Kliknij przycisk PayPal, aby zalogować się do konta PayPal, a następnie kliknij przycisk Prześlij poniżej, aby kontynuować." + }, + "cancelSubscription": { + "message": "Anuluj subskrypcję" + }, + "subscriptionCanceled": { + "message": "Subskrypcja została anulowana." + }, + "pendingCancellation": { + "message": "Oczekiwanie na anulowanie" + }, + "subscriptionPendingCanceled": { + "message": "Subskrypcja została oznaczona do anulowania na koniec obecnego okresu rozliczeniowego." + }, + "reinstateSubscription": { + "message": "Przywróć subskrypcję" + }, + "reinstateConfirmation": { + "message": "Czy na pewno chcesz cofnąć anulowanie subskrypcji i przywrócić ją?" + }, + "reinstated": { + "message": "Subskrypcja została przywrócona." + }, + "cancelConfirmation": { + "message": "Czy na pewno chcesz anulować? Dostęp do wszystkich funkcji związanych z tą subskrypcją zostanie wyłączony na koniec tego okresu rozliczeniowego." + }, + "canceledSubscription": { + "message": "Subskrypcja została anulowana." + }, + "neverExpires": { + "message": "Nigdy nie wygasa" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Następna opłata" + }, + "details": { + "message": "Szczegóły" + }, + "downloadLicense": { + "message": "Pobierz licencję" + }, + "updateLicense": { + "message": "Zaktualizuj licencję" + }, + "updatedLicense": { + "message": "Licencja została zaktualizowana" + }, + "manageSubscription": { + "message": "Zarządzaj subskrypcją" + }, + "storage": { + "message": "Przestrzeń" + }, + "addStorage": { + "message": "Dodaj przestrzeń" + }, + "removeStorage": { + "message": "Usuń przestrzeń" + }, + "subscriptionStorage": { + "message": "Subskrypcja zawiera łącznie $MAX_STORAGE$ GB na przechowywanie zaszyfrowanych plików. Obecnie używasz $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Metoda płatności" + }, + "noPaymentMethod": { + "message": "Nie zarejestrowano żadnej metody płatności." + }, + "addPaymentMethod": { + "message": "Dodaj metodę płatności" + }, + "changePaymentMethod": { + "message": "Zmień metodę płatności" + }, + "invoices": { + "message": "Faktury" + }, + "noInvoices": { + "message": "Brak faktur." + }, + "paid": { + "message": "Zapłacono", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Niezapłacone", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transakcje", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Brak transakcji." + }, + "chargeNoun": { + "message": "Opłata", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Zwrot", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Wszelkie opłaty będą widoczne na wyciągu jako $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Wybierz liczbę GB do dodania" + }, + "gbStorageRemove": { + "message": "GB przestrzeni do usunięcia" + }, + "storageAddNote": { + "message": "Dodanie przestrzeni dyskowej będzie skutkować korektą sumy należności i natychmiastowym obciążeniem konta. Pierwsza opłata zostanie naliczona proporcjonalnie do końca obecnego okresu rozliczeniowego." + }, + "storageRemoveNote": { + "message": "Usunięcie przestrzeni dyskowej spowoduje korektę należności, która zostanie wykonana w następnym okresie rozliczeniowym." + }, + "adjustedStorage": { + "message": "Zmieniono $AMOUNT$ GB przestrzeni.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Skontaktuj się z działem obsługi klienta" + }, + "updatedPaymentMethod": { + "message": "Metoda płatności została zaktualizowana." + }, + "purchasePremium": { + "message": "Kup konto Premium" + }, + "licenseFile": { + "message": "Plik licencji" + }, + "licenseFileDesc": { + "message": "Plik licencji zostanie nazwany np. $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Aby aktywować konto Premium, musisz przesłać plik licencyjny." + }, + "uploadLicenseFileOrg": { + "message": "Aby utworzyć organizację na własnym serwerze, musisz przesłać plik licencyjny." + }, + "accountEmailMustBeVerified": { + "message": "Adres e-mail przypisany do Twojego konta musi zostać zweryfikowany." + }, + "newOrganizationDesc": { + "message": "Organizacje pozwalają Ci udostępniać części sejfu, a także zarządzać użytkownikami w jednostkach takich jak rodzina, mały zespół lub duża firma." + }, + "generalInformation": { + "message": "Informacje ogólne" + }, + "organizationName": { + "message": "Nazwa organizacji" + }, + "accountOwnedBusiness": { + "message": "To konto jest własnością firmy." + }, + "billingEmail": { + "message": "Adres rozliczeniowy" + }, + "businessName": { + "message": "Nazwa firmy" + }, + "chooseYourPlan": { + "message": "Wybierz swój plan" + }, + "users": { + "message": "Użytkownicy" + }, + "userSeats": { + "message": "Stanowiska użytkowników" + }, + "additionalUserSeats": { + "message": "Dodatkowe stanowiska użytkowników" + }, + "userSeatsDesc": { + "message": "# stanowisk użytkowników" + }, + "userSeatsAdditionalDesc": { + "message": "Twój plan zawiera $BASE_SEATS$ stanowisk użytkowników. Możesz dodać dodatkowych użytkowników za $SEAT_PRICE$ za użytkownika /miesiąc.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Ilu stanowisk potrzebujesz? W razie potrzeby będziesz mógł także dodać kolejne stanowiska później." + }, + "planNameFree": { + "message": "Darmowy", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Dla celów testowych lub użytku osobistego możesz udostępniać elementy $COUNT$ innym użytkownikom.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Rodzinny" + }, + "planDescFamilies": { + "message": "Dla użytku osobistego, aby udostępniać rodzinie i przyjaciołom." + }, + "planNameTeams": { + "message": "Zespoły" + }, + "planDescTeams": { + "message": "Dla firm i innych zorganizowanych zespołów." + }, + "planNameEnterprise": { + "message": "Przedsiębiorstwo" + }, + "planDescEnterprise": { + "message": "Dla firm i innych dużych organizacji." + }, + "freeForever": { + "message": "Darmowy na zawsze" + }, + "includesXUsers": { + "message": "zawiera $COUNT$ użytkowników", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Dodatkowi użytkownicy" + }, + "costPerUser": { + "message": "$COST$ na użytkownika", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Ograniczony do $COUNT$ użytkowników (łącznie z Tobą)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Ograniczony do $COUNT$ kolekcji", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Dodaj i udostępnij maksymalnie $COUNT$ użytkownikom", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Dodaj i udostępnij nieograniczonej liczbie użytkowników" + }, + "createUnlimitedCollections": { + "message": "Utwórz nieograniczoną liczbę kolekcji" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ szyfrowanej przestrzeni", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Samodzielnie hostowane środowisko (opcjonalnie)" + }, + "usersGetPremium": { + "message": "Użytkownicy uzyskują dostęp do kont Premium" + }, + "controlAccessWithGroups": { + "message": "Kontroluj dostęp z użyciem grup użytkowników" + }, + "syncUsersFromDirectory": { + "message": "Synchronizuj użytkowników i grupy z użyciem katalogu" + }, + "trackAuditLogs": { + "message": "Śledź działania użytkowników dzięki dziennikom audytu" + }, + "enforce2faDuo": { + "message": "Wymagaj logowania dwustopniowego poprzez Duo" + }, + "priorityCustomerSupport": { + "message": "Priorytetowe wsparcie klienta" + }, + "xDayFreeTrial": { + "message": "$COUNT$-dniowy okres próbny z możliwością rezygnacji w każdej chwili", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Miesięcznie" + }, + "annually": { + "message": "Rocznie" + }, + "basePrice": { + "message": "Cena netto" + }, + "organizationCreated": { + "message": "Organizacja została utworzona" + }, + "organizationReadyToGo": { + "message": "Twoja nowa organizacja jest gotowa!" + }, + "organizationUpgraded": { + "message": "Organizacja została zaktualizowana." + }, + "leave": { + "message": "Opuść" + }, + "leaveOrganizationConfirmation": { + "message": "Czy na pewno chcesz opuścić tę organizację?" + }, + "leftOrganization": { + "message": "Nie należysz już do tej organizacji." + }, + "defaultCollection": { + "message": "Domyślna kolekcja" + }, + "getHelp": { + "message": "Uzyskaj pomoc" + }, + "getApps": { + "message": "Pobierz aplikacje" + }, + "loggedInAs": { + "message": "Zalogowany jako" + }, + "eventLogs": { + "message": "Dziennik zdarzeń" + }, + "people": { + "message": "Użytkownicy" + }, + "policies": { + "message": "Zasady" + }, + "singleSignOn": { + "message": "Logowanie jednokrotne" + }, + "editPolicy": { + "message": "Edytuj zasady" + }, + "groups": { + "message": "Grupy" + }, + "newGroup": { + "message": "Nowa grupa" + }, + "addGroup": { + "message": "Dodaj grupę" + }, + "editGroup": { + "message": "Edytuj grupę" + }, + "deleteGroupConfirmation": { + "message": "Czy na pewno chcesz usunąć tę grupę?" + }, + "removeUserConfirmation": { + "message": "Czy na pewno chcesz usunąć tego użytkownika?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Ostrzeżenie! Ten użytkownik wymaga serwera Key Connector do zarządzania szyfrowaniem. Usunięcie tego użytkownika z organizacji spowoduje trwałe wyłączenie jego konta. Nie możesz cofnąć tej akcji. Czy chcesz kontynuować?" + }, + "externalId": { + "message": "Identyfikator zewnętrzny" + }, + "externalIdDesc": { + "message": "Zewnętrzny identyfikator może zostać użyty jako odniesienie lub połączenie tego zasobu z zewnętrznym systemem, takim jak katalog użytkowników." + }, + "accessControl": { + "message": "Kontrola dostępu" + }, + "groupAccessAllItems": { + "message": "Ta grupa może otwierać i modyfikować wszystkie elementy." + }, + "groupAccessSelectedCollections": { + "message": "Ta grupa posiada dostęp wyłącznie do wybranych kolekcji." + }, + "readOnly": { + "message": "Tylko do odczytu" + }, + "newCollection": { + "message": "Nowa kolekcja" + }, + "addCollection": { + "message": "Dodaj kolekcję" + }, + "editCollection": { + "message": "Edytuj kolekcję" + }, + "deleteCollectionConfirmation": { + "message": "Czy na pewno chcesz usunąć tę kolekcję?" + }, + "editUser": { + "message": "Edytuj użytkownika" + }, + "inviteUser": { + "message": "Zaproś użytkownika" + }, + "inviteUserDesc": { + "message": "Zaproś nowego użytkownika do Twojej organizacji poprzez wpisanie poniżej jego adresu e-mail. Jeśli nie posiada on jeszcze konta Bitwarden, zostanie poproszony o jego utworzenie." + }, + "inviteMultipleEmailDesc": { + "message": "Możesz zaprosić do $COUNT$ użytkowników jednocześnie, wpisując ich adresy e-mail oddzielone przecinkiem.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Ten użytkownik korzysta z logowania dwustopniowego, aby chronić swoje konto." + }, + "userAccessAllItems": { + "message": "Ten użytkownik może otwierać i modyfikować wszystkie elementy." + }, + "userAccessSelectedCollections": { + "message": "Ten użytkownik posiada dostęp wyłącznie do wybranych kolekcji." + }, + "search": { + "message": "Szukaj" + }, + "invited": { + "message": "Zaproszony" + }, + "accepted": { + "message": "Zaakceptowany" + }, + "confirmed": { + "message": "Potwierdzone" + }, + "clientOwnerEmail": { + "message": "Adres e-mail właściciela organizacji" + }, + "owner": { + "message": "Właściciel" + }, + "ownerDesc": { + "message": "Użytkownik z najwyższym uprawnieniem, który może zarządzać wszystkimi ustawieniami organizacji." + }, + "clientOwnerDesc": { + "message": "Ten użytkownik powinien być niezależny od dostawcy. Jeśli dostawca zostanie odłączony od organizacji, użytkownik ten zachowa własność organizacji." + }, + "admin": { + "message": "Administrator" + }, + "adminDesc": { + "message": "Administratorzy posiadają dostęp do wszystkich elementów, kolekcji i użytkowników w Twojej organizacji." + }, + "user": { + "message": "Użytkownik" + }, + "userDesc": { + "message": "Standardowy użytkownik, posiadający dostęp do kolekcji w Twojej organizacji." + }, + "manager": { + "message": "Menedżer" + }, + "managerDesc": { + "message": "Menedżerowie mogą uzyskiwać dostęp do przypisanych kolekcji i zarządzać nimi w organizacji." + }, + "all": { + "message": "Wszyscy" + }, + "refresh": { + "message": "Odśwież" + }, + "timestamp": { + "message": "Sygnatura czasowa" + }, + "event": { + "message": "Zdarzenie" + }, + "unknown": { + "message": "Nieznane" + }, + "loadMore": { + "message": "Załaduj więcej" + }, + "mobile": { + "message": "Komórka", + "description": "Mobile app" + }, + "extension": { + "message": "Rozszerzenie", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Komputer", + "description": "Desktop app" + }, + "webVault": { + "message": "Sejf internetowy" + }, + "loggedIn": { + "message": "Zalogowano." + }, + "changedPassword": { + "message": "Hasło do konta zostało zmienione." + }, + "enabledUpdated2fa": { + "message": "Logowanie dwustopniowe zostało zaktualizowane." + }, + "disabled2fa": { + "message": "Logowanie dwustopniowe zostało wyłączone." + }, + "recovered2fa": { + "message": "Logowanie dwustopniowe zostało wyłączone." + }, + "failedLogin": { + "message": "Logowanie nie powiodło się z powodu błędnego hasła." + }, + "failedLogin2fa": { + "message": "Logowanie nie powiodło się z powodu nieprawidłowego logowania dwustopniowego." + }, + "exportedVault": { + "message": "Sejf został wyeksportowany." + }, + "exportedOrganizationVault": { + "message": "Sejf organizacji został wyeksportowany." + }, + "editedOrgSettings": { + "message": "Ustawienia organizacji zostały zaktualizowane." + }, + "createdItemId": { + "message": "Element $ID$ został utworzony.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Element $ID$ został zaktualizowany.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Element $ID$ został przeniesiony do kosza.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Element $ID$ został przeniesiony do organizacji.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Wyświetlono element $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Hasło dla elementu $ID$ zostało wyświetlone.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Wyświetlono ukryte pole dla elementu $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Wyświetlono kod bezpieczeństwa dla elementu $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Hasło dla elementu $ID$ zostało skopiowane.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Skopiowano ukryte pole dla elementu $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Skopiowano kod bezpieczeństwa dla elementu $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Element $ID$ został automatycznie uzupełniony.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Kolekcja $ID$ została utworzona.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Kolekcja $ID$ została zaktualizowana.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Kolekcja $ID$ została usunięta.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Zasada $ID$ została zaktualizowana.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Grupa $ID$ została utworzona.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Grupa $ID$ została zaktualizowana.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Grupa $ID$ została usunięta.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Użytkownik $ID$ został usunięty.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Załącznik elementu $ID$ został utworzony.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Załącznik elementu $ID$ został usunięty.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Kolekcje elementu $ID$ zostały zaktualizowane.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Użytkownik $ID$ został zaproszony.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Użytkownik $ID$ został potwierdzony.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Użytkownik $ID$ został zaktualizowany.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Grupy dla użytkownika $ID$ zostały zaktualizowane.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Odłącz logowanie jednokrotne SSO dla użytkownika %$ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organizacja $ID$ została utworzona.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organizacja $ID$ została dodana.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organizacja $ID$ została usunięta.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Dostęp do sejfu organizacji $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Urządzenie" + }, + "view": { + "message": "Widok" + }, + "invalidDateRange": { + "message": "Zakres dat jest nieprawidłowy." + }, + "errorOccurred": { + "message": "Wystąpił błąd." + }, + "userAccess": { + "message": "Dostęp użytkownika" + }, + "userType": { + "message": "Typ użytkownika" + }, + "groupAccess": { + "message": "Dostęp grupowy" + }, + "groupAccessUserDesc": { + "message": "Zmień grupy, do których należy użytkownik." + }, + "invitedUsers": { + "message": "Użytkownicy zostali zaproszeni." + }, + "resendInvitation": { + "message": "Wyślij ponownie zaproszenie" + }, + "resendEmail": { + "message": "Wyślij ponownie wiadomość" + }, + "hasBeenReinvited": { + "message": "Użytkownik $USER$ został ponownie zaproszony.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Potwierdź" + }, + "confirmUser": { + "message": "Potwierdź użytkownika" + }, + "hasBeenConfirmed": { + "message": "Użytkownik $USER$ został potwierdzony.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Potwierdź użytkowników" + }, + "usersNeedConfirmed": { + "message": "Posiadasz użytkowników, którzy zaakceptowali zaproszenie, ale muszą jeszcze zostać potwierdzeni. Użytkownicy nie będą posiadali dostępu do organizacji, dopóki nie zostaną potwierdzeni." + }, + "startDate": { + "message": "Data rozpoczęcia" + }, + "endDate": { + "message": "Data zakończenia" + }, + "verifyEmail": { + "message": "Zweryfikuj adres e-mail" + }, + "verifyEmailDesc": { + "message": "Zweryfikuj swój adres e-mail, aby odblokować dostęp do wszystkich funkcji." + }, + "verifyEmailFirst": { + "message": "Najpierw musimy zweryfikować Twój adres e-mail." + }, + "checkInboxForVerification": { + "message": "Sprawdź swoją skrzynkę e-mail, aby uzyskać kod weryfikacyjny." + }, + "emailVerified": { + "message": "Twój adres e-mail został zweryfikowany." + }, + "emailVerifiedFailed": { + "message": "Nie możemy zweryfikować Twojego adresu e-mail. Spróbuj ponownie wysłać wiadomość weryfikacyjną." + }, + "emailVerificationRequired": { + "message": "Weryfikacja adresu e-mail jest wymagana" + }, + "emailVerificationRequiredDesc": { + "message": "Musisz zweryfikować adres e-mail, aby używać tej funkcji." + }, + "updateBrowser": { + "message": "Aktualizuj przeglądarkę" + }, + "updateBrowserDesc": { + "message": "Używasz nieobsługiwanej przeglądarki. Sejf internetowy może działać niewłaściwie." + }, + "joinOrganization": { + "message": "Dołącz do organizacji" + }, + "joinOrganizationDesc": { + "message": "Zostałeś zaproszony do dołączenia do poniższej organizacji. Aby zaakceptować zaproszenie, musisz zalogować się lub utworzyć nowe konto Bitwarden." + }, + "inviteAccepted": { + "message": "Zaproszenie zostało zaakceptowane" + }, + "inviteAcceptedDesc": { + "message": "Dostęp do tej organizacji otrzymasz po potwierdzeniu członkostwa przez administratora. Dostaniesz wtedy wiadomość e-mail." + }, + "inviteAcceptFailed": { + "message": "Nie można zaakceptować zaproszenia. Poproś administratora organizacji o wysłanie nowego zaproszenia." + }, + "inviteAcceptFailedShort": { + "message": "Nie można zaakceptować zaproszenia. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Zapamiętaj adres e-mail" + }, + "recoverAccountTwoStepDesc": { + "message": "Jeśli nie możesz uzyskać dostępu do konta poprzez standardowe metody logowania dwustopniowego, skorzystaj z kodu odzyskiwania, aby wyłączyć wszystkich dostawców logowania dwustopniowego na swoim koncie." + }, + "recoverAccountTwoStep": { + "message": "Przywróć logowanie dwustopniowe do konta" + }, + "twoStepRecoverDisabled": { + "message": "Logowanie dwustopniowe zostało wyłączone na koncie." + }, + "learnMore": { + "message": "Dowiedz się więcej" + }, + "deleteRecoverDesc": { + "message": "Wpisz adres e-mail poniżej, aby odzyskać i usunąć konto." + }, + "deleteRecoverEmailSent": { + "message": "Jeśli Twoje konto istnieje, otrzymasz e-mail z dalszymi instrukcjami." + }, + "deleteRecoverConfirmDesc": { + "message": "Poprosiłeś o usunięcie konta Bitwarden. Kliknij poniższy przycisk, aby to potwierdzić." + }, + "myOrganization": { + "message": "Moja organizacja" + }, + "deleteOrganization": { + "message": "Usuń organizację" + }, + "deletingOrganizationContentWarning": { + "message": "Wprowadź hasło główne, aby potwierdzić usunięcie $ORGANIZATION$ i wszystkich powiązanych danych. Dane sejfu w $ORGANIZATION$ obejmują:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Konta użytkowników pozostaną aktywne po usunięciu, ale nie będą już powiązane z tą organizacją." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Usuwanie organizacji $ORGANIZATION$ jest trwałe i nieodwracalne.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organizacja została usunięta" + }, + "organizationDeletedDesc": { + "message": "Organizacja i wszystkie połączone z nią dane zostały usunięte." + }, + "organizationUpdated": { + "message": "Organizacja została zaktualizowana" + }, + "taxInformation": { + "message": "Informacje podatkowe" + }, + "taxInformationDesc": { + "message": "Dla klientów w USA kod pocztowy jest wymagany, aby spełnić wymagania dotyczące podatku od sprzedaży. W pozostałych krajach możesz opcjonalnie podać numer identyfikacji podatkowej (VAT/GST) i/lub adres, który ma pojawić się na fakturach." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Ulepsz plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Zaktualizuj swoje konto do innego planu, podając poniższe informacje. Upewnij się, że do konta została dodana aktywna metoda płatności.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktura nr $NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Pokaż fakturę" + }, + "downloadInvoice": { + "message": "Pobierz fakturę" + }, + "verifyBankAccount": { + "message": "Weryfikuj konto bankowe" + }, + "verifyBankAccountDesc": { + "message": "Dokonaliśmy dwóch mikro przelewów na konto bankowe (mogą upłynąć 1-2 dni robocze, zanim je zobaczysz). Wpisz te kwoty, aby zweryfikować konto bankowe." + }, + "verifyBankAccountInitialDesc": { + "message": "Płatność z pomocą konta bankowego jest dostępna wyłącznie dla klientów w Stanach Zjednoczonych. Konieczne będzie zweryfikowanie konta bankowego. Wykonamy dwa mikro przelewy w ciągu następnych 1-2 dni roboczych. Wpisz te kwoty na stronie rozliczeń organizacji, aby zweryfikować konto bankowe." + }, + "verifyBankAccountFailureWarning": { + "message": "Brak weryfikacji konta bankowego spowoduje brak dokonania płatności i Twoja subskrypcja zostanie wyłączona." + }, + "verifiedBankAccount": { + "message": "Konto bankowe zostało zweryfikowane." + }, + "bankAccount": { + "message": "Konto bankowe" + }, + "amountX": { + "message": "Kwota $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Numer rozliczeniowy", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Numer konta" + }, + "accountHolderName": { + "message": "Nazwa posiadacza konta" + }, + "bankAccountType": { + "message": "Typ konta" + }, + "bankAccountTypeCompany": { + "message": "Firmowe" + }, + "bankAccountTypeIndividual": { + "message": "Indywidualne (osobiste)" + }, + "enterInstallationId": { + "message": "Wpisz identyfikator instalacji" + }, + "limitSubscriptionDesc": { + "message": "Ustaw limit liczby stanowisk subskrypcji. Po osiągnięciu tego limitu nie będziesz mógł zapraszać nowych użytkowników." + }, + "maxSeatLimit": { + "message": "Maksymalna liczba stanowisk (opcjonalnie)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maksymalny potencjalny koszt stanowisk" + }, + "addSeats": { + "message": "Dodaj stanowiska", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Usuń stanowiska", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Zmiany w subskrypcji spowodują proporcjonalne zmiany w rozliczeniach. Jeśli nowo zaproszeni użytkownicy przekroczą liczbę stanowisk w subskrypcji, otrzymasz proporcjonalną opłatę za dodatkowych użytkowników." + }, + "subscriptionUserSeats": { + "message": "Twoja subskrypcja pozwala na łączną liczbę $COUNT$ użytkowników.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit subskrypcji (opcjonalnie)" + }, + "subscriptionSeats": { + "message": "Liczba stanowisk" + }, + "subscriptionUpdated": { + "message": "Subskrypcja została zaktualizowana" + }, + "additionalOptions": { + "message": "Dodatkowe opcje" + }, + "additionalOptionsDesc": { + "message": "Aby uzyskać dodatkową pomoc w zarządzaniu subskrypcją, skontaktuj się z działem obsługi klienta." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Zmiany w subskrypcji spowodują proporcjonalne zmiany w rozliczeniach. Jeśli nowo zaproszeni użytkownicy przekroczą liczbę stanowisk w subskrypcji, otrzymasz proporcjonalną opłatę za dodatkowych użytkowników." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Zmiany w subskrypcji spowodują proporcjonalne zmiany w rozliczeniach. Jeśli nowo zaproszeni użytkownicy przekroczą liczbę stanowisk w subskrypcji, otrzymasz proporcjonalną opłatę za dodatkowych użytkowników, aż do osiągnięcia limitu maksymalnej liczby stanowisk.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "W obecnym planie nie możesz zaprosić więcej niż $COUNT$ użytkowników.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "W obecnym planie nie możesz zaprosić więcej niż $COUNT$ użytkowników. Aby ulepszyć plan, skontaktuj się z działem obsługi klienta.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Twoja subskrypcja pozwala na utworzenie $COUNT$ użytkowników. Twój plan jest sponsorowany i opłacany przez zewnętrzną organizację.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Zmiany w subskrypcji spowodują proporcjonalne zmiany w rozliczeniach. Nie można zaprosić więcej niż $COUNT$ użytkowników bez zwiększenia liczby stanowisk w subskrypcji.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Stanowiska do dodania" + }, + "seatsToRemove": { + "message": "Stanowiska do usunięcia" + }, + "seatsAddNote": { + "message": "Dodanie stanowisk dla użytkowników będzie skutkować korektą sumy należności i natychmiastowym obciążeniem konta. Pierwsza opłata zostanie naliczona proporcjonalnie do końca obecnego okresu rozliczeniowego." + }, + "seatsRemoveNote": { + "message": "Usunięcie stanowisk dla użytkowników spowoduje korektę należności, która zostanie wykonana w następnym okresie rozliczeniowym." + }, + "adjustedSeats": { + "message": "Stanowiska użytkowników zostały zaktualizowane ($AMOUNT$).", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Klucz został zaktualizowany" + }, + "updateKeyTitle": { + "message": "Zaktualizuj klucz" + }, + "updateEncryptionKey": { + "message": "Zaktualizuj klucz szyfrowania" + }, + "updateEncryptionKeyShortDesc": { + "message": "Używasz przestarzałej metody szyfrowania." + }, + "updateEncryptionKeyDesc": { + "message": "Zdecydowaliśmy się na używanie silniejszych kluczy szyfrowania, które zapewniają lepsze bezpieczeństwo i dostęp do nowych funkcji. Zaktualizowanie klucza szyfrowania jest szybkie i łatwe. Wystarczy wpisać poniżej swoje hasło. Aktualizacja klucza stanie się wkrótce obowiązkowa." + }, + "updateEncryptionKeyWarning": { + "message": "Po zaktualizowaniu klucza szyfrowania, musisz ponownie zalogować się do wszystkich aplikacji Bitwarden, z których obecnie korzystasz (na przykład aplikacje mobilne lub rozszerzenia przeglądarki). Niepowodzenie logowania (podczas którego pobierany jest nowy klucz szyfrowania) może spowodować uszkodzenie danych. Postaramy się wylogować Ciebie automatycznie, jednak może to chwilę potrwać." + }, + "updateEncryptionKeyExportWarning": { + "message": "Wszystkie zaszyfrowane pliki eksportu, które wcześniej zapisałeś, staną się nieprawidłowe." + }, + "subscription": { + "message": "Subskrypcja" + }, + "loading": { + "message": "Ładowanie" + }, + "upgrade": { + "message": "Uaktualnienie" + }, + "upgradeOrganization": { + "message": "Uaktualnij organizację" + }, + "upgradeOrganizationDesc": { + "message": "Ta funkcja nie jest dostępna dla darmowych organizacji. Przejdź na płatny plan, aby odblokować więcej funkcji." + }, + "createOrganizationStep1": { + "message": "Utwórz organizację: Krok 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Zanim utworzysz swoją organizację, musisz utworzyć darmowe konto osobiste." + }, + "refunded": { + "message": "Zwrócono" + }, + "nothingSelected": { + "message": "Nie zaznaczyłeś żadnych elementów." + }, + "acceptPolicies": { + "message": "Zaznaczając tę opcję, akceptujesz:" + }, + "acceptPoliciesError": { + "message": "Nie zaakceptowałeś regulaminu i polityki prywatności." + }, + "termsOfService": { + "message": "Regulamin" + }, + "privacyPolicy": { + "message": "Polityka prywatności" + }, + "filters": { + "message": "Filtry" + }, + "vaultTimeout": { + "message": "Blokowanie sejfu" + }, + "vaultTimeoutDesc": { + "message": "Wybierz kiedy sejf zostanie zablokowany i wykonaj następującą akcję." + }, + "oneMinute": { + "message": "1 minuta" + }, + "fiveMinutes": { + "message": "5 minut" + }, + "fifteenMinutes": { + "message": "15 minut" + }, + "thirtyMinutes": { + "message": "30 minut" + }, + "oneHour": { + "message": "1 godzina" + }, + "fourHours": { + "message": "4 godziny" + }, + "onRefresh": { + "message": "Po restarcie przeglądarki" + }, + "dateUpdated": { + "message": "Zaktualizowano", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Aktualizacja hasła", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organizacja jest wyłączona." + }, + "licenseIsExpired": { + "message": "Licencja wygasła." + }, + "updatedUsers": { + "message": "Użytkownicy zostali zaktualizowani" + }, + "selected": { + "message": "Zaznaczono" + }, + "ownership": { + "message": "Właściciel" + }, + "whoOwnsThisItem": { + "message": "Kto jest właścicielem tego elementu?" + }, + "strong": { + "message": "Silne", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Dobre", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Słabe", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Bardzo słabe", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Słabe hasło główne" + }, + "weakMasterPasswordDesc": { + "message": "Wpisane 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?" + }, + "rotateAccountEncKey": { + "message": "Zmień także mój klucz szyfrowania" + }, + "rotateEncKeyTitle": { + "message": "Zmień klucz szyfrowania" + }, + "rotateEncKeyConfirmation": { + "message": "Czy na pewno chcesz zmienić swój klucz szyfrowania?" + }, + "attachmentsNeedFix": { + "message": "Ten element posiada stare załączniki, które muszą zostać naprawione." + }, + "attachmentFixDesc": { + "message": "To jest stary załącznik, który musi zostać naprawiony. Kliknij, aby dowiedzieć się więcej." + }, + "fix": { + "message": "Napraw", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "W Twoim sejfie istnieją stare załączniki, które muszą zostać naprawione, zanim będziesz mógł zmienić klucz szyfrowania Twojego konta." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Aby zapewnić integralność kluczy szyfrowania, zweryfikuj unikalny identyfikator użytkownika, zanim przejdziesz dalej.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Nie pytaj ponownie o weryfikację unikalnego identyfikatora konta dla zaproszonych użytkowników (niezalecane)", + "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." + }, + "free": { + "message": "Darmowy", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Klucz interfejsu API" + }, + "apiKeyDesc": { + "message": "Twój klucz interfejsu API może zostać użyty do uwierzytelniania dostępu do publicznego interfejsu API Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Zmiana klucza interfejsu API spowoduje unieważnienie poprzedniego klucza. Możesz zmienić klucz interfejsu, jeśli uważasz, że obecny klucz przestał być bezpieczny." + }, + "apiKeyWarning": { + "message": "Twój klucz interfejsu API umożliwia pełny dostęp do organizacji, dlatego powinien być dobrze strzeżony." + }, + "userApiKeyDesc": { + "message": "Twój klucz interfejsu API może zostać użyty do uwierzytelniania dostępu do wiersza poleceń Bitwarden." + }, + "userApiKeyWarning": { + "message": "Twój klucz interfejsu API jest alternatywną metodą uwierzytelniania. Powinien być dobrze strzeżony." + }, + "oauth2ClientCredentials": { + "message": "Dane uwierzytelniające OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Wyświetl klucz interfejsu API" + }, + "rotateApiKey": { + "message": "Zmień klucz interfejsu API" + }, + "selectOneCollection": { + "message": "Musisz wybrać co najmniej jedną kolekcję." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nie byliśmy w stanie obciążyć karty. Sprawdź i opłać niezapłacone faktury wymienione poniżej." + }, + "inAppPurchase": { + "message": "Zakupy w aplikacji" + }, + "cannotPerformInAppPurchase": { + "message": "Nie możesz tego zrobić, kiedy używasz płatności w aplikacji." + }, + "manageSubscriptionFromStore": { + "message": "Musisz zarządzać swoją subskrypcją ze sklepu, w którym były dokonane zakupy w aplikacji." + }, + "minLength": { + "message": "Minimalna długość" + }, + "clone": { + "message": "Klonuj" + }, + "masterPassPolicyDesc": { + "message": "Ustaw minimalne wymagania dla hasła głównego." + }, + "twoStepLoginPolicyDesc": { + "message": "Wymagaj od użytkowników aktywowania logowania dwustopniowego na swoich kontach osobistych." + }, + "twoStepLoginPolicyWarning": { + "message": "Członkowie organizacji, którzy nie są właścicielami lub administratorami i nie posiadają włączonej opcji logowania dwustopniowego na swoim koncie osobistym, zostaną usunięci z organizacji i otrzymają wiadomość z powiadomieniem o zmianie." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Jesteś członkiem organizacji, która wymaga włączonej opcji logowania dwustopniowego na koncie użytkownika. Jeśli wyłączysz wszystkich dostawców logowania dwustopniowego, zostaniesz automatycznie usunięty z tych organizacji." + }, + "passwordGeneratorPolicyDesc": { + "message": "Ustaw minimalne wymagania dla generatora hasła." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji wpływa na ustawienia generatora." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimalna liczba słów" + }, + "defaultType": { + "message": "Domyślny rodzaj" + }, + "userPreference": { + "message": "Ustawienie użytkownika" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Szukaj w koszu" + }, + "permanentlyDelete": { + "message": "Usuń trwale" + }, + "permanentlyDeleteSelected": { + "message": "Usuń trwale zaznaczone" + }, + "permanentlyDeleteItem": { + "message": "Usuń trwale element" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Czy na pewno chcesz usunąć trwale ten element?" + }, + "permanentlyDeletedItem": { + "message": "Element został trwale usunięty" + }, + "permanentlyDeletedItems": { + "message": "Elementy zostały trwale usunięte" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Wybrałeś elementy do trwałego usunięcia. Czy na pewno chcesz je wszystkie usunąć trwale?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Element $ID$ został trwale usunięty.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Przywróć" + }, + "restoreSelected": { + "message": "Przywróć zaznaczone" + }, + "restoreItem": { + "message": "Przywróć element" + }, + "restoredItem": { + "message": "Element został przywrócony" + }, + "restoredItems": { + "message": "Elementy zostały przywrócone" + }, + "restoreItemConfirmation": { + "message": "Czy na pewno chcesz przywrócić ten element?" + }, + "restoreItems": { + "message": "Przywróć elementy" + }, + "restoreSelectedItemsDesc": { + "message": "Wybrałeś elementy do przywrócenia. Czy na pewno chcesz je wszystkie przywrócić?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Element $ID$ został przywrócony.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Ukryj hasła" + }, + "countryPostalCodeRequiredDesc": { + "message": "Potrzebujemy tych informacji tylko do obliczenia podatku od sprzedaży i uzupełnienia deklaracji finansowych." + }, + "includeVAT": { + "message": "Dołącz identyfikator podatkowy VAT/GST (opcjonalnie)" + }, + "taxIdNumber": { + "message": "Identyfikator podatkowy VAT/GST" + }, + "taxInfoUpdated": { + "message": "Informacje podatkowe zostały zaktualizowane." + }, + "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." + }, + "identifier": { + "message": "Identyfikator" + }, + "organizationIdentifier": { + "message": "Identyfikator organizacji" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Zaloguj się za pomocą logowania jednokrotnego SSO swojej organizacji. Aby rozpocząć, wpisz swój identyfikator organizacji." + }, + "enterpriseSingleSignOn": { + "message": "Logowanie jednokrotne" + }, + "ssoHandOff": { + "message": "Możesz teraz zamknąć tę kartę i kontynuować w rozszerzeniu." + }, + "includeAllTeamsFeatures": { + "message": "Wszystkie funkcje zespołów oraz:" + }, + "includeSsoAuthentication": { + "message": "Logowanie jednokrotne SSO za pomocą protokołu SAML2.0 i OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Zasady przedsiębiorstwa" + }, + "ssoValidationFailed": { + "message": "Weryfikacja logowania jednokrotnego SSO nie powiodła się" + }, + "ssoIdentifierRequired": { + "message": "Identyfikator organizacji jest wymagany." + }, + "unlinkSso": { + "message": "Odłącz logowanie jednokrotne SSO" + }, + "unlinkSsoConfirmation": { + "message": "Czy na pewno chcesz odłączyć logowanie jednokrotne SSO dla tej organizacji?" + }, + "linkSso": { + "message": "Połącz logowanie jednokrotne SSO" + }, + "singleOrg": { + "message": "Pojedyncza organizacja" + }, + "singleOrgDesc": { + "message": "Zablokuj użytkownikom możliwość dołączania do innych organizacji." + }, + "singleOrgBlockCreateMessage": { + "message": "Twoja obecna organizacja posiada zasady, które nie pozwalają na dołączanie do więcej niż jednej organizacji. Skontaktuj się z administratorami swojej organizacji lub zarejestruj się z innego konta Bitwarden." + }, + "singleOrgPolicyWarning": { + "message": "Członkowie organizacji, którzy nie są właścicielami lub administratorami i są już członkami innej organizacji zostaną usunięci z Twojej organizacji." + }, + "requireSso": { + "message": "Uwierzytelnianie logowaniem jednokrotnym" + }, + "requireSsoPolicyDesc": { + "message": "Wymagaj używania przez użytkowników logowania jednokrotnego." + }, + "prerequisite": { + "message": "Wymaganie wstępne" + }, + "requireSsoPolicyReq": { + "message": "Najpierw musisz włączyć zasadę pojedynczej organizacji." + }, + "requireSsoPolicyReqError": { + "message": "Zasady pojedynczej organizacji nie są włączone." + }, + "requireSsoExemption": { + "message": "Właściciele i administratorzy organizacji są zwolnieni z przestrzegania wymagań zasad." + }, + "sendTypeFile": { + "message": "Plik" + }, + "sendTypeText": { + "message": "Tekst" + }, + "createSend": { + "message": "Utwórz nową wysyłkę", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Usuń wysyłkę", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Wyłączone" + }, + "sendLink": { + "message": "Link wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopiuj link wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Usuń hasło" + }, + "removedPassword": { + "message": "Hasło zostało usunięte" + }, + "removePasswordConfirmation": { + "message": "Czy na pewno chcesz usunąć hasło?" + }, + "hideEmail": { + "message": "Ukryj mój adres e-mail przed odbiorcami." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Wszystkie wysyłki" + }, + "maxAccessCountReached": { + "message": "Maksymalna liczba dostępów została osiągnięta", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Oczekiwanie na usunięcie" + }, + "expired": { + "message": "Wygasła" + }, + "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." + }, + "sendProtectedPassword": { + "message": "Wysyłka jest chroniona hasłem. Wpisz hasło, aby kontynuować.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Nie znasz hasła? Poproś nadawcę o hasło, 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." + }, + "sendHiddenByDefault": { + "message": "Ta wysyłka jest domyślnie ukryta. Możesz zmienić jej widoczność za pomocą przycisku.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Pobierz plik" + }, + "sendAccessUnavailable": { + "message": "Wysyłka nie istnieje lub nie jest już dostępna.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Plik powiązany z wysyłką nie został znaleziony.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Brak wysyłek do wyświetlenia.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Dostęp awaryjny" + }, + "emergencyAccessDesc": { + "message": "Zarządzaj dostępem awaryjnym dla zaufanych kontaktów. Zaufane kontakty mogą poprosić Cię o przejęcie Twojego konta lub uzyskania dostępu do jego odczytu w awaryjnych przypadkach. Odwiedź naszą stronę pomocy, aby dowiedzieć się jak działa funkcja dostępu awaryjnego." + }, + "emergencyAccessOwnerWarning": { + "message": "Jesteś właścicielem co najmniej jednej organizacji. Jeśli kontaktowi awaryjnemu przyznasz dostęp do swojego konta, będzie mógł użyć wszystkich Twoich uprawnień." + }, + "trustedEmergencyContacts": { + "message": "Zaufane kontakty awaryjne" + }, + "noTrustedContacts": { + "message": "Nie dodałeś nikogo jako kontakt awaryjny. Aby rozpocząć, zaproś zaufany kontakt." + }, + "addEmergencyContact": { + "message": "Dodaj kontakt awaryjny" + }, + "designatedEmergencyContacts": { + "message": "Wyznaczone kontakty awaryjne" + }, + "noGrantedAccess": { + "message": "Nie zostałeś ustawiony jako kontakt awaryjny dla żadnego użytkownika." + }, + "inviteEmergencyContact": { + "message": "Zaproś kontakt awaryjny" + }, + "editEmergencyContact": { + "message": "Edytuj kontakt awaryjny" + }, + "inviteEmergencyContactDesc": { + "message": "Zaproś nowy kontakt awaryjny poprzez wpisanie jego adresu e-mail poniżej. Jeśli nie posiada on jeszcze konta Bitwarden, zostanie poproszony o jego utworzenie." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Dostęp awaryjny został zainicjowany" + }, + "emergencyAccessRecoveryApproved": { + "message": "Dostęp awaryjny został zatwierdzony" + }, + "viewDesc": { + "message": "Może zobaczyć wszystkie elementy w Twoim sejfie." + }, + "takeover": { + "message": "Przejęcie" + }, + "takeoverDesc": { + "message": "Może zresetować Twoje konto za pomocą nowego hasła głównego." + }, + "waitTime": { + "message": "Oczekiwanie" + }, + "waitTimeDesc": { + "message": "Czas wymagany do automatycznego przyznania dostępu." + }, + "oneDay": { + "message": "1 dzień" + }, + "days": { + "message": "$DAYS$ dni", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Użytkownik został zaproszony." + }, + "acceptEmergencyAccess": { + "message": "Zostałeś zaproszony przez powyższego użytkownika do zostania jego kontaktem awaryjnym. Aby zaakceptować zaproszenie, musisz zalogować się lub utworzyć nowe konto Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Nie można zaakceptować zaproszenia. Poproś użytkownika o wysłanie nowego zaproszenia." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Nie można zaakceptować zaproszenia. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Dostęp do konta tego użytkownika otrzymasz po potwierdzeniu swojej tożsamości. Dostaniesz wtedy wiadomość e-mail." + }, + "requestAccess": { + "message": "Poproś o dostęp" + }, + "requestAccessConfirmation": { + "message": "Czy na pewno chcesz poprosić o dostęp awaryjny? Dostęp otrzymasz po zatwierdzeniu żądania lub po upływie określonego czasu ustawionego przez użytkownika.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Poprosiłeś o dostęp awaryjny dla użytkownika $USER$. Po otrzymaniu dostępu, dostaniesz wiadomość e-mail.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Zatwierdź" + }, + "reject": { + "message": "Odrzuć" + }, + "approveAccessConfirmation": { + "message": "Czy na pewno chcesz zatwierdzić dostęp awaryjny? Użytkownik $USER$ uzyska uprawnienie do Twojego konta ($ACTION$).", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Dostęp awaryjny został zatwierdzony." + }, + "emergencyRejected": { + "message": "Dostęp awaryjny został odrzucony" + }, + "passwordResetFor": { + "message": "Zresetowałeś hasło użytkownika $USER$. Możesz zalogować się za pomocą nowego hasła.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Własność osobista" + }, + "personalOwnershipPolicyDesc": { + "message": "Wymagaj od użytkowników zapisywanie elementów do kolekcji organizacji, usuwając opcję własności elementów." + }, + "personalOwnershipExemption": { + "message": "Właściciele i administratorzy organizacji są zwolnieni z przestrzegania wymagań zasad." + }, + "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." + }, + "disableSend": { + "message": "Wyłącz wysyłkę" + }, + "disableSendPolicyDesc": { + "message": "Nie zezwalaj użytkownikom na tworzenie i edytowanie wysyłek. Usunięcie obecnej wysyłki nadal jest dozwolone.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Użytkownicy organizacji, którzy mogą zarządzać zasadami organizacji są zwolnieni z przestrzegania wymagań zasad." + }, + "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." + }, + "sendOptions": { + "message": "Opcje wysyłek", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Zarządzaj ustawieniami tworzenia i edytowania wysyłek.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Użytkownicy organizacji, którzy mogą zarządzać zasadami organizacji są zwolnieni z przestrzegania wymagań zasad." + }, + "disableHideEmail": { + "message": "Nie zezwalaj użytkownikom na ukrywanie ich adresów e-mail przed odbiorcami, podczas tworzenia lub edytowania wysyłek.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Obecnie obowiązujące zasady organizacji:" + }, + "sendDisableHideEmailInEffect": { + "message": "Użytkownicy nie mogą ukrywać swoich adresów e-mail przed odbiorcami, podczas tworzenia lub edytowania wysyłek.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Zasada $ID$ została zaktualizowana.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Cena planu" + }, + "estimatedTax": { + "message": "Podatek" + }, + "custom": { + "message": "Niestandardowe" + }, + "customDesc": { + "message": "Umożliwia zaawansowaną kontrolę uprawnień użytkownika." + }, + "permissions": { + "message": "Uprawnienia" + }, + "accessEventLogs": { + "message": "Dostęp do dziennika zdarzeń" + }, + "accessImportExport": { + "message": "Dostęp do importu i eksportu" + }, + "accessReports": { + "message": "Dostęp do raportów" + }, + "missingPermissions": { + "message": "Nie posiadasz uprawnień do wykonania tej akcji." + }, + "manageAllCollections": { + "message": "Zarządzaj wszystkimi kolekcjami" + }, + "createNewCollections": { + "message": "Utwórz nowe kolekcje" + }, + "editAnyCollection": { + "message": "Edytuj dowolną kolekcję" + }, + "deleteAnyCollection": { + "message": "Usuń dowolną kolekcję" + }, + "manageAssignedCollections": { + "message": "Zarządzaj przypisanymi kolekcjami" + }, + "editAssignedCollections": { + "message": "Edytuj przypisane kolekcje" + }, + "deleteAssignedCollections": { + "message": "Usuń przypisane kolekcje" + }, + "manageGroups": { + "message": "Zarządzaj grupami" + }, + "managePolicies": { + "message": "Zarządzaj zasadami" + }, + "manageSso": { + "message": "Zarządzaj logowaniem jednokrotnym SSO" + }, + "manageUsers": { + "message": "Zarządzaj użytkownikami" + }, + "manageResetPassword": { + "message": "Zarządzaj resetowaniem hasła" + }, + "disableRequiredError": { + "message": "Przed wyłączeniem tej zasady, musisz wyłączyć zasadę $POLICYNAME$.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Zasada organizacji ma wpływ na opcję własności elementów." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Zasada organizacji uniemożliwia importowanie elementów do Twojego sejfu." + }, + "personalOwnershipCheckboxDesc": { + "message": "Wyłącz opcję własności osobistej dla użytkowników organizacji" + }, + "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." + }, + "sendNameDesc": { + "message": "Nazwa wysyłki.", + "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ć." + }, + "copySendLinkOnSave": { + "message": "Po zapisaniu wysyłki, skopiuj link do schowka." + }, + "sendLinkLabel": { + "message": "Link wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Wyślij", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Wysyłaj wrażliwe i krótkotrwałe informacje w łatwy i bezpieczny sposób.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Dowiedz się więcej o funkcji", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Udostępniaj teksty i pliki." + }, + "sendVaultCardLearnMore": { + "message": "Dowiedz się więcej", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "zobacz", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "jak to działa", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "lub", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "wypróbuj teraz", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "lub", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "zarejestruj się", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": ", aby ją wypróbować.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Użytkownik Bitwarden $USER_IDENTIFIER$ udostępnił Tobie", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Użytkownik Bitwarden, który utworzył wysyłkę, zdecydował ukryć swój adres e-mail. Przed użyciem lub pobraniem treści wysyłki upewnij się, że ufasz źródłu tego linku.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Data wygaśnięcia nie jest prawidłowa." + }, + "deletionDateIsInvalid": { + "message": "Data usunięcia nie jest prawidłowa." + }, + "expirationDateAndTimeRequired": { + "message": "Data i czas wygaśnięcia są wymagane." + }, + "deletionDateAndTimeRequired": { + "message": "Data i czas usunięcia są wymagane." + }, + "dateParsingError": { + "message": "Wystąpił błąd podczas zapisywania dat usunięcia i wygaśnięcia." + }, + "webAuthnFallbackMsg": { + "message": "Aby zweryfikować logowanie dwustopniowe, kliknij przycisk poniżej." + }, + "webAuthnAuthenticate": { + "message": "Uwierzytelnianie WebAuthn" + }, + "webAuthnNotSupported": { + "message": "Ta przeglądarka nie obsługuje uwierzytelniania WebAuthn." + }, + "webAuthnSuccess": { + "message": "Uwierzytelnianie WebAuthn zostało zweryfikowane! Możesz zamknąć tę kartę." + }, + "hintEqualsPassword": { + "message": "Podpowiedź do hasła nie może być taka sama jak hasło." + }, + "enrollPasswordReset": { + "message": "Zarejestruj do resetowania hasła" + }, + "enrolledPasswordReset": { + "message": "Użytkownik został zarejestrowany do resetowania hasła" + }, + "withdrawPasswordReset": { + "message": "Wyrejestruj z resetowania hasła" + }, + "enrollPasswordResetSuccess": { + "message": "Użytkownik został zarejestrowany!" + }, + "withdrawPasswordResetSuccess": { + "message": "Użytkownik został wyrejestrowany!" + }, + "eventEnrollPasswordReset": { + "message": "Użytkownik $ID$ został zarejestrowany do resetowania hasła.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Użytkownik $ID$ został wyrejestrowany z resetowania hasła.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Hasło główne dla użytkownika $ID$ zostało zresetowane.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Resetuj link logowania jednokrotnego SSO dla użytkownika $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "Użytkownik $ID$ zalogował się po raz pierwszy przy użyciu logowania jednokrotnego SSO", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Zresetuj hasło" + }, + "resetPasswordLoggedOutWarning": { + "message": "Kontynuowanie spowoduje wylogowanie użytkownika $NAME$ z obecnej sesji i będzie musiał zalogować się ponownie. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "ten użytkownik" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji wymaga, aby hasło główne spełniało następujące wymagania:" + }, + "resetPasswordSuccess": { + "message": "Hasło zostało zresetowane!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Rejestracja zezwala administratorom organizacji na zmianę Twojego hasła głównego. Czy na pewno chcesz się zarejestrować?" + }, + "resetPasswordPolicy": { + "message": "Zresetowanie hasła głównego" + }, + "resetPasswordPolicyDescription": { + "message": "Zezwalaj administratorom organizacji na resetowanie hasła głównego użytkowników." + }, + "resetPasswordPolicyWarning": { + "message": "Użytkownicy w organizacji muszą samodzielnie zarejestrować się do resetowania hasła przez administratorów." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatyczne rejestrowanie użytkowników" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Wszyscy użytkownicy, po zaakceptowaniu zaproszenia, zostaną automatycznie zarejestrowani do resetowania hasła." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Użytkownicy w organizacji muszą samodzielnie zarejestrować się do resetowania hasła przez administratorów." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Automatycznie rejestruj nowych użytkowników" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Odpowiedź kluczy organizacji jest pusta" + }, + "resetPasswordDetailsError": { + "message": "Odpowiedź szczegółów zresetowania hasła jest pusta" + }, + "trashCleanupWarning": { + "message": "Elementy znajdujące się w koszu ponad 30 dni zostaną automatycznie usunięte." + }, + "trashCleanupWarningSelfHosted": { + "message": "Elementy znajdujące się w koszu od dłuższego czasu zostaną automatycznie usunięte." + }, + "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." + }, + "reinviteSelected": { + "message": "Wyślij ponownie zaproszenia" + }, + "noSelectedUsersApplicable": { + "message": "Ta akcja nie dotyczy żadnych zaznaczonych użytkowników." + }, + "removeUsersWarning": { + "message": "Czy na pewno chcesz usunąć następujących użytkowników? Proces może potrwać kilka sekund i nie może zostać przerwany lub anulowany." + }, + "theme": { + "message": "Motyw" + }, + "themeDesc": { + "message": "Wybierz motyw dla sejfu internetowego." + }, + "themeSystem": { + "message": "Użyj motywu systemowego" + }, + "themeDark": { + "message": "Ciemny" + }, + "themeLight": { + "message": "Jasny" + }, + "confirmSelected": { + "message": "Potwierdź zaznaczone" + }, + "bulkConfirmStatus": { + "message": "Status akcji zbiorczej" + }, + "bulkConfirmMessage": { + "message": "Potwierdzono." + }, + "bulkReinviteMessage": { + "message": "Zaproszony ponownie." + }, + "bulkRemovedMessage": { + "message": "Usunięto" + }, + "bulkFilteredMessage": { + "message": "Wykluczono, nie dotyczy tej akcji." + }, + "fingerprint": { + "message": "Unikalny identyfikator konta" + }, + "removeUsers": { + "message": "Usuń użytkowników" + }, + "error": { + "message": "Błąd" + }, + "resetPasswordManageUsers": { + "message": "Zasada \"Zarządzaj użytkownikami\" musi być włączona wraz z uprawnieniem \"Zarządzaj resetowaniem hasła\"" + }, + "setupProvider": { + "message": "Ustawienia dostawcy" + }, + "setupProviderLoginDesc": { + "message": "Zostałeś zaproszony do konfiguracji nowego dostawcy. Aby kontynuować, zaloguj się lub utwórz nowe konto Bitwarden." + }, + "setupProviderDesc": { + "message": "Wpisz dane, aby zakończyć konfigurację dostawcy. W razie pytań skontaktuj się z działem obsługi klienta." + }, + "providerName": { + "message": "Nazwa dostawcy" + }, + "providerSetup": { + "message": "Dostawca został skonfigurowany." + }, + "clients": { + "message": "Klienci" + }, + "providerAdmin": { + "message": "Administrator dostawcy" + }, + "providerAdminDesc": { + "message": "Użytkownik z najwyższym uprawnieniem, który może zarządzać wszystkimi ustawieniami dostawcy oraz uzyskiwać dostęp do organizacji klientów i zarządzać nimi." + }, + "serviceUser": { + "message": "Serwisant" + }, + "serviceUserDesc": { + "message": "Serwisant może uzyskać dostęp do wszystkich klientów organizacji i nimi zarządzać." + }, + "providerInviteUserDesc": { + "message": "Zaproś nowego użytkownika do Twojego dostawcy poprzez wpisanie poniżej jego adresu e-mail. Jeśli nie posiada on jeszcze konta Bitwarden, zostanie poproszony o jego utworzenie." + }, + "joinProvider": { + "message": "Dołącz do dostawcy" + }, + "joinProviderDesc": { + "message": "Zostałeś zaproszony do dołączenia do poniższego dostawcy. Aby zaakceptować zaproszenie, musisz zalogować się lub utworzyć nowe konto Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "Nie można zaakceptować zaproszenia. Poproś administratora o wysłanie nowego zaproszenia." + }, + "providerInviteAcceptedDesc": { + "message": "Dostęp do tego dostawcy otrzymasz po potwierdzeniu członkostwa przez administratora. Dostaniesz wtedy wiadomość e-mail." + }, + "providerUsersNeedConfirmed": { + "message": "Posiadasz użytkowników, którzy zaakceptowali zaproszenie, ale muszą jeszcze zostać potwierdzeni. Użytkownicy nie będą posiadali dostępu do dostawcy, dopóki nie zostaną potwierdzeni." + }, + "provider": { + "message": "Dostawca" + }, + "newClientOrganization": { + "message": "Nowa organizacja klienta" + }, + "newClientOrganizationDesc": { + "message": "Utwórz nową organizację klienta, która będzie powiązana z Tobą jako dostawcą. Będziesz miał dostęp do tej organizacji i będziesz mógł nią zarządzać." + }, + "addExistingOrganization": { + "message": "Dodaj obecną organizację" + }, + "myProvider": { + "message": "Mój dostawca" + }, + "addOrganizationConfirmation": { + "message": "Czy na pewno chcesz dodać $ORGANIZATION$ jako organizację klienta do dostawcy $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organizacja została dodana do dostawcy" + }, + "accessingUsingProvider": { + "message": "Dostęp do organizacji za pomocą dostawcy $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Dostawca jest wyłączony." + }, + "providerUpdated": { + "message": "Dostawca został zaktualizowany" + }, + "yourProviderIs": { + "message": "Twój dostawca to $PROVIDER$. Posiada on uprawnienia administracyjne i rozliczeniowe dla Twojej organizacji.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Organizacja $ORGANIZATION$ została odłączona od Twojego dostawcy.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Czy na pewno chcesz odłączyć tę organizację? Organizacja będzie nadal istnieć, ale nie będzie już zarządzana przez dostawcę." + }, + "add": { + "message": "Dodaj" + }, + "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ę." + }, + "masterPasswordInvalidWarning": { + "message": "Hasło główne nie spełnia wymagań zasad organizacji. Aby dołączyć do organizacji, musisz zaktualizować je. 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ę." + }, + "maximumVaultTimeout": { + "message": "Blokowanie sejfu" + }, + "maximumVaultTimeoutDesc": { + "message": "Ustaw maksymalny czas blokowania sejfu dla wszystkich użytkowników." + }, + "maximumVaultTimeoutLabel": { + "message": "Maksymalny czas blokowania sejfu" + }, + "invalidMaximumVaultTimeout": { + "message": "Maksymalny czas blokowania sejfu jest nieprawidłowy." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Niestandardowy czas blokowania sejfu" + }, + "vaultTimeoutToLarge": { + "message": "Czas blokowania sejfu przekracza limit określony przez organizację." + }, + "disablePersonalVaultExport": { + "message": "Wyłącz eksportowanie osobistego sejfu" + }, + "disablePersonalVaultExportDesc": { + "message": "Zabrania użytkownikom eksportowania ich prywatnych danych sejfu." + }, + "vaultExportDisabled": { + "message": "Eksportowanie sejfu zostało wyłączone" + }, + "personalVaultExportPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie Twojego sejfu." + }, + "selectType": { + "message": "Wybierz rodzaj logowania jednokrotnego SSO" + }, + "type": { + "message": "Rodzaj" + }, + "openIdConnectConfig": { + "message": "Konfiguracja połączenia OpenID" + }, + "samlSpConfig": { + "message": "Konfiguracja dostawcy usługi SAML" + }, + "samlIdpConfig": { + "message": "Konfiguracja dostawcy tożsamości SAML" + }, + "callbackPath": { + "message": "Ścieżka wywołania zwrotnego" + }, + "signedOutCallbackPath": { + "message": "Ścieżka wywołania zwrotnego wylogowania" + }, + "authority": { + "message": "Dostawca tożsamości" + }, + "clientId": { + "message": "Identyfikator klienta" + }, + "clientSecret": { + "message": "Sekret" + }, + "metadataAddress": { + "message": "Adres metadanych" + }, + "oidcRedirectBehavior": { + "message": "Zachowanie przekierowania OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Uzyskaj elementy Claim od punktu końcowego informacji o użytkowniku" + }, + "additionalScopes": { + "message": "Dodatkowe / niestandardowe zakresy (oddzielone przecinkami)" + }, + "additionalUserIdClaimTypes": { + "message": "Dodatkowe / niestandardowe elementy Claim identyfikatora użytkownika (oddzielone przecinkami)" + }, + "additionalEmailClaimTypes": { + "message": "Dodatkowe / niestandardowe elementy Claim adresu e-mail (oddzielone przecinkami)" + }, + "additionalNameClaimTypes": { + "message": "Dodatkowe / niestandardowe elementy Claim nazwy (oddzielone przecinkami)" + }, + "acrValues": { + "message": "Żądane wartości referencyjne klasy kontekstu uwierzytelniania (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Oczekiwano wartości \"acr\" elementu Claim w odpowiedzi (weryfikacja acr)" + }, + "spEntityId": { + "message": "Identyfikator jednostki SP" + }, + "spMetadataUrl": { + "message": "Adres URL metadanych SAML 2.0" + }, + "spAcsUrl": { + "message": "Adres URL usługi Assertion Consumer Service (ACS)" + }, + "spNameIdFormat": { + "message": "Format identyfikatora nazwy" + }, + "spOutboundSigningAlgorithm": { + "message": "Algorytm podpisu wychodzącego" + }, + "spSigningBehavior": { + "message": "Zachowanie przy podpisywaniu" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimalny algorytm podpisu przychodzącego" + }, + "spWantAssertionsSigned": { + "message": "Chcę podpisać asercję" + }, + "spValidateCertificates": { + "message": "Zweryfikuj certyfikaty" + }, + "idpEntityId": { + "message": "Identyfikator jednostki" + }, + "idpBindingType": { + "message": "Typ powiązania" + }, + "idpSingleSignOnServiceUrl": { + "message": "Adres URL logowania jednokrotnego" + }, + "idpSingleLogoutServiceUrl": { + "message": "Adres URL wylogowania jednokrotnego" + }, + "idpX509PublicCert": { + "message": "Certyfikat publiczny X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Algorytm podpisu wychodzącego" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Zezwalaj na niezamówioną odpowiedź uwierzytelniania" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Zezwalaj na wychodzące żądania wylogowania" + }, + "idpSignAuthenticationRequests": { + "message": "Podpisz żądanie autoryzacji" + }, + "ssoSettingsSaved": { + "message": "Konfiguracja logowania jednokrotnego została zapisana." + }, + "sponsoredFamilies": { + "message": "Darmowy plan rodzinny" + }, + "sponsoredFamiliesEligible": { + "message": "Ty i Twoja rodzina kwalifikujecie się do darmowego planu rodzinnego. Wykorzystaj swój osobisty adres e-mail, aby zabezpieczyć swoje dane nawet wtedy, gdy nie jesteś w pracy." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Zrealizuj swój darmowy plan rodzinny, aby zabezpieczyć swoje dane nawet wtedy, gdy nie jesteś w pracy." + }, + "sponsoredFamiliesInclude": { + "message": "Plan rodzinny zawiera" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Konto Premium dla maksymalnie 6 użytkowników" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Udostępnione kolekcje dla sekretów rodziny" + }, + "badToken": { + "message": "Link nie jest już ważny. Poproś sponsora o ponowne wysłanie oferty." + }, + "reclaimedFreePlan": { + "message": "Darmowy plan został odzyskany" + }, + "redeem": { + "message": "Zrealizuj" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Wybierz organizację, którą chcesz sponsorować" + }, + "familiesSponsoringOrgSelect": { + "message": "Jaką darmową ofertę planu rodzinnego chcesz zrealizować?" + }, + "sponsoredFamiliesEmail": { + "message": "Wpisz osobisty adres e-mail, aby uzyskać plan rodzinny" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Jeśli opuścisz lub zostaniesz usunięty z organizacji sponsorującej, Twój plan rodzinny wygaśnie z końcem okresu rozliczeniowego." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Zaakceptuj ofertę dla obecnej organizacji lub utwórz nową organizację rodzinną." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Otrzymałeś ofertę darmowego planu rodzinnego. Aby kontynuować, zaloguj się na konto, które otrzymało ofertę." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Nie można zaakceptować oferty. Wyślij ponownie ofertę z konta i spróbuj ponownie." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Nie można zaakceptować oferty. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Zaakceptuj darmowy plan rodzinny" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Oferta rodzinna została zrealizowana" + }, + "redeemed": { + "message": "Oferta została zrealizowana" + }, + "redeemedAccount": { + "message": "Konto zostało zrealizowane" + }, + "revokeAccount": { + "message": "Unieważnij konto $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Wyślij ponownie wiadomość o sponsoringu do użytkownika $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Darmowy plan rodzinny" + }, + "redeemNow": { + "message": "Zrealizuj teraz" + }, + "recipient": { + "message": "Odbiorca" + }, + "removeSponsorship": { + "message": "Usuń sponsoring" + }, + "removeSponsorshipConfirmation": { + "message": "Po usunięciu sponsoringu, będziesz odpowiedzialny za subskrypcję i powiązane faktury. Czy na pewno chcesz kontynuować?" + }, + "sponsorshipCreated": { + "message": "Sponsoring został utworzony" + }, + "revoke": { + "message": "Unieważnij" + }, + "emailSent": { + "message": "Wiadomość została wysłana" + }, + "revokeSponsorshipConfirmation": { + "message": "Po usunięciu konta, właściciel organizacji rodzinnej będzie odpowiedzialny za subskrypcję i powiązane faktury. Czy na pewno chcesz kontynuować?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsoring został usunięty" + }, + "ssoKeyConnectorUnavailable": { + "message": "Nie można nawiązać połączenia z serwerem Key Connector. Spróbuj ponownie później." + }, + "keyConnectorUrl": { + "message": "Adres URL serwera Key Connector" + }, + "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" + }, + "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ę" + }, + "removeMasterPassword": { + "message": "Usuń hasło główne" + }, + "removedMasterPassword": { + "message": "Hasło główne zostało usunięte." + }, + "allowSso": { + "message": "Zezwalaj na logowanie jednokrotne SSO" + }, + "allowSsoDesc": { + "message": "Użytkownicy będą mogli uwierzytelnić się za pomocą danych logowania dostawcy tożsamości." + }, + "ssoPolicyHelpStart": { + "message": "Włącz", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "zasadę logowania jednokrotnego SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": ", aby wymagać od wszystkich użytkowników logowania jednokrotnego SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Zasady logowania jednokrotnego SSO i pojedynczej organizacji muszą być włączone, aby skonfigurować serwer Key Connector." + }, + "memberDecryptionOption": { + "message": "Opcje odszyfrowania użytkownika" + }, + "memberDecryptionPassDesc": { + "message": "Po uwierzytelnieniu użytkownicy odszyfrują dane sejfu za pomocą hasła głównego." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Połącz logowanie jednokrotne SSO z odszyfrowaniem za pomocą własnego serwera kluczy. Użytkownicy nie będą musieli używać hasła głównego do odszyfrowania sejfu. Aby uzyskać pomoc, skontaktuj się z działem obsługi klienta Bitwarden." + }, + "keyConnectorPolicyRestriction": { + "message": "Logowanie jednokrotne SSO z odszyfrowaniem za pomocą serwera Key Connector jest włączone. Ta zasada dotyczy tylko właścicieli i administratorów." + }, + "enabledSso": { + "message": "Logowanie jednokrotne SSO zostało włączone" + }, + "disabledSso": { + "message": "Logowanie jednokrotne SSO zostało wyłączone" + }, + "enabledKeyConnector": { + "message": "Serwer Key Connector został włączony" + }, + "disabledKeyConnector": { + "message": "Serwer Key Connector został wyłączony" + }, + "keyConnectorWarning": { + "message": "Jeśli użytkownicy zaczną używać serwera Key Connector, organizacja nie będzie mogła powrócić do odszyfrowywania za pomocą hasła głównego. Kontynuuj tylko wtedy, kiedy pewnie wdrażasz i zarządzasz serwerem kluczy." + }, + "migratedKeyConnector": { + "message": "Przeniesiony do serwera Key Connector" + }, + "paymentSponsored": { + "message": "Dodaj metodę płatności, aby powiązać ją z organizacją. Opłata zostanie pobrana dopiero po wybraniu dodatkowych funkcji lub wygaśnięciu oferty sponsoringu." + }, + "orgCreatedSponsorshipInvalid": { + "message": "Oferta sponsoringu wygasła. Możesz usunąć utworzoną organizację, aby uniknąć opłaty na koniec 7-dniowego okresu próbnego. Jeśli chcesz zachować organizację i przyjąć odpowiedzialność za rozliczenia, zamknij ten monit." + }, + "newFamiliesOrganization": { + "message": "Nowa organizacja rodzinna" + }, + "acceptOffer": { + "message": "Zaakceptuj ofertę" + }, + "sponsoringOrg": { + "message": "Organizacja sponsorująca" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Połączenie z serwerem Key Connector zostało nawiązane." + }, + "keyConnectorTestFail": { + "message": "Nie można nawiązać połączenia z serwerem Key Connector. Sprawdź adres URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Oferta sponsoringu wygasła." + }, + "freeWithSponsorship": { + "message": "DARMOWY ze sponsoringiem" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ pól powyżej wymaga Twojej uwagi.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 pole powyżej wymaga Twojej uwagi." + }, + "fieldRequiredError": { + "message": "Pole $FIELDNAME$ jest wymagane.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "wymagane" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Wymagane, jeśli identyfikator podmiotu nie jest adres URL." + }, + "openIdOptionalCustomizations": { + "message": "Opcjonalne dostosowania" + }, + "openIdAuthorityRequired": { + "message": "Wymagane, jeśli organ jest nieprawidłowy." + }, + "separateMultipleWithComma": { + "message": "Oddziel je przecinkami." + }, + "sessionTimeout": { + "message": "Twoja sesja wygasła. Zaloguj się ponownie." + }, + "exportingPersonalVaultTitle": { + "message": "Eksportowanie osobistego sejfu" + }, + "exportingOrganizationVaultTitle": { + "message": "Eksportowanie sejfu organizacji" + }, + "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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Tylko sejf organizacji powiązany z organizacją $ORGANIZATION$ zostanie wyeksportowany. Osobiste elementy sejfu i elementy innych organizacji nie będą uwzględnione.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Powrót do raportów" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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": "Losowo" + }, + "randomWord": { + "message": "Losowe słowo" + }, + "service": { + "message": "Usługa" + } +} diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json new file mode 100644 index 0000000000..f97367afa2 --- /dev/null +++ b/apps/web/src/locales/pt_BR/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Cofre Web do(a) $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Que tipo de item é este?" + }, + "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" + }, + "newPassword": { + "message": "Nova Senha" + }, + "passphrase": { + "message": "Frase Secreta" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Campos Personalizados" + }, + "cardholderName": { + "message": "Titular do Cartão" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Bandeira" + }, + "expiration": { + "message": "Vencimento" + }, + "securityCode": { + "message": "Código de Segurança (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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": "Ocultado" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "cfTypeLinked": { + "message": "Vinculado", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Remover" + }, + "unassigned": { + "message": "Não atribuído" + }, + "noneFolder": { + "message": "Nenhuma Pasta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Adicionar Pasta" + }, + "editFolder": { + "message": "Editar Pasta" + }, + "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." + }, + "never": { + "message": "Nunca" + }, + "toggleVisibility": { + "message": "Alternar Visibilidade" + }, + "toggleCollapse": { + "message": "Alternar Colapso", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Gerar Senha" + }, + "checkPassword": { + "message": "Verifique se a senha foi exposta." + }, + "passwordExposed": { + "message": "Esta senha foi exposta $VALUE$ vez(es) em violações de dados. Você deve alterá-la.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Esta senha não foi encontrada em violações de dados conhecidos. Deve ser seguro de usar." + }, + "save": { + "message": "Salvar" + }, + "cancel": { + "message": "Cancelar" + }, + "canceled": { + "message": "Cancelado" + }, + "close": { + "message": "Fechar" + }, + "delete": { + "message": "Excluir" + }, + "favorite": { + "message": "Favorito" + }, + "unfavorite": { + "message": "Desfavoritar" + }, + "edit": { + "message": "Editar" + }, + "searchCollection": { + "message": "Pesquisar Coleção" + }, + "searchFolder": { + "message": "Pesquisar Pasta" + }, + "searchFavorites": { + "message": "Pesquisar Favoritos" + }, + "searchType": { + "message": "Pesquisar Tipo", + "description": "Search item type" + }, + "searchVault": { + "message": "Pesquisar no Cofre" + }, + "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" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cartões" + }, + "typeIdentityPlural": { + "message": "Identidades" + }, + "typeSecureNotePlural": { + "message": "Notas Seguras" + }, + "folders": { + "message": "Pastas" + }, + "collections": { + "message": "Coleções" + }, + "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" + }, + "zipPostalCode": { + "message": "CEP / Código Postal" + }, + "country": { + "message": "País" + }, + "shared": { + "message": "Compartilhado" + }, + "attachments": { + "message": "Anexos" + }, + "select": { + "message": "Selecionar" + }, + "addItem": { + "message": "Adicionar Item" + }, + "editItem": { + "message": "Editar Item" + }, + "viewItem": { + "message": "Visualizar Item" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Outros" + }, + "share": { + "message": "Compartilhar" + }, + "moveToOrganization": { + "message": "Mover para a Organização" + }, + "valueCopied": { + "message": "$VALUE$ copiado(a)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copiar Valor", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copiar Senha", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copiar Nome de Usuário", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "Copiar URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Meu Cofre" + }, + "vault": { + "message": "Cofre" + }, + "moveSelectedToOrg": { + "message": "Mover Selecionados para a organização" + }, + "deleteSelected": { + "message": "Excluir Selecionados" + }, + "moveSelected": { + "message": "Mover Selecionados" + }, + "selectAll": { + "message": "Selecionar Todos" + }, + "unselectAll": { + "message": "Desmarcar Todos" + }, + "launch": { + "message": "Abrir" + }, + "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." + }, + "addedItem": { + "message": "Item adicionado" + }, + "editedItem": { + "message": "Item editado" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ movido para $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Itens selecionados movidos para $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Excluir Item" + }, + "deleteFolder": { + "message": "Excluir Pasta" + }, + "deleteAttachment": { + "message": "Excluir Anexo" + }, + "deleteItemConfirmation": { + "message": "Você tem certeza que deseja enviar este item para a lixeira?" + }, + "deletedItem": { + "message": "Item enviado para a lixeira" + }, + "deletedItems": { + "message": "Itens enviados para a lixeira" + }, + "movedItems": { + "message": "Itens movidos" + }, + "overwritePasswordConfirmation": { + "message": "Você tem certeza que deseja substituir a senha atual?" + }, + "editedFolder": { + "message": "Pasta editada" + }, + "addedFolder": { + "message": "Pasta adicionada" + }, + "deleteFolderConfirmation": { + "message": "Você tem certeza que deseja excluir esta pasta?" + }, + "deletedFolder": { + "message": "Pasta excluída" + }, + "loggedOut": { + "message": "Sessão encerrada" + }, + "loginExpired": { + "message": "A sua sessão expirou." + }, + "logOutConfirmation": { + "message": "Você tem certeza que deseja sair?" + }, + "logOut": { + "message": "Encerrar Sessão" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Sim" + }, + "no": { + "message": "Não" + }, + "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" + }, + "emailAddressDesc": { + "message": "Você usará o seu endereço de e-mail para a iniciar sessão." + }, + "yourName": { + "message": "Seu Nome" + }, + "yourNameDesc": { + "message": "Como devemos chamá-lo?" + }, + "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 lembrar a senha caso você esqueça." + }, + "reTypeMasterPass": { + "message": "Digite Novamente a Senha Mestra" + }, + "masterPassHint": { + "message": "Dica da Senha Mestra (opcional)" + }, + "masterPassHintLabel": { + "message": "Dica da Senha Mestra" + }, + "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." + }, + "emailAddress": { + "message": "Endereço de E-mail" + }, + "yourVaultIsLocked": { + "message": "O seu cofre está bloqueado. Verifique a sua senha mestra para continuar." + }, + "unlock": { + "message": "Desbloquear" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Bloquear Agora" + }, + "noItemsInList": { + "message": "Não há itens para listar." + }, + "noCollectionsInList": { + "message": "Não há coleções para listar." + }, + "noGroupsInList": { + "message": "Não há grupos para listar." + }, + "noUsersInList": { + "message": "Não há usuários para listar." + }, + "noEventsInList": { + "message": "Não há eventos para listar." + }, + "newOrganization": { + "message": "Nova Organização" + }, + "noOrganizationsList": { + "message": "Você não pertence a nenhuma organização. Organizações permitem-lhe compartilhar itens em segurança com outros usuários." + }, + "versionNumber": { + "message": "Versão $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "Insira 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." + }, + "loginUnavailable": { + "message": "Sessão Indisponível" + }, + "noTwoStepProviders": { + "message": "Esta conta tem a autenticação em duas etapas ativada. No entanto, nenhum dos provedores de autenticação em duas etapas configurados são suportados por este navegador web." + }, + "noTwoStepProviders2": { + "message": "Por favor utilize um navegador web suportado (tal como o Chrome) e/ou inclua provedores adicionais que são melhor suportados entre navegadores web (tal como um aplicativo de autenticação)." + }, + "twoStepOptions": { + "message": "Opções de Login em Duas Etapas" + }, + "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." + }, + "u2fDesc": { + "message": "Utilize qualquer chave de segurança ativada por FIDO U2F para acessar a sua conta." + }, + "u2fTitle": { + "message": "Chave de Segurança FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Utilize qualquer chave de segurança ativada por WebAuthn para acessar a sua conta." + }, + "webAuthnMigrated": { + "message": "(Migrado de FIDO)" + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Os códigos de verificação vão ser enviados por e-mail para você." + }, + "continue": { + "message": "Continuar" + }, + "organization": { + "message": "Organização" + }, + "organizations": { + "message": "Organizações" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Escolha uma organização para a qual deseja mover esses itens. Mudar para uma organização transfere a propriedade dos itens para essa organização. Você não será mais o proprietário direto desses itens depois que eles forem movidos." + }, + "collectionsDesc": { + "message": "Edite as coleções com as quais este item está sendo compartilhado. Somente usuários da organização com acesso a estas coleções poderão ver esse item." + }, + "deleteSelectedItemsDesc": { + "message": "Você selecionou $COUNT$ item(ns) para excluir. Tem certeza que deseja excluir todos estes itens?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Escolha uma pasta para a qual você deseja mover os $COUNT$ itens selecionados.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Você selecionou $COUNT$ item(ns). $MOVEABLE_COUNT$ item(ns) podem ser movidos para uma organização, mas, $NONMOVEABLE_COUNT$ não pode.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Código de verificação (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiar código de verificação" + }, + "warning": { + "message": "Aviso" + }, + "confirmVaultExport": { + "message": "Confirmar Exportação de 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": "Chaves de criptografia da 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." + }, + "export": { + "message": "Exportar" + }, + "exportVault": { + "message": "Exportar cofre" + }, + "fileFormat": { + "message": "Formato do arquivo" + }, + "exportSuccess": { + "message": "Os dados do seu cofre foram exportados." + }, + "passwordGenerator": { + "message": "Gerador de senha" + }, + "minComplexityScore": { + "message": "Pontuação Mínima de Complexidade" + }, + "minNumbers": { + "message": "Mínimo de Números" + }, + "minSpecial": { + "message": "Mínimo Especial", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evitar caracteres ambíguos" + }, + "regeneratePassword": { + "message": "Gerar nova senha" + }, + "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" + }, + "passwordHistory": { + "message": "Histórico de senha" + }, + "noPasswordsInList": { + "message": "Não existem senhas para listar." + }, + "clear": { + "message": "Limpar", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Conta atualizada" + }, + "changeEmail": { + "message": "Alterar e-mail" + }, + "changeEmailTwoFactorWarning": { + "message": "Prosseguir irá alterar o endereço de e-mail da sua conta. Isso não mudará o endereço de e-mail usado para autenticação de dois fatores. Você pode alterar esse endereço de e-mail nas configurações de Login em Duas Etapas." + }, + "newEmail": { + "message": "Novo e-mail" + }, + "code": { + "message": "Código" + }, + "changeEmailDesc": { + "message": "Enviamos um código de verificação por e-mail para $EMAIL$. Por favor, procure no seu e-mail por este código e insira-o abaixo para finalizar sua alteração de endereço de e-mail.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "O processo desconectará você da sessão atual, exigindo que você inicie a sessão novamente. As sessões ativas em outros dispositivos podem continuar ativas por até uma hora." + }, + "emailChanged": { + "message": "E-mail alterado" + }, + "logBackIn": { + "message": "Por favor, reinicie a sessão." + }, + "logBackInOthersToo": { + "message": "Por favor, reinicie a sessão. Se estiver usando outros aplicativos do Bitwarden, encerre a sessão e reinicie também." + }, + "changeMasterPassword": { + "message": "Alterar senha mestra" + }, + "masterPasswordChanged": { + "message": "Senha Mestra Alterada" + }, + "currentMasterPass": { + "message": "Senha Mestra Atual" + }, + "newMasterPass": { + "message": "Nova Senha Mestra" + }, + "confirmNewMasterPass": { + "message": "Confirme a Nova Senha Mestra" + }, + "encKeySettings": { + "message": "Configurações da Chave de Criptografia" + }, + "kdfAlgorithm": { + "message": "Algoritmo KDF" + }, + "kdfIterations": { + "message": "Iterações KDF" + }, + "kdfIterationsDesc": { + "message": "As iterações KDF mais altas podem ajudar a proteger a sua senha mestra de ser descoberta pela força bruta de um invasor. Recomendamos um valor de $VALUE$ ou mais.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Configurar as suas iterações KDF muito alta pode resultar em baixo desempenho ao iniciar sessão (e desbloquear) no Bitwarden em dispositivos com CPUs mais lentas. Recomendamos que você aumente o valor em incrementos de $INCREMENT$ e, em seguida, teste em todos os seus dispositivos.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Alterar KDF" + }, + "encKeySettingsChanged": { + "message": "As Configurações da Chave de Criptografia foram Alteradas" + }, + "dangerZone": { + "message": "Zona de Perigo" + }, + "dangerZoneDesc": { + "message": "Cuidado, essas ações não são reversíveis!" + }, + "deauthorizeSessions": { + "message": "Desautorizar Sessões" + }, + "deauthorizeSessionsDesc": { + "message": "Preocupado por ter iniciado a sessão em outro dispositivo? Prossiga abaixo para desautorizar todos os computadores e dispositivos que tenha usado. Esta medida de segurança é recomendada se usou um computador público ou guardou acidentalmente a sua senha num dispositivo que não lhe pertence. Esta ação também apagará todas as sessões anteriores registadas iniciadas com autenticação em duas etapas." + }, + "deauthorizeSessionsWarning": { + "message": "O processo também desconectará você da sua sessão atual, exigindo que você inicie a sessão novamente. Você também será solicitado a efetuar login em duas etapas novamente, se estiver ativado. Sessões ativas em outros dispositivos podem continuar ativas por até uma hora." + }, + "sessionsDeauthorized": { + "message": "Todas as sessões desautorizadas" + }, + "purgeVault": { + "message": "Limpar o cofre" + }, + "purgedOrganizationVault": { + "message": "Cofre da organização limpado." + }, + "vaultAccessedByProvider": { + "message": "Cofre acessado pelo provedor." + }, + "purgeVaultDesc": { + "message": "Continue abaixo para excluir todos os itens e pastas do seu cofre. Itens que pertencem a uma organização com a qual você compartilha não serão excluídos." + }, + "purgeOrgVaultDesc": { + "message": "Continue abaixo para excluir todos os itens no cofre da organização." + }, + "purgeVaultWarning": { + "message": "Limpando o seu cofre permanentemente. Não pode ser desfeito." + }, + "vaultPurged": { + "message": "O seu cofre foi limpo." + }, + "deleteAccount": { + "message": "Excluir a conta" + }, + "deleteAccountDesc": { + "message": "Prossiga abaixo para excluir a sua conta e todos os dados associados." + }, + "deleteAccountWarning": { + "message": "A exclusão de sua conta é permanente. Não pode ser desfeito." + }, + "accountDeleted": { + "message": "Conta excluída" + }, + "accountDeletedDesc": { + "message": "A sua conta foi fechada e todos os dados associados foram excluídos." + }, + "myAccount": { + "message": "Minha conta" + }, + "tools": { + "message": "Ferramentas" + }, + "importData": { + "message": "Importar dados" + }, + "importError": { + "message": "Erro de Importação" + }, + "importErrorDesc": { + "message": "Houve um problema com os dados que você tentou importar. Por favor, resolva os erros listados abaixo em seu arquivo de origem e tente novamente." + }, + "importSuccess": { + "message": "Os dados foram importados com sucesso para o seu cofre." + }, + "importWarning": { + "message": "Você está importando dados para $ORGANIZATION$. Seus dados podem ser compartilhados com membros desta organização. Você deseja continuar?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Os dados não estão formatados corretamente. Por favor, verifique o seu arquivo de importação e tente novamente." + }, + "importNothingError": { + "message": "Nada foi importado." + }, + "importEncKeyError": { + "message": "Erro ao descriptografar o arquivo exportado. Sua chave de criptografia não corresponde à chave de criptografia usada para exportar os dados." + }, + "selectFormat": { + "message": "Selecione o formato do arquivo de importação" + }, + "selectImportFile": { + "message": "Selecione o arquivo de importação" + }, + "orCopyPasteFileContents": { + "message": "ou copie/cole o conteúdo do arquivo de importação" + }, + "instructionsFor": { + "message": "$NAME$ instruções", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opções" + }, + "optionsDesc": { + "message": "Personalize sua experiência no cofre web." + }, + "optionsUpdated": { + "message": "Opções atualizadas" + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Altere o idioma usado pelo cofre web." + }, + "disableIcons": { + "message": "Desabilitar ícones dos sites" + }, + "disableIconsDesc": { + "message": "O ícone do site fornece um ícone reconhecível ao lado de cada credencial no seu cofre." + }, + "enableGravatars": { + "message": "Habilitar Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use imagens de avatar carregadas do gravatar.com." + }, + "enableFullWidth": { + "message": "Habilitar Esquema de Largura Total", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Permitir que o cofre web expanda a largura total da janela do navegador." + }, + "default": { + "message": "Padrão" + }, + "domainRules": { + "message": "Regras de domínio" + }, + "domainRulesDesc": { + "message": "Se você tiver a mesma credencial em vários domínios de sites diferentes, poderá marcar o site como \"equivalente\". Domínios \"globais\" são aqueles já criados para você pelo Bitwarden." + }, + "globalEqDomains": { + "message": "Domínios equivalentes globais" + }, + "customEqDomains": { + "message": "Domínios equivalentes personalizados" + }, + "exclude": { + "message": "Excluir" + }, + "include": { + "message": "Incluir" + }, + "customize": { + "message": "Personalizar" + }, + "newCustomDomain": { + "message": "Novo domínio personalizado" + }, + "newCustomDomainDesc": { + "message": "Digite uma lista de domínios separados por vírgulas. Apenas domínios \"base\" são permitidos. Não insira subdomínios. Por exemplo, digite \"google.com.br\" em vez de \"www.google.com.br\". Você também pode digitar \"androidapp://package.name\" para associar um aplicativo Android a outros domínios de site." + }, + "customDomainX": { + "message": "Domínio Personalizado $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domínios atualizados" + }, + "twoStepLogin": { + "message": "Login em Duas Etapas" + }, + "twoStepLoginDesc": { + "message": "Proteja a sua conta exigindo uma etapa adicional ao iniciar sessão." + }, + "twoStepLoginOrganizationDesc": { + "message": "Exigir login em duas etapas para os usuários da organização, configurando provedores no nível da organização." + }, + "twoStepLoginRecoveryWarning": { + "message": "Ativar o login em duas etapas pode bloquear você permanentemente da sua conta no Bitwarden. Um código de recuperação permite que você acesse sua conta no caso de não poder mais usar seu provedor de login em duas etapas normalmente (por exemplo, você perde seu dispositivo). O suporte do Bitwarden não poderá ajudá-lo se você perder o acesso à sua conta. Recomendamos que você anote ou imprima o código de recuperação e mantenha-o em um local seguro." + }, + "viewRecoveryCode": { + "message": "Ver Código de Recuperação" + }, + "providers": { + "message": "Provedores", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Habilitar" + }, + "enabled": { + "message": "Habilitado" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Assinatura Premium" + }, + "premiumRequired": { + "message": "Requer Assinatura Premium" + }, + "premiumRequiredDesc": { + "message": "Uma conta premium é necessária para usar esse recurso." + }, + "youHavePremiumAccess": { + "message": "Você tem acesso premium" + }, + "alreadyPremiumFromOrg": { + "message": "Você já tem acesso às funcionalidades premium por causa de uma organização da qual é um membro." + }, + "manage": { + "message": "Gerenciar" + }, + "disable": { + "message": "Desabilitar" + }, + "twoStepLoginProviderEnabled": { + "message": "Este provedor de login em duas etapas está ativado em sua conta." + }, + "twoStepLoginAuthDesc": { + "message": "Insira a sua senha mestra para modificar as configurações de login em duas etapas." + }, + "twoStepAuthenticatorDesc": { + "message": "Siga estas etapas para configurar o login em duas etapas com um aplicativo autenticador:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Baixar um app autenticador de duas etapas" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Precisa de um aplicativo autenticador de duas etapas? Baixe um dos seguintes" + }, + "iosDevices": { + "message": "Dispositivos iOS" + }, + "androidDevices": { + "message": "Dispositivos Android" + }, + "windowsDevices": { + "message": "Dispositivos Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Esses aplicativos são os recomendados, no entanto, outros aplicativos de autenticação também irão funcionar." + }, + "twoStepAuthenticatorScanCode": { + "message": "Escaneie este código QR com o seu aplicativo de duas etapas" + }, + "key": { + "message": "Chave" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Insira o código de verificação de 6 dígitos resultante do aplicativo" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Caso você precise adicioná-lo a outro dispositivo, abaixo está o código QR (ou chave) exigido pelo aplicativo autenticador." + }, + "twoStepDisableDesc": { + "message": "Tem certeza que deseja desativar este provedor de login em duas etapas?" + }, + "twoStepDisabled": { + "message": "Provedor de login em duas etapas desativado." + }, + "twoFactorYubikeyAdd": { + "message": "Adicionar um novo Yubikey à sua conta" + }, + "twoFactorYubikeyPlugIn": { + "message": "Conecte o YubiKey na porta USB do seu computador." + }, + "twoFactorYubikeySelectKey": { + "message": "Selecione o YubiKey no primeiro campo vazio abaixo." + }, + "twoFactorYubikeyTouchButton": { + "message": "Toque o botão do Yubikey." + }, + "twoFactorYubikeySaveForm": { + "message": "Salve o formulário." + }, + "twoFactorYubikeyWarning": { + "message": "Devido as limitações da plataforma, YubiKeys não podem ser usados em todos os aplicativos do Bitwarden. Você deve habilitar outro provedor de login em duas etapas, para que você possa acessar a sua conta quando YubiKeys não puderem ser usados. Plataformas suportadas:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Cofre Web, aplicativo de desktop, CLI e todas as extensões do navegador em um dispositivo com uma porta USB que pode aceitar o seu YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Aplicativos móveis em um dispositivo com capacidades de NFC ou uma porta USB que pode aceitar o seu YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Chave U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Chave WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Suporte a NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Uma das minhas chaves suporta NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Se um dos seus YubiKeys oferece suporte a NFC (como um NEO YubiKey), você será solicitado em dispositivos móveis sempre que for detectada disponibilidade de NFC." + }, + "yubikeysUpdated": { + "message": "YubiKeys atualizado" + }, + "disableAllKeys": { + "message": "Desabilitar Todas as Chaves" + }, + "twoFactorDuoDesc": { + "message": "Insira as informações do aplicativo Bitwarden no painel do administrador do Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Chave de Integração" + }, + "twoFactorDuoSecretKey": { + "message": "Chave Secreta" + }, + "twoFactorDuoApiHostname": { + "message": "Servidor API" + }, + "twoFactorEmailDesc": { + "message": "Siga estas etapas para configurar o login em duas etapas com e-mail:" + }, + "twoFactorEmailEnterEmail": { + "message": "Insira o e-mail que você deseja receber o códigos de verificação" + }, + "twoFactorEmailEnterCode": { + "message": "Insira o código de verificação de 6 dígitos que foi enviado pro seu e-mail" + }, + "sendEmail": { + "message": "Enviar E-mail" + }, + "twoFactorU2fAdd": { + "message": "Adicione uma chave de segurança FIDO U2F à sua conta" + }, + "removeU2fConfirmation": { + "message": "Tem certeza que deseja remover esta chave de segurança?" + }, + "twoFactorWebAuthnAdd": { + "message": "Adicione uma chave de segurança WebAuthn à sua conta" + }, + "readKey": { + "message": "Chave de Leitura" + }, + "keyCompromised": { + "message": "A chave está comprometida." + }, + "twoFactorU2fGiveName": { + "message": "Dê à chave de segurança um nome amigável para identificá-la." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Conecte a chave de segurança na porta USB do seu computador e clique no botão \"Ler Chave\"." + }, + "twoFactorU2fTouchButton": { + "message": "Se a chave de segurança tiver um botão, toque nele." + }, + "twoFactorU2fSaveForm": { + "message": "Salvar o formulário." + }, + "twoFactorU2fWarning": { + "message": "Devido as limitações da plataforma, o FIDO U2F não pode ser usado em todas os aplicativos do Bitwarden. Você deve habilitar outro provedor de login em duas etapas para poder acessar sua conta quando o FIDO U2F não puder ser usado. Plataformas Suportadas:" + }, + "twoFactorU2fSupportWeb": { + "message": "Cofre web e extensões de navegador em um desktop/laptop com um navegador habilitado para U2F (Chrome, Opera, Vivaldi ou Firefox com o FIDO U2F ativado)." + }, + "twoFactorU2fWaiting": { + "message": "Esperando que você toque no botão da sua chave de segurança" + }, + "twoFactorU2fClickSave": { + "message": "Clique no botão \"Salvar\" abaixo para ativar essa chave de segurança para o login em duas etapas." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Houve um problema ao ler a chave de segurança. Tente novamente." + }, + "twoFactorWebAuthnWarning": { + "message": "Devido às limitações da plataforma, o WebAuthn não pode ser usado em todos os aplicativos do Bitwarden. Você deve habilitar outro provedor de login em duas etapas, para que você possa acessar a sua conta quando o WebAuthn não puder ser usado. Plataformas suportadas:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Cofre web e extensões de navegador em um desktop/laptop com um navegador habilitado para WebAuthn (Chrome, Opera, Vivaldi ou Firefox com o FIDO U2F ativado)." + }, + "twoFactorRecoveryYourCode": { + "message": "Seu código de recuperação de login em duas etapas do Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Você ainda não habilitou nenhum provedor de login em duas etapas. Depois de ativar um provedor de login em duas etapas, você pode conferir aqui o seu código de recuperação." + }, + "printCode": { + "message": "Imprimir Código", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Relatórios" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Relatório de Sites Inseguros" + }, + "unsecuredWebsitesReportDesc": { + "message": "Usar sites inseguros com o esquema http:// pode ser perigoso. Se o site permitir, você deve sempre acessá-lo utilizando o esquema https:// para que a sua conexão seja criptografada." + }, + "unsecuredWebsitesFound": { + "message": "Sites Inseguros Encontrados" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Nós encontramos $COUNT$ item(ns) no seu cofre com URIs não protegido(s). Você deve alterar o esquema de URI para https:// se o site permitir.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Nenhum item no seu cofre tem URIs inseguros." + }, + "inactive2faReport": { + "message": "Relatório de 2FA Inativo" + }, + "inactive2faReportDesc": { + "message": "A autenticação de duas etapas (2FA) é uma configuração de segurança importante que ajuda a proteger suas contas. Se o site oferecer, você deve sempre ativar a autenticação de duas etapas." + }, + "inactive2faFound": { + "message": "Credenciais Sem 2FA Encontradas" + }, + "inactive2faFoundDesc": { + "message": "Nós encontramos $COUNT$ site(s) no seu cofre que pode não estar configurado com autenticação de duas etapas (de acordo com twofactorauth.org). Para proteger ainda mais essas contas, você deve habilitar a autenticação de duas etapas.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Nenhum site foi encontrado em seu cofre com a configuração de autenticação de duas etapas ausente." + }, + "instructions": { + "message": "Instruções" + }, + "exposedPasswordsReport": { + "message": "Relatório de Senhas Expostas" + }, + "exposedPasswordsReportDesc": { + "message": "Senhas expostas são senhas que foram descobertas em violações de dados conhecidas que foram divulgadas publicamente ou vendidas na \"dark web\" por hackers." + }, + "exposedPasswordsFound": { + "message": "Senhas Expostas Encontradas" + }, + "exposedPasswordsFoundDesc": { + "message": "Encontramos no seu cofre $COUNT$ item(ns) com senha(s) que foi(ram) exposta(s) em violações de dado conhecida. Você deve alterá-las para usar uma nova senha.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Nenhum item no seu cofre tem senhas que foram expostas em violações de dados conhecidas." + }, + "checkExposedPasswords": { + "message": "Verificar Senhas Expostas" + }, + "exposedXTimes": { + "message": "Exposta $COUNT$ vez(es)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Relatório de Senhas Fracas" + }, + "weakPasswordsReportDesc": { + "message": "Senhas fracas podem ser facilmente descobertas por hackers e ferramentas automatizadas que são usadas para quebrar senhas. O gerador de senhas do Bitwarden pode ajudá-lo a criar senhas fortes." + }, + "weakPasswordsFound": { + "message": "Senhas Fracas Encontrada" + }, + "weakPasswordsFoundDesc": { + "message": "Encontramos $COUNT$ item(ns) no seu cofre com senha(s) que não é/são fortes. Você deve atualizá-las para usar senhas mais fortes.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Nenhum item no seu cofre tem senhas fracas." + }, + "reusedPasswordsReport": { + "message": "Relatório de Senhas Reutilizadas" + }, + "reusedPasswordsReportDesc": { + "message": "Se um serviço que você usa for comprometido, a reutilização da mesma senha em outro local pode permitir que hackers acessem facilmente mais de suas contas online. Você deve usar uma senha exclusiva para cada conta ou serviço." + }, + "reusedPasswordsFound": { + "message": "Senhas Reutilizadas Encontradas" + }, + "reusedPasswordsFoundDesc": { + "message": "Nós encontramos $COUNT$ senha(s) que esta(ão) sendo reutilizadas no seu cofre. Você deve alterá-los para um valor único.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Nenhuma credencial no seu cofre tem senhas que estão sendo reutilizadas." + }, + "reusedXTimes": { + "message": "Reutilizada $COUNT$ vez(es)", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Relatório de Violação de Dados" + }, + "breachDesc": { + "message": "Uma \"brecha\" é um incidente em que os dados de um site foram acessados ilegalmente por hackers e liberados publicamente. Revise os tipos de dados que foram comprometidos (endereços de e-mail, senhas, cartões de crédito etc.) e tome as medidas adequadas, como a alteração de senhas." + }, + "breachCheckUsernameEmail": { + "message": "Verifique qualquer nome de usuário ou endereço de e-mail que você usa." + }, + "checkBreaches": { + "message": "Verificar Brechas" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ não foi encontrado em nenhuma violação de dados conhecida.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Boas Notícias", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ foi encontrado em $COUNT$ violações de dados diferentes on-line.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Contas com Brechas Encontradas" + }, + "compromisedData": { + "message": "Dados comprometidos" + }, + "website": { + "message": "Site" + }, + "affectedUsers": { + "message": "Usuários Afetados" + }, + "breachOccurred": { + "message": "Ocorreu uma Brecha" + }, + "breachReported": { + "message": "Brecha Reportada" + }, + "reportError": { + "message": "Ocorreu um erro ao tentar carregar o relatório. Tente novamente" + }, + "billing": { + "message": "Cobrança" + }, + "accountCredit": { + "message": "Crédito da Conta", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo da Conta", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Adicionar Crédito", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Montante", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "O crédito adicionado aparecerá em sua conta após o pagamento ser totalmente processado. Alguns métodos de pagamento são mais lentos e podem levar mais tempo para processar do que outros." + }, + "makeSureEnoughCredit": { + "message": "Por favor, certifique-se de que sua conta tenha crédito suficiente para esta compra. Se sua conta não tiver crédito suficiente disponível, seu método de pagamento padrão será usado para completar a diferença. Você pode adicionar crédito à sua conta na página de Cobrança." + }, + "creditAppliedDesc": { + "message": "O crédito da sua conta pode ser usado para efetuar compras. Qualquer crédito disponível será automaticamente usado em faturas geradas nesta conta." + }, + "goPremium": { + "message": "Torne-se Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Você atualizou para premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Atualize a sua conta para uma conta premium e desbloqueie ótimos recursos adicionais." + }, + "premiumSignUpStorage": { + "message": "1 GB de armazenamento de arquivos encriptados." + }, + "premiumSignUpTwoStep": { + "message": "Opções adicionais de login em duas etapas, como YubiKey, FIDO U2F e Duo." + }, + "premiumSignUpEmergency": { + "message": "Acesso de Emergência" + }, + "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ódigo de verificação TOTP (2FA) para logins no seu cofre." + }, + "premiumSignUpSupport": { + "message": "Prioridade no suporte ao cliente." + }, + "premiumSignUpFuture": { + "message": "Todos os recursos premium no futuro. Mais em breve!" + }, + "premiumPrice": { + "message": "Tudo por apenas $PRICE$ /ano!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Complementos" + }, + "premiumAccess": { + "message": "Acesso Premium" + }, + "premiumAccessDesc": { + "message": "Você pode adicionar acesso premium a todos os membros da sua organização por $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Armazenamento Adicional (GB)" + }, + "additionalStorageGbDesc": { + "message": "# de GB adicional" + }, + "additionalStorageIntervalDesc": { + "message": "Seu plano tem $SIZE$ de armazenamento criptografado de arquivos. Você pode adicionar armazenamento adicional por $PRICE$ por GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Resumo" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "ano" + }, + "month": { + "message": "mês" + }, + "monthAbbr": { + "message": "mês.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "O seu método de pagamento será cobrado imediatamente e de forma recorrente a cada ano. Você pode cancelar a qualquer momento." + }, + "paymentCharged": { + "message": "Seu método de pagamento será cobrado imediatamente e, em seguida, de forma recorrente, a cada $INTERVAL$. Você pode cancelar a qualquer momento.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Seu plano vem com um teste gratuito de 7 dias. Seu cartão não será cobrado até que o período de teste termine e de forma recorrente a cada $INTERVAL$. Você pode cancelar a qualquer momento." + }, + "paymentInformation": { + "message": "Informação de Pagamento" + }, + "billingInformation": { + "message": "Informações de Pagamento" + }, + "creditCard": { + "message": "Cartão de Crédito" + }, + "paypalClickSubmit": { + "message": "Clique no botão PayPal para entrar na sua conta do PayPal e, em seguida, clique no botão Enviar abaixo para continuar." + }, + "cancelSubscription": { + "message": "Cancelar Assinatura" + }, + "subscriptionCanceled": { + "message": "A assinatura foi cancelada." + }, + "pendingCancellation": { + "message": "Cancelamento Pendente" + }, + "subscriptionPendingCanceled": { + "message": "A assinatura foi marcada para ser cancelada no final do período de faturamento atual." + }, + "reinstateSubscription": { + "message": "Restabelecer Assinatura" + }, + "reinstateConfirmation": { + "message": "Você tem certeza que deseja remover a solicitação de cancelamento pendente e restabelecer sua assinatura?" + }, + "reinstated": { + "message": "A assinatura foi restabelecida." + }, + "cancelConfirmation": { + "message": "Você tem certeza que deseja cancelar? Você perderá o acesso a todos os recursos dessa assinatura no final deste ciclo de faturamento." + }, + "canceledSubscription": { + "message": "A assinatura foi cancelada." + }, + "neverExpires": { + "message": "Nunca Expirar" + }, + "status": { + "message": "Estado" + }, + "nextCharge": { + "message": "Próxima Cobrança" + }, + "details": { + "message": "Detalhes" + }, + "downloadLicense": { + "message": "Baixar Licença" + }, + "updateLicense": { + "message": "Atualizar Licença" + }, + "updatedLicense": { + "message": "Licença atualizada" + }, + "manageSubscription": { + "message": "Gerenciar Assinatura" + }, + "storage": { + "message": "Armazenamento" + }, + "addStorage": { + "message": "Adicionar Armazenamento" + }, + "removeStorage": { + "message": "Remover Armazenamento" + }, + "subscriptionStorage": { + "message": "A sua assinatura tem um total de $MAX_STORAGE$ GB de armazenamento de arquivos criptografados. Você está usando $USED_STORAGE$ no momento.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Forma de Pagamento" + }, + "noPaymentMethod": { + "message": "Nenhum método de pagamento selecionado." + }, + "addPaymentMethod": { + "message": "Adicionar Forma de Pagamento" + }, + "changePaymentMethod": { + "message": "Alterar Forma de Pagamento" + }, + "invoices": { + "message": "Faturas" + }, + "noInvoices": { + "message": "Sem faturas." + }, + "paid": { + "message": "Pago", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Por pagar", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transações", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Sem transações." + }, + "chargeNoun": { + "message": "Carregar", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Reembolso", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Quaisquer cobranças aparecerão no seu extrato como $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB de Armazenamento Para Adicionar" + }, + "gbStorageRemove": { + "message": "GB de Armazenamento Para Remover" + }, + "storageAddNote": { + "message": "A adição de armazenamento resultará em ajustes no valor total da fatura e será cobrado imediatamente pela forma de pagamento registrada. A primeira cobrança será rateada pelo restante do ciclo de faturamento atual." + }, + "storageRemoveNote": { + "message": "A remoção do armazenamento resultará em ajustes no valor total da fatura que serão divididos em sua próxima cobrança de faturamento." + }, + "adjustedStorage": { + "message": "Ajustado $AMOUNT$ GB de armazenamento.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contato com o Suporte ao Cliente" + }, + "updatedPaymentMethod": { + "message": "Atualizar forma de pagamento." + }, + "purchasePremium": { + "message": "Comprar Premium" + }, + "licenseFile": { + "message": "Arquivo de Licença" + }, + "licenseFileDesc": { + "message": "Seu arquivo de licença terá o nome de algo como $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Para atualizar sua conta para uma assinatura premium, você precisa fazer o upload de um arquivo de licença válido." + }, + "uploadLicenseFileOrg": { + "message": "Para criar uma organização hospedada localmente, você precisa fazer o upload de um arquivo de licença válido." + }, + "accountEmailMustBeVerified": { + "message": "O endereço de e-mail da sua conta deve ser verificado." + }, + "newOrganizationDesc": { + "message": "As organizações permitem que você compartilhe partes do seu cofre com outras pessoas, além de gerenciar usuários relacionados para uma entidade específica, como uma família, uma equipe pequena ou uma empresa grande." + }, + "generalInformation": { + "message": "Informação Geral" + }, + "organizationName": { + "message": "Nome da Organização" + }, + "accountOwnedBusiness": { + "message": "Esta conta pertence a uma empresa." + }, + "billingEmail": { + "message": "E-mail de Cobrança" + }, + "businessName": { + "message": "Nome da Empresa" + }, + "chooseYourPlan": { + "message": "Escolha Seu Plano" + }, + "users": { + "message": "Usuários" + }, + "userSeats": { + "message": "Assentos de Usuário" + }, + "additionalUserSeats": { + "message": "Assentos de Usuário Adicionais" + }, + "userSeatsDesc": { + "message": "# de assentos de usuário" + }, + "userSeatsAdditionalDesc": { + "message": "O seu plano vem com assentos de usuário de $BASE_SEATS$. Você pode adicionar mais usuários por $SEAT_PRICE$ por usuário /mês.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Quanto mais assentos de usuário você precisa? Você também pode adicionar mais assentos depois, se necessário." + }, + "planNameFree": { + "message": "Grátis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Para usuários de testes ou pessoais para compartilhar com $COUNT$ outro usuário.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "Para uso pessoal, para compartilhar com a família & amigos." + }, + "planNameTeams": { + "message": "Equipes" + }, + "planDescTeams": { + "message": "Para empresas e outras organizações de equipe." + }, + "planNameEnterprise": { + "message": "Empresarial" + }, + "planDescEnterprise": { + "message": "Para empresas e outras organizações de grande porte." + }, + "freeForever": { + "message": "Grátis para Sempre" + }, + "includesXUsers": { + "message": "inclui $COUNT$ usuários", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Usuários Adicionais" + }, + "costPerUser": { + "message": "$COST$ por usuário", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limitado a $COUNT$ usuários (incluindo você)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limitado a $COUNT$ coleções", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Adicione e compartilhe com até $COUNT$ usuários", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Adicione e compartilhe com usuários ilimitados" + }, + "createUnlimitedCollections": { + "message": "Crie Coleções ilimitadas" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ de armazenamento encriptado", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Hospedagem Local (opcional)" + }, + "usersGetPremium": { + "message": "Usuários obtém acesso a Funcionalidades Premium" + }, + "controlAccessWithGroups": { + "message": "Controle o acesso do usuário com Grupos" + }, + "syncUsersFromDirectory": { + "message": "Sincronize seus usuários e Grupos de um diretório" + }, + "trackAuditLogs": { + "message": "Acompanhe as ações do usuário com os registros de auditoria" + }, + "enforce2faDuo": { + "message": "Reforçar o 2FA com o Duo" + }, + "priorityCustomerSupport": { + "message": "Suporte prioritário ao cliente" + }, + "xDayFreeTrial": { + "message": "Avaliação gratuita de $COUNT$ dia(s), cancele a qualquer momento", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Mensal" + }, + "annually": { + "message": "Anual" + }, + "basePrice": { + "message": "Preço Base" + }, + "organizationCreated": { + "message": "Organização Criada" + }, + "organizationReadyToGo": { + "message": "A sua nova organização está pronta!" + }, + "organizationUpgraded": { + "message": "Sua organização foi atualizada." + }, + "leave": { + "message": "Sair" + }, + "leaveOrganizationConfirmation": { + "message": "Você tem certeza que deseja sair desta organização?" + }, + "leftOrganization": { + "message": "Você saiu da organização." + }, + "defaultCollection": { + "message": "Coleção Padrão" + }, + "getHelp": { + "message": "Obter Ajuda" + }, + "getApps": { + "message": "Obtenha os Aplicativos" + }, + "loggedInAs": { + "message": "Sessão iniciada como" + }, + "eventLogs": { + "message": "Registro de Eventos" + }, + "people": { + "message": "Pessoas" + }, + "policies": { + "message": "Políticas" + }, + "singleSignOn": { + "message": "Logon Único" + }, + "editPolicy": { + "message": "Editar Política" + }, + "groups": { + "message": "Grupos" + }, + "newGroup": { + "message": "Novo Grupo" + }, + "addGroup": { + "message": "Adicionar Grupo" + }, + "editGroup": { + "message": "Editar Grupo" + }, + "deleteGroupConfirmation": { + "message": "Você tem certeza que deseja excluir este grupo?" + }, + "removeUserConfirmation": { + "message": "Você tem certeza que deseja remover este(a) usuário(a)?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Aviso! Este usuário precisa do Conector de Chave para gerenciar sua criptografia. Remover este usuário de sua organização desativará permanentemente sua conta. Essa ação não pode ser desfeita. Você quer prosseguir?" + }, + "externalId": { + "message": "ID externa" + }, + "externalIdDesc": { + "message": "O ID externo pode ser usado como referência ou vincular esse recurso a um sistema externo, como um diretório de usuários." + }, + "accessControl": { + "message": "Controle de Acesso" + }, + "groupAccessAllItems": { + "message": "Este grupo pode acessar e modificar todos os itens." + }, + "groupAccessSelectedCollections": { + "message": "Este grupo pode acessar apenas as coleções selecionadas." + }, + "readOnly": { + "message": "Somente Leitura" + }, + "newCollection": { + "message": "Nova Coleção" + }, + "addCollection": { + "message": "Adicionar Coleção" + }, + "editCollection": { + "message": "Editar Coleção" + }, + "deleteCollectionConfirmation": { + "message": "Você tem certeza que deseja excluir esta coleção?" + }, + "editUser": { + "message": "Editar Usuário" + }, + "inviteUser": { + "message": "Convidar Usuário" + }, + "inviteUserDesc": { + "message": "Convide um novo usuário para sua organização digitando o endereço de e-mail da conta Bitwarden dele abaixo. Se ele não tiver uma conta no Bitwarden, ele será solicitado a criar uma nova conta." + }, + "inviteMultipleEmailDesc": { + "message": "Você pode convidar até $COUNT$ usuários por vez. Utilize a vírgula para separar uma lista de endereços de e-mail.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Este usuário está usando o login em duas etapas para proteger a sua conta." + }, + "userAccessAllItems": { + "message": "Este usuário pode acessar e modificar todos os itens." + }, + "userAccessSelectedCollections": { + "message": "Este usuário pode acessar apenas as coleções selecionadas." + }, + "search": { + "message": "Pesquisar" + }, + "invited": { + "message": "Convidado" + }, + "accepted": { + "message": "Aceito" + }, + "confirmed": { + "message": "Confirmado" + }, + "clientOwnerEmail": { + "message": "Email do Proprietário do Cliente" + }, + "owner": { + "message": "Proprietário" + }, + "ownerDesc": { + "message": "O maior usuário de acesso que pode gerenciar todos os aspectos da sua organização." + }, + "clientOwnerDesc": { + "message": "Este usuário deve ser independente do Provedor. Se o Provedor estiver desassociado da organização, este usuário manterá a propriedade da organização." + }, + "admin": { + "message": "Administrador" + }, + "adminDesc": { + "message": " Os administradores podem acessar e gerenciar todos os itens, coleções e usuários em sua organização." + }, + "user": { + "message": "Usuário" + }, + "userDesc": { + "message": "Um usuário comum com acesso às coleções da sua organização." + }, + "manager": { + "message": "Gerente" + }, + "managerDesc": { + "message": "Os gerentes podem acessar e gerenciar coleções atribuídas em sua organização." + }, + "all": { + "message": "Todos" + }, + "refresh": { + "message": "Atualizar" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Evento" + }, + "unknown": { + "message": "Desconhecido" + }, + "loadMore": { + "message": "Carregar Mais" + }, + "mobile": { + "message": "Celular", + "description": "Mobile app" + }, + "extension": { + "message": "Extensão", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Área de Trabalho", + "description": "Desktop app" + }, + "webVault": { + "message": "Cofre Web" + }, + "loggedIn": { + "message": "Conectado(a)." + }, + "changedPassword": { + "message": "Senha da conta alterada." + }, + "enabledUpdated2fa": { + "message": "Habilitado/atualizado o login em duas etapas." + }, + "disabled2fa": { + "message": "Desabilitar login em duas etapas." + }, + "recovered2fa": { + "message": "Conta recuperada do login em duas etapas." + }, + "failedLogin": { + "message": "Falha na tentativa de login com senha incorreta." + }, + "failedLogin2fa": { + "message": "A tentativa de login falhou com o login incorreto em duas etapas." + }, + "exportedVault": { + "message": "Cofre exportado." + }, + "exportedOrganizationVault": { + "message": "Cofre da organização exportado." + }, + "editedOrgSettings": { + "message": "Configurações de organização editadas." + }, + "createdItemId": { + "message": "Item criado $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Item editado $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Item $ID$ enviado para lixeira.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Item $ID$ movido para uma organização.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Item $ID$ visualizado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Senha visualizada para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Campo oculto visualizado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Código de segurança visualizado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Senha copiada para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Campo oculto copiado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Código de segurança copiado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Item $ID$ auto-preenchido.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Coleção criada $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Coleção editada $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Coleção excluída $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Política $ID$ editada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Grupo criado $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Grupo editado $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Grupo excluído $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Usuário removido $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Anexo criado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Anexo excluído para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Coleção editada para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Usuário(a) convidado(a) $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Usuário(a) confirmado(a) $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Usuário(a) editado(a) $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Grupo editado para usuário(a) $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO desvinculado para o usuário $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "A organização $ID$ foi criada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "A organização $ID$ foi adicionada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organização $ID$ removida.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Cofre da organização $ID$ acessado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Dispositivo" + }, + "view": { + "message": "Ver" + }, + "invalidDateRange": { + "message": "Intervalo de datas inválido." + }, + "errorOccurred": { + "message": "Ocorreu um erro." + }, + "userAccess": { + "message": "Acesso de Usuário" + }, + "userType": { + "message": "Tipo de Usuário" + }, + "groupAccess": { + "message": "Grupo de Acesso" + }, + "groupAccessUserDesc": { + "message": "Edite os grupos aos quais este usuário pertence." + }, + "invitedUsers": { + "message": "Usuário(a)(s) convidado(a)(s)." + }, + "resendInvitation": { + "message": "Reenviar o Convite" + }, + "resendEmail": { + "message": "Reenviar E-mail" + }, + "hasBeenReinvited": { + "message": "$USER$ foi convidado(a).", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirmar" + }, + "confirmUser": { + "message": "Confirmar Usuário" + }, + "hasBeenConfirmed": { + "message": "$USER$ foi confirmado(a).", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirmar Usuários" + }, + "usersNeedConfirmed": { + "message": "Você tem usuários que aceitaram o convite, mas ainda precisam ser confirmados. Os usuários não terão acesso à organização até que sejam confirmados." + }, + "startDate": { + "message": "Data de Início" + }, + "endDate": { + "message": "Data do Término" + }, + "verifyEmail": { + "message": "Verificar E-mail" + }, + "verifyEmailDesc": { + "message": "Confirme o endereço de e-mail da sua conta para desbloquear o acesso a todos os recursos." + }, + "verifyEmailFirst": { + "message": "Primeiro, o endereço de e-mail da sua conta precisa ser confirmado." + }, + "checkInboxForVerification": { + "message": "Verifique sua caixa de entrada do e-mail para obter o código de verificação." + }, + "emailVerified": { + "message": "O seu e-mail foi verificado." + }, + "emailVerifiedFailed": { + "message": "Não é possível confirmar o seu e-mail. Tente enviar um novo e-mail de verificação." + }, + "emailVerificationRequired": { + "message": "Verificação de E-mail Necessária" + }, + "emailVerificationRequiredDesc": { + "message": "Você precisa verificar o seu e-mail para usar este recurso." + }, + "updateBrowser": { + "message": "Atualizar Navegador" + }, + "updateBrowserDesc": { + "message": "Você está usando um navegador da Web não suportado. O cofre web pode não funcionar corretamente." + }, + "joinOrganization": { + "message": "Junte-se a Organização" + }, + "joinOrganizationDesc": { + "message": "Você foi convidado para participar da organização listada acima. Para aceitar o convite, você precisa iniciar sessão ou criar uma nova conta no Bitwarden." + }, + "inviteAccepted": { + "message": "Convite Aceito" + }, + "inviteAcceptedDesc": { + "message": "Você pode acessar essa organização quando um administrador confirmar sua associação. Enviaremos um e-mail quando isso acontecer." + }, + "inviteAcceptFailed": { + "message": "Não é possível aceitar o convite. Peça a um administrador da organização para enviar um novo convite." + }, + "inviteAcceptFailedShort": { + "message": "Não foi possível aceitar o convite. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Lembrar e-mail" + }, + "recoverAccountTwoStepDesc": { + "message": "Se você não puder acessar sua conta por meio de seus métodos normais de login em duas etapas, poderá usar seu código de recuperação de login em duas etapas para desativar a funcionalidade de duas etapas da sua conta." + }, + "recoverAccountTwoStep": { + "message": "Recuperar login em duas etapas da conta" + }, + "twoStepRecoverDisabled": { + "message": "O login em duas etapas foi desativado em sua conta." + }, + "learnMore": { + "message": "Saiba mais" + }, + "deleteRecoverDesc": { + "message": "Insira seu endereço de e-mail abaixo para recuperar e excluir sua conta." + }, + "deleteRecoverEmailSent": { + "message": "Se a sua conta existir, enviamos um e-mail para você com mais instruções." + }, + "deleteRecoverConfirmDesc": { + "message": "Você pediu para excluir a sua conta no Bitwarden. Clique no botão abaixo para confirmar." + }, + "myOrganization": { + "message": "Minha Organização" + }, + "deleteOrganization": { + "message": "Excluir Organização" + }, + "deletingOrganizationContentWarning": { + "message": "Digite a senha mestra para confirmar a exclusão de $ORGANIZATION$ e todos os dados associados. Os dados do cofre no $ORGANIZATION$ incluem:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "As contas de usuários permanecerão ativas após a exclusão, mas não estarão mais associadas a essa organização." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "A exclusão de $ORGANIZATION$ é permanente e irreversível.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organização Excluida" + }, + "organizationDeletedDesc": { + "message": "A organização e todos os dados associados foram excluídos." + }, + "organizationUpdated": { + "message": "Organização atualizada" + }, + "taxInformation": { + "message": "Informações de Impostos" + }, + "taxInformationDesc": { + "message": "Para clientes dentro dos EUA, o código postal (ZIP code) é necessário para satisfazer os requisitos fiscais das vendas. para outros países você pode opcionalmente fornecer um número de identificação fiscal (VAT/GST) e/ou um endereço para aparecer nas suas faturas." + }, + "billingPlan": { + "message": "Plano", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Atualizar Plano", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Atualize sua conta para outro plano fornecendo as informações abaixo. Por favor, verifique se você tem um método de pagamento ativo adicionado à conta.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Fatura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Ver Fatura" + }, + "downloadInvoice": { + "message": "Baixar Fatura" + }, + "verifyBankAccount": { + "message": "Verificar Conta Bancária" + }, + "verifyBankAccountDesc": { + "message": "Fizemos dois micro-depósitos em sua conta bancária (pode demorar de 1 a 2 dias úteis para aparecer). Insira esses valores para confirmar a conta bancária." + }, + "verifyBankAccountInitialDesc": { + "message": "O pagamento com uma conta bancária só está disponível para clientes nos Estados Unidos. Você será solicitado a confirmar sua conta bancária. Vamos fazer dois micro-depósitos nos próximos 1-2 dias úteis. Insira esses valores na página de faturamento da organização para confirmar a conta bancária." + }, + "verifyBankAccountFailureWarning": { + "message": "A não verificação da conta bancária resultará em um pagamento não atendido e sua assinatura será desativada." + }, + "verifiedBankAccount": { + "message": "A conta bancária foi verificada." + }, + "bankAccount": { + "message": "Conta Bancária" + }, + "amountX": { + "message": "Montante $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Numero da Conta" + }, + "accountHolderName": { + "message": "Nome do Titular da Conta" + }, + "bankAccountType": { + "message": "Tipo de Conta" + }, + "bankAccountTypeCompany": { + "message": "Empresa (Profissional)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Pessoal)" + }, + "enterInstallationId": { + "message": "Insira o seu ID de instalação" + }, + "limitSubscriptionDesc": { + "message": "Defina um limite de vagas para sua assinatura. Quando esse limite for atingido, você não poderá convidar novos usuários." + }, + "maxSeatLimit": { + "message": "Limite Máximo de Vaga (opcional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Custo de vaga máximo potencial" + }, + "addSeats": { + "message": "Adicionar Assentos", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remover Assentos", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Ajustes em sua assinatura resultarão em alterações rateadas em seus totais de cobrança. Se os usuários recém-convidados excederem o número de vagas de sua assinatura, você receberá imediatamente uma cobrança proporcional pelos usuários adicionais." + }, + "subscriptionUserSeats": { + "message": "Sua assinatura permite um total de $COUNT$ usuários.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Assinatura Limite (Opcional)" + }, + "subscriptionSeats": { + "message": "Vagas de Assinatura" + }, + "subscriptionUpdated": { + "message": "Assinatura atualizada" + }, + "additionalOptions": { + "message": "Opções Adicionais" + }, + "additionalOptionsDesc": { + "message": "Para ajuda adicional no gerenciamento de sua assinatura, entre em contato com o suporte ao cliente." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Ajustes em sua assinatura resultarão em alterações rateadas em seus totais de cobrança. Se os usuários recém-convidados excederem o número de vagas de sua assinatura, você receberá imediatamente uma cobrança proporcional pelos usuários adicionais." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Ajustes em sua assinatura resultarão em alterações rateadas em seus totais de cobrança. Se os usuários recém-convidados excederem o número de vagas de sua assinatura, você receberá imediatamente uma cobrança proporcional para os usuários adicionais até que seu limite de $MAX$ de vaga seja atingido.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Você não pode convidar mais do que $COUNT$ usuários sem atualizar seu plano.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Você não pode convidar mais de $COUNT$ usuários sem atualizar seu plano. Entre em contato com o Suporte ao Cliente para atualizar.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Sua assinatura permite um total de $COUNT$ usuários. Seu plano é patrocinado e cobrado por uma organização externa.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Ajustes em sua assinatura resultarão em alterações rateadas em seus totais de cobrança. Você não pode convidar mais de $COUNT$ usuários sem aumentar suas vagas de assinatura.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Assentos Para Adicionar" + }, + "seatsToRemove": { + "message": "Assentos Para Remover" + }, + "seatsAddNote": { + "message": "A adição de assentos de usuário resultará em ajustes no total da cobrança, e será cobrada imediatamente pela sua forma de pagamento registrada. A primeira cobrança será rateada pelo restante do ciclo do faturamento atual." + }, + "seatsRemoveNote": { + "message": "A remoção dos assentos de usuário resultará em ajustes no total do faturamento, que será rateado como crédito para sua próxima cobrança." + }, + "adjustedSeats": { + "message": "Ajustado $AMOUNT$ assentos de usuário.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Chave Atualizada" + }, + "updateKeyTitle": { + "message": "Atualizar Chave" + }, + "updateEncryptionKey": { + "message": "Atualizar Chave de Criptografia" + }, + "updateEncryptionKeyShortDesc": { + "message": "Você está usando atualmente um esquema de criptografia desatualizado." + }, + "updateEncryptionKeyDesc": { + "message": "Passamos para chaves de criptografia maiores, que oferecem melhor segurança e acesso a recursos mais recentes. Atualizar sua chave de criptografia é rápido e fácil. Basta inserir sua senha mestra abaixo. Esta atualização eventualmente se tornará obrigatória." + }, + "updateEncryptionKeyWarning": { + "message": "Depois de atualizar sua chave de criptografia, é necessário encerrar e iniciar a sessão em todos os aplicativos do Bitwarden que você está usando atualmente (como o aplicativo móvel ou as extensões do navegador). Não encerrar e iniciar sessão (que baixa sua nova chave de criptografia) pode resultar em corrupção de dados. Nós tentaremos desconectá-lo automaticamente, mas isso pode demorar um pouco." + }, + "updateEncryptionKeyExportWarning": { + "message": "Quaisquer exportações criptografadas que você tenha salvo também se tornarão inválidas." + }, + "subscription": { + "message": "Assinatura" + }, + "loading": { + "message": "Carregando" + }, + "upgrade": { + "message": "Atualizar" + }, + "upgradeOrganization": { + "message": "Atualizar Organização" + }, + "upgradeOrganizationDesc": { + "message": "Este recurso não está disponível para organizações gratuitas. Mude para um plano pago para desbloquear mais recursos." + }, + "createOrganizationStep1": { + "message": "Criar Organização: Passo 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Antes de criar sua organização, primeiro você precisa criar uma conta pessoal gratuita." + }, + "refunded": { + "message": "Reembolsado" + }, + "nothingSelected": { + "message": "Você selecionou nada." + }, + "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." + }, + "termsOfService": { + "message": "Termos de Serviço" + }, + "privacyPolicy": { + "message": "Política de Privacidade" + }, + "filters": { + "message": "Filtros" + }, + "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." + }, + "oneMinute": { + "message": "1 minuto" + }, + "fiveMinutes": { + "message": "5 minutos" + }, + "fifteenMinutes": { + "message": "15 minutos" + }, + "thirtyMinutes": { + "message": "30 minutos" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 horas" + }, + "onRefresh": { + "message": "Quando Reiniciar o Navegador" + }, + "dateUpdated": { + "message": "Atualizado", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Senha Atualizada", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organização está desabilitada." + }, + "licenseIsExpired": { + "message": "A licença está expirada." + }, + "updatedUsers": { + "message": "Usuários atualizados" + }, + "selected": { + "message": "Selecionado" + }, + "ownership": { + "message": "Propriedade" + }, + "whoOwnsThisItem": { + "message": "Quem possui este item?" + }, + "strong": { + "message": "Forte", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Boa", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Fraca", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Muito Fraca", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Também rodar a chave de encriptação da minha conta" + }, + "rotateEncKeyTitle": { + "message": "Rodar Chave de Encriptação" + }, + "rotateEncKeyConfirmation": { + "message": "Você tem certeza que quer rodar a chave de encriptação da sua conta?" + }, + "attachmentsNeedFix": { + "message": "Este item tem anexos de arquivos antigos que precisam ser corrigidos." + }, + "attachmentFixDesc": { + "message": "Este é um anexo de arquivo antigo que precisa ser corrigido. Clique para saber mais." + }, + "fix": { + "message": "Corrigir", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Há anexos de arquivos antigos no seu cofre que precisam ser corrigidos antes que você possa girar a chave de criptografia da sua conta." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Para garantir a integridade de suas chaves de criptografia, verifique a frase biométrica do usuário antes de continuar.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Não peça para verificar a frase biométrica novamente", + "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." + }, + "free": { + "message": "Gratuito", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Chave API" + }, + "apiKeyDesc": { + "message": "Sua chave API pode ser usada para autenticar na API pública do Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Girar a chave da API invalidará a chave anterior. Você pode girar sua chave de API se acreditar que a chave atual não é mais segura de usar." + }, + "apiKeyWarning": { + "message": "Sua chave de API tem acesso total à organização. Deve ser mantido em segredo." + }, + "userApiKeyDesc": { + "message": "Sua chave API pode ser usada para autenticar no Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Sua chave de API é um mecanismo de autenticação alternativo. Deve ser mantido em segredo." + }, + "oauth2ClientCredentials": { + "message": "Credenciais do cliente OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Ver chave API" + }, + "rotateApiKey": { + "message": "Girar chave API" + }, + "selectOneCollection": { + "message": "Você deve selecionar pelo menos uma coleção." + }, + "couldNotChargeCardPayInvoice": { + "message": "Não foi possível cobrar no seu cartão. Por favor, veja e pague a fatura pendente listada abaixo." + }, + "inAppPurchase": { + "message": "Compra no Aplicativo" + }, + "cannotPerformInAppPurchase": { + "message": "Você não pode executar esta ação enquanto usa um método de pagamento de compra dentro do aplicativo." + }, + "manageSubscriptionFromStore": { + "message": "Você deve gerenciar sua assinatura na loja onde sua compra pelo aplicativo foi feita." + }, + "minLength": { + "message": "Comprimento Mínimo" + }, + "clone": { + "message": "Clonar" + }, + "masterPassPolicyDesc": { + "message": "Defina os requisitos mínimos para a força da senha mestra." + }, + "twoStepLoginPolicyDesc": { + "message": "Exigir que os usuários definam a autenticação de dois passos nas suas contas pessoais." + }, + "twoStepLoginPolicyWarning": { + "message": "Os membros da organização que não possuam a autenticação de dois passos ativa para sua conta pessoal serão removidos da organização e receberão um e-mail notificando-os da mudança." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Você é um membro de uma organização que exige que a autenticação de dois passos seja ativada na sua conta de usuário. Se desativar todos os serviços de autenticação de dois passos, você será automaticamente removido dessas organizações." + }, + "passwordGeneratorPolicyDesc": { + "message": "Defina os requisitos mínimos para configuração do gerador de senhas." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Uma ou mais políticas da organização estão afetando as suas configurações do gerador." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Número Mínimo de Palavras" + }, + "defaultType": { + "message": "Tipo Padrão" + }, + "userPreference": { + "message": "Preferência do Usuário" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Pesquisar na Lixeira" + }, + "permanentlyDelete": { + "message": "Excluir Permanentemente" + }, + "permanentlyDeleteSelected": { + "message": "Excluir Permanentemente Selecionados" + }, + "permanentlyDeleteItem": { + "message": "Excluir o Item Permanentemente" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Você tem certeza que deseja excluir permanentemente esse item?" + }, + "permanentlyDeletedItem": { + "message": "Item Permanentemente Excluído" + }, + "permanentlyDeletedItems": { + "message": "Itens Permanentemente Excluídos" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Você selecionou $COUNT$ item(ns) para excluir permanentemente. Tem certeza que deseja excluir permanentemente todos estes itens?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Item $ID$ Excluído Permanentemente.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restaurar" + }, + "restoreSelected": { + "message": "Restaurar Selecionados" + }, + "restoreItem": { + "message": "Restaurar Item" + }, + "restoredItem": { + "message": "Item Restaurado" + }, + "restoredItems": { + "message": "Itens Restaurados" + }, + "restoreItemConfirmation": { + "message": "Você tem certeza que deseja restaurar esse item?" + }, + "restoreItems": { + "message": "Restaurar itens" + }, + "restoreSelectedItemsDesc": { + "message": "Você selecionou $COUNT$ item(ns) para restaurar. Tem certeza que deseja restaurar todos esses itens?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Item $ID$ restaurado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Esconder Senhas" + }, + "countryPostalCodeRequiredDesc": { + "message": "Exigimos essa informação apenas para o cálculo do imposto sobre as vendas e informação financeira." + }, + "includeVAT": { + "message": "Incluir informações sobre IVA/GST (opcional)" + }, + "taxIdNumber": { + "message": "ID de Imposto VAT/GST" + }, + "taxInfoUpdated": { + "message": "Informações de impostos atualizadas." + }, + "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." + }, + "identifier": { + "message": "Identificador" + }, + "organizationIdentifier": { + "message": "Identificador da Organização" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Faça o login usando o portal de login único da sua organização. Por favor, insira o identificador da sua organização para começar." + }, + "enterpriseSingleSignOn": { + "message": "Iniciar Sessão Empresarial Única" + }, + "ssoHandOff": { + "message": "Agora você pode fechar esta aba e continuar na extensão." + }, + "includeAllTeamsFeatures": { + "message": "Recursos para Todas as Equipes, além de:" + }, + "includeSsoAuthentication": { + "message": "Autenticação SSO via SAML2.0 e OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Políticas Empresariais" + }, + "ssoValidationFailed": { + "message": "Falha na Validação SSO" + }, + "ssoIdentifierRequired": { + "message": "O Identificador da Organização é obrigatório." + }, + "unlinkSso": { + "message": "Desvincular SSO" + }, + "unlinkSsoConfirmation": { + "message": "Você tem certeza que deseja desvincular o SSO para esta organização?" + }, + "linkSso": { + "message": "Vincular SSO" + }, + "singleOrg": { + "message": "Organização Única" + }, + "singleOrgDesc": { + "message": "Restringir os usuários de poderem entrar em outras organizações." + }, + "singleOrgBlockCreateMessage": { + "message": "Sua organização atual tem uma política que não permite que você entre em mais de uma organização. Por favor, entre em contato com os administradores da sua organização ou cadastre-se a partir de uma conta do Bitwarden diferente." + }, + "singleOrgPolicyWarning": { + "message": "Os membros da organização que não são Donos ou Administradores, e já são membros de outra organização serão removidos da sua organização." + }, + "requireSso": { + "message": "Autenticação de Acesso Único" + }, + "requireSsoPolicyDesc": { + "message": "Exige que os usuários façam login com o método de Login Único da Empresa." + }, + "prerequisite": { + "message": "Pré-requisito" + }, + "requireSsoPolicyReq": { + "message": "A política das empresas da Organização Única tem de ser viabilizada antes da ativação desta política." + }, + "requireSsoPolicyReqError": { + "message": "Política da Organização Única não ativada." + }, + "requireSsoExemption": { + "message": "Os Proprietários e Administradores da Organização estão isentos da aplicação desta política." + }, + "sendTypeFile": { + "message": "Arquivo" + }, + "sendTypeText": { + "message": "Texto" + }, + "createSend": { + "message": "Criar Novo 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." + }, + "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." + }, + "deleteSend": { + "message": "Excluir Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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 Acesso" + }, + "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 esse Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Desativado" + }, + "sendLink": { + "message": "Link do Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copiar Link do Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remover Senha" + }, + "removedPassword": { + "message": "Senha Removida" + }, + "removePasswordConfirmation": { + "message": "Você tem certeza que deseja remover a senha?" + }, + "hideEmail": { + "message": "Ocultar meu endereço de e-mail dos destinatários." + }, + "disableThisSend": { + "message": "Desabilite 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." + }, + "allSends": { + "message": "Todos os Sends" + }, + "maxAccessCountReached": { + "message": "Número máximo de acessos atingido", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Exclusão pendente" + }, + "expired": { + "message": "Expirado" + }, + "searchSends": { + "message": "Pesquisar Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Este Send está protegido com uma senha. Por favor, digite a senha abaixo para continuar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Não sabe a senha? Peça ao Remetente a senha necessária para acessar esse Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Este Send é oculto por padrão. Você pode alternar a visibilidade usando o botão abaixo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Baixar Arquivo" + }, + "sendAccessUnavailable": { + "message": "O Send que você está tentando acessar não existe ou não está mais disponível.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "O arquivo associado a este Send não foi encontrado.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Não há Sends para listar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Acesso de Emergência" + }, + "emergencyAccessDesc": { + "message": "Conceda e gerencie o acesso de emergência para contatos confiáveis. Contatos confiáveis podem solicitar acesso a Visualizar ou Assumir o Controle da sua conta em caso de emergência. Visite a nossa página de ajuda para obter mais informações e detalhes sobre como o compartilhamento de conhecimento zero funciona." + }, + "emergencyAccessOwnerWarning": { + "message": "Você é o Proprietário de uma ou mais organizações. Se você conceder acesso a um contato de emergência, eles serão capazes de usar todas as suas permissões como Proprietário após uma concessão." + }, + "trustedEmergencyContacts": { + "message": "Contatos de emergência confiáveis" + }, + "noTrustedContacts": { + "message": "Você ainda não adicionou nenhum contato de emergência, convide um contato confiável para começar." + }, + "addEmergencyContact": { + "message": "Adicionar contato de emergência" + }, + "designatedEmergencyContacts": { + "message": "Designado como contato de emergência" + }, + "noGrantedAccess": { + "message": "Você ainda não foi designado como um contato de emergência para ninguém." + }, + "inviteEmergencyContact": { + "message": "Convidar contato de emergência" + }, + "editEmergencyContact": { + "message": "Editar contato de emergência" + }, + "inviteEmergencyContactDesc": { + "message": "Convide um novo contato de emergência digitando o endereço de e-mail da conta Bitwarden abaixo. Se eles não tiverem uma conta no Bitwarden, eles serão solicitados a criar uma nova conta." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Acesso de Emergência Iniciado" + }, + "emergencyAccessRecoveryApproved": { + "message": "Acesso de Emergência Aprovado" + }, + "viewDesc": { + "message": "Você pode ver todos os itens no seu próprio cofre." + }, + "takeover": { + "message": "Assumir o Controle" + }, + "takeoverDesc": { + "message": "Pode redefinir a sua conta com uma nova senha mestra." + }, + "waitTime": { + "message": "Tempo de Espera" + }, + "waitTimeDesc": { + "message": "Tempo necessário antes de conceder acesso automaticamente." + }, + "oneDay": { + "message": "1 dia" + }, + "days": { + "message": "$DAYS$ dias", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Usuário convidado." + }, + "acceptEmergencyAccess": { + "message": "Você foi convidado para se tornar um contato de emergência para o usuário listado acima. Para aceitar o convite, você precisa iniciar sessão ou criar uma nova conta no Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Não foi possível aceitar o convite. Peça ao usuário para enviar um novo convite." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Não foi possível aceitar o convite. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Você pode acessar as opções de emergência para esse usuário após a confirmação da sua identidade. Enviaremos um e-mail a você quando isso acontecer." + }, + "requestAccess": { + "message": "Solicitar Acesso" + }, + "requestAccessConfirmation": { + "message": "Tem certeza que deseja solicitar acesso de emergência? Você receberá acesso após $WAITTIME$ dia(s) ou sempre que o usuário aprovar manualmente a solicitação.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Acesso de emergência solicitado para $USER$. Nós o notificaremos por e-mail quando for possível continuar.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Aprovar" + }, + "reject": { + "message": "Rejeitar" + }, + "approveAccessConfirmation": { + "message": "Tem certeza de que deseja aprovar o acesso de emergência? Isto permitirá que $USER$ possa $ACTION$ da sua conta.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Acesso de emergência aprovado." + }, + "emergencyRejected": { + "message": "Acesso de emergência rejeitado" + }, + "passwordResetFor": { + "message": "Redefinição de senha para $USER$. Agora você pode acessar usando a nova senha.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Propriedade Pessoal" + }, + "personalOwnershipPolicyDesc": { + "message": "Exigir que os usuários salvem itens de cofre em uma organização removendo a opção de propriedade pessoal." + }, + "personalOwnershipExemption": { + "message": "Os proprietários e administradores da organização estão isentos da aplicação desta política." + }, + "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." + }, + "disableSend": { + "message": "Desabilitar Send" + }, + "disableSendPolicyDesc": { + "message": "Não permite que usuários criem ou editem um Send no Bitwarden. Excluir um Send existente ainda é permitido.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Os usuários da organização que podem gerenciar as políticas da organização estão isentos da aplicação desta política." + }, + "sendDisabled": { + "message": "Send desabilitado", + "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ó é capaz de excluir um Send existente.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptions": { + "message": "Opções de Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Definir opções para a criação e edição de Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Os usuários da organização que podem gerenciar as políticas da organização estão isentos da aplicação desta política." + }, + "disableHideEmail": { + "message": "Não permitir que os usuários ocultem seus endereços de e-mail dos destinatários ao criar ou editar um Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "As seguintes políticas da organização estão em vigor atualmente:" + }, + "sendDisableHideEmailInEffect": { + "message": "Os usuários não têm permissão para ocultar seus endereços de e-mail dos destinatários ao criar ou editar um Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Política modificada $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Valor do plano" + }, + "estimatedTax": { + "message": "Impostos estimados" + }, + "custom": { + "message": "Personalizado" + }, + "customDesc": { + "message": "Permite controle mais granular das permissões de usuário para configurações avançadas." + }, + "permissions": { + "message": "Permissões" + }, + "accessEventLogs": { + "message": "Acessar Registro de Eventos" + }, + "accessImportExport": { + "message": "Acessar Importar/Exportar" + }, + "accessReports": { + "message": "Acessar Relatórios" + }, + "missingPermissions": { + "message": "Você não tem a permissão necessária para executar esta ação." + }, + "manageAllCollections": { + "message": "Gerenciar Todas as Coleções" + }, + "createNewCollections": { + "message": "Criar Novas Coleções" + }, + "editAnyCollection": { + "message": "Editar Qualquer Coleção" + }, + "deleteAnyCollection": { + "message": "Excluir Qualquer Coleção" + }, + "manageAssignedCollections": { + "message": "Gerenciar Coleções Atribuídas" + }, + "editAssignedCollections": { + "message": "Editar Coleções Atribuídas" + }, + "deleteAssignedCollections": { + "message": "Excluir Coleções Atribuídas" + }, + "manageGroups": { + "message": "Gerenciar Grupos" + }, + "managePolicies": { + "message": "Gerenciar Políticas" + }, + "manageSso": { + "message": "Gerenciar SSO" + }, + "manageUsers": { + "message": "Gerenciar Usuários" + }, + "manageResetPassword": { + "message": "Gerenciar Redefinição de Senha" + }, + "disableRequiredError": { + "message": "Você deve desativar manualmente a política $POLICYNAME$ antes que esta política possa ser desativada.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Uma política de organização está afetando suas opções de propriedade." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Uma política da organização desativou a importação de itens para o seu cofre pessoal." + }, + "personalOwnershipCheckboxDesc": { + "message": "Desativar propriedade pessoal para usuários da organização" + }, + "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." + }, + "sendNameDesc": { + "message": "Um nome amigável para descrever este 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." + }, + "copySendLinkOnSave": { + "message": "Copie o link para compartilhar este Send para minha área de transferência depois de salvar." + }, + "sendLinkLabel": { + "message": "Link do Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "O Bitwarden Send transmite informações sensíveis e temporárias para outras pessoas de forma fácil e segura.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Saiba mais", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Compartilhe texto ou arquivos diretamente com qualquer um." + }, + "sendVaultCardLearnMore": { + "message": "Saiba mais", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "veja", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "como funciona", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "ou", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "teste agora", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "ou", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "registre-se", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "para testar hoje mesmo.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "O usuário $USER_IDENTIFIER$ do Bitwarden compartilhou o seguinte com você", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "O usuário Bitwarden que criou este Send optou por ocultar seu endereço de e-mail. Você deve certificar-se de que confia na fonte deste link antes de usar ou baixar seu conteúdo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "A data de validade fornecida não é válida." + }, + "deletionDateIsInvalid": { + "message": "A data de exclusão fornecida não é válida." + }, + "expirationDateAndTimeRequired": { + "message": "Uma data e hora de expiração são obrigatórias." + }, + "deletionDateAndTimeRequired": { + "message": "Uma data e hora de exclusão são obrigatórias." + }, + "dateParsingError": { + "message": "Ocorreu um erro ao salvar as suas datas de exclusão e validade." + }, + "webAuthnFallbackMsg": { + "message": "Para verificar seu 2FA, por favor, clique no botão abaixo." + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "webAuthnNotSupported": { + "message": "O WebAuthn não é suportado neste navegador." + }, + "webAuthnSuccess": { + "message": "WebAuthn verificado com sucesso!
Você pode fechar esta guia." + }, + "hintEqualsPassword": { + "message": "Sua dica de senha senha não pode ser a mesma que a sua senha." + }, + "enrollPasswordReset": { + "message": "Inscrever-se na Redefinição de Senha" + }, + "enrolledPasswordReset": { + "message": "Inscrito na Redefinição de Senha" + }, + "withdrawPasswordReset": { + "message": "Retirar da Redefinição de Senha" + }, + "enrollPasswordResetSuccess": { + "message": "Inscrição com sucesso!" + }, + "withdrawPasswordResetSuccess": { + "message": "Retirada com sucesso!" + }, + "eventEnrollPasswordReset": { + "message": "O usuário $ID$ inscreveu-se na assistência para redefinição de senha.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "O usuário $ID$ retirou-se da assistência para redefinição de senha.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Redefinir senha mestra para o usuário $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Redefinir link Sso para o usuário $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ se conectou usando o Sso pela primeira vez", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Redefinir Senha" + }, + "resetPasswordLoggedOutWarning": { + "message": "O processo desconectará $NAME$ de sua sessão atual, exigindo que eles iniciem a sessão novamente. As sessões ativas em outros dispositivos podem continuar ativas por até uma hora.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "este usuário" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Uma ou mais políticas da organização exigem que a senha mestra cumpra aos seguintes requisitos:" + }, + "resetPasswordSuccess": { + "message": "Senha redefinida com sucesso!" + }, + "resetPasswordEnrollmentWarning": { + "message": "A inscrição permitirá que os administradores da organização alterem sua senha mestra. Tem certeza que deseja se inscrever?" + }, + "resetPasswordPolicy": { + "message": "Redefinir Senha Mestra" + }, + "resetPasswordPolicyDescription": { + "message": "Permitir que os administradores da organização redefinam a senha mestra dos usuários da organização." + }, + "resetPasswordPolicyWarning": { + "message": "Os usuários da organização terão de se inscrever automaticamente ou serem inscritos automaticamente para que os administradores possam redefinir sua senha mestra." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscrição Automática" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Todos os usuários serão inscritos automaticamente na redefinição de senha assim que o convite for aceito." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Os usuários que já estão na organização não serão inscritos retroativamente na redefinição de senha. Eles precisarão se inscrever para que os administradores possam redefinir sua senha mestra." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Inscrever automaticamente novos usuários" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "A resposta das Chaves da Organização é nula" + }, + "resetPasswordDetailsError": { + "message": "A resposta para Redefinir os Detalhes da Senha é nula" + }, + "trashCleanupWarning": { + "message": "As cifras que ficarem na lixeira por mais de 30 dias serão excluídas automaticamente." + }, + "trashCleanupWarningSelfHosted": { + "message": "As cifras que estiverem na Lixeira por um tempo serão excluídas automaticamente." + }, + "passwordPrompt": { + "message": "Nova solicitação 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." + }, + "reinviteSelected": { + "message": "Reenviar Convites" + }, + "noSelectedUsersApplicable": { + "message": "Esta ação não é aplicável a nenhum dos usuários selecionados." + }, + "removeUsersWarning": { + "message": "Tem certeza de que deseja remover os seguintes usuários? O processo pode levar alguns segundos para ser concluído e não pode ser interrompido ou cancelado." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Escolha um tema para o seu cofre web." + }, + "themeSystem": { + "message": "Usar Tema do Sistema" + }, + "themeDark": { + "message": "Escuro" + }, + "themeLight": { + "message": "Claro" + }, + "confirmSelected": { + "message": "Confirmar Selecionado(s)" + }, + "bulkConfirmStatus": { + "message": "Status de ação em massa" + }, + "bulkConfirmMessage": { + "message": "Confirmado com sucesso." + }, + "bulkReinviteMessage": { + "message": "Convidado novamente com sucesso." + }, + "bulkRemovedMessage": { + "message": "Removido com sucesso" + }, + "bulkFilteredMessage": { + "message": "Excluído, não aplicável para esta ação." + }, + "fingerprint": { + "message": "Impressão digital" + }, + "removeUsers": { + "message": "Remover Usuários" + }, + "error": { + "message": "Erro" + }, + "resetPasswordManageUsers": { + "message": "Gerenciar Usuários também deve ser habilitado com a permissão para Gerenciar a Redefinição de Senha" + }, + "setupProvider": { + "message": "Configuração do Provedor" + }, + "setupProviderLoginDesc": { + "message": "Você foi convidado para configurar um novo provedor. Para continuar, você precisa iniciar sessão ou criar uma nova conta no Bitwarden." + }, + "setupProviderDesc": { + "message": "Por favor, insira os detalhes abaixo para completar a configuração do provedor. Entre em Contato com o Suporte ao Cliente se tiver alguma dúvida." + }, + "providerName": { + "message": "Nome do Provedor" + }, + "providerSetup": { + "message": "O provedor foi configurado." + }, + "clients": { + "message": "Clientes" + }, + "providerAdmin": { + "message": "Administrador do Provedor" + }, + "providerAdminDesc": { + "message": "O usuário de maior acesso que pode gerenciar todos os aspectos do seu provedor, bem como acessar e gerenciar organizações de clientes." + }, + "serviceUser": { + "message": "Usuário de Serviço" + }, + "serviceUserDesc": { + "message": "Os usuários do serviço podem acessar e gerenciar todas as organizações de clientes." + }, + "providerInviteUserDesc": { + "message": "Convide um novo usuário para seu provedor digitando o endereço de e-mail da conta Bitwarden dele abaixo. Se ele não tiver uma conta no Bitwarden, ele será solicitado a criar uma nova conta." + }, + "joinProvider": { + "message": "Participar do Provedor" + }, + "joinProviderDesc": { + "message": "Você foi convidado para participar do provedor listado acima. Para aceitar o convite, você precisa iniciar sessão ou criar uma nova conta no Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "Não foi possível aceitar o convite. Peça ao administrador do provedor para enviar um novo convite." + }, + "providerInviteAcceptedDesc": { + "message": "Você pode acessar este provedor quando um administrador confirmar sua associação. Enviaremos um e-mail quando isso acontecer." + }, + "providerUsersNeedConfirmed": { + "message": "Você tem usuários que aceitaram o convite, mas ainda precisam ser confirmados. Os usuários não terão acesso ao provedor até que sejam confirmados." + }, + "provider": { + "message": "Provedor" + }, + "newClientOrganization": { + "message": "Nova Organização de Cliente" + }, + "newClientOrganizationDesc": { + "message": "Crie uma nova organização de cliente que será associada a você como o provedor. Você poderá acessar e gerenciar esta organização." + }, + "addExistingOrganization": { + "message": "Adicionar Organização Existente" + }, + "myProvider": { + "message": "Meu Provedor" + }, + "addOrganizationConfirmation": { + "message": "Tem certeza de que deseja adicionar $ORGANIZATION$ como um cliente a $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organização foi adicionada com sucesso ao provedor" + }, + "accessingUsingProvider": { + "message": "Acessando a organização usando o provedor $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "O provedor está desativado." + }, + "providerUpdated": { + "message": "Provedor atualizado" + }, + "yourProviderIs": { + "message": "Seu provedor é $PROVIDER$. Eles têm privilégios administrativos e de cobrança para sua organização.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "A organização $ORGANIZATION$ foi desanexada do seu provedor.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Tem certeza de que deseja desanexar esta organização? A organização continuará existindo, mas não será mais gerenciada pelo provedor." + }, + "add": { + "message": "Adicionar" + }, + "updatedMasterPassword": { + "message": "Senha Mestra Atualizada" + }, + "updateMasterPassword": { + "message": "Atualizar Senha Mestra" + }, + "updateMasterPasswordWarning": { + "message": "Sua Senha Mestra foi alterada recentemente por um administrador em sua organização. Para acessar o cofre, você deve atualizar sua Senha Mestra agora. Prosseguir irá desconectá-lo da sessão atual, exigindo que você faça login novamente. As sessões ativas em outros dispositivos podem continuar ativas por até uma hora." + }, + "masterPasswordInvalidWarning": { + "message": "Sua Senha Mestra foi alterada recentemente por um administrador de sua organização. Para acessar o cofre, você precisa atualizar sua Senha Mestra 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." + }, + "maximumVaultTimeout": { + "message": "Tempo Limite do Cofre" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure o tempo máximo para o cofre para todos os usuários." + }, + "maximumVaultTimeoutLabel": { + "message": "Tempo Limite Máximo do Cofre" + }, + "invalidMaximumVaultTimeout": { + "message": "Tempo Máximo de Cofre Inválido." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Tempo Limite do Cofre Personalizado" + }, + "vaultTimeoutToLarge": { + "message": "O tempo limite do seu cofre excede a restrição definida por sua organização." + }, + "disablePersonalVaultExport": { + "message": "Desabilitar Exportação de Cofre Pessoal" + }, + "disablePersonalVaultExportDesc": { + "message": "Proíbe os usuários de exportar seus dados de cofre privados." + }, + "vaultExportDisabled": { + "message": "Exportação de Cofre Desabilitada" + }, + "personalVaultExportPolicyInEffect": { + "message": "Uma ou mais políticas da organização impdem que você exporte seu cofre pessoal." + }, + "selectType": { + "message": "Selecionar Tipo de SSO" + }, + "type": { + "message": "Tipo" + }, + "openIdConnectConfig": { + "message": "Configuração OpenID Connect" + }, + "samlSpConfig": { + "message": "Configuração do Provedor de Serviço SAML" + }, + "samlIdpConfig": { + "message": "Configuração do Provedor de Identidade SAML" + }, + "callbackPath": { + "message": "Caminho de Retorno" + }, + "signedOutCallbackPath": { + "message": "Caminho de Retorno de Chamada Desconectado" + }, + "authority": { + "message": "Autoridade" + }, + "clientId": { + "message": "ID do Cliente" + }, + "clientSecret": { + "message": "Segredo do Cliente" + }, + "metadataAddress": { + "message": "Endereço dos Metadados" + }, + "oidcRedirectBehavior": { + "message": "Comportamento de Redirecionamento OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Obter Reivindicações do Terminal de Informações do Usuário" + }, + "additionalScopes": { + "message": "Escopos Adicionais/Personalizados (delimitado por vírgulas)" + }, + "additionalUserIdClaimTypes": { + "message": "Tipos de Reivindicação de ID de Usuário Adicionais/Personalizados (delimitado por vírgulas)" + }, + "additionalEmailClaimTypes": { + "message": "Tipos de Reivindicação de E-mail Adicionais/Personalizados (delimitado por vírgulas)" + }, + "additionalNameClaimTypes": { + "message": "Tipos de Reivindicação de Nome Adicionais/Personalizados (delimitado por vírgulas)" + }, + "acrValues": { + "message": "Valores de Referência de Classe de Contexto de Autenticação Solicitada (acr_values)" + }, + "expectedReturnAcrValue": { + "message": "Esperado Valor de Reivindicação \"acr\" Na Resposta (validação acr)" + }, + "spEntityId": { + "message": "ID da Entidade SP" + }, + "spMetadataUrl": { + "message": "URL de Metadados SAML 2.0" + }, + "spAcsUrl": { + "message": "URL do Serviço de Declaração de Consumidor (ACS)" + }, + "spNameIdFormat": { + "message": "Formato ID do Nome" + }, + "spOutboundSigningAlgorithm": { + "message": "Algoritmo de Assinatura de Saída" + }, + "spSigningBehavior": { + "message": "Comportamento de Assinatura" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Algoritmo de Assinatura de Entrada Mínima" + }, + "spWantAssertionsSigned": { + "message": "Precisa de Declarações Assinadas" + }, + "spValidateCertificates": { + "message": "Validar Certificados" + }, + "idpEntityId": { + "message": "ID da Entidade" + }, + "idpBindingType": { + "message": "Tipo de Ligação" + }, + "idpSingleSignOnServiceUrl": { + "message": "URL de Serviço de Logon Único" + }, + "idpSingleLogoutServiceUrl": { + "message": "URL de Serviço de Desconexão Único" + }, + "idpX509PublicCert": { + "message": "Certificado Público X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Algoritmo de Assinatura de Saída" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Permitir Retorno de Autenticação Não Solicitada" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Assinar pedidos de autenticação" + }, + "ssoSettingsSaved": { + "message": "Configuração de logon único foi salva." + }, + "sponsoredFamilies": { + "message": "Bitwarden Families Gratuito" + }, + "sponsoredFamiliesEligible": { + "message": "Você e sua família estão elegíveis para o Bitwarden Families Gratuito. Resgate com seu e-mail pessoal para manter seus dados seguros mesmo quando você não estiver no trabalho." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Resgate o seu plano Bitwarden for Families Grátis hoje para manter seus dados seguros mesmo quando você não estiver no trabalho." + }, + "sponsoredFamiliesInclude": { + "message": "O plano Bitwarden Families inclui" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Acesso premium para até 6 usuários" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Coleções compartilhadas de segredos de Família" + }, + "badToken": { + "message": "O link não é mais válido. Peça ao patrocinador para reenviar a oferta." + }, + "reclaimedFreePlan": { + "message": "Plano gratuito recuperado" + }, + "redeem": { + "message": "Resgatar" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Selecione a organização que você gostaria de patrocinar" + }, + "familiesSponsoringOrgSelect": { + "message": "Qual oferta do Families Grátis você gostaria de resgatar?" + }, + "sponsoredFamiliesEmail": { + "message": "Digite seu e-mail pessoal para resgatar o Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Se você sair ou for removido desta organização, seu plano do Families irá expirar no final do período de cobrança." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Aceite a oferta de uma organização existente ou crie uma nova organização de Famílias." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Foi oferecida a você uma Organização do Plano Bitwarden Families gratuita. Para continuar, você precisa entrar na conta que recebeu a oferta." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Não é possível aceitar a oferta. Reenvie o e-mail da oferta da conta corporativa e tente novamente." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Não é possível aceitar a oferta. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Resgatar Oferta de Organização do Bitwarden Families Gratuita" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "A Oferta Gratuita do Bitwarden Families foi resgatada com sucesso" + }, + "redeemed": { + "message": "Resgatado" + }, + "redeemedAccount": { + "message": "Conta Resgatada" + }, + "revokeAccount": { + "message": "Revogar conta $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Reenviar e-mail de Patrocínio para $NAME$ patrocínio", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Plano Familiar Gratuito" + }, + "redeemNow": { + "message": "Resgatar Agora" + }, + "recipient": { + "message": "Destinatário" + }, + "removeSponsorship": { + "message": "Remover Patrocínio" + }, + "removeSponsorshipConfirmation": { + "message": "Depois de remover um patrocínio, você será responsável por essa assinatura e faturas relacionadas. Tem certeza de que quer continuar?" + }, + "sponsorshipCreated": { + "message": "Patrocínio Criado" + }, + "revoke": { + "message": "Revogar" + }, + "emailSent": { + "message": "E-mail Enviado" + }, + "revokeSponsorshipConfirmation": { + "message": "Depois de remover esta conta, o proprietário da organização das Famílias será responsável por essa assinatura e faturas relacionadas. Tem certeza de que quer continuar?" + }, + "removeSponsorshipSuccess": { + "message": "Patrocínio Removido" + }, + "ssoKeyConnectorUnavailable": { + "message": "Não foi possível acessar o Conector de Chave, tente novamente mais tarde." + }, + "keyConnectorUrl": { + "message": "URL de Conector de Chave" + }, + "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": "O código de verificação é necessário." + }, + "invalidVerificationCode": { + "message": "Código de verificação inválido" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remover Senha Mestra" + }, + "removedMasterPassword": { + "message": "Senha mestra removida." + }, + "allowSso": { + "message": "Permitir autenticação por SSO" + }, + "allowSsoDesc": { + "message": "Uma vez definida, sua configuração será salva e os membros poderão se autenticar usando suas credenciais de Provedor de Identidade." + }, + "ssoPolicyHelpStart": { + "message": "Ativar o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Política de SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "para exigir que todos os membros entrem com o SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "As políticas de Autenticação de SSO e Organização Única são necessárias para configurar a descriptografia do Conector de Chave." + }, + "memberDecryptionOption": { + "message": "Opções de Descriptografia de Membro" + }, + "memberDecryptionPassDesc": { + "message": "Uma vez autenticados, os membros irão descriptografar os dados do cofre usando suas Senhas Mestras." + }, + "keyConnector": { + "message": "Conector de Chave" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Conecte o Login com o SSO ao seu servidor de chave de descriptografia auto-hospedado. Usando esta opção, os membros não precisarão usar suas senhas mestras para descriptografar os dados do cofre." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Entrar com o SSO e Descriptografia de Conector de Chave\" está habilitado. Esta política se aplica apenas a Proprietários e Administradores." + }, + "enabledSso": { + "message": "Ativado o SSO" + }, + "disabledSso": { + "message": "Desativado o SSO" + }, + "enabledKeyConnector": { + "message": "Ativado o Conector de Chave" + }, + "disabledKeyConnector": { + "message": "Desativado o Conector de Chave" + }, + "keyConnectorWarning": { + "message": "Depois que o Conector de Chave é configurado, as Opções de Descriptografia de Membro não podem ser alteradas." + }, + "migratedKeyConnector": { + "message": "Migrado para o Conector de Chave" + }, + "paymentSponsored": { + "message": "Por favor, forneça uma forma de pagamento para associar à organização. Não se preocupe, não cobraremos nada, a menos que você selecione recursos adicionais ou seu patrocínio expire. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "A oferta de patrocínio expirou, você pode excluir a organização que criou para evitar uma cobrança no final do seu teste de 7 dias. Caso contrário, você pode fechar este alerta para manter a organização e assumir a responsabilidade pela cobrança." + }, + "newFamiliesOrganization": { + "message": "Nova Organização de Famílias" + }, + "acceptOffer": { + "message": "Aceitar Oferta" + }, + "sponsoringOrg": { + "message": "Organização Patrocinadora" + }, + "keyConnectorTest": { + "message": "Testar" + }, + "keyConnectorTestSuccess": { + "message": "Sucesso! Conector de Chave acessado." + }, + "keyConnectorTestFail": { + "message": "Não foi possível acessar o Conector de Chave. Verifique a URL." + }, + "sponsorshipTokenHasExpired": { + "message": "A oferta de patrocínio expirou." + }, + "freeWithSponsorship": { + "message": "GRÁTIS com patrocínio" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Recriar Usuário" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json new file mode 100644 index 0000000000..836c14fda1 --- /dev/null +++ b/apps/web/src/locales/pt_PT/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Cofre Web $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Que tipo de item é este?" + }, + "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" + }, + "newPassword": { + "message": "Nova palavra-passe" + }, + "passphrase": { + "message": "Frase-passe" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Campos personalizados" + }, + "cardholderName": { + "message": "Titular do cartão" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Expiração" + }, + "securityCode": { + "message": "Código de segurança (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "authenticatorKeyTotp": { + "message": "Chave do 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" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Remover" + }, + "unassigned": { + "message": "Não atribuido" + }, + "noneFolder": { + "message": "Nenhuma pasta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Adicionar pasta" + }, + "editFolder": { + "message": "Editar pasta" + }, + "baseDomain": { + "message": "Domínio 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 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." + }, + "never": { + "message": "Nunca" + }, + "toggleVisibility": { + "message": "Alternar visibilidade" + }, + "toggleCollapse": { + "message": "Alternar colapso", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Gerar palavra-passe" + }, + "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." + }, + "save": { + "message": "Guardar" + }, + "cancel": { + "message": "Cancelar" + }, + "canceled": { + "message": "Cancelado" + }, + "close": { + "message": "Fechar" + }, + "delete": { + "message": "Eliminar" + }, + "favorite": { + "message": "Favorito" + }, + "unfavorite": { + "message": "Remover dos favoritos" + }, + "edit": { + "message": "Editar" + }, + "searchCollection": { + "message": "Pesquisar coleção" + }, + "searchFolder": { + "message": "Pesquisar pasta" + }, + "searchFavorites": { + "message": "Pesquisar favoritos" + }, + "searchType": { + "message": "Pesquisar tipo", + "description": "Search item type" + }, + "searchVault": { + "message": "Pesquisar cofre" + }, + "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" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Pastas" + }, + "collections": { + "message": "Coleções" + }, + "firstName": { + "message": "Primeiro nome" + }, + "middleName": { + "message": "Nome do meio" + }, + "lastName": { + "message": "Último nome" + }, + "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": "Código postal" + }, + "country": { + "message": "País" + }, + "shared": { + "message": "Partilhado" + }, + "attachments": { + "message": "Anexos" + }, + "select": { + "message": "Selecionar" + }, + "addItem": { + "message": "Adicionar item" + }, + "editItem": { + "message": "Editar item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Outros" + }, + "share": { + "message": "Partilhar" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ copiado(a)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copiar valor", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copiar palavra-passe", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copiar nome de utilizador", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "Copiar URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Meu cofre" + }, + "vault": { + "message": "Cofre" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Eliminar seleção" + }, + "moveSelected": { + "message": "Mover seleção" + }, + "selectAll": { + "message": "Selecionar tudo" + }, + "unselectAll": { + "message": "Desfazer seleção" + }, + "launch": { + "message": "Iniciar" + }, + "newAttachment": { + "message": "Adicionar novo anexo" + }, + "deletedAttachment": { + "message": "Anexo eliminado" + }, + "deleteAttachmentConfirmation": { + "message": "Tem a certeza de que pretende 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." + }, + "addedItem": { + "message": "Item adicionado" + }, + "editedItem": { + "message": "Item alterado" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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" + }, + "deletedItems": { + "message": "Itens enviado para o lixo" + }, + "movedItems": { + "message": "Itens movidos" + }, + "overwritePasswordConfirmation": { + "message": "Tem a certeza de que pretende sobrescrever a palavra-passe atual?" + }, + "editedFolder": { + "message": "Pasta alterada" + }, + "addedFolder": { + "message": "Pasta adicionada" + }, + "deleteFolderConfirmation": { + "message": "Tem a certeza de que pretende eliminar esta pasta?" + }, + "deletedFolder": { + "message": "Pasta eliminada" + }, + "loggedOut": { + "message": "Sessão terminada" + }, + "loginExpired": { + "message": "A sua sessão expirou." + }, + "logOutConfirmation": { + "message": "Tem a certeza de que pretende terminar a sessão?" + }, + "logOut": { + "message": "Terminar sessão" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Sim" + }, + "no": { + "message": "Não" + }, + "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" + }, + "emailAddressDesc": { + "message": "Vai utilizar o seu endereço de email para iniciar sessão." + }, + "yourName": { + "message": "O seu nome" + }, + "yourNameDesc": { + "message": "Como deveremos chamá-lo?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Dica da palavra-passe mestra" + }, + "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." + }, + "emailAddress": { + "message": "Endereço de email" + }, + "yourVaultIsLocked": { + "message": "O seu cofre está bloqueado. Verifique a sua palavra-passe mestra para continuar." + }, + "unlock": { + "message": "Desbloquear" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Bloquear agora" + }, + "noItemsInList": { + "message": "Não existem itens para listar." + }, + "noCollectionsInList": { + "message": "Não existem coleções para listar." + }, + "noGroupsInList": { + "message": "Não existem grupos para listar." + }, + "noUsersInList": { + "message": "Não existem utilizadores para listar." + }, + "noEventsInList": { + "message": "Não existem eventos para listar." + }, + "newOrganization": { + "message": "Nova organização" + }, + "noOrganizationsList": { + "message": "Você não pertence a nenhuma organização. Organizações permitem-lhe partilhar itens em segurança com outros utilizadores." + }, + "versionNumber": { + "message": "Versão $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 email com o código de confirmaçã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." + }, + "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 navegador web." + }, + "noTwoStepProviders2": { + "message": "Por favor utilize um navegador web suportado (tal como o Chrome) e/ou adicione provedores adicionais que são melhor suportados entre navegadores web (tal como uma aplicação de autenticador)." + }, + "twoStepOptions": { + "message": "Opções de início de sessão de dois passos" + }, + "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 série 4, série 5, 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." + }, + "u2fDesc": { + "message": "Utilize qualquer chave de segurança ativada por FIDO U2F para aceder à sua conta." + }, + "u2fTitle": { + "message": "Chave de segurança FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Os códigos de verificação vão ser enviados por email para si." + }, + "continue": { + "message": "Continuar" + }, + "organization": { + "message": "Organização" + }, + "organizations": { + "message": "Organizações" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edite as coleções em que este item está a ser partilhado. Apenas utilizadores da organização com acesso a estas coleções podem ver este item." + }, + "deleteSelectedItemsDesc": { + "message": "Selecionou $COUNT$ item(s) para eliminar. Tem a certeza de que pretende eliminar todos estes itens?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Escolha a pasta para onde que mover o(s) $COUNT$ item(s) selecionado(s).", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Código de verificação (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiar código de confirmação" + }, + "warning": { + "message": "Aviso" + }, + "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." + }, + "export": { + "message": "Exportar" + }, + "exportVault": { + "message": "Exportar cofre" + }, + "fileFormat": { + "message": "Formato do ficheiro" + }, + "exportSuccess": { + "message": "Os dados do seu cofre foram exportados." + }, + "passwordGenerator": { + "message": "Gerador de palavras-passe" + }, + "minComplexityScore": { + "message": "Pontuação mínima de complexidade" + }, + "minNumbers": { + "message": "Números mínimos" + }, + "minSpecial": { + "message": "Especiais mínimos", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evitar caracteres ambíguos" + }, + "regeneratePassword": { + "message": "Regenerar palavra-passe" + }, + "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" + }, + "passwordHistory": { + "message": "Histórico de palavras-passe" + }, + "noPasswordsInList": { + "message": "Não existem palavras-passe para listar." + }, + "clear": { + "message": "Limpar", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Conta atualizada" + }, + "changeEmail": { + "message": "Alterar email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Novo email" + }, + "code": { + "message": "Código" + }, + "changeEmailDesc": { + "message": "Enviámos um código de verificação para $EMAIL$. Por favor verifique este código no seu email e introduza-o abaixo para finalizar a alteração de endereço de email.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Proceder irá terminar a sua sessão atual, requerendo-lhe voltar a iniciar sessão. Sessões ativas noutros dispositivos podem continuar ativas por até uma hora." + }, + "emailChanged": { + "message": "Email alterado" + }, + "logBackIn": { + "message": "Por favor volte a iniciar sessão." + }, + "logBackInOthersToo": { + "message": "Por favor volte a iniciar sessão. Se estiver a usar outras aplicações Bitwarden termine sessão e volte a iniciar sessão nessas também." + }, + "changeMasterPassword": { + "message": "Alterar palavra-passe mestra" + }, + "masterPasswordChanged": { + "message": "Palavra-passe mestra alterada" + }, + "currentMasterPass": { + "message": "Palavra-passe mestra atual" + }, + "newMasterPass": { + "message": "Nova palavra-passe mestra" + }, + "confirmNewMasterPass": { + "message": "Confirmar nova palavra-passe" + }, + "encKeySettings": { + "message": "Definições da chave de encriptação" + }, + "kdfAlgorithm": { + "message": "Algoritmo KDF" + }, + "kdfIterations": { + "message": "Iterações KDF" + }, + "kdfIterationsDesc": { + "message": "Iterações KDF mais altas podem ajudar a proteger a sua palavra-passe mestra de ser forçada por um atacante. Nós recomendamos um valor de $VALUE$ ou mais.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Definir as suas iterações KDF muito altas pode resultar em desempenho fraco ao iniciar sessão (e desbloquear) o Bitwarden em dispositivos com CPUs mais lentos. Nós recomendamos que aumente o valor em incrementos de $INCREMENT$ e depois testar todos os seus dispositivos.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Alterar KDF" + }, + "encKeySettingsChanged": { + "message": "Definições da chave de encriptação alteradas" + }, + "dangerZone": { + "message": "Zona perigosa" + }, + "dangerZoneDesc": { + "message": "Cuidado, estas ações não são reversíveis!" + }, + "deauthorizeSessions": { + "message": "Desautorizar sessões" + }, + "deauthorizeSessionsDesc": { + "message": "Preocupado pela sua conta ter sessão iniciada noutro dispositivo? Proceda abaixo para desautorizar todos os computadores ou dispositivos que tenha utilizado previamente. Este passo de segurança é recomendado se utilizou um computador público previamente ou guardou acidentalmente a sua palavra-passe num dispositivo que não lhe pertence. Este passo também irá limpar todas as sessões de dois passos previamente memorizadas." + }, + "deauthorizeSessionsWarning": { + "message": "Proceder também irá terminar a sua sessão atual, requerendo-lhe voltara a iniciar sessão. Irá ser-lhe solicitado o código de início de sessão de dois passos, se ativado. Sessões ativas noutros dispositivos podem continuar ativas por até uma hora." + }, + "sessionsDeauthorized": { + "message": "Todas as sessões desautorizadas" + }, + "purgeVault": { + "message": "Purgar cofre" + }, + "purgedOrganizationVault": { + "message": "Cofre da organização purgado." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceda abaixo para eliminar todos os itens e pastas do seu cofre. Itens que pertençam a uma organização que partilhe não serão eliminados." + }, + "purgeOrgVaultDesc": { + "message": "Proceda abaixo para eliminar todos os itens no cofre da organização." + }, + "purgeVaultWarning": { + "message": "Purgar o seu cofre é permanente. Não pode ser desfeito." + }, + "vaultPurged": { + "message": "O seu cofre foi purgado." + }, + "deleteAccount": { + "message": "Eliminar conta" + }, + "deleteAccountDesc": { + "message": "Proceda abaixo para eliminar a sua conta e todos os seus dados associados." + }, + "deleteAccountWarning": { + "message": "A eliminação da sua conta é permanente. Não pode ser desfeita." + }, + "accountDeleted": { + "message": "Conta eliminada" + }, + "accountDeletedDesc": { + "message": "A sua conta foi encerrada e todos os dados associados foram eliminados." + }, + "myAccount": { + "message": "Minha conta" + }, + "tools": { + "message": "Ferramentas" + }, + "importData": { + "message": "Importar dados" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Os dados foram importados com sucesso para o seu cofre." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Os dados não estão formatados corretamente. Por favor verifique o ficheiro de importação e tente novamente." + }, + "importNothingError": { + "message": "Nada foi importado." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Selecione o formato do ficheiro a importar" + }, + "selectImportFile": { + "message": "Selecione o ficheiro a importar" + }, + "orCopyPasteFileContents": { + "message": "ou copie/cole o seu conteúdo" + }, + "instructionsFor": { + "message": "Instruções para $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opções" + }, + "optionsDesc": { + "message": "Personalize a sua experiência do cofre web." + }, + "optionsUpdated": { + "message": "Opções atualizadas" + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Alterar o idioma utilizado pelo cofre web." + }, + "disableIcons": { + "message": "Desativar ícones de websites" + }, + "disableIconsDesc": { + "message": "Os ícones de websites providenciam uma imagem reconhecível ao lado de cada item de credencial no seu cofre." + }, + "enableGravatars": { + "message": "Ativar Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Utilizar imagens de avatar carregadas a partir de gravatar.com." + }, + "enableFullWidth": { + "message": "Ativar layout de largura total", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Permitir que o cofre web expanda a largura total da janela do navegador." + }, + "default": { + "message": "Predefinido" + }, + "domainRules": { + "message": "Regras de domínios" + }, + "domainRulesDesc": { + "message": "Se tiver o mesmo início de sessão em múltiplos websites de domínios diferentes, pode marcar o website como \"equivalente\". Domínios \"globais\" são aqueles já criados para si pelo Bitwarden." + }, + "globalEqDomains": { + "message": "Domínios equivalentes globais" + }, + "customEqDomains": { + "message": "Domínios equivalentes personalizados" + }, + "exclude": { + "message": "Excluir" + }, + "include": { + "message": "Incluir" + }, + "customize": { + "message": "Personalizar" + }, + "newCustomDomain": { + "message": "Novo domínio personalizado" + }, + "newCustomDomainDesc": { + "message": "Introduza uma lista de domínios separados por vírgulas. Apenas são permitidos domínios \"base\". Por exemplo, introduza \"google.com\" em vez de \"www.google.com\". Pode também introduzir \"androidapp://package.name\" para associar uma aplicação android a outros domínios." + }, + "customDomainX": { + "message": "Domínio personalizado $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domínios atualizados" + }, + "twoStepLogin": { + "message": "Início de sessão de dois passos" + }, + "twoStepLoginDesc": { + "message": "Reforce a segurança da sua conta ao requerer um passo adicional para iniciar sessão." + }, + "twoStepLoginOrganizationDesc": { + "message": "Requeira início de sessão de dois passos para os utilizadores da sua organização ao configurar os provedores ao nível da organização." + }, + "twoStepLoginRecoveryWarning": { + "message": "Ativar o início de sessão de dois passos pode bloquear-lhe permanentemente o acesso à sua conta Bitwarden. Um código de recuperação permite-lhe aceder à sua conta caso já não possa utilizar o seu provedor normal de início de sessão de dois passos (ex. perde o seu dispositivo). O apoio do Bitwarden não irá poder assistir-lhe se perder acesso à sua conta. Recomendamos que anote ou imprima o código de recuperação e o mantenha num local seguro." + }, + "viewRecoveryCode": { + "message": "Ver código de recuperação" + }, + "providers": { + "message": "Provedores", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Ativar" + }, + "enabled": { + "message": "Ativado" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Adesão Premium" + }, + "premiumRequired": { + "message": "Premium requerido" + }, + "premiumRequiredDesc": { + "message": "É requerida uma adesão premium para utilizar esta funcionalidade." + }, + "youHavePremiumAccess": { + "message": "Você tem acesso premium" + }, + "alreadyPremiumFromOrg": { + "message": "Você já tem acesso às funcionalidades premium por causa de uma organização da qual é um membro." + }, + "manage": { + "message": "Gerir" + }, + "disable": { + "message": "Desativar" + }, + "twoStepLoginProviderEnabled": { + "message": "Este provedor de início de sessão de dois passos está ativado na sua conta." + }, + "twoStepLoginAuthDesc": { + "message": "Introduza a sua palavra-passe mestra para modificar as definições do início de sessão de dois passos." + }, + "twoStepAuthenticatorDesc": { + "message": "Siga estes passos para ativar o início de sessão de dois passos com uma aplicação de autenticador:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Transfira uma aplicação de autenticador de dois passos" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Precisa de uma aplicação de autenticador de dois passos? Transfira uma das seguintes" + }, + "iosDevices": { + "message": "Dispositivos iOS" + }, + "androidDevices": { + "message": "Dispositivos Android" + }, + "windowsDevices": { + "message": "Dispositivos Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Estas aplicações são recomendadas, todavia outras aplicações de autenticador também funcionarão." + }, + "twoStepAuthenticatorScanCode": { + "message": "Digitalize este código QR com a sua aplicação de autenticador" + }, + "key": { + "message": "Chave" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Introduza o código de confirmação de 6 dígitos indicado pela aplicação" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "No caso de precisar de adicioná-lo a outro dispositivo, abaixo está o código QR (ou chave) requerido pela sua aplicação de autenticador." + }, + "twoStepDisableDesc": { + "message": "Tem certeza de que pretende desativar este provedor de início de sessão de dois passos?" + }, + "twoStepDisabled": { + "message": "Provedor de início de sessão de dois passos desativado." + }, + "twoFactorYubikeyAdd": { + "message": "Adicionar uma nova YubiKey à sua conta" + }, + "twoFactorYubikeyPlugIn": { + "message": "Ligue a YubiKey (NEO ou série 4) numa porta USB do seu computador." + }, + "twoFactorYubikeySelectKey": { + "message": "Selecione o primeiro campo de entrada YubiKey vazio abaixo." + }, + "twoFactorYubikeyTouchButton": { + "message": "Toque no botão da YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Guarde o formulário." + }, + "twoFactorYubikeyWarning": { + "message": "Devido a limitações da plataforma, as YubiKeys não podem ser utilizadas em todas as aplicações Bitwarden. Deve ativar outro provedor de início de sessão de dois passos para que possa aceder à sua conta quando as YubiKeys não puderem ser utilizadas. Plataformas suportadas:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Cofre web, aplicação para computador, CLI e todas as extensões de navegador num dispositivo com porta USB que pode aceitar a sua YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Aplicações móveis num dispositivo com capacidades NFC ou porta de dados que possam aceitar a sua YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Chave $INDEX$ U2F", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Suporte NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Uma das minhas chaves suporta NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Se uma das suas YubiKeys suporta NFC (como a YubiKey NEO), irá ser-lhe solicitado num dispositivo móvel sempre que a disponibilidade NFC seja detetada." + }, + "yubikeysUpdated": { + "message": "YubiKeys atualizadas" + }, + "disableAllKeys": { + "message": "Desativar todas as chaves" + }, + "twoFactorDuoDesc": { + "message": "Introduza a informação da aplicação Bitwarden do painel de administrador do seu Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Chave de integração" + }, + "twoFactorDuoSecretKey": { + "message": "Chave secreta" + }, + "twoFactorDuoApiHostname": { + "message": "Servidor API" + }, + "twoFactorEmailDesc": { + "message": "Siga estes passos para ativar o início de sessão de dois passos com o email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Introduza o email onde quer receber códigos de confirmação" + }, + "twoFactorEmailEnterCode": { + "message": "Introduza o código de confirmação de 6 dígitos indicado no email" + }, + "sendEmail": { + "message": "Enviar email" + }, + "twoFactorU2fAdd": { + "message": "Adicione uma chave de segurança FIDO U2F à sua conta" + }, + "removeU2fConfirmation": { + "message": "Tem a certeza de que pretende remover esta chave de segurança?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Ler chave" + }, + "keyCompromised": { + "message": "A chave foi comprometida." + }, + "twoFactorU2fGiveName": { + "message": "Dê à chave de segurança um nome amigável para a identificar." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Coloque a chave de segurança na porta USB do seu computador e clique no botão \"Ler chave\"." + }, + "twoFactorU2fTouchButton": { + "message": "Se a chave de segurança tiver um botão, toque-lhe." + }, + "twoFactorU2fSaveForm": { + "message": "Guarde o formulário." + }, + "twoFactorU2fWarning": { + "message": "Devido a limitações da plataforma, as FIDO U2F não podem ser utilizadas em todas as aplicações Bitwarden. Deve ativar outro provedor de início de sessão de dois passos para que possa aceder à sua conta quando as FIDO U2F não puderem ser utilizadas. Plataformas suportadas:" + }, + "twoFactorU2fSupportWeb": { + "message": "Cofre web e extensões de navegador num computador/portátil com um navegador com U2F ativado (Chrome, Opera, Vivaldi ou Firefox com FIDO U2F ativado)." + }, + "twoFactorU2fWaiting": { + "message": "A aguardar que toque no botão da sua chave de segurança" + }, + "twoFactorU2fClickSave": { + "message": "Clique no botão \"Guardar\" abaixo para ativar esta chave de segurança para o início de sessão em dois passos." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Ocorreu um problema ao ler a chave de segurança. Tente novamente." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "O seu código Bitwarden de recuperação de início de sessão de dois passos" + }, + "twoFactorRecoveryNoCode": { + "message": "Ainda não ativou qualquer provedor de início de sessão de dois passos. Depois de ativar um provedor de início de sessão de dois passos pode voltar aqui para obter o seu código de recuperação." + }, + "printCode": { + "message": "Imprimir código", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Relatórios" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Relatório de websites inseguros" + }, + "unsecuredWebsitesReportDesc": { + "message": "Utilizar websites inseguros com o esquema http:// pode ser perigoso. Se o website permitir, deve sempre aceder-lo utilizando o esquema https:// para que a sua ligação seja encriptada." + }, + "unsecuredWebsitesFound": { + "message": "Websites inseguros encontrados" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Encontrámos $COUNT$ itens no seu cofre com URIs inseguros. Deve alterar os seus esquemas de URI para https:// se o website permitir.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Nenhum item no seu cofre tem URIs inseguros." + }, + "inactive2faReport": { + "message": "Relatório de 2FA inativo" + }, + "inactive2faReportDesc": { + "message": "Autenticação de dois fatores (2FA) é uma definição de segurança importante que ajuda a tornar a as suas contas seguras. Se o website a oferece, deve sempre ativar a autenticação de dois fatores." + }, + "inactive2faFound": { + "message": "Credenciais sem 2FA encontradas" + }, + "inactive2faFoundDesc": { + "message": "Encontrámos $COUNT$ website(s) no seu cofre que podem não estar configurados com autenticação de dois fatores (de acordo com twofactorauth.org). Para melhor proteger estas contas, deve ativar a autenticação de dois fatores.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Nenhum website foi encontrado no seu cofre com uma configuração de autenticação de dois fatores em falta." + }, + "instructions": { + "message": "Instruções" + }, + "exposedPasswordsReport": { + "message": "Relatório de palavras-passe expostas" + }, + "exposedPasswordsReportDesc": { + "message": "Exposed passwords are passwords have been uncovered in known data breaches that were released publicly or sold on the dark web by hackers." + }, + "exposedPasswordsFound": { + "message": "Palavras-passe expostas encontradas" + }, + "exposedPasswordsFoundDesc": { + "message": "Encontrámos $COUNT$ itens no seu cofre que têm palavras-passe que foram expostas em brechas de dados conhecidas. Deve alterá-las para utilizar uma nova palavra-passe.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Nenhum item no seu cofre tem palavras-passe que foram expostas em brechas de dados conhecidas." + }, + "checkExposedPasswords": { + "message": "Verificar palavras-passe expostas" + }, + "exposedXTimes": { + "message": "Exposta $COUNT$ vez(es)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Relatório de palavras-passe fracas" + }, + "weakPasswordsReportDesc": { + "message": "As palavras-passe fracas podem ser facilmente adivinhadas por hackers e ferramentas automáticas que são utilizadas para decifrar palavras-passe. O gerador de palavras-passe do Bitwarden pode ajudar-lhe a criar palavras-passe fortes." + }, + "weakPasswordsFound": { + "message": "Palavras-passe fracas encontradas" + }, + "weakPasswordsFoundDesc": { + "message": "Encontrámos $COUNT$ itens no seu cofre com palavras-passe que não são fortes. Deve atualizá-los para utilizar palavras-passe mais fortes.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Nenhum item no seu cofre tem palavras-passe fracas." + }, + "reusedPasswordsReport": { + "message": "Relatório de palavras-passe reutilizadas" + }, + "reusedPasswordsReportDesc": { + "message": "Se um serviço foi comprometido, reutilizar a mesma palavras-passe noutro lugar pode permitir ao hackers ganhar acesso facilmente a mais das suas contas online. Deve utilizar uma palavra-passe única para cada conta ou serviço." + }, + "reusedPasswordsFound": { + "message": "Palavras-passe reutilizadas encontradas" + }, + "reusedPasswordsFoundDesc": { + "message": "Encontrámos $COUNT$ palavras-passe que estão a ser reutilizadas no seu cofre. Deve alterá-las para um valor único.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Nenhuma credencial no seu cofre tem palavras-passe que estão a ser reutilizadas." + }, + "reusedXTimes": { + "message": "Reutilizada $COUNT$ vezes", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Relatório de brecha de dados" + }, + "breachDesc": { + "message": "Uma \"brecha\" é um incidente em que os dados de um site foram ilegalmente acedidos e tornados públicos. Verifique o tipo de dados comprometidos (endereços de email, palavras-passe, cartões de crédito etc.) e tome as medidas apropriadas, como mudar as palavras-passe." + }, + "breachCheckUsernameEmail": { + "message": "Verifique quaisquer nomes de utilizador ou endereços de email que utilize." + }, + "checkBreaches": { + "message": "Verificar brechas" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ não encontrado em nenhuma brecha de dados conhecida.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Boas notícias", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ foi encontrado em $COUNT$ diferentes brechas de dados online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Encontradas contas alvo de brecha" + }, + "compromisedData": { + "message": "Dados comprometidos" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Utilizadores afetados" + }, + "breachOccurred": { + "message": "Brecha ocorreu" + }, + "breachReported": { + "message": "Brecha relatada" + }, + "reportError": { + "message": "Ocorreu um erro ao tentar carregar o relatório. Tente novamente" + }, + "billing": { + "message": "Faturação" + }, + "accountCredit": { + "message": "Crédito da conta", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Saldo da conta", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Adicionar crédito", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Montante", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "O crédito adicionado irá aparecer na sua conta após o pagamento ser totalmente processado. Alguns métodos de pagamento são mais atrasados e podem levar mais tempo a processar do que outros." + }, + "makeSureEnoughCredit": { + "message": "Por favor certifique-se de que sua conta tem crédito suficiente disponível para esta compra. Se a sua conta não tem crédito suficiente disponível, o seu método de pagamento predefinido guardado irá ser utilizado para a diferença. Pode adicionar crédito à sua conta a partir da página de faturação." + }, + "creditAppliedDesc": { + "message": "O crédito da sua conta pode ser utilizado para fazer compras. Qualquer crédito disponível irá ser automaticamente aplicado em faturas geradas para esta conta." + }, + "goPremium": { + "message": "Tornar-se Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Atualizou para premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Atualize a sua conta para uma adesão premium e desbloqueie funcionalidades adicionais fantásticas." + }, + "premiumSignUpStorage": { + "message": "1 GB de armazenamento encriptado para anexos de ficheiros." + }, + "premiumSignUpTwoStep": { + "message": "Opções adicionais de início de sessão de dois passos, como YubiKey, FIDO U2F, e Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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 aceder ao seu cofre." + }, + "premiumSignUpSupport": { + "message": "Prioridade no apoio ao cliente." + }, + "premiumSignUpFuture": { + "message": "Todas as funcionalidades premium futuras. Mais a chegar brevemente!" + }, + "premiumPrice": { + "message": "Tudo por apenas $PRICE$ /ano!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Extras" + }, + "premiumAccess": { + "message": "Acesso Premium" + }, + "premiumAccessDesc": { + "message": "Pode adicionar acesso premium a todos os membros da sua organização por $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Armazenamento adicional (GB)" + }, + "additionalStorageGbDesc": { + "message": "# de GB adicionais" + }, + "additionalStorageIntervalDesc": { + "message": "O seu plano vem com $SIZE$ de armazenamento encriptado de ficheiros. Pode adicionar armazenamento adicional por $PRICE$ por GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Resumo" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "ano" + }, + "month": { + "message": "mês" + }, + "monthAbbr": { + "message": "m.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "O seu método de pagamento será imediatamente cobrado e, de forma regular, anualmente. Pode cancelar a qualquer momento." + }, + "paymentCharged": { + "message": "O seu método de pagamento será imediatamente cobrado e, de forma regular, a cada $INTERVAL$. Pode cancelar a qualquer momento.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "O seu plano inclui um teste gratuito de 7 dias. O seu método de pagamento não irá ser cobrado até o período de teste acabar. A faturação irá ocorreu de forma recorrente a cada $INTERVAL$. Pode cancelar a qualquer momento." + }, + "paymentInformation": { + "message": "Informação de pagamento" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Cartão de crédito" + }, + "paypalClickSubmit": { + "message": "Clique no botão PayPal para aceder à sua conta PayPal, depois clique no botão Submeter abaixo para continuar." + }, + "cancelSubscription": { + "message": "Cancelar subscrição" + }, + "subscriptionCanceled": { + "message": "A subscrição foi cancelada." + }, + "pendingCancellation": { + "message": "Cancelamento pendente" + }, + "subscriptionPendingCanceled": { + "message": "A subscrição foi marcada para cancelamento no fim do atual período de faturação." + }, + "reinstateSubscription": { + "message": "Restabelecer subscrição" + }, + "reinstateConfirmation": { + "message": "Tem a certeza de que pretende eliminar o pedido de cancelamento pendente e restabelecer a sua subscrição?" + }, + "reinstated": { + "message": "A subscrição foi restabelecida." + }, + "cancelConfirmation": { + "message": "Tem a certeza de que pretende cancelar? Irá perder acesso a todas as funcionalidades desta subscrição no fim deste ciclo de faturação." + }, + "canceledSubscription": { + "message": "A subscrição foi cancelada." + }, + "neverExpires": { + "message": "Nunca expira" + }, + "status": { + "message": "Estado" + }, + "nextCharge": { + "message": "Próxima cobrança" + }, + "details": { + "message": "Detalhes" + }, + "downloadLicense": { + "message": "Transferir licença" + }, + "updateLicense": { + "message": "Atualizar licença" + }, + "updatedLicense": { + "message": "Licença atualizada" + }, + "manageSubscription": { + "message": "Gerir subscrição" + }, + "storage": { + "message": "Armazenamento" + }, + "addStorage": { + "message": "Adicionar armazenamento" + }, + "removeStorage": { + "message": "Remover armazenamento" + }, + "subscriptionStorage": { + "message": "A sua subscrição tem um total de $MAX_STORAGE$ GB de armazenamento de ficheiros encriptado. Está a utilizar atualmente $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Método de pagamento" + }, + "noPaymentMethod": { + "message": "Nenhum método de pagamento registado." + }, + "addPaymentMethod": { + "message": "Adicionar método de pagamento" + }, + "changePaymentMethod": { + "message": "Alterar método de pagamento" + }, + "invoices": { + "message": "Faturas" + }, + "noInvoices": { + "message": "Sem faturas." + }, + "paid": { + "message": "Paga", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Por pagar", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transações", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Sem transações." + }, + "chargeNoun": { + "message": "Cobrança", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Reembolsado", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Quaisquer cobranças aparecerão no seu extrato como $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB de armazenamento a adicionar" + }, + "gbStorageRemove": { + "message": "GB de armazenamento a remover" + }, + "storageAddNote": { + "message": "Adicionar armazenamento irá resultar em ajustamentos aos seus totais a faturar e imediatamente cobrados no seu método de pagamento registado. A primeira cobrança será alocada pelo remanescente do atual ciclo de faturação." + }, + "storageRemoveNote": { + "message": "Eliminar armazenamento irá resultar em ajustamentos nos totais a faturar que irão ser alocados como créditos na próxima cobrança de faturação." + }, + "adjustedStorage": { + "message": "Ajustado $AMOUNT$ GB de armazenamento.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contacte o apoio ao cliente" + }, + "updatedPaymentMethod": { + "message": "Método de pagamento atualizado." + }, + "purchasePremium": { + "message": "Comprar Premium" + }, + "licenseFile": { + "message": "Ficheiro de licença" + }, + "licenseFileDesc": { + "message": "O seu ficheiro de licença irá ser chamado algo como $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Para atualizar a sua conta para uma adesão premium precisa de carregar um ficheiro de licença válido." + }, + "uploadLicenseFileOrg": { + "message": "Para criar uma organização alojada nas suas premissas precisa de carregar um ficheiro de licença válido." + }, + "accountEmailMustBeVerified": { + "message": "O endereço de email da sua conta precisa de ser verificado." + }, + "newOrganizationDesc": { + "message": "Organizações permitem-lhe partilhar partes do seu cofre com outros, bem como gerir utilizadores relacionados com uma entidade específica, como uma família, pequena equipa ou grande empresa." + }, + "generalInformation": { + "message": "Informação geral" + }, + "organizationName": { + "message": "Nome da organização" + }, + "accountOwnedBusiness": { + "message": "Esta conta é propriedade de uma empresa." + }, + "billingEmail": { + "message": "Email de faturação" + }, + "businessName": { + "message": "Nome da empresa" + }, + "chooseYourPlan": { + "message": "Escolha o seu plano" + }, + "users": { + "message": "Utilizadores" + }, + "userSeats": { + "message": "Lugares de utilizador" + }, + "additionalUserSeats": { + "message": "Lugares de utilizador adicionais" + }, + "userSeatsDesc": { + "message": "# de lugares de utilizador" + }, + "userSeatsAdditionalDesc": { + "message": "O seu plano vem com $BASE_SEATS$ lugares de utilizador. Pode adicionar utilizadores adicionais por $SEAT_PRICE$ por utilizador /mês.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "De quantos lugares de utilizador precisa? Pode também adicionar lugares adicionais mais tarde se necessário." + }, + "planNameFree": { + "message": "Gratuito", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Para teste ou utilizadores pessoais partilharem com $COUNT$ outro utilizador.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Famílias" + }, + "planDescFamilies": { + "message": "Para uso pessoal, para partilhar com a família e amigos." + }, + "planNameTeams": { + "message": "Equipas" + }, + "planDescTeams": { + "message": "Para empresas e outras equipas e organizações." + }, + "planNameEnterprise": { + "message": "Empresarial" + }, + "planDescEnterprise": { + "message": "Para empresas e outras grandes organizações." + }, + "freeForever": { + "message": "Gratuito para sempre" + }, + "includesXUsers": { + "message": "inclui $COUNT$ utilizadores", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Utilizadores adicionais" + }, + "costPerUser": { + "message": "$COST$ por utilizador", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limitado a $COUNT$ utilizadores (incluindo você)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limitado a $COUNT$ coleções", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Adicione e partilhe com até $COUNT$ utilizadores", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Adicione e partilhe com utilizadores ilimitados" + }, + "createUnlimitedCollections": { + "message": "Crie coleções ilimitadas" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ de armazenamento de ficheiros encriptado", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Alojamento próprio (opcional)" + }, + "usersGetPremium": { + "message": "Os utilizadores obtêm acesso a funcionalidades de adesão premium" + }, + "controlAccessWithGroups": { + "message": "Controle o acesso de utilizadores com grupos" + }, + "syncUsersFromDirectory": { + "message": "Sincronize os seus utilizadores e grupos de um diretório" + }, + "trackAuditLogs": { + "message": "Siga as ações dos utilizadores com registos de auditoria" + }, + "enforce2faDuo": { + "message": "Impor 2FA com Duo" + }, + "priorityCustomerSupport": { + "message": "Prioridade no apoio ao cliente" + }, + "xDayFreeTrial": { + "message": "$COUNT$ dia(s) de teste gratuito, cancele quando quiser", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Mensalmente" + }, + "annually": { + "message": "Anualmente" + }, + "basePrice": { + "message": "Preço base" + }, + "organizationCreated": { + "message": "Organização criada" + }, + "organizationReadyToGo": { + "message": "A sua nova organização está pronta!" + }, + "organizationUpgraded": { + "message": "A sua organização foi atualizada." + }, + "leave": { + "message": "Sair" + }, + "leaveOrganizationConfirmation": { + "message": "Tem a certeza de que pretende sair desta organização?" + }, + "leftOrganization": { + "message": "Saiu da organização." + }, + "defaultCollection": { + "message": "Coleção predefinida" + }, + "getHelp": { + "message": "Obter ajuda" + }, + "getApps": { + "message": "Obter as aplicações" + }, + "loggedInAs": { + "message": "Sessão iniciada como" + }, + "eventLogs": { + "message": "Registos de eventos" + }, + "people": { + "message": "Pessoas" + }, + "policies": { + "message": "Políticas" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Editar política" + }, + "groups": { + "message": "Grupos" + }, + "newGroup": { + "message": "Novo grupo" + }, + "addGroup": { + "message": "Adicionar grupo" + }, + "editGroup": { + "message": "Editar grupo" + }, + "deleteGroupConfirmation": { + "message": "Tem certeza que pretende eliminar este grupo?" + }, + "removeUserConfirmation": { + "message": "Tem a certeza de que pretende remover este utilizador?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "Id externo" + }, + "externalIdDesc": { + "message": "O id externo pode ser utilizado como uma referência ou para ligar este recurso a um sistema externo como um diretório de utilizadores." + }, + "accessControl": { + "message": "Controlo de acesso" + }, + "groupAccessAllItems": { + "message": "Este grupo pode aceder e modificar todos os itens." + }, + "groupAccessSelectedCollections": { + "message": "Este grupo pode aceder apenas a coleções selecionadas." + }, + "readOnly": { + "message": "Apenas leitura" + }, + "newCollection": { + "message": "Nova coleção" + }, + "addCollection": { + "message": "Adicionar coleção" + }, + "editCollection": { + "message": "Editar coleção" + }, + "deleteCollectionConfirmation": { + "message": "Tem a certeza de que pretende eliminar esta coleção?" + }, + "editUser": { + "message": "Editar utilizador" + }, + "inviteUser": { + "message": "Convidar utilizador" + }, + "inviteUserDesc": { + "message": "Convide um novo utilizador para a sua organização ao introduzir abaixo o endereço de email da sua conta Bitwarden. Se ainda não tiver uma conta Bitwarden, irá ser-lhe solicitado criar uma nova conta." + }, + "inviteMultipleEmailDesc": { + "message": "Pode convidar até $COUNT$ utilizadores de cada vez ao separando por virgula uma lista de endereços de email.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Este utilizador está a utilizar início de sessão de dois passos para proteger a sua conta." + }, + "userAccessAllItems": { + "message": "Este utilizador pode aceder e modificar todos os itens." + }, + "userAccessSelectedCollections": { + "message": "Este utilizador pode aceder apenas a coleções selecionadas." + }, + "search": { + "message": "Pesquisar" + }, + "invited": { + "message": "Convidado" + }, + "accepted": { + "message": "Aceite" + }, + "confirmed": { + "message": "Confirmado" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Proprietário" + }, + "ownerDesc": { + "message": "O utilizador com acesso mais elevado que pode gerir todos os aspetos da sua organização." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Administrador" + }, + "adminDesc": { + "message": "Os administradores podem aceder e gerir todos os itens, coleções e utilizadores na sua organização." + }, + "user": { + "message": "Utilizador" + }, + "userDesc": { + "message": "Um utilizador normal com acesso às coleções atribuídas da sua organização." + }, + "manager": { + "message": "Gestor" + }, + "managerDesc": { + "message": "Os gestores podem aceder e gerir coleções atribuídas na sua organização." + }, + "all": { + "message": "Todos" + }, + "refresh": { + "message": "Atualizar" + }, + "timestamp": { + "message": "Data e hora" + }, + "event": { + "message": "Evento" + }, + "unknown": { + "message": "Desconhecido" + }, + "loadMore": { + "message": "Carregar mais" + }, + "mobile": { + "message": "Telemóvel", + "description": "Mobile app" + }, + "extension": { + "message": "Extensão", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Computador", + "description": "Desktop app" + }, + "webVault": { + "message": "Cofre Web" + }, + "loggedIn": { + "message": "Sessão iniciada." + }, + "changedPassword": { + "message": "Palavra-passe da conta alterada." + }, + "enabledUpdated2fa": { + "message": "Início de sessão de dois passos ativado/atualizado." + }, + "disabled2fa": { + "message": "Início de sessão de dois passos desativado." + }, + "recovered2fa": { + "message": "Conta recuperada de início de sessão de dois passos." + }, + "failedLogin": { + "message": "Tentativa de início de sessão falhado com palavra-passe incorreta." + }, + "failedLogin2fa": { + "message": "Tentativa de início de sessão falhada com inicio de sessão de dois passos incorreto." + }, + "exportedVault": { + "message": "Cofre exportado." + }, + "exportedOrganizationVault": { + "message": "Cofre da organização exportado." + }, + "editedOrgSettings": { + "message": "Definições de organização editadas." + }, + "createdItemId": { + "message": "Item $ID$ criado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Item $ID$ editado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Item $ID$ enviado para o lixo.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Item $ID$ visto.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Palavra-passe vista para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Campo oculto visto para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Código de segurança visto para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Palavra-passe copiada para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Campo oculto copiado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Código de segurança copiado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Item $ID$ auto-preenchido.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Coleção $ID$ criada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Coleção $ID$ editada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Coleção $ID$ eliminada.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Editou a política $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Grupo $ID$ criado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Grupo $ID$ editado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Grupo $ID$ eliminado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Utilizador $ID$ removido.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Anexo para o item $ID$ criado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Anexo para o item $ID$ eliminado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Coleções para o item $ID$ editadas.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Utilizador $ID$ convidado.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Utilizador $ID$ confirmado.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Utilizador $ID$ editado.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Grupos para o utilizador $ID$ editados.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Dispositivo" + }, + "view": { + "message": "Ver" + }, + "invalidDateRange": { + "message": "Período de data inválido." + }, + "errorOccurred": { + "message": "Ocorreu um erro." + }, + "userAccess": { + "message": "Acesso de utilizador" + }, + "userType": { + "message": "Tipo de utilizador" + }, + "groupAccess": { + "message": "Acesso de grupo" + }, + "groupAccessUserDesc": { + "message": "Edite os grupos a que este utilizador pertence." + }, + "invitedUsers": { + "message": "Utilizador(es) convidado(s)." + }, + "resendInvitation": { + "message": "Reenviar convite" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ foi novamente convidado.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirmar" + }, + "confirmUser": { + "message": "Confirmar utilizador" + }, + "hasBeenConfirmed": { + "message": "$USER$ foi confirmado.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirmar utilizadores" + }, + "usersNeedConfirmed": { + "message": "Tem utilizadores que aceitaram os seus convites, mas ainda precisam de ser confirmados. Os utilizadores não irão ter acesso à organização até serem confirmados." + }, + "startDate": { + "message": "Data de início" + }, + "endDate": { + "message": "Data de fim" + }, + "verifyEmail": { + "message": "Verificar email" + }, + "verifyEmailDesc": { + "message": "Verifique o endereço de email da sua conta para desbloquear o acesso a todas as funcionalidades." + }, + "verifyEmailFirst": { + "message": "O endereço de email da sua conta deve ser verificado primeiro." + }, + "checkInboxForVerification": { + "message": "Verifique a caixa de entrada do seu email pela ligação de verificação." + }, + "emailVerified": { + "message": "O seu email foi verificado." + }, + "emailVerifiedFailed": { + "message": "Não foi possível verificar o seu email. Tente enviar um novo email de verificação." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Atualizar navegador" + }, + "updateBrowserDesc": { + "message": "Está a utilizar um navegador web não suportado. O cofre web pode não funcionar corretamente." + }, + "joinOrganization": { + "message": "Aderir a organização" + }, + "joinOrganizationDesc": { + "message": "Foi convidado para se juntar à organização listada acima. Para aceitar o convite, precisa de iniciar sessão ou criar uma nova conta Bitwarden." + }, + "inviteAccepted": { + "message": "Convite aceite" + }, + "inviteAcceptedDesc": { + "message": "Pode aceder a esta organização quanto um administrador confirmar a sua adesão. Enviaremos um email quando tal acontecer." + }, + "inviteAcceptFailed": { + "message": "Não foi possível aceitar o convite. Peça a um administrador da organização para enviar novo convite." + }, + "inviteAcceptFailedShort": { + "message": "Não foi possível aceitar o convite. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Memorizar email" + }, + "recoverAccountTwoStepDesc": { + "message": "Se não conseguir aceder à sua conta através dos seus métodos normais de início de sessão de dois passos, pode utilizar o seu código de recuperação de dois passos para desativar todos os provedores de início de sessão de dois passos da sua conta." + }, + "recoverAccountTwoStep": { + "message": "Recuperar início de sessão de dois passos da conta" + }, + "twoStepRecoverDisabled": { + "message": "O início de sessão de dois passos foi desativado na sua conta." + }, + "learnMore": { + "message": "Saber mais" + }, + "deleteRecoverDesc": { + "message": "Introduza o seu endereço de email abaixo para recuperar ou eliminar a sua conta." + }, + "deleteRecoverEmailSent": { + "message": "Se a sua conta existe, enviámos-lhe um email com mais instruções." + }, + "deleteRecoverConfirmDesc": { + "message": "Pediu para eliminar a sua conta Bitwarden. Clique no botão abaixo para confirmar." + }, + "myOrganization": { + "message": "Minha organização" + }, + "deleteOrganization": { + "message": "Eliminar organização" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organização eliminada" + }, + "organizationDeletedDesc": { + "message": "A organização e todos os dados associados foram eliminados." + }, + "organizationUpdated": { + "message": "Organização atualizada" + }, + "taxInformation": { + "message": "Informação fiscal" + }, + "taxInformationDesc": { + "message": "Para clientes dentro dos EUA, o código postal é requerido para satisfazer os requisitos fiscais das vendas, para outros países pode, opcionalmente, providenciar um número de identificação fiscal (IVA/GST) e/ou um endereço para aparecer nas suas faturas." + }, + "billingPlan": { + "message": "Plano", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Alterar plano", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Atualize a sua conta para outro plano fornecendo as informações abaixo. Por favor certifique-se de que tem um método de pagamento ativo adicionado na conta.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Fatura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Ver fatura" + }, + "downloadInvoice": { + "message": "Transferir fatura" + }, + "verifyBankAccount": { + "message": "Verificar conta nancária" + }, + "verifyBankAccountDesc": { + "message": "Fizemos dois micro-depósitos na sua conta bancária (pode demorar 1-2 dias úteis a aparecer). Introduza estas quantias para verificar a conta bancária." + }, + "verifyBankAccountInitialDesc": { + "message": "O pagamento via conta bancária apenas está disponível para clientes nos Estados Unidos. Irá ser-lhe requerido verificar a sua conta bancária. Iremos fazer dois micro-depósitos nos próximos 1-2 dias úteis. Introduza estas quantias na página de faturação da organização para verificar a conta bancária." + }, + "verifyBankAccountFailureWarning": { + "message": "Falha ao verificar a conta bancária irá resultar na falta de um pagamento e a sua subscrição ser desativada." + }, + "verifiedBankAccount": { + "message": "A conta bancária foi confirmada." + }, + "bankAccount": { + "message": "Conta bancária" + }, + "amountX": { + "message": "Quantia $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Número de roteamento", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Número da conta" + }, + "accountHolderName": { + "message": "Titular da conta" + }, + "bankAccountType": { + "message": "Tipo de conta" + }, + "bankAccountTypeCompany": { + "message": "Empresa (Empresarial)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Pessoal)" + }, + "enterInstallationId": { + "message": "Introduza o id da sua instalação" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Adicionar lugares", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remover lugares", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "A sua subscrição permite um total de $COUNT$ utilizadores.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Opções Adicionais" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Lugares a adicionar" + }, + "seatsToRemove": { + "message": "Lugares a remover" + }, + "seatsAddNote": { + "message": "Adicionar lugares de utilizador irá resultar em ajustamentos aos seus totais a faturar e imediatamente cobrados no seu método de pagamento registado. A primeira cobrança será alocada pelo remanescente do atual ciclo de faturação." + }, + "seatsRemoveNote": { + "message": "Remover lugares de utilizador irá resultar em ajustamentos nos totais a faturar que irão ser alocados como créditos na próxima cobrança de faturação." + }, + "adjustedSeats": { + "message": "Ajustado $AMOUNT$ lugares de utilizador.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Chave atualizada" + }, + "updateKeyTitle": { + "message": "Atualizar chave" + }, + "updateEncryptionKey": { + "message": "Atualizar chave de encriptação" + }, + "updateEncryptionKeyShortDesc": { + "message": "Está atualmente a utilizar um esquema de encriptação desatualizado." + }, + "updateEncryptionKeyDesc": { + "message": "Mudámos para chaves de encriptação maiores que providenciam maior segurança e acesso a funcionalidades mais recentes. Atualizar a sua chave de encriptação é rápido e fácil. Apenas escreva abaixo a sua palavra-passe mestra. Esta atualização eventualmente irá tornar-se obrigatória." + }, + "updateEncryptionKeyWarning": { + "message": "Depois de atualizar a sua chave de encriptação, é-lhe requerido terminar sessão e voltar a iniciá-la em todas as aplicações Bitwarden que esteja a utilizar (tais como a aplicação móvel ou extensões de navegador). Falha ao terminar sessão e voltar a iniciar (que transfere a sua nova chave de encriptação) pode resultar em corrupção de dados. Tentaremos terminar-lhe a sessão automaticamente, todavia, pode demorar." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscrição" + }, + "loading": { + "message": "A carregar" + }, + "upgrade": { + "message": "Atualizar" + }, + "upgradeOrganization": { + "message": "Atualizar organização" + }, + "upgradeOrganizationDesc": { + "message": "Esta funcionalidade não está disponível para organizações gratuitas. Mude para um plano pago para desbloquear mais funcionalidades." + }, + "createOrganizationStep1": { + "message": "Criar organização: Passo 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Antes de criar a sua organização, primeiro tem de criar uma conta pessoal gratuita." + }, + "refunded": { + "message": "Reembolsado" + }, + "nothingSelected": { + "message": "Não selecionou nada." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Termos de serviço" + }, + "privacyPolicy": { + "message": "Política de privacidade" + }, + "filters": { + "message": "Filtros" + }, + "vaultTimeout": { + "message": "Expiração do cofre" + }, + "vaultTimeoutDesc": { + "message": "Escolha quando o seu cofre irá expirar e realizar a ação selecionada." + }, + "oneMinute": { + "message": "1 minuto" + }, + "fiveMinutes": { + "message": "5 minutos" + }, + "fifteenMinutes": { + "message": "15 minutos" + }, + "thirtyMinutes": { + "message": "30 minutos" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 horas" + }, + "onRefresh": { + "message": "Quando reiniciar o navegador" + }, + "dateUpdated": { + "message": "Atualizado", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Palavra-passe atualizada", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "A organização está desativada." + }, + "licenseIsExpired": { + "message": "A licença está expirada." + }, + "updatedUsers": { + "message": "Utilizadores atualizados" + }, + "selected": { + "message": "Selecionado(s)" + }, + "ownership": { + "message": "Propriedade" + }, + "whoOwnsThisItem": { + "message": "Quem é o proprietário deste item?" + }, + "strong": { + "message": "Forte", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Boa", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Fraca", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Muito fraca", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Também rodar a chave de encriptação da minha conta" + }, + "rotateEncKeyTitle": { + "message": "Rodar chave de encriptação" + }, + "rotateEncKeyConfirmation": { + "message": "Tem a certeza de que pretende rodar a chave de encriptação da sua conta?" + }, + "attachmentsNeedFix": { + "message": "Este item tem anexos de ficheiros antigos que precisam de ser corrigidos." + }, + "attachmentFixDesc": { + "message": "Este é um anexo de ficheiro que precisa de ser corrigido. Clique para saber mais." + }, + "fix": { + "message": "Corrigir", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Existem anexos de ficheiros antigos no seu cofre que precisam de ser corrigidos antes de poder rodar a chave de encriptação da sua conta." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Para assegurar a integridade das suas chaves de encriptação, por favor verifique a frase de impressão digital do utilizador antes de continuar.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Não perguntar para verificar frase de impressão digital novamente", + "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." + }, + "free": { + "message": "Gratuito", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Chave da API" + }, + "apiKeyDesc": { + "message": "A sua chave da API pode ser utilizada para autenticar na API pública Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Rodar a chave da API irá invalidar a chave anterior. Pode rodar a sua chave da API se achar que a chave atual já não é segura para uso." + }, + "apiKeyWarning": { + "message": "A sua chave da API tem acesso total à organização. Esta deve ser mantida secreta." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "Credenciais de cliente OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Ver chave da API" + }, + "rotateApiKey": { + "message": "Rodar chave da API" + }, + "selectOneCollection": { + "message": "Tem de selecionar pelo menos uma coleção." + }, + "couldNotChargeCardPayInvoice": { + "message": "Não foi possível cobrar o seu cartão. Por favor verifique e efetue o pagamento da fatura por pagar listada abaixo." + }, + "inAppPurchase": { + "message": "Compra na aplicação" + }, + "cannotPerformInAppPurchase": { + "message": "Não pode realizar esta ação utilizando um método de pagamento dentro da aplicação." + }, + "manageSubscriptionFromStore": { + "message": "Terá de gerir a sua subscrição a partir da loja onde a sua compra na aplicação foi efetuada." + }, + "minLength": { + "message": "Comprimento mínimo" + }, + "clone": { + "message": "Clonar" + }, + "masterPassPolicyDesc": { + "message": "Defina os requisitos mínimos para a força da palavra-passe mestra." + }, + "twoStepLoginPolicyDesc": { + "message": "Requer que os utilizadores definam a autenticação de dois passos nas suas contas pessoais." + }, + "twoStepLoginPolicyWarning": { + "message": "Os membros da organização que não tenham a autenticação de dois passos ativada para sua conta pessoal, serão removidos da organização e receberão um email notificando-os acerca da alteração." + }, + "twoStepLoginPolicyUserWarning": { + "message": "É membro de uma organização que requer que a autenticação de dois passos esteja ativada na sua conta de utilizador. Se desativar todos os serviços de autenticação de dois passos, será automaticamente removido(a) dessas organizações." + }, + "passwordGeneratorPolicyDesc": { + "message": "Defina os requisitos mínimos para configuração do gerador de palavras-passe." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Uma ou mais políticas da organização estão a afetar as suas definições do gerador." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Número mínimo de palavras" + }, + "defaultType": { + "message": "Tipo predefinido" + }, + "userPreference": { + "message": "Preferência do utilizador" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Pesquisar lixo" + }, + "permanentlyDelete": { + "message": "Eliminar permanentemente" + }, + "permanentlyDeleteSelected": { + "message": "Eliminar selecionados permanentemente" + }, + "permanentlyDeleteItem": { + "message": "Eliminar item permanentemente" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Tem a certeza de que pretende eliminar este item permanentemente?" + }, + "permanentlyDeletedItem": { + "message": "Item eliminado permanentemente" + }, + "permanentlyDeletedItems": { + "message": "Itens eliminados permanentemente" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Selecionou $COUNT$ item(s) para eliminar permanentemente. Tem a certeza de que pretende eliminar permanentemente todos estes itens?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Item $ID$ eliminado permanentemente.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restaurar" + }, + "restoreSelected": { + "message": "Restaurar selecionados" + }, + "restoreItem": { + "message": "Restaurar item" + }, + "restoredItem": { + "message": "Item restaurado" + }, + "restoredItems": { + "message": "Itens restaurados" + }, + "restoreItemConfirmation": { + "message": "Tem a certeza de que pretende restaurar este item?" + }, + "restoreItems": { + "message": "Restaurar itens" + }, + "restoreSelectedItemsDesc": { + "message": "Selecionou $COUNT$ item(s) para restaurar. Tem a certeza de que pretende restaurar todos estes itens?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Item $ID$ restaurado.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Ocultar palavras-passe" + }, + "countryPostalCodeRequiredDesc": { + "message": "Requeremos esta informação para calcular imposto sobre vendas e relatórios financeiros apenas." + }, + "includeVAT": { + "message": "Incluir informações de IVA/GST (opcional)" + }, + "taxIdNumber": { + "message": "ID de imposto IVA/GST" + }, + "taxInfoUpdated": { + "message": "Informação fiscal atualizada." + }, + "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." + }, + "identifier": { + "message": "Identificador" + }, + "organizationIdentifier": { + "message": "Identificador da organização" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Inicie sessão utilizando o portal de início de sessão único da sua organização. Por favor introduza o identificador da sua organização para começar." + }, + "enterpriseSingleSignOn": { + "message": "Início de Sessão Único da Empresa" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "Todas as funcionalidades de Equipas, mais:" + }, + "includeSsoAuthentication": { + "message": "Autenticação SSO via SAML2.0 e OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Políticas empresariais" + }, + "ssoValidationFailed": { + "message": "Validação SSO falhou" + }, + "ssoIdentifierRequired": { + "message": "Identificador da organização é requerido." + }, + "unlinkSso": { + "message": "Desligar SSO" + }, + "unlinkSsoConfirmation": { + "message": "Tem a certeza de que deseja desagregar o SSO desta organização?" + }, + "linkSso": { + "message": "Ligar SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "Ficheiro" + }, + "sendTypeText": { + "message": "Texto" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Descarregar Ficheiro" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Assinar pedidos de autenticação" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ campos acima necessitam da sua atenção.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 campo acima necessita da sua atenção." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ é necessário.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "necessário" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Necessário se o ID da Entidade não for um URL." + }, + "openIdOptionalCustomizations": { + "message": "Personalizações Opcionais" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separe vários com uma vírgula." + }, + "sessionTimeout": { + "message": "A sua sessão expirou. Por favor, volte atrás e tente iniciar sessão novamente." + }, + "exportingPersonalVaultTitle": { + "message": "A Exportar Cofre Pessoal" + }, + "exportingOrganizationVaultTitle": { + "message": "A Exportar Cofre da Organização" + }, + "exportingPersonalVaultDescription": { + "message": "Apenas os itens do cofre pessoal associado ao $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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Apenas o cofre da organização associado ao(à) $ORGANIZATION$ serão exportados. Os itens do cofre pessoal e os de outras organizações não serão incluídos.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json new file mode 100644 index 0000000000..9a2d2fb453 --- /dev/null +++ b/apps/web/src/locales/ro/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Seif web $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Ce fel de articol este acesta?" + }, + "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ă" + }, + "newPassword": { + "message": "Parolă nouă" + }, + "passphrase": { + "message": "Frază de acces" + }, + "notes": { + "message": "Note" + }, + "customFields": { + "message": "Câmpuri particularizate" + }, + "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" + }, + "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" + }, + "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" + }, + "authenticatorKeyTotp": { + "message": "Cheie autentificare (TOTP)" + }, + "folder": { + "message": "Dosar" + }, + "newCustomField": { + "message": "Câmp nou particularizat" + }, + "value": { + "message": "Valoare" + }, + "dragToSort": { + "message": "Tragere 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." + }, + "remove": { + "message": "Ștergere" + }, + "unassigned": { + "message": "Nealocat" + }, + "noneFolder": { + "message": "Fără dosar", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Adăugare dosar" + }, + "editFolder": { + "message": "Editare dosar" + }, + "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." + }, + "never": { + "message": "Niciodată" + }, + "toggleVisibility": { + "message": "Comutare vizibilitate" + }, + "toggleCollapse": { + "message": "Restrângere / Extindere", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generare parolă" + }, + "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": "Această parolă nu a fost găsită în nicio breșă de date cunoscută. Ar trebui să fie sigură de utilizat." + }, + "save": { + "message": "Salvare" + }, + "cancel": { + "message": "Anulare" + }, + "canceled": { + "message": "Anulat" + }, + "close": { + "message": "Închidere" + }, + "delete": { + "message": "Ștergere" + }, + "favorite": { + "message": "Favorit" + }, + "unfavorite": { + "message": "Scoatere din favorite" + }, + "edit": { + "message": "Editare" + }, + "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" + }, + "searchVault": { + "message": "Căutare în seif" + }, + "allItems": { + "message": "Toate elementele" + }, + "favorites": { + "message": "Favorite" + }, + "types": { + "message": "Tipuri" + }, + "typeLogin": { + "message": "Conectare" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identitate" + }, + "typeSecureNote": { + "message": "Notă protejată" + }, + "typeLoginPlural": { + "message": "Conectări" + }, + "typeCardPlural": { + "message": "Carduri" + }, + "typeIdentityPlural": { + "message": "Identități" + }, + "typeSecureNotePlural": { + "message": "Note protejate" + }, + "folders": { + "message": "Dosare" + }, + "collections": { + "message": "Colecții" + }, + "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ă" + }, + "shared": { + "message": "Partajat" + }, + "attachments": { + "message": "Atașamente" + }, + "select": { + "message": "Selectare" + }, + "addItem": { + "message": "Adăugare articol" + }, + "editItem": { + "message": "Editare articol" + }, + "viewItem": { + "message": "Afișare articol" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Altele" + }, + "share": { + "message": "Partajare" + }, + "moveToOrganization": { + "message": "Mutare la organizație" + }, + "valueCopied": { + "message": "$VALUE$ s-a copiat", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copiere valoare", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copiere parolă", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copiere nume utilizator", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copiere număr", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copiere cod de securitate", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copiere URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Seiful meu" + }, + "vault": { + "message": "Seif" + }, + "moveSelectedToOrg": { + "message": "Mutați cele selectate în organizație" + }, + "deleteSelected": { + "message": "Ștergere selecție" + }, + "moveSelected": { + "message": "Mutare selecție" + }, + "selectAll": { + "message": "Selectare totală" + }, + "unselectAll": { + "message": "Deselectare totală" + }, + "launch": { + "message": "Lansare" + }, + "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": "Veți putea utiliza această caracteristică după ce veți actualiza cheia de criptare." + }, + "addedItem": { + "message": "Articol adăugat" + }, + "editedItem": { + "message": "Articol editat" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ mutat la $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Articolele selectate au fost mutate în $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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" + }, + "deletedItems": { + "message": "Articolele au fost trimise în coșul de reciclare" + }, + "movedItems": { + "message": "Articole mutate" + }, + "overwritePasswordConfirmation": { + "message": "Sigur doriți să suprascrieți parola curentă?" + }, + "editedFolder": { + "message": "Dosar editat" + }, + "addedFolder": { + "message": "Dosar adăugat" + }, + "deleteFolderConfirmation": { + "message": "Sigur doriți să ștergeți acest folder?" + }, + "deletedFolder": { + "message": "Dosar șters" + }, + "loggedOut": { + "message": "Deconectat" + }, + "loginExpired": { + "message": "Sesiunea de autentificare a expirat." + }, + "logOutConfirmation": { + "message": "Sigur doriți să vă deconectați?" + }, + "logOut": { + "message": "Deconectare" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Nu" + }, + "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" + }, + "emailAddressDesc": { + "message": "Vă veți folosi adresa de e-mail pentru a vă conecta." + }, + "yourName": { + "message": "Numele dvs." + }, + "yourNameDesc": { + "message": "Cum ar trebui să vă numim?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Indiciu pentru parola principală" + }, + "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 necesară parola principală." + }, + "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ă." + }, + "emailAddress": { + "message": "Adresă de e-mail" + }, + "yourVaultIsLocked": { + "message": "Seiful dvs. este blocat. Verificați parola principală pentru a continua." + }, + "unlock": { + "message": "Deblocare" + }, + "loggedInAsEmailOn": { + "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ă" + }, + "lockNow": { + "message": "Blocare acum" + }, + "noItemsInList": { + "message": "Niciun articol de afișat." + }, + "noCollectionsInList": { + "message": "Nicio colecție de afișat." + }, + "noGroupsInList": { + "message": "Niciun grup de afișat." + }, + "noUsersInList": { + "message": "Niciun utilizator de afișat." + }, + "noEventsInList": { + "message": "Niciun eveniment de afișat." + }, + "newOrganization": { + "message": "Organizație nouă" + }, + "noOrganizationsList": { + "message": "Nu aparțineți niciunei organizații. Organizațiile vă permit să partajați în siguranță articole cu alți utilizatori." + }, + "versionNumber": { + "message": "Versiunea $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 apăsați butonul acestuia." + }, + "insertU2f": { + "message": "Introduceți cheia de securitate în portul USB al computerului. Dacă are un buton, apăsați-l." + }, + "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 de acest browser web." + }, + "noTwoStepProviders2": { + "message": "Utilizați un browser acceptat (cum ar fi Chrome) și/sau adăugați furnizori suplimentari mai bine susținuți de browserele web (cum ar fi o aplicație de autentificare)." + }, + "twoStepOptions": { + "message": "Opțiuni de autentificare în două etape" + }, + "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 serie 4, 5 ș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." + }, + "u2fDesc": { + "message": "Utilizați orice cheie de securitate activată FIDO U2F pentru a vă accesa contul." + }, + "u2fTitle": { + "message": "Cheie de securitate FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Utilizați orice cheie de securitate activată WebAuthn pentru a vă accesa contul." + }, + "webAuthnMigrated": { + "message": "(Migrate din FIDO)" + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Codurile de verificare vor fi trimise prin e-mail." + }, + "continue": { + "message": "Continuare" + }, + "organization": { + "message": "Organizație" + }, + "organizations": { + "message": "Organizații" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Alegeți o organizație la care doriți să mutați aceste articole. Mutarea într-o organizație, transferă proprietatea asupra articolelor către organizația respectivă. Nu veți mai fi proprietarul direct al acestor articole odată ce au fost mutate." + }, + "collectionsDesc": { + "message": "Editați colecțiile cu care este partajat acest articol. Numai utilizatorii organizației cu acces la aceste colecții vor putea vedea acest articol." + }, + "deleteSelectedItemsDesc": { + "message": "Ați selectat $COUNT$ articole pentru ștergere. Sigur doriți să ștergeți toate aceste articole?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Alegeți un dosar în care doriți să mutați $COUNT$ articole selectate.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Ați selectat $COUNT$ articol(e). $MOVEABLE_COUNT$ articol(e) poate/pot fi mutat(e) într-o organizație, $NONMOVEABLE_COUNT$ nu.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Cod de verificare (TOTP)" + }, + "copyVerificationCode": { + "message": "Copiere cod de verificare" + }, + "warning": { + "message": "Avertisment" + }, + "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." + }, + "export": { + "message": "Exportați" + }, + "exportVault": { + "message": "Export seif" + }, + "fileFormat": { + "message": "Format fișier" + }, + "exportSuccess": { + "message": "Datele seifului dvs. au fost exportate." + }, + "passwordGenerator": { + "message": "Generator de parole" + }, + "minComplexityScore": { + "message": "Scor minim de complexitate" + }, + "minNumbers": { + "message": "Minimum de cifre" + }, + "minSpecial": { + "message": "Minimum de caractere speciale", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Se evită caracterele ambigue" + }, + "regeneratePassword": { + "message": "Regenerare parolă" + }, + "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" + }, + "passwordHistory": { + "message": "Istoric parole" + }, + "noPasswordsInList": { + "message": "Nicio parolă de afișat." + }, + "clear": { + "message": "Ștergere", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Contul s-a actualizat" + }, + "changeEmail": { + "message": "Schimbare adresă e-mail" + }, + "changeEmailTwoFactorWarning": { + "message": "Procedura va schimba adresa de e-mail a contului. Nu va schimba adresa de e-mail utilizată pentru autentificarea cu doi factori. Puteți modifica această adresă de e-mail în setările de conectare în doi pași." + }, + "newEmail": { + "message": "E-mail nou" + }, + "code": { + "message": "Cod" + }, + "changeEmailDesc": { + "message": "Am trimis prin e-mail un cod de verificare la $EMAIL$. Verificați e-mailul pentru acest cod și introduceți-l mai jos pentru a finaliza schimbarea adresei de e-mail.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Continuând, veți fi deconectat de la sesiunea curentă, solicitându-vă să vă conectați din nou. Sesiunile active pe alte dispozitive pot continua să rămână active timp de până la o oră." + }, + "emailChanged": { + "message": "E-mailul a fost modificat" + }, + "logBackIn": { + "message": "Vă rugăm să vă conectați din nou." + }, + "logBackInOthersToo": { + "message": "Vă rugăm să vă reconectați. Dacă utilizați și alte aplicații Bitwarden, reconectați-vă la ele de asemenea." + }, + "changeMasterPassword": { + "message": "Schimbare parolă principală" + }, + "masterPasswordChanged": { + "message": "Parolă principală schimbată" + }, + "currentMasterPass": { + "message": "Parola principală curentă" + }, + "newMasterPass": { + "message": "Parolă principală nouă" + }, + "confirmNewMasterPass": { + "message": "Confirmare parolă principală nouă" + }, + "encKeySettings": { + "message": "Setări cheie de criptare" + }, + "kdfAlgorithm": { + "message": "Algoritm KDF" + }, + "kdfIterations": { + "message": "Iterații KDF" + }, + "kdfIterationsDesc": { + "message": "Un număr de iterații KDF mai mare vă poate ajuta la protejarea parolei principale de un atac prin forța brută de către un atacator. Vă recomandăm o valoare de $VALUE$ sau mai mare.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setarea iterațiilor KDF prea sus poate duce la performanțe slabe la conectarea (și deblocarea) Bitwarden pe dispozitive cu procesoare mai lente. Vă recomandăm să măriți valoarea în trepte de $INCREMENT$ și apoi să testați toate dispozitivele.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Modificare KDF" + }, + "encKeySettingsChanged": { + "message": "Setările cheii de criptare s-au modificat" + }, + "dangerZone": { + "message": "Zonă periculoasă" + }, + "dangerZoneDesc": { + "message": "Atenție, aceste acțiuni nu sunt reversibile!" + }, + "deauthorizeSessions": { + "message": "Revocare sesiuni" + }, + "deauthorizeSessionsDesc": { + "message": "Sunteți preocupat de faptul că v-ați conectat pe alt dispozitiv cu contul dvs.? Continuați în modul indicat mai jos pentru a revoca autorizarea computerelor sau dispozitivelor folosite anterior. Această măsură de securitate se recomandă dacă ați folosit anterior un computer public sau ați salvat neintenționat parola pe un dispozitiv care nu vă aparține. Aceasta va elimina, de asemenea, toate sesiunile de conectare în două etape stocate anterior." + }, + "deauthorizeSessionsWarning": { + "message": "Continuând, veți fi deconectat de asemenea de la sesiunea curentă, solicitându-vă să vă reconectați. De asemenea, vi se va solicita din nou autentificarea în două etape, dacă este activată. Sesiunile active pe alte dispozitive pot continua să rămână active timp de până la o oră." + }, + "sessionsDeauthorized": { + "message": "Toate sesiunile au fost revocate" + }, + "purgeVault": { + "message": "Curățare seif" + }, + "purgedOrganizationVault": { + "message": "Seiful organizației a fost curățat." + }, + "vaultAccessedByProvider": { + "message": "Seif accesat de furnizor." + }, + "purgeVaultDesc": { + "message": "Continuați în modul indicat mai jos pentru a șterge toate articolele și dosarele din seiful dvs. Articolele care aparțin unei organizații din care sunteți membru nu vor fi șterse." + }, + "purgeOrgVaultDesc": { + "message": "Continuați în modul indicat mai jos pentru a șterge toate articolele din seiful organizației." + }, + "purgeVaultWarning": { + "message": "Curățarea seifului dvs. este definitivă. Nu poate fi anulată." + }, + "vaultPurged": { + "message": "Seiful dvs. a fost curățat." + }, + "deleteAccount": { + "message": "Ștergere cont" + }, + "deleteAccountDesc": { + "message": "Continuați în modul indicat mai jos pentru a vă șterge contul și toate datele asociate." + }, + "deleteAccountWarning": { + "message": "Ștergerea contului dvs. este definitivă. Nu poate fi anulată." + }, + "accountDeleted": { + "message": "Contul a fost șters" + }, + "accountDeletedDesc": { + "message": "Contul dvs. a fost închis și toate datele asociate au fost șterse." + }, + "myAccount": { + "message": "Contul meu" + }, + "tools": { + "message": "Unelte" + }, + "importData": { + "message": "Import de date" + }, + "importError": { + "message": "Eroare de import" + }, + "importErrorDesc": { + "message": "A apărut o problemă cu datele pe care ați încercat să le importați. Vă rugăm să rezolvați erorile enumerate mai jos în fișierul sursă și să încercați din nou." + }, + "importSuccess": { + "message": "Datele au fost importate cu succes în seiful dvs." + }, + "importWarning": { + "message": "Importați date în $ORGANIZATION$. Datele dvs. pot fi partajate cu membrii acestei organizații. Doriți să continuați?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Datele nu au formatul corect. Vă rugăm să verificați fișierul de import și încercați din nou." + }, + "importNothingError": { + "message": "Nu s-a importat nimic." + }, + "importEncKeyError": { + "message": "Eroare la decriptarea fișierului exportat. Cheia dvs. de criptare nu corespunde cu cheia de criptare folosită pentru a exporta datele." + }, + "selectFormat": { + "message": "Alegeți din listă formatul fișierului de import" + }, + "selectImportFile": { + "message": "Alegeți fișierul de import" + }, + "orCopyPasteFileContents": { + "message": " sau copiați/lipiți conținutul fișierului de import" + }, + "instructionsFor": { + "message": "Instrucțiuni $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opțiuni" + }, + "optionsDesc": { + "message": "Personalizați-vă experiența în seiful web." + }, + "optionsUpdated": { + "message": "Opțiunile s-au actualizat" + }, + "language": { + "message": "Limbă" + }, + "languageDesc": { + "message": "Alegeți limba în care folosiți seiful web." + }, + "disableIcons": { + "message": "Dezactivare iconuri sait" + }, + "disableIconsDesc": { + "message": "Iconurile saiturilor oferă o imagine identificabilă lângă fiecare element de conectare din seiful dvs." + }, + "enableGravatars": { + "message": "Activare Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Folosește imagini avatar încărcate de pe gravatar.com." + }, + "enableFullWidth": { + "message": "Activare aspect seif cu lățimea completă", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Permite seifului web să se extindă pe toată lățimea ferestrei browserului." + }, + "default": { + "message": "Implicit" + }, + "domainRules": { + "message": "Reguli de domeniu" + }, + "domainRulesDesc": { + "message": "Dacă aveți aceleași date de autentificare pe mai multe domenii web diferite, puteți marca saitul web ca \"echivalent\". Domeniile \"globale\" sunt cele create deja de Bitwarden pentru dvs." + }, + "globalEqDomains": { + "message": "Domenii globale echivalente" + }, + "customEqDomains": { + "message": "Domenii personalizate echivalente" + }, + "exclude": { + "message": "Excludere" + }, + "include": { + "message": "Includere" + }, + "customize": { + "message": "Personalizare" + }, + "newCustomDomain": { + "message": "Domeniu nou personalizat" + }, + "newCustomDomainDesc": { + "message": "Introduceți o listă de domenii separate prin virgulă. Sunt permise doar domeniile de \"bază\". Nu introduceți subdomenii. De exemplu, introduceți \"google.com\" în loc de \"www.google.com\". Puteți introduce și \"androidapp://package.name\" pentru a asocia o aplicație Android cu alte domenii de site-uri web." + }, + "customDomainX": { + "message": "Domeniu personalizat $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domenii s-au actualizat" + }, + "twoStepLogin": { + "message": "Autentificare în două etape" + }, + "twoStepLoginDesc": { + "message": "Vă securizează contul solicitând un pas suplimentar la conectare." + }, + "twoStepLoginOrganizationDesc": { + "message": "Necesită autentificarea în două etape pentru utilizatorii organizației dvs. prin configurarea furnizorilor la nivel de organizație." + }, + "twoStepLoginRecoveryWarning": { + "message": "Activarea autentificării în două etape vă poate bloca definitiv din contul Bitwarden. Un cod de recuperare vă permite să vă accesați contul când nu mai puteți utiliza furnizorul dvs. normal de autentificare în două etape (ex. vă pierdeți dispozitivul). Asistența Bitwarden nu vă va putea ajuta dacă pierdeți accesul la contul dvs. Vă recomandăm să notați sau să imprimați codul de recuperare și să îl păstrați într-un loc sigur." + }, + "viewRecoveryCode": { + "message": "Afișare cod de recuperare" + }, + "providers": { + "message": "Furnizori", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Activare" + }, + "enabled": { + "message": "Activat" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Membru Premium" + }, + "premiumRequired": { + "message": "Este necesară versiunea Premium" + }, + "premiumRequiredDesc": { + "message": "Este necesar statutul de membru Premium pentru a utiliza această caracteristică." + }, + "youHavePremiumAccess": { + "message": "Aveți acces premium" + }, + "alreadyPremiumFromOrg": { + "message": "Aveți deja acces la funcții premium datorită organizației la care sunteți membru." + }, + "manage": { + "message": "Gestionare" + }, + "disable": { + "message": "Dezactivare" + }, + "twoStepLoginProviderEnabled": { + "message": "Acest furnizor de autentificare în două etape este activat în contul dvs." + }, + "twoStepLoginAuthDesc": { + "message": "Introduceți parola principală pentru a modifica setările de autentificare în două etape." + }, + "twoStepAuthenticatorDesc": { + "message": "Urmați acești pași pentru a configura autentificarea în două etape cu o aplicație de autentificare:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Descărcați o aplicație de autentificare în două etape" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Aveți nevoie de o aplicație de autentificare în două etape? Descărcați una dintre următoarele" + }, + "iosDevices": { + "message": "Dispozitive iOS" + }, + "androidDevices": { + "message": "Dispozitive Android" + }, + "windowsDevices": { + "message": "Dispozitive Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Aceste aplicații sunt recomandate, cu toate acestea, vor funcționa și alte aplicații de autentificare." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scanați acest cod QR cu aplicația dvs. de autentificare" + }, + "key": { + "message": "Cheie" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Introduceți codul de verificare din 6 cifre din aplicație" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Dacă trebuie să-l adăugați la un alt dispozitiv, mai jos este codul QR (sau cheia) cerut de aplicația dvs. de autentificare." + }, + "twoStepDisableDesc": { + "message": "Sigur doriți să dezactivați acest furnizor de autentificare în două etape?" + }, + "twoStepDisabled": { + "message": "Furnizorul de autentificare în două etape a fost dezactivat." + }, + "twoFactorYubikeyAdd": { + "message": "Etape de urmat pentru a vă adăuga o nouă cheie in cont." + }, + "twoFactorYubikeyPlugIn": { + "message": "Conectați YubiKey la portul USB al computerului." + }, + "twoFactorYubikeySelectKey": { + "message": "Alegeți primul câmp de intrare YubiKey gol de mai jos." + }, + "twoFactorYubikeyTouchButton": { + "message": "Atingeți butonul YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Salvați formularul." + }, + "twoFactorYubikeyWarning": { + "message": "Drept consecință a limitărilor platformei, YubiKey-urile nu se pot utiliza pe toate aplicațiile Bitwarden. Ar trebui să activați un alt furnizor de conectare în două etape pentru a vă accesa contul atunci când YubiKey-urile nu se pot utiliza. Platforme acceptate:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Seiful web, aplicația desktop, CLI (Command-Line Interface), și toate extensiile de browser de pe un dispozitiv cu un port USB care poate accepta YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Aplicații mobile pe un dispozitiv cu tehnologia NFC integrată sau un port de date care poate accepta YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Cheie U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Cheie WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Suport NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Una dintre cheile mele acceptă NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Dacă unul din YubiKey-urile dvs. suportă NFC (cum ar fi un YubiKey NEO), vi se va solicita pe dispozitivele mobile ori de câte ori este detectată disponibilitatea NFC." + }, + "yubikeysUpdated": { + "message": "YubiKey-urile s-au actualizat" + }, + "disableAllKeys": { + "message": "Dezactivare a tuturor cheilor" + }, + "twoFactorDuoDesc": { + "message": "Introduceți informațiile despre aplicația Bitwarden din panoul dvs. Duo Admin." + }, + "twoFactorDuoIntegrationKey": { + "message": "Cheie de integrare" + }, + "twoFactorDuoSecretKey": { + "message": "Cheie secretă" + }, + "twoFactorDuoApiHostname": { + "message": "Numele gazdei API" + }, + "twoFactorEmailDesc": { + "message": "Urmați acești pași pentru a configura conectarea în două etape cu e-mail:" + }, + "twoFactorEmailEnterEmail": { + "message": "Introducere de adresă de e-mail la care doriți să primiți codurile de verificare" + }, + "twoFactorEmailEnterCode": { + "message": "Introducere cod de verificare din 6 cifre din e-mail" + }, + "sendEmail": { + "message": "Trimitere e-mail" + }, + "twoFactorU2fAdd": { + "message": "Adăugare de cheie de securitate FIDO U2F în contul dvs." + }, + "removeU2fConfirmation": { + "message": "Sigur doriți să eliminați această cheie de securitate?" + }, + "twoFactorWebAuthnAdd": { + "message": "Adăugare de cheie de securitate WebAuthn în contul dvs." + }, + "readKey": { + "message": "Citire cheie" + }, + "keyCompromised": { + "message": "Cheia este compromisă." + }, + "twoFactorU2fGiveName": { + "message": "Dați cheii de securitate un nume prietenos pentru a o identifica." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Conectați cheia de securitate la portul USB al computerului și clicați pe butonul \"Citire cheie\"." + }, + "twoFactorU2fTouchButton": { + "message": "Când cheia de securitate are un buton, atingeți-l." + }, + "twoFactorU2fSaveForm": { + "message": "Salvați formularul." + }, + "twoFactorU2fWarning": { + "message": "Drept consecință a limitărilor platformei, FIDO U2F nu poate fi utilizat pe toate aplicațiile Bitwarden. Ar trebui să activați un alt furnizor de conectare în două etape pentru a vă accesa contul atunci când FIDO U2F nu se poate utiliza. Platforme acceptate:" + }, + "twoFactorU2fSupportWeb": { + "message": "Seiful web și extensiile de browser pe un desktop/laptop cu un browser activat U2F (Chrome, Opera, Vivaldi, sau Firefox cu FIDO U2F activat)." + }, + "twoFactorU2fWaiting": { + "message": "Vă așteptăm ca să atingeți butonul de pe cheia de securitate" + }, + "twoFactorU2fClickSave": { + "message": "Clicați pe butonul \"Salvare\" mai jos pentru a activa cheia de securitate de conectarea în două etape." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "A apărut o problemă la citirea cheii de securitate. Încercați din nou." + }, + "twoFactorWebAuthnWarning": { + "message": "Drept consecință a limitărilor platformei, WebAuthn nu se poate utiliza pe toate aplicațiile Bitwarden. Ar trebui să activați un alt furnizor de conectare în două etape pentru a vă accesa contul, atunci când WebAuthn nu se poate utiliza. Platforme acceptate:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Seiful web și extensiile de browser pe un desktop/laptop cu un browser activat WebAuthn (Chrome, Opera, Vivaldi sau Firefox cu FIDO U2F activat)." + }, + "twoFactorRecoveryYourCode": { + "message": "Codul dvs. Bitwarden de recuperare a autentificării în două etape" + }, + "twoFactorRecoveryNoCode": { + "message": "Nu ați activat încă niciun furnizor de conectare în două etape. După ce activați un furnizor de conectare în două etape, puteți reveni aici pentru codul de recuperare." + }, + "printCode": { + "message": "Imprimare cod", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Rapoarte" + }, + "reportsDesc": { + "message": "Identificați și eliminați lacunele de securitate din conturile dvs. online făcând clic pe rapoartele de mai jos." + }, + "unsecuredWebsitesReport": { + "message": "Site-uri web nesigure" + }, + "unsecuredWebsitesReportDesc": { + "message": "URL-urile care încep cu http:// nu utilizează cea mai bună criptare disponibilă. Schimbați URI-urile de conectare pentru aceste conturi cu https:// pentru o navigare mai sigură." + }, + "unsecuredWebsitesFound": { + "message": "S-au găsit saituri web nesecurizate" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Am găsit $COUNT$ articole în seiful dvs. cu URI-uri nesecurizate. Ar trebui să schimbați schema URl-urilor lor în https:// dacă saitul o permite.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Niciun articol din seiful dvs. nu are URI-uri nesecurizate." + }, + "inactive2faReport": { + "message": "Autentificare în doi pași inactivă" + }, + "inactive2faReportDesc": { + "message": "Autentificarea în doi pași adaugă un nivel de protecție pentru conturile d-voastră. Activați Autentificarea în doi pași utilizând Autentificatorul Bitwarden pentru aceste conturi sau utilizați o metodă alternativă." + }, + "inactive2faFound": { + "message": "S-au găsit conectări fără 2FA" + }, + "inactive2faFoundDesc": { + "message": "Am găsit $COUNT$ sait(uri) web în seiful dvs. care s-ar putea să nu fie configurate cu autentificarea cu doi factori (conform cu 2fa.directory). Pentru a proteja în continuare aceste conturi, ar trebui să activați autentificarea cu doi factori.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Nu au fost găsite saituri în seiful dvs. cu o configurație de autentificare cu doi factori lipsă." + }, + "instructions": { + "message": "Instrucțiuni" + }, + "exposedPasswordsReport": { + "message": "Parolele expuse" + }, + "exposedPasswordsReportDesc": { + "message": "Parolele expuse în cazul unei încălcări a securității datelor sunt ținte ușoare pentru atacatori. Schimbați aceste parole pentru a preveni eventualele intruziuni." + }, + "exposedPasswordsFound": { + "message": "S-au găsit parole dezvăluite" + }, + "exposedPasswordsFoundDesc": { + "message": "Am găsit $COUNT$ articole în seiful dvs. care folosesc parole dezvăluite în scurgeri de date cunoscute. Ar trebui să le schimbați pentru a utiliza o parolă nouă.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Niciun articol din seiful dvs. nu are parole dezvăluite în scurgeri de date cunoscute." + }, + "checkExposedPasswords": { + "message": "Verificați parolele dezvăluite" + }, + "exposedXTimes": { + "message": "Dezvăluită de $COUNT$ ori", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Parole slabe" + }, + "weakPasswordsReportDesc": { + "message": "Parolele slabe pot fi ușor ghicite de atacatori. Schimbați aceste parole cu unele puternice folosind Generatorul de parole." + }, + "weakPasswordsFound": { + "message": "S-au găsit parole slabe" + }, + "weakPasswordsFoundDesc": { + "message": "Am găsit $COUNT$ articole cu parole slabe articole în seiful dvs. Ar trebui să le actualizați ca să folosească parole puternice.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Niciun articol din seiful dvs. nu are parole slabe." + }, + "reusedPasswordsReport": { + "message": "Parole refolosite" + }, + "reusedPasswordsReportDesc": { + "message": "Reutilizarea parolelor facilitează accesul atacatorilor la mai multe conturi. Schimbați aceste parole astfel încât fiecare să fie unică." + }, + "reusedPasswordsFound": { + "message": "S-au găsit parole refolosite" + }, + "reusedPasswordsFoundDesc": { + "message": "Am găsit $COUNT$ parole reutilizate în seiful dvs. Ar trebui să le schimbați la o valoare unică.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Nicio dată de conectare din seiful dvs. nu conține parole reutilizate." + }, + "reusedXTimes": { + "message": "Refolosit $COUNT$ ori", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Breșă de date" + }, + "breachDesc": { + "message": "Conturile care au fost piratate vă pot expune informațiile personale. Protejați conturile compromise prin activarea 2FA sau prin crearea unei parole mai puternice." + }, + "breachCheckUsernameEmail": { + "message": "Verificați orice nume de utilizator sau adresă e-mail pe care o folosiți." + }, + "checkBreaches": { + "message": "Verificare scurgeri" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ nu a fost găsit în nicio scurgere de date cunoscută.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Vești bune", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ a fost găsit în $COUNT$ diferite scurgeri de date online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "S-au găsit conturi cu scurgeri" + }, + "compromisedData": { + "message": "Date compromise" + }, + "website": { + "message": "Sait web" + }, + "affectedUsers": { + "message": "Utilizatori afectați" + }, + "breachOccurred": { + "message": "Scurgere produsă" + }, + "breachReported": { + "message": "Scurgere raportată" + }, + "reportError": { + "message": "A apărut o eroare la încărcarea raportului. Încercați din nou" + }, + "billing": { + "message": "Facturare" + }, + "accountCredit": { + "message": "Creditul contului", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Balanța contului", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Adăugare credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Sumă", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Creditul adăugat va apare în contul dvs. după procesarea completă a plății. Unele metode de plată sunt întârziate și pot lua mai mult timp de procesare decât altele." + }, + "makeSureEnoughCredit": { + "message": "Vă rugăm să vă asigurați că aveți suficient credit disponibil în cont pentru această achiziție. Dacă nu aveți suficient credit în cont, metoda dvs. implicită de plată înregistrată va fi folosită pentru diferență. Puteți adăuga credit în contul dvs. din pagina Facturare." + }, + "creditAppliedDesc": { + "message": "Creditul contului dvs. se poate utiliza pentru a face cumpărături. Orice credit disponibil va fi aplicat automat pentru facturile generate pentru acest cont." + }, + "goPremium": { + "message": "Obțineți Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Ați actualizat la Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Actualizați-vă contul la un abonament premium și deblocați câteva funcții suplimentare excelente." + }, + "premiumSignUpStorage": { + "message": "1 GB stocare criptată pentru fișiere atașate." + }, + "premiumSignUpTwoStep": { + "message": "Opțiuni suplimentare de conectare în două etape, cum ar fi YubiKey, FIDO U2F și Duo." + }, + "premiumSignUpEmergency": { + "message": "Acces de urgență" + }, + "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": "Generator de cod de verificare TOTP (2FA) pentru autentificări în seiful dvs." + }, + "premiumSignUpSupport": { + "message": "Asistență prioritară pentru clienți." + }, + "premiumSignUpFuture": { + "message": "Toate funcțiile premium viitoare. În curând mai multe!" + }, + "premiumPrice": { + "message": "Totul pentru numai $PRICE$ /an!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Add-on-uri" + }, + "premiumAccess": { + "message": "Acces Premium" + }, + "premiumAccessDesc": { + "message": "Puteți adăuga acces premium tuturor membrilor organizației dvs. pentru $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Stocare adițională (GB)" + }, + "additionalStorageGbDesc": { + "message": "# de GB adiționali" + }, + "additionalStorageIntervalDesc": { + "message": "Planul dvs. vine cu $SIZE$ de stocare criptată de fișiere. Puteți adăuga stocare suplimentară pentru $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Rezumat" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "an" + }, + "month": { + "message": "lună" + }, + "monthAbbr": { + "message": "lună", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Metoda dvs. de plată va fi facturată imediat și apoi în mod recurent în fiecare an. Puteți anula în orice moment." + }, + "paymentCharged": { + "message": "Metoda dvs. de plată va fi facturată imediat și apoi în mod recurent în fiecare $INTERVAL$. Puteți anula în orice moment.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Planul dvs. vine cu o încercare gratuită de 7 zile. Metoda dvs. de plată nu va fi facturată până la sfârșitul perioadei de încercare. Puteți anula în orice moment." + }, + "paymentInformation": { + "message": "Informații de plată" + }, + "billingInformation": { + "message": "Informații de facturare" + }, + "creditCard": { + "message": "Card de credit" + }, + "paypalClickSubmit": { + "message": "Clicați pe butonul PayPal pentru a vă conecta la contul PayPal, apoi clicați pe butonul Trimitere mai jos pentru a continua." + }, + "cancelSubscription": { + "message": "Anulare abonament" + }, + "subscriptionCanceled": { + "message": "Abonamentul a fost anulat." + }, + "pendingCancellation": { + "message": "Anulare în așteptare" + }, + "subscriptionPendingCanceled": { + "message": "Abonamentul a fost marcat pentru anulare la sfârșitul perioadei curente de facturare." + }, + "reinstateSubscription": { + "message": "Restabilire abonament" + }, + "reinstateConfirmation": { + "message": "Sigur doriți să eliminați cererea de anulare în așteptare și să vă restabiliți abonamentul?" + }, + "reinstated": { + "message": "Abonamentul a fost restabilit." + }, + "cancelConfirmation": { + "message": "Sigur doriți să anulați? Veți pierde accesul la toate funcționalitățile acestui abonament la sfârșitul acestui ciclu de facturare." + }, + "canceledSubscription": { + "message": "Abonamentul a fost anulat." + }, + "neverExpires": { + "message": "Nu expiră niciodată" + }, + "status": { + "message": "Stare" + }, + "nextCharge": { + "message": "Plata următoare" + }, + "details": { + "message": "Detalii" + }, + "downloadLicense": { + "message": "Descărcare licență" + }, + "updateLicense": { + "message": "Actualizare licență" + }, + "updatedLicense": { + "message": "Licența s-a actualizat" + }, + "manageSubscription": { + "message": "Gestionare abonament" + }, + "storage": { + "message": "Stocare" + }, + "addStorage": { + "message": "Adăugare stocare" + }, + "removeStorage": { + "message": "Eliminare stocare" + }, + "subscriptionStorage": { + "message": "Abonamentul dvs. are un total de $MAX_STORAGE$ GB de stocare criptată de fișiere. În prezent folosiți $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Metoda de plată" + }, + "noPaymentMethod": { + "message": "Nicio metodă de plată în fișier." + }, + "addPaymentMethod": { + "message": "Adăugare metodă de plată" + }, + "changePaymentMethod": { + "message": "Schimbare metodă de plată" + }, + "invoices": { + "message": "Facturi" + }, + "noInvoices": { + "message": "Nicio factură." + }, + "paid": { + "message": "Plătit", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Neplătit", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Tranzacții", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Nicio tranzacție." + }, + "chargeNoun": { + "message": "Debit", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Rambursare", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Orice plați în contul dvs. vor apărea ca $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB de stocare de adăugat" + }, + "gbStorageRemove": { + "message": "GB de stocare de eliminat" + }, + "storageAddNote": { + "message": "Adăugarea stocării va duce la ajustări ale totalelor de facturare și la facturarea imediată conform metodei dvs. de facturare. Prima facturare va fi aplicată proporțional la restul ciclului curent de facturare." + }, + "storageRemoveNote": { + "message": "Eliminarea stocării va duce la ajustări ale totalelor dvs. de facturare, care vor fi proporționate ca credite pentru următoarea facturare." + }, + "adjustedStorage": { + "message": "$AMOUNT$ GB de spațiu de stocare ajustat.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contactare asistență pentru clienți" + }, + "updatedPaymentMethod": { + "message": "Metoda de plată s-a actualizat." + }, + "purchasePremium": { + "message": "Achiziționare abonament Premium" + }, + "licenseFile": { + "message": "Fișier de licență" + }, + "licenseFileDesc": { + "message": "Fișierul dvs. de licență va fi numit ceva de genul $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Pentru a vă actualiza contul la statutul de membru Premium, trebuie să încărcați un fișier de licență valid." + }, + "uploadLicenseFileOrg": { + "message": "Pentru a crea o organizație găzduită local, trebuie să încărcați un fișier de licență valid." + }, + "accountEmailMustBeVerified": { + "message": "Adresa de e-mail a contului dvs. trebuie verificată." + }, + "newOrganizationDesc": { + "message": "Organizațiile vă permit să vă partajați părți din seif cu ceilalți, precum și gestionarea utilizatorilor asociați pentru o anumită entitate, cum ar fi o familie, echipă mică sau companie mare." + }, + "generalInformation": { + "message": "Informații generale" + }, + "organizationName": { + "message": "Numele organizației" + }, + "accountOwnedBusiness": { + "message": "Acest cont este deținut de un business." + }, + "billingEmail": { + "message": "Adresa e-mail de facturare" + }, + "businessName": { + "message": "Numele businessului" + }, + "chooseYourPlan": { + "message": "Alegeți-vă planul" + }, + "users": { + "message": "Utilizatori" + }, + "userSeats": { + "message": "Licențe utilizator" + }, + "additionalUserSeats": { + "message": "Licențe utilizator adiționale" + }, + "userSeatsDesc": { + "message": "# de licențe utilizator" + }, + "userSeatsAdditionalDesc": { + "message": "Planul dvs. vine cu $BASE_SEATS$ licențe de utilizator. Puteți adăuga utilizatori adiționali pentru $SEAT_PRICE$ per utilizator /lună.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "De câte licențe de utilizator aveți nevoie? Dacă este nevoie, licențe suplimentare pot fi adăugate mai târziu." + }, + "planNameFree": { + "message": "Gratuit", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Pentru testare sau pentru utilizatori privați pentru partajarea cu $COUNT$ alt utilizator.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familiile" + }, + "planDescFamilies": { + "message": "Pentru uz personal, pentru a partaja cu familia și prietenii." + }, + "planNameTeams": { + "message": "Echipe" + }, + "planDescTeams": { + "message": "Pentru businessuri și alte organizații în echipă." + }, + "planNameEnterprise": { + "message": "Organizație" + }, + "planDescEnterprise": { + "message": "Pentru businessuri și alte organizații mari." + }, + "freeForever": { + "message": "Gratuit pentru totdeauna" + }, + "includesXUsers": { + "message": "include $COUNT$ utilizatori", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Utilizatori suplimentari" + }, + "costPerUser": { + "message": "$COST$ per utilizator", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limitat la $COUNT$ utilizatori (inclusiv dvs.)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limitat la $COUNT$ colecții", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Adăugare și partajare cu până la $COUNT$ utilizatori", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Adăugare și partajare cu utilizatori nelimitați" + }, + "createUnlimitedCollections": { + "message": "Creați colecții nelimitate" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ de stocare de fișiere criptate", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Găzduire locală (opțional)" + }, + "usersGetPremium": { + "message": "Utilizatorii au acces la funcțiile Premium" + }, + "controlAccessWithGroups": { + "message": "Controlare a accesului utilizatorilor cu Grupuri" + }, + "syncUsersFromDirectory": { + "message": "Sincronizare a utilizatorilor și Grupurilor dvs dintr-un director" + }, + "trackAuditLogs": { + "message": "Urmăriți acțiunile utilizatorilor cu jurnalele de audit" + }, + "enforce2faDuo": { + "message": "Impunere 2FA cu Duo" + }, + "priorityCustomerSupport": { + "message": "Asistență prioritară pentru clienți" + }, + "xDayFreeTrial": { + "message": "$COUNT$ zile de încercare gratuită, anulați oricând", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Lunar" + }, + "annually": { + "message": "Anual" + }, + "basePrice": { + "message": "Preț de bază" + }, + "organizationCreated": { + "message": "Organizația a fost creată" + }, + "organizationReadyToGo": { + "message": "Noua dvs. organizație este pregătită!" + }, + "organizationUpgraded": { + "message": "Un upgrade al organizației a fost efectuat." + }, + "leave": { + "message": "Părăsește" + }, + "leaveOrganizationConfirmation": { + "message": "Sigur doriți să părăsiți această organizație?" + }, + "leftOrganization": { + "message": "Ați părăsit organizația." + }, + "defaultCollection": { + "message": "Colecție implicită" + }, + "getHelp": { + "message": "Obținere ajutor" + }, + "getApps": { + "message": "Obținere aplicație" + }, + "loggedInAs": { + "message": "Autentificat ca" + }, + "eventLogs": { + "message": "Jurnale evenimente" + }, + "people": { + "message": "Persoane" + }, + "policies": { + "message": "Politici" + }, + "singleSignOn": { + "message": "Conectare unică" + }, + "editPolicy": { + "message": "Editare politici" + }, + "groups": { + "message": "Grupuri" + }, + "newGroup": { + "message": "Grup nou" + }, + "addGroup": { + "message": "Adăugare grup" + }, + "editGroup": { + "message": "Editare grup" + }, + "deleteGroupConfirmation": { + "message": "Sigur doriți să ștergeți acest grup?" + }, + "removeUserConfirmation": { + "message": "Sigur doriți să eliminați acest utilizator?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Avertisment! Acest utilizator are nevoie de Conector Cheie pentru a-și gestiona criptarea. Eliminarea acestui utilizator din organizația dvs., îi va dezactiva permanent contul. Această acțiune nu poate fi anulată. Doriți să continuați?" + }, + "externalId": { + "message": "Id Extern" + }, + "externalIdDesc": { + "message": "Id-ul extern poate fi utilizat ca referință sau pentru a lega această resursă de un sistem extern, cum ar fi un folder utilizator." + }, + "accessControl": { + "message": "Controlul accesului" + }, + "groupAccessAllItems": { + "message": "Acest grup poate accesa și modifica toate articolele." + }, + "groupAccessSelectedCollections": { + "message": "Acest grup poate accesa doar colecțiile selectate." + }, + "readOnly": { + "message": "Doar pentru citire" + }, + "newCollection": { + "message": "Colecție nouă" + }, + "addCollection": { + "message": "Adăugare colecție" + }, + "editCollection": { + "message": "Editare colecție" + }, + "deleteCollectionConfirmation": { + "message": "Sigur doriți să ștergeți această colecție?" + }, + "editUser": { + "message": "Editare utilizator" + }, + "inviteUser": { + "message": "Invitare utilizator" + }, + "inviteUserDesc": { + "message": "Invitați un utilizator nou în organizația dvs. introducându-i mai jos adresa de e-mail a contului Bitwarden. Dacă nu au deja un cont Bitwarden, li se va solicita să își creeze un cont nou." + }, + "inviteMultipleEmailDesc": { + "message": "Puteți invita până la $COUNT$ utilizatori odată separând prin virgulă o listă de adrese de e-mail.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Acest utilizator folosește conectarea în două etape pentru a-și proteja contul." + }, + "userAccessAllItems": { + "message": "Acest utilizator poate accesa și modifica toate articolele." + }, + "userAccessSelectedCollections": { + "message": "Acest utilizator poate accesa doar colecțiile selectate." + }, + "search": { + "message": "Căutare" + }, + "invited": { + "message": "Invitat" + }, + "accepted": { + "message": "Acceptat" + }, + "confirmed": { + "message": "Confirmat" + }, + "clientOwnerEmail": { + "message": "E-mailul proprietarului clientului" + }, + "owner": { + "message": "Proprietar" + }, + "ownerDesc": { + "message": "Contul cu cele mai mari privilegii care poate gestiona toate aspectele organizației." + }, + "clientOwnerDesc": { + "message": "Acest utilizator trebuie să fie independent de furnizor. În cazul în care furnizorul este dezasociat de organizație, acest utilizator va menține proprietatea organizației." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Administratorii pot accesa și gestiona toate articolele, colecțiile și utilizatorii din organizația dvs." + }, + "user": { + "message": "Utilizator" + }, + "userDesc": { + "message": "Un utilizator obișnuit cu acces la colecțiile alocate din organizația dvs." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managerii pot accesa și gestiona colecțiile atribuite în organizația dvs." + }, + "all": { + "message": "Tot" + }, + "refresh": { + "message": "Reîmprospătare" + }, + "timestamp": { + "message": "Marcă temporală" + }, + "event": { + "message": "Eveniment" + }, + "unknown": { + "message": "Necunoscut" + }, + "loadMore": { + "message": "Încărcați mai mult" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Extensie", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Seif web" + }, + "loggedIn": { + "message": "Autentificat." + }, + "changedPassword": { + "message": "Parola contului a fost modificată." + }, + "enabledUpdated2fa": { + "message": "Conectarea în două etape s-a activat/actualizat." + }, + "disabled2fa": { + "message": "Conexiune în două etape dezactivată." + }, + "recovered2fa": { + "message": "Cont recuperat de la conectarea în două etape." + }, + "failedLogin": { + "message": "Încercare de conectare eșuată cu o parolă incorectă." + }, + "failedLogin2fa": { + "message": "Încercare de conectare eșuată cu verificarea în două etape incorectă." + }, + "exportedVault": { + "message": "Seiful a fost exportat." + }, + "exportedOrganizationVault": { + "message": "Seiful organizației a fost exportat." + }, + "editedOrgSettings": { + "message": "Setările organizației s-au modificat." + }, + "createdItemId": { + "message": "Element $ID$ creat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Element $ID$ editat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Articolul $ID$ a fost trimis în coșul de reciclare.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Articolul $ID$ a fost mutat la o organizație.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Element $ID$ vizualizat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Parola pentru elementul $ID$ a fost vizualizată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Câmpul ascuns al elementului $ID$ a fost vizualizat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Codul de securitate al elementului $ID$ a fost vizualizat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Parola elementului $ID$ s-a copiat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Câmpul ascuns al elementului $ID$ a fost copiat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Codul de securitate al elementului $ID$ a fost copiat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Elementul $ID$ s-a completat automat", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Colecția $ID$ a fost creată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Colecția $ID$ a fost editată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Colecția $ID$ a fost ștearsă.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Politica $ID$ a fost editată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Grupul $ID$ a fost creat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Grupul $ID$ a fost editat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Grupul $ID$ a fost șters.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Utilizatorul $ID$ a fost eliminat.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Atașamentul elementului $ID$ a fost creat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Atașamentul elementului $ID$ a fost șters.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Colecțiile elementului $ID$ au fost editate.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Utilizatorul $ID$ a fost invitat.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Utilizatorul $ID$ a fost confirmat.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Utilizatorul $ID$ a fost editat.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Grupurile utilizatorului $ID$ au fost editate.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO deconectat pentru utilizatorul $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Organizația $ID$ a fost creată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Organizația $ID$ a fost adăugată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Organizația $ID$ a fost eliminată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Seiful organizației $ID$ a fost accesat.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Dispozitiv" + }, + "view": { + "message": "Afișare" + }, + "invalidDateRange": { + "message": "Interval de date incorect." + }, + "errorOccurred": { + "message": "S-a produs o eroare." + }, + "userAccess": { + "message": "Acces utilizator" + }, + "userType": { + "message": "Tip de utilizator" + }, + "groupAccess": { + "message": "Acces grup" + }, + "groupAccessUserDesc": { + "message": "Editați grupurile cu care este asociat acest utilizator." + }, + "invitedUsers": { + "message": "Utilizatori invitați." + }, + "resendInvitation": { + "message": "Retrimitere invitație" + }, + "resendEmail": { + "message": "Retrimitere e-mail" + }, + "hasBeenReinvited": { + "message": "$USER$ a fost invitat din nou.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirmare" + }, + "confirmUser": { + "message": "Confirmare utilizator" + }, + "hasBeenConfirmed": { + "message": "$USER$ a fost confirmat.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirmare utilizatori" + }, + "usersNeedConfirmed": { + "message": "Aveți utilizatori care au acceptat invitația, dar care încă au nevoie să fie confirmați. Utilizatorii nu vor avea acces la organizație până când nu sunt confirmați." + }, + "startDate": { + "message": "Data de început" + }, + "endDate": { + "message": "Data de sfârșit" + }, + "verifyEmail": { + "message": "Verificare e-mail" + }, + "verifyEmailDesc": { + "message": "Verifică adresa de e-mail a contului pentru a debloca accesul la toate funcțiile." + }, + "verifyEmailFirst": { + "message": "Adresa de e-mail a contului dvs. trebuie mai întâi verificată." + }, + "checkInboxForVerification": { + "message": "Verificați dacă ați primit linkul de verificare prin e-mail." + }, + "emailVerified": { + "message": "E-mailul dvs. a fost confirmat." + }, + "emailVerifiedFailed": { + "message": "E-mailul dvs. nu a putut fi verificat. Încercați să trimiteți un nou e-mail de verificare." + }, + "emailVerificationRequired": { + "message": "Este necesară verificarea adresei de e-mail" + }, + "emailVerificationRequiredDesc": { + "message": "Trebuie să vă verificați e-mailul pentru a utiliza această caracteristică." + }, + "updateBrowser": { + "message": "Actualizare browser" + }, + "updateBrowserDesc": { + "message": "Utilizați un browser nesuportat. Seiful web ar putea să nu funcționeze corect." + }, + "joinOrganization": { + "message": "Alăturare la organizație" + }, + "joinOrganizationDesc": { + "message": "Ați fost invitat să vă alăturați organizației listate mai sus. Pentru a accepta invitația, trebuie să vă conectați sau să creați un cont Bitwarden nou." + }, + "inviteAccepted": { + "message": "Invitație acceptată" + }, + "inviteAcceptedDesc": { + "message": "Puteți accesa această organizație după ce un administrator vă confirmă abonamentul. Vă vom trimite un e-mail când se întâmplă acest lucru." + }, + "inviteAcceptFailed": { + "message": "Imposibil de acceptat invitația. Solicitați unui administrator al organizației să trimită o invitație nouă." + }, + "inviteAcceptFailedShort": { + "message": "Imposibil de acceptat invitația. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Memorare e-mail" + }, + "recoverAccountTwoStepDesc": { + "message": "Dacă nu vă puteți accesa contul prin metodele normale de conectare în două etape, puteți utiliza codul de recuperare în două etape pentru a dezactiva toți furnizorii în două etape din contul dvs." + }, + "recoverAccountTwoStep": { + "message": "Recuperare autentificare în două etape a contului" + }, + "twoStepRecoverDisabled": { + "message": "Conectarea în două etape a fost dezactivată în contul dvs." + }, + "learnMore": { + "message": "Aflați mai multe" + }, + "deleteRecoverDesc": { + "message": "Introduceți adresa de e-mail mai jos pentru a vă recupera și șterge contul." + }, + "deleteRecoverEmailSent": { + "message": "În cazul în care contul dvs. există, v-am trimis un e-mail cu instrucțiuni suplimentare." + }, + "deleteRecoverConfirmDesc": { + "message": "Ați solicitat să ștergeți contul Bitwarden. Clicați pe butonul de mai jos pentru a confirma." + }, + "myOrganization": { + "message": "Organizația mea" + }, + "deleteOrganization": { + "message": "Ștergere organizație" + }, + "deletingOrganizationContentWarning": { + "message": "Introduceți parola principală pentru a confirma ștergerea $ORGANIZATION$ și a tuturor datelor asociate. Datele de seif din $ORGANIZATION$ includ:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Conturile de utilizator vor rămâne active după ștergere, dar nu vor mai fi asociate cu această organizație." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Ștergerea $ORGANIZATION$ este permanentă și ireversibilă.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organizația a fost ștearsă" + }, + "organizationDeletedDesc": { + "message": "Organizația și toate datele asociate au fost șterse." + }, + "organizationUpdated": { + "message": "Organizația s-a actualizat" + }, + "taxInformation": { + "message": "Informații fiscale" + }, + "taxInformationDesc": { + "message": "Pentru clienții din SUA, codul ZIP este necesar pentru a satisface cerințele privind taxa de vânzare, pentru alte țări, opțional, puteți să furnizați un număr de identificare fiscală (TVA/GST) și/sau o adresă care să apară pe facturile dvs." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Actualizare plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Actualizați-vă contului la un alt plan prin furnizarea informațiilor de mai jos. Vă rugăm să vă asigurați că ați adăugat o metodă de plată activă în cont.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Factura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Afișare factură" + }, + "downloadInvoice": { + "message": "Descărcare factură" + }, + "verifyBankAccount": { + "message": "Verificare contul bancar" + }, + "verifyBankAccountDesc": { + "message": "Am făcut două micro-depozite în contul dvs. bancar (poate dura 1-2 zile lucrătoare pentru a apărea). Introduceți aceste sume pentru a verifica contul bancar." + }, + "verifyBankAccountInitialDesc": { + "message": "Plata cu un cont bancar este disponibilă numai clienților din Statele Unite. Vi se va cere să vă verificați contul bancar. Vom face două micro-depozite în următoarele 1-2 zile lucrătoare. Introduceți aceste sume pe pagina de facturare a organizației pentru a verifica contul bancar." + }, + "verifyBankAccountFailureWarning": { + "message": "O eroare la validarea contului dvs. bancar va duce la o plată pierdută, iar abonamentul dvs. va fi dezactivat." + }, + "verifiedBankAccount": { + "message": "Contul bancar a fost verificat." + }, + "bankAccount": { + "message": "Cont bancar" + }, + "amountX": { + "message": "Suma $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Cod bancar", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Număr de cont" + }, + "accountHolderName": { + "message": "Numele titularului contului" + }, + "bankAccountType": { + "message": "Tip de cont" + }, + "bankAccountTypeCompany": { + "message": "Companie (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Introducere id de instalare" + }, + "limitSubscriptionDesc": { + "message": "Setați o limită de licențe pentru abonamentul dvs. Odată ce această limită este atinsă, nu veți putea invita utilizatori noi." + }, + "maxSeatLimit": { + "message": "Limita maximă de licențe (opțional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Cost potențial maxim de licență" + }, + "addSeats": { + "message": "Adăugare licențe", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Eliminare licențe", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Ajustările abonamentului dvs. vor avea ca rezultat modificări proporționale ale totalurilor dvs. de facturare. Dacă utilizatorii nou invitați depășesc numărul dvs. de licențe, veți primi imediat o taxă proporțională pentru utilizatorii suplimentari." + }, + "subscriptionUserSeats": { + "message": "Abonamentul dvs. permite un total de $COUNT$ utilizatori.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limită de abonament (opțional)" + }, + "subscriptionSeats": { + "message": "Licențele abonamentului" + }, + "subscriptionUpdated": { + "message": "Abonament actualizat" + }, + "additionalOptions": { + "message": "Opțiuni suplimentare" + }, + "additionalOptionsDesc": { + "message": "Pentru ajutor suplimentar în gestionarea abonamentului dvs., vă rugăm să contactați serviciul de asistență pentru clienți." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Ajustările abonamentului dvs. vor avea ca rezultat modificări proporționale ale totalurilor dvs. de facturare. Dacă utilizatorii nou invitați depășesc numărul dvs. de licențe, veți primi imediat o taxă proporțională pentru utilizatorii suplimentari." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Ajustările abonamentului dvs. vor avea ca rezultat modificări proporționale ale totalurilor dvs. de facturare. Dacă utilizatorii nou invitați depășesc numărul dvs. de licențe, veți primi imediat o taxă proporțională pentru utilizatorii suplimentari, până când limita dvs. de $MAX$ licențe este atinsă.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Nu puteți invita mai mult de $COUNT$ utilizatori fără să vă actualizați planul.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Nu puteți invita mai mult de $COUNT$ utilizatori fără să vă actualizați planul. Vă rugăm să contactați serviciul de asistență pentru clienți pentru a moderniza.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Abonamentul dvs. permite un total de $COUNT$ utilizatori. Planul dvs. este sponsorizat și facturat unei organizații externe.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Ajustările abonamentului dvs. vor avea ca rezultat modificări proporționale ale totalurilor dvs. de facturare. Nu puteți invita mai mult de $COUNT$ utilizatori fără a vă mări numărul de licențe ale abonamentului.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Licențe de adăugat" + }, + "seatsToRemove": { + "message": "Licențe de eliminat" + }, + "seatsAddNote": { + "message": "Adăugarea de licențe utilizator va duce la ajustări ale totalelor de facturare și la facturarea imediată conform metodei dvs. de facturare. Prima facturare va fi aplicată proporțional la restul ciclului curent de facturare." + }, + "seatsRemoveNote": { + "message": "Eliminarea de licențe utilizatori va duce la ajustări ale totalelor dvs. de facturare, care vor fi proporționate ca credite pentru următoarea facturare." + }, + "adjustedSeats": { + "message": "$AMOUNT$ licențe de utilizator actualizate.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Cheia s-a actualizat" + }, + "updateKeyTitle": { + "message": "Actualizare cheie" + }, + "updateEncryptionKey": { + "message": "Actualizare cheie de criptare" + }, + "updateEncryptionKeyShortDesc": { + "message": "În prezent utilizați o schemă de criptare învechită." + }, + "updateEncryptionKeyDesc": { + "message": "Ne-am mutat la chei mai mari de criptare care oferă o mai bună securitate și acces la funcții mai noi. Actualizarea cheii de criptare este rapidă și ușoară. Doar tastați parola principală mai jos. Această actualizare va deveni în cele din urmă obligatorie." + }, + "updateEncryptionKeyWarning": { + "message": "După actualizarea cheii de criptare, trebuie să vă reconectați în toate aplicațiile Bitwarden pe care le utilizați în prezent (cum ar fi aplicația mobilă sau extensiile browserului). Faptul de a nu vă deconecta și reconecta (care descarcă noua cheie de criptare) poate duce la corupția datelor. Vom încerca să vă deconectăm automat, însă ar putea fi întârziat." + }, + "updateEncryptionKeyExportWarning": { + "message": "Orice export criptat pe care l-ați salvat va deveni, de asemenea, nevalid." + }, + "subscription": { + "message": "Abonament" + }, + "loading": { + "message": "Se încarcă" + }, + "upgrade": { + "message": "Faceți upgrade" + }, + "upgradeOrganization": { + "message": "Faceți upgrade organizației" + }, + "upgradeOrganizationDesc": { + "message": "Această funcție nu este disponibilă pentru organizațiile gratuite. Comutați la un plan plătit pentru a debloca mai multe funcții." + }, + "createOrganizationStep1": { + "message": "Crearea unei organizații: Pasul 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Înainte de a vă crea organizația, trebuie mai întâi să creați un cont personal gratuit." + }, + "refunded": { + "message": "Rambursat" + }, + "nothingSelected": { + "message": "Nu ați selectat nimic." + }, + "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." + }, + "termsOfService": { + "message": "Termeni de utilizare" + }, + "privacyPolicy": { + "message": "Politică de confidențialitate" + }, + "filters": { + "message": "Filtre" + }, + "vaultTimeout": { + "message": "Expirare seif" + }, + "vaultTimeoutDesc": { + "message": "Determină când seiful dvs. va expira și va efectua acțiunea selectată." + }, + "oneMinute": { + "message": "1 minut" + }, + "fiveMinutes": { + "message": "5 minute" + }, + "fifteenMinutes": { + "message": "15 minute" + }, + "thirtyMinutes": { + "message": "30 de minute" + }, + "oneHour": { + "message": "1 oră" + }, + "fourHours": { + "message": "4 ore" + }, + "onRefresh": { + "message": "La reîmprospătarea browserului" + }, + "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" + }, + "organizationIsDisabled": { + "message": "Organizația este dezactivată." + }, + "licenseIsExpired": { + "message": "Licența a expirat." + }, + "updatedUsers": { + "message": "Utilizatori actualizați" + }, + "selected": { + "message": "Selectat(e)" + }, + "ownership": { + "message": "Proprietate" + }, + "whoOwnsThisItem": { + "message": "Cine deține acest element?" + }, + "strong": { + "message": "Puternică", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Bună", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Slabă", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Foarte slabă", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Parolă principală slabă" + }, + "weakMasterPasswordDesc": { + "message": "Parola principală aleasă este slabă. Ar trebui folosită o parolă principală (sau o frază de access) puternică pentru a vă proteja corect contul Bitwarden. Sigur doriți să folosiți această parola principală?" + }, + "rotateAccountEncKey": { + "message": "De asemenea, revocați cheia de criptare a contului meu" + }, + "rotateEncKeyTitle": { + "message": "Revocare cheia de criptare" + }, + "rotateEncKeyConfirmation": { + "message": "Sigur doriți să revocați cheia de criptare a contului?" + }, + "attachmentsNeedFix": { + "message": "Acest element are atașamente vechi care trebuie fixate." + }, + "attachmentFixDesc": { + "message": "Acesta este un atașament de fișier vechi care trebuie reparat. Clicați pentru a afla mai multe." + }, + "fix": { + "message": "Repară", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Există atașamente de fișiere vechi în seiful dvs. care trebuie reparate înainte de a putea revoca cheia de criptare a contului." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Pentru a asigura integritatea cheilor dvs. de criptare, vă rugăm să verificați fraza amprentă a utilizatorului înainte de a continua.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Nu-mi cereți niciodată să verific frazele amprentă pentru utilizatorii invitați (Nerecomandat)", + "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." + }, + "free": { + "message": "Gratuit", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Cheie API" + }, + "apiKeyDesc": { + "message": "Cheia dvs. API poate fi utilizată pentru autentificarea la API-ul public Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Revocarea cheii API va invalida cheia anterioară. Puteți revoca cheia API dacă vi se pare că actuala cheie nu mai este sigur de folosit." + }, + "apiKeyWarning": { + "message": "Cheia dvs. API are acces complet la organizație. Ar trebui păstrată secret." + }, + "userApiKeyDesc": { + "message": "Cheia dvs. API poate fi utilizată pentru autentificare în Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Cheia dvs. API este un mecanism alternativ de autentificare. Ar trebui păstrată secret." + }, + "oauth2ClientCredentials": { + "message": "Acreditări client OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Afișare cheie API" + }, + "rotateApiKey": { + "message": "Revocare cheie API" + }, + "selectOneCollection": { + "message": "Trebuie să selectați cel puțin o colecție." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nu am putut procesa plata cu cardul dvs. Vă rugăm să vizualizați și să plătiți factura neplătită de mai jos." + }, + "inAppPurchase": { + "message": "Achiziție în aplicație" + }, + "cannotPerformInAppPurchase": { + "message": "Nu puteți efectua această acțiune în timp ce utilizați ca metodă de plată achiziția în aplicație." + }, + "manageSubscriptionFromStore": { + "message": "Trebuie să vă gestionați abonamentul din magazinul în care a fost efectuată achiziția în aplicație." + }, + "minLength": { + "message": "Lungimea minimă" + }, + "clone": { + "message": "Clonare" + }, + "masterPassPolicyDesc": { + "message": "Setează cerințele minime pentru puterea parolei principale." + }, + "twoStepLoginPolicyDesc": { + "message": "Solicită utilizatorilor să configureze conectarea în două etape pentru conturile lor personale." + }, + "twoStepLoginPolicyWarning": { + "message": "Membrii organizației care nu sunt Proprietari sau Administratori și nu au activată conectarea în două etape în contul lor personal vor fi eliminați din organizație și vor primi o notificare prin e-mail cu privire la modificare." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Sunteți membrul unei organizații care necesită conectarea în două etape activată în contul dvs. de utilizator. Dacă dezactivați toți furnizorii de conectare în două etape, veți fi eliminat automat din aceste organizații." + }, + "passwordGeneratorPolicyDesc": { + "message": "Setează cerințele minime pentru configurarea generatorului de parole." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una sau mai multe politici organizaționale vă afectează setările generatorului." + }, + "masterPasswordPolicyInEffect": { + "message": "Una sau mai multe politici organizaționale 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." + }, + "minimumNumberOfWords": { + "message": "Număr minim de cuvinte" + }, + "defaultType": { + "message": "Tip implicit" + }, + "userPreference": { + "message": "Preferințe utilizator" + }, + "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ă reautentificarea 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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Căutare în coșul de reciclare" + }, + "permanentlyDelete": { + "message": "Ștergere definitivă" + }, + "permanentlyDeleteSelected": { + "message": "Ștergere definitivă a selecției" + }, + "permanentlyDeleteItem": { + "message": "Ștergere definitivă a articolului" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Sigur doriți să ștergeți definitiv acest articol?" + }, + "permanentlyDeletedItem": { + "message": "Articolul a fost șters definitiv" + }, + "permanentlyDeletedItems": { + "message": "Articolele au fost șterse definitiv" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Ați selectat $COUNT$ articol(e) pentru ștergere definitivă. Sigur vreți să ștergeți definitiv toate articolele selectate?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Articolul $ID$ a fost șters definitiv.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restabilire" + }, + "restoreSelected": { + "message": "Restabilire selecție" + }, + "restoreItem": { + "message": "Restabilire articol" + }, + "restoredItem": { + "message": "Articol restabilit" + }, + "restoredItems": { + "message": "Articole restabilite" + }, + "restoreItemConfirmation": { + "message": "Sigur doriți să restabiliți acest articol?" + }, + "restoreItems": { + "message": "Restabilire articole" + }, + "restoreSelectedItemsDesc": { + "message": "Ați selectat $COUNT$ articol(e) pentru restabilire. Sigur vreți să restabiliți toate aceste articole?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Elementul $ID$ a fost restabilit.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "După expirare, accesul la seiful dvs. va fi restricționat și va fi necesară autentificarea on-line. Sigur doriți să utilizați această setare?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmare acțiune la expirare" + }, + "hidePasswords": { + "message": "Ascundere parole" + }, + "countryPostalCodeRequiredDesc": { + "message": "Solicităm aceste informații doar pentru calcularea taxei de vânzare și a raportării financiare." + }, + "includeVAT": { + "message": "Includere informații despre TVA/GST (opțional)" + }, + "taxIdNumber": { + "message": "Codul fiscal TVA/GST" + }, + "taxInfoUpdated": { + "message": "Informațiile fiscale au fost actualizate." + }, + "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." + }, + "identifier": { + "message": "Identificator" + }, + "organizationIdentifier": { + "message": "Identificatorul organizației" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Conectați-vă utilizând portalul de conectare unică al organizației. Pentru a începe, Introduceți vă rog identificatorul organizației dvs." + }, + "enterpriseSingleSignOn": { + "message": "Conectare unică organizație (SSO)" + }, + "ssoHandOff": { + "message": "Acum puteți închide această filă și puteți continua în extensie." + }, + "includeAllTeamsFeatures": { + "message": "Toate funcțiile planului Echipe, plus:" + }, + "includeSsoAuthentication": { + "message": "Autentificare SSO prin SAML2.0 și OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Politici Organizație" + }, + "ssoValidationFailed": { + "message": "Validarea SSO nu a reușit" + }, + "ssoIdentifierRequired": { + "message": "Identificatorul organizației este necesar." + }, + "unlinkSso": { + "message": "Deconectare SSO" + }, + "unlinkSsoConfirmation": { + "message": "Sigur doriți să deconectați SSO pentru această organizație?" + }, + "linkSso": { + "message": "Conectare SSO" + }, + "singleOrg": { + "message": "Organizație Unică" + }, + "singleOrgDesc": { + "message": "Restricționează utilizatorii să se alăture oricărei alte organizații." + }, + "singleOrgBlockCreateMessage": { + "message": "Organizația dvs. actuală are o politică care nu vă permite să vă alăturați la mai mult de o organizație. Vă rugăm să contactați administratorii organizației sau să vă înscrieți dintr-un cont Bitwarden diferit." + }, + "singleOrgPolicyWarning": { + "message": "Membrii organizației care nu sunt proprietari sau administratori și sunt deja membri ai unei alte organizații vor fi eliminați din organizația dvs." + }, + "requireSso": { + "message": "Autentificare Single Sign-On" + }, + "requireSsoPolicyDesc": { + "message": "Solicită utilizatorilor să se conecteze cu metoda Conectare unică organizație (SSO)." + }, + "prerequisite": { + "message": "Condiție prealabilă" + }, + "requireSsoPolicyReq": { + "message": "Înainte de activarea acestei politici, trebuie activată metoda de conectare \"Single sign-on\" pentru organizație (SSO)." + }, + "requireSsoPolicyReqError": { + "message": "Politica Organizație Unică nu este activată." + }, + "requireSsoExemption": { + "message": "Proprietarii și administratorii organizației sunt exceptați de la aplicarea acestei politici." + }, + "sendTypeFile": { + "message": "Fișier" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Creare de nou Send", + "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." + }, + "createdSend": { + "message": "S-a creat un nou Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send-ul a fost editat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send-ul a fost șters", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSend": { + "message": "Ștergere Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Dezactivat" + }, + "sendLink": { + "message": "Link Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copiere link Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Eliminare parolă" + }, + "removedPassword": { + "message": "Parola a fost eliminată" + }, + "removePasswordConfirmation": { + "message": "Sigur doriți să eliminați parola?" + }, + "hideEmail": { + "message": "Ascundeți adresa mea de e-mail de la destinatari." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Toate Send-urile" + }, + "maxAccessCountReached": { + "message": "S-a atins numărul maxim de acces", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Ștergere în așteptare" + }, + "expired": { + "message": "Expirat" + }, + "searchSends": { + "message": "Căutare în Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Acest Send este protejat cu parolă. Vă rugăm să introduceți mai jos parola pentru a continua.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Nu știți parola? Cereți Expeditorului parola necesară pentru a accesa acest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Acest Send este ascuns în mod implicit. Puteți comuta vizibilitatea acestuia folosind butonul de mai jos.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Descărcare fișier" + }, + "sendAccessUnavailable": { + "message": "Send-ul pe care încercați să-l accesați nu există sau nu mai este disponibil.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Fișierul asociat cu acest Send nu a putut fi găsit.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Niciun Send de afișat.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Acces de urgență" + }, + "emergencyAccessDesc": { + "message": "Acordă și gestionează accesul de urgență, contactelor de încredere. Contactele de încredere, pot solicita accesul, fie la vizualizarea, fie la preluarea controlului contului dvs. în caz de urgență. Vizitați-ne pagina de ajutor, pentru detalii privind modul cum funcționează schimbul zero de cunoștințe." + }, + "emergencyAccessOwnerWarning": { + "message": "Sunteți proprietarul uneia sau mai multor organizații. Dacă permiteți preluarea controlului de către un contact de urgență, acesta va putea utiliza toate permisiunile dvs. ca proprietar, după preluarea controlului." + }, + "trustedEmergencyContacts": { + "message": "Contacte de urgență de încredere" + }, + "noTrustedContacts": { + "message": "Nu ați adăugat încă niciun contact de urgență, invitați un contact de încredere pentru a începe." + }, + "addEmergencyContact": { + "message": "Adăugați un contact de urgență" + }, + "designatedEmergencyContacts": { + "message": "Desemnat ca contact de urgență" + }, + "noGrantedAccess": { + "message": "Nu ați fost încă desemnat drept contact de urgență pentru nimeni." + }, + "inviteEmergencyContact": { + "message": "Invitați contactul de urgență" + }, + "editEmergencyContact": { + "message": "Editați contactul de urgență" + }, + "inviteEmergencyContactDesc": { + "message": "Invitați un nou contact de urgență introducând adresa de e-mail a contului Bitwarden de mai jos. Dacă nu au deja un cont Bitwarden, li se va solicita să creeze un cont nou." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Acces de urgență inițiat" + }, + "emergencyAccessRecoveryApproved": { + "message": "Acces de urgență aprobat" + }, + "viewDesc": { + "message": "Poate vizualiza toate articolele din seiful dvs." + }, + "takeover": { + "message": "Preluare" + }, + "takeoverDesc": { + "message": "Vă poate reseta contul cu o nouă parolă principală." + }, + "waitTime": { + "message": "Timp de așteptare" + }, + "waitTimeDesc": { + "message": "Timp necesar înainte de acordarea automată a accesului." + }, + "oneDay": { + "message": "1 zi" + }, + "days": { + "message": "$DAYS$ zile", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Utilizator invitat." + }, + "acceptEmergencyAccess": { + "message": "Ați fost invitat să deveniți un contact de urgență pentru utilizatorul listat mai sus. Pentru a accepta invitația, trebuie să vă conectați sau să creați un cont Bitwarden nou." + }, + "emergencyInviteAcceptFailed": { + "message": "Invitația nu poate fi acceptată. Solicitați utilizatorului să trimită o nouă invitație." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Invitația nu poate fi acceptată. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Puteți accesa opțiunile de urgență pentru acest utilizator după confirmarea identității dvs. Vă vom trimite un e-mail atunci când se întâmplă acest lucru." + }, + "requestAccess": { + "message": "Solicitare de acces" + }, + "requestAccessConfirmation": { + "message": "Sunteți sigur că doriți să solicitați acces de urgență? Vi se va oferi acces după $WAITTIME$ zi(le) sau ori de câte ori utilizatorul aprobă manual solicitarea.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Acces de urgență solicitat pentru $USER$. Vă vom notifica prin e-mail când este posibil să continuați.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Autorizez" + }, + "reject": { + "message": "Declin" + }, + "approveAccessConfirmation": { + "message": "Confirmați aprobarea accesului de urgență? Acest lucru va permite lui $USER$ să $ACTION$ contul dvs.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Acces de urgență aprobat." + }, + "emergencyRejected": { + "message": "Acces de urgență respins" + }, + "passwordResetFor": { + "message": "S-a resetat parola pentru $USER$. Vă puteți conecta acum cu noua parolă.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Proprietate personală" + }, + "personalOwnershipPolicyDesc": { + "message": "Solicită utilizatorilor să salveze articolele din seif într-o organizație prin eliminarea opțiunii de proprietate personală." + }, + "personalOwnershipExemption": { + "message": "Proprietarii și administratorii organizației sunt exceptați de la aplicarea acestei politici." + }, + "personalOwnershipSubmitError": { + "message": "Datorită unei politici pentru întreprinderi, vă este restricționată salvarea de articole în seiful dvs. personal. Schimbați opțiunea de proprietate la o organizație și alegeți dintre colecțiile disponibile." + }, + "disableSend": { + "message": "Dezactivare Send" + }, + "disableSendPolicyDesc": { + "message": "Nu permiteți utilizatorilor să creeze sau să editeze un Send Bitwarden. Ștergerea unui Send existent este încă permisă.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Utilizatorii organizației care pot gestiona politicile organizației sunt exceptați de la aplicarea acestei politici." + }, + "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." + }, + "sendOptions": { + "message": "Opțiuni Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Setați opțiunile pentru crearea și editarea Send-urilor.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Utilizatorii organizației care pot gestiona politicile organizației sunt exceptați de la aplicarea acestei politici." + }, + "disableHideEmail": { + "message": "Nu permiteți utilizatorilor să-și ascundă adresa de e-mail de la destinatari, atunci când creează sau editează un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "În prezent, sunt în vigoare următoarele politici de organizare:" + }, + "sendDisableHideEmailInEffect": { + "message": "Utilizatorii nu au voie să-și ascundă adresa de e-mail de la destinatari atunci când creează sau editează un Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Politica $ID$ a fost editată.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Prețul planului" + }, + "estimatedTax": { + "message": "Taxa estimată" + }, + "custom": { + "message": "Personalizat" + }, + "customDesc": { + "message": "Permite mai mult control granular al permisiunilor utilizatorilor pentru configurații avansate." + }, + "permissions": { + "message": "Permisiuni" + }, + "accessEventLogs": { + "message": "Acces la jurnalele de evenimente" + }, + "accessImportExport": { + "message": "Acces la import/export" + }, + "accessReports": { + "message": "Acces la rapoarte" + }, + "missingPermissions": { + "message": "Nu aveți drepturile necesare pentru a efectua această acțiune." + }, + "manageAllCollections": { + "message": "Gestionați toate colecțiile" + }, + "createNewCollections": { + "message": "Creare de colecție nouă" + }, + "editAnyCollection": { + "message": "Modificare a oricărei colecții" + }, + "deleteAnyCollection": { + "message": "Ștergere a oricărei colecții" + }, + "manageAssignedCollections": { + "message": "Gestionați colecțiile alocate" + }, + "editAssignedCollections": { + "message": "Editare de colecții alocate" + }, + "deleteAssignedCollections": { + "message": "Ștergere de colecții alocate" + }, + "manageGroups": { + "message": "Gestionați grupurile" + }, + "managePolicies": { + "message": "Gestionați politicile" + }, + "manageSso": { + "message": "Gestionați SSO" + }, + "manageUsers": { + "message": "Gestionați utilizatorii" + }, + "manageResetPassword": { + "message": "Gestionați resetarea parolei" + }, + "disableRequiredError": { + "message": "Trebuie să dezactivați manual politica $POLICYNAME$ înainte ca această politică să poată fi dezactivată.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "O politică de organizație vă afectează opțiunile de proprietate." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "O politică a organizației a dezactivat importarea de elemente în seiful dvs. personal." + }, + "personalOwnershipCheckboxDesc": { + "message": "Dezactivează proprietatea personală pentru utilizatorii organizației" + }, + "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." + }, + "sendNameDesc": { + "message": "Un nume prietenos pentru a descrie acest 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." + }, + "copySendLinkOnSave": { + "message": "Copiați linkul pentru a partaja acest Send în clipboard-ul meu la salvare." + }, + "sendLinkLabel": { + "message": "Link Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmite celorlalți informații sensibile, temporare, cu ușurință și în siguranță.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Aflați mai multe despre", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Partajați text sau fișiere direct cu oricine." + }, + "sendVaultCardLearnMore": { + "message": "Aflați mai multe", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "vedeți", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "cum funcționează", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "sau", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "încercați-l acum", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "sau", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "înregistrați-vă", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "pentru a-l încerca astăzi.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Utilizatorul Bitwarden $USER_IDENTIFIER$ a partajat următoarele cu dvs.", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Utilizatorul Bitwarden care a creat acest Send a ales să-și ascundă adresa de e-mail. Ar trebui să vă asigurați că aveți încredere în sursa acestui link înainte de utilizarea sau descărcarea conținutului acestuia.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Data de expirare furnizată nu este validă." + }, + "deletionDateIsInvalid": { + "message": "Data de ștergere furnizată nu este validă." + }, + "expirationDateAndTimeRequired": { + "message": "Sunt necesare o dată și o oră de expirare." + }, + "deletionDateAndTimeRequired": { + "message": "Sunt necesare o dată și o oră de ștergere." + }, + "dateParsingError": { + "message": "A survenit o eroare la salvarea datelor de ștergere și de expirare." + }, + "webAuthnFallbackMsg": { + "message": "Pentru a verifica 2FA, vă rugăm să faceți clic pe butonul de mai jos." + }, + "webAuthnAuthenticate": { + "message": "Autentificare WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn nu este acceptat în acest browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn a fost verificat cu succes! Puteți închide această filă." + }, + "hintEqualsPassword": { + "message": "Indiciul dvs. de parolă nu poate fi aceeași cu parola." + }, + "enrollPasswordReset": { + "message": "Înscriere în resetarea parolei" + }, + "enrolledPasswordReset": { + "message": "Înregistrat la resetarea parolei" + }, + "withdrawPasswordReset": { + "message": "Retragere din resetarea parolei" + }, + "enrollPasswordResetSuccess": { + "message": "Înregistrare reușită!" + }, + "withdrawPasswordResetSuccess": { + "message": "Retragere reușită!" + }, + "eventEnrollPasswordReset": { + "message": "Utilizator $ID$ s-a înscris în asistența de resetare a parolei.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Utilizatorul $ID$ s-a retras din asistența pentru resetarea parolei.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Resetarea parolei principale pentru utilizatorul $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Resetare link SSO pentru utilizatorul $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ s-a autentificat folosind SSO pentru prima data", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Resetați parola" + }, + "resetPasswordLoggedOutWarning": { + "message": "Procedând, $NAME$ va fi deconectat de la sesiunea curentă, solicitându-i să se conecteze din nou. Sesiunile active pe alte dispozitive pot continua să rămână active timp de până la o oră.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "acest utilizator" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Una sau mai multe politici ale organizației, necesită ca parola principală să îndeplinească următoarele cerințe:" + }, + "resetPasswordSuccess": { + "message": "Parolă resetată cu succes!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Înscrierea va permite administratorilor organizației să vă schimbe parola principală. Sigur doriți să vă înscrieți?" + }, + "resetPasswordPolicy": { + "message": "Resetare parolă principală" + }, + "resetPasswordPolicyDescription": { + "message": "Permite administratorilor din organizație să reseteze parola principală a utilizatorilor organizației." + }, + "resetPasswordPolicyWarning": { + "message": "Utilizatorii din organizație vor trebui să se înregistreze singuri sau, să fie înregistrați automat, înainte ca administratorii să le poată reseta parola principală." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Înregistrare automată" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Toți utilizatorii vor fi înregistrați automat în resetarea parolei odată ce invitația lor este acceptată și nu li se va permite să se retragă." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Utilizatorii care fac deja parte din organizație, nu vor fi înscriși retroactiv în resetarea parolei. Ei vor trebui să se înregistreze singuri, înainte ca administratorii să poată reseta parola lor principală." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Solicită înscrierea automată a noilor utilizatori" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Această organizație are o politică de întreprindere care vă va înregistra automat în resetarea parolei. Înregistrarea va permite administratorilor organizației să vă schimbe parola principală." + }, + "resetPasswordOrgKeysError": { + "message": "Răspunsul Cheilor organizației este nul" + }, + "resetPasswordDetailsError": { + "message": "Răspunsul detaliat la resetarea parolei este nul" + }, + "trashCleanupWarning": { + "message": "Articolele care au fost în coșul de reciclare mai mult de 30 de zile vor fi șterse automat." + }, + "trashCleanupWarningSelfHosted": { + "message": "Articolele care au fost în coșul de reciclare de ceva vreme vor fi șterse automat." + }, + "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." + }, + "reinviteSelected": { + "message": "Retrimitere invitații" + }, + "noSelectedUsersApplicable": { + "message": "Această acțiune nu se aplică niciunui utilizator selectat." + }, + "removeUsersWarning": { + "message": "Sunteți sigur că doriți să eliminați următorii utilizatori? Finalizarea procesului poate dura câteva secunde și nu poate fi întrerupt sau anulat." + }, + "theme": { + "message": "Temă" + }, + "themeDesc": { + "message": "Alegere temă pentru seiful dvs. web." + }, + "themeSystem": { + "message": "Utilizare temă de sistem" + }, + "themeDark": { + "message": "Întunecat" + }, + "themeLight": { + "message": "Luminos" + }, + "confirmSelected": { + "message": "Confirmați selecția" + }, + "bulkConfirmStatus": { + "message": "Starea operației în masă" + }, + "bulkConfirmMessage": { + "message": "Confirmat cu succes." + }, + "bulkReinviteMessage": { + "message": "Reinvitat cu succes." + }, + "bulkRemovedMessage": { + "message": "Eliminat cu succes" + }, + "bulkFilteredMessage": { + "message": "Exclus, nu se aplică pentru această acțiune." + }, + "fingerprint": { + "message": "Amprentă" + }, + "removeUsers": { + "message": "Eliminați utilizatorii" + }, + "error": { + "message": "Eroare" + }, + "resetPasswordManageUsers": { + "message": "Gestionare Utilizatori trebuie de asemenea activată cu Gestionare Permisiune de Resetare a Parolei" + }, + "setupProvider": { + "message": "Configurare furnizor" + }, + "setupProviderLoginDesc": { + "message": "Ați fost invitat să configurați un nou furnizor. Pentru a continua, trebuie să vă conectați sau să creați un nou cont Bitwarden." + }, + "setupProviderDesc": { + "message": "Vă rugăm să introduceți mai jos detaliile pentru a finaliza configurarea furnizorului. Contactați asistența pentru clienți dacă aveți întrebări." + }, + "providerName": { + "message": "Numele furnizorului" + }, + "providerSetup": { + "message": "Furnizorul a fost configurat." + }, + "clients": { + "message": "Clienți" + }, + "providerAdmin": { + "message": "Administrator furnizor" + }, + "providerAdminDesc": { + "message": "Utilizatorul cu accesul cel mai ridicat, care poate gestiona toate aspectele furnizorului dvs., precum și accesul și gestionarea organizațiilor clientului." + }, + "serviceUser": { + "message": "Utilizator de serviciu" + }, + "serviceUserDesc": { + "message": "Utilizatorii serviciilor pot accesa și gestiona toate organizațiile clienților." + }, + "providerInviteUserDesc": { + "message": "Invitați un utilizator nou la furnizorul dvs. introducând mai jos adresa de e-mail a contului Bitwarden. Dacă nu au deja un cont Bitwarden, li se va solicita să creeze un cont nou." + }, + "joinProvider": { + "message": "Alăturare la furnizor" + }, + "joinProviderDesc": { + "message": "Ați fost invitat să vă alăturați furnizorului enumerat mai sus. Pentru a accepta invitația, trebuie să vă conectați sau să creați un cont Bitwarden nou." + }, + "providerInviteAcceptFailed": { + "message": "Nu am putut accepta invitația. Solicitați unui administrator de furnizor să trimită o nouă invitație." + }, + "providerInviteAcceptedDesc": { + "message": "Puteți accesa acest furnizor după ce un administrator vă confirmă abonamentul. Vă vom trimite un e-mail când se întâmplă acest lucru." + }, + "providerUsersNeedConfirmed": { + "message": "Aveți utilizatori care au acceptat invitația, dar încă mai trebuie să fie confirmați. Utilizatorii nu vor avea acces la furnizor până când nu vor fi confirmați." + }, + "provider": { + "message": "Furnizor" + }, + "newClientOrganization": { + "message": "Organizație client nouă" + }, + "newClientOrganizationDesc": { + "message": "Creați o nouă organizație client care va fi asociată cu dvs. ca furnizor. Veți putea accesa și gestiona această organizație." + }, + "addExistingOrganization": { + "message": "Adăugare organizație existentă" + }, + "myProvider": { + "message": "Furnizorul meu" + }, + "addOrganizationConfirmation": { + "message": "Sunteți sigur că doriți să adăugați $ORGANIZATION$ ca și client la $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organizația a fost adăugată cu succes la furnizor" + }, + "accessingUsingProvider": { + "message": "Accesarea organizației folosind furnizorul $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Furnizorul este dezactivat." + }, + "providerUpdated": { + "message": "Furnizor actualizat" + }, + "yourProviderIs": { + "message": "Furnizorul dvs. este $PROVIDER$. Ei au privilegii administrative și de facturare pentru organizația dvs.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Organizația $ORGANIZATION$ a fost detașată de furnizorul dvs.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Sigur doriți să detașați această organizație? Organizația va continua să existe, dar nu va mai fi gestionată de furnizor." + }, + "add": { + "message": "Adaugă" + }, + "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ă." + }, + "masterPasswordInvalidWarning": { + "message": "Parola dvs. principală nu îndeplinește cerințele politicii acestei organizații. Pentru a vă alătura organizației, trebuie să vă actualizați acum parola principală. Continuarea vă va deconecta de la sesiunea curentă, fiind necesar să vă autentificați din nou. Sesiunile active pe alte dispozitive pot continua să rămână active timp de până la o oră." + }, + "maximumVaultTimeout": { + "message": "Expirare seif" + }, + "maximumVaultTimeoutDesc": { + "message": "Configurează timpul maxim de expirare a seifului pentru toți utilizatorii." + }, + "maximumVaultTimeoutLabel": { + "message": "Timp maxim de expirare a seifului" + }, + "invalidMaximumVaultTimeout": { + "message": "Timp maxim de expirare a seifului nevalid." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Expirare seif personalizată" + }, + "vaultTimeoutToLarge": { + "message": "Timpul de expirare a seifului depășește restricția stabilită de organizația dvs." + }, + "disablePersonalVaultExport": { + "message": "Dezactivare a exportului seifului personal" + }, + "disablePersonalVaultExportDesc": { + "message": "Interzice utilizatorilor să exporte datele private ale seifului lor." + }, + "vaultExportDisabled": { + "message": "Export de seif dezactivat" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una sau mai multe politici ale organizației vă împiedică să exportați seiful personal." + }, + "selectType": { + "message": "Selectați tipul SSO" + }, + "type": { + "message": "Tip" + }, + "openIdConnectConfig": { + "message": "Configurare OpenID Connect" + }, + "samlSpConfig": { + "message": "Configurare furnizor de servicii SAML" + }, + "samlIdpConfig": { + "message": "Configurare furnizor de identitate SAML" + }, + "callbackPath": { + "message": "Calea redirecționării" + }, + "signedOutCallbackPath": { + "message": "Calea de deconectare a redirecționării" + }, + "authority": { + "message": "Autoritate" + }, + "clientId": { + "message": "ID-ul clientului" + }, + "clientSecret": { + "message": "Codul secret al clientului" + }, + "metadataAddress": { + "message": "Adresă de metadate" + }, + "oidcRedirectBehavior": { + "message": "Comportament de redirecționare OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Obținere de claims de la punctul final de info utilizator" + }, + "additionalScopes": { + "message": "Scopes personalizate" + }, + "additionalUserIdClaimTypes": { + "message": "Tipuri de claim personalizate de ID utilizator" + }, + "additionalEmailClaimTypes": { + "message": "Tipuri de Claim e-mail" + }, + "additionalNameClaimTypes": { + "message": "Tipuri de Claim cu nume personalizate" + }, + "acrValues": { + "message": "Valorile de referință ale clasei de context de autentificare solicitate" + }, + "expectedReturnAcrValue": { + "message": "Valoarea Claim „acr” care trebuie așteptată în răspuns" + }, + "spEntityId": { + "message": "ID-ul Entității SP" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Format ID nume" + }, + "spOutboundSigningAlgorithm": { + "message": "Algoritm de semnare de ieșire" + }, + "spSigningBehavior": { + "message": "Comportamentul semnăturii" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Algoritmul minim de semnare de intrare" + }, + "spWantAssertionsSigned": { + "message": "Se așteaptă afirmații semnate" + }, + "spValidateCertificates": { + "message": "Validare certificate" + }, + "idpEntityId": { + "message": "ID-ul Entității" + }, + "idpBindingType": { + "message": "Tip de legare" + }, + "idpSingleSignOnServiceUrl": { + "message": "Serviciul de Conectare Unică URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Serviciului de Deconectare Unică URL" + }, + "idpX509PublicCert": { + "message": "Certificat public X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Algoritm de semnare de ieșire" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Se permite răspunsul nesolicitat de autentificare" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Se permit cererile de deconectare de ieșire" + }, + "idpSignAuthenticationRequests": { + "message": "Semnare a solicitărilor de autentificare" + }, + "ssoSettingsSaved": { + "message": "Configurația de conectare unică a fost salvată." + }, + "sponsoredFamilies": { + "message": "Planul Bitwarden Familiile gratuit" + }, + "sponsoredFamiliesEligible": { + "message": "Dumneavoastră și familia dvs., sunteți eligibili pentru planul Bitwarden Familiile gratuit. Revendicați-l cu e-mailul personal pentru a vă păstra datele în siguranță chiar și atunci când nu sunteți la locul de muncă." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Schimbați-vă astăzi planul Bitwarden Gratuit pentru Familiile, pentru a vă păstra datele dvs. sigure, chiar și atunci când nu sunteți la locul de muncă." + }, + "sponsoredFamiliesInclude": { + "message": "Planul Bitwarden Familiile include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Acces Premium pentru până la 6 utilizatori" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Colecții partajate pentru secrete familiale" + }, + "badToken": { + "message": "Linkul nu mai este valabil. Vă rugăm să cereți sponsorului să retrimită oferta." + }, + "reclaimedFreePlan": { + "message": "Planul gratuit revendicat" + }, + "redeem": { + "message": "Revendicare" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Selectați organizația pe care doriți să o sponsorizați" + }, + "familiesSponsoringOrgSelect": { + "message": "Ce ofertă Gratuită Familiile ați dori să revendicați?" + }, + "sponsoredFamiliesEmail": { + "message": "Introduceți e-mailul dvs. personal pentru a revendica planul Bitwarden Familiile" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Dacă părăsiți sau sunteți exclus din organizația sponsor, planul dvs. Familiile va expira la sfârșitul perioadei de facturare." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Acceptați oferta pentru o organizație existentă sau creați o nouă organizație Familiile." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Vi s-a oferit gratuit un plan de Organizație Bitwarden Familiile. Pentru a continua, trebuie să vă conectați la contul care a primit oferta." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Imposibil de acceptat oferta. Vă rugăm să retrimiteți e-mailul ofertei din contul dvs. de întreprindere și încercați din nou." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Imposibil de acceptat oferta. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Acceptați planul Bitwarden Familiile gratuit" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Oferta gratuită Bitwarden Familiile a fost revendicată cu succes" + }, + "redeemed": { + "message": "Revendicată" + }, + "redeemedAccount": { + "message": "Cont revendicat" + }, + "revokeAccount": { + "message": "Revocare cont $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Retrimiteți e-mailul de sponsorizare către sponsorul $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Planul Familiile gratuit" + }, + "redeemNow": { + "message": "Revendicați acum" + }, + "recipient": { + "message": "Beneficiar" + }, + "removeSponsorship": { + "message": "Eliminare sponsorizare" + }, + "removeSponsorshipConfirmation": { + "message": "După eliminarea unei sponsorizări, veți fi responsabil pentru acest abonament și facturile conexe. Sigur doriți să continuați?" + }, + "sponsorshipCreated": { + "message": "Sponsorizare creată" + }, + "revoke": { + "message": "Revocare" + }, + "emailSent": { + "message": "E-mail trimis" + }, + "revokeSponsorshipConfirmation": { + "message": "După eliminarea acestui cont, proprietarul organizației Familiile va fi responsabil pentru acest abonament și facturile aferente. Sigur doriți să continuați?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorizare eliminată" + }, + "ssoKeyConnectorUnavailable": { + "message": "Nu se poate accesa Conectorul Cheie. Vă rugăm să încercați din nou mai târziu." + }, + "keyConnectorUrl": { + "message": "URL de Conector Cheie" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Eliminare parolă principală" + }, + "removedMasterPassword": { + "message": "Parolă principală eliminată." + }, + "allowSso": { + "message": "Permite autentificarea SSO" + }, + "allowSsoDesc": { + "message": "Odată configurată, configurația dvs. va fi salvată, iar membrii vor putea să se autentifice folosind acreditările furnizorului lor de identitate." + }, + "ssoPolicyHelpStart": { + "message": "Activează", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Politica de autentificare SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "pentru a solicita tuturor membrilor să se conecteze cu SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Autentificarea SSO și politicile Organizației Unice sunt necesare pentru a configura decriptarea cu Conectorul Cheie." + }, + "memberDecryptionOption": { + "message": "Opțiuni de decriptare ale membrilor" + }, + "memberDecryptionPassDesc": { + "message": "Odată autentificați, membrii vor decripta datele seifului folosind parolele lor principale." + }, + "keyConnector": { + "message": "Conector Cheie" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Conectează Autentificarea cu SSO la serverul dvs. cheie de decriptare auto-găzduit. Folosind această opțiune, membrii nu vor trebui să folosească parolele lor principale pentru a decripta datele seifului. Contactați asistența Bitwarden pentru ajutor la configurare." + }, + "keyConnectorPolicyRestriction": { + "message": "„Autentificarea cu SSO și Decriptarea cu Conectorul Cheie” este activată. Această politică se va aplica numai proprietarilor și administratorilor." + }, + "enabledSso": { + "message": "SSO activat" + }, + "disabledSso": { + "message": "SSO dezactivat" + }, + "enabledKeyConnector": { + "message": "Conector Cheie activat" + }, + "disabledKeyConnector": { + "message": "Conector Cheie dezactivat" + }, + "keyConnectorWarning": { + "message": "Odată ce membrii încep să utilizeze Conectorul Cheie, organizația dvs. nu mai poate reveni la decriptarea cu Parola Principală. Continuați numai dacă vă simțiți confortabil să implementați și să gestionați un server cheie." + }, + "migratedKeyConnector": { + "message": "Migrat la Conectorul Cheie" + }, + "paymentSponsored": { + "message": "Vă rugăm să furnizați o metodă de plată pentru a asocia cu organizația. Nu vă faceți griji, nu vă vom percepe nimic decât dacă selectați caracteristici suplimentare sau dacă sponsorizarea dvs. expiră. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Oferta de sponsorizare a expirat. Puteți șterge organizația pe care ați creat-o pentru a evita o taxă la sfârșitul perioadei de încercare de 7 zile. În caz contrar, puteți închide această solicitare pentru a păstra organizația și pentru a vă asuma responsabilitatea de facturare." + }, + "newFamiliesOrganization": { + "message": "Nouă Organizație Familiile" + }, + "acceptOffer": { + "message": "Acceptare ofertă" + }, + "sponsoringOrg": { + "message": "Organizația de sponsorizare" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Succes! Conectorul Cheie a fost accesat." + }, + "keyConnectorTestFail": { + "message": "Conectorul Cheie nu este accesibil. Verificați adresa URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Oferta de sponsorizare a expirat." + }, + "freeWithSponsorship": { + "message": "GRATUIT cu sponsorizare" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ câmpuri de mai sus necesită atenția dvs.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 câmp de mai sus necesită atenția dvs." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ este obligatoriu.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "necesar" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Necesar dacă ID-ul de entitate nu este un URL." + }, + "openIdOptionalCustomizations": { + "message": "Personalizări opționale" + }, + "openIdAuthorityRequired": { + "message": "Necesar dacă Autoritatea nu este validă." + }, + "separateMultipleWithComma": { + "message": "Separați mai multe prin virgulă." + }, + "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" + }, + "exportingOrganizationVaultTitle": { + "message": "Exportarea seifului organizației" + }, + "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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Numai seiful organizației asociat cu $ORGANIZATION$ va fi exportat. Elementele seifului personal și elementele din alte organizații nu vor fi incluse.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Înapoi la rapoarte" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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" + }, + "service": { + "message": "Serviciu" + } +} diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json new file mode 100644 index 0000000000..76d6565cfe --- /dev/null +++ b/apps/web/src/locales/ru/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Веб-хранилище $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "Пароль" + }, + "newPassword": { + "message": "Новый пароль" + }, + "passphrase": { + "message": "Парольная фраза" + }, + "notes": { + "message": "Заметки" + }, + "customFields": { + "message": "Пользовательские поля" + }, + "cardholderName": { + "message": "Имя владельца карты" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Тип карты" + }, + "expiration": { + "message": "Срок действия" + }, + "securityCode": { + "message": "Код безопасности (CVV)" + }, + "identityName": { + "message": "Имя" + }, + "company": { + "message": "Компания" + }, + "ssn": { + "message": "Номер социального страхования" + }, + "passportNumber": { + "message": "Номер паспорта" + }, + "licenseNumber": { + "message": "ИНН" + }, + "email": { + "message": "Email" + }, + "phone": { + "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": "Декабрь" + }, + "title": { + "message": "Обращение" + }, + "mr": { + "message": "Г-н" + }, + "mrs": { + "message": "Г-жа" + }, + "ms": { + "message": "Проф." + }, + "dr": { + "message": "Тов." + }, + "expirationMonth": { + "message": "Месяц" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "Удалить" + }, + "unassigned": { + "message": "Неназначенные" + }, + "noneFolder": { + "message": "Без папки", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Добавить папку" + }, + "editFolder": { + "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." + }, + "never": { + "message": "Никогда" + }, + "toggleVisibility": { + "message": "Изменить видимость" + }, + "toggleCollapse": { + "message": "Свернуть/развернуть", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Сгенерировать пароль" + }, + "checkPassword": { + "message": "Проверьте, не скомпрометирован ли пароль." + }, + "passwordExposed": { + "message": "Этот пароль был скомпрометирован $VALUE$ раз(а). Вам следует его изменить.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Этот пароль не обнаружен в известных базах утечек. Можно продолжать его использовать." + }, + "save": { + "message": "Сохранить" + }, + "cancel": { + "message": "Отмена" + }, + "canceled": { + "message": "Отменено" + }, + "close": { + "message": "Закрыть" + }, + "delete": { + "message": "Удалить" + }, + "favorite": { + "message": "Избранный" + }, + "unfavorite": { + "message": "Удалить из избранного" + }, + "edit": { + "message": "Изменить" + }, + "searchCollection": { + "message": "Поиск в коллекции" + }, + "searchFolder": { + "message": "Поиск в папке" + }, + "searchFavorites": { + "message": "Поиск в избранном" + }, + "searchType": { + "message": "Поиск по типу", + "description": "Search item type" + }, + "searchVault": { + "message": "Поиск в хранилище" + }, + "allItems": { + "message": "Все элементы" + }, + "favorites": { + "message": "Избранные" + }, + "types": { + "message": "Типы элементов" + }, + "typeLogin": { + "message": "Логин" + }, + "typeCard": { + "message": "Карта" + }, + "typeIdentity": { + "message": "Личная информация" + }, + "typeSecureNote": { + "message": "Защищенная заметка" + }, + "typeLoginPlural": { + "message": "Логины" + }, + "typeCardPlural": { + "message": "Карты" + }, + "typeIdentityPlural": { + "message": "Личная информация" + }, + "typeSecureNotePlural": { + "message": "Защищенные заметки" + }, + "folders": { + "message": "Папки" + }, + "collections": { + "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": "Страна" + }, + "shared": { + "message": "Общие" + }, + "attachments": { + "message": "Вложения" + }, + "select": { + "message": "Выбрать" + }, + "addItem": { + "message": "Добавить элемент" + }, + "editItem": { + "message": "Изменение элемента" + }, + "viewItem": { + "message": "Просмотр элемента" + }, + "ex": { + "message": "напр.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Прочее" + }, + "share": { + "message": "Поделиться" + }, + "moveToOrganization": { + "message": "Переместить в организацию" + }, + "valueCopied": { + "message": "$VALUE$ скопирован(о)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Скопировать значение", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Скопировать пароль", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Скопировать имя пользователя", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Скопировать номер", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Скопировать код безопасности", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Скопировать URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Хранилище" + }, + "vault": { + "message": "Хранилище" + }, + "moveSelectedToOrg": { + "message": "Переместить выбранное в организацию" + }, + "deleteSelected": { + "message": "Удалить выбранное" + }, + "moveSelected": { + "message": "Переместить выбранное" + }, + "selectAll": { + "message": "Выбрать все" + }, + "unselectAll": { + "message": "Отменить выбор" + }, + "launch": { + "message": "Перейти" + }, + "newAttachment": { + "message": "Добавить новое вложение" + }, + "deletedAttachment": { + "message": "Вложение удалено" + }, + "deleteAttachmentConfirmation": { + "message": "Вы действительно хотите удалить это вложение?" + }, + "attachmentSaved": { + "message": "Вложение сохранено." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Выберите файл." + }, + "maxFileSize": { + "message": "Максимальный размер файла 500 МБ." + }, + "updateKey": { + "message": "Вы не можете использовать эту функцию, пока не обновите свой ключ шифрования." + }, + "addedItem": { + "message": "Элемент добавлен" + }, + "editedItem": { + "message": "Элемент изменен" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ перемещен в $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Выбранные элементы перемещены в $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Удалить элемент" + }, + "deleteFolder": { + "message": "Удалить папку" + }, + "deleteAttachment": { + "message": "Удалить вложение" + }, + "deleteItemConfirmation": { + "message": "Вы действительно хотите отправить в корзину?" + }, + "deletedItem": { + "message": "Элемент удален" + }, + "deletedItems": { + "message": "Элементы удалены" + }, + "movedItems": { + "message": "Элементы перемещены" + }, + "overwritePasswordConfirmation": { + "message": "Вы хотите перезаписать текущий пароль?" + }, + "editedFolder": { + "message": "Папка отредактирована" + }, + "addedFolder": { + "message": "Папка добавлена" + }, + "deleteFolderConfirmation": { + "message": "Вы хотите удалить эту папку?" + }, + "deletedFolder": { + "message": "Папка удалена" + }, + "loggedOut": { + "message": "Вы вышли из хранилища" + }, + "loginExpired": { + "message": "Истек срок действия вашей сессии." + }, + "logOutConfirmation": { + "message": "Вы действительно хотите выйти?" + }, + "logOut": { + "message": "Выйти" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Нет" + }, + "loginOrCreateNewAccount": { + "message": "Войдите или создайте новый аккаунт для доступа к вашему защищенному хранилищу." + }, + "createAccount": { + "message": "Создать аккаунт" + }, + "logIn": { + "message": "Войти" + }, + "submit": { + "message": "Подтвердить" + }, + "emailAddressDesc": { + "message": "Адрес электронной почты будет использоваться для входа." + }, + "yourName": { + "message": "Ваше имя" + }, + "yourNameDesc": { + "message": "Как вас называть?" + }, + "masterPass": { + "message": "Мастер-пароль" + }, + "masterPassDesc": { + "message": "Мастер-пароль – это ключ к вашему защищенному хранилищу. Он очень важен, поэтому не забывайте его. Восстановить мастер-пароль невозможно." + }, + "masterPassHintDesc": { + "message": "Подсказка к мастер-паролю может помочь вам его вспомнить." + }, + "reTypeMasterPass": { + "message": "Введите мастер-пароль повторно" + }, + "masterPassHint": { + "message": "Подсказка к мастер-паролю (необяз.)" + }, + "masterPassHintLabel": { + "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": "Мы отправили вам email с подсказкой к мастер-паролю." + }, + "unexpectedError": { + "message": "Произошла непредвиденная ошибка." + }, + "emailAddress": { + "message": "Адрес email" + }, + "yourVaultIsLocked": { + "message": "Ваше хранилище заблокировано. Для продолжения введите мастер-пароль." + }, + "unlock": { + "message": "Разблокировать" + }, + "loggedInAsEmailOn": { + "message": "Выполнен вход на $HOSTNAME$ как $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Неверный мастер-пароль" + }, + "lockNow": { + "message": "Заблокировать сейчас" + }, + "noItemsInList": { + "message": "Нет элементов для отображения." + }, + "noCollectionsInList": { + "message": "Нет коллекций для отображения." + }, + "noGroupsInList": { + "message": "Нет групп для отображения." + }, + "noUsersInList": { + "message": "Нет пользователей для отображения." + }, + "noEventsInList": { + "message": "Нет событий для отображения." + }, + "newOrganization": { + "message": "Новая организация" + }, + "noOrganizationsList": { + "message": "Вы не являетесь членом какой-либо организации. Организации позволяют безопасно обмениваться элементами с другими пользователями." + }, + "versionNumber": { + "message": "Версия $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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-порт компьютера. Если у ключа есть кнопка, нажмите ее." + }, + "loginUnavailable": { + "message": "Вход недоступен" + }, + "noTwoStepProviders": { + "message": "У этого аккаунта включена двухфакторная аутентификация, однако ни один из настроенных вариантов не поддерживается этим веб-браузером." + }, + "noTwoStepProviders2": { + "message": "Используйте поддерживаемый веб-браузер (например Chrome) и/или добавьте дополнительные варианты аутентификации, которые поддерживаются в веб-браузерах (например приложение-аутентификатор)." + }, + "twoStepOptions": { + "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, 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." + }, + "u2fDesc": { + "message": "Используйте любой защищенный ключ FIDO U2F для доступа к вашему аккаунту." + }, + "u2fTitle": { + "message": "Ключ безопасности FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Используйте любой ключ безопасности с поддержкой WebAuthn для доступа к своей учетной записи." + }, + "webAuthnMigrated": { + "message": "(Перенесено из FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Коды подтверждения будут отправлены вам по электронной почте." + }, + "continue": { + "message": "Продолжить" + }, + "organization": { + "message": "Организация" + }, + "organizations": { + "message": "Организации" + }, + "moveToOrgDesc": { + "message": "Выберите организацию, в которую вы хотите переместить этот элемент. При перемещении в организацию право собственности на элемент переходит к этой организации. Вы больше не будете прямым владельцем этого элемента после его перемещения." + }, + "moveManyToOrgDesc": { + "message": "Выберите организацию, в которую вы хотите переместить эти элементы. При перемещении в организацию право собственности на элементы переходит к этой организации. Вы больше не будете прямым владельцем этих элементов после их перемещения." + }, + "collectionsDesc": { + "message": "Отредактируйте коллекции, с которыми совместно используется этот элемент. Данный элемент смогут видеть только пользователи организации, имеющие доступ к этим коллекциям." + }, + "deleteSelectedItemsDesc": { + "message": "Выбрано элементов для удаления: $COUNT$. Вы действительно хотите удалить все эти элементы?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Выберите папку, в которую вы хотите переместить выбранные элементы ($COUNT$ шт.).", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Вы выбрали $COUNT$ элемента(-ов). $MOVEABLE_COUNT$ элемента(-ов) могут быть перемещены в организацию, $NONMOVEABLE_COUNT$ не могут.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Код подтверждения (TOTP)" + }, + "copyVerificationCode": { + "message": "Скопировать код подтверждения" + }, + "warning": { + "message": "Предупреждение" + }, + "confirmVaultExport": { + "message": "Подтвердить экспорт хранилища" + }, + "exportWarningDesc": { + "message": "Экспортируемый файл содержит данные вашего хранилища в незашифрованном формате. Его не следует хранить или отправлять по небезопасным каналам (например по электронной почте). Удалите его сразу после использования." + }, + "encExportKeyWarningDesc": { + "message": "При экспорте данные шифруются при помощи ключа шифрования учетной записи. Если вы решите сменить ключ шифрования, вам следует экспортировать данные повторно, поскольку вы не сможете расшифровать этот файл экспорта." + }, + "encExportAccountWarningDesc": { + "message": "Ключи шифрования уникальны для каждой учетной записи Bitwarden, поэтому нельзя импортировать зашифрованное хранилище в другой аккаунт." + }, + "export": { + "message": "Экспорт" + }, + "exportVault": { + "message": "Экспортировать хранилище" + }, + "fileFormat": { + "message": "Формат файла" + }, + "exportSuccess": { + "message": "Данные вашего хранилища экспортированы." + }, + "passwordGenerator": { + "message": "Генератор паролей" + }, + "minComplexityScore": { + "message": "Минимальный уровень сложности" + }, + "minNumbers": { + "message": "Минимум цифр" + }, + "minSpecial": { + "message": "Минимум символов", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Избегать неоднозначных символов" + }, + "regeneratePassword": { + "message": "Создать новый пароль" + }, + "length": { + "message": "Длина" + }, + "numWords": { + "message": "Количество слов" + }, + "wordSeparator": { + "message": "Разделитель слов" + }, + "capitalize": { + "message": "С заглавной буквы", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Добавить цифру" + }, + "passwordHistory": { + "message": "История паролей" + }, + "noPasswordsInList": { + "message": "Нет паролей для отображения." + }, + "clear": { + "message": "Очистить", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Аккаунт обновлен" + }, + "changeEmail": { + "message": "Изменение email" + }, + "changeEmailTwoFactorWarning": { + "message": "В результате будет изменен адрес email вашего аккаунта. Это не приведет к изменению адреса электронной почты, используемого для двухфакторной аутентификации. Вы можете изменить этот адрес электронной почты в настройках двухэтапного входа." + }, + "newEmail": { + "message": "Новый email" + }, + "code": { + "message": "Код" + }, + "changeEmailDesc": { + "message": "Мы отправили код подтверждения на $EMAIL$. Проверьте свою почту и введите ниже код из письма, чтобы завершить изменение адреса электронной почты.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "В случае продолжения, ваша сессия будет завершена и вам будет предложено авторизоваться повторно. Сессии на других устройствах могут оставаться активными в течение одного часа." + }, + "emailChanged": { + "message": "Email изменен" + }, + "logBackIn": { + "message": "Пожалуйста, войдите снова." + }, + "logBackInOthersToo": { + "message": "Пожалуйста, войдите снова. Если вы используете другие приложения Bitwarden, выполните на них выход и повторный вход." + }, + "changeMasterPassword": { + "message": "Изменение мастер-пароля" + }, + "masterPasswordChanged": { + "message": "Мастер-пароль изменен" + }, + "currentMasterPass": { + "message": "Текущий мастер-пароль" + }, + "newMasterPass": { + "message": "Новый мастер-пароль" + }, + "confirmNewMasterPass": { + "message": "Подтвердите новый мастер-пароль" + }, + "encKeySettings": { + "message": "Настройки ключа шифрования" + }, + "kdfAlgorithm": { + "message": "Алгоритм KDF" + }, + "kdfIterations": { + "message": "Итерации KDF" + }, + "kdfIterationsDesc": { + "message": "Большее число итераций KDF повысит защиту мастер-пароля от атаки перебором. Рекомендуем значение $VALUE$ или больше.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Слишком большое число итераций KDF может существенно замедлить вход (и разблокировку) на устройствах со слабыми процессорами. Рекомендуется последовательно увеличивать значение с шагом $INCREMENT$, проверяя результат на всех ваших устройствах.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Изменить KDF" + }, + "encKeySettingsChanged": { + "message": "Настройки ключа шифрования изменены" + }, + "dangerZone": { + "message": "Опасная зона" + }, + "dangerZoneDesc": { + "message": "Осторожно, эти действия необратимы!" + }, + "deauthorizeSessions": { + "message": "Деавторизовать сессии" + }, + "deauthorizeSessionsDesc": { + "message": "Беспокоитесь о том, что ваша учетная запись авторизована на другом устройстве? Чтобы деавторизовать все ранее использовавшиеся компьютеры или устройства, выполните действие ниже. Этот шаг безопасности рекомендуется, если вы ранее использовали общедоступный компьютер или случайно сохранили свой пароль на устройстве, которое вам не принадлежит. Это действие также очистит все ранее сохраненные сессии двухфакторной аутентификации." + }, + "deauthorizeSessionsWarning": { + "message": "В случае продолжения, ваша сессия будет завершена и вам будет предложено авторизоваться повторно. При активированной двухфакторной аутентификации вам потребуется ввести код. Сессии на других устройствах могут оставаться активными в течение одного часа." + }, + "sessionsDeauthorized": { + "message": "Все сессии деавторизованы" + }, + "purgeVault": { + "message": "Очистить хранилище" + }, + "purgedOrganizationVault": { + "message": "Хранилище организации очищено." + }, + "vaultAccessedByProvider": { + "message": "Хранилище, к которому имеет доступ поставщик." + }, + "purgeVaultDesc": { + "message": "Чтобы удалить все элементы и папки из вашего хранилища, выполните следующие действия. Элементы, принадлежащие организации, с которой вы делитесь, удалены не будут." + }, + "purgeOrgVaultDesc": { + "message": "Для удаления всех элементов в хранилище организации выполните следующие действия." + }, + "purgeVaultWarning": { + "message": "Очистка вашего хранилища необратима. Ее нельзя отменить." + }, + "vaultPurged": { + "message": "Ваше хранилище очищено." + }, + "deleteAccount": { + "message": "Удалить учетную запись" + }, + "deleteAccountDesc": { + "message": "Чтобы удалить учетную запись и все связанные с ней данные, выполните действие ниже." + }, + "deleteAccountWarning": { + "message": "Удаление вашей учетной записи необратимо. Его нельзя отменить." + }, + "accountDeleted": { + "message": "Учетная запись удалена" + }, + "accountDeletedDesc": { + "message": "Ваша учетная запись была закрыта и все связанные с ней данные были удалены." + }, + "myAccount": { + "message": "Моя учетная запись" + }, + "tools": { + "message": "Инструменты" + }, + "importData": { + "message": "Импорт данных" + }, + "importError": { + "message": "Ошибка импорта" + }, + "importErrorDesc": { + "message": "Возникла проблема с данными, которые вы пытались импортировать. Пожалуйста, исправьте ошибки, перечисленные ниже в вашем исходном файле и попробуйте еще раз." + }, + "importSuccess": { + "message": "Данные были успешно импортированы в ваше хранилище." + }, + "importWarning": { + "message": "Вы импортируете данные в $ORGANIZATION$. Члены этой организации могут получить доступ к вашим данным. Хотите продолжить?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Формат данных некорректен. Проверьте файл импорта и повторите попытку." + }, + "importNothingError": { + "message": "Ничего не было импортировано." + }, + "importEncKeyError": { + "message": "Ошибка при расшифровке экспортированного файла. Ваш ключ шифрования не совпадает с ключом шифрования, используемым для экспорта данных." + }, + "selectFormat": { + "message": "Выберите формат файла импорта" + }, + "selectImportFile": { + "message": "Выберите файл импорта" + }, + "orCopyPasteFileContents": { + "message": "или скопируйте/вставьте содержимое файла импорта" + }, + "instructionsFor": { + "message": "Инструкции для $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Опции" + }, + "optionsDesc": { + "message": "Настройте возможности вашего веб-хранилища." + }, + "optionsUpdated": { + "message": "Настройки обновлены" + }, + "language": { + "message": "Язык" + }, + "languageDesc": { + "message": "Изменение языка, используемого веб-хранилищем." + }, + "disableIcons": { + "message": "Отключить значки веб-сайтов" + }, + "disableIconsDesc": { + "message": "Значки веб-сайтов отображаются рядом с каждым элементом в вашем хранилище." + }, + "enableGravatars": { + "message": "Включить Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Использовать аватары с сайта gravatar.com." + }, + "enableFullWidth": { + "message": "Активировать отображение на всю ширину", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Разрешить веб-хранилищу использовать всю ширину окна браузера." + }, + "default": { + "message": "По умолчанию" + }, + "domainRules": { + "message": "Доменные правила" + }, + "domainRulesDesc": { + "message": "Если у вас есть тот же логин на нескольких разных доменах веб-сайта, вы можете отметить веб-сайт как \"эквивалентный\". \"Глобальные\" - это домены, созданные для вас Bitwarden." + }, + "globalEqDomains": { + "message": "Глобальные эквивалентные домены" + }, + "customEqDomains": { + "message": "Пользовательские эквивалентные домены" + }, + "exclude": { + "message": "Исключить" + }, + "include": { + "message": "Включить" + }, + "customize": { + "message": "Настроить" + }, + "newCustomDomain": { + "message": "Новый пользовательский домен" + }, + "newCustomDomainDesc": { + "message": "Введите список доменов, разделенных запятыми. Допускаются только базовые домены. Не вводите субдомены. Например, вводите \"google.com\" вместо \"www.google.com\". Также вы можете ввести \"androidapp://package.name\", чтобы связать приложение Android с другими доменами веб-сайта." + }, + "customDomainX": { + "message": "Пользовательский домен $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Домены обновлены" + }, + "twoStepLogin": { + "message": "Двухфакторная аутентификация" + }, + "twoStepLoginDesc": { + "message": "Защитите свою учетную запись, при помощи дополнительного шага при авторизации." + }, + "twoStepLoginOrganizationDesc": { + "message": "Требовать двухфакторную аутентификацию для пользователей вашей организации, путем конфигурации ее на уровне организации." + }, + "twoStepLoginRecoveryWarning": { + "message": "При включении двухфакторной аутентификации вы можете навсегда потерять доступ к вашей учетной записи Bitwarden. Код восстановления позволяет получить доступ к вашему аккаунту в случае, если вы больше не можете использовать свой обычный метод двухфакторной аутентификации (например, при потере устройства). Поддержка Bitwarden не сможет вам помочь, если вы потеряете доступ к своей учетной записи. Мы рекомендуем вам записать или распечатать код восстановления и сохранить его в надежном месте." + }, + "viewRecoveryCode": { + "message": "Просмотр кода восстановления" + }, + "providers": { + "message": "Провайдеры", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Включить" + }, + "enabled": { + "message": "Включено" + }, + "premium": { + "message": "Премиум", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Премиум" + }, + "premiumRequired": { + "message": "Необходим Премиум" + }, + "premiumRequiredDesc": { + "message": "Для использования этой функции требуется Премиум." + }, + "youHavePremiumAccess": { + "message": "У вас есть Премиум" + }, + "alreadyPremiumFromOrg": { + "message": "У вас уже есть доступ к Премиум, так как вы являетесь членом организации." + }, + "manage": { + "message": "Управление" + }, + "disable": { + "message": "Выключить" + }, + "twoStepLoginProviderEnabled": { + "message": "Этот провайдер двухфакторной аутентификации включен для вашего аккаунта." + }, + "twoStepLoginAuthDesc": { + "message": "Для изменения настроек двухфакторной аутентификации введите мастер-пароль." + }, + "twoStepAuthenticatorDesc": { + "message": "Выполните следующие шаги, чтобы настроить двухфакторную аутентификацию с помощью приложения-аутетификатора:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Загрузите приложение-аутентификатор" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Нужно приложение-аутентификатор? Загрузите одно из следующих" + }, + "iosDevices": { + "message": "Устройства iOS" + }, + "androidDevices": { + "message": "Устройства Android" + }, + "windowsDevices": { + "message": "Устройства Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Это рекомендуемые приложения, однако, будут работать и другие приложения-аутентификаторы." + }, + "twoStepAuthenticatorScanCode": { + "message": "Отсканируйте этот QR-код вашим приложением-аутентификатором" + }, + "key": { + "message": "Ключ" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Введите полученный 6-значный код подтверждения из вашего приложения-аутентификатора" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Если вам нужно добавить его на другое устройство, ниже указан QR-код для приложения-аутентификатора." + }, + "twoStepDisableDesc": { + "message": "Вы действительно хотите отключить этого провайдера двухфакторной аутентификации?" + }, + "twoStepDisabled": { + "message": "Провайдер двухфакторной аутентификации отключен." + }, + "twoFactorYubikeyAdd": { + "message": "Добавить в аккаунт новый YubiKey" + }, + "twoFactorYubikeyPlugIn": { + "message": "Вставьте YubiKey в USB-порт компьютера." + }, + "twoFactorYubikeySelectKey": { + "message": "Выберите первое пустое поле ввода YubiKey ниже." + }, + "twoFactorYubikeyTouchButton": { + "message": "Нажмите кнопку YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Сохранить форму." + }, + "twoFactorYubikeyWarning": { + "message": "Из-за ограничений платформы, YubiKey можно использовать не во всех приложениях Bitwarden. Если использовать YubiKey не удается, то включите другого провайдера двухфакторной аутентификации, чтобы иметь доступ к своему аккаунту. Поддерживаемые платформы:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Веб-хранилище, приложение для компьютера, интерфейс командной строки (CLI) и все расширения браузеров на устройстве с USB-портом, совместимым с YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Мобильные приложения на устройстве с NFC или USB-портом, совместимыми с YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Ключ U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "$INDEX$ ключ(-а) WebAuthn", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Поддержка NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Один из моих ключей поддерживает NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Если один из ваших YubiKey поддерживает NFC (например YubiKey NEO), то при обнаружении доступности NFC на мобильном устройстве вам будет выдан запрос." + }, + "yubikeysUpdated": { + "message": "YubiKey обновлены" + }, + "disableAllKeys": { + "message": "Отключить все ключи" + }, + "twoFactorDuoDesc": { + "message": "Введите информацию о приложении Bitwarden из панели администратора Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Ключ интеграции" + }, + "twoFactorDuoSecretKey": { + "message": "Секретный ключ" + }, + "twoFactorDuoApiHostname": { + "message": "Имя хоста API" + }, + "twoFactorEmailDesc": { + "message": "Выполните следующие шаги, чтобы настроить двухфакторную аутентификацию по email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Введите адрес email, на который вы хотите получать коды подтверждения" + }, + "twoFactorEmailEnterCode": { + "message": "Введите полученный в письме 6-значный код подтверждения" + }, + "sendEmail": { + "message": "Отправить email" + }, + "twoFactorU2fAdd": { + "message": "Добавьте ключ безопасности FIDO U2F в свой аккаунт" + }, + "removeU2fConfirmation": { + "message": "Вы действительно хотите удалить этот ключ безопасности?" + }, + "twoFactorWebAuthnAdd": { + "message": "Добавить ключ безопасности WebAuthn в свою учетную запись" + }, + "readKey": { + "message": "Читать ключ" + }, + "keyCompromised": { + "message": "Ключ скомпрометирован." + }, + "twoFactorU2fGiveName": { + "message": "Присвойте ключу безопасности понятное имя, чтобы его можно было легко идентифицировать." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Подключите ключ безопасности к USB-порту компьютера и нажмите кнопку 'Прочитать ключ'." + }, + "twoFactorU2fTouchButton": { + "message": "Если у ключа безопасности есть кнопка, нажмите ее." + }, + "twoFactorU2fSaveForm": { + "message": "Сохранить форму." + }, + "twoFactorU2fWarning": { + "message": "Из-за ограничений платформы, FIDO U2F можно использовать не во всех приложениях Bitwarden. Если использовать FIDO U2F не удается, то включите другого провайдера двухфакторной аутентификации, чтобы иметь доступ к своему аккаунту. Поддерживаемые платформы:" + }, + "twoFactorU2fSupportWeb": { + "message": "Веб-хранилище и расширения браузера на компьютере/ноутбуке с браузером с поддержкой U2F (Chrome, Opera, Vivaldi или Firefox с включенным FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "В ожидании нажатия кнопки на ключе безопасности" + }, + "twoFactorU2fClickSave": { + "message": "Нажмите кнопку 'Сохранить' ниже, чтобы включить этот ключ безопасности для двухфакторной аутентификации." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Не удалось прочитать ключ безопасности. Попробуйте снова." + }, + "twoFactorWebAuthnWarning": { + "message": "Из-за ограничений платформы WebAuthn нельзя использовать во всех приложениях Bitwarden. Вы должны включить другого провайдера двухфакторной аутентификации, чтобы иметь возможность получить доступ к своей учетной записи, когда WebAuthn не может быть использован. Поддерживаемые платформы:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Веб-хранилище и расширения браузера на компьютере/ноутбуке с браузером с поддержкой WebAuthn (Chrome, Opera, Vivaldi или Firefox с включенным FIDO U2F)." + }, + "twoFactorRecoveryYourCode": { + "message": "Ваш код восстановления двухфакторной аутентификации Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Вы еще не включили ни одного провайдера двухфакторной аутентификации. После включения вернитесь сюда и получите свой код восстановления." + }, + "printCode": { + "message": "Печать кода", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Отчеты" + }, + "reportsDesc": { + "message": "Выявите и устраните проблемы с безопасностью в ваших онлайн-аккаунтах, перейдя по ссылкам на отчеты ниже." + }, + "unsecuredWebsitesReport": { + "message": "Небезопасные сайты" + }, + "unsecuredWebsitesReportDesc": { + "message": "URL-адреса, начинающиеся с http://, не используют оптимальный способ шифрования. Измените URI для логинов этих аккаунтов на https:// для более безопасного использования интернета." + }, + "unsecuredWebsitesFound": { + "message": "Найдены незащищенные сайты" + }, + "unsecuredWebsitesFoundDesc": { + "message": "В хранилище обнаружены элементы ($COUNT$ шт.) с незащищенными URI. Вам следует изменить их схему URI на https://, если сайт это позволяет.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "В вашем хранилище нет элементов с незащищенными URI." + }, + "inactive2faReport": { + "message": "Неактивная двухфакторная аутентификация" + }, + "inactive2faReportDesc": { + "message": "Двухфакторная аутентификация добавляет уровень защиты для ваших аккаунтов. Включите ее для этих учетных записей с помощью Bitwarden Authenticator или используйте альтернативный метод." + }, + "inactive2faFound": { + "message": "Найдены логины без 2ФА" + }, + "inactive2faFoundDesc": { + "message": "В хранилище обнаружены сайты ($COUNT$ шт.), у которых может быть не настроена двухфакторная аутентификация (согласно 2fa.directory). Для дополнительной защиты этих аккаунтов следует включить двухфакторную аутентификацию.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "В вашем хранилище нет сайтов с ненастроенной двухфакторной аутентификацией." + }, + "instructions": { + "message": "Инструкции" + }, + "exposedPasswordsReport": { + "message": "Скомпрометированные пароли" + }, + "exposedPasswordsReportDesc": { + "message": "Скомпрометированные в результате утечки данных пароли - легкая мишень для злоумышленников. Измените эти пароли, чтобы предотвратить возможные взломы." + }, + "exposedPasswordsFound": { + "message": "Найдены скомпрометированные пароли" + }, + "exposedPasswordsFoundDesc": { + "message": "В хранилище обнаружены элементы ($COUNT$ шт.), пароли которых скомпрометированы. Вам следует задать для них новые пароли.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "В вашем хранилище нет скомпрометированных паролей." + }, + "checkExposedPasswords": { + "message": "Проверить пароли на компрометацию" + }, + "exposedXTimes": { + "message": "Скомпрометирован $COUNT$ раз(а)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Слабые пароли" + }, + "weakPasswordsReportDesc": { + "message": "Слабые пароли могут быть легко подобраны злоумышленниками. Измените эти пароли на надежные при помощи генератора паролей." + }, + "weakPasswordsFound": { + "message": "Обнаружены слабые пароли" + }, + "weakPasswordsFoundDesc": { + "message": "В хранилище есть элементы ($COUNT$ шт.) с ненадежными паролями. Следует задать для них более сильные пароли.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "В вашем хранилище нет слабых паролей." + }, + "reusedPasswordsReport": { + "message": "Повторно использованные пароли" + }, + "reusedPasswordsReportDesc": { + "message": "Повторное использование паролей облегчает злоумышленникам взлом нескольких учетных записей. Измените эти пароли и сделайте каждый из них уникальным." + }, + "reusedPasswordsFound": { + "message": "Обнаружены повторно использованные пароли" + }, + "reusedPasswordsFoundDesc": { + "message": "В хранилище есть элементы ($COUNT$ шт.) с повторно использованными паролями. Следует изменить их на уникальные.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "В вашем хранилище нет повторно использованных паролей." + }, + "reusedXTimes": { + "message": "Повторно использован $COUNT$ раз(а)", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Утечка данных" + }, + "breachDesc": { + "message": "Взломанные аккаунты могут раскрыть вашу личную информацию. Защитите их, включив 2ФА или создав более надежный пароль." + }, + "breachCheckUsernameEmail": { + "message": "Проверьте имена пользователей или адреса email, которые вы используете." + }, + "checkBreaches": { + "message": "Проверить в базах утечек" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ не найден в известных базах утечек.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Хорошие новости", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ найден в $COUNT$ различных онлайн-базах утечек.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Обнаружена утечка аккаунтов" + }, + "compromisedData": { + "message": "Скомпрометированные данные" + }, + "website": { + "message": "Веб-сайт" + }, + "affectedUsers": { + "message": "Затронутых пользователей" + }, + "breachOccurred": { + "message": "Произошла утечка" + }, + "breachReported": { + "message": "Сообщено об утечке" + }, + "reportError": { + "message": "При загрузке отчета произошла ошибка. Попробуйте еще раз" + }, + "billing": { + "message": "Оплата" + }, + "accountCredit": { + "message": "Средства аккаунта", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Баланс аккаунта", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Пополнить счет", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Сумма", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Внесенный платеж отобразится после его обработки. Некоторые способы оплаты могут занять больше времени, чем другие." + }, + "makeSureEnoughCredit": { + "message": "Убедитесь, что на вашем счету достаточно средств для этой покупки. Если на вашем счете недостаточно средств, то для покрытия разницы будет использован ваш метод оплаты по умолчанию. Вы можете добавить денежные средства в свой аккаунт на странице оплаты." + }, + "creditAppliedDesc": { + "message": "Средства на вашего аккаунта используются для совершения платежей. Любой доступный остаток будет автоматически использован для оплаты счетов, выставленных этому аккаунту." + }, + "goPremium": { + "message": "Перейти на Премиум", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Вы обновились до Премиум." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Обновите свою учетную запись до Премиум и разблокируйте великолепные дополнительные возможности." + }, + "premiumSignUpStorage": { + "message": "1 ГБ зашифрованного хранилища для вложенных файлов." + }, + "premiumSignUpTwoStep": { + "message": "Дополнительные варианты двухфакторной аутентификации, такие как YubiKey, FIDO U2F и Duo." + }, + "premiumSignUpEmergency": { + "message": "Экстренный доступ" + }, + "premiumSignUpReports": { + "message": "Гигиена паролей, здоровье аккаунта и отчеты об утечках данных для обеспечения безопасности вашего хранилища." + }, + "premiumSignUpTotp": { + "message": "TOTP-генератор кодов (2ФА) для логинов в хранилище." + }, + "premiumSignUpSupport": { + "message": "Приоритетная поддержка." + }, + "premiumSignUpFuture": { + "message": "Все будущие функции Премиум. Их будет больше!" + }, + "premiumPrice": { + "message": "Всего лишь $PRICE$ /в год!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Дополнения" + }, + "premiumAccess": { + "message": "Премиум-доступ" + }, + "premiumAccessDesc": { + "message": "Вы можете добавить премиум-доступ всем членам вашей организации за $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Дополнительное хранилище (ГБ)" + }, + "additionalStorageGbDesc": { + "message": "# дополнительных ГБ" + }, + "additionalStorageIntervalDesc": { + "message": "Ваш план включает $SIZE$ зашифрованного файлового хранилища. Вы можете добавить дополнительное место по цене $PRICE$ за ГБ /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Итого" + }, + "total": { + "message": "Всего" + }, + "year": { + "message": "год" + }, + "month": { + "message": "месяц" + }, + "monthAbbr": { + "message": "мес.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Ваш метод оплаты будет активирован немедленно и использоваться ежегодно. Вы можете отменить это в любой момент." + }, + "paymentCharged": { + "message": "Ваш метод оплаты будет активирован немедленно и использоваться каждый $INTERVAL$. Вы можете отменить это в любой момент.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Ваш план включает семидневную бесплатную пробную версию. Ваш метод оплаты не будет использован до окончания пробной версии. Оплата будет выполняться каждый $INTERVAL$. Вы можете отказаться в любое время." + }, + "paymentInformation": { + "message": "Платежная информация" + }, + "billingInformation": { + "message": "Платежная информация" + }, + "creditCard": { + "message": "Кредитная карта" + }, + "paypalClickSubmit": { + "message": "Нажмите кнопку PayPal, чтобы войти в свою учетную запись PayPal, затем нажмите кнопку 'Подтвердить' ниже, чтобы продолжить." + }, + "cancelSubscription": { + "message": "Отменить подписку" + }, + "subscriptionCanceled": { + "message": "Подписка отменена." + }, + "pendingCancellation": { + "message": "Ожидание отмены" + }, + "subscriptionPendingCanceled": { + "message": "Подписка была помечена для отмены в конце текущего платежного периода." + }, + "reinstateSubscription": { + "message": "Восстановить подписку" + }, + "reinstateConfirmation": { + "message": "Вы действительно хотите удалить ожидающий запрос на аннулирование и восстановить свою подписку?" + }, + "reinstated": { + "message": "Подписка восстановлена." + }, + "cancelConfirmation": { + "message": "Вы действительно хотите отменить? Вы потеряете доступ ко всем возможностям этой подписки в конце этого платежного периода." + }, + "canceledSubscription": { + "message": "Подписка отменена." + }, + "neverExpires": { + "message": "Никогда не истекает" + }, + "status": { + "message": "Статус" + }, + "nextCharge": { + "message": "Следующий платеж" + }, + "details": { + "message": "Подробности" + }, + "downloadLicense": { + "message": "Загрузить лицензию" + }, + "updateLicense": { + "message": "Обновить лицензию" + }, + "updatedLicense": { + "message": "Лицензия обновлена" + }, + "manageSubscription": { + "message": "Управление подпиской" + }, + "storage": { + "message": "Хранилище" + }, + "addStorage": { + "message": "Добавить хранилище" + }, + "removeStorage": { + "message": "Удалить хранилище" + }, + "subscriptionStorage": { + "message": "Ваша подписка включает в общей сложности $MAX_STORAGE$ ГБ зашифрованного файлового хранилища. На текущий момент использовано $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Способ оплаты" + }, + "noPaymentMethod": { + "message": "Нет сохраненных способов оплаты." + }, + "addPaymentMethod": { + "message": "Добавить способ оплаты" + }, + "changePaymentMethod": { + "message": "Изменить способ оплаты" + }, + "invoices": { + "message": "Счета" + }, + "noInvoices": { + "message": "Нет счетов." + }, + "paid": { + "message": "Оплачено", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Не оплачено", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Транзакции", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Нет транзакций." + }, + "chargeNoun": { + "message": "Списание", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Возврат", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Платежи будут отображаться в вашей выписке как $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "ГБ хранилища для добавления" + }, + "gbStorageRemove": { + "message": "ГБ хранилища для удаления" + }, + "storageAddNote": { + "message": "Добавление хранилища приведет к корректировке итоговых счетов и немедленному взиманию платы с вашего метода оплаты. Первый платеж будет пропорционален оставшейся части текущего платежного периода." + }, + "storageRemoveNote": { + "message": "Удаление хранилища приведет к корректировке ваших итоговых счетов. Излишне уплаченные средства будут пропорционально перенесены на ваш следующий платежный период." + }, + "adjustedStorage": { + "message": "Скорректировано $AMOUNT$ ГБ хранилища.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Обратиться в службу поддержки" + }, + "updatedPaymentMethod": { + "message": "Способ оплаты обновлен." + }, + "purchasePremium": { + "message": "Купить Премиум" + }, + "licenseFile": { + "message": "Файл лицензии" + }, + "licenseFileDesc": { + "message": "Ваш файл лицензии будет иметь имя $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Для обновления своей учетной записи до Премиум, необходимо загрузить действительный файл лицензии." + }, + "uploadLicenseFileOrg": { + "message": "Для создания организации размещенной на локальном хостинге, необходимо загрузить действительный файл лицензии." + }, + "accountEmailMustBeVerified": { + "message": "Адрес email вашей учетной записи должен быть подтвержден." + }, + "newOrganizationDesc": { + "message": "Организации позволяют совместно использовать части своего хранилища с другими, а также управлять связанными пользователями для определенного объекта, такого как семья, небольшая команда или крупная компания." + }, + "generalInformation": { + "message": "Общая информация" + }, + "organizationName": { + "message": "Название организации" + }, + "accountOwnedBusiness": { + "message": "Этот аккаунт принадлежит компании." + }, + "billingEmail": { + "message": "Email для выставления счетов" + }, + "businessName": { + "message": "Название компании" + }, + "chooseYourPlan": { + "message": "Выберите план" + }, + "users": { + "message": "Пользователи" + }, + "userSeats": { + "message": "Лицензированных мест" + }, + "additionalUserSeats": { + "message": "Дополнительные пользовательские лицензии" + }, + "userSeatsDesc": { + "message": "# пользовательских лицензий" + }, + "userSeatsAdditionalDesc": { + "message": "Лицензированных мест в вашем плане: $BASE_SEATS$. Вы можете добавить дополнительных пользователей по $SEAT_PRICE$ за пользователя/месяц.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Сколько лицензированных мест вам нужно? При необходимости вы можете добавить дополнительные лицензии позже." + }, + "planNameFree": { + "message": "Бесплатный", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Для тестирования или персонального использования с возможностью поделиться с другими пользователями ($COUNT$).", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Семья" + }, + "planDescFamilies": { + "message": "Для личного использования, чтобы поделиться с семьей и друзьями." + }, + "planNameTeams": { + "message": "Команда" + }, + "planDescTeams": { + "message": "Для компаний и других командных организаций." + }, + "planNameEnterprise": { + "message": "Предприятие" + }, + "planDescEnterprise": { + "message": "Для компаний и других крупных организаций." + }, + "freeForever": { + "message": "Бесплатно навсегда" + }, + "includesXUsers": { + "message": "включает $COUNT$ пользователей", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Дополнительные пользователи" + }, + "costPerUser": { + "message": "$COST$ за пользователя", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Ограничение до $COUNT$ пользователей (включая вас)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Ограничение до $COUNT$ коллекций", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Добавление и совместное использование с $COUNT$ пользователями", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Добавлять и делиться с неограниченным количеством пользователей" + }, + "createUnlimitedCollections": { + "message": "Создание неограниченных коллекций" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ зашифрованного хранилища файлов", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Локальный хостинг (опционально)" + }, + "usersGetPremium": { + "message": "Пользователи получают доступ к возможностям Премиум" + }, + "controlAccessWithGroups": { + "message": "Управление доступом пользователей с помощью групп" + }, + "syncUsersFromDirectory": { + "message": "Синхронизация пользователей и групп из каталога" + }, + "trackAuditLogs": { + "message": "Отслеживание действий пользователей с помощью журналов аудита" + }, + "enforce2faDuo": { + "message": "Принудительная 2ФА с Duo" + }, + "priorityCustomerSupport": { + "message": "Приоритетная поддержка" + }, + "xDayFreeTrial": { + "message": "$COUNT$-дневная бесплатная пробная версия, отмена в любое время", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Ежемесячно" + }, + "annually": { + "message": "Ежегодно" + }, + "basePrice": { + "message": "Базовая цена" + }, + "organizationCreated": { + "message": "Организация создана" + }, + "organizationReadyToGo": { + "message": "Ваша новая организация готова к работе!" + }, + "organizationUpgraded": { + "message": "Ваша организация была обновлена." + }, + "leave": { + "message": "Покинуть" + }, + "leaveOrganizationConfirmation": { + "message": "Вы действительно хотите покинуть эту организацию?" + }, + "leftOrganization": { + "message": "Вы покинули организацию." + }, + "defaultCollection": { + "message": "Коллекция по умолчанию" + }, + "getHelp": { + "message": "Получить помощь" + }, + "getApps": { + "message": "Получить приложения" + }, + "loggedInAs": { + "message": "Выполнен вход как" + }, + "eventLogs": { + "message": "Журнал событий" + }, + "people": { + "message": "Люди" + }, + "policies": { + "message": "Политики" + }, + "singleSignOn": { + "message": "Единый вход" + }, + "editPolicy": { + "message": "Редактировать политику" + }, + "groups": { + "message": "Группы" + }, + "newGroup": { + "message": "Новая группа" + }, + "addGroup": { + "message": "Добавить группу" + }, + "editGroup": { + "message": "Редактировать группу" + }, + "deleteGroupConfirmation": { + "message": "Вы действительно хотите удалить эту группу?" + }, + "removeUserConfirmation": { + "message": "Вы действительно хотите удалить этого пользователя?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Внимание! Этому пользователю необходим соединитель ключей для управления шифрованием. Удаление этого пользователя из вашей организации приведет к окончательному отключению его учетной записи. Это действие нельзя отменить. Вы хотите продолжить?" + }, + "externalId": { + "message": "Внешний ID" + }, + "externalIdDesc": { + "message": "Внешний идентификатор может быть использован в качестве ссылки или для связи этого ресурса с внешней системой, такой как каталог пользователя." + }, + "accessControl": { + "message": "Контроль доступа" + }, + "groupAccessAllItems": { + "message": "Эта группа может иметь доступ и изменять все элементы." + }, + "groupAccessSelectedCollections": { + "message": "Эта группа может иметь доступ только к выбранным коллекциям." + }, + "readOnly": { + "message": "Только чтение" + }, + "newCollection": { + "message": "Новая коллекция" + }, + "addCollection": { + "message": "Добавить коллекцию" + }, + "editCollection": { + "message": "Редактировать коллекцию" + }, + "deleteCollectionConfirmation": { + "message": "Вы действительно хотите удалить эту коллекцию?" + }, + "editUser": { + "message": "Редактировать пользователя" + }, + "inviteUser": { + "message": "Пригласить пользователя" + }, + "inviteUserDesc": { + "message": "Пригласите нового пользователя в свою организацию, введя ниже адрес email его аккаунта Bitwarden. Если у него пока нет аккаунта Bitwarden, ему будет предложено его создать." + }, + "inviteMultipleEmailDesc": { + "message": "Вы можете пригласить до $COUNT$ пользователей одновременно, разделяя адреса email запятыми.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Этот пользователь использует двухфакторную аутентификацию для защиты своего аккаунта." + }, + "userAccessAllItems": { + "message": "Эта пользователь может иметь доступ и изменять все элементы." + }, + "userAccessSelectedCollections": { + "message": "Этот пользователь может иметь доступ только к выбранным коллекциям." + }, + "search": { + "message": "Поиск" + }, + "invited": { + "message": "Приглашен" + }, + "accepted": { + "message": "Принято" + }, + "confirmed": { + "message": "Подтверждено" + }, + "clientOwnerEmail": { + "message": "Email владельца клиента" + }, + "owner": { + "message": "Владелец" + }, + "ownerDesc": { + "message": "Высший пользовательский уровень доступа, который позволяет управлять всеми аспектами вашей организации." + }, + "clientOwnerDesc": { + "message": "Этот пользователь должен быть независимым от поставщика. Если поставщик будет отсоединен от организации, этот пользователь сохранит право собственности на организацию." + }, + "admin": { + "message": "Администратор" + }, + "adminDesc": { + "message": "Администраторы могут получать доступ и управлять всеми элементами, коллекциями и пользователями вашей организации." + }, + "user": { + "message": "Пользователь" + }, + "userDesc": { + "message": "Обычный пользователь с доступом к коллекциям вашей организации." + }, + "manager": { + "message": "Менеджер" + }, + "managerDesc": { + "message": "Менеджеры могут получать доступ и управлять назначенными коллекциями вашей организации." + }, + "all": { + "message": "Все" + }, + "refresh": { + "message": "Обновить" + }, + "timestamp": { + "message": "Метка времени" + }, + "event": { + "message": "Событие" + }, + "unknown": { + "message": "Неизвестно" + }, + "loadMore": { + "message": "Загрузить еще" + }, + "mobile": { + "message": "Мобильный", + "description": "Mobile app" + }, + "extension": { + "message": "Расширение", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Компьютер", + "description": "Desktop app" + }, + "webVault": { + "message": "Веб-хранилище" + }, + "loggedIn": { + "message": "Вход выполнен." + }, + "changedPassword": { + "message": "Изменен пароль аккаунта." + }, + "enabledUpdated2fa": { + "message": "Двухфакторная аутентификация включена/обновлена." + }, + "disabled2fa": { + "message": "Двухфакторная аутентификация отключена." + }, + "recovered2fa": { + "message": "Аккаунт восстановлен после двухфакторной аутентификации." + }, + "failedLogin": { + "message": "Ошибка входа из-за неправильного пароля." + }, + "failedLogin2fa": { + "message": "Ошибка входа из-за некорректной двухфакторной аутентификации." + }, + "exportedVault": { + "message": "Хранилище экспортировано." + }, + "exportedOrganizationVault": { + "message": "Хранилище организации экспортировано." + }, + "editedOrgSettings": { + "message": "Настройки организации изменены." + }, + "createdItemId": { + "message": "Создан элемент $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Изменен элемент $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Удален элемент $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Элемент $ID$ перемещен в организацию.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Просмотрен элемент $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Просмотрен пароль элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Просмотрено скрытое поле элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Просмотрен код безопасности элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Скопирован пароль элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Скопировано скрытое поле элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Скопирован код безопасности элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Автоматически заполнен элемент $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Создана коллекция $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Изменена коллекция $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Удалена коллекция $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Отредактирована политика $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Создана группа $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Изменена группа $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Удалена группа $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Удален пользователь $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Создано вложение в элементе $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Удалено вложение у элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Изменены коллекции для элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Приглашен пользователь $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Подтвержден пользователь $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Изменен пользователь $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Изменена группа у пользователя $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Несвязанный SSO для пользователя $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Создана организация $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Добавлена организация $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Удалена организация $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Доступ к хранилищу организации $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Устройство" + }, + "view": { + "message": "Просмотр" + }, + "invalidDateRange": { + "message": "Недопустимый диапазон дат." + }, + "errorOccurred": { + "message": "Произошла ошибка." + }, + "userAccess": { + "message": "Доступ пользователя" + }, + "userType": { + "message": "Тип пользователя" + }, + "groupAccess": { + "message": "Доступ к группе" + }, + "groupAccessUserDesc": { + "message": "Изменить группы, в которые входит этот пользователь." + }, + "invitedUsers": { + "message": "Приглашенные пользователи." + }, + "resendInvitation": { + "message": "Пригласить повторно" + }, + "resendEmail": { + "message": "Отправить email повторно" + }, + "hasBeenReinvited": { + "message": "$USER$ был приглашен повторно.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Подтвердить" + }, + "confirmUser": { + "message": "Подтвердить пользователя" + }, + "hasBeenConfirmed": { + "message": "$USER$ был подтвержден.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Подтвердить пользователей" + }, + "usersNeedConfirmed": { + "message": "У вас есть пользователи, которые приняли приглашение, но не были подтверждены. У них не будет доступа к организации, пока они не будут подтверждены." + }, + "startDate": { + "message": "Дата начала" + }, + "endDate": { + "message": "Дата окончания" + }, + "verifyEmail": { + "message": "Подтвердить email" + }, + "verifyEmailDesc": { + "message": "Подтвердите адрес email своего аккаунта, чтобы открыть доступ ко всем возможностям." + }, + "verifyEmailFirst": { + "message": "Сначала необходимо подтвердить адрес email вашего аккаунта." + }, + "checkInboxForVerification": { + "message": "Проверьте почту - вам должна прийти ссылка подтверждения." + }, + "emailVerified": { + "message": "Ваш адрес email подтвержден." + }, + "emailVerifiedFailed": { + "message": "Не удалось подтвердить ваш email. Попробуйте отправить новое письмо с подтверждением." + }, + "emailVerificationRequired": { + "message": "Требуется подтверждение электронной почты" + }, + "emailVerificationRequiredDesc": { + "message": "Для использования этой функции необходимо подтвердить свою электронную почту." + }, + "updateBrowser": { + "message": "Обновить браузер" + }, + "updateBrowserDesc": { + "message": "Вы используете неподдерживаемый браузер. Веб-хранилище может работать некорректно." + }, + "joinOrganization": { + "message": "Присоединиться к организации" + }, + "joinOrganizationDesc": { + "message": "Вас пригласили присоединиться к организации, указанной выше. Чтобы принять приглашение, вам необходимо войти или создать новую учетную запись Bitwarden." + }, + "inviteAccepted": { + "message": "Приглашение принято" + }, + "inviteAcceptedDesc": { + "message": "Вы получите доступ к этой организации, как только администратор подтвердит ваше членство. Когда это произойдет, мы отправим вам email." + }, + "inviteAcceptFailed": { + "message": "Не удается принять приглашение. Попросите администратора организации выслать новое." + }, + "inviteAcceptFailedShort": { + "message": "Невозможно принять приглашение. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Запомнить email" + }, + "recoverAccountTwoStepDesc": { + "message": "Если у вас нет доступа к своему аккаунту с помощью двухфакторной аутентификации, для ее отключения вы можете использовать свой код восстановления." + }, + "recoverAccountTwoStep": { + "message": "Восстановить двухфакторную аутентификацию аккаунта" + }, + "twoStepRecoverDisabled": { + "message": "Двухфакторная аутентификация для вашего аккаунта отключена." + }, + "learnMore": { + "message": "Подробнее" + }, + "deleteRecoverDesc": { + "message": "Введите свой адрес email, чтобы восстановить и удалить ваш аккаунт." + }, + "deleteRecoverEmailSent": { + "message": "Если ваш аккаунт существует, мы отправим вам письмо с дальнейшими инструкциями." + }, + "deleteRecoverConfirmDesc": { + "message": "Вы запросили удаление вашего аккаунта Bitwarden. Нажмите кнопку ниже, чтобы подтвердить." + }, + "myOrganization": { + "message": "Моя организация" + }, + "deleteOrganization": { + "message": "Удалить организацию" + }, + "deletingOrganizationContentWarning": { + "message": "Введите мастер-пароль для подтверждения удаления $ORGANIZATION$ и всех связанных с ней данных. Данные хранилища в $ORGANIZATION$ включают:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Учетные записи пользователей останутся активными после удаления, но больше не будут связаны с этой организацией." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Удаление $ORGANIZATION$ окончательно и необратимо.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Организация удалена" + }, + "organizationDeletedDesc": { + "message": "Организация и все связанные с ней данные были удалены." + }, + "organizationUpdated": { + "message": "Организация обновлена" + }, + "taxInformation": { + "message": "Информация о налогах" + }, + "taxInformationDesc": { + "message": "Для клиентов из США почтовый индекс необходим для выполнения требований по уплате налога с продаж, для других стран вы можете по желанию предоставить идентификационный номер налогоплательщика (VAT/GST) и/или адрес, который будет указан в ваших счетах." + }, + "billingPlan": { + "message": "План", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Изменить план", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Обновите свой аккаунт до другого плана, предоставив информацию ниже. Пожалуйста, убедитесь, что в вашем аккаунте есть активный способ оплаты.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Счет #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Просмотр счета" + }, + "downloadInvoice": { + "message": "Загрузить счет" + }, + "verifyBankAccount": { + "message": "Подтвердить банковский счет" + }, + "verifyBankAccountDesc": { + "message": "Мы сделали два микродепозита на ваш счет (отобразиться в выписке они могут в течение 1-2 рабочих дней). Введите эти суммы для подтверждения счета." + }, + "verifyBankAccountInitialDesc": { + "message": "Оплата с банковского счета доступна только клиентам из США. Вам будет необходимо подтвердить свой банковский счет. Мы сделаем два микро-депозита в течение ближайших 1-2 рабочих дней. Введите эти суммы на странице выставления счетов организации, чтобы подтвердить банковский счет." + }, + "verifyBankAccountFailureWarning": { + "message": "Невыполнение подтверждения банковского счета приведет к неудачной оплате и отключению подписки." + }, + "verifiedBankAccount": { + "message": "Банковский счет был подтвержден." + }, + "bankAccount": { + "message": "Банковский счет" + }, + "amountX": { + "message": "Сумма $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Номер маршрута", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Номер счета" + }, + "accountHolderName": { + "message": "Имя владельца счета" + }, + "bankAccountType": { + "message": "Тип счета" + }, + "bankAccountTypeCompany": { + "message": "Компания (бизнес)" + }, + "bankAccountTypeIndividual": { + "message": "Индивидуальный (личный)" + }, + "enterInstallationId": { + "message": "Введите идентификатор установки" + }, + "limitSubscriptionDesc": { + "message": "Установите лимит мест для вашей подписки. По достижении этого лимита вы не сможете приглашать новых пользователей." + }, + "maxSeatLimit": { + "message": "Максимальный предел мест (необязательно)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Максимальная потенциальная стоимость места" + }, + "addSeats": { + "message": "Добавить лицензии", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Удалить лицензии", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Корректировка вашей подписки приведет к пропорциональному изменению суммарного счета. Если количество новых приглашенных пользователей превысит количество мест в вашей подписке, вы сразу же получите пропорциональную плату за дополнительных пользователей." + }, + "subscriptionUserSeats": { + "message": "Ваша подписка разрешает в общей сложности $COUNT$ пользователей.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Ограничить подписку (необязательно)" + }, + "subscriptionSeats": { + "message": "Места для подписки" + }, + "subscriptionUpdated": { + "message": "Подписка обновлена" + }, + "additionalOptions": { + "message": "Дополнительные настройки" + }, + "additionalOptionsDesc": { + "message": "За дополнительной помощью в управлении подпиской обращайтесь в службу поддержки клиентов." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Корректировка вашей подписки приведет к пропорциональному изменению суммарного счета. Если количество новых приглашенных пользователей превысит количество мест в вашей подписке, вы сразу же получите пропорциональную плату за дополнительных пользователей." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Корректировка вашей подписки приведет к пропорциональному изменению суммарного счета. Если количество новых приглашенных пользователей превысит количество мест в вашей подписке, вы сразу же получите пропорциональную плату за дополнительных пользователей, пока не будет достигнут лимит мест $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Вы не можете пригласить более $COUNT$ пользователей без обновления вашего плана.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Вы не можете пригласить более $COUNT$ пользователей без обновления вашего плана. Для обновления обратитесь в службу поддержки клиентов.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Ваша подписка разрешена в общей сложности для $COUNT$ пользователей. Ваш план спонсируется и оплачивается внешней организацией.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Изменения в вашей подписке приведут к пропорциональным изменениям в сумме счетов. Без увеличения числа мест подписки количество приглашаемых пользователей - не более $COUNT$.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Лицензии для добавления" + }, + "seatsToRemove": { + "message": "Лицензии для удаления" + }, + "seatsAddNote": { + "message": "Добавление пользовательских лицензий приведет к корректировке итоговых счетов и немедленному взиманию платы с вашего метода оплаты. Первый платеж будет пропорционален оставшейся части текущего платежного периода." + }, + "seatsRemoveNote": { + "message": "Удаление пользовательских лицензий приведет к корректировке ваших итоговых счетов. Излишне уплаченные средства будут пропорционально перенесены на ваш следующий платежный период." + }, + "adjustedSeats": { + "message": "Скорректировано $AMOUNT$ пользовательских лицензий.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Ключ обновлен" + }, + "updateKeyTitle": { + "message": "Обновить ключ" + }, + "updateEncryptionKey": { + "message": "Обновить ключ шифрования" + }, + "updateEncryptionKeyShortDesc": { + "message": "В настоящее время вы используете устаревшую схему шифрования." + }, + "updateEncryptionKeyDesc": { + "message": "Мы перешли на более сложные ключи шифрования, которые обеспечивают лучшую безопасность и доступ к новым возможностям. Обновление ключа шифрования происходит быстро и легко. Просто введите свой мастер-пароль ниже. Это обновление в конечном итоге станет обязательным." + }, + "updateEncryptionKeyWarning": { + "message": "После обновления ключа шифрования необходимо выполнить выход во всех приложениях Bitwarden, которые вы используете (например, мобильное приложение или расширение браузера). Невыполнение этого требования может привести к повреждению данных (так как при этом загружается ваш новый ключ шифрования). Мы попытаемся автоматически осуществить завершение ваших сессий, однако это может произойти с задержкой." + }, + "updateEncryptionKeyExportWarning": { + "message": "Любые зашифрованные экспортированные данные, которые вы сохранили, также станут недействительными." + }, + "subscription": { + "message": "Подписка" + }, + "loading": { + "message": "Загрузка" + }, + "upgrade": { + "message": "Обновить" + }, + "upgradeOrganization": { + "message": "Обновить организацию" + }, + "upgradeOrganizationDesc": { + "message": "Эта функция недоступна для бесплатных организаций. Переключитесь на платный план, чтобы разблокировать дополнительные возможности." + }, + "createOrganizationStep1": { + "message": "Создание организации: Шаг 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Прежде чем создавать свою организацию, сначала необходимо создать бесплатную персональную учетную запись." + }, + "refunded": { + "message": "Возвращено" + }, + "nothingSelected": { + "message": "Вы ничего не выбрали." + }, + "acceptPolicies": { + "message": "Отметив этот флажок, вы соглашаетесь со следующим:" + }, + "acceptPoliciesError": { + "message": "Условия предоставления услуг и Политика конфиденциальности не были подтверждены." + }, + "termsOfService": { + "message": "Условия использования" + }, + "privacyPolicy": { + "message": "Политика конфиденциальности" + }, + "filters": { + "message": "Фильтры" + }, + "vaultTimeout": { + "message": "Тайм-аут хранилища" + }, + "vaultTimeoutDesc": { + "message": "Выберите тайм-аут для хранилища и действие, которое необходимо предпринять." + }, + "oneMinute": { + "message": "1 минута" + }, + "fiveMinutes": { + "message": "5 минут" + }, + "fifteenMinutes": { + "message": "15 минут" + }, + "thirtyMinutes": { + "message": "30 минут" + }, + "oneHour": { + "message": "1 час" + }, + "fourHours": { + "message": "4 часа" + }, + "onRefresh": { + "message": "При обновлении браузера" + }, + "dateUpdated": { + "message": "Обновлено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль обновлен", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Организация отключена." + }, + "licenseIsExpired": { + "message": "Срок действия лицензии истек." + }, + "updatedUsers": { + "message": "Пользователи обновлены" + }, + "selected": { + "message": "Выбрано" + }, + "ownership": { + "message": "Владелец" + }, + "whoOwnsThisItem": { + "message": "Кому принадлежит этот элемент?" + }, + "strong": { + "message": "Сильный", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Хороший", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Слабый", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Очень слабый", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слабый мастер-пароль" + }, + "weakMasterPasswordDesc": { + "message": "Вы выбрали слабый мастер-пароль. Для надежной защиты аккаунта Bitwarden следует использовать сильный мастер-пароль (или парольную фразу). Вы действительно хотите использовать этот мастер-пароль?" + }, + "rotateAccountEncKey": { + "message": "Также изменить ключ шифрования моего аккаунта" + }, + "rotateEncKeyTitle": { + "message": "Изменить ключ шифрования" + }, + "rotateEncKeyConfirmation": { + "message": "Вы уверены, что хотите изменить ключ шифрования вашей учетной записи?" + }, + "attachmentsNeedFix": { + "message": "К этому элементу прикреплены старые вложения, которые необходимо исправить." + }, + "attachmentFixDesc": { + "message": "Это старое вложение необходимо исправить. Нажмите, чтобы узнать больше." + }, + "fix": { + "message": "Исправить", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "В вашем хранилище есть старые вложения файлов, которые необходимо исправить, прежде чем вы сможете изменить ключ шифрования вашего аккаунта." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "Бесплатно", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Ключ API" + }, + "apiKeyDesc": { + "message": "Ваш ключ API может быть использован для аутентификации в публичном API Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Изменение ключа API приведет к аннулированию предыдущего ключа. Вы можете изменить свой ключ API, если считаете, что текущий ключ больше не безопасен для использования." + }, + "apiKeyWarning": { + "message": "Ваш ключ API имеет полный доступ к организации. Это должно храниться в секрете." + }, + "userApiKeyDesc": { + "message": "Ваш ключ API может быть использован для аутентификации в Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Ваш ключ API является альтернативным механизмом аутентификации. Он должен храниться в секрете." + }, + "oauth2ClientCredentials": { + "message": "Учетные данные клиента OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Показать ключ API" + }, + "rotateApiKey": { + "message": "Изменить ключ API" + }, + "selectOneCollection": { + "message": "Необходимо выбрать хотя бы одну коллекцию." + }, + "couldNotChargeCardPayInvoice": { + "message": "Мы не смогли списать деньги с вашей карты. Пожалуйста, просмотрите и оплатите неоплаченный счет, указанный ниже." + }, + "inAppPurchase": { + "message": "Покупка в приложении" + }, + "cannotPerformInAppPurchase": { + "message": "Вы не можете выполнить это действие при использовании оплаты из приложения." + }, + "manageSubscriptionFromStore": { + "message": "Вы должны управлять своей подпиской в том ​​магазине, в котором была совершена покупка в приложении." + }, + "minLength": { + "message": "Минимальная длина" + }, + "clone": { + "message": "Клонировать" + }, + "masterPassPolicyDesc": { + "message": "Установите минимальные требования к надежности мастер-пароля." + }, + "twoStepLoginPolicyDesc": { + "message": "Требовать от пользователей настройки двухэтапной авторизации в их персональных учетных записях." + }, + "twoStepLoginPolicyWarning": { + "message": "Члены организации, у которых в личном аккаунте отключена двухфакторная аутентификация, будут удалены из организации и получат об этом уведомление по email." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Вы участник организации, которая требует, чтобы в вашем аккаунте была включена двухфакторная аутентификация. Если вы отключите всех провайдеров двухфакторной аутентификации, то будете автоматически удалены из этих организаций." + }, + "passwordGeneratorPolicyDesc": { + "message": "Установите минимальные требования к конфигурации генератора паролей." + }, + "passwordGeneratorPolicyInEffect": { + "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": "Ваш новый мастер-пароль не соответствует требованиям политики." + }, + "minimumNumberOfWords": { + "message": "Минимальное количество слов" + }, + "defaultType": { + "message": "Тип по умолчанию" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Поиск в корзине" + }, + "permanentlyDelete": { + "message": "Удалить окончательно" + }, + "permanentlyDeleteSelected": { + "message": "Окончательно удалить выбранные" + }, + "permanentlyDeleteItem": { + "message": "Окончательно удалить элемент" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Вы уверены, что хотите окончательно удалить этот элемент?" + }, + "permanentlyDeletedItem": { + "message": "Элемент удален навсегда" + }, + "permanentlyDeletedItems": { + "message": "Элементы удалены навсегда" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Выбрано элементов для удаления: $COUNT$. Вы действительно хотите окончательно удалить все эти элементы?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Элемент $ID$ удален навсегда.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Восстановить" + }, + "restoreSelected": { + "message": "Восстановить выбранные" + }, + "restoreItem": { + "message": "Восстановить элемент" + }, + "restoredItem": { + "message": "Элемент восстановлен" + }, + "restoredItems": { + "message": "Элементы восстановлены" + }, + "restoreItemConfirmation": { + "message": "Вы уверены, что хотите восстановить этот элемент?" + }, + "restoreItems": { + "message": "Восстановить элементы" + }, + "restoreSelectedItemsDesc": { + "message": "Выбрано элементов для восстановления: $COUNT$. Вы действительно хотите восстановить все эти элементы?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Элемент $ID$ восстановлен.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "По истечении тайм-аута будет выполнен выход, что приведет к отмене всех прав доступа к вашему хранилищу и потребует онлайн-аутентификации. Вы уверены, что хотите использовать этот параметр?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Подтверждение действия по тайм-ауту" + }, + "hidePasswords": { + "message": "Скрывать пароли" + }, + "countryPostalCodeRequiredDesc": { + "message": "Эта информация требуется только для расчета налога с продаж и финансовой отчетности." + }, + "includeVAT": { + "message": "Включить информацию о VAT/GST (необязательно)" + }, + "taxIdNumber": { + "message": "ID VAT/GST" + }, + "taxInfoUpdated": { + "message": "Информация о налогах обновлена." + }, + "setMasterPassword": { + "message": "Задать мастер-пароль" + }, + "ssoCompleteRegistration": { + "message": "Для завершения процесса авторизации при помощи SSO, установите мастер-пароль для доступа к вашему хранилищу и его защиты." + }, + "identifier": { + "message": "Идентификатор" + }, + "organizationIdentifier": { + "message": "Идентификатор организации" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Авторизуйтесь при помощи единого корпоративного портала. Чтобы начать, введите идентификатор вашей организации." + }, + "enterpriseSingleSignOn": { + "message": "Единая корпоративная авторизация (SSO)" + }, + "ssoHandOff": { + "message": "Теперь вы можете закрыть эту вкладку и продолжить в расширении." + }, + "includeAllTeamsFeatures": { + "message": "Все функции команд, плюс:" + }, + "includeSsoAuthentication": { + "message": "SSO аутентификация через SAML2.0 и OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Политик организации" + }, + "ssoValidationFailed": { + "message": "Проверка SSO не пройдена" + }, + "ssoIdentifierRequired": { + "message": "Требуется идентификатор организации." + }, + "unlinkSso": { + "message": "Отключить SSO" + }, + "unlinkSsoConfirmation": { + "message": "Вы действительно хотите отключить SSO для этой организации?" + }, + "linkSso": { + "message": "Подключить SSO" + }, + "singleOrg": { + "message": "Одна организация" + }, + "singleOrgDesc": { + "message": "Запретить пользователям присоединяться к другим организациям." + }, + "singleOrgBlockCreateMessage": { + "message": "Политика вашей текущей организации не позволяет вам присоединиться к более чем одной организации. Пожалуйста, свяжитесь с администраторами вашей организации или авторизуйтесь под другим аккаунтом Bitwarden." + }, + "singleOrgPolicyWarning": { + "message": "Члены организации, которые не являются владельцами или администраторами и уже входят в другую организацию, будут удалены из вашей организации." + }, + "requireSso": { + "message": "Авторизация через единый вход (SSO)" + }, + "requireSsoPolicyDesc": { + "message": "Требовать от пользователей авторизацию с помощью единого корпоративного входа." + }, + "prerequisite": { + "message": "Обязательное условие" + }, + "requireSsoPolicyReq": { + "message": "Перед активацией этой политики необходимо активировать корпоративную политику 'Одна организация'." + }, + "requireSsoPolicyReqError": { + "message": "Не включена политика 'Одна организация'." + }, + "requireSsoExemption": { + "message": "Владельцы и администраторы организации не подпадают под действие этой политики." + }, + "sendTypeFile": { + "message": "Файл" + }, + "sendTypeText": { + "message": "Текст" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "Удалить Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Вы действительно хотите удалить эту Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "Выберите тип Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "Текущих обращений" + }, + "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." + }, + "disabled": { + "message": "Отключено" + }, + "sendLink": { + "message": "Ссылка на Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Скопировать ссылку на Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Удалить пароль" + }, + "removedPassword": { + "message": "Пароль удален" + }, + "removePasswordConfirmation": { + "message": "Вы уверены, что хотите удалить пароль?" + }, + "hideEmail": { + "message": "Скрыть мой адрес email от получателей." + }, + "disableThisSend": { + "message": "Отключить эту Send, чтобы никто не мог получить к ней доступ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "Все Send’ы" + }, + "maxAccessCountReached": { + "message": "Достигнут максимум обращений", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Ожидание удаления" + }, + "expired": { + "message": "Срок истек" + }, + "searchSends": { + "message": "Поиск Send’ов", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Эта Send защищена паролем. Введите пароль ниже, чтобы продолжить.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Не знаете пароль? Для доступа к этой Send, запросите его у отправителя.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Эта Send по умолчанию скрыта. Вы можете переключить ее видимость с помощью расположенной ниже кнопки.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Скачать файл" + }, + "sendAccessUnavailable": { + "message": "Send, к которой вы пытаетесь получить доступ, больше не существует или недоступна.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Не удалось найти файл, связанный с этой Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "В списке нет Send’ов.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Экстренный доступ" + }, + "emergencyAccessDesc": { + "message": "Предоставляйте экстренный доступ доверенным контактам и управляйте им. Доверенные контакты могут получить доступ для просмотра или передачи владения вашей учетной записью в экстренных ситуациях. Посетите нашу страницу помощи для детального ознакомления о том, как работает доступ нулевого уровня." + }, + "emergencyAccessOwnerWarning": { + "message": "Вы являетесь владельцем одной или нескольких организаций. Если передать владение контакту для экстренных ситуаций, он будет наделен всеми полномочиями в качестве полноправного владельца." + }, + "trustedEmergencyContacts": { + "message": "Надежные контакты для экстренных ситуаций" + }, + "noTrustedContacts": { + "message": "Вы еще не добавили контакты для экстренных ситуаций. Пригласите доверенный контакт, чтобы начать." + }, + "addEmergencyContact": { + "message": "Добавить контакт для экстренной ситуации" + }, + "designatedEmergencyContacts": { + "message": "Назначен в качестве контакта для экстренной ситуации" + }, + "noGrantedAccess": { + "message": "Вы пока никому не назначены в качестве контакта на случай экстренной ситуации." + }, + "inviteEmergencyContact": { + "message": "Пригласить контакт для экстренной ситуации" + }, + "editEmergencyContact": { + "message": "Редактировать контакт для экстренной ситуации" + }, + "inviteEmergencyContactDesc": { + "message": "Пригласите новый контакт для экстренной ситуации, введя адрес email его учетной записи Bitwarden ниже. Если у него пока нет учетной записи Bitwarden, то будет предложено ее создать." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Инициирован экстренный доступ" + }, + "emergencyAccessRecoveryApproved": { + "message": "Экстренный доступ разрешен" + }, + "viewDesc": { + "message": "Может просматривать все элементы в вашем собственном хранилище." + }, + "takeover": { + "message": "Передача владения" + }, + "takeoverDesc": { + "message": "Вы можете сбросить свой аккаунт с помощью нового мастер-пароля." + }, + "waitTime": { + "message": "Время ожидания" + }, + "waitTimeDesc": { + "message": "Время, необходимое для автоматического предоставления доступа." + }, + "oneDay": { + "message": "1 день" + }, + "days": { + "message": "$DAYS$ дн.", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Приглашенный пользователь." + }, + "acceptEmergencyAccess": { + "message": "Вы были приглашены в качестве контакта на случай экстренной ситуации для пользователя, указанного выше. Чтобы принять приглашение, необходимо авторизоваться или создать новый аккаунт Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Не удается принять приглашение. Попросите пользователя выслать новое." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Невозможно принять приглашение. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Вы можете получить доступ к опциям экстренной ситуации для этого пользователя после подтверждения вашей личности. Когда это произойдет, мы отправим вам электронное письмо." + }, + "requestAccess": { + "message": "Запрос доступа" + }, + "requestAccessConfirmation": { + "message": "Вы уверены, что хотите запросить экстренный доступ? Вам будет предоставлен доступ через $WAITTIME$ дн. или когда пользователь вручную одобрит запрос.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Запрошен экстренный доступ для $USER$. Мы уведомим вас по электронной почте, когда можно будет продолжить.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Принять" + }, + "reject": { + "message": "Отклонить" + }, + "approveAccessConfirmation": { + "message": "Вы уверены, что хотите разрешить экстренный доступ? Это позволит $USER$ перейти к $ACTION$ вашего аккаунта.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Экстренный доступ разрешен." + }, + "emergencyRejected": { + "message": "В экстренном доступе отказано" + }, + "passwordResetFor": { + "message": "Сброшен пароль для $USER$. Теперь вы можете войти, используя новый пароль.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Личное владение" + }, + "personalOwnershipPolicyDesc": { + "message": "Требовать от пользователей сохранения элементов хранилища в организации, удалив опцию личного владения." + }, + "personalOwnershipExemption": { + "message": "Владельцы и администраторы организации не подпадают под действие этой политики." + }, + "personalOwnershipSubmitError": { + "message": "В соответствии с корпоративной политикой вам запрещено сохранять элементы в личном хранилище. Измените владельца на организацию и выберите из доступных Коллекций." + }, + "disableSend": { + "message": "Отключить Send" + }, + "disableSendPolicyDesc": { + "message": "Не разрешать пользователям создавать или редактировать Bitwarden Send. Удаление существующей Send по-прежнему разрешено.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Политики не распространяются на пользователей организации, которые могут ими управлять." + }, + "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." + }, + "sendOptions": { + "message": "Настройки Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Установка параметров создания и редактирования Send.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Политики не распространяются на пользователей организации, которые могут ими управлять." + }, + "disableHideEmail": { + "message": "Запретить пользователям скрывать свой адрес email от получателей при создании или редактировании Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "На данный момент действуют следующие политики организации:" + }, + "sendDisableHideEmailInEffect": { + "message": "Пользователям не разрешается скрывать свой адрес email от получателей при создании или редактировании Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Изменена политика $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Стоимость плана" + }, + "estimatedTax": { + "message": "Предполагаемый налог" + }, + "custom": { + "message": "Пользовательский" + }, + "customDesc": { + "message": "Позволяет более гибко контролировать права пользователей для расширенных конфигураций." + }, + "permissions": { + "message": "Разрешения" + }, + "accessEventLogs": { + "message": "Доступ к журналам событий" + }, + "accessImportExport": { + "message": "Доступ к импорту/экспорту" + }, + "accessReports": { + "message": "Доступ к отчетам" + }, + "missingPermissions": { + "message": "У вас нет необходимых разрешений для выполнения этого действия." + }, + "manageAllCollections": { + "message": "Управлять всеми коллекциями" + }, + "createNewCollections": { + "message": "Создать новые коллекции" + }, + "editAnyCollection": { + "message": "Редактировать любую коллекцию" + }, + "deleteAnyCollection": { + "message": "Удалить любую коллекцию" + }, + "manageAssignedCollections": { + "message": "Управление назначенными коллекциями" + }, + "editAssignedCollections": { + "message": "Изменить назначенные коллекции" + }, + "deleteAssignedCollections": { + "message": "Удалить назначенные коллекции" + }, + "manageGroups": { + "message": "Управление группами" + }, + "managePolicies": { + "message": "Управление политиками" + }, + "manageSso": { + "message": "Управление SSO" + }, + "manageUsers": { + "message": "Управление пользователями" + }, + "manageResetPassword": { + "message": "Управление сбросом пароля" + }, + "disableRequiredError": { + "message": "Перед отключением этой политики необходимо сначала отключить политику $POLICYNAME$.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Политика организации влияет на ваши варианты владения." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Импорт элементов в ваше личное хранилище отключен политикой организации." + }, + "personalOwnershipCheckboxDesc": { + "message": "Отключить личное владение для пользователей организации" + }, + "textHiddenByDefault": { + "message": "При доступе к Send скрывать текст по умолчанию", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "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": "Файл, который вы хотите отправить." + }, + "copySendLinkOnSave": { + "message": "Скопировать ссылку в буфер обмена после сохранения, чтобы поделиться этой Send." + }, + "sendLinkLabel": { + "message": "Ссылка на Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send передает конфиденциальную, временную информацию другим легко и безопасно.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Узнать больше о", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Делитесь текстом или файлами напрямую с кем угодно." + }, + "sendVaultCardLearnMore": { + "message": "Узнайте больше", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "посмотрите", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "как это работает", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "или", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "попробуйте прямо сейчас", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "или", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "зарегистрируйтесь", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "чтобы попробовать уже сегодня.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Пользователь Bitwarden $USER_IDENTIFIER$ поделился с вами следующим", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Пользователь Bitwarden, создавший эту Send, решил скрыть свой адрес email. Вы должны убедиться, что доверяете источнику этой ссылки, прежде чем использовать или скачивать ее содержимое.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Срок истечения указан некорректно." + }, + "deletionDateIsInvalid": { + "message": "Срок удаления указан некорректно." + }, + "expirationDateAndTimeRequired": { + "message": "Необходимо указать дату и время срока истечения." + }, + "deletionDateAndTimeRequired": { + "message": "Необходимо указать дату и время срока удаления." + }, + "dateParsingError": { + "message": "Произошла ошибка при сохранении данных о сроках удаления и истечения." + }, + "webAuthnFallbackMsg": { + "message": "Для подтверждения 2ФА нажмите кнопку ниже." + }, + "webAuthnAuthenticate": { + "message": "Аутентификация WebAutn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn не поддерживается в этом браузере." + }, + "webAuthnSuccess": { + "message": "WebAuthn успешно прошел верификацию!
Вы можете закрыть эту вкладку." + }, + "hintEqualsPassword": { + "message": "Подсказка для пароля не может совпадать с паролем." + }, + "enrollPasswordReset": { + "message": "Записаться на сброс пароля" + }, + "enrolledPasswordReset": { + "message": "Запрос на сброс пароля зарегистрирован" + }, + "withdrawPasswordReset": { + "message": "Отписаться от сброса пароля" + }, + "enrollPasswordResetSuccess": { + "message": "Регистрация успешна!" + }, + "withdrawPasswordResetSuccess": { + "message": "Запись успешно отменена!" + }, + "eventEnrollPasswordReset": { + "message": "Пользователь $ID$ записался на помощь по сбросу пароля.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Пользователь $ID$ отказался от помощи по сбросу пароля.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Мастер-пароль сброшен для пользователя $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Сбросить SSO-ссылку для пользователя $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ впервые выполнил вход используя SSO", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Сбросить пароль" + }, + "resetPasswordLoggedOutWarning": { + "message": "В случае продолжения сессия $NAME$ будет завершена, что потребует повторной авторизации. Сессии на других устройствах могут оставаться активными до одного часа.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "этот пользователь" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Согласно одной или нескольким политикам организации необходимо, чтобы мастер-пароль отвечал следующим требованиям:" + }, + "resetPasswordSuccess": { + "message": "Пароль успешно сброшен!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Регистрация позволит администраторам организации изменять мастер-пароль. Вы действительно хотите зарегистрироваться?" + }, + "resetPasswordPolicy": { + "message": "Сброс мастер-пароля" + }, + "resetPasswordPolicyDescription": { + "message": "Разрешить администраторам организации сбрасывать мастер-пароль пользователей организации." + }, + "resetPasswordPolicyWarning": { + "message": "Пользователи организации должны зарегистрироваться самостоятельно или быть зарегистрированными автоматически, чтобы администраторы могли сбросить их мастер-пароль." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматическая регистрация" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Все пользователи будут автоматически записаны на сброс пароля, после того как их приглашение будет принято, и им не будет разрешено отказаться от его выполнения." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Пользователи, уже входящие в организацию, не смогут записаться на сброс пароля задним числом. Они должны будут зарегистрироваться самостоятельно, прежде чем администраторы смогут сбросить их мастер-пароль." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Автоматически записывать новых пользователей" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "В этой организации действует корпоративная политика, которая автоматически зарегистрирует вас на сброс пароля. Регистрация позволит администраторам организации изменить ваш мастер-пароль." + }, + "resetPasswordOrgKeysError": { + "message": "Ответ на ключи организации пустой" + }, + "resetPasswordDetailsError": { + "message": "Ответ на сброс пароля пустой" + }, + "trashCleanupWarning": { + "message": "Элементы, которые находились в корзине более 30 дней, будут автоматически удалены." + }, + "trashCleanupWarningSelfHosted": { + "message": "Элементы, которые находились в корзине в течение некоторого времени, будут автоматически удалены." + }, + "passwordPrompt": { + "message": "Повторный запрос мастер-пароля" + }, + "passwordConfirmation": { + "message": "Подтверждение мастер-пароля" + }, + "passwordConfirmationDesc": { + "message": "Это действие защищено. Для продолжения введите свой мастер-пароль, чтобы подтвердить свою личность." + }, + "reinviteSelected": { + "message": "Отправить приглашения повторно" + }, + "noSelectedUsersApplicable": { + "message": "Это действие не применимо ни к одному из выбранных пользователей." + }, + "removeUsersWarning": { + "message": "Вы уверены, что хотите удалить следующих пользователей? Процесс может занять несколько секунд и не может быть прерван или отменен." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Выберите тему для своего веб-хранилища." + }, + "themeSystem": { + "message": "Использовать системную тему" + }, + "themeDark": { + "message": "Темная" + }, + "themeLight": { + "message": "Светлая" + }, + "confirmSelected": { + "message": "Подтвердить выбранное" + }, + "bulkConfirmStatus": { + "message": "Статус массового действия" + }, + "bulkConfirmMessage": { + "message": "Подтверждено успешно." + }, + "bulkReinviteMessage": { + "message": "Повторно приглашен успешно." + }, + "bulkRemovedMessage": { + "message": "Удален(-о) успешно" + }, + "bulkFilteredMessage": { + "message": "Исключено, не применимо для данного действия." + }, + "fingerprint": { + "message": "Отпечаток" + }, + "removeUsers": { + "message": "Удалить пользователей" + }, + "error": { + "message": "Ошибка" + }, + "resetPasswordManageUsers": { + "message": "Управление пользователями также должно быть включено с разрешением Управление сбросом пароля" + }, + "setupProvider": { + "message": "Настройка поставщика" + }, + "setupProviderLoginDesc": { + "message": "Вы приглашены для установки нового поставщика. Чтобы продолжить, войдите или создайте новый аккаунт Bitwarden." + }, + "setupProviderDesc": { + "message": "Введите подробную информацию ниже, чтобы завершить установку поставщика. Если у вас есть какие-либо вопросы, обратитесь в службу поддержки." + }, + "providerName": { + "message": "Название поставщика" + }, + "providerSetup": { + "message": "Поставщик настроен." + }, + "clients": { + "message": "Клиенты" + }, + "providerAdmin": { + "message": "Администратор поставщика" + }, + "providerAdminDesc": { + "message": "Пользователь с наивысшим уровнем доступа, который может управлять всеми аспектами деятельности вашего поставщика, а также доступом и управлением клиентскими организациями." + }, + "serviceUser": { + "message": "Пользователь сервиса" + }, + "serviceUserDesc": { + "message": "Пользователи сервиса могут получать доступ и управлять всеми клиентскими организациями." + }, + "providerInviteUserDesc": { + "message": "Пригласите нового пользователя в свою организацию, введя адрес email его учетной записи Bitwarden ниже. Если у него еще нет учетной записи, ему будет предложено ее создать." + }, + "joinProvider": { + "message": "Присоединиться к поставщику" + }, + "joinProviderDesc": { + "message": "Вас пригласили присоединиться к указанной выше организации. Чтобы принять приглашение, войдите или создайте новую учетную запись Bitwarden." + }, + "providerInviteAcceptFailed": { + "message": "Невозможно принять приглашение. Попросите администратора поставщика отправить новое приглашение." + }, + "providerInviteAcceptedDesc": { + "message": "Вы сможете получить доступ к этому поставщику, как только администратор подтвердит ваше членство. Мы отправим вам email, когда это произойдет." + }, + "providerUsersNeedConfirmed": { + "message": "У вас есть пользователи, которые приняли приглашение, но не были подтверждены. Пользователи не будут иметь доступа к поставщику, пока не получат подтверждение." + }, + "provider": { + "message": "Поставщик" + }, + "newClientOrganization": { + "message": "Организация нового клиента" + }, + "newClientOrganizationDesc": { + "message": "Создайте новую организацию клиента, которая будет связана с вами как с поставщиком услуг. Вы сможете получить доступ к этой организации и управлять ею." + }, + "addExistingOrganization": { + "message": "Добавить существующую организацию" + }, + "myProvider": { + "message": "Мой поставщик" + }, + "addOrganizationConfirmation": { + "message": "Вы уверены, что хотите добавить $ORGANIZATION$ в качестве клиента к $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Организация была успешно добавлена к поставщику" + }, + "accessingUsingProvider": { + "message": "Доступ к организации с используя поставщика $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Поставщик отключен." + }, + "providerUpdated": { + "message": "Поставщик обновлен" + }, + "yourProviderIs": { + "message": "Ваш поставщик услуг - $PROVIDER$. Он обладает административными и биллинговыми привилегиями для вашей организации.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Организация $ORGANIZATION$ была отсоединена от вашего поставщика.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Вы уверены, что хотите отсоединить эту организацию? Организация продолжит существовать, но больше не будет управляться поставщиком." + }, + "add": { + "message": "Добавить" + }, + "updatedMasterPassword": { + "message": "Мастер-пароль обновлен" + }, + "updateMasterPassword": { + "message": "Обновить мастер-пароль" + }, + "updateMasterPasswordWarning": { + "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить мастер-пароль сейчас. В результате текущая сессия будет завершена, потребуется повторный вход. Активные сессии на других устройствах могут оставаться активными в течение одного часа." + }, + "masterPasswordInvalidWarning": { + "message": "Мастер-пароль не соответствует требованиям политики этой организации. Чтобы присоединиться к организации, нужно обновить мастер-пароль. Текущая сессия будет завершена и потребуется повторный вход. Сессии на других устройствах могут оставаться активными в течение часа." + }, + "maximumVaultTimeout": { + "message": "Тайм-аут хранилища" + }, + "maximumVaultTimeoutDesc": { + "message": "Настроить максимальный тайм-аут хранилища для всех пользователей." + }, + "maximumVaultTimeoutLabel": { + "message": "Максимальный тайм-аут хранилища" + }, + "invalidMaximumVaultTimeout": { + "message": "Недопустимый максимальный тайм-аут хранилища." + }, + "hours": { + "message": "Час." + }, + "minutes": { + "message": "Мин." + }, + "vaultTimeoutPolicyInEffect": { + "message": "Политики вашей организации влияют на тайм-аут хранилища. Максимально допустимый тайм-аут хранилища составляет $HOURS$ час. и $MINUTES$ мин.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "customVaultTimeout": { + "message": "Пользовательский тайм-аут хранилища" + }, + "vaultTimeoutToLarge": { + "message": "Тайм-аут вашего хранилища превышает ограничение, установленное вашей организацией." + }, + "disablePersonalVaultExport": { + "message": "Отключить экспорт личного хранилища" + }, + "disablePersonalVaultExportDesc": { + "message": "Запрещает пользователям экспортировать данные своего личного хранилища." + }, + "vaultExportDisabled": { + "message": "Экспорт хранилища отключен" + }, + "personalVaultExportPolicyInEffect": { + "message": "Экспорт вашего личного хранилища запрещен одной или несколькими политиками организации." + }, + "selectType": { + "message": "Выберите тип SSO" + }, + "type": { + "message": "Тип" + }, + "openIdConnectConfig": { + "message": "Конфигурация OpenID Connect" + }, + "samlSpConfig": { + "message": "Конфигурация поставщика услуг SAML" + }, + "samlIdpConfig": { + "message": "Конфигурация поставщика удостоверений SAML" + }, + "callbackPath": { + "message": "Резервный маршрут" + }, + "signedOutCallbackPath": { + "message": "Выход с резервного маршрута" + }, + "authority": { + "message": "Сервер авторизации" + }, + "clientId": { + "message": "ID клиента" + }, + "clientSecret": { + "message": "Секрет клиента" + }, + "metadataAddress": { + "message": "Адрес метаданных" + }, + "oidcRedirectBehavior": { + "message": "Поведение перенаправления OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Получать требования от конечной точки информации о пользователе" + }, + "additionalScopes": { + "message": "Пользовательские области" + }, + "additionalUserIdClaimTypes": { + "message": "Типы требований к ID пользователя" + }, + "additionalEmailClaimTypes": { + "message": "Типы требований email" + }, + "additionalNameClaimTypes": { + "message": "Типы требований к имени пользователя" + }, + "acrValues": { + "message": "Запрашиваемые значения класса ссылок на контекст аутентификации" + }, + "expectedReturnAcrValue": { + "message": "Ожидаемое значение \"acr\" Значение требования в ответе" + }, + "spEntityId": { + "message": "ID объекта SP" + }, + "spMetadataUrl": { + "message": "URL метаданных SAML 2.0" + }, + "spAcsUrl": { + "message": "URL службы подтверждения клиентов (ACS)" + }, + "spNameIdFormat": { + "message": "Формат ID названия" + }, + "spOutboundSigningAlgorithm": { + "message": "Алгоритм исходящей подписи" + }, + "spSigningBehavior": { + "message": "Поведение при подписании" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Алгоритм минимальной входящей подписи" + }, + "spWantAssertionsSigned": { + "message": "Ожидание подписанных подтверждений" + }, + "spValidateCertificates": { + "message": "Проверка сертификатов" + }, + "idpEntityId": { + "message": "ID субъекта" + }, + "idpBindingType": { + "message": "Тип привязки" + }, + "idpSingleSignOnServiceUrl": { + "message": "URL службы единого входа" + }, + "idpSingleLogoutServiceUrl": { + "message": "URL службы единого выхода" + }, + "idpX509PublicCert": { + "message": "Публичный сертификат X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Алгоритм исходящей подписи" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Разрешить нежелательный ответ на аутентификацию" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Разрешить исходящие запросы на завершение сеанса" + }, + "idpSignAuthenticationRequests": { + "message": "Подписать запросы аутентификации" + }, + "ssoSettingsSaved": { + "message": "Конфигурация единого входа сохранена." + }, + "sponsoredFamilies": { + "message": "Бесплатный план Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "Вам и вашей семье доступен бесплатный план Bitwarden Families. Используйте свой личный адрес электронной почты, чтобы защитить данные даже тогда, когда вы не на работе." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Воспользуйтесь бесплатным планом Bitwarden Families сегодня, чтобы обеспечить безопасность ваших данных, даже когда вы не на работе." + }, + "sponsoredFamiliesInclude": { + "message": "План Bitwarden Families включает" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Премиум-доступ для 6 пользователей" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Общие коллекции для семейных секретов" + }, + "badToken": { + "message": "Ссылка больше не действительна. Пожалуйста, попросите спонсора повторно отправить предложение." + }, + "reclaimedFreePlan": { + "message": "Бесплатный план восстановлен" + }, + "redeem": { + "message": "Активировать" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Выберите организацию, которую вы хотите спонсировать" + }, + "familiesSponsoringOrgSelect": { + "message": "Какое бесплатное предложение Bitwarden Families вы хотели бы использовать?" + }, + "sponsoredFamiliesEmail": { + "message": "Введите свой личный адрес электронной почты, чтобы активировать Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Если вы покинете или будете исключены из спонсорской организации, срок действия вашего плана Bitwarden Families истечет в конце расчетного периода." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Примите предложение существующей организации или создайте новую организацию Bitwarden Families." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Вам предложили бесплатный план Bitwarden Families. Чтобы продолжить, необходимо войти в учетную запись, которая получила предложение." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Не удается принять предложение. Пожалуйста, повторно отправьте письмо с предложением с вашего корпоративного аккаунта и повторите попытку." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Невозможно принять предложение. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Принять бесплатный план Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Бесплатный план Bitwarden Families успешно активирован" + }, + "redeemed": { + "message": "Активирован" + }, + "redeemedAccount": { + "message": "Активированный аккаунт" + }, + "revokeAccount": { + "message": "Отозвать аккаунт $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Повторно отправить письмо о спонсировании $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Бесплатный план Bitwarden Families" + }, + "redeemNow": { + "message": "Активировать сейчас" + }, + "recipient": { + "message": "Получатель" + }, + "removeSponsorship": { + "message": "Удалить спонсирование" + }, + "removeSponsorshipConfirmation": { + "message": "После удаления спонсорства вы будете нести ответственность за эту подписку и связанные с ней счета. Вы уверены что хотите продолжить?" + }, + "sponsorshipCreated": { + "message": "Спонсирование создано" + }, + "revoke": { + "message": "Отозвать" + }, + "emailSent": { + "message": "Письмо отправлено" + }, + "revokeSponsorshipConfirmation": { + "message": "После удаления этой учетной записи владелец организации Bitwarden Families будет нести ответственность за эту подписку и связанные счета. Вы уверены, что хотите продолжить?" + }, + "removeSponsorshipSuccess": { + "message": "Спонсорство удалено" + }, + "ssoKeyConnectorUnavailable": { + "message": "Не удается подключиться к соединителю ключей, повторите попытку позже." + }, + "keyConnectorUrl": { + "message": "URL соединителя ключей" + }, + "sendVerificationCode": { + "message": "Отправить код подтверждения на ваш email" + }, + "sendCode": { + "message": "Отправить код" + }, + "codeSent": { + "message": "Код отправлен" + }, + "verificationCode": { + "message": "Код подтверждения" + }, + "confirmIdentity": { + "message": "Подтвердите вашу личность, чтобы продолжить." + }, + "verificationCodeRequired": { + "message": "Необходимо ввести код подтверждения." + }, + "invalidVerificationCode": { + "message": "Неверный код подтверждения" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ использует SSO с собственным сервером ключей. Для авторизации членам этой организации больше не требуется мастер-пароль.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Покинуть организацию" + }, + "removeMasterPassword": { + "message": "Удалить мастер-пароль" + }, + "removedMasterPassword": { + "message": "Мастер-пароль удален." + }, + "allowSso": { + "message": "Разрешить аутентификацию SSO" + }, + "allowSsoDesc": { + "message": "После настройки ваша конфигурация будет сохранена, и пользователи смогут проходить аутентификацию, используя свои учетные данные Провайдера идентификации." + }, + "ssoPolicyHelpStart": { + "message": "Активировать", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Политика аутентификации SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "для обеспечения авторизации всех членов при помощи единого входа.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Для настройки расшифровки соединителя ключей требуются политики проверки подлинности SSO и единой организации." + }, + "memberDecryptionOption": { + "message": "Параметры расшифровки членов" + }, + "memberDecryptionPassDesc": { + "message": "После аутентификации участники будут расшифровывать данные хранилища, используя свои мастер-пароли." + }, + "keyConnector": { + "message": "Соединитель ключей" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Подключите авторизацию посредством SSO к вашему собственному серверу расшифровки ключей. При использовании этой опции членам не нужно будет использовать свои мастер-пароли для расшифровки данных хранилища." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Авторизация посредством SSO и расшифровки соединителя ключей\" включена. Эта политика будет применяться только к владельцам и администраторам." + }, + "enabledSso": { + "message": "SSO включен" + }, + "disabledSso": { + "message": "SSO отключен" + }, + "enabledKeyConnector": { + "message": "Соединитель ключей включен" + }, + "disabledKeyConnector": { + "message": "Соединитель ключей отключен" + }, + "keyConnectorWarning": { + "message": "После настройки соединителя ключей параметры расшифровки членов не могут быть изменены." + }, + "migratedKeyConnector": { + "message": "Выполнена миграция на соединитель ключей" + }, + "paymentSponsored": { + "message": "Укажите способ оплаты для сопоставления с организацией. Не волнуйтесь, мы не будем ничего взимать с вас, если вы не выберете дополнительные функции или ваше спонсорское предложение не истечет. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Срок действия спонсорского предложения истек. Вы можете удалить созданную вами организацию, чтобы избежать списания средств по истечении 7-дневного пробного периода. В противном случае вы можете закрыть эту подсказку, чтобы сохранить организацию и принять на себя платежные обязательства." + }, + "newFamiliesOrganization": { + "message": "Новая организация Bitwarden Families" + }, + "acceptOffer": { + "message": "Принять предложение" + }, + "sponsoringOrg": { + "message": "Спонсорская организация" + }, + "keyConnectorTest": { + "message": "Тест" + }, + "keyConnectorTestSuccess": { + "message": "Успешно! Соединитель ключей проверен." + }, + "keyConnectorTestFail": { + "message": "Не удается связаться с соединителем ключей. Проверьте URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Срок действия спонсорского предложения истек." + }, + "freeWithSponsorship": { + "message": "БЕСПЛАТНО при спонсорской поддержке" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ полей выше требуют вашего внимания.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 поле выше требует вашего внимания." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ обязательно.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "обязательно" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Обязательно, если ID сущности не является URL." + }, + "openIdOptionalCustomizations": { + "message": "Дополнительные настройки" + }, + "openIdAuthorityRequired": { + "message": "Обязательно, если полномочия не действительны." + }, + "separateMultipleWithComma": { + "message": "Разделяйте запятыми." + }, + "sessionTimeout": { + "message": "Время вашей сессии истекло. Пожалуйста, вернитесь и попробуйте войти снова." + }, + "exportingPersonalVaultTitle": { + "message": "Экспорт личного хранилища" + }, + "exportingOrganizationVaultTitle": { + "message": "Экспорт хранилища организации" + }, + "exportingPersonalVaultDescription": { + "message": "Будут экспортированы только личные элементы хранилища, связанные с $EMAIL$. Элементы хранилища организации включены не будут.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Будет экспортировано только хранилище организации, связанное с $ORGANIZATION$. Личные элементы хранилища и элементы из других организаций включены не будут.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Вернуться к отчетам" + }, + "generator": { + "message": "Генератор" + }, + "whatWouldYouLikeToGenerate": { + "message": "Что вы хотите сгенерировать?" + }, + "passwordType": { + "message": "Тип пароля" + }, + "regenerateUsername": { + "message": "Пересоздать имя пользователя" + }, + "generateUsername": { + "message": "Создать имя пользователя" + }, + "usernameType": { + "message": "Тип имени пользователя" + }, + "plusAddressedEmail": { + "message": "Плюс-адресованные email", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Использовать возможности суб-адресации вашего провайдера электронной почты." + }, + "catchallEmail": { + "message": "Catch-all-адрес электронной почты" + }, + "catchallEmailDesc": { + "message": "Использовать настроенную в вашем домене почту catch-all." + }, + "random": { + "message": "Случайно" + }, + "randomWord": { + "message": "Случайное слово" + }, + "service": { + "message": "Служба" + } +} diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json new file mode 100644 index 0000000000..71100f067c --- /dev/null +++ b/apps/web/src/locales/si/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Web Vault", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "What type of item is this?" + }, + "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": "මුරපදය" + }, + "newPassword": { + "message": "නව මුරපදය" + }, + "passphrase": { + "message": "Passphrase" + }, + "notes": { + "message": "සටහන්" + }, + "customFields": { + "message": "Custom Fields" + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "අංකය" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "කල් ඉකත් වීම" + }, + "securityCode": { + "message": "Security Code (CVV)" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "සමාගම" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "වි-තැපෑල" + }, + "phone": { + "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": "උඳුවප්" + }, + "title": { + "message": "මාතෘකාව" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "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." + }, + "remove": { + "message": "ඉවත් කරන්න" + }, + "unassigned": { + "message": "Unassigned" + }, + "noneFolder": { + "message": "බහාලුමක් නැත", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "බහාලුම එකතු කරන්න" + }, + "editFolder": { + "message": "බහාලුම සංස්කරණය" + }, + "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." + }, + "never": { + "message": "Never" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generate Password" + }, + "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." + }, + "save": { + "message": "සුරකින්න" + }, + "cancel": { + "message": "අවලංගු කරන්න" + }, + "canceled": { + "message": "Canceled" + }, + "close": { + "message": "වසන්න" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "ප්‍රියතමය" + }, + "unfavorite": { + "message": "Unfavorite" + }, + "edit": { + "message": "සංස්කරණය" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "බහාලුම සොයන්න" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "searchVault": { + "message": "Search Vault" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "ප්‍රියතමයන්" + }, + "types": { + "message": "වර්ග" + }, + "typeLogin": { + "message": "පිවිසෙන්න" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "අනන්‍යතාව" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "බහාලුම්" + }, + "collections": { + "message": "Collections" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "ලිපිනය 1" + }, + "address2": { + "message": "ලිපිනය 2" + }, + "address3": { + "message": "ලිපිනය 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "රට" + }, + "shared": { + "message": "Shared" + }, + "attachments": { + "message": "Attachments" + }, + "select": { + "message": "Select" + }, + "addItem": { + "message": "Add Item" + }, + "editItem": { + "message": "Edit Item" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "උදා.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "වෙනත්" + }, + "share": { + "message": "බෙදාගන්න" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Copy Password", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Copy Username", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Copy URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "My Vault" + }, + "vault": { + "message": "Vault" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Delete Selected" + }, + "moveSelected": { + "message": "Move Selected" + }, + "selectAll": { + "message": "Select All" + }, + "unselectAll": { + "message": "Unselect All" + }, + "launch": { + "message": "Launch" + }, + "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": "ගොනුව" + }, + "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." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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": "Item sent to trash" + }, + "deletedItems": { + "message": "Items sent to trash" + }, + "movedItems": { + "message": "Moved items" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "නික්මෙන්න" + }, + "ok": { + "message": "හරි" + }, + "yes": { + "message": "ඔව්" + }, + "no": { + "message": "නැහැ" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "ගිණුමක් සාදන්න" + }, + "logIn": { + "message": "පිවිසෙන්න" + }, + "submit": { + "message": "Submit" + }, + "emailAddressDesc": { + "message": "You'll use your email address to log in." + }, + "yourName": { + "message": "ඔබගේ නම" + }, + "yourNameDesc": { + "message": "What should we call you?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "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": "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." + }, + "emailAddress": { + "message": "වි-තැපැල් ලිපිනය" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "අනවහිර" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "දැන් අගුලුදමන්න" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "නව සංවිධානය" + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "වි-තැපෑල" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "ඉදිරියට" + }, + "organization": { + "message": "සංවිධානය" + }, + "organizations": { + "message": "සංවිධාන" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "අවවාදයයි" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "minComplexityScore": { + "message": "Minimum Complexity Score" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "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" + }, + "passwordHistory": { + "message": "Password History" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Account Updated" + }, + "changeEmail": { + "message": "Change Email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "New Email" + }, + "code": { + "message": "Code" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "masterPasswordChanged": { + "message": "Master Password Changed" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "My Account" + }, + "tools": { + "message": "Tools" + }, + "importData": { + "message": "Import Data" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Disable Website Icons" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Customize" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domains updated" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Enable" + }, + "enabled": { + "message": "Enabled" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Manage" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json new file mode 100644 index 0000000000..43e77edbad --- /dev/null +++ b/apps/web/src/locales/sk/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ webový trezor", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Aký typ položky to je?" + }, + "name": { + "message": "Meno" + }, + "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" + }, + "newPassword": { + "message": "Nové heslo" + }, + "passphrase": { + "message": "Prístupová fráza" + }, + "notes": { + "message": "Poznámky" + }, + "customFields": { + "message": "Vlastné polia" + }, + "cardholderName": { + "message": "Meno vlastníka karty" + }, + "number": { + "message": "Číslo" + }, + "brand": { + "message": "Značka" + }, + "expiration": { + "message": "Exspirácia" + }, + "securityCode": { + "message": "Bezpečnostný kód (CVV)" + }, + "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" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Odstrániť" + }, + "unassigned": { + "message": "Nepriradené" + }, + "noneFolder": { + "message": "Žiadny priečinok", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Pridať priečinok" + }, + "editFolder": { + "message": "Upraviť priečinok" + }, + "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." + }, + "never": { + "message": "Nikdy" + }, + "toggleVisibility": { + "message": "Prepnúť viditeľnosť" + }, + "toggleCollapse": { + "message": "Prepnúť zloženie", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generovať heslo" + }, + "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é." + }, + "save": { + "message": "Uložiť" + }, + "cancel": { + "message": "Zrušiť" + }, + "canceled": { + "message": "Zrušené" + }, + "close": { + "message": "Zavrieť" + }, + "delete": { + "message": "Odstrániť" + }, + "favorite": { + "message": "Obľúbené" + }, + "unfavorite": { + "message": "Odstrániť z obľúbených" + }, + "edit": { + "message": "Upraviť" + }, + "searchCollection": { + "message": "Hľadať v zbierke" + }, + "searchFolder": { + "message": "Prehľadávať priečinok" + }, + "searchFavorites": { + "message": "Hľadať v obľúbených" + }, + "searchType": { + "message": "Typ vyhľadávania", + "description": "Search item type" + }, + "searchVault": { + "message": "Prehľadávať trezor" + }, + "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" + }, + "typeLoginPlural": { + "message": "Prihlásenia" + }, + "typeCardPlural": { + "message": "Karty" + }, + "typeIdentityPlural": { + "message": "Identity" + }, + "typeSecureNotePlural": { + "message": "Zabezpečené poznámky" + }, + "folders": { + "message": "Priečinky" + }, + "collections": { + "message": "Zbierky" + }, + "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" + }, + "shared": { + "message": "Zdieľané" + }, + "attachments": { + "message": "Prílohy" + }, + "select": { + "message": "Vybrať" + }, + "addItem": { + "message": "Pridať položku" + }, + "editItem": { + "message": "Upraviť položku" + }, + "viewItem": { + "message": "Zobraziť položku" + }, + "ex": { + "message": "napr.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Ostatné" + }, + "share": { + "message": "Zdieľať" + }, + "moveToOrganization": { + "message": "Presunúť do organizácie" + }, + "valueCopied": { + "message": "$VALUE$ skopírované", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopírovať hodnotu", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopírovať heslo", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopírovať používateľské meno", + "description": "Copy username to clipboard" + }, + "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)" + }, + "copyUri": { + "message": "Kopírovať URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Môj trezor" + }, + "vault": { + "message": "Trezor" + }, + "moveSelectedToOrg": { + "message": "Presunúť vybraté do organizácie" + }, + "deleteSelected": { + "message": "Odstrániť vybrané" + }, + "moveSelected": { + "message": "Presunúť vybraté" + }, + "selectAll": { + "message": "Vybrať Všetko" + }, + "unselectAll": { + "message": "Zrušiť výber" + }, + "launch": { + "message": "Spustiť" + }, + "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 nemožno použiť, kým neaktualizujete svoj šifrovací kľúč." + }, + "addedItem": { + "message": "Položka pridaná" + }, + "editedItem": { + "message": "Položka upravená" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ presunuté do $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Vybraté položky boli presunuté do $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "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á" + }, + "deletedItems": { + "message": "Položky odstránené" + }, + "movedItems": { + "message": "Položky presunuté" + }, + "overwritePasswordConfirmation": { + "message": "Naozaj chcete prepísať aktuálne heslo?" + }, + "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ý" + }, + "loggedOut": { + "message": "Odhlásený" + }, + "loginExpired": { + "message": "Platnosť prihlásenia vypršala." + }, + "logOutConfirmation": { + "message": "Naozaj sa chcete odhlásiť?" + }, + "logOut": { + "message": "Odhlásiť sa" + }, + "ok": { + "message": "Potvrdiť" + }, + "yes": { + "message": "Áno" + }, + "no": { + "message": "Nie" + }, + "loginOrCreateNewAccount": { + "message": "Prihláste sa, alebo vytvorte nový účet pre prístup k vášmu bezpečnému trezoru." + }, + "createAccount": { + "message": "Vytvoriť účet" + }, + "logIn": { + "message": "Prihlásiť sa" + }, + "submit": { + "message": "Potvrdiť" + }, + "emailAddressDesc": { + "message": "Použite e-mailovú adresu na prihlásenie." + }, + "yourName": { + "message": "Vaše Meno" + }, + "yourNameDesc": { + "message": "Ako by sme Vás mali volať?" + }, + "masterPass": { + "message": "Hlavné heslo" + }, + "masterPassDesc": { + "message": "Hlavné heslo je heslo, ktoré použijete 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é)" + }, + "masterPassHintLabel": { + "message": "Nápoveď pre hlavné heslo" + }, + "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": "Poslali sme vám email s nápoveďou k hlavnému heslu." + }, + "unexpectedError": { + "message": "Vyskytla sa neočakávaná chyba." + }, + "emailAddress": { + "message": "Emailová adresa" + }, + "yourVaultIsLocked": { + "message": "Váš trezor je uzamknutý. Overte sa hlavným heslom ak chcete pokračovať." + }, + "unlock": { + "message": "Odomknúť" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Uzamknúť teraz" + }, + "noItemsInList": { + "message": "Neexistujú žiadne položky na zobrazenie." + }, + "noCollectionsInList": { + "message": "Neexistujú žiadne zbierky na zobrazenie." + }, + "noGroupsInList": { + "message": "Neexistujú žiadne skupiny na zobrazenie." + }, + "noUsersInList": { + "message": "Neexistujú žiadni používatelia na zobrazenie." + }, + "noEventsInList": { + "message": "Neexistujú žiadne udalosti na zobrazenie." + }, + "newOrganization": { + "message": "Nová organizácia" + }, + "noOrganizationsList": { + "message": "Nie ste členom žiadnej organizácie. Organizácie umožňujú bezpečne zdieľať položky s ostatnými používateľmi." + }, + "versionNumber": { + "message": "Verzia $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Zadajte 6-miestny verifikačný kód z vašej overovacej aplikácie." + }, + "enterVerificationCodeEmail": { + "message": "Zadajte 6-miestny verifikačný kód, ktorý bol zaslaný emailom na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Overovací e-mail 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." + }, + "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ý týmto prehliadačom." + }, + "noTwoStepProviders2": { + "message": "Prosím, použite podporovaný prehliadač (napríklad Chrome) a/alebo pridajte iných poskytovateľov, ktorí sú lepšie podporovaní prehliadačmi (ako napríklad overovacia aplikácia)." + }, + "twoStepOptions": { + "message": "Možnosti dvojstupňového prihlásenia" + }, + "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": "Záchranný kód" + }, + "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ť s 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ť s 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." + }, + "u2fDesc": { + "message": "Použiť akýkoľvek FIDO U2F bezpečnostný kľúč pre prístup k vášmu účtu." + }, + "u2fTitle": { + "message": "FIDO U2F bezpečnostný kľúč" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Použiť akýkoľvek WebAuthn bezpečnostný kľúč pre prístup k vášmu účtu." + }, + "webAuthnMigrated": { + "message": "(Migrované z FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verifikačné kódy vám budú zaslané emailom." + }, + "continue": { + "message": "Ďalej" + }, + "organization": { + "message": "Organizácia" + }, + "organizations": { + "message": "Organizácie" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Vyberte organizáciu, do ktorej chcete presunúť tieto položky. Presunom do organizácie sa vlastníctvo položky prenáša na túto organizáciu. Po presunutí už nebudete priamym vlastníkom daných položiek." + }, + "collectionsDesc": { + "message": "Upravte zbierky s ktorými bude táto položka zdieľaná. Iba členovia organizácie s prístupom k vybraným zbierkam budú vidieť túto položku." + }, + "deleteSelectedItemsDesc": { + "message": "Vybrali ste $COUNT$ položiek na vymazanie. Ste si istý, že chcete vymazať všetky tieto položky?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Vyberte priečinok do ktorého chcete presunúť $COUNT$ vybraných položiek.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Vybrali ste $COUNT$ položku(iek). $MOVEABLE_COUNT$ položka(iek) môže(u) byť presunuté do organizácie, $NONMOVEABLE_COUNT$ nemôže(u).", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Overovací kód (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopírovať overovací kód" + }, + "warning": { + "message": "Upozornenie" + }, + "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." + }, + "export": { + "message": "Exportovať" + }, + "exportVault": { + "message": "Export trezoru" + }, + "fileFormat": { + "message": "Formát Súboru" + }, + "exportSuccess": { + "message": "Dáta z vášho trezora boli exportované." + }, + "passwordGenerator": { + "message": "Generátor hesla" + }, + "minComplexityScore": { + "message": "Minimálna úroveň zložitosti" + }, + "minNumbers": { + "message": "Minimum číslic" + }, + "minSpecial": { + "message": "Minimum špec. znakov", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Vyhnúť sa zameniteľným znakom" + }, + "regeneratePassword": { + "message": "Vygenerovať nové heslo" + }, + "length": { + "message": "Dĺžka" + }, + "numWords": { + "message": "Počet slov" + }, + "wordSeparator": { + "message": "Oddeľovač slov" + }, + "capitalize": { + "message": "Prvé písmeno veľkým", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Zahrnúť číslo" + }, + "passwordHistory": { + "message": "História hesla" + }, + "noPasswordsInList": { + "message": "Neboli nájdené žiadne heslá." + }, + "clear": { + "message": "Vyčistiť", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Účet bol Aktualizovaný" + }, + "changeEmail": { + "message": "Zmeniť email" + }, + "changeEmailTwoFactorWarning": { + "message": "Pokračovaním sa zmení e-mailová adresa vášho účtu. Nezmení sa e-mailová adresa používaná na dvojstupňové overovanie. Túto e-mailovú adresu môžete zmeniť v nastaveniach dvojfázového prihlásenia." + }, + "newEmail": { + "message": "Nový e-mail" + }, + "code": { + "message": "Kód" + }, + "changeEmailDesc": { + "message": "Zaslali sme overovací kód na $EMAIL$. Prosím skontrolujte vašu schránku a zadajte zaslaný kód nižšie pre potvrdenie zmeny vašej e-mailovej adresy.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Ak budete pokračovať, budete odhlásený a budete sa musieť opäť prihlásiť. Aktívne sedenia na iných zariadeniach môžu byť aktívne ešte hodinu." + }, + "emailChanged": { + "message": "E-mail bol zmenený" + }, + "logBackIn": { + "message": "Prosím, opäť sa prihláste." + }, + "logBackInOthersToo": { + "message": "Prosím odhláste sa. Ak používate iné Bitwarden aplikácie, odhláste sa a opäť sa prihláste aj v nich." + }, + "changeMasterPassword": { + "message": "Zmeniť hlavné heslo" + }, + "masterPasswordChanged": { + "message": "Hlavné heslo zmenené" + }, + "currentMasterPass": { + "message": "Súčasné hlavné heslo" + }, + "newMasterPass": { + "message": "Nové hlavné heslo" + }, + "confirmNewMasterPass": { + "message": "Potvrďte nové hlavné heslo" + }, + "encKeySettings": { + "message": "Nastavenia šifrovacieho kľúča" + }, + "kdfAlgorithm": { + "message": "KDF algoritmus" + }, + "kdfIterations": { + "message": "KDF iterácií" + }, + "kdfIterationsDesc": { + "message": "Vyšší počet iterácií KDF môže pomôcť chrániť vaše hlavné heslo pri brute force útoku. Odporúčame hodnotu $VALUE$ alebo viac.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Ak nastavíte KDF iterácie príliš vysoko, môže to viesť k zníženému výkonu pri prihlasovaní do Bitwardenu (a pri jeho odomykaní) na zariadeniach s pomalšimi procesormi. Odporúčame navyšovať túto hodnotu po $INCREMENT$ inkrementoch a následne otestovať na všetkých vašich zariadeniach.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Zmeniť KDF" + }, + "encKeySettingsChanged": { + "message": "Nastavenia šifrovacieho kľúča zmenené" + }, + "dangerZone": { + "message": "Riziková zóna" + }, + "dangerZoneDesc": { + "message": "Opatrne, tieto zmeny nemožno vrátiť späť!" + }, + "deauthorizeSessions": { + "message": "Odhlásiť sedenia" + }, + "deauthorizeSessionsDesc": { + "message": "Obávate sa, že vaše konto ostalo prihlásené na inom zariadení? Pokračujte nižšie a odhláste sedenia na všetkých počítačoch a zariadeniach, ktoré ste predtým použili. Tento krok je odporúčaný ak ste použili verejný počítač, alebo omylom uložili heslo na zariadení ktoré nie je vaše. Tento krok zmaže aj všetky dvojstupňové prihlásenia ktoré ste predtým použili." + }, + "deauthorizeSessionsWarning": { + "message": "Ak budete pokračovať, budete tiež odhlásený z vášho súčasného sedenia a budete sa musieť opäť prihlásiť. Tiež budete opäť požiadaný o dvojstupňové prihlásenie ak ho máte zapnuté. Aktívne sedenia na iných zariadeniach môžu ostať aktívne až po dobu jednej hodiny." + }, + "sessionsDeauthorized": { + "message": "Všetky sedenia odhlásené" + }, + "purgeVault": { + "message": "Vyprázdniť trezor" + }, + "purgedOrganizationVault": { + "message": "Trezor organizácie bol vyprázdnený." + }, + "vaultAccessedByProvider": { + "message": "Trezor sprístupnený poskytovateľom." + }, + "purgeVaultDesc": { + "message": "Pokračujte ďalej ak chcete odstrániť všetky položky a priečinky vo vašom trezore. Položky, ktoré ste zdieľali a patria k organizácii sa neodstránia." + }, + "purgeOrgVaultDesc": { + "message": "Pokračujte ďalej ak chcete odstrániť všetky položky v trezore organizácie." + }, + "purgeVaultWarning": { + "message": "Vyprázdnenie trezoru je trvalé. Operáciu nie je možné vrátiť späť." + }, + "vaultPurged": { + "message": "Dáta z vášho trezora boli vymazané." + }, + "deleteAccount": { + "message": "Odstrániť účet" + }, + "deleteAccountDesc": { + "message": "Pokračujte, ak chcete odstrániť konto a všetky súvisiace dáta." + }, + "deleteAccountWarning": { + "message": "Odstránenie účtu je trvalé. Operáciu nie je možné vrátiť späť." + }, + "accountDeleted": { + "message": "Účet bol odstránený" + }, + "accountDeletedDesc": { + "message": "Váš účet bol uzavretý a všetky súvisiace dáta vymazané." + }, + "myAccount": { + "message": "Môj účet" + }, + "tools": { + "message": "Nástroje" + }, + "importData": { + "message": "Import dát" + }, + "importError": { + "message": "Chyba importu" + }, + "importErrorDesc": { + "message": "Vyskytol sa problém s údajmi, ktoré ste sa pokúsili importovať. Vyriešte chyby uvedené nižšie v zdrojovom súbore a skúste to znova." + }, + "importSuccess": { + "message": "Dáta boli úspešne importované do trezora." + }, + "importWarning": { + "message": "Importujete údaje do $ORGANIZATION$. Vaše údaje môžu byť zdieľané s členmi tejto organizácie. Chcete pokračovať?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Dáta nie sú správne formátované. Prosím overte importovaný súbor a skúste znova." + }, + "importNothingError": { + "message": "Nič na importovanie." + }, + "importEncKeyError": { + "message": "Chyba pri dešifrovaní exportovaného súboru. Váš šifrovací kľúč sa nezhoduje so šifrovacím kľúčom použitým pri exporte údajov." + }, + "selectFormat": { + "message": "Vyberte formát súboru importu" + }, + "selectImportFile": { + "message": "Vybrať súbor na import" + }, + "orCopyPasteFileContents": { + "message": "alebo kopírujte/vložte obsah súboru" + }, + "instructionsFor": { + "message": "$NAME$ pokyny", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Možnosti" + }, + "optionsDesc": { + "message": "Prispôsobte si svoj webový trezor." + }, + "optionsUpdated": { + "message": "Nastavenia aktualizované" + }, + "language": { + "message": "Jazyk" + }, + "languageDesc": { + "message": "Zmeňte východzí jazyk pre webový trezor." + }, + "disableIcons": { + "message": "Nezobrazovať ikony stránok" + }, + "disableIconsDesc": { + "message": "Ikony stránok poskytujú rozoznateľný obrázok vedľa každého prihlasovacieho údaju vo webovom trezore." + }, + "enableGravatars": { + "message": "Povoliť Gravatar", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Použiť avatar obrázky načítané z gravatar.com." + }, + "enableFullWidth": { + "message": "Zapnúť vzhľad na celú šírku strany", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Povoliť webovému trezoru roztiahnúť sa na celú šírku okna." + }, + "default": { + "message": "Predvolené" + }, + "domainRules": { + "message": "Pravidlá pre domény" + }, + "domainRulesDesc": { + "message": "Ak máte rovnaké prihlasovacie údaje naprieč rôznymi doménami, môžete stránky označiť ako \"ekvivalentné\". \"Globálne\" domény sú tie, ktoré pre vás vopred nastavil Bitwarden." + }, + "globalEqDomains": { + "message": "Globálne Ekvivalentné Domény" + }, + "customEqDomains": { + "message": "Vlastné Ekvivalentné Domény" + }, + "exclude": { + "message": "Vylúčiť" + }, + "include": { + "message": "Vrátane" + }, + "customize": { + "message": "Prispôsobiť" + }, + "newCustomDomain": { + "message": "Vlastná doména" + }, + "newCustomDomainDesc": { + "message": "Zadajte zoznam domén oddelených čiarkou. Povolené sú iba \"základné\" domény. Nezadávajte subdomény. Napríklad zadajte \"google.com\" namiesto \"www.google.com\". Môžete tiež zadať \"androidapp://package.name\" ak chcete priradiť Android aplikáciu k iným doménam." + }, + "customDomainX": { + "message": "Vlastná doména $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domény boli aktualizované" + }, + "twoStepLogin": { + "message": "Dvojstupňové prihlásenie" + }, + "twoStepLoginDesc": { + "message": "Zabezpečte svoj účet požadovaním ďalšieho kroku pri prihlasovaní." + }, + "twoStepLoginOrganizationDesc": { + "message": "Vynúťte dvojstupňové prihlásenie pre členov organizácie nastavením poskytovateľov na úrovni organizácie." + }, + "twoStepLoginRecoveryWarning": { + "message": "Zapnutie dvojstupňového prihlásenia vás môže natrvalo vymknúť z vášho Bitwarden účtu. Záchranný kód umožňuje prístup k vášmu kontu v prípade že už nemôžete použiť svoj normálny dvojstupňový spôsob overenia. (napríklad ak stratíte zariadenie) Zákaznícka podpora nebude schopná pomôcť vám ak stratíte prístup k účtu. Preto vám odporúčame zapísať si, alebo si vytlačiť záchranný kód a uložiť ho na bezpečnom mieste." + }, + "viewRecoveryCode": { + "message": "Zobraziť záchranný kód" + }, + "providers": { + "message": "Poskytovatelia", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Povoliť" + }, + "enabled": { + "message": "Povolené" + }, + "premium": { + "message": "Prémium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Prémiové členstvo" + }, + "premiumRequired": { + "message": "Vyžaduje prémiový účet" + }, + "premiumRequiredDesc": { + "message": "Pre použitie tejto funkcie je potrebné prémiové členstvo." + }, + "youHavePremiumAccess": { + "message": "Máte premium prístup" + }, + "alreadyPremiumFromOrg": { + "message": "Už máte prístup k prémiovým funkciám vďaka organizácii ktorej ste členom." + }, + "manage": { + "message": "Spravovať" + }, + "disable": { + "message": "Vypnúť" + }, + "twoStepLoginProviderEnabled": { + "message": "Tento poskytovateľ overenia je povolený pre váš účet." + }, + "twoStepLoginAuthDesc": { + "message": "Zadajte vaše hlavné heslo ak chcete zmeniť nastavenia dvojstupňového prihlásenia." + }, + "twoStepAuthenticatorDesc": { + "message": "Nasledujte tieto kroky ak chcete nastaviť dvojstupňové prihlásenie s autentifikačnou aplikáciou:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Stiahnite si autentifikačnú aplikáciu" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Potrebujete dvojstupňovú autentifikačnú aplikáciu? Stiahnite si následujúcu" + }, + "iosDevices": { + "message": "Zariadenia so systémom iOS" + }, + "androidDevices": { + "message": "Android zariadenia" + }, + "windowsDevices": { + "message": "Zariadenia so systémom Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Odporúčame použiť tieto aplikácie, avšak aj iné autentifikačné aplikácie by mali fungovať." + }, + "twoStepAuthenticatorScanCode": { + "message": "Oskenujte QR kód s vašou autentifikačnou aplikáciou" + }, + "key": { + "message": "Kľúč" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Zadajte výsledný 6 miestny overovací kód z aplikácie" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "AK chcete pridať účet do ďalšieho zariadenia, nižšie je QR kód (alebo kľúč) ktorý požaduje vaša autentifikačná aplikácia." + }, + "twoStepDisableDesc": { + "message": "Naozaj chcete zakázať tohto poskytovateľa dvojstupňového prihlásenia?" + }, + "twoStepDisabled": { + "message": "Poskytovateľ dvojstupňového prihlásenia zakázaný." + }, + "twoFactorYubikeyAdd": { + "message": "Do svojho účtu pridať nový YubiKey" + }, + "twoFactorYubikeyPlugIn": { + "message": "Zapojte YubiKey do USB portu počítača." + }, + "twoFactorYubikeySelectKey": { + "message": "Nižšie zvoľte prvé voľné pole na vašom YubiKey." + }, + "twoFactorYubikeyTouchButton": { + "message": "Stlačte YubiKey tlačidlo." + }, + "twoFactorYubikeySaveForm": { + "message": "Ulož formulár." + }, + "twoFactorYubikeyWarning": { + "message": "Vzhľadom na obmedzenia platform, YubiKey nemôže byť použitý vo všetkých Bitwarden aplikáciách. Mali by ste povoliť inú formu dvojitého overenia, aby ste sa mohli prihlásiť k svojmu účtu ak nie je možné použiť YubiKey. Podporované platformy:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Webový trezor, desktopová aplikácia, CLI aplikácia a všetky rozšírenia pre browser na zariadení s USB portom akceptujúcim váš YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobilné aplikácie na zariadení s NFC alebo USB portom, ktoré akceptuje váš YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F kľúč $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Podpora NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Jeden z mojich kľúčov podporuje NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Ak jeden z vašich kľúčov podporuje NFC (napríklad YubiKey NEO), budete požiadaní o overenie na mobilných zariadeniach, kde bola detekovaná podpora NFC." + }, + "yubikeysUpdated": { + "message": "YubiKey kľúče aktualizované" + }, + "disableAllKeys": { + "message": "Zakázať všetky hardvérové kľúče" + }, + "twoFactorDuoDesc": { + "message": "Zadajte informácie pre Bitwarden z vášho DUO Admin panelu." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integračný kľúč" + }, + "twoFactorDuoSecretKey": { + "message": "Tajný kľúč" + }, + "twoFactorDuoApiHostname": { + "message": "Adresa hostiteľa API" + }, + "twoFactorEmailDesc": { + "message": "Nasledujte tieto kroky ak chcete nastaviť dvojstupňové prihlásenie prostredníctvom e-mailu:" + }, + "twoFactorEmailEnterEmail": { + "message": "Zadajte e-mail, ktorý chcete použiť na prijatie overovacích kódov" + }, + "twoFactorEmailEnterCode": { + "message": "Zadajte výsledný 6 miestny overovací kód z e-mailu" + }, + "sendEmail": { + "message": "Odoslať email" + }, + "twoFactorU2fAdd": { + "message": "Pridajte FIDO U2F kľúč k vášmu účtu" + }, + "removeU2fConfirmation": { + "message": "Naozaj chcete odstrániť tento bezpečnostný kľúč?" + }, + "twoFactorWebAuthnAdd": { + "message": "Pridať bezpečnostný kľúč WebAuthn do vášho účtu" + }, + "readKey": { + "message": "Načítať kľúč" + }, + "keyCompromised": { + "message": "Kľúč bol kompromitovaný." + }, + "twoFactorU2fGiveName": { + "message": "Zadajte názov pre bezpečnostný kľúč pre jeho ľahšiu identifikáciu." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Zasuňte bezpečnostný kľúč do USB portu na vašom počítači a kliknite na tlačidlo \"Načítať kľúč\"." + }, + "twoFactorU2fTouchButton": { + "message": "Ak má kľúč na sebe tlačidlo, stlačte ho." + }, + "twoFactorU2fSaveForm": { + "message": "Ulož formulár." + }, + "twoFactorU2fWarning": { + "message": "Vzhľadom na obmedzenia platform, FIDO U2F nemôže byť použitý vo všetkých Bitwarden aplikáciách. Mali by ste povoliť inú formu dvojitého overenia, aby ste sa mohli prihlásiť k svojmu účtu ak nie je možné použiť FIDO U2F. Podporované platformy:" + }, + "twoFactorU2fSupportWeb": { + "message": "Webový trezor a rozšírenia prehliadača na pracovnej stanici s prehliadačom podporujúcim U2F (Chrome, Opera, Vivaldi, alebo Firefox so zapnutou podporou FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "Čaká sa na stlačenie tlačidla na vašom kľúči" + }, + "twoFactorU2fClickSave": { + "message": "Kliknite na tlačidlo \"Uložiť\" pre povolenie bezpečnostného kľúča pre dvojstupňové prihlásenie." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Problém pri čítaní bezpečnostného kľúča. Skúste to znova." + }, + "twoFactorWebAuthnWarning": { + "message": "Vzhľadom na obmedzenia platform, WebAuthn nemôže byť použitý vo všetkých Bitwarden aplikáciách. Mali by ste povoliť inú formu dvojitého overenia, aby ste sa mohli prihlásiť k svojmu účtu ak nie je možné použiť WebAuthn. Podporované platformy:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Webový trezor a rozšírenia prehliadača na pracovnej stanici s prehliadačom podporujúcim WebAuthn (Chrome, Opera, Vivaldi, alebo Firefox so zapnutou podporou FIDO U2F)." + }, + "twoFactorRecoveryYourCode": { + "message": "Váš Bitwarden záchranný kód pre dvojstupňové overovanie" + }, + "twoFactorRecoveryNoCode": { + "message": "Zatiaľ ste nepovolili žiadneho poskytovateľa dvojstupňového overenia. Po tom, čo ste nejakého poskytovateľa povolili, môžete sa sem vrátiť pre získanie záchranného kódu." + }, + "printCode": { + "message": "Vytlačiť kód", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reporty" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Nezabezpečené stránky" + }, + "unsecuredWebsitesReportDesc": { + "message": "Používať nezabezpečené stránky s protokolom http:// môže byť nebezpečné. Ak to stránka umožňuje, mali by ste vždy používať protokol https:// aby bolo vaše pripojenie šifrované." + }, + "unsecuredWebsitesFound": { + "message": "Našli sa nezabezpečené stránky" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Našli sme $COUNT$ položky vo vašom trezore s nezabezpečenými URI. Ak to stránka podporuje, môžete zmeniť schému URI na https://.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Vo vašom trezore nemáte nezabezpečené URI." + }, + "inactive2faReport": { + "message": "Neaktívne 2FA" + }, + "inactive2faReportDesc": { + "message": "Dvojstupňové prihlásenie (2FA) je dôležité nastavenie ktoré vám pomôže zabezpečiť vaše kontá. Ak to stránka umožňuje, mali by ste 2FA použiť." + }, + "inactive2faFound": { + "message": "Našli sa prihlásenia bez dvojstupňového overenia" + }, + "inactive2faFoundDesc": { + "message": "Našli sme $COUNT$ stránok vo vašom trezore ktoré nie sú nastavené na použitie dvojstupňového overenia. (na základe údajov z twofactorauth.org) Aby ste vylepšili zabezpečenie týchto účtov, mali by ste povoliť dvojstupňové prihlásenie.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Vo vašom trezore sme nenašli účty bez dvojstupňového overenia." + }, + "instructions": { + "message": "Pokyny" + }, + "exposedPasswordsReport": { + "message": "Správa o uniknutých heslách" + }, + "exposedPasswordsReportDesc": { + "message": "Uniknuté heslá sú heslá ktoré boli odhalené v známych únikoch dát, alebo boli predávané hackermi na čiernom trhu." + }, + "exposedPasswordsFound": { + "message": "Našli sme uniknuté heslá" + }, + "exposedPasswordsFoundDesc": { + "message": "Našli sme $COUNT$ položiek vo vašom trezore ktoré používajú uniknuté heslá. Mali by ste ich zmeniť aby používali nové heslá.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Žiadne položky vo vašom trezore nemajú heslá, ktoré boli vystavené v známych únikoch." + }, + "checkExposedPasswords": { + "message": "Overiť uniknuté heslá" + }, + "exposedXTimes": { + "message": "Uniklo $COUNT$ krát", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Správa o slabých heslách" + }, + "weakPasswordsReportDesc": { + "message": "Slabé heslá sa dajú ľahko uhádnuť alebo prelomiť nástrojmi. Generátor hesiel Bitwarden vám pomôže vytvoríť silné heslá." + }, + "weakPasswordsFound": { + "message": "Našli sa slabé heslá" + }, + "weakPasswordsFoundDesc": { + "message": "Našli sme $COUNT$ položiek vo vašom trezore, ktoré nepoužívajú silné heslá. Mali by ste ich aktualizovať a použiť silnejšie heslá.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Žiadne položky vo vašom hesle nepoužívajú slabé heslá." + }, + "reusedPasswordsReport": { + "message": "Správa o viacnásobne použitých heslách" + }, + "reusedPasswordsReportDesc": { + "message": "Ak je stránka ktorú používate prelomená a používate to isté heslo aj inde, môže útočník získať prístup k viacerým vaším účtom. Mali by ste používať unikátne heslo pre každú stránku." + }, + "reusedPasswordsFound": { + "message": "Našli sa viacnásobne použité heslá" + }, + "reusedPasswordsFoundDesc": { + "message": "Vo vašom trezore sme našli $COUNT$ hesiel, ktoré sú použité na viacerých stránkach. Mali by ste ich zmeniť aby každá stránka mala unikátne heslo.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Vo vašom trezore nie sú žiadne heslá ktoré sú používané na viacerých stránkach." + }, + "reusedXTimes": { + "message": "Použité $COUNT$ krát", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Report o úniku dát" + }, + "breachDesc": { + "message": "\"Únik\" je incident kde údaje zo stránky boli ilegálne odcudzené hackermi a následne zverejnené. Overte si typ dát ktoré boli zverejnené (emaily, heslá, čísla kariet, atď.) a adekvátne reagujte - napríklad si zmeňte heslo." + }, + "breachCheckUsernameEmail": { + "message": "Overte všetky emaily alebo použivateľské mená, ktoré používate." + }, + "checkBreaches": { + "message": "Overte úniky" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ nebolo nájdené v Žiadnom zo známych únikov.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Dobré správy", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ bolo nájdene v $COUNT$ únikoch online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Nájdené zverejnené kontá" + }, + "compromisedData": { + "message": "Kompromitované údaje" + }, + "website": { + "message": "Webstránka" + }, + "affectedUsers": { + "message": "Postihnutí používatelia" + }, + "breachOccurred": { + "message": "K úniku došlo" + }, + "breachReported": { + "message": "Nahlásený únik informácii" + }, + "reportError": { + "message": "Chyba pri načítavaní reportu, skúste znova" + }, + "billing": { + "message": "Fakturácia" + }, + "accountCredit": { + "message": "Kredit na konte", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Zostatok na účte", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Pridať kredit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Čiastka", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Pridaný kredit sa zobrazí na vašom účte po tom ako je platba plne spracovaná. Spracovanie niektorých spôsobov platby je pomalšie a môže trvať dlhšie." + }, + "makeSureEnoughCredit": { + "message": "Prosím uistite sa, že váš účet má k dispozícii dostatok kreditu pre tento nákup. Ak konto nemá k dispozícii dostatok kreditu, rozdiel sa zaplatí vašou predvolenou platobnou metódou. Kredit si môžete pridať na stránke fakturácie." + }, + "creditAppliedDesc": { + "message": "Kredit na vašom účte sa dá použiť na nákupy. Akýkoľvek dostupný kredit bude automaticky použitý na zaplatenie faktúr pre tento účet." + }, + "goPremium": { + "message": "Prejsť na Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Povýšili ste na prémium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Povýšte svoj účet na prémium a odomknite skvelé extra funkcie." + }, + "premiumSignUpStorage": { + "message": "1 GB šifrovaného úložiska pre prílohy." + }, + "premiumSignUpTwoStep": { + "message": "Ďalšie možnosti dvojstupňového prihlásenia ako YubiKey, FIDO U2F a Duo." + }, + "premiumSignUpEmergency": { + "message": "Núdzový prístup" + }, + "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!" + }, + "premiumPrice": { + "message": "Všetko len za $PRICE$ /rok!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Doplnky" + }, + "premiumAccess": { + "message": "Prémium prístup" + }, + "premiumAccessDesc": { + "message": "Môžete pridať prémium prístup všetkým členom organizácie za $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Dodatočné úložisko (GB)" + }, + "additionalStorageGbDesc": { + "message": "množstvo dodatočných GB" + }, + "additionalStorageIntervalDesc": { + "message": "Váš plán zahŕňa $SIZE$ šifrovaného úložiska. Môžete si dokúpiť dodatočné miesto za $PRICE$/GB / $INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Súhrn" + }, + "total": { + "message": "Celkom" + }, + "year": { + "message": "rok" + }, + "month": { + "message": "mesiac" + }, + "monthAbbr": { + "message": "mes.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Prostredníctvom vašej platobnej metódy bude okamžite zaplatená suma za tento rok a následne sa nastaví automatická ročná platba. Platbu môžete kedykoľvek zrušiť." + }, + "paymentCharged": { + "message": "Prostredníctvom vašej platobnej metódy bude okamžite zaplatená suma za toto obdobie a následne sa nastaví automatická $INTERVAL$ platba. Platbu môžete kedykoľvek zrušiť.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Váš plán ponúka 7-dňovú skúšobnú dobu zadarmo. Z vašej platobnej metódy nebude stiahnutý poplatok, kým sa neskončí skúšobná doba. Plán môžete kedykoľvek zrušiť." + }, + "paymentInformation": { + "message": "Informácie o platbe" + }, + "billingInformation": { + "message": "Fakturačné údaje" + }, + "creditCard": { + "message": "Kreditná Karta" + }, + "paypalClickSubmit": { + "message": "Kliknite na tlačidlo PayPal a prihláste sa do vášho PayPal účtu, potom stlačte tlačidlo Odoslať a pokračujte." + }, + "cancelSubscription": { + "message": "Zrušiť predplatné" + }, + "subscriptionCanceled": { + "message": "Predplatné bolo zrušené." + }, + "pendingCancellation": { + "message": "Prebieha rušenie" + }, + "subscriptionPendingCanceled": { + "message": "Predplatné je označené na zrušenie na konci súčasného účtovacieho obdobia." + }, + "reinstateSubscription": { + "message": "Obnoviť predplatné" + }, + "reinstateConfirmation": { + "message": "Naozaj chcete zrušiť požiadavku na ukončenie predplatného a obnoviť predplatné?" + }, + "reinstated": { + "message": "Predplatné bolo obnovené." + }, + "cancelConfirmation": { + "message": "Naozaj chcete zrušiť? Stratíte prístup k všetkým funkciám, ktoré vám predplatné ponúka na konci fakturačného obdobia." + }, + "canceledSubscription": { + "message": "Predplatné bolo zrušené." + }, + "neverExpires": { + "message": "Nikdy neexpirovať" + }, + "status": { + "message": "Stav" + }, + "nextCharge": { + "message": "Ďalšia platba" + }, + "details": { + "message": "Podrobnosti" + }, + "downloadLicense": { + "message": "Stiahnuť licenciu" + }, + "updateLicense": { + "message": "Aktualizovať licenciu" + }, + "updatedLicense": { + "message": "Licencia aktualizovaná" + }, + "manageSubscription": { + "message": "Spravovať predplatné" + }, + "storage": { + "message": "Ukladací priestor" + }, + "addStorage": { + "message": "Pridať ukladací priestor" + }, + "removeStorage": { + "message": "Odstránené úložisko" + }, + "subscriptionStorage": { + "message": "Vaše predplatné zahŕňa $MAX_STORAGE$ GB šifrovaného úložiska, Momentálne používate $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Spôsob platby" + }, + "noPaymentMethod": { + "message": "Nie je vybratý žiadny spôsob platby." + }, + "addPaymentMethod": { + "message": "Pridajte spôsob platby" + }, + "changePaymentMethod": { + "message": "Zmeniť spôsob platby" + }, + "invoices": { + "message": "Faktúry" + }, + "noInvoices": { + "message": "Žiadne faktúry." + }, + "paid": { + "message": "Zaplatené", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Nezaplatené", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transakcie", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Žiadne transakcie." + }, + "chargeNoun": { + "message": "Dobiť", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refundovať", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Platby s objavia na výpise z banky ako $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Pridať GB" + }, + "gbStorageRemove": { + "message": "Odobrať GB" + }, + "storageAddNote": { + "message": "Pridaním úložiska sa zmení účtovaná suma a okamžite sa vykoná platba prostredníctvom nastavenej platobnej metódy. Prvá platba bude proporcionálna zvyšku súčasného fakturačného obdobia." + }, + "storageRemoveNote": { + "message": "Odstránením úložiska sa zmení účtovaná suma. Suma ktorú ste zaplatili navyše bude refundovaná vo forme kreditu v následujúcom fakturačnom období." + }, + "adjustedStorage": { + "message": "Úložisko upravené o $AMOUNT$ GB.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Kontaktujte zákaznícku podporu" + }, + "updatedPaymentMethod": { + "message": "Aktualizovať spôsob platby." + }, + "purchasePremium": { + "message": "Zakúpiť Prémium" + }, + "licenseFile": { + "message": "Licenčný súbor" + }, + "licenseFileDesc": { + "message": "Váš licenčný súbor bude mať názov $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Aby ste povýšili svoj účet na prémium, musíte nahrať licenčný súbor." + }, + "uploadLicenseFileOrg": { + "message": "Aby ste vytvorili organizáciu v systéme prevádzkovanom na vlastnom hardvéri, musíte nahrať licenčný súbor." + }, + "accountEmailMustBeVerified": { + "message": "Emailová adresa vášho účtu musí byť overená." + }, + "newOrganizationDesc": { + "message": "Organizácie vám umožňujú zdieľať časti trezora s ostatnými a tiež spravovať používateľov určitej skupiny ako napríklad rodiny, malého tímu alebo veľkej spoločnosti." + }, + "generalInformation": { + "message": "Všeobecné informácie" + }, + "organizationName": { + "message": "Názov organizácie" + }, + "accountOwnedBusiness": { + "message": "Tento účet je vo vlastníctve firmy." + }, + "billingEmail": { + "message": "Fakturačný e-mail" + }, + "businessName": { + "message": "Obchodné meno" + }, + "chooseYourPlan": { + "message": "Vyberte váš plán" + }, + "users": { + "message": "Používatelia" + }, + "userSeats": { + "message": "Používateľské licencie" + }, + "additionalUserSeats": { + "message": "Ďalší používatelia" + }, + "userSeatsDesc": { + "message": "počet používateľských licencií" + }, + "userSeatsAdditionalDesc": { + "message": "Plán zahŕňa $BASE_SEATS$ používateľských licencií. Dodatočných používateľov môžete pridať za $SEAT_PRICE$/mesačne za používateľa.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Koľko používateľských licencií potrebujete? Ďalšie licencie môžete pridať neskôr." + }, + "planNameFree": { + "message": "Zadarmo", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Na testovanie alebo osobné použitie do $COUNT$ používateľov.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Rodiny" + }, + "planDescFamilies": { + "message": "Pre osobné použitie a zdieľanie s rodinou a priateľmi." + }, + "planNameTeams": { + "message": "Tímy" + }, + "planDescTeams": { + "message": "Pre firmy a iné organizácie." + }, + "planNameEnterprise": { + "message": "Spoločnosť" + }, + "planDescEnterprise": { + "message": "Pre firmy a veľké organizácie." + }, + "freeForever": { + "message": "Navždy zadarmo" + }, + "includesXUsers": { + "message": "zahŕňa $COUNT$ používateľov", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Ďalší používatelia" + }, + "costPerUser": { + "message": "$COST$ za používateľa", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Obmedzené na $COUNT$ používateľov (vrátane vás)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Obmedzené na $COUNT$ zbierok", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Pridajte a zdieľajte až s $COUNT$ používateľmi", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Pridajte a zdieľajte až s neobmedzeným počtom používateľov" + }, + "createUnlimitedCollections": { + "message": "Vytvoriť neobmedzené množstvo zbierok" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ šifrovaného úložiska", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Prevádzka na vlastnom systéme (voliteľné)" + }, + "usersGetPremium": { + "message": "Používatelia získajú prístup k prémiovým funkciám" + }, + "controlAccessWithGroups": { + "message": "Kontrola prístupu používateľov prostredníctvom skupín" + }, + "syncUsersFromDirectory": { + "message": "Synchronizovať používateľov a skupiny s adresárom" + }, + "trackAuditLogs": { + "message": "Sledujte aktivity používateľov prostredníctvom auditných záznamov" + }, + "enforce2faDuo": { + "message": "Vynútiť 2FA s Duo" + }, + "priorityCustomerSupport": { + "message": "Prioritná zákaznícka podpora" + }, + "xDayFreeTrial": { + "message": "$COUNT$ dní na vyskúšanie zadarmo, môžete kedykoľvek prerušiť", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Mesačne" + }, + "annually": { + "message": "Ročne" + }, + "basePrice": { + "message": "Základná cena" + }, + "organizationCreated": { + "message": "Organizácia vytvorená" + }, + "organizationReadyToGo": { + "message": "Vaša nová organizácia je pripravená!" + }, + "organizationUpgraded": { + "message": "Vaša organizácia bola povýšená." + }, + "leave": { + "message": "Opustiť" + }, + "leaveOrganizationConfirmation": { + "message": "Ste si istý, že chcete opustiť túto organizáciu?" + }, + "leftOrganization": { + "message": "Opustili ste organizáciu." + }, + "defaultCollection": { + "message": "Predvolená kolekcia" + }, + "getHelp": { + "message": "Získať pomoc" + }, + "getApps": { + "message": "Stiahni si aplikácie" + }, + "loggedInAs": { + "message": "Prihlásený ako" + }, + "eventLogs": { + "message": "Denník udalostí" + }, + "people": { + "message": "Ľudia" + }, + "policies": { + "message": "Pravidlá" + }, + "singleSignOn": { + "message": "Prihlásenie cez prihlasovací formulár" + }, + "editPolicy": { + "message": "Upraviť pravidlá" + }, + "groups": { + "message": "Skupiny" + }, + "newGroup": { + "message": "Nová skupina" + }, + "addGroup": { + "message": "Pridať skupinu" + }, + "editGroup": { + "message": "Upraviť skupinu" + }, + "deleteGroupConfirmation": { + "message": "Naozaj chcete odstrániť túto skupinu?" + }, + "removeUserConfirmation": { + "message": "Skutočne chcete odobrať tohto užívateľa?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Upozornenie! Tento používateľ potrebuje na správu svojho šifrovania aplikáciu Key Connector. Odstránením tohto používateľa z vašej organizácie sa jeho účet natrvalo deaktivuje. Túto akciu nie je možné vrátiť späť. Chcete pokračovať?" + }, + "externalId": { + "message": "Externá id" + }, + "externalIdDesc": { + "message": "Externé Id sa môže použiť na previazanie tohto zdroja s externým systémom - napríklad s užívateľským adresárom." + }, + "accessControl": { + "message": "Riadenie prístupu" + }, + "groupAccessAllItems": { + "message": "Táto skupina môže upravovať a pristupovať k všetkým položkám." + }, + "groupAccessSelectedCollections": { + "message": "Táto skupina môže upravovať a pristupovať len k položkám ktoré sú vo vybraných zbierkach." + }, + "readOnly": { + "message": "Iba na čítanie" + }, + "newCollection": { + "message": "Nová zbierka" + }, + "addCollection": { + "message": "Pridať zbierku" + }, + "editCollection": { + "message": "Upraviť zbierku" + }, + "deleteCollectionConfirmation": { + "message": "Naozaj chcete odstrániť túto zbierku?" + }, + "editUser": { + "message": "Upraviť používateľa" + }, + "inviteUser": { + "message": "Pozvať používateľa" + }, + "inviteUserDesc": { + "message": "Pozvite používateľov do vašej organizácie zadaním emailovej adresy ich Bitwarden účtu nižšie. Ak ešte nemajú Bitwarden účet, obdržia požiadavku na jeho vytvorenie." + }, + "inviteMultipleEmailDesc": { + "message": "Môžete pozvať až $COUNT$ používateľov naraz tak, že zadáte zoznam emailových adries oddelených čiarkou.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Tento používateľ používa dvojstupňové overovanie aby si zabezpečil konto." + }, + "userAccessAllItems": { + "message": "Tento používateľ môže upravovať a pristupovať k všetkým položkám." + }, + "userAccessSelectedCollections": { + "message": "Tento používateľ môže upravovať a pristupovať len k položkám ktoré sú vo vybraných zbierkach." + }, + "search": { + "message": "Hľadať" + }, + "invited": { + "message": "Pozvaný" + }, + "accepted": { + "message": "Akceptované" + }, + "confirmed": { + "message": "Potvrdený" + }, + "clientOwnerEmail": { + "message": "E-mail klienta" + }, + "owner": { + "message": "Vlastník" + }, + "ownerDesc": { + "message": "Používateľ s najvyššími oprávneniami, môže spravovať všetky aspekty organizácie." + }, + "clientOwnerDesc": { + "message": "Tento používateľ by mal byť nezávislý od poskytovateľa. Ak sa poskytovateľ odpojí od organizácie, tento používateľ si zachová vlastníctvo organizácie." + }, + "admin": { + "message": "Administrátor" + }, + "adminDesc": { + "message": "Administrátori môžu pristupovať k a spravovať všetky položky a používateľov organizácie." + }, + "user": { + "message": "Používateľ" + }, + "userDesc": { + "message": "Obyčajný používateľ s prístupom k zbierkam organizácie." + }, + "manager": { + "message": "Manažér" + }, + "managerDesc": { + "message": "Manažéri môžu pristupovať k a spravovať pridelené zbierky v organizácii." + }, + "all": { + "message": "Všetky" + }, + "refresh": { + "message": "Obnoviť" + }, + "timestamp": { + "message": "Časová pečiatka" + }, + "event": { + "message": "Udalosť" + }, + "unknown": { + "message": "Neznáme" + }, + "loadMore": { + "message": "Načítať ďalšie" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Rozšírenie", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Počítač", + "description": "Desktop app" + }, + "webVault": { + "message": "Webový trezor" + }, + "loggedIn": { + "message": "Prihlásený." + }, + "changedPassword": { + "message": "Zmenené heslo k účtu." + }, + "enabledUpdated2fa": { + "message": "Dvojstupňové prihlasovanie zapnuté/aktualizované." + }, + "disabled2fa": { + "message": "Dvojstupňové prihlasovanie vypnuté." + }, + "recovered2fa": { + "message": "Účet uvoľnený z dvojstupňového prihlásenia." + }, + "failedLogin": { + "message": "Prihlásenie zlyhalo pre nesprávne heslu." + }, + "failedLogin2fa": { + "message": "Prihlásenie zlyhalo pre nesprávnu dvojstupňovú autorizáciu." + }, + "exportedVault": { + "message": "Trezor exportovaný." + }, + "exportedOrganizationVault": { + "message": "Trezor organizácie bol exportovaný." + }, + "editedOrgSettings": { + "message": "Nastavenia organizácie upravené." + }, + "createdItemId": { + "message": "Položka $ID$ vytvorená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Položka $ID$ upravená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Položka $ID$ odstránená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Položka $ID$ presunutá do organizácie.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Položka $ID$ zobrazená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Zobrazené heslo položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Zobrazené skryté pole položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Zobrazený bezpečnostný kód položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Skopírované heslo položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Skopírované skryté pole položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Skopírovaný bezpečnostný kód položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Automaticky vyplnené s položkou $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Zbierka $ID$ vytvorená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Zbierka $ID$ upravená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Zbierka $ID$ odstránená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Upravené pravidlo $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Skupina $ID$ vytvorená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Skupina $ID$ upravená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Skupina $ID$ odstránená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Používateľ $ID$ odstránený.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Vytvorená príloha k položke $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Odstránená príloha z položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Zbierky pre položku $ID$ boli upravené.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Používateľ $ID$ pozvaný.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Používateľ $ID$ potvrdený.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Používateľ $ID$ upravený.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Skupiny používateľa $ID$ upravené.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "SSO odpojené pre používateľa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Vytvorená organizácia $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Pridaná organizácia $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Odstránená organizácia $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Prístup k trezoru organizácie $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Zariadenie" + }, + "view": { + "message": "Zobraziť" + }, + "invalidDateRange": { + "message": "Neplatný časový rozsah." + }, + "errorOccurred": { + "message": "Vyskytla sa chyba." + }, + "userAccess": { + "message": "Používateľský prístup" + }, + "userType": { + "message": "Typ používateľa" + }, + "groupAccess": { + "message": "Skupinový prístup" + }, + "groupAccessUserDesc": { + "message": "Upraviť skupiny, do ktorých patrí používateľ." + }, + "invitedUsers": { + "message": "Používatelia pozvaní." + }, + "resendInvitation": { + "message": "Znovu poslať pozvánku" + }, + "resendEmail": { + "message": "Znovu poslať e-mail" + }, + "hasBeenReinvited": { + "message": "$USER$ bol znovu pozvaný.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Potvrdiť" + }, + "confirmUser": { + "message": "Potvrdiť používateľa" + }, + "hasBeenConfirmed": { + "message": "$USER$ bol potvrdený.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Potvrdiť používateľov" + }, + "usersNeedConfirmed": { + "message": "Máte používateľov, ktorí prijali pozvanie, ale ešte ich musíte potvrdiť. Používatelia nebudú mať prístup k organizácii, kým nebudú potvrdení." + }, + "startDate": { + "message": "Počiatočný Dátum" + }, + "endDate": { + "message": "Dátum ukončenia" + }, + "verifyEmail": { + "message": "Overiť email" + }, + "verifyEmailDesc": { + "message": "Overte váš e-mail aby ste získali prístup k dodatočným funkciám." + }, + "verifyEmailFirst": { + "message": "Emailová adresa vášho účtu musí byť overená." + }, + "checkInboxForVerification": { + "message": "Skontrolujte si doručenú poštu, mali by ste obdržať odkaz pre verifikáciu." + }, + "emailVerified": { + "message": "Vaša emailová adresa bola overená." + }, + "emailVerifiedFailed": { + "message": "Overovanie zlyhalo. Skúste si odoslať nový verifikačný e-mail." + }, + "emailVerificationRequired": { + "message": "Vyžaduje sa overenie e-mailu" + }, + "emailVerificationRequiredDesc": { + "message": "Na používanie tejto funkcie musíte overiť svoj e-mail." + }, + "updateBrowser": { + "message": "Aktualizovať prehliadač" + }, + "updateBrowserDesc": { + "message": "Používate nepodporovaný prehliadač. Webový trezor nemusí úplne fungovať." + }, + "joinOrganization": { + "message": "Pripojte sa k organizácii" + }, + "joinOrganizationDesc": { + "message": "Obdržali ste pozvánku do vyššie menovanej Organizácie. Ak chcete pozvánku prijať, musíte sa prihlásiť alebo si vytvoriť nový Bitwarden účet." + }, + "inviteAccepted": { + "message": "Pozvánka prijatá" + }, + "inviteAcceptedDesc": { + "message": "Prístup k organizácii získate keď administrátor potvrdí vaše členstvo. Keď sa tak stane, pošleme vám email." + }, + "inviteAcceptFailed": { + "message": "Prijatie pozvánky zlyhalo. Požiadajte administrátora organizácie, aby vám poslal novú pozvánku." + }, + "inviteAcceptFailedShort": { + "message": "Nepodarilo sa prijať pozvánku. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Zapamätať si e-mail" + }, + "recoverAccountTwoStepDesc": { + "message": "Ak sa nemôžete dostať k svojmu účtu prostredníctvom normálneho dvojstupňového prihlásenia, môžete použiť záchranný kód a vypnúť dvojstupňové prihlasovanie do vášho účtu." + }, + "recoverAccountTwoStep": { + "message": "Získať prístup k účtu s dvojstupňovým prihlásením" + }, + "twoStepRecoverDisabled": { + "message": "Dvojstupňové prihlasovanie k vašemu účtu bolo vypnuté." + }, + "learnMore": { + "message": "Zistiť viac" + }, + "deleteRecoverDesc": { + "message": "Zadajte vašu emailovú adresu ak chcete obnoviť a zrušiť vaše konto." + }, + "deleteRecoverEmailSent": { + "message": "Ak váš účet existuje, zaslali sme vám email s ďalšími inštrukciami." + }, + "deleteRecoverConfirmDesc": { + "message": "Požiadali ste o zrušenie vášho Bitwarden účtu. Pre potvrdenie operácie kliknite nižšie." + }, + "myOrganization": { + "message": "Moja organizácia" + }, + "deleteOrganization": { + "message": "Odstrániť organizáciu" + }, + "deletingOrganizationContentWarning": { + "message": "Zadaním hlavného hesla potvrďte odstránenie položky $ORGANIZATION$ a všetkých súvisiacich údajov. Údaje trezora v položke $ORGANIZATION$ zahŕňajú:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Používateľské účty zostanú aktívne aj po odstránení, ale už nebudú spojené s touto organizáciou." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Odstránenie $ORGANIZATION$ je trvalé a nezvratné.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organizácia odstránená" + }, + "organizationDeletedDesc": { + "message": "Organizácia a všetky súvisiace dáta boli vymazané." + }, + "organizationUpdated": { + "message": "Organizácia aktualizovaná" + }, + "taxInformation": { + "message": "Daňové informácie" + }, + "taxInformationDesc": { + "message": "Prosím kontaktujte zákaznícku podporu ak chcete poskytnúť (alebo aktualizovať) daňové informácie pre potreby fakturácie." + }, + "billingPlan": { + "message": "Plán", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Navýšiť plán", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan be providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktúra #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Zobraziť Faktúru" + }, + "downloadInvoice": { + "message": "Stiahnuť Faktúru" + }, + "verifyBankAccount": { + "message": "Overenie bankového účtu" + }, + "verifyBankAccountDesc": { + "message": "Urobili sme dva mikro-vklady na váš bankový účet (môže to trvať 1-2 pracovné dni než sa objavia na účte). Zadajte tieto čiastky na overenie bankového účtu." + }, + "verifyBankAccountInitialDesc": { + "message": "Platba prostredníctvom bankového konta je dostupná len pre zákazníkov v Spojených štátoch. Budete musieť overiť svoj bankový účet. Urobíme dva mikro-vklady v najbližších 1-2 pracovných dňoch. Zadajte tieto čiastky na fakturačnej stránke organizácie pre overenie bankového účtu." + }, + "verifyBankAccountFailureWarning": { + "message": "Ak sa nepodarí overiť bankový účet, platba zlyhá a vaše predplatné bude zrušené." + }, + "verifiedBankAccount": { + "message": "Bankový účet overený." + }, + "bankAccount": { + "message": "Bankový účet" + }, + "amountX": { + "message": "Suma $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Smerovacie číslo", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Číslo účtu" + }, + "accountHolderName": { + "message": "Majiteľ účtu" + }, + "bankAccountType": { + "message": "Typ účtu" + }, + "bankAccountTypeCompany": { + "message": "Spoločnosť (firma)" + }, + "bankAccountTypeIndividual": { + "message": "Individuálne (osobné)" + }, + "enterInstallationId": { + "message": "Zadajte ID vašej inštalácie" + }, + "limitSubscriptionDesc": { + "message": "Nastavte limit počtu používateľov predplatného. Po jeho dosiahnutí nebudete môcť pozvať nových používateľov." + }, + "maxSeatLimit": { + "message": "Maximálny počet miest (voliteľné)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maximálne náklady na miesto" + }, + "addSeats": { + "message": "Pridať licencie", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Odobrať licencie", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Úprava predplatného bude mať za následok proporcionálnu zmenu celkového účtu. Ak počet nových odporúčaných používateľov presiahne počet miest vo vašom predplatnom, okamžite dostanete primeraný poplatok za ďalších používateľov." + }, + "subscriptionUserSeats": { + "message": "Vaše predplatné zahŕňa $COUNT$ používateľov.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Obmedziť predplatné (voliteľné)" + }, + "subscriptionSeats": { + "message": "Predplatené miesta" + }, + "subscriptionUpdated": { + "message": "Predplatené bolo aktualizované" + }, + "additionalOptions": { + "message": "Ďalšie možnosti" + }, + "additionalOptionsDesc": { + "message": "Ak chcete získať ďalšiu pomoc pri správe svojho predplatného, obráťte sa na zákaznícku podporu." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Úprava predplatného bude mať za následok proporcionálnu zmenu celkového účtu. Ak počet nových odporúčaných používateľov presiahne počet miest vo vašom predplatnom, okamžite dostanete primeraný poplatok za ďalších používateľov." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Úprava predplatného bude mať za následok proporcionálnu zmenu celkového účtu. Ak počet nových odporúčaných používateľov presiahne počet miest vo vašom predplatnom, okamžite dostanete primeraný poplatok za ďalších používateľov, kým sa naplní obmedzenie $MAX$ miest.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Nemôžete pozvať viac ako $COUNT$ používateľov bez navýšenia vášho plánu.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Nemôžete pozvať viac ako $COUNT$ používateľov bez navýšenia vášho plánu. Pre navýšenie plánu kontaktujte zákaznícku podporu.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Úprava predplatného bude mať za následok proporcionálnu zmenu celkového účtu. Bez zvýšenia počtu miest na predplatné nemôžete pozvať viac ako $COUNT$ používateľov.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Pridať licencií" + }, + "seatsToRemove": { + "message": "Odobrať licencií" + }, + "seatsAddNote": { + "message": "Pridaním používateľských licencií sa zmení účtovaná suma a okamžite sa vykoná platba prostredníctvom nastavenej platobnej metódy. Prvá platba bude proporcionálna zvyšku súčasného fakturačného obdobia." + }, + "seatsRemoveNote": { + "message": "Odstránením užívateľských licencií sa zmení účtovaná suma. Suma ktorú ste zaplatili navyše bude refundovaná vo forme kreditu v následujúcom fakturačnom období." + }, + "adjustedSeats": { + "message": "Upravené o $AMOUNT$ používateľských licencií.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Kľúč aktualizovaný" + }, + "updateKeyTitle": { + "message": "Aktualizovať kľúč" + }, + "updateEncryptionKey": { + "message": "Aktualizovať šifrovací kľúč" + }, + "updateEncryptionKeyShortDesc": { + "message": "Stále používate starý šifrovací systém." + }, + "updateEncryptionKeyDesc": { + "message": "Prešli sme na väčšie šifrovacie kľúče, ktoré poskytujú lepšiu bezpečnosť a prístup k novým funkciám. Aktualizácia šifrovacieho kľúča je rýchla a jednoduchá. Jednoducho zadajte vaše hlavné heslo nižšie. Táto aktualizácia bude po nejakom čase povinná." + }, + "updateEncryptionKeyWarning": { + "message": "Po aktualizácii šifrovacieho kľúča budete požiadaní o opätovné prihlásenie do všetkých Bitwarden aplikácii ktoré momentálne používate (napríklad mobilné aplikácie, alebo rozšírenia v prehliadači). Ak sa opätovne neprihlásite (touto operáciou sa stiahnu nové šifrovacie kľúče), mohlo by to viesť k poškodeniu uložených dát. Pokúsime sa odhlásiť vás automaticky, ale môže to chvíľu trvať." + }, + "updateEncryptionKeyExportWarning": { + "message": "Všetky uložené šifrované exporty sa tiež stanú neplatnými." + }, + "subscription": { + "message": "Predplatné" + }, + "loading": { + "message": "Načítavanie" + }, + "upgrade": { + "message": "Aktualizovať" + }, + "upgradeOrganization": { + "message": "Aktualizovať organizáciu" + }, + "upgradeOrganizationDesc": { + "message": "Táto funkcia nie je dostupná pre bezplatné organizácie. Prejdite na platený plán a odomknite ďalšie funkcie." + }, + "createOrganizationStep1": { + "message": "Vytvoriť organizáciu: Krok 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Pred tým, než vytvoríte organizáciu, musíte si vytvoriť bezplatný osobný účet." + }, + "refunded": { + "message": "Vrátené" + }, + "nothingSelected": { + "message": "Nič ste nevybrali." + }, + "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." + }, + "termsOfService": { + "message": "Podmienky používania" + }, + "privacyPolicy": { + "message": "Zásady ochrany osobných údajov" + }, + "filters": { + "message": "Filtre" + }, + "vaultTimeout": { + "message": "Časový limit pre trezor" + }, + "vaultTimeoutDesc": { + "message": "Vyberte kedy vyprší časový limit trezora a vykoná sa zvolená akcia." + }, + "oneMinute": { + "message": "1 minúta" + }, + "fiveMinutes": { + "message": "5 minút" + }, + "fifteenMinutes": { + "message": "15 minút" + }, + "thirtyMinutes": { + "message": "30 minút" + }, + "oneHour": { + "message": "1 hodina" + }, + "fourHours": { + "message": "4 hodiny" + }, + "onRefresh": { + "message": "Pri obnovení stránky" + }, + "dateUpdated": { + "message": "Aktualizované", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Heslo bolo aktualizované", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organizácia je vypnutá." + }, + "licenseIsExpired": { + "message": "Licencia vypršala." + }, + "updatedUsers": { + "message": "Používatelia aktualizovaní" + }, + "selected": { + "message": "Vybraté" + }, + "ownership": { + "message": "Vlastníctvo" + }, + "whoOwnsThisItem": { + "message": "Kto vlastní túto položku?" + }, + "strong": { + "message": "Silné", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Dobré", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Slabé", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Veľmi slabé", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Obnoviť aj môj šifrovací kľúč k účtu" + }, + "rotateEncKeyTitle": { + "message": "Obnoviť šifrovací kľúč" + }, + "rotateEncKeyConfirmation": { + "message": "Naozaj chcete obnoviť váš šifrovací kľúč k účtu?" + }, + "attachmentsNeedFix": { + "message": "Táto položka má staré prílohy, ktoré je potrebné opraviť." + }, + "attachmentFixDesc": { + "message": "Táto stará príloha musí byť opravená. Kliknite ak sa chcete dozvedieť viac." + }, + "fix": { + "message": "Opraviť", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "V trezore máte staré prílohy ktoré musia byť opravené pred tým, než budete môcť obnoviť šifrovací kľúč k účtu." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Na zabezpečenie integrity šifrovacích kľúčov, skontrolujte frázu odtlačku používateľa pred tým než budete pokračovať.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Nepýtať sa pozvaných používateľov na overenie frázy odtlačku. (neodporúča sa)", + "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." + }, + "free": { + "message": "Zadarmo", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API kľúč" + }, + "apiKeyDesc": { + "message": "Váš API kľúč je možné použiť na autentifikáciu do verejného API Bitwardenu." + }, + "apiKeyRotateDesc": { + "message": "Obnovením kľúča API zneplatníte predchádzajúci API kľúč. API kľúč môžete obnoviť ak si myslíte že súčasný kľúč už nie je bezpečný." + }, + "apiKeyWarning": { + "message": "API kľúč má plný prístup k organizácii. To by by ste ho udržať v bezpečí." + }, + "userApiKeyDesc": { + "message": "Váš API kľúč je možné použiť na autentifikáciu v API Bitwardenu." + }, + "userApiKeyWarning": { + "message": "Váš API kľúč je alternatívnym autentifikačným mechanizmom. Mali by ste si ho udržať v tajnosti." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 klientské poverenia", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Zobraziť API kľúč" + }, + "rotateApiKey": { + "message": "Obnoviť API kľúč" + }, + "selectOneCollection": { + "message": "Musíte vybrať aspoň jednu zbierku." + }, + "couldNotChargeCardPayInvoice": { + "message": "Nepodarilo sa nám vykonať platbu pomocou vašej karty. Prosím pozrite si a zaplaťte neuhradenú faktúru nižšie." + }, + "inAppPurchase": { + "message": "Nákupy v aplikácii" + }, + "cannotPerformInAppPurchase": { + "message": "Tato akcia sa nedá vykonať ak používate platbu pomocou nákupu v aplikácii." + }, + "manageSubscriptionFromStore": { + "message": "Predplatné musíte spravovať v obchode kde ste vykonali nákup cez aplikáciu." + }, + "minLength": { + "message": "Minimálna dĺžka" + }, + "clone": { + "message": "Klonovať" + }, + "masterPassPolicyDesc": { + "message": "Nastavte minimálne požiadavky pre silu hlavného hesla." + }, + "twoStepLoginPolicyDesc": { + "message": "Požadujte dvojstupňové prihlásenie pre osobné účty." + }, + "twoStepLoginPolicyWarning": { + "message": "Členovia organizácie, ktorí nie su vlastníci alebo administratori a ktorí nemajú zapnuté dvojstupňové prihlásenie budú odstranení z organizácie a obdržia email s informáciou o tejto zmene." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Ste členom organizácie, ktorá vyžaduje dvojstupňové prihlásenie do vášho použivateľského účtu. Ak zakážete všetky formy dvojstupňového prihlasovania, budete automaticky odstránený z týchto organizácií." + }, + "passwordGeneratorPolicyDesc": { + "message": "Zvoľte minimálne požiadavky pre nastavenie generátora hesiel." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedno alebo viac nastavení organizácie ovplyvňujú vaše nastavenia generátora." + }, + "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é heslo nespĺňa pravidlá." + }, + "minimumNumberOfWords": { + "message": "Minimálny počet slov" + }, + "defaultType": { + "message": "Východzí typ" + }, + "userPreference": { + "message": "Nastaví používateľ" + }, + "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": "Odlhá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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Hľadať v koši" + }, + "permanentlyDelete": { + "message": "Natrvalo Odstrániť" + }, + "permanentlyDeleteSelected": { + "message": "Natrvalo odstrániť vybrané položky" + }, + "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á" + }, + "permanentlyDeletedItems": { + "message": "Položky natrvalo odstránené" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Vybrali ste $COUNT$ položiek na trvalé odstránenie. Ste si istý, že chcete natrvalo odstrániť všetky tieto položky?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Položka $ID$ natrvalo odstránená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Obnoviť" + }, + "restoreSelected": { + "message": "Obnoviť zvolené" + }, + "restoreItem": { + "message": "Obnoviť položku" + }, + "restoredItem": { + "message": "Obnovená položka" + }, + "restoredItems": { + "message": "Obnovené položky" + }, + "restoreItemConfirmation": { + "message": "Naozaj chcete obnoviť tieto položky?" + }, + "restoreItems": { + "message": "Obnoviť položky" + }, + "restoreSelectedItemsDesc": { + "message": "Vybrali ste $COUNT$ položiek na obnovenie. Ste si istý, že chcete obnoviť všetky tieto položky?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Položka $ID$ obnovená.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Skryť heslá" + }, + "countryPostalCodeRequiredDesc": { + "message": "Tieto informácie potrebujeme iba pre výpočet dane a pre finančné reporty." + }, + "includeVAT": { + "message": "Zahrnúť informáciu o DPH (voliteľné)" + }, + "taxIdNumber": { + "message": "Číslo ID pre DPH" + }, + "taxInfoUpdated": { + "message": "Daňové informácie aktualizované." + }, + "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." + }, + "identifier": { + "message": "Identifikátor" + }, + "organizationIdentifier": { + "message": "Identifikátor organizácie" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Prihláste sa prostredníctvom jednotného prihlasovania (SSO) vašej organizácie. Najskôr zadajte identifikátor vašej organizácie." + }, + "enterpriseSingleSignOn": { + "message": "Prihlásenie cez prihlasovací formulár spoločnosti (SSO)" + }, + "ssoHandOff": { + "message": "Teraz môžete zavrieť túto kartu a pokračovať v rozšírení." + }, + "includeAllTeamsFeatures": { + "message": "Všetky funkcie verzie pre Tímy, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO prihlásenie cez SAML2.0 a OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Pravidlá spoločnosti" + }, + "ssoValidationFailed": { + "message": "Overenie cez prihlasovací portál (SSO) zlyhalo" + }, + "ssoIdentifierRequired": { + "message": "Pole identifikátora organizácie je povinné." + }, + "unlinkSso": { + "message": "Odpojiť SSO" + }, + "unlinkSsoConfirmation": { + "message": "Ste si istý, že chcete odpojiť SSO pre túto organizáciu?" + }, + "linkSso": { + "message": "Prepojiť SSO" + }, + "singleOrg": { + "message": "Jedna organizácia" + }, + "singleOrgDesc": { + "message": "Zakázať používateľom stať sa členmi inej organizácie." + }, + "singleOrgBlockCreateMessage": { + "message": "Vaša súčasná organizácia má pravidlo, ktoré vám nedovoľuje pripojiť sa k viac než jednej organizácii. Kontaktujte, prosím, administrátorov vašej organizácie alebo sa prihláste prostredníctvom iného Bitwarden účtu." + }, + "singleOrgPolicyWarning": { + "message": "Členovia organizácie, ktorí nie sú vlastníkmi alebo administrátormi a už sú členmi inej organizácie, budú odstránení z vašej organizácie." + }, + "requireSso": { + "message": "Overovanie prostredníctvom jednotného prihlasovania (SSO)" + }, + "requireSsoPolicyDesc": { + "message": "Vyžadovať od používateľov prihlásenie prostredníctvom jednotného prihlasovania (SSO) spoločnosti." + }, + "prerequisite": { + "message": "Predpoklad" + }, + "requireSsoPolicyReq": { + "message": "Pravidlá spoločnosti o jednej organizácii musia byť povolené pred aktivovaním tohto pravidla." + }, + "requireSsoPolicyReqError": { + "message": "Pravidlo jednej organizácie nie je povolené." + }, + "requireSsoExemption": { + "message": "Vlastníci a administrátori organizácie sú vyňatí z uplatnenia tohto pravidla." + }, + "sendTypeFile": { + "message": "Súbor" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Vytvoriť nový Send", + "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." + }, + "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 zmazaný", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSend": { + "message": "Zmazať Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "whatTypeOfSend": { + "message": "Aký typ Send to je?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletionDate": { + "message": "Dátum vymazania" + }, + "deletionDateDesc": { + "message": "Odoslanie 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 Odoslaniu 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" + }, + "sendPasswordDesc": { + "message": "Voliteľne môžete vyžadovať heslo pre používateľov na prístup k tomuto odoslaniu.", + "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 Odoslaní.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disabled": { + "message": "Vypnuté" + }, + "sendLink": { + "message": "Odkaz na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Kopírovať odkaz na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Odstrániť Heslo" + }, + "removedPassword": { + "message": "Heslo odstránené" + }, + "removePasswordConfirmation": { + "message": "Naozaj chcete odstrániť heslo?" + }, + "hideEmail": { + "message": "Skryť moju emailovú adresu pred príjemcami." + }, + "disableThisSend": { + "message": "Vypnúť toto Odoslanie, 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." + }, + "allSends": { + "message": "Všetky Sendy" + }, + "maxAccessCountReached": { + "message": "Bol dosiahnutý maximálny počet prístupov", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Čakajúce odstránenie" + }, + "expired": { + "message": "Expirované" + }, + "searchSends": { + "message": "Hľadať Sendy", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Tento Send je chránený heslom. Pre pokračovanie zadajte prosím heslo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Neviete heslo? Požiadajte odosielateľa o heslo potrebné k prístupu k tomuto Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Tento Send je normálne skrytý. Tlačidlom nižšie môžete prepnúť jeho viditeľnosť.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Stiahnuť súbor" + }, + "sendAccessUnavailable": { + "message": "Odoslanie, ku ktorému sa pokúšate získať prístup, neexistuje alebo už nie je k dispozícii.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Súbor asociovaný s funkciou Send sa nenašiel.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Neexistujú žiadne Sendy na zobrazenie.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Núdzový prístup" + }, + "emergencyAccessDesc": { + "message": "Udeľujte a spravujte núdzový prístup pre dôveryhodné kontakty. Dôveryhodné kontakty môžu v prípade núdze požadovať prístup k zobrazeniu alebo prevzatiu vášho účtu. Navštívte našu stránku pomoci, kde nájdete ďalšie informácie a podrobnosti o tom, ako funguje zdieľanie zero knowledge." + }, + "emergencyAccessOwnerWarning": { + "message": "Ste vlastníkom jednej alebo viacerých organizácií. Ak poskytnete prístup na prevzatie núdzového kontaktu, bude môcť po prevzatí využiť všetky vaše povolenia ako vlastník." + }, + "trustedEmergencyContacts": { + "message": "Dôveryhodné núdzové kontakty" + }, + "noTrustedContacts": { + "message": "Ešte nemáte pridaný žiadny núdzový kontakt, na začiatok pozvite dôveryhodný kontakt." + }, + "addEmergencyContact": { + "message": "Pridať núdzový kontakt" + }, + "designatedEmergencyContacts": { + "message": "Označený ako núdzový kontakt" + }, + "noGrantedAccess": { + "message": "Ešte vás nikto neoznačil ako núdzový kontakt." + }, + "inviteEmergencyContact": { + "message": "Pozvať núdzový kontakt" + }, + "editEmergencyContact": { + "message": "Upraviť núdzový kontakt" + }, + "inviteEmergencyContactDesc": { + "message": "Pozvite nový núdzový kontakt zadaním jej e-mailovej adresy účtu Bitwarden nižšie. Ak už nemajú konto Bitwarden, zobrazí sa výzva na vytvorenie nového účtu." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Núdzový prístup bol iniciovaný" + }, + "emergencyAccessRecoveryApproved": { + "message": "Núdzový prístup schválený" + }, + "viewDesc": { + "message": "Môže zobraziť všetky položky vo vašom trezore." + }, + "takeover": { + "message": "Prevzatie" + }, + "takeoverDesc": { + "message": "Môže resetovať váš účet s novým hlavným heslom." + }, + "waitTime": { + "message": "Čas čakania" + }, + "waitTimeDesc": { + "message": "Čas potrebný na automatické udelenie prístupu." + }, + "oneDay": { + "message": "1 deň" + }, + "days": { + "message": "$DAYS$ dní", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Pozvaný používateľ." + }, + "acceptEmergencyAccess": { + "message": "Boli ste pozvaný, aby ste sa stali núdzovým kontaktom pre používateľa uvedeného vyššie. Ak chcete prijať pozvanie, musíte sa prihlásiť alebo vytvoriť nový účet Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Nepodarilo sa prijať pozvanie. Požiadajte používateľa o odoslanie novej pozvánky." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Nepodarilo sa prijať pozvanie. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "K núdzovým možnostiam pre tohto používateľa máte prístup po potvrdení vašej totožnosti. Keď sa to stane, pošleme vám e-mail." + }, + "requestAccess": { + "message": "Požiadať o prístup" + }, + "requestAccessConfirmation": { + "message": "Naozaj chcete požiadať o núdzový prístup? Prístup vám bude poskytnutý po $WAITTIME$ dni(dňoch) alebo vždy, keď používateľ schváli žiadosť manuálne.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Núdzový prístup bol vyžiadaný pre $USER$. Keď bude možné pokračovať, upozorníme vás e-mailom.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Schváliť" + }, + "reject": { + "message": "Odmietnuť" + }, + "approveAccessConfirmation": { + "message": "Naozaj chcete schváliť núdzový prístup? To umožní používateľovi $USER$ $ACTION$ váš účet.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Núdzový prístup schválený." + }, + "emergencyRejected": { + "message": "Núdzový prístup odmietnutý" + }, + "passwordResetFor": { + "message": "Resetovanie hesla pre $USER$. Teraz sa môžete prihlásiť s novým heslom.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Osobné vlastníctvo" + }, + "personalOwnershipPolicyDesc": { + "message": "Požadovať, aby používatelia na uloženie položiek trezoru organizácie odstránili osobné vlastníctvo." + }, + "personalOwnershipExemption": { + "message": "Vlastníci a administrátori organizácie sú vyňatí z uplatnenia tohto pravidla." + }, + "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." + }, + "disableSend": { + "message": "Zakázať Send" + }, + "disableSendPolicyDesc": { + "message": "Nedovoľte používateľom vytvárať alebo upravovať funkciu Bitwarden Send. Odstránenie existujúceho Send je stále povolené.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Používatelia organizácie, ktorí môžu spravovať politiku organizácie, sú vyňatí z uplatňovania týchto zásad." + }, + "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." + }, + "sendOptions": { + "message": "Možnosti Sendu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Nastavte možnosti pre vytváranie a úpravy Sendov.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Používatelia organizácie, ktorí môžu spravovať politiku organizácie, sú vyňatí z uplatňovania týchto zásad." + }, + "disableHideEmail": { + "message": "Nedovoľte používateľom skryť svoju e-mailovú adresu pred príjemcami pri vytváraní alebo úpravách Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "V súčasnosti platia nasledujúce pravidlá organizácie:" + }, + "sendDisableHideEmailInEffect": { + "message": "Používatelia nemajú povolené skryť svoju e-mailovú adresu pred príjemcami pri vytváraní alebo úpravách Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Upravená politika $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Cenník" + }, + "estimatedTax": { + "message": "Odhadovaná daň" + }, + "custom": { + "message": "Vlastné" + }, + "customDesc": { + "message": "Umožňuje podrobnejšiu kontrolu nad povoleniami používateľov pre pokročilé konfigurácie." + }, + "permissions": { + "message": "Povolenia" + }, + "accessEventLogs": { + "message": "Prístup k protokolom udalostí" + }, + "accessImportExport": { + "message": "Prístup k importu/exportu" + }, + "accessReports": { + "message": "Prístup k reportom" + }, + "missingPermissions": { + "message": "Na vykonanie tejto akcie vám chýbajú potrebné povolenia." + }, + "manageAllCollections": { + "message": "Spravovať všetky zbierky" + }, + "createNewCollections": { + "message": "Vytvoriť novú zbierku" + }, + "editAnyCollection": { + "message": "Upraviť ľubovoľnú zbierku" + }, + "deleteAnyCollection": { + "message": "Odstrániť ľubovoľnú zbierku" + }, + "manageAssignedCollections": { + "message": "Spravovať priradené zbierky" + }, + "editAssignedCollections": { + "message": "Upraviť priradené zbierky" + }, + "deleteAssignedCollections": { + "message": "Odstrániť priradené zbierky" + }, + "manageGroups": { + "message": "Spravovať skupiny" + }, + "managePolicies": { + "message": "Spravovať politiky" + }, + "manageSso": { + "message": "Spravovať SSO" + }, + "manageUsers": { + "message": "Spravovať používateľov" + }, + "manageResetPassword": { + "message": "Správa resetovania hesla" + }, + "disableRequiredError": { + "message": "Pred zakázaním tejto zásady musíte ručne vypnúť zásadu $POLICYNAME$.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Politika organizácie ovplyvňuje vaše možnosti vlastníctva." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Zásady organizácie zakázali importovanie položiek do vášho osobného trezoru." + }, + "personalOwnershipCheckboxDesc": { + "message": "Zakázať osobné vlastníctvo pre používateľov organizácie" + }, + "textHiddenByDefault": { + "message": "Pri prístupe k Odoslaniu, predvolene skryť text", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Priateľský názov pre popísanie tohto 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ť." + }, + "copySendLinkOnSave": { + "message": "Kopírovať odkaz na zdieľanie tohto Send do schránky počas ukladania." + }, + "sendLinkLabel": { + "message": "Odkaz na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send ľahko a bezpečne prenáša citlivé dočasné informácie ostatným.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Viac informácií o", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Zdieľajte text alebo súbory priamo s kýmkoľvek." + }, + "sendVaultCardLearnMore": { + "message": "Ďalšie informácie", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "pozrite", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "ako to funguje", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "alebo", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "to skúste teraz", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "alebo", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "zaregistrujte", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "skúste to ešte dnes.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden používateľ $USER_IDENTIFIER$ zdieľal nasledujúce s vami", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Používateľ Bitwardenu, ktorý vytvoril tento Send, skryl e-mailové adresy pred príjemcami. Mali by ste zvážiť, či dôverujete zdrojovému odkazu pred jeho použitím alebo stiahnutím jeho obsahu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Uvedený dátum exspirácie nie je platný." + }, + "deletionDateIsInvalid": { + "message": "Uvedený dátum odstránenia nie je platný." + }, + "expirationDateAndTimeRequired": { + "message": "Vyžaduje sa dátum a čas vypršania platnosti." + }, + "deletionDateAndTimeRequired": { + "message": "Vyžaduje sa dátum a čas odstránenia." + }, + "dateParsingError": { + "message": "Pri ukladaní dátumov odstránenia a vypršania platnosti sa vyskytla chyba." + }, + "webAuthnFallbackMsg": { + "message": "Na overenie 2FA, prosím, kliknite na tlačidlo nižšie." + }, + "webAuthnAuthenticate": { + "message": "Overiť cez WebAuthn" + }, + "webAuthnNotSupported": { + "message": "Tento prehliadač nepodporuje WebAuthn." + }, + "webAuthnSuccess": { + "message": "WebAuthn bol úspešne overený! Túto kartu môžete zavrieť." + }, + "hintEqualsPassword": { + "message": "Nápoveda pre heslo nemôže byť rovnaká ako heslo." + }, + "enrollPasswordReset": { + "message": "Zaregistrovať sa pre obnovu hesla" + }, + "enrolledPasswordReset": { + "message": "Zaregistrovaný pre obnovu hesla" + }, + "withdrawPasswordReset": { + "message": "Odhlásiť sa z obnovy hesla" + }, + "enrollPasswordResetSuccess": { + "message": "Registrácia úspešná!" + }, + "withdrawPasswordResetSuccess": { + "message": "Odhlásenie úspešné!" + }, + "eventEnrollPasswordReset": { + "message": "Používateľ $ID$ sa registroval na pomoc s obnovou hesla.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Používateľ $ID$ sa odhlásil z pomoci obnovy hesla.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Obnoviť hlavné heslo pre používateľa $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Resetovať odkaz SSO pre používateľa $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Obnoviť heslo" + }, + "resetPasswordLoggedOutWarning": { + "message": "Pokračovaním sa $NAME$ odhlási z aktuálnej relácie a bude sa musieť znova prihlásiť. Aktívne relácie na iných zariadeniach môžu zostať aktívne až jednu hodinu.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "tento používateľ" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Jedno alebo viac pravidiel organizácie požadujú, aby hlavné heslo spĺňalo nasledujúce požiadavky:" + }, + "resetPasswordSuccess": { + "message": "Heslo bolo úspešne obnovené!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Registrácia umožní správcom organizácie zmeniť vaše hlavné heslo. Naozaj sa chcete zaregistrovať?" + }, + "resetPasswordPolicy": { + "message": "Hlavné heslo obnovené" + }, + "resetPasswordPolicyDescription": { + "message": "Umožní správcom v organizácii resetovať hlavné heslo používateľov organizácie." + }, + "resetPasswordPolicyWarning": { + "message": "Používatelia v organizácii sa budú musieť sami zaregistrovať alebo byť automaticky zaregistrovaní predtým, ako budú môcť správcovia resetovať ich hlavné heslo." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatická registrácia" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Všetci používatelia budú po prijatí pozvánky automaticky zaregistrovaní na obnovenie hesla." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Používatelia, ktorí už v organizácii sú, nebudú spätne zaregistrovaní na obnovenie hesla. Budú sa musieť sami zaregistrovať predtým, ako im administrátori obnovia hlavné heslo." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Automaticky zaregistrovať nových používateľov" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Prázdná odpoveď Organization Keys" + }, + "resetPasswordDetailsError": { + "message": "Odpoveď na obnovenie hesla je prázdna" + }, + "trashCleanupWarning": { + "message": "Položky ktoré boli v Koši viac ako 30 dní budú automaticky vymazané." + }, + "trashCleanupWarningSelfHosted": { + "message": "Položky v Koši budú po nejakej dobe automaticky vymazané." + }, + "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ť." + }, + "reinviteSelected": { + "message": "Znovu poslať pozvánky" + }, + "noSelectedUsersApplicable": { + "message": "Táto akcia sa nevzťahuje na žiadneho z vybraných používateľov." + }, + "removeUsersWarning": { + "message": "Naozaj chcete odstrániť týchto používateľov? Dokončenie procesu môže trvať niekoľko sekúnd a nie je možné ho prerušiť ani zrušiť." + }, + "theme": { + "message": "Motív" + }, + "themeDesc": { + "message": "Zvoľte motív pre webový trezor." + }, + "themeSystem": { + "message": "Použiť systémový motív" + }, + "themeDark": { + "message": "Tmavý" + }, + "themeLight": { + "message": "Svetlý" + }, + "confirmSelected": { + "message": "Potvrdiť vybrané" + }, + "bulkConfirmStatus": { + "message": "Stav hromadnej akcie" + }, + "bulkConfirmMessage": { + "message": "Úspešne potvrdené." + }, + "bulkReinviteMessage": { + "message": "Opätovné pozvanie úspešné." + }, + "bulkRemovedMessage": { + "message": "Odstránenie úspešné" + }, + "bulkFilteredMessage": { + "message": "Vylúčené, neplatí pre túto akciu." + }, + "fingerprint": { + "message": "Odtlačok prsta" + }, + "removeUsers": { + "message": "Odstrániť používateľov" + }, + "error": { + "message": "Chyba" + }, + "resetPasswordManageUsers": { + "message": "Správa používateľov musí byť povolená aj s oprávnením spravovať obnovenie hesla" + }, + "setupProvider": { + "message": "Nastavenie poskytovateľa" + }, + "setupProviderLoginDesc": { + "message": "Boli ste pozvaný, aby ste nastavili nového poskytovateľa. Ak chcete pokračovať, musíte sa prihlásiť alebo si vytvoriť nový Bitwarden účet." + }, + "setupProviderDesc": { + "message": "Na dokončenie nastavenia poskytovateľa zadajte nižšie uvedené údaje. V prípade akýchkoľvek otázok kontaktujte zákaznícku podporu." + }, + "providerName": { + "message": "Názov poskytovateľa" + }, + "providerSetup": { + "message": "Poskytovateľ bol nastavený." + }, + "clients": { + "message": "Klienti" + }, + "providerAdmin": { + "message": "Správca poskytovateľa" + }, + "providerAdminDesc": { + "message": "Používateľ s najvyšším prístupom, ktorý môže spravovať všetky aspekty vášho poskytovateľa, ako aj prístup a správu klientskych organizácií." + }, + "serviceUser": { + "message": "Používateľ služby" + }, + "serviceUserDesc": { + "message": "Používatelia služby môžu pristupovať a spravovať všetky klientske organizácie." + }, + "providerInviteUserDesc": { + "message": "Pozvite používateľov k vášmu poskytovateľovi zadaním emailovej adresy ich Bitwarden účtu nižšie. Ak ešte nemajú Bitwarden účet, budú vyzvaní na jeho vytvorenie." + }, + "joinProvider": { + "message": "Pripojte sa k poskytovateľovi" + }, + "joinProviderDesc": { + "message": "Boli ste pozvaný, aby ste sa pridali k poskytovateľovi uvedenému vyššie. Ak chcete pozvánku prijať, musíte sa prihlásiť alebo si vytvoriť nový Bitwarden účet." + }, + "providerInviteAcceptFailed": { + "message": "Nie je možné prijať pozvanie. Požiadajte správcu poskytovateľa o zaslanie novej pozvánky." + }, + "providerInviteAcceptedDesc": { + "message": "Prístup k poskytovateľovi získate, keď administrátor potvrdí vaše členstvo. Keď sa tak stane, pošleme vám e-mail." + }, + "providerUsersNeedConfirmed": { + "message": "Máte používateľov, ktorí prijali pozvanie, ale ešte ich musíte potvrdiť. Používatelia nebudú mať prístup k poskytovateľovi, kým nebudú potvrdení." + }, + "provider": { + "message": "Poskytovateľ" + }, + "newClientOrganization": { + "message": "Nová klientská organizácia" + }, + "newClientOrganizationDesc": { + "message": "Vytvorí novú klientsku organizáciu, ktorá bude s vami spojená ako poskytovateľ. K tejto organizácii budete mať prístup a budete ju môcť spravovať." + }, + "addExistingOrganization": { + "message": "Pridať existujúcu organizáciu" + }, + "myProvider": { + "message": "Môj poskytovateľ" + }, + "addOrganizationConfirmation": { + "message": "Naozaj chcete pridať $ORGANIZATION$ ako klienta $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organizácia bola úspešne pridaná k poskytovateľovi" + }, + "accessingUsingProvider": { + "message": "Prístup k organizácii pomocou poskytovateľa $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Poskytovateľ je zakázaný." + }, + "providerUpdated": { + "message": "Poskytovateľ aktualizovaný" + }, + "yourProviderIs": { + "message": "Váš poskytovateľ je $PROVIDER$. Má administratívne a fakturačné práva pre vašu organizáciu.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Organizácia $ORGANIZATION$ bola odpojená od vášho poskytovateľa.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Naozaj chcete túto organizáciu odpojiť? Organizácia bude naďalej existovať, ale už nebude spravovaná poskytovateľom." + }, + "add": { + "message": "Pridať" + }, + "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 aktualizovať vaše hlavné heslo teraz. 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." + }, + "masterPasswordInvalidWarning": { + "message": "Vaše hlavné heslo nespĺňa pravidlá tejto organizácie. Ak sa chcete pripojiť k tejto organizácii, musíte teraz aktualizovať vaše hlavné heslo. 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." + }, + "maximumVaultTimeout": { + "message": "Časový limit pre trezor" + }, + "maximumVaultTimeoutDesc": { + "message": "Nastaviť maximálny časový limit trezora pre všetkých používateľov." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximálny časový limit pre trezor" + }, + "invalidMaximumVaultTimeout": { + "message": "Neplatný maximálny časový limit pre trezor." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Vlastný časový limit pre trezor" + }, + "vaultTimeoutToLarge": { + "message": "Časový limit vášho trezora prekračuje obmedzenia nastavené vašou organizáciou." + }, + "disablePersonalVaultExport": { + "message": "Zakázať export osobného trezora" + }, + "disablePersonalVaultExportDesc": { + "message": "Zakazuje používateľom exportovať údaje zo súkromného trezora." + }, + "vaultExportDisabled": { + "message": "Export trezoru je zakázaný" + }, + "personalVaultExportPolicyInEffect": { + "message": "Jedna alebo viacero zásad organizácie vám bráni exportovať váš osobný trezor." + }, + "selectType": { + "message": "Vyberte typ SSO" + }, + "type": { + "message": "Typ" + }, + "openIdConnectConfig": { + "message": "Konfigurácia OpenID Connect" + }, + "samlSpConfig": { + "message": "Konfigurácia poskytovateľa služieb SAML" + }, + "samlIdpConfig": { + "message": "Konfigurácia poskytovateľa identít SAML" + }, + "callbackPath": { + "message": "Cesta spätného volania" + }, + "signedOutCallbackPath": { + "message": "Cesta spätného volania na odhlásenie" + }, + "authority": { + "message": "Autorita" + }, + "clientId": { + "message": "ID klienta" + }, + "clientSecret": { + "message": "Tajný kľúč klienta" + }, + "metadataAddress": { + "message": "Adresa metadát" + }, + "oidcRedirectBehavior": { + "message": "Správanie pri presmerovaní OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Získanie žiadostí z koncového bodu informácií o používateľovi" + }, + "additionalScopes": { + "message": "Vlastné rozsahy" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "ID subjektu SP" + }, + "spMetadataUrl": { + "message": "URL metadát SAML 2.0" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Formát názvu ID" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Overiť certifikáty" + }, + "idpEntityId": { + "message": "ID subjektu" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "Verejný certifikát X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Odstrániť hlavné heslo" + }, + "removedMasterPassword": { + "message": "Hlavné heslo bolo odstránené." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "SSO povolené" + }, + "disabledSso": { + "message": "SSO zakázané" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Úspešné! Key Connector je dostupný." + }, + "keyConnectorTestFail": { + "message": "Key Connector je nedostupný. Skontrolujte adresu URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "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" + }, + "exportingOrganizationVaultTitle": { + "message": "Exportovanie trezora organizácie" + }, + "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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Exportované budú iba položky trezora organizácie spojené s $ORGANIZATION$. Položky osobného trezora a položky z iných organizácií nebudú zahrnuté.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Použiť možnosti subadresovania svojho poskytovateľa e-mailu." + }, + "catchallEmail": { + "message": "Catch-all e-mail" + }, + "catchallEmailDesc": { + "message": "Použiť doručenú poštu typu catch-all nastavenú na doméne." + }, + "random": { + "message": "Náhodné" + }, + "randomWord": { + "message": "Náhodné slovo" + }, + "service": { + "message": "Služba" + } +} diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json new file mode 100644 index 0000000000..1df7f9f0e6 --- /dev/null +++ b/apps/web/src/locales/sl/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Spletni sef", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Kakšne vrste vnos je to?" + }, + "name": { + "message": "Ime" + }, + "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" + }, + "newPassword": { + "message": "Novo geslo" + }, + "passphrase": { + "message": "Šifrirna fraza" + }, + "notes": { + "message": "Zapiski" + }, + "customFields": { + "message": "Polja po meri" + }, + "cardholderName": { + "message": "Ime imetnika kartice" + }, + "number": { + "message": "Številka" + }, + "brand": { + "message": "Znamka" + }, + "expiration": { + "message": "Potek" + }, + "securityCode": { + "message": "Varnostna koda (CVV)" + }, + "identityName": { + "message": "Ime identitete" + }, + "company": { + "message": "Podjetje" + }, + "ssn": { + "message": "EMŠO" + }, + "passportNumber": { + "message": "Številka potnega lista" + }, + "licenseNumber": { + "message": "Številka dovoljenja" + }, + "email": { + "message": "E-pošta" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "title": { + "message": "Naziv" + }, + "mr": { + "message": "G" + }, + "mrs": { + "message": "Ga" + }, + "ms": { + "message": "Gdč" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mesec poteka" + }, + "expirationYear": { + "message": "Leto poteka" + }, + "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." + }, + "remove": { + "message": "Odstrani" + }, + "unassigned": { + "message": "Nedodeljeno" + }, + "noneFolder": { + "message": "Brez mape", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj mapo" + }, + "editFolder": { + "message": "Uredi mapo" + }, + "baseDomain": { + "message": "Domena", + "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": "Način ujemanja", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Privzet način ujemanja", + "description": "Default URI match detection for auto-fill." + }, + "never": { + "message": "Nikoli" + }, + "toggleVisibility": { + "message": "Preklopi vidljivost" + }, + "toggleCollapse": { + "message": "Skrči/Razširi", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generiraj geslo" + }, + "checkPassword": { + "message": "Preveri izpostavljenost gesla." + }, + "passwordExposed": { + "message": "To geslo je bilo med ukradenimi podatki izpostavljeno $VALUE$ krat. Morali bi ga zamenjati.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "To geslo ni bilo najdeno med do sedaj znanimi krajami podatkov. Njegova uporaba bi morala biti varna." + }, + "save": { + "message": "Shrani" + }, + "cancel": { + "message": "Prekliči" + }, + "canceled": { + "message": "Preklicano" + }, + "close": { + "message": "Zapri" + }, + "delete": { + "message": "Izbriši" + }, + "favorite": { + "message": "Priljubljeni" + }, + "unfavorite": { + "message": "Odstrani iz priljubljenih" + }, + "edit": { + "message": "Uredi" + }, + "searchCollection": { + "message": "Preišči zbirko" + }, + "searchFolder": { + "message": "Preišči mapo" + }, + "searchFavorites": { + "message": "Preišči priljubljene" + }, + "searchType": { + "message": "Način iskanja", + "description": "Search item type" + }, + "searchVault": { + "message": "Preišči trezor" + }, + "allItems": { + "message": "Vsi elementi" + }, + "favorites": { + "message": "Priljubljeno" + }, + "types": { + "message": "Vrste" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeCard": { + "message": "Kartica" + }, + "typeIdentity": { + "message": "Identiteta" + }, + "typeSecureNote": { + "message": "Varni zapisek" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Mape" + }, + "collections": { + "message": "Zbirke" + }, + "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": "Regija / provinca" + }, + "zipPostalCode": { + "message": "Poštna številka" + }, + "country": { + "message": "Država" + }, + "shared": { + "message": "Deljeno" + }, + "attachments": { + "message": "Priponke" + }, + "select": { + "message": "Izberi" + }, + "addItem": { + "message": "Dodaj vnos" + }, + "editItem": { + "message": "Uredi vnos" + }, + "viewItem": { + "message": "Ogled vnosa" + }, + "ex": { + "message": "npr.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Drugo" + }, + "share": { + "message": "Deli" + }, + "moveToOrganization": { + "message": "Premakni v organizacijo" + }, + "valueCopied": { + "message": "$VALUE$ kopirana", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopiraj vrednost", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopiraj geslo", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopiraj uporabniško ime", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopiraj številko", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiraj varnostno kodo", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopiraj URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Moj sef" + }, + "vault": { + "message": "Sef" + }, + "moveSelectedToOrg": { + "message": "Premakni označeno v organizacijo" + }, + "deleteSelected": { + "message": "Izbriši izbrano" + }, + "moveSelected": { + "message": "Premakni izbrano" + }, + "selectAll": { + "message": "Izberi vse" + }, + "unselectAll": { + "message": "Odizberi vse" + }, + "launch": { + "message": "Zaženi" + }, + "newAttachment": { + "message": "Dodaj novo priponko" + }, + "deletedAttachment": { + "message": "Izbriši priponko" + }, + "deleteAttachmentConfirmation": { + "message": "Ste prepričani, da želite izbrisati to prilogo?" + }, + "attachmentSaved": { + "message": "Ta priloga 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." + }, + "addedItem": { + "message": "Dodaj vnos" + }, + "editedItem": { + "message": "Uredi vnos" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ premaknjen v $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Označeni vnosi premaknjeni v $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Izbriši vnos" + }, + "deleteFolder": { + "message": "Izbriši mapo" + }, + "deleteAttachment": { + "message": "Izbriši priponoko" + }, + "deleteItemConfirmation": { + "message": "Ali ste prepričani, da želite izbrisati?" + }, + "deletedItem": { + "message": "Vnos poslan v smeti" + }, + "deletedItems": { + "message": "Vnosi poslani v smeti" + }, + "movedItems": { + "message": "Premaknjeni vnosi" + }, + "overwritePasswordConfirmation": { + "message": "Ste prepričani, da želite povoziti obstoječe geslo?" + }, + "editedFolder": { + "message": "Mapa je bila urejena" + }, + "addedFolder": { + "message": "Mapa je bila dodana" + }, + "deleteFolderConfirmation": { + "message": "Ste prepričani, da želite izbrisati to mapo?" + }, + "deletedFolder": { + "message": "Mapa je bila izbrisana" + }, + "loggedOut": { + "message": "Odjavljen" + }, + "loginExpired": { + "message": "Vaša seja je potekla." + }, + "logOutConfirmation": { + "message": "Ste prepričani, da se želite odjaviti?" + }, + "logOut": { + "message": "Odjavi se" + }, + "ok": { + "message": "V redu" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "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" + }, + "emailAddressDesc": { + "message": "Za prijavo boste uporabili vaš e-poštni naslov." + }, + "yourName": { + "message": "Vaše ime" + }, + "yourNameDesc": { + "message": "Kako vas naj kličemo?" + }, + "masterPass": { + "message": "Glavno geslo" + }, + "masterPassDesc": { + "message": "Glavno geslo je geslo, ki ga uporabljate za dostop do vašega trezorja. Zelo pomembno je, da ne pozabite vaše glavno geslo. Gesla ni mogoče obnoviti v primeru, če ga pozabite." + }, + "masterPassHintDesc": { + "message": "Namig glavnega gesla vam lahko pomaga, da se spomnite vašega gesla, če ga pozabite." + }, + "reTypeMasterPass": { + "message": "Ponovno vnesite glavno geslo" + }, + "masterPassHint": { + "message": "Namig za glavno geslo (neobvezno)" + }, + "masterPassHintLabel": { + "message": "Namig za glavno geslo" + }, + "settings": { + "message": "Nastavitve" + }, + "passwordHint": { + "message": "Namig za geslo" + }, + "enterEmailToGetHint": { + "message": "Vnesite e-poštni naslov vašega računa, da prejmete namig za vaše glavno geslo." + }, + "getMasterPasswordHint": { + "message": "Pridobi namig za glavno geslo" + }, + "emailRequired": { + "message": "E-poštni naslov je obvezen." + }, + "invalidEmail": { + "message": "Neveljaven e-poštni naslov." + }, + "masterPassRequired": { + "message": "Glavno geslo je obvezno." + }, + "masterPassLength": { + "message": "Glavno geslo mora biti dolgo najmanj 8 znakov." + }, + "masterPassDoesntMatch": { + "message": "Potrditev glavnega gesla se ne ujema." + }, + "newAccountCreated": { + "message": "Vaš nov račun je bil ustvarjen! Sedaj se lahko prijavite." + }, + "masterPassSent": { + "message": "Poslali smo vam epoštno spročilo z namigom za vaše glavno geslo." + }, + "unexpectedError": { + "message": "Prišlo je do nepričakovane napake." + }, + "emailAddress": { + "message": "E-poštni naslov" + }, + "yourVaultIsLocked": { + "message": "Vaš trezor je zaklenjen. Potrdite vaše glavno geslo za nadaljevanje." + }, + "unlock": { + "message": "Odkleni" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Zakleni zdaj" + }, + "noItemsInList": { + "message": "Ni vnosov za prikaz." + }, + "noCollectionsInList": { + "message": "Ni zbirk za prikaz." + }, + "noGroupsInList": { + "message": "Ni skupin za prikaz." + }, + "noUsersInList": { + "message": "Ni uporabnikov za prikaz." + }, + "noEventsInList": { + "message": "Ni dogodkov za prikaz." + }, + "newOrganization": { + "message": "Nova organizacija" + }, + "noOrganizationsList": { + "message": "Ne pripadate nobeni organizaciji. Organizacije omogočajo varno deljenje vnosov med uporabniki." + }, + "versionNumber": { + "message": "Različica $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Vnesite 6-mestno potrditveno kodo iz vaše avtorizacijske aplikacije." + }, + "enterVerificationCodeEmail": { + "message": "Vnesite 6-mestno potrditveno kodo, poslano na e-poštni naslov $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 posreduj potrditveno kodo na e-poštni naslov" + }, + "useAnotherTwoStepMethod": { + "message": "Uporabi drug dvostopenjski način vpisa" + }, + "insertYubiKey": { + "message": "Svoj YubiKey ključek vstavite v USB režo in pritisnite na njegovo tipko." + }, + "insertU2f": { + "message": "Svoj varnostni USB ključek vstavite v USB režo. Če ima gumb, ga sedaj pritisnite." + }, + "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": "Uporabite enega izmed podprtih spletnih brskalnikov (npr. Chrome) in/ali dodajte ponudnika, ki je bolje podprt na različnih brskalnikih (npr. aplikacija za avtentikacijo)." + }, + "twoStepOptions": { + "message": "Možnosti dvostopenjske prijave" + }, + "recoveryCodeDesc": { + "message": "Ste izgubili dostop do vseh vaših ponudnikov dvostopenjse prijave? Uporabite svoje kode za obnovitev in tako onemogočite dvostopenjsko prijavo v svoj račun." + }, + "recoveryCodeTitle": { + "message": "Koda za obnovitev" + }, + "authenticatorAppTitle": { + "message": "Aplikacija za avtentikacijo" + }, + "authenticatorAppDesc": { + "message": "Upoabite aplikacijo za avtentikacijo (npr. Authy ali Google Authenticator), ki za vas ustvarja kode z omejenim časom veljavnosti.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey varnostni ključ za enkratna gesla" + }, + "yubiKeyDesc": { + "message": "Uporabite YubiKey za dostop do svojega računa. Podprti so YubiKey serije 4, serije 5 in naprave NEO." + }, + "duoDesc": { + "message": "Preverjajte z uporabo Duo Security, ki omogoča prijavo z Duo Mobile aplikacijo, SMS sporočilom, telefonskim klicem ali U2F varnostnim ključem.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Preverjajte z Duo Security za vašo organizacijo, ki omogoča prijavo z Duo Mobile aplikacijo, SMS sporočilom, telefonskim klicem ali U2F varnostnim ključem.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "u2fDesc": { + "message": "Za dostop do vašega računa uporabite katerikoli FIDO U2F varnostni ključ." + }, + "u2fTitle": { + "message": "FIDO U2F varnostni ključ" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Za dostop do vašega računa uporabite katerikoli WebAuthn varnostni ključ." + }, + "webAuthnMigrated": { + "message": "(Preseljeno iz FIDO)" + }, + "emailTitle": { + "message": "E-pošta" + }, + "emailDesc": { + "message": "Potrditvene kode vam bodo posredovane po e-pošti." + }, + "continue": { + "message": "Nadaljuj" + }, + "organization": { + "message": "Organizacija" + }, + "organizations": { + "message": "Organizacije" + }, + "moveToOrgDesc": { + "message": "Izberi organizacijo s katero želite deliti ta vnos. Delitev prenese lasništvo vnosa na organizacijo. Po delitvi ne boste več direktni lastnik tega vnosa." + }, + "moveManyToOrgDesc": { + "message": "Izberi organizacijo s katero želite deliti ta vnos. Delitev prenese lasništvo vnosa na organizacijo. Po delitvi ne boste več direktni lastnik tega vnosa." + }, + "collectionsDesc": { + "message": "Uredite zbirke s katerimi želite deliti ta predmet. Predmet bodo lahko videli le uporabniki orgnanizacije, ki bodo imajo dostop do teh zbirk." + }, + "deleteSelectedItemsDesc": { + "message": "Izbrali ste $COUNT$ vnos(ov) za izbris. Ali ste prepričani, da želite izbrisati vse izbrane vnose?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verifikacijska koda (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiraj verifikacijsko kodo" + }, + "warning": { + "message": "Opozorilo" + }, + "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." + }, + "export": { + "message": "Izvozi" + }, + "exportVault": { + "message": "Izvozi sef" + }, + "fileFormat": { + "message": "Format datoteke" + }, + "exportSuccess": { + "message": "Podatki vašega sefa so bili izvoženi." + }, + "passwordGenerator": { + "message": "Ustvarjalnik gesel" + }, + "minComplexityScore": { + "message": "Najnižja ocena kompleksnosti" + }, + "minNumbers": { + "message": "Najmanj števil" + }, + "minSpecial": { + "message": "Najmanj posebnih znakov", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Izogibaj se dvoumnim znakom" + }, + "regeneratePassword": { + "message": "Regeneriraj geslo" + }, + "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" + }, + "passwordHistory": { + "message": "Zgodovina gesla" + }, + "noPasswordsInList": { + "message": "Ni gesel za prikaz." + }, + "clear": { + "message": "Počisti", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Račun posodobljen" + }, + "changeEmail": { + "message": "Spremeni e-poštni naslov" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Novi e-poštni naslov" + }, + "code": { + "message": "Koda" + }, + "changeEmailDesc": { + "message": "We have emailed a verification code to $EMAIL$. Please check your email for this code and enter it below to finalize the email address change.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "E-poštni naslov spremenjen" + }, + "logBackIn": { + "message": "Prosimo, ponovno se prijavite." + }, + "logBackInOthersToo": { + "message": "Prosimo, ponovno se prijavite. Če uporabljate druge Bitwarden aplikacije, se odjavite in ponovno prijavite tudi tam." + }, + "changeMasterPassword": { + "message": "Spremeni glavno geslo" + }, + "masterPasswordChanged": { + "message": "Glavno geslo je bilo spremenjeno" + }, + "currentMasterPass": { + "message": "Aktualno glavno geslo" + }, + "newMasterPass": { + "message": "Nastavite glavno geslo" + }, + "confirmNewMasterPass": { + "message": "Potrdite novo geslo" + }, + "encKeySettings": { + "message": "Nastavitve kodirnega ključa" + }, + "kdfAlgorithm": { + "message": "KDF algoritem" + }, + "kdfIterations": { + "message": "KDF iteracije" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Spremeni KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Danger Zone" + }, + "dangerZoneDesc": { + "message": "Careful, these actions are not reversible!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Počisti trezor" + }, + "purgedOrganizationVault": { + "message": "Trezor organizacije je bil počiščen." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Vaš trezor je bil počiščen." + }, + "deleteAccount": { + "message": "Izbriši račun" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Account Deleted" + }, + "accountDeletedDesc": { + "message": "Your account has been closed and all associated data has been deleted." + }, + "myAccount": { + "message": "Moj račun" + }, + "tools": { + "message": "Orodja" + }, + "importData": { + "message": "Uvoz podatkov" + }, + "importError": { + "message": "Napaka pri uvozu" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Data has been successfully imported into your vault." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Ničesar ni bilo uvoženo." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Options" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Options updated" + }, + "language": { + "message": "Jezik" + }, + "languageDesc": { + "message": "Change the language used by the web vault." + }, + "disableIcons": { + "message": "Onemogoči ikone spletnih mest" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Default" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Exclude" + }, + "include": { + "message": "Include" + }, + "customize": { + "message": "Prilagodi" + }, + "newCustomDomain": { + "message": "Nova domena po meri" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domene posodobljene" + }, + "twoStepLogin": { + "message": "Prijava v dveh korakih" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Ponudniki", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Omogoči" + }, + "enabled": { + "message": "Omogočeno" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Upravljaj" + }, + "disable": { + "message": "Onemogočeno" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS naprave" + }, + "androidDevices": { + "message": "Android naprave" + }, + "windowsDevices": { + "message": "Windows naprave" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Key" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Secret Key" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Send Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Key is compromised." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Reports" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Instructions" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Good News", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Website" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Billing" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "year" + }, + "month": { + "message": "month" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Add Group" + }, + "editGroup": { + "message": "Edit Group" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Learn more" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Create New 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." + }, + "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." + }, + "deleteSend": { + "message": "Delete Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "or", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/sr/messages.json b/apps/web/src/locales/sr/messages.json new file mode 100644 index 0000000000..a6dccc1c59 --- /dev/null +++ b/apps/web/src/locales/sr/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ Veb Trezor", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Kog je tipa ovaj unos?" + }, + "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" + }, + "newPassword": { + "message": "Nova lozinka" + }, + "passphrase": { + "message": "Frazna lozinka" + }, + "notes": { + "message": "Beleške" + }, + "customFields": { + "message": "Prilagođena Polja" + }, + "cardholderName": { + "message": "Ime vlasnika kartice" + }, + "number": { + "message": "Broj" + }, + "brand": { + "message": "Brend" + }, + "expiration": { + "message": "Datum isteka" + }, + "securityCode": { + "message": "Sigurnosni Kod (CVV)" + }, + "identityName": { + "message": "Naziv Isprave" + }, + "company": { + "message": "Kompanija" + }, + "ssn": { + "message": "Broj Socijalnog Osiguranja" + }, + "passportNumber": { + "message": "Broj Pasoša" + }, + "licenseNumber": { + "message": "Broj Vozačke Dozvole" + }, + "email": { + "message": "Imejl" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "title": { + "message": "Zvanje" + }, + "mr": { + "message": "Gospodin" + }, + "mrs": { + "message": "Gospođa" + }, + "ms": { + "message": "Gospođica" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mesec Isteka" + }, + "expirationYear": { + "message": "Godina Isteka" + }, + "authenticatorKeyTotp": { + "message": "Autentifikacioni Ključ (TOTP)" + }, + "folder": { + "message": "Fascikla" + }, + "newCustomField": { + "message": "Novo Prilagođeno Polje" + }, + "value": { + "message": "Vrednost" + }, + "dragToSort": { + "message": "Sortiraj prevlačenjem" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Sakriveno" + }, + "cfTypeBoolean": { + "message": "Logički Operator" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Ukloni" + }, + "unassigned": { + "message": "Nedodeljeno" + }, + "noneFolder": { + "message": "Bez fascikle", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj fasciklu" + }, + "editFolder": { + "message": "Urеdi fasciklu" + }, + "baseDomain": { + "message": "Osnovni domen", + "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": "Tačno" + }, + "startsWith": { + "message": "Počinje sa" + }, + "regEx": { + "message": "Regularni izraz", + "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." + }, + "never": { + "message": "Nikada" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Generiši lozinku" + }, + "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." + }, + "save": { + "message": "Sačuvaj" + }, + "cancel": { + "message": "Odustani" + }, + "canceled": { + "message": "Otkazano" + }, + "close": { + "message": "Zatvori" + }, + "delete": { + "message": "Obriši" + }, + "favorite": { + "message": "Omiljeni" + }, + "unfavorite": { + "message": "Izbaci iz Omiljenih" + }, + "edit": { + "message": "Uredi" + }, + "searchCollection": { + "message": "Pretraži Kolekciju" + }, + "searchFolder": { + "message": "Pretraži fasciklu" + }, + "searchFavorites": { + "message": "Pratraži Omiljene" + }, + "searchType": { + "message": "Pretraži Tip", + "description": "Search item type" + }, + "searchVault": { + "message": "Pretraži trezor" + }, + "allItems": { + "message": "Sve stavke" + }, + "favorites": { + "message": "Omiljene stavke" + }, + "types": { + "message": "Tipovi" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeCard": { + "message": "Kartica" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Zaštićena beleška" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Fascikle" + }, + "collections": { + "message": "Kolekcije" + }, + "firstName": { + "message": "Ime" + }, + "middleName": { + "message": "Srednje Ime" + }, + "lastName": { + "message": "Prezime" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Adresa 1" + }, + "address2": { + "message": "Adresa 2" + }, + "address3": { + "message": "Adresa 3" + }, + "cityTown": { + "message": "Grad" + }, + "stateProvince": { + "message": "Država / Okrug" + }, + "zipPostalCode": { + "message": "Zip / Poštanski Broj" + }, + "country": { + "message": "Država" + }, + "shared": { + "message": "Podeljeno" + }, + "attachments": { + "message": "Priloženi Fajlovi" + }, + "select": { + "message": "Izabеri" + }, + "addItem": { + "message": "Dodaj stavku" + }, + "editItem": { + "message": "Uredi stavku" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "npr.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Drugo" + }, + "share": { + "message": "Podeli" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "$VALUE$ kopiran", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopiraj Vrednost", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopiraj lozinku", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopiraj Korisničko Ime", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopiraj Broj", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiraj Sigurnosni Kod", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopiraj URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Moj trezor" + }, + "vault": { + "message": "Trezor" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Obriši izabrane stavke" + }, + "moveSelected": { + "message": "Premesti izabrane stavke" + }, + "selectAll": { + "message": "Odaberi sve" + }, + "unselectAll": { + "message": "Poništi Izbor" + }, + "launch": { + "message": "Pokreni" + }, + "newAttachment": { + "message": "Priloži Novi Fajl" + }, + "deletedAttachment": { + "message": "Obrisan priloženi fajl" + }, + "deleteAttachmentConfirmation": { + "message": "Da li ste sigurni da želite da obrišete ovaj priloženi fajl?" + }, + "attachmentSaved": { + "message": "Priloženi fajl je sačuvan." + }, + "file": { + "message": "Fajl" + }, + "selectFile": { + "message": "Izaberi fajl." + }, + "maxFileSize": { + "message": "Maksimalna veličina fajla je 500 MB." + }, + "updateKey": { + "message": "Ne možete da koristite ovu uslugu dok ne ažurirate Vaš enkripcioni ključ." + }, + "addedItem": { + "message": "Stavka je dodata" + }, + "editedItem": { + "message": "Stavka je izmenjena" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Obriši stavku" + }, + "deleteFolder": { + "message": "Obriši fasciklu" + }, + "deleteAttachment": { + "message": "Obriši Priloženi Fajl" + }, + "deleteItemConfirmation": { + "message": "Da li zaista želite da obrišete ovu stavku?" + }, + "deletedItem": { + "message": "Stavka poslata u kantu" + }, + "deletedItems": { + "message": "Stavke poslate u kantu" + }, + "movedItems": { + "message": "Stavke su premeštene" + }, + "overwritePasswordConfirmation": { + "message": "Da li zaista želite da izmenite aktuelnu lozinku?" + }, + "editedFolder": { + "message": "Fascikla je izmenjena" + }, + "addedFolder": { + "message": "Fascikla je dodata" + }, + "deleteFolderConfirmation": { + "message": "Da li zaista želite da obrišete ovu fasciklu?" + }, + "deletedFolder": { + "message": "Fascikla je obrisana" + }, + "loggedOut": { + "message": "Odjavljeni ste" + }, + "loginExpired": { + "message": "Vaša sesija je istekla." + }, + "logOutConfirmation": { + "message": "Da li ste sigurni da želite da se odjavite?" + }, + "logOut": { + "message": "Odjava" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "loginOrCreateNewAccount": { + "message": "Ulogujte se ili napravite novi nalog kako biste pristupili Vašem trezoru." + }, + "createAccount": { + "message": "Napravi Nalog" + }, + "logIn": { + "message": "Prijavi Se" + }, + "submit": { + "message": "Pošalji" + }, + "emailAddressDesc": { + "message": "Koristićete Vašu imejl adresu prilikom prijavljivanja." + }, + "yourName": { + "message": "Vaše Ime" + }, + "yourNameDesc": { + "message": "Kako želite da Vas oslovljavamo?" + }, + "masterPass": { + "message": "Glavna lozinka" + }, + "masterPassDesc": { + "message": "Glavna šifra je šifra koju koristite kako biste pristupili svom trezoru. Veoma je važno da ne zaboravite svoju glavnu šifru. Ukoliko je zaboravite, ne postoji način da je dobijete nazad." + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Master Password Hint" + }, + "settings": { + "message": "Podešavanja" + }, + "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 adresa je neophodna." + }, + "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." + }, + "emailAddress": { + "message": "Imejl Adresa" + }, + "yourVaultIsLocked": { + "message": "Vaš trezor je zaključan. Unesite glavnu lozinku da biste nastavili." + }, + "unlock": { + "message": "Otključaj" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lock Now" + }, + "noItemsInList": { + "message": "Nema stavki u listi." + }, + "noCollectionsInList": { + "message": "Nema stavki u listi." + }, + "noGroupsInList": { + "message": "There are no groups to list." + }, + "noUsersInList": { + "message": "There are no users to list." + }, + "noEventsInList": { + "message": "There are no events to list." + }, + "newOrganization": { + "message": "Nova organizacija" + }, + "noOrganizationsList": { + "message": "Ne pripadaš ni jednoj organizaciji. Organizacije ti omogućavaju da bezbedno deliš stavke sa ostalim korisnicima." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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": "Zapamti me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Povežite Vaš YubiKey preko USB porta na vašem računaru, pa pritisnite dugme na njemu." + }, + "insertU2f": { + "message": "Povežite Vaš sigurnosni ključ preko USB porta na Vaš računar. Ukoliko ima dugme, pritisnite ga." + }, + "loginUnavailable": { + "message": "Servis za Pristup Nije Dostupan" + }, + "noTwoStepProviders": { + "message": "Verifikacija u dva koraka je omogućena na Vašem nalogu, ali nijedan od pružalaca usluge verifikacije u dva koraka nije podržan od strane ovog pretraživača." + }, + "noTwoStepProviders2": { + "message": "Molimo Vas da koristite neki od pretraživača koji su podržani (poput Chrome-a) i/ili dodajte pružaoce usluga čija podrška obuhvata više pretraživača (poput nekih aplikacija za autentifikaciju)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "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": "Aplikacija za Autentifikaciju" + }, + "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 series, 5 series, 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." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "continue": { + "message": "Nastavi" + }, + "organization": { + "message": "Organizacija" + }, + "organizations": { + "message": "Organizacije" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Edit the collections that this item is being shared with. Only organization users with access to these collections will be able to see this item." + }, + "deleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to delete. Are you sure you want to delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Choose a folder that you would like to move the $COUNT$ selected item(s) to.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "warning": { + "message": "Upozorenje" + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Izvezi trezor" + }, + "fileFormat": { + "message": "File Format" + }, + "exportSuccess": { + "message": "Your vault data has been exported." + }, + "passwordGenerator": { + "message": "Generator lozinke" + }, + "minComplexityScore": { + "message": "Minimalna ocena kompleksnosti" + }, + "minNumbers": { + "message": "Minimalno cifara" + }, + "minSpecial": { + "message": "Minimalno specijalnih", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "regeneratePassword": { + "message": "Regeneriši lozinku" + }, + "length": { + "message": "Dužina" + }, + "numWords": { + "message": "Broj Reči" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "passwordHistory": { + "message": "Istorija lozinki" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "clear": { + "message": "Očisti", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Nalog je Ažuriran" + }, + "changeEmail": { + "message": "Promeni Imejl" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Novi Imejl" + }, + "code": { + "message": "Kod" + }, + "changeEmailDesc": { + "message": "Poslali smo verifikacioni kod putem imejla na $EMAIL$. Molimo Vas, proverite vaš imejl kako biste pronašli taj kod i uneli ga radi finalizacije procesa promene imejl adrese.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "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." + }, + "emailChanged": { + "message": "Email Changed" + }, + "logBackIn": { + "message": "Please log back in." + }, + "logBackInOthersToo": { + "message": "Please log back in. If you are using other Bitwarden applications log out and back in to those as well." + }, + "changeMasterPassword": { + "message": "Promeni glavnu lozinku" + }, + "masterPasswordChanged": { + "message": "Glavna lozinka je promenjena" + }, + "currentMasterPass": { + "message": "Current Master Password" + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "encKeySettings": { + "message": "Encryption Key Settings" + }, + "kdfAlgorithm": { + "message": "KDF Algorithm" + }, + "kdfIterations": { + "message": "KDF Iterations" + }, + "kdfIterationsDesc": { + "message": "Higher KDF iterations can help protect your master password from being brute forced by an attacker. We recommend a value of $VALUE$ or more.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Setting your KDF iterations too high could result in poor performance when logging into (and unlocking) Bitwarden on devices with slower CPUs. We recommend that you increase the value in increments of $INCREMENT$ and then test all of your devices.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Change KDF" + }, + "encKeySettingsChanged": { + "message": "Encryption Key Settings Changed" + }, + "dangerZone": { + "message": "Opasna zona" + }, + "dangerZoneDesc": { + "message": "Pažljivo, ove odluke se ne mogu poništiti!" + }, + "deauthorizeSessions": { + "message": "Deauthorize Sessions" + }, + "deauthorizeSessionsDesc": { + "message": "Concerned your account is logged in on another device? Proceed below to deauthorize all computers or devices that you have previously used. This security step is recommended if you previously used a public computer or accidentally saved your password on a device that isn't yours. This step will also clear all previously remembered two-step login sessions." + }, + "deauthorizeSessionsWarning": { + "message": "Proceeding will also log you out of your current session, requiring you to log back in. You will also be prompted for two-step login again, if enabled. Active sessions on other devices may continue to remain active for up to one hour." + }, + "sessionsDeauthorized": { + "message": "All Sessions Deauthorized" + }, + "purgeVault": { + "message": "Purge Vault" + }, + "purgedOrganizationVault": { + "message": "Purged organization vault." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Proceed below to delete all items and folders in your vault. Items that belong to an organization that you share with will not be deleted." + }, + "purgeOrgVaultDesc": { + "message": "Proceed below to delete all items in the organization's vault." + }, + "purgeVaultWarning": { + "message": "Purging your vault is permanent. It cannot be undone." + }, + "vaultPurged": { + "message": "Your vault has been purged." + }, + "deleteAccount": { + "message": "Delete Account" + }, + "deleteAccountDesc": { + "message": "Proceed below to delete your account and all associated data." + }, + "deleteAccountWarning": { + "message": "Deleting your account is permanent. It cannot be undone." + }, + "accountDeleted": { + "message": "Nalog je Obrisan" + }, + "accountDeletedDesc": { + "message": "Vaš nalog je zatvoren, a svi povezani podaci su obrisani." + }, + "myAccount": { + "message": "Moj Nalog" + }, + "tools": { + "message": "Alati" + }, + "importData": { + "message": "Uvezi podatke" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Podaci su uspešno uvezeni u Vaš trezor." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Podaci nisu ispravnog formata. Molimo Vas da proverite datoteku koji pokušavate da uvezete i pokušate ponovo." + }, + "importNothingError": { + "message": "Nema podataka za uvoz." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Izaberite format datoteke za uvoz" + }, + "selectImportFile": { + "message": "Odaberite datoteku za uvoz" + }, + "orCopyPasteFileContents": { + "message": "ili kopirajte/nalepite sadržaj vaše datoteke za uvoz" + }, + "instructionsFor": { + "message": "Instrukcije za $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Opcije" + }, + "optionsDesc": { + "message": "Customize your web vault experience." + }, + "optionsUpdated": { + "message": "Opcije ažurirane" + }, + "language": { + "message": "Jezik" + }, + "languageDesc": { + "message": "Promenite jezik veb trezora." + }, + "disableIcons": { + "message": "Onemogućite Ikonice Vebsajta" + }, + "disableIconsDesc": { + "message": "Vebsajt ikonice predstavljaju prepoznatljivu sliku koja stoji pored svake stavke za prijavljivanje u Vašem trezoru." + }, + "enableGravatars": { + "message": "Omogućite Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Podrazumevano" + }, + "domainRules": { + "message": "Domain Rules" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Izostavi" + }, + "include": { + "message": "Uključi" + }, + "customize": { + "message": "Prilagodi" + }, + "newCustomDomain": { + "message": "New Custom Domain" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domeni su ažurirani" + }, + "twoStepLogin": { + "message": "Prijava u dva koraka" + }, + "twoStepLoginDesc": { + "message": "Secure your account by requiring an additional step when logging in." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "View Recovery Code" + }, + "providers": { + "message": "Providers", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Omogući" + }, + "enabled": { + "message": "Omogućeno" + }, + "premium": { + "message": "Premijum", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium Članstvo" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "youHavePremiumAccess": { + "message": "You have premium access" + }, + "alreadyPremiumFromOrg": { + "message": "You already have access to premium features because of an organization you are a member of." + }, + "manage": { + "message": "Upravljaj" + }, + "disable": { + "message": "Disable" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Enter your master password to modify two-step login settings." + }, + "twoStepAuthenticatorDesc": { + "message": "Follow these steps to set up two-step login with an authenticator app:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Download a two-step authenticator app" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Need a two-step authenticator app? Download one of the following" + }, + "iosDevices": { + "message": "iOS devices" + }, + "androidDevices": { + "message": "Android devices" + }, + "windowsDevices": { + "message": "Windows devices" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "These apps are recommended, however, other authenticator apps will also work." + }, + "twoStepAuthenticatorScanCode": { + "message": "Scan this QR code with your authenticator app" + }, + "key": { + "message": "Ključ" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Enter the resulting 6 digit verification code from the app" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "In case you need to add it to another device, below is the QR code (or key) required by your authenticator app." + }, + "twoStepDisableDesc": { + "message": "Are you sure you want to disable this two-step login provider?" + }, + "twoStepDisabled": { + "message": "Two-step login provider disabled." + }, + "twoFactorYubikeyAdd": { + "message": "Add a new YubiKey to your account" + }, + "twoFactorYubikeyPlugIn": { + "message": "Plug the YubiKey into your computer's USB port." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Touch the YubiKey's button." + }, + "twoFactorYubikeySaveForm": { + "message": "Save the form." + }, + "twoFactorYubikeyWarning": { + "message": "Due to platform limitations, YubiKeys cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when YubiKeys cannot be used. Supported platforms:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a data port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC Support" + }, + "twoFactorYubikeySupportsNfc": { + "message": "One of my keys supports NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "If one of your YubiKeys supports NFC (such as a YubiKey NEO), you will be prompted on mobile devices whenever NFC availability is detected." + }, + "yubikeysUpdated": { + "message": "YubiKeys updated" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Tajni Ključ" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Pošalji email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Are you sure you want to remove this security key?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Ključ je kompromitovan." + }, + "twoFactorU2fGiveName": { + "message": "Give the security key a friendly name to identify it." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Plug the security key into your computer's USB port and click the \"Read Key\" button." + }, + "twoFactorU2fTouchButton": { + "message": "If the security key has a button, touch it." + }, + "twoFactorU2fSaveForm": { + "message": "Save the form." + }, + "twoFactorU2fWarning": { + "message": "Due to platform limitations, FIDO U2F cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. Supported platforms:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "Print Code", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Izveštaji" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Unsecure Websites" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Unsecured Websites Found" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Two-step Login adds a layer of protection to your accounts. Turn on Two-Step Login using Bitwarden Authenticator for these accounts or use an alternative method." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-factor authentication (according to 2fa.directory). To further protect these accounts, you should enable two-factor authentication.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "No websites were found in your vault with a missing two-factor authentication configuration." + }, + "instructions": { + "message": "Uputstvo" + }, + "exposedPasswordsReport": { + "message": "Exposed Passwords" + }, + "exposedPasswordsReportDesc": { + "message": "Passwords exposed in a data breach are easy targets for attackers. Change these passwords to prevent potential break-ins." + }, + "exposedPasswordsFound": { + "message": "Exposed Passwords Found" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Check Exposed Passwords" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Weak Passwords" + }, + "weakPasswordsReportDesc": { + "message": "Weak passwords can be easily guessed by attackers. Change these passwords to strong ones using the Password Generator." + }, + "weakPasswordsFound": { + "message": "Weak Passwords Found" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Reused Passwords" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Reused Passwords Found" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Data Breach" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Dobre Vesti", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Kompromitovani podaci" + }, + "website": { + "message": "Web stranica" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Naplata" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Dodaj Kredit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Iznos", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Pređi na Premijum", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Unapredili ste svoj nalog na premijum." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Dodaci" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Ukupno" + }, + "year": { + "message": "godina" + }, + "month": { + "message": "mesec" + }, + "monthAbbr": { + "message": "mj.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Your payment method will be charged immediately and then on a recurring basis each year. You may cancel at any time." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Your plan comes with a free 7 day trial. Your payment method will not be charged until the trial has ended. You may cancel at any time." + }, + "paymentInformation": { + "message": "Payment Information" + }, + "billingInformation": { + "message": "Billing Information" + }, + "creditCard": { + "message": "Credit Card" + }, + "paypalClickSubmit": { + "message": "Click the PayPal button to log into your PayPal account, then click the Submit button below to continue." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Sledeće Plaćanje" + }, + "details": { + "message": "Detalji" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Storage" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Način plaćanja" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Plaćeno", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Neplaćeno", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transakcije", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Nema transakcija." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Povrat novca", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Korisnici" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "For personal use, to share with family & friends." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Free Forever" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Dodatni Korisnici" + }, + "costPerUser": { + "message": "$COST$ po korisniku", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Monthly" + }, + "annually": { + "message": "Annually" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Grupe" + }, + "newGroup": { + "message": "Nova Grupa" + }, + "addGroup": { + "message": "Dodaj Grupu" + }, + "editGroup": { + "message": "Uredi Grupu" + }, + "deleteGroupConfirmation": { + "message": "Are you sure you want to delete this group?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Kontrola Pristupa" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Učitaj Još" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Disabled two-step login." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Device" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Saznaj više" + }, + "deleteRecoverDesc": { + "message": "Enter your email address below to recover and delete your account." + }, + "deleteRecoverEmailSent": { + "message": "If your account exists, we've sent you an email with further instructions." + }, + "deleteRecoverConfirmDesc": { + "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Tax Information" + }, + "taxInformationDesc": { + "message": "For customers within the US, ZIP code is required to satisfy sales tax requirements, for other countries you may optionally provide a tax identification number (VAT/GST) and/or address to appear on your invoices." + }, + "billingPlan": { + "message": "Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Upgrade Plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Invoice #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "View Invoice" + }, + "downloadInvoice": { + "message": "Download Invoice" + }, + "verifyBankAccount": { + "message": "Verify Bank Account" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Account Type" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filteri" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 minute" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Very Weak", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Free", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimalna dužina" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimalna ocena kompleksnosti od $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimalna dužina od $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." + }, + "minimumNumberOfWords": { + "message": "Minimalan broj reči" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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": "Kanta", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Search Trash" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Restore" + }, + "restoreSelected": { + "message": "Restore Selected" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Napravi novo slanje", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Izmeni slanje", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Napravljena slanja", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Izmenjena slanja", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Obrisana slanja", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSend": { + "message": "Obriši slanje", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Disabled" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Sva slanja" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Emergency Access" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 day" + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Approve" + }, + "reject": { + "message": "Reject" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Disable Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Manage Users" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Pošalji vezu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Slanje", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Learn more about", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Saznaj više", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "ili", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "try it now", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "ili", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "sign up", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "to try it today.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Stavke koje su bile u Kanti više od 30 dana će automatski biti obrisane." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json new file mode 100644 index 0000000000..bfae38634a --- /dev/null +++ b/apps/web/src/locales/sv/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ webbvalv", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Vilken typ av objekt är detta?" + }, + "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" + }, + "newPassword": { + "message": "Nytt lösenord" + }, + "passphrase": { + "message": "Lösenordsfras" + }, + "notes": { + "message": "Anteckningar" + }, + "customFields": { + "message": "Anpassade fält" + }, + "cardholderName": { + "message": "Kortinnehavarens namn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Märke" + }, + "expiration": { + "message": "Utgång" + }, + "securityCode": { + "message": "Säkerhetskod (CVV)" + }, + "identityName": { + "message": "Identitetsnamn" + }, + "company": { + "message": "Företag" + }, + "ssn": { + "message": "Personnummer" + }, + "passportNumber": { + "message": "Passnummer" + }, + "licenseNumber": { + "message": "Körkortsnummer" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefon" + }, + "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" + }, + "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" + }, + "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." + }, + "remove": { + "message": "Ta bort" + }, + "unassigned": { + "message": "Ej tilldelad" + }, + "noneFolder": { + "message": "Ingen mapp", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Lägg till mapp" + }, + "editFolder": { + "message": "Redigera mapp" + }, + "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." + }, + "never": { + "message": "Aldrig" + }, + "toggleVisibility": { + "message": "Växla synlighet" + }, + "toggleCollapse": { + "message": "Växla synlig/dold", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Skapa lösenord" + }, + "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." + }, + "save": { + "message": "Spara" + }, + "cancel": { + "message": "Avbryt" + }, + "canceled": { + "message": "Avbruten" + }, + "close": { + "message": "Stäng" + }, + "delete": { + "message": "Radera" + }, + "favorite": { + "message": "Favorit" + }, + "unfavorite": { + "message": "Ta bort favorit" + }, + "edit": { + "message": "Redigera" + }, + "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" + }, + "searchVault": { + "message": "Sök i valvet" + }, + "allItems": { + "message": "Alla objekt" + }, + "favorites": { + "message": "Favoriter" + }, + "types": { + "message": "Typer" + }, + "typeLogin": { + "message": "Inloggning" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Säker anteckning" + }, + "typeLoginPlural": { + "message": "Inloggningar" + }, + "typeCardPlural": { + "message": "Kort" + }, + "typeIdentityPlural": { + "message": "Identiteter" + }, + "typeSecureNotePlural": { + "message": "Säkra anteckningar" + }, + "folders": { + "message": "Mappar" + }, + "collections": { + "message": "Samlingar" + }, + "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" + }, + "shared": { + "message": "Delad" + }, + "attachments": { + "message": "Bilagor" + }, + "select": { + "message": "Välj" + }, + "addItem": { + "message": "Lägg till objekt" + }, + "editItem": { + "message": "Redigera objekt" + }, + "viewItem": { + "message": "Visa objekt" + }, + "ex": { + "message": "t.ex.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Annat" + }, + "share": { + "message": "Dela" + }, + "moveToOrganization": { + "message": "Flytta till organisation" + }, + "valueCopied": { + "message": "$VALUE$ kopierades", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Kopiera värde", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Kopiera lösenord", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kopiera användarnamn", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Kopiera nummer", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiera säkerhetskod", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Kopiera URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Mitt valv" + }, + "vault": { + "message": "Valv" + }, + "moveSelectedToOrg": { + "message": "Flytta valda till organisation" + }, + "deleteSelected": { + "message": "Radera markerade" + }, + "moveSelected": { + "message": "Flytta markerade" + }, + "selectAll": { + "message": "Markera alla" + }, + "unselectAll": { + "message": "Avmarkera alla" + }, + "launch": { + "message": "Öppna" + }, + "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." + }, + "addedItem": { + "message": "Lade till objekt" + }, + "editedItem": { + "message": "Redigerade objekt" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ flyttades till $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "De valda objekten flyttades till $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Radera objekt" + }, + "deleteFolder": { + "message": "Radera mapp" + }, + "deleteAttachment": { + "message": "Radera bilaga" + }, + "deleteItemConfirmation": { + "message": "Är du säker på att du vill skicka detta objekt till papperskorgen?" + }, + "deletedItem": { + "message": "Skickade objekt till papperskorgen" + }, + "deletedItems": { + "message": "Skickade objekt till papperskorgen" + }, + "movedItems": { + "message": "Flyttade objekt" + }, + "overwritePasswordConfirmation": { + "message": "Är du säker på att du vill skriva över det nuvarande lösenordet?" + }, + "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" + }, + "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" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nej" + }, + "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" + }, + "emailAddressDesc": { + "message": "Din e-postadress används för att logga in." + }, + "yourName": { + "message": "Ditt namn" + }, + "yourNameDesc": { + "message": "Vad ska vi kalla dig?" + }, + "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)" + }, + "masterPassHintLabel": { + "message": "Huvudlösenordsledtråd" + }, + "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." + }, + "emailAddress": { + "message": "E-postadress" + }, + "yourVaultIsLocked": { + "message": "Valvet är låst. Bekräfta ditt huvudlösenord för att fortsätta." + }, + "unlock": { + "message": "Lås upp" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Lås nu" + }, + "noItemsInList": { + "message": "Det finns inga objekt att visa." + }, + "noCollectionsInList": { + "message": "Det finns inga samlingar att visa." + }, + "noGroupsInList": { + "message": "Det finns inga grupper att visa." + }, + "noUsersInList": { + "message": "Det finns inga användare att visa." + }, + "noEventsInList": { + "message": "Det finns inga händelser att visa." + }, + "newOrganization": { + "message": "Ny organisation" + }, + "noOrganizationsList": { + "message": "Du tillhör inte några organisationer. Organisationer möjliggör säker delning av objekt med andra användare." + }, + "versionNumber": { + "message": "Version $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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." + }, + "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 webbläsaren." + }, + "noTwoStepProviders2": { + "message": "Vänligen använd en webbläsare som stöds (t.ex. Chrome) och/eller lägg till fler metoder som har bättre stöd bland webbläsare (t.ex. en autentiseringsapp)." + }, + "twoStepOptions": { + "message": "Alternativ för tvåstegsverifiering" + }, + "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-serien, 5-serien 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." + }, + "u2fDesc": { + "message": "Använd en FIDO U2F-aktiverad säkerhetsnyckel för att komma åt ditt konto." + }, + "u2fTitle": { + "message": "FIDO U2F-säkerhetsnyckel" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Använd en WebAuthn-aktiverad säkerhetsnyckel för att komma åt ditt konto." + }, + "webAuthnMigrated": { + "message": "(Migrerad från FIDO)" + }, + "emailTitle": { + "message": "E-post" + }, + "emailDesc": { + "message": "Verifieringskoder kommer skickas till dig via e-post." + }, + "continue": { + "message": "Fortsätt" + }, + "organization": { + "message": "Organisation" + }, + "organizations": { + "message": "Organisationer" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Välj en organisation som du vill flytta dessa objekt till. Flytt till en organisation överför ägandet av objekten till den organisationen. Du kommer inte längre att vara direkt ägare till dessa objekt när de har flyttats." + }, + "collectionsDesc": { + "message": "Redigera de samlingar som detta objekt delas med. Endast organisationsanvändare med tillgång till dessa samlingar kommer att kunna se detta objekt." + }, + "deleteSelectedItemsDesc": { + "message": "Du har markerat $COUNT$ objekt att radera. Är du säker på att du vill radera alla dessa objekt?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Välj en mapp som du vill flytta de $COUNT$ markerade objekten till.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Du har valt $COUNT$ objekt. $MOVEABLE_COUNT$ objekt kan flyttas till en organisation, $NONMOVEABLE_COUNT$ kan det inte.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Verifieringskod (TOTP)" + }, + "copyVerificationCode": { + "message": "Kopiera verifieringskod" + }, + "warning": { + "message": "Varning" + }, + "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." + }, + "export": { + "message": "Exportera" + }, + "exportVault": { + "message": "Exportera valv" + }, + "fileFormat": { + "message": "Filformat" + }, + "exportSuccess": { + "message": "Ditt valv har exporterats." + }, + "passwordGenerator": { + "message": "Lösenordsgenerator" + }, + "minComplexityScore": { + "message": "Minsta komplexitetspoäng" + }, + "minNumbers": { + "message": "Minsta antal siffror" + }, + "minSpecial": { + "message": "Minsta antal speciella tecken", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Undvik tvetydiga tecken" + }, + "regeneratePassword": { + "message": "Skapa nytt lösenord" + }, + "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" + }, + "passwordHistory": { + "message": "Lösenordshistorik" + }, + "noPasswordsInList": { + "message": "Det finns inga lösenord att visa." + }, + "clear": { + "message": "Rensa", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Kontot uppdaterades" + }, + "changeEmail": { + "message": "Ändra e-postadress" + }, + "changeEmailTwoFactorWarning": { + "message": "Fortsätter du så kommer din e-postadress att ändras för ditt konto. Det kommer inte att ändra e-postadressen som används för tvåfaktorsautentisering. Du kan ändra denna e-postadress i inställningarna för tvåstegsverifiering." + }, + "newEmail": { + "message": "Ny e-postadress" + }, + "code": { + "message": "Kod" + }, + "changeEmailDesc": { + "message": "Vi har skickat ett e-postmeddelande med en verifieringskod till $EMAIL$. Vänligen kolla din inkorg och ange koden i e-postmeddelandet nedan för att slutföra ändringen av e-postadress.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Om du fortsätter kommer du loggas ut från sin nuvarande session vilket kräver att du loggar in igen. Aktiva sessioner på andra enheter kan fortsätta vara aktiva i upp till en timme." + }, + "emailChanged": { + "message": "E-postadressen ändrades" + }, + "logBackIn": { + "message": "Vänligen logga in igen." + }, + "logBackInOthersToo": { + "message": "Vänligen logga in igen. Om du använder andra Bitwarden-applikationer, logga ut och in igen i dem också." + }, + "changeMasterPassword": { + "message": "Ändra huvudlösenord" + }, + "masterPasswordChanged": { + "message": "Huvudlösenordet ändrades" + }, + "currentMasterPass": { + "message": "Nuvarande huvudlösenord" + }, + "newMasterPass": { + "message": "Nytt huvudlösenord" + }, + "confirmNewMasterPass": { + "message": "Bekräfta nytt huvudlösenord" + }, + "encKeySettings": { + "message": "Inställningar för krypteringsnyckel" + }, + "kdfAlgorithm": { + "message": "KDF-algoritm" + }, + "kdfIterations": { + "message": "KDF-iterationer" + }, + "kdfIterationsDesc": { + "message": "Högre KDF-iterationer kan skydda ditt huvudlösenord från att knäckas av en angripare via \"brute forcing\". Vi rekommenderar ett värde på $VALUE$ eller mer.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Att ställa in dina KDF-iterationer för högt kan resultera i dålig prestanda när du loggar in (och låser upp) Bitwarden på enheter med långsammare processorer. Vi rekommenderar att du ökar värdet i steg om $INCREMENT$ och sedan testar alla dina enheter.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Ändra KDF" + }, + "encKeySettingsChanged": { + "message": "Inställningarna för krypteringsnyckel ändrades" + }, + "dangerZone": { + "message": "Farozon" + }, + "dangerZoneDesc": { + "message": "Var försiktig, dessa åtgärder går inte att ångra!" + }, + "deauthorizeSessions": { + "message": "Avauktorisera sessioner" + }, + "deauthorizeSessionsDesc": { + "message": "Orolig att ditt konto är inloggat på en annan enhet? Fortsätt nedan för att avauktorisera alla datorer eller enheter som du har använt tidigare. Detta rekommenderas om du har använt en offentlig dator eller av misstag sparat ditt lösenord på en enhet som inte är din. Detta steg kommer också att rensa alla tidigare ihågkomna sessioner med tvåstegsverifiering." + }, + "deauthorizeSessionsWarning": { + "message": "Om du fortsätter kommer du loggas ut från sin nuvarande session vilket kräver att du loggar in igen. Du kommer även behöva verifiera med tvåstegsverifiering om det är aktiverat. Aktiva sessioner på andra enheter kan fortsätta vara aktiva i upp till en timme." + }, + "sessionsDeauthorized": { + "message": "Alla sessioner avauktoriserades" + }, + "purgeVault": { + "message": "Rensa valv" + }, + "purgedOrganizationVault": { + "message": "Rensade organisationsvalv." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Fortsätt nedan för att radera alla objekt och mappar i ditt valv. Objekt som tillhör en organisation som du delar med kommer inte raderas." + }, + "purgeOrgVaultDesc": { + "message": "Fortsätt nedan för att radera alla objekt i organisationens valv." + }, + "purgeVaultWarning": { + "message": "Rensning av ditt valv är permanent. Det går inte att ångra." + }, + "vaultPurged": { + "message": "Ditt valv har rensats." + }, + "deleteAccount": { + "message": "Radera konto" + }, + "deleteAccountDesc": { + "message": "Fortsätt nedan för att radera ditt konto och all tillhörande data." + }, + "deleteAccountWarning": { + "message": "Att radera ditt konto är permanent. Det går inte att ångra." + }, + "accountDeleted": { + "message": "Kontot raderades" + }, + "accountDeletedDesc": { + "message": "Ditt konto har stängts och all tillhörande data har raderats." + }, + "myAccount": { + "message": "Mitt konto" + }, + "tools": { + "message": "Verktyg" + }, + "importData": { + "message": "Importera data" + }, + "importError": { + "message": "Fel vid import" + }, + "importErrorDesc": { + "message": "Det uppstod ett problem med datan du försökte importera. Lös nedanstående fel i källfilen och försök igen." + }, + "importSuccess": { + "message": "Data har importerats till ditt valv." + }, + "importWarning": { + "message": "Du importerar data till $ORGANIZATION$. Din data kan komma att delas med medlemmar i den här organisationen. Vill du fortsätta?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Datan är inte korrekt formaterad. Vänligen kontrollera din importerade fil och försök igen." + }, + "importNothingError": { + "message": "Ingenting importerades." + }, + "importEncKeyError": { + "message": "Ett fel uppstod vid dekryptering av den exporterade filen. Din krypteringsnyckel matchar inte krypteringsnyckeln som användes för att exportera datan." + }, + "selectFormat": { + "message": "Välj importfilens format" + }, + "selectImportFile": { + "message": "Välj importfilen" + }, + "orCopyPasteFileContents": { + "message": "eller kopiera och klistra in innehållet från filen" + }, + "instructionsFor": { + "message": "Instruktioner för $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Alternativ" + }, + "optionsDesc": { + "message": "Anpassa din upplevelse i webbvalvet." + }, + "optionsUpdated": { + "message": "Alternativen uppdaterades" + }, + "language": { + "message": "Språk" + }, + "languageDesc": { + "message": "Ändra språket som används i webbvalvet." + }, + "disableIcons": { + "message": "Inaktivera webbplatsikoner" + }, + "disableIconsDesc": { + "message": "Webbplatsikoner ger en igenkännbar ikon bredvid varje inloggningsobjekt i ditt valv." + }, + "enableGravatars": { + "message": "Aktivera gravatarer", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Använd avatarbilder hämtade från gravatar.com." + }, + "enableFullWidth": { + "message": "Aktivera layout med full bredd", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Tillåt webbvalvet att utökas till webbläsarfönstrets fulla bredd." + }, + "default": { + "message": "Standard" + }, + "domainRules": { + "message": "Domänregler" + }, + "domainRulesDesc": { + "message": "Om du har samma inloggningsinformation på flera olika domäner kan du markera webbplatsen som \"motsvarande\". \"Globala\" domäner är de som redan skapats åt dig av Bitwarden." + }, + "globalEqDomains": { + "message": "Globala motsvarande domäner" + }, + "customEqDomains": { + "message": "Anpassade motsvarande domäner" + }, + "exclude": { + "message": "Exkludera" + }, + "include": { + "message": "Inkludera" + }, + "customize": { + "message": "Anpassa" + }, + "newCustomDomain": { + "message": "Ny anpassad domän" + }, + "newCustomDomainDesc": { + "message": "Ange en lista av domäner separerade med kommatecken. Endast basdomäner är tillåtna. Ange inte underdomäner. Ange till exempel \"google.com\" istället för \"www.google.com\". Du kan också ange \"androidapp://package.name\" för att associera en Android-app med andra webbplatsdomäner." + }, + "customDomainX": { + "message": "Anpassad domän $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Domänerna uppdaterades" + }, + "twoStepLogin": { + "message": "Tvåstegsverifiering" + }, + "twoStepLoginDesc": { + "message": "Säkra ditt konto genom att kräva ett ytterligare steg vid inloggning." + }, + "twoStepLoginOrganizationDesc": { + "message": "Kräv tvåstegsverifiering för din organisations användare genom att konfigurera metoder på organisationsnivå." + }, + "twoStepLoginRecoveryWarning": { + "message": "Att aktivera tvåstegsverifiering kan låsa ute dig från ditt Bitwarden-konto permanent. En återställningskod låter dig komma åt ditt konto om du inte längre kan använda din vanliga metod för tvåstegsverifiering (t.ex. om du förlorar din enhet). Bitwardens kundservice kommer inte att kunna hjälpa dig om du förlorar åtkomst till ditt konto. Vi rekommenderar att du skriver ner eller skriver ut återställningskoden och förvarar den på ett säkert ställe." + }, + "viewRecoveryCode": { + "message": "Visa återställningskod" + }, + "providers": { + "message": "Metoder", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Aktivera" + }, + "enabled": { + "message": "Aktiverad" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium-medlemskap" + }, + "premiumRequired": { + "message": "Premium krävs" + }, + "premiumRequiredDesc": { + "message": "Ett premium-medlemskap krävs för att använda den här funktionen." + }, + "youHavePremiumAccess": { + "message": "Du har premiumåtkomst" + }, + "alreadyPremiumFromOrg": { + "message": "Du har redan tillgång till premium-funktioner på grund av en organisation som du är medlem i." + }, + "manage": { + "message": "Hantera" + }, + "disable": { + "message": "Inaktivera" + }, + "twoStepLoginProviderEnabled": { + "message": "Denna metod för tvåstegsverifiering är aktiverad på ditt konto." + }, + "twoStepLoginAuthDesc": { + "message": "Ange ditt huvudlösenord för att ändra inställningarna för tvåstegsverifiering." + }, + "twoStepAuthenticatorDesc": { + "message": "Följ dessa steg för att konfigurera tvåstegsverifiering med en autentiseringsapp:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Hämta en tvåstegsverifieringsapp" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Behöver du en tvåstegsverifieringsapp? Hämta en av följande" + }, + "iosDevices": { + "message": "iOS-enheter" + }, + "androidDevices": { + "message": "Android-enheter" + }, + "windowsDevices": { + "message": "Windows-enheter" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Dessa appar rekommenderas, men även andra autentiseringsappar fungerar." + }, + "twoStepAuthenticatorScanCode": { + "message": "Skanna denna QR-kod med din autentiseringsapp" + }, + "key": { + "message": "Nyckel" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Ange den 6-siffriga verifieringskoden från appen" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Om du behöver lägga till den på en annan enhet, finns QR-koden (eller nyckeln) som krävs av din autentiseringsapp nedan." + }, + "twoStepDisableDesc": { + "message": "Är du säker på att du vill inaktivera denna metod för tvåstegsverifiering?" + }, + "twoStepDisabled": { + "message": "Metod för tvåstegsverifiering inaktiverad." + }, + "twoFactorYubikeyAdd": { + "message": "Lägg till en ny YubiKey till ditt konto" + }, + "twoFactorYubikeyPlugIn": { + "message": "Anslut din YubiKey till datorns USB-port." + }, + "twoFactorYubikeySelectKey": { + "message": "Välj det första tomma YubiKey-inmatningsfältet nedan." + }, + "twoFactorYubikeyTouchButton": { + "message": "Tryck på YubiKey:ns knapp." + }, + "twoFactorYubikeySaveForm": { + "message": "Spara formuläret." + }, + "twoFactorYubikeyWarning": { + "message": "På grund av plattformsbegränsningar kan YubiKeys inte användas i alla Bitwarden-applikationer. Du bör aktivera en annan metod för tvåstegsverifiering så att du kan komma åt ditt konto när YubiKeys inte kan användas. Plattformar som stöds:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Webbvalvet, skrivbordsprogrammet, CLI:n och alla webbläsartillägg på en enhet med en USB-port som kan acceptera din YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobilappar på en enhet med NFC-stöd eller en USB-port som kan acceptera din YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F-nyckel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn-nyckel $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC-stöd" + }, + "twoFactorYubikeySupportsNfc": { + "message": "En av mina nycklar stödjer NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Om en av dina YubiKeys stöder NFC (till exempel en YubiKey NEO), kommer du tillfrågas på på mobila enheter när NFC är tillgängligt." + }, + "yubikeysUpdated": { + "message": "YubiKeys uppdaterades" + }, + "disableAllKeys": { + "message": "Inaktivera alla nycklar" + }, + "twoFactorDuoDesc": { + "message": "Ange Bitwardens applikationsinformation från din Duo Admin-panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integreringsnyckel" + }, + "twoFactorDuoSecretKey": { + "message": "Hemlig nyckel" + }, + "twoFactorDuoApiHostname": { + "message": "API-värdnamn" + }, + "twoFactorEmailDesc": { + "message": "Följ dessa steg för att konfigurera tvåstegsverifiering med e-post:" + }, + "twoFactorEmailEnterEmail": { + "message": "Ange den e-postadress som du vill ta emot verifieringskoder till" + }, + "twoFactorEmailEnterCode": { + "message": "Ange den 6-siffriga verifieringskoden från e-postmeddelandet" + }, + "sendEmail": { + "message": "Skicka e-postmeddelande" + }, + "twoFactorU2fAdd": { + "message": "Lägg till en FIDO U2F-säkerhetsnyckel till ditt konto" + }, + "removeU2fConfirmation": { + "message": "Är du säker på att du vill ta bort denna säkerhetsnyckel?" + }, + "twoFactorWebAuthnAdd": { + "message": "Lägg till en WebAuthn säkerhetsnyckel till ditt konto" + }, + "readKey": { + "message": "Läs nyckel" + }, + "keyCompromised": { + "message": "Nyckeln har äventyrats." + }, + "twoFactorU2fGiveName": { + "message": "Ge säkerhetsnyckeln ett namn för att kunna identifiera den." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Anslut säkerhetsnyckeln till din dators USB-port och klicka på knappen \"Läs nyckel\"." + }, + "twoFactorU2fTouchButton": { + "message": "Om säkerhetsnyckeln har en knapp, tryck på den." + }, + "twoFactorU2fSaveForm": { + "message": "Spara formuläret." + }, + "twoFactorU2fWarning": { + "message": "På grund av plattformsbegränsningar kan FIDO U2F inte användas i alla Bitwarden-applikationer. Du bör aktivera en annan metod för tvåstegsverifiering så att du kan komma åt ditt konto när FIDO U2F inte kan användas. Plattformar som stöds:" + }, + "twoFactorU2fSupportWeb": { + "message": "Webbvalvet och webbläsartillägg på en stationär eller bärbar dator med en U2F-aktiverad webbläsare (Chrome, Opera, Vivaldi eller Firefox med FIDO U2F aktiverat)." + }, + "twoFactorU2fWaiting": { + "message": "Väntar på att du ska trycka på knappen på din säkerhetsnyckel" + }, + "twoFactorU2fClickSave": { + "message": "Klicka på \"Spara\"-knappen nedan för att aktivera denna säkerhetsnyckel för tvåstegsverifiering." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Det gick inte att läsa säkerhetsnyckeln. Försök igen." + }, + "twoFactorWebAuthnWarning": { + "message": "På grund av plattformsbegränsningar kan WebAuthn inte användas i alla Bitwarden-applikationer. Du bör aktivera en annan metod för tvåstegsverifiering så att du kan komma åt ditt konto när WebAuthn inte kan användas. Plattformar som stöds:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Webbvalvet och webbläsartillägg på en stationär eller bärbar dator med en WebAuthn-aktiverad webbläsare (Chrome, Opera, Vivaldi eller Firefox med FIDO U2F aktiverat)." + }, + "twoFactorRecoveryYourCode": { + "message": "Din återställningskod för tvåstegsverifiering" + }, + "twoFactorRecoveryNoCode": { + "message": "Du har inte aktiverat några metoder för tvåstegsverifiering ännu. När du har aktiverat en metod för tvåstegsverifiering kan du återvända hit för att se din återställningskod." + }, + "printCode": { + "message": "Skriv ut kod", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Rapporter" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Rapport om osäkra webbplatser" + }, + "unsecuredWebsitesReportDesc": { + "message": "Att använda osäkra webbplatser med http://-protokollet kan vara farligt. Om webbplatsen stödjer det, bör du alltid ansluta med https://-protokollet så att anslutningen är krypterad." + }, + "unsecuredWebsitesFound": { + "message": "Osäkra webbplatser hittades" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Vi hittade $COUNT$ objekt i ditt valv med osäkra URI:er. Om webbplatsen stödjer det bör du ändra deras URI-protokoll till https://.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Inga objekt i ditt valv har osäkra URI:er." + }, + "inactive2faReport": { + "message": "Rapport om inaktiv 2FA" + }, + "inactive2faReportDesc": { + "message": "Tvåstegsverifiering (2FA) är en viktig säkerhetsinställning som hjälper dig att säkra dina konton. Om en webbplats erbjuder det bör du alltid aktivera tvåstegsverifiering." + }, + "inactive2faFound": { + "message": "Inloggningar utan 2FA hittades" + }, + "inactive2faFoundDesc": { + "message": "Vi hittade $COUNT$ webbplats(er) i ditt valv som kanske inte har tvåstegsverifiering konfigurerat (enligt 2fa.directory). För att skydda dessa konton ytterligare bör du aktivera tvåstegsverifiering.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Inga webbplatser utan tvåstegsverifiering hittades i ditt valv." + }, + "instructions": { + "message": "Instruktioner" + }, + "exposedPasswordsReport": { + "message": "Rapport om avslöjade lösenord" + }, + "exposedPasswordsReportDesc": { + "message": "Avslöjade lösenord är lösenord som har äventyrats i kända dataintrång som släppts offentligt eller sålts av hackare på \"dark web\"." + }, + "exposedPasswordsFound": { + "message": "Avslöjade lösenord hittades" + }, + "exposedPasswordsFoundDesc": { + "message": "Vi hittade $COUNT$ objekt i ditt valv med lösenord som har äventyrats i kända dataintrång. Du bör ändra dessa till att använda nya lösenord.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Inga objekt i ditt valv har lösenord som har avslöjats i kända dataintrång." + }, + "checkExposedPasswords": { + "message": "Kontrollera avslöjade lösenord" + }, + "exposedXTimes": { + "message": "Avslöjad $COUNT$ gång(er)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Rapport om svaga lösenord" + }, + "weakPasswordsReportDesc": { + "message": "Svaga lösenord kan enkelt gissas av hackare och automatiserade verktyg som används för att knäcka lösenord. Bitwardens lösenordsgenerator kan hjälpa dig att skapa starka lösenord." + }, + "weakPasswordsFound": { + "message": "Svaga lösenord hittades" + }, + "weakPasswordsFoundDesc": { + "message": "Vi hittade $COUNT$ objekt i ditt valv med lösenord som inte är starka. Du bör ändra dessa till att använda starkare lösenord.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Inga objekt i ditt valv har svaga lösenord." + }, + "reusedPasswordsReport": { + "message": "Rapport om återanvända lösenord" + }, + "reusedPasswordsReportDesc": { + "message": "Om en tjänst som du använder äventyras, kan återanvändning av samma lösenord på andra ställen göra det möjligt för hackare att enkelt få åtkomst till fler av dina online-konton. Du bör använda ett unikt lösenord för varje konto eller tjänst." + }, + "reusedPasswordsFound": { + "message": "Återanvända lösenord hittades" + }, + "reusedPasswordsFoundDesc": { + "message": "Vi hittade $COUNT$ lösenord som återanvänds i ditt valv. Du bör ändra dessa till unika lösenord.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Inga inloggningar i ditt valv har lösenord som återanvänds." + }, + "reusedXTimes": { + "message": "Återanvänt $COUNT$ gånger", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Rapport om dataintrång" + }, + "breachDesc": { + "message": "Ett \"intrång\" är en incident där data olovligen har stulits från en webbplats av hackare och sedan släppts till allmänheten. Gå igenom och granska informationen som äventyrats (e-postadresser, lösenord, kreditkort osv.) och vidta lämpliga åtgärder, t.ex. att ändra lösenord." + }, + "breachCheckUsernameEmail": { + "message": "Kontrollera alla användarnamn eller e-postadresser som du använder." + }, + "checkBreaches": { + "message": "Kontrollera intrång" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ hittades inte i några kända dataintrång.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Goda nyheter", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ hittades i $COUNT$ olika dataintrång på internet.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Äventyrade konton hittades" + }, + "compromisedData": { + "message": "Äventyrad data" + }, + "website": { + "message": "Webbplats" + }, + "affectedUsers": { + "message": "Berörda användare" + }, + "breachOccurred": { + "message": "Intrånget inträffade" + }, + "breachReported": { + "message": "Intrånget rapporterades" + }, + "reportError": { + "message": "Ett fel inträffade när rapporten skulle läsas in. Försök igen" + }, + "billing": { + "message": "Fakturering" + }, + "accountCredit": { + "message": "Kontokredit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Kontosaldo", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Lägg till kredit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Belopp", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Tillagd kredit visas på ditt konto efter att betalningen har bearbetats fullständigt. Vissa betalningsmetoder är fördröjda och kan ta längre tid att behandla än andra." + }, + "makeSureEnoughCredit": { + "message": "Se till att ditt konto har tillräckligt mycket tillgänglig kredit för detta köp. Om ditt konto inte har tillräckligt med tillgänglig kredit, kommer din sparade standardbetalningsmetod användas för skillnaden. Du kan lägga till kredit till ditt konto från faktureringssidan." + }, + "creditAppliedDesc": { + "message": "Kontots kredit kan användas för att göra köp. Tillgänglig kredit kommer automatiskt tillämpas mot fakturor som genereras för detta konto." + }, + "goPremium": { + "message": "Skaffa Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Du har uppgraderat till Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Uppgradera ditt konto till ett premiummedlemskap för att låsa upp ytterligare funktioner." + }, + "premiumSignUpStorage": { + "message": "1 GB krypterad lagring." + }, + "premiumSignUpTwoStep": { + "message": "Ytterligare alternativ för tvåstegsverifiering såsom YubiKey, FIDO U2F och Duo." + }, + "premiumSignUpEmergency": { + "message": "Nödåtkomst" + }, + "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!" + }, + "premiumPrice": { + "message": "Allt för endast $PRICE$/år!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Tillägg" + }, + "premiumAccess": { + "message": "Premium-åtkomst" + }, + "premiumAccessDesc": { + "message": "Du kan lägga till premium-åtkomst till alla medlemmar i din organisation för $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Ytterligare lagring (GB)" + }, + "additionalStorageGbDesc": { + "message": "Antal ytterligare GB" + }, + "additionalStorageIntervalDesc": { + "message": "Ditt abonnemang kommer med $SIZE$ krypterad lagring. Du kan lägga till ytterligare lagring för $PRICE$ per GB/$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Sammanfattning" + }, + "total": { + "message": "Totalt" + }, + "year": { + "message": "år" + }, + "month": { + "message": "månad" + }, + "monthAbbr": { + "message": "mån.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Din betalningsmetod kommer att debiteras omedelbart och sedan återkommande varje år. Du kan säga upp din prenumeration när som helst." + }, + "paymentCharged": { + "message": "Din betalningsmetod kommer debiteras omedelbart och sedan på en återkommande basis varje $INTERVAL$. Du kan avsluta när som helst.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Din plan kommer med en kostnadsfri 7-dagars provperiod. Din betalningsmetod kommer inte att debiteras förrän provperioden har upphört. Du kan avbryta när som helst." + }, + "paymentInformation": { + "message": "Betalningsinformation" + }, + "billingInformation": { + "message": "Faktureringsuppgifter" + }, + "creditCard": { + "message": "Kreditkort" + }, + "paypalClickSubmit": { + "message": "Klicka på PayPal-knappen för att logga in på ditt PayPal-konto, tryck sedan på \"Skicka\"-knappen nedan för att fortsätta." + }, + "cancelSubscription": { + "message": "Avbryt prenumeration" + }, + "subscriptionCanceled": { + "message": "Abonnemanget har avslutats." + }, + "pendingCancellation": { + "message": "Väntar på att avslutas" + }, + "subscriptionPendingCanceled": { + "message": "Abonnemanget har markerats för avslutning vid slutet av den nuvarande faktureringsperioden." + }, + "reinstateSubscription": { + "message": "Återuppta abonnemang" + }, + "reinstateConfirmation": { + "message": "Är du säker att du vill ta bort den väntande avslutningsförfrågan och återuppta ditt abonnemang?" + }, + "reinstated": { + "message": "Abonnemanget har återupptagits." + }, + "cancelConfirmation": { + "message": "Är du säker på att du vill avsluta? Du kommer förlora tillgång till alla funktioner som abonnemanget erbjuder vid slutet av den nuvarande faktureringsperioden." + }, + "canceledSubscription": { + "message": "Abonnemanget har avslutats." + }, + "neverExpires": { + "message": "Går aldrig ut" + }, + "status": { + "message": "Status" + }, + "nextCharge": { + "message": "Nästa debitering" + }, + "details": { + "message": "Detaljer" + }, + "downloadLicense": { + "message": "Hämta licens" + }, + "updateLicense": { + "message": "Uppdatera licens" + }, + "updatedLicense": { + "message": "Uppdaterade licens" + }, + "manageSubscription": { + "message": "Hantera prenumeration" + }, + "storage": { + "message": "Lagring" + }, + "addStorage": { + "message": "Lägg till lagring" + }, + "removeStorage": { + "message": "Ta bort lagring" + }, + "subscriptionStorage": { + "message": "Ditt abonnemang har totalt $MAX_STORAGE$ GB krypterad lagring. Du använder för närvarande $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Betalningsmetod" + }, + "noPaymentMethod": { + "message": "Ingen sparad betalningsmetod." + }, + "addPaymentMethod": { + "message": "Lägg till betalningsmetod" + }, + "changePaymentMethod": { + "message": "Ändra betalningsmetod" + }, + "invoices": { + "message": "Fakturor" + }, + "noInvoices": { + "message": "Inga fakturor." + }, + "paid": { + "message": "Betald", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Obetald", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transaktioner", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Inga transaktioner." + }, + "chargeNoun": { + "message": "Debitering", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Återbetalning", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Debiteringar kommer visas som $STATEMENT_NAME$ på ditt kontoutdrag.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB lagring att lägga till" + }, + "gbStorageRemove": { + "message": "GB lagring att ta bort" + }, + "storageAddNote": { + "message": "Att lägga till lagringsutrymme kommer att resultera i justeringar av ditt totala debiteringsbelopp och omedelbart debitera din betalningsmetod. Den första debiteringen kommer att fördelas proportionellt för den återstående delen av den nuvarande faktureringscykeln." + }, + "storageRemoveNote": { + "message": "Att ta bort lagringsutrymme kommer resultera i justeringar av ditt totala debiteringsbelopp som kommer läggas till som kredit mot din nästa debitering." + }, + "adjustedStorage": { + "message": "Justerade $AMOUNT$ GB lagringsutrymme.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Kontakta kundservice" + }, + "updatedPaymentMethod": { + "message": "Betalningsmetod uppdaterades." + }, + "purchasePremium": { + "message": "Köp Premium" + }, + "licenseFile": { + "message": "Licensfil" + }, + "licenseFileDesc": { + "message": "Din licensfil kommer namnges i stil med $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "För att uppgradera ditt konto till ett premium-medlemskap måste du ladda upp en giltig licensfil." + }, + "uploadLicenseFileOrg": { + "message": "För att skapa en \"on-premise\"-hostad organisation måste du ladda upp en giltig licensfil." + }, + "accountEmailMustBeVerified": { + "message": "Ditt kontos e-postadress måste verifieras." + }, + "newOrganizationDesc": { + "message": "Organisationer tillåter dig att dela objekt i ditt valv med andra samt hantera relaterade användare för en specifik entitet, t.ex en familj, ett litet team, eller ett stort företag." + }, + "generalInformation": { + "message": "Allmän information" + }, + "organizationName": { + "message": "Organisationsnamn" + }, + "accountOwnedBusiness": { + "message": "Detta konto ägs av ett företag." + }, + "billingEmail": { + "message": "E-postadress för fakturering" + }, + "businessName": { + "message": "Företagsnamn" + }, + "chooseYourPlan": { + "message": "Välj din plan" + }, + "users": { + "message": "Användare" + }, + "userSeats": { + "message": "Användarplatser" + }, + "additionalUserSeats": { + "message": "Ytterligare användarplatser" + }, + "userSeatsDesc": { + "message": "Antal användarplatser" + }, + "userSeatsAdditionalDesc": { + "message": "Ditt abonnemang kommer med $BASE_SEATS$ användarplatser. Du kan lägga till ytterligare användare för $SEAT_PRICE$ per användare/månad.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Hur många användarplatser behöver du? Du kan även lägga till ytterligare platser senare om det behövs." + }, + "planNameFree": { + "message": "Gratis", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "För testning eller enskilda användare att dela med $COUNT$ andra användare.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Familjer" + }, + "planDescFamilies": { + "message": "För personligt bruk, att dela med familj & vänner." + }, + "planNameTeams": { + "message": "Team" + }, + "planDescTeams": { + "message": "För företag och andra organisationer med team." + }, + "planNameEnterprise": { + "message": "Företag" + }, + "planDescEnterprise": { + "message": "För företag och andra stora organisationer." + }, + "freeForever": { + "message": "Gratis för alltid" + }, + "includesXUsers": { + "message": "inkluderar $COUNT$ användare", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Ytterligare användare" + }, + "costPerUser": { + "message": "$COST$ per användare", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Begränsad till $COUNT$ användare (inklusive dig)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Begränsad till $COUNT$ samlingar", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Lägg till och dela med upp till $COUNT$ användare", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Lägg till och dela med ett obegränsat antal användare" + }, + "createUnlimitedCollections": { + "message": "Skapa ett obegränsat antal samlingar" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ krypterad lagring", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "\"On-premise\"-hosting (valfri)" + }, + "usersGetPremium": { + "message": "Användare får tillgång till premium-funktioner" + }, + "controlAccessWithGroups": { + "message": "Reglera användaråtkomst med grupper" + }, + "syncUsersFromDirectory": { + "message": "Synkronisera användare och grupper från en katalog" + }, + "trackAuditLogs": { + "message": "Spåra användaråtgärder med granskningsloggar" + }, + "enforce2faDuo": { + "message": "Kräv 2FA med Duo" + }, + "priorityCustomerSupport": { + "message": "Prioriterad kundservice" + }, + "xDayFreeTrial": { + "message": "$COUNT$ dagars gratis provperiod, avbryt när som helst", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Månadsvis" + }, + "annually": { + "message": "Årligen" + }, + "basePrice": { + "message": "Baspris" + }, + "organizationCreated": { + "message": "Organisationen skapades" + }, + "organizationReadyToGo": { + "message": "Din nya organisation är redo!" + }, + "organizationUpgraded": { + "message": "Din organisation har uppgraderats." + }, + "leave": { + "message": "Lämna" + }, + "leaveOrganizationConfirmation": { + "message": "Är du säker på att du vill lämna denna organisation?" + }, + "leftOrganization": { + "message": "Du har lämnat organisationen." + }, + "defaultCollection": { + "message": "Standardsamling" + }, + "getHelp": { + "message": "Få hjälp" + }, + "getApps": { + "message": "Hämta apparna" + }, + "loggedInAs": { + "message": "Inloggad som" + }, + "eventLogs": { + "message": "Händelselogg" + }, + "people": { + "message": "Personer" + }, + "policies": { + "message": "Policyer" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Redigera policy" + }, + "groups": { + "message": "Grupper" + }, + "newGroup": { + "message": "Ny grupp" + }, + "addGroup": { + "message": "Lägg till grupp" + }, + "editGroup": { + "message": "Redigera grupp" + }, + "deleteGroupConfirmation": { + "message": "Är du säker på att du vill radera denna grupp?" + }, + "removeUserConfirmation": { + "message": "Är du säker på att du vill ta bort denna användare?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "Externt ID" + }, + "externalIdDesc": { + "message": "Det externa id:t kan användas som referens eller för att länka denna resurs till ett externt system såsom en användarkatalog." + }, + "accessControl": { + "message": "Åtkomstkontroll" + }, + "groupAccessAllItems": { + "message": "Denna grupp kan komma åt och ändra alla objekt." + }, + "groupAccessSelectedCollections": { + "message": "Denna grupp kan endast komma åt de markerade samlingarna." + }, + "readOnly": { + "message": "Skrivskyddad" + }, + "newCollection": { + "message": "Ny samling" + }, + "addCollection": { + "message": "Lägg till samling" + }, + "editCollection": { + "message": "Redigera samling" + }, + "deleteCollectionConfirmation": { + "message": "Är du säker på att du vill radera denna samling?" + }, + "editUser": { + "message": "Redigera användare" + }, + "inviteUser": { + "message": "Bjud in användare" + }, + "inviteUserDesc": { + "message": "Bjud in en ny användare till din organisation genom att ange e-postadressen som tillhör deras Bitwarden-konto nedan. Om de inte redan har ett Bitwarden-konto kommer de uppmanas att skapa ett." + }, + "inviteMultipleEmailDesc": { + "message": "Du kan bjuda in upp till $COUNT$ användare samtidigt med en kommaseparerad lista av e-postadresser.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Denna användare använder tvåstegsverifiering för att skydda sitt konto." + }, + "userAccessAllItems": { + "message": "Denna användare kan komma åt och ändra alla objekt." + }, + "userAccessSelectedCollections": { + "message": "Denna användare kan endast komma åt de markerade samlingarna." + }, + "search": { + "message": "Sök" + }, + "invited": { + "message": "Inbjuden" + }, + "accepted": { + "message": "Accepterad" + }, + "confirmed": { + "message": "Bekräftad" + }, + "clientOwnerEmail": { + "message": "E-post för klientägare" + }, + "owner": { + "message": "Ägare" + }, + "ownerDesc": { + "message": "Användaren med den högsta åtkomsten som kan hantera alla aspekter av din organisation." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Administratör" + }, + "adminDesc": { + "message": "Administratörer kan komma åt och hantera alla objekt, samlingar och användare i din organisation." + }, + "user": { + "message": "Användare" + }, + "userDesc": { + "message": "En vanlig användare med tillgång till de samlingar i din organisation som den har tilldelats." + }, + "manager": { + "message": "Hanterare" + }, + "managerDesc": { + "message": "Hanterare kan komma åt och hantera de samlingar i din organisation som de har blivit tilldelade." + }, + "all": { + "message": "Alla" + }, + "refresh": { + "message": "Uppdatera" + }, + "timestamp": { + "message": "Tidsstämpel" + }, + "event": { + "message": "Händelse" + }, + "unknown": { + "message": "Okänd" + }, + "loadMore": { + "message": "Ladda mer" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Tillägg", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Skrivbord", + "description": "Desktop app" + }, + "webVault": { + "message": "Webbvalv" + }, + "loggedIn": { + "message": "Loggade in." + }, + "changedPassword": { + "message": "Ändrade kontolösenord." + }, + "enabledUpdated2fa": { + "message": "Aktiverade/uppdaterade tvåstegsverifiering." + }, + "disabled2fa": { + "message": "Inaktiverade tvåstegsverifiering." + }, + "recovered2fa": { + "message": "Återställde kontot från tvåstegsverifiering." + }, + "failedLogin": { + "message": "Inloggningsförsöket misslyckades med felaktigt lösenord." + }, + "failedLogin2fa": { + "message": "Inloggningsförsöket misslyckades med felaktig tvåstegsverifiering." + }, + "exportedVault": { + "message": "Exporterade valv." + }, + "exportedOrganizationVault": { + "message": "Exporterade organisationsvalv." + }, + "editedOrgSettings": { + "message": "Redigerade organisationsinställningar." + }, + "createdItemId": { + "message": "Skapade objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Redigerade objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Skickade objektet $ID$ till papperskorgen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Flyttade objektet $ID$ till en organisation.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Visade objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Visade lösenord för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Visade dolt fält för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Visade säkerhetskod för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Kopierade lösenord för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Kopierade dolt fält för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Kopierade säkerhetskod för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Fyllde i objektet $ID$ automatiskt.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Skapade samlingen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Redigerade samlingen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Raderade samlingen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Redigerade policyn $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Skapade gruppen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Redigerade gruppen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Raderade gruppen $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Tog bort användaren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Skapade bilaga för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Raderade bilaga för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Redigerade samlingar för objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Bjöd in användaren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Bekräftade användaren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Redigerade användaren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Redigerade grupper för användaren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Olänkad SSO för användare $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Skapade organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Skapade organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Tog bort organisation $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Enhet" + }, + "view": { + "message": "Visa" + }, + "invalidDateRange": { + "message": "Ogiltigt datumintervall." + }, + "errorOccurred": { + "message": "Ett fel har inträffat." + }, + "userAccess": { + "message": "Användaråtkomst" + }, + "userType": { + "message": "Användartyp" + }, + "groupAccess": { + "message": "Gruppåtkomst" + }, + "groupAccessUserDesc": { + "message": "Redigera vilka grupper den här användaren tillhör." + }, + "invitedUsers": { + "message": "Bjöd in användare." + }, + "resendInvitation": { + "message": "Skicka inbjudan igen" + }, + "resendEmail": { + "message": "Skicka e-postmeddelande igen" + }, + "hasBeenReinvited": { + "message": "$USER$ har bjudits in igen.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Bekräfta" + }, + "confirmUser": { + "message": "Bekräfta användare" + }, + "hasBeenConfirmed": { + "message": "$USER$ har bekräftats.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Bekräfta användare" + }, + "usersNeedConfirmed": { + "message": "Du har användare som har accepterat sin inbjudan, men fortfarande måste bekräftas. Användarna har inte åtkomst till organisationen förrän de är bekräftade." + }, + "startDate": { + "message": "Startdatum" + }, + "endDate": { + "message": "Slutdatum" + }, + "verifyEmail": { + "message": "Verifiera e-postadress" + }, + "verifyEmailDesc": { + "message": "Verifiera din e-postadress för att få tillgång till alla funktioner." + }, + "verifyEmailFirst": { + "message": "Ditt kontos e-postadress måste verifieras först." + }, + "checkInboxForVerification": { + "message": "Kolla din inkorg för en verifieringslänk." + }, + "emailVerified": { + "message": "Din e-postadress har verifierats." + }, + "emailVerifiedFailed": { + "message": "Det gick inte att verifiera din e-postadress. Prova att skicka ett nytt verifieringsmeddelande." + }, + "emailVerificationRequired": { + "message": "E-postverifiering krävs" + }, + "emailVerificationRequiredDesc": { + "message": "Du måste verifiera din e-post för att använda den här funktionen." + }, + "updateBrowser": { + "message": "Uppdatera webbläsaren" + }, + "updateBrowserDesc": { + "message": "Du använder en webbläsare som inte stöds. Webbvalvet kanske inte fungerar som det ska." + }, + "joinOrganization": { + "message": "Gå med i organisation" + }, + "joinOrganizationDesc": { + "message": "Du har bjudits in att gå med i organisationen ovan. För att acceptera inbjudan måste du logga in eller skapa ett nytt Bitwarden-konto." + }, + "inviteAccepted": { + "message": "Inbjudan accepterades" + }, + "inviteAcceptedDesc": { + "message": "Du kan komma åt denna organisation när en administratör har bekräftat ditt medlemskap. Vi skickar ett e-postmeddelande till dig när det sker." + }, + "inviteAcceptFailed": { + "message": "Det gick inte att acceptera inbjudan. Be en administratör för organisationen att skicka en ny inbjudan." + }, + "inviteAcceptFailedShort": { + "message": "Det gick inte att acceptera inbjudan. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Kom ihåg e-postadress" + }, + "recoverAccountTwoStepDesc": { + "message": "Om du inte kan komma åt ditt konto genom dina vanliga metoder för tvåstegsverifiering kan du använda din återställningskod för att inaktivera alla metoder för tvåstegsverifiering på ditt konto." + }, + "recoverAccountTwoStep": { + "message": "Återställ kontots tvåstegsverifiering" + }, + "twoStepRecoverDisabled": { + "message": "Tvåstegsverifiering har inaktiverats på ditt konto." + }, + "learnMore": { + "message": "Läs mer" + }, + "deleteRecoverDesc": { + "message": "Ange din e-postadress nedan för att återställa och radera ditt konto." + }, + "deleteRecoverEmailSent": { + "message": "Om ditt konto finns så har vi skickat ett e-postmeddelande till dig med vidare instruktioner." + }, + "deleteRecoverConfirmDesc": { + "message": "Du har begärt att radera ditt Bitwarden-konto. Klicka på knappen nedan för att bekräfta." + }, + "myOrganization": { + "message": "Min organisation" + }, + "deleteOrganization": { + "message": "Radera organisation" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organisationen raderades" + }, + "organizationDeletedDesc": { + "message": "Organisationen och all tillhörande data har raderats." + }, + "organizationUpdated": { + "message": "Organisationen uppdaterades" + }, + "taxInformation": { + "message": "Skatteinformation" + }, + "taxInformationDesc": { + "message": "För kunder i USA krävs postnummer för att uppfylla momskrav. För kunder i andra länder har du möjlighet att ange momsregistreringsnummer (VAT/GST) och/eller adress som ska synas på dina fakturor." + }, + "billingPlan": { + "message": "Abonnemang", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Uppgradera plan", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Uppgradera ditt konto till en annan plan genom att ange informationen nedan. Se till att du har en aktiv betalningsmetod på kontot.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Faktura #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Visa faktura" + }, + "downloadInvoice": { + "message": "Hämta faktura" + }, + "verifyBankAccount": { + "message": "Verifiera bankkonto" + }, + "verifyBankAccountDesc": { + "message": "Vi har gjort två mikro-insättningar på ditt bankkonto (det kan ta 1-2 arbetsdagar innan de syns). Ange beloppen för att verifiera bankkontot." + }, + "verifyBankAccountInitialDesc": { + "message": "Betalning via bankkonto är endast tillgängligt för kunder i USA. Du måste också verifiera ditt bankkonto. Vi kommer göra två mikro-insättningar inom de närmaste 1-2 arbetsdagarna. Ange dessa belopp på organisationens faktureringssida för att verifiera bankkontot." + }, + "verifyBankAccountFailureWarning": { + "message": "Om du inte verifierar bankkontot kommer det att resultera i en missad betalning och ditt abonnemang kommer inaktiveras." + }, + "verifiedBankAccount": { + "message": "Bankkontot har verifierats." + }, + "bankAccount": { + "message": "Bankkonto" + }, + "amountX": { + "message": "Belopp $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routningsnummer", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Kontonummer" + }, + "accountHolderName": { + "message": "Kontoinnehavarens namn" + }, + "bankAccountType": { + "message": "Kontotyp" + }, + "bankAccountTypeCompany": { + "message": "Företag" + }, + "bankAccountTypeIndividual": { + "message": "Individuell (personlig)" + }, + "enterInstallationId": { + "message": "Ange ditt installations-id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Lägg till platser", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Ta bort platser", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Ditt abonnemang tillåter totalt $COUNT$ användare.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Ytterligare alternativ" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Du kan inte bjuda in fler än $COUNT$ användare utan att uppgradera din plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Platser att lägga till" + }, + "seatsToRemove": { + "message": "Platser att ta bort" + }, + "seatsAddNote": { + "message": "Att lägga till användarplatser kommer att resultera i justeringar av ditt totala debiteringsbelopp och omedelbart debitera din betalningsmetod. Den första debiteringen kommer att fördelas proportionellt för den återstående delen av den nuvarande faktureringscykeln." + }, + "seatsRemoveNote": { + "message": "Att ta bort användarplatser kommer resultera i justeringar av ditt totala debiteringsbelopp som kommer läggas till som kredit mot din nästa debitering." + }, + "adjustedSeats": { + "message": "Justerade $AMOUNT$ användarplatser.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Nyckeln uppdaterades" + }, + "updateKeyTitle": { + "message": "Uppdatera nyckel" + }, + "updateEncryptionKey": { + "message": "Uppdatera krypteringsnyckel" + }, + "updateEncryptionKeyShortDesc": { + "message": "Du använder för närvarande ett föråldrat krypteringssystem." + }, + "updateEncryptionKeyDesc": { + "message": "Vi har övergått till större krypteringsnycklar som ger bättre säkerhet och tillgång till nyare funktioner. Att uppdatera din krypteringsnyckel är snabbt och smidigt. Skriv bara in ditt huvudlösenord nedan. Denna uppdatering kommer så småningom bli obligatorisk." + }, + "updateEncryptionKeyWarning": { + "message": "Efter att ha uppdaterat din krypteringsnyckel, måste du logga ut och in igen i alla Bitwarden-program som du använder (t.ex. mobilappen och webbläsartillägget). Att inte logga ut och in igen (vilket hämtar din nya krypteringsnyckel) kan resultera i datakorruption. Vi kommer försöka logga ut dig automatiskt, men det kan vara fördröjt." + }, + "updateEncryptionKeyExportWarning": { + "message": "Alla krypterade exporter som du har sparat kommer också bli ogiltiga." + }, + "subscription": { + "message": "Prenumeration" + }, + "loading": { + "message": "Laddar" + }, + "upgrade": { + "message": "Uppgradera" + }, + "upgradeOrganization": { + "message": "Uppgradera organisation" + }, + "upgradeOrganizationDesc": { + "message": "Denna funktion är inte tillgänglig för gratisorganisationer. Byt till ett betalt abonnemang för att låsa upp fler funktioner." + }, + "createOrganizationStep1": { + "message": "Skapa organisation: Steg 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Innan du skapar din organisation, måste du först skapa ett personligt gratiskonto." + }, + "refunded": { + "message": "Återbetald" + }, + "nothingSelected": { + "message": "Du har inte markerat något." + }, + "acceptPolicies": { + "message": "Genom att markera denna ruta godkänner du följande:" + }, + "acceptPoliciesError": { + "message": "Användarvillkoren och Integritetspolicyn har inte accepterats." + }, + "termsOfService": { + "message": "Användarvillkor" + }, + "privacyPolicy": { + "message": "Integritetspolicy" + }, + "filters": { + "message": "Filter" + }, + "vaultTimeout": { + "message": "Valvets tidsgräns" + }, + "vaultTimeoutDesc": { + "message": "Välj när valvets tidsgräns överskrids och den valda åtgärden utförs." + }, + "oneMinute": { + "message": "1 minut" + }, + "fiveMinutes": { + "message": "5 minuter" + }, + "fifteenMinutes": { + "message": "15 minuter" + }, + "thirtyMinutes": { + "message": "30 minuter" + }, + "oneHour": { + "message": "1 timme" + }, + "fourHours": { + "message": "4 timmar" + }, + "onRefresh": { + "message": "Vid omstart" + }, + "dateUpdated": { + "message": "Uppdaterades", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Lösenordet uppdaterades", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organisationen är inaktiverad." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Uppdaterade användare" + }, + "selected": { + "message": "Markerade" + }, + "ownership": { + "message": "Ägarskap" + }, + "whoOwnsThisItem": { + "message": "Vem äger detta objekt?" + }, + "strong": { + "message": "Stark", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Bra", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Svagt", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Mycket svagt", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Rotera även mitt kontos krypteringsnyckel" + }, + "rotateEncKeyTitle": { + "message": "Rotera krypteringsnyckel" + }, + "rotateEncKeyConfirmation": { + "message": "Är du säker på att du vill rotera ditt kontos krypteringsnyckel?" + }, + "attachmentsNeedFix": { + "message": "Detta objekt har gamla bilagor som behöver åtgärdas." + }, + "attachmentFixDesc": { + "message": "Detta är en gammal bilaga som behöver åtgärdas. Klicka för att läsa mer." + }, + "fix": { + "message": "Åtgärda", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Det finns gamla bilagor i ditt valv som behöver åtgärdas innan du kan rotera ditt kontos krypteringsnyckel." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "För att säkerställa dina krypteringsnycklars integritet, vänligen verifiera användarens fingeravtrycksfras innan du fortsätter.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Gratis", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API-nyckel" + }, + "apiKeyDesc": { + "message": "Din API-nyckel kan användas för att autentisera mot Bitwardens publika API." + }, + "apiKeyRotateDesc": { + "message": "Genom att rotera API-nyckeln ogiltigförklarar du den tidigare nyckeln. Du kan rotera din API-nyckel om du tror att din nuvarande nyckel inte längre är säker att använda." + }, + "apiKeyWarning": { + "message": "Din API-nyckel har full tillgång till organisationen. Den bör hållas hemlig." + }, + "userApiKeyDesc": { + "message": "Din API-nyckel kan användas för att autentisera i Bitwardens CLI." + }, + "userApiKeyWarning": { + "message": "Din API-nyckel är en alternativ autentiseringsmekanism. Den bör hållas hemlig." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Klientautentiseringsuppgifter", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Visa API-nyckel" + }, + "rotateApiKey": { + "message": "Rotera API-nyckel" + }, + "selectOneCollection": { + "message": "Du måste markera minst en samling." + }, + "couldNotChargeCardPayInvoice": { + "message": "Det gick inte att debitera ditt kort. Vänligen granska och betala den obetalda fakturan som visas nedan." + }, + "inAppPurchase": { + "message": "Köp i appen" + }, + "cannotPerformInAppPurchase": { + "message": "Du kan inte utföra denna åtgärd när du använder köp i appen som betalningsmetod." + }, + "manageSubscriptionFromStore": { + "message": "Du måste hantera ditt abonnemang från butiken där ditt köp i appen gjordes." + }, + "minLength": { + "message": "Minsta längd" + }, + "clone": { + "message": "Klona" + }, + "masterPassPolicyDesc": { + "message": "Ange minimikrav för huvudlösenordsstyrka." + }, + "twoStepLoginPolicyDesc": { + "message": "Kräv att användare konfigurerar tvåstegsverifiering för sina personliga konton." + }, + "twoStepLoginPolicyWarning": { + "message": "Medlemmar som inte har tvåstegsverifiering aktiverat för sina personliga konton kommer tas bort från organisationen och få ett e-postmeddelande om ändringen." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Du är medlem i en organisation som kräver att tvåstegsverifiering är aktiverat för ditt användarkonto. Om du inaktiverar alla metoder för tvåstegsverifiering kommer du automatiskt tas bort från dessa organisationer." + }, + "passwordGeneratorPolicyDesc": { + "message": "Ange minimikrav för lösenordsgeneratorn." + }, + "passwordGeneratorPolicyInEffect": { + "message": "En eller flera organisationspolicyer påverkar dina generatorinställningar." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minsta antal ord" + }, + "defaultType": { + "message": "Standardtyp" + }, + "userPreference": { + "message": "Användarpreferens" + }, + "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": "Papperskorg", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Sök i papperskorgen" + }, + "permanentlyDelete": { + "message": "Radera permanent" + }, + "permanentlyDeleteSelected": { + "message": "Radera markerade permanent" + }, + "permanentlyDeleteItem": { + "message": "Radera objekt permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Är du säker på att du vill radera detta objekt permanent?" + }, + "permanentlyDeletedItem": { + "message": "Raderade objekt permanent" + }, + "permanentlyDeletedItems": { + "message": "Raderade objekt permanent" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Du har markerat $COUNT$ objekt att radera permanent. Är du säker på att du vill radera alla dessa objekt permanent?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Raderade objektet $ID$ permanent.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Återställ" + }, + "restoreSelected": { + "message": "Återställ markerade" + }, + "restoreItem": { + "message": "Återställ objekt" + }, + "restoredItem": { + "message": "Återställde objekt" + }, + "restoredItems": { + "message": "Återställde objekt" + }, + "restoreItemConfirmation": { + "message": "Är du säker på att du vill återställa detta objekt?" + }, + "restoreItems": { + "message": "Återställ objekt" + }, + "restoreSelectedItemsDesc": { + "message": "Du har markerat $COUNT$ objekt att återställa. Är du säker på att du vill återställa alla dessa objekt?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Återställde objektet $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Dölj lösenord" + }, + "countryPostalCodeRequiredDesc": { + "message": "Vi behöver denna information endast för att beräkna moms och finansiell rapportering." + }, + "includeVAT": { + "message": "Inkludera momsinformation (valfri)" + }, + "taxIdNumber": { + "message": "Momsregistreringsnummer (VAT/GST)" + }, + "taxInfoUpdated": { + "message": "Momsinformationen uppdaterades." + }, + "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." + }, + "identifier": { + "message": "Identifierare" + }, + "organizationIdentifier": { + "message": "Organisationens Identifierare" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Logga in genom organisationens inloggningsportal. Ange organisationens identifierare för att börja." + }, + "enterpriseSingleSignOn": { + "message": "Single Sign-On för företag" + }, + "ssoHandOff": { + "message": "Du kan nu stänga denna flik och fortsätta i tillägget." + }, + "includeAllTeamsFeatures": { + "message": "Alla funktioner för team, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO-autentisering via SAML2.0 och OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Företagets policyer" + }, + "ssoValidationFailed": { + "message": "Validering med SSO misslyckades" + }, + "ssoIdentifierRequired": { + "message": "Organisationens identifierare krävs." + }, + "unlinkSso": { + "message": "Avlänka SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Länka SSO" + }, + "singleOrg": { + "message": "En organisation" + }, + "singleOrgDesc": { + "message": "Hindra användare från att gå med i några andra organisationer." + }, + "singleOrgBlockCreateMessage": { + "message": "Din nuvarande organisation har en policy som hindrar dig från att gå med i fler än en organisation. Vänligen kontakta din organisations administratörer eller registrera ett annat Bitwarden-konto." + }, + "singleOrgPolicyWarning": { + "message": "Medlemmar som inte är ägare eller administratörer och redan är med i en annan organisation kommer att tas bort från organisationen." + }, + "requireSso": { + "message": "Autentisering med Single Sign-On" + }, + "requireSsoPolicyDesc": { + "message": "Kräv att användare loggar in med Single Sign-On för företag." + }, + "prerequisite": { + "message": "Förutsättning" + }, + "requireSsoPolicyReq": { + "message": "Policyn \"En organisation\" måste vara aktiverad innan denna policy kan aktiveras." + }, + "requireSsoPolicyReqError": { + "message": "Policyn \"En organisation\" är inte aktiverad." + }, + "requireSsoExemption": { + "message": "Organisationens ägare och administratörer är undantagna från denna policy." + }, + "sendTypeFile": { + "message": "Fil" + }, + "sendTypeText": { + "message": "Text" + }, + "createSend": { + "message": "Skapa ny Send", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Radera Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Inaktiverad" + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Copy Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Ta bort lösenord" + }, + "removedPassword": { + "message": "Tog bort lösenord" + }, + "removePasswordConfirmation": { + "message": "Är du säker på att du vill ta bort lösenordet?" + }, + "hideEmail": { + "message": "Dölj min e-postadress för mottagare." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "All Sends" + }, + "maxAccessCountReached": { + "message": "Det maximala antalet åtkomster har uppnåtts", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Väntar på radering" + }, + "expired": { + "message": "Utgången" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "This Send is protected with a password. Please type the password below to continue.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Ladda ner fil" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Nödåtkomst" + }, + "emergencyAccessDesc": { + "message": "Bevilja och hantera åtkomst för betrodda kontakter i nödsituationer. Betrodda kontakter kan begära att antingen visa eller ta över ditt konto vid en nödsituation. Besök vår hjälpsida för mer information och information om hur delning utan kännedom fungerar." + }, + "emergencyAccessOwnerWarning": { + "message": "Du är ägare till en eller flera organisationer. Om du ger tillgång till en nödkontakt kommer de att kunna använda alla dina behörigheter som ägare efter ett övertagande." + }, + "trustedEmergencyContacts": { + "message": "Betrodda nödkontakter" + }, + "noTrustedContacts": { + "message": "Du har inte lagt till några nödkontakter än, bjud in en betrodd kontakt för att komma igång." + }, + "addEmergencyContact": { + "message": "Lägg till nödkontakt" + }, + "designatedEmergencyContacts": { + "message": "Utsedd till nödkontakt" + }, + "noGrantedAccess": { + "message": "Du har inte utsetts till någon annans nödkontakt än." + }, + "inviteEmergencyContact": { + "message": "Bjud in nödkontakt" + }, + "editEmergencyContact": { + "message": "Redigera nödkontakt" + }, + "inviteEmergencyContactDesc": { + "message": "Bjud in en nödkontakt genom att ange e-postadressen som tillhör deras Bitwarden-konto nedan. Om de inte redan har ett Bitwarden-konto kommer de uppmanas att skapa ett." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Nödåtkomst initierad" + }, + "emergencyAccessRecoveryApproved": { + "message": "Nödåtkomst godkänd" + }, + "viewDesc": { + "message": "Kan visa alla objekt i ditt valv." + }, + "takeover": { + "message": "Ta över" + }, + "takeoverDesc": { + "message": "Kan återställa ditt konto med ett nytt huvudlösenord." + }, + "waitTime": { + "message": "Väntetid" + }, + "waitTimeDesc": { + "message": "Tid som krävs innan åtkomst beviljas automatiskt." + }, + "oneDay": { + "message": "1 dag" + }, + "days": { + "message": "$DAYS$ dagar", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Bjöd in användare." + }, + "acceptEmergencyAccess": { + "message": "Du har blivit inbjuden att bli nödkontakt åt användaren ovan. För att acceptera inbjudan måste du logga in eller skapa ett nytt Bitwarden-konto." + }, + "emergencyInviteAcceptFailed": { + "message": "Det gick inte att acceptera inbjudan. Be användaren att skicka en ny inbjudan." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Det gick inte att acceptera inbjudan. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Du kan komma åt nödalternativen för den här användaren efter att din identitet har bekräftats. Vi skickar dig ett e-postmeddelande när det händer." + }, + "requestAccess": { + "message": "Begär åtkomst" + }, + "requestAccessConfirmation": { + "message": "Är du säker på att du vill begära nödåtkomst? Du kommer att få åtkomst efter $WAITTIME$ dag(ar) eller när användaren manuellt godkänner begäran.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Nödåtkomst begärd för $USER$. Vi meddelar dig via e-post när det är möjligt att fortsätta.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Godkänn" + }, + "reject": { + "message": "Neka" + }, + "approveAccessConfirmation": { + "message": "Är du säker på att du vill godkänna nödåtkomst? Detta tillåter $USER$ att $ACTION$ ditt konto.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Nödåtkomst godkänd." + }, + "emergencyRejected": { + "message": "Nödåtkomst nekad" + }, + "passwordResetFor": { + "message": "Lösenordet för $USER$ återställdes. Du kan nu logga in med det nya lösenordet.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personligt ägarskap" + }, + "personalOwnershipPolicyDesc": { + "message": "Kräv att användare sparar objekt till en organisation genom att ta bort det personliga ägarskapsalternativet." + }, + "personalOwnershipExemption": { + "message": "Organisationens ägare och administratörer är undantagna från denna policy." + }, + "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." + }, + "disableSend": { + "message": "Inaktivera Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Användare som kan hantera organisationens policyer är berörs inte av den här policyn." + }, + "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." + }, + "sendOptions": { + "message": "Alternativ för Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Ange alternativ för att skapa och redigera Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organisationsanvändare som kan hantera organisationens policyer berörs inte av den här policyn." + }, + "disableHideEmail": { + "message": "Tillåt inte användare att dölja sin e-postadress från mottagare när de skapar eller redigerar en Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Följande organisationspolicyer är aktiva just nu:" + }, + "sendDisableHideEmailInEffect": { + "message": "Användare får inte dölja sin e-postadress för mottagare när de skapar eller redigerar en Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Ändrade policyn $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Abonnemangets pris" + }, + "estimatedTax": { + "message": "Uppskattad moms" + }, + "custom": { + "message": "Anpassad" + }, + "customDesc": { + "message": "Tillåter mer detaljerad kontroll av användarbehörigheter för avancerade konfigurationer." + }, + "permissions": { + "message": "Behörigheter" + }, + "accessEventLogs": { + "message": "Åtkomst till händelseloggar" + }, + "accessImportExport": { + "message": "Åtkomst till import/export" + }, + "accessReports": { + "message": "Åtkomst till rapporter" + }, + "missingPermissions": { + "message": "Du har inte tillstånd att utföra den här åtgärden." + }, + "manageAllCollections": { + "message": "Hantera alla samlingar" + }, + "createNewCollections": { + "message": "Skapa ny samling" + }, + "editAnyCollection": { + "message": "Ändra samling" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Hantera tilldelade samlingar" + }, + "editAssignedCollections": { + "message": "Redigera tilldelade samlingar" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Hantera grupper" + }, + "managePolicies": { + "message": "Hantera policyer" + }, + "manageSso": { + "message": "Hantera SSO" + }, + "manageUsers": { + "message": "Hantera användare" + }, + "manageResetPassword": { + "message": "Hantera lösenordsåterställning" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "En organisationspolicy påverkar dina ägarskapsalternativ." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Inaktivera personligt ägarskap för organisationens användare" + }, + "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." + }, + "sendNameDesc": { + "message": "A friendly name to describe this 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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Läs mer om", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Dela text eller filer direkt med vem som helst." + }, + "sendVaultCardLearnMore": { + "message": "Läs mer", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "se", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "hur det fungerar", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "eller", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "prova det nu", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "eller", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "registrera dig", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "att prova det idag.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden-användaren $USER_IDENTIFIER$ delade följande med dig", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Bitwarden-användaren som skapade denna Send har valt att dölja sin e-postadress. Du bör se till att du litar på källan till denna länk innan du använder eller hämtar innehållet.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Det angivna utgångsdatumet är inte giltigt." + }, + "deletionDateIsInvalid": { + "message": "Det angivna raderingsdatumet är inte giltigt." + }, + "expirationDateAndTimeRequired": { + "message": "Ett utgångsdatum och tid krävs." + }, + "deletionDateAndTimeRequired": { + "message": "Ett raderingsdatum och tid krävs." + }, + "dateParsingError": { + "message": "Det gick inte att spara raderings- och utgångsdatum." + }, + "webAuthnFallbackMsg": { + "message": "Klicka på knappen nedan för att verifiera din 2FA." + }, + "webAuthnAuthenticate": { + "message": "Autentisera WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn stöds inte i denna webbläsare." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Din lösenordsledtråd får inte vara samma som ditt lösenord." + }, + "enrollPasswordReset": { + "message": "Delta i lösenordsåterställning" + }, + "enrolledPasswordReset": { + "message": "Deltar ​i lösenordsåterställning" + }, + "withdrawPasswordReset": { + "message": "Utträd från lösenordsåterställning" + }, + "enrollPasswordResetSuccess": { + "message": "Deltagandet lyckades!" + }, + "withdrawPasswordResetSuccess": { + "message": "Utträdet lyckades!" + }, + "eventEnrollPasswordReset": { + "message": "Användare $ID$ anmälde sig till hjälp för återställning av lösenord.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Användaren $ID$ drog sig tillbaka från hjälp med återställning av lösenord.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Huvudlösenordet återställdes för användaren $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Återställ lösenord" + }, + "resetPasswordLoggedOutWarning": { + "message": "Om du fortsätter kommer $NAME$ loggas ut från sin nuvarande session vilket kräver att de loggar in igen. Aktiva sessioner på andra enheter kan fortsätta vara aktiva i upp till en timme.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "denna användare" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "En eller flera organisationspolicyer kräver att huvudlösenordet uppfyller följande krav:" + }, + "resetPasswordSuccess": { + "message": "Lösenordsåterställningen lyckades!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Deltagande tillåter organisationsadministratörer att ändra ditt huvudlösenord. Är du säker på att du vill delta?" + }, + "resetPasswordPolicy": { + "message": "Återställning av huvudlösenord" + }, + "resetPasswordPolicyDescription": { + "message": "Tillåt administratörer i organisationen att återställa organisationens användares huvudlösenord." + }, + "resetPasswordPolicyWarning": { + "message": "Användare i organisationen måste själva delta eller delta automatiskt innan administratörer kan återställa deras huvudlösenord." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatiskt deltagande" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Användare som redan är med i organisationen kommer inte att retroaktivt delta i lösenordsåterställning. De kommer behöva delta själva innan administratörer kan återställa sitt huvudlösenord." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Svaret om organisationnycklar är null" + }, + "resetPasswordDetailsError": { + "message": "Svaret om detaljer om lösenordsåterställning är null" + }, + "trashCleanupWarning": { + "message": "Objekt som har legat i papperskorgen i mer än 30 dagar raderas automatiskt." + }, + "trashCleanupWarningSelfHosted": { + "message": "Objekt som har legat i papperskorgen ett tag raderas automatiskt." + }, + "passwordPrompt": { + "message": "Återupprepa huvudlösenord" + }, + "passwordConfirmation": { + "message": "Bekräfta huvudlösenord" + }, + "passwordConfirmationDesc": { + "message": "Denna åtgärd är skyddad. För att fortsätta, ange ditt huvudlösenord igen för att verifiera din identitet." + }, + "reinviteSelected": { + "message": "Skicka inbjudningar igen" + }, + "noSelectedUsersApplicable": { + "message": "Denna åtgärd är inte tillämplig på någon av de valda användarna." + }, + "removeUsersWarning": { + "message": "Är du säker på att du vill ta bort följande användare? Processen kan ta några sekunder att slutföra och kan inte pausas eller avbrytas." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Använd systemtema" + }, + "themeDark": { + "message": "Mörkt" + }, + "themeLight": { + "message": "Ljust" + }, + "confirmSelected": { + "message": "Bekräfta valda" + }, + "bulkConfirmStatus": { + "message": "Status för massåtgärd" + }, + "bulkConfirmMessage": { + "message": "Bekräftade." + }, + "bulkReinviteMessage": { + "message": "Bjöd in igen." + }, + "bulkRemovedMessage": { + "message": "Tog bort" + }, + "bulkFilteredMessage": { + "message": "Exkluderad, inte tillämplig för denna åtgärd." + }, + "fingerprint": { + "message": "Fingeravtryck" + }, + "removeUsers": { + "message": "Ta bort användare" + }, + "error": { + "message": "Fel" + }, + "resetPasswordManageUsers": { + "message": "Hantera användare måste också aktiveras med rättigheten Hantera lösenordsåterställning" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Klienter" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Lägg till befintlig organisation" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Lägg till" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "hours": { + "message": "Timmar" + }, + "minutes": { + "message": "Minuter" + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Typ" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Lös in" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Välj den organisation som du vill sponsra" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Återkalla konto $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Lös in nu" + }, + "recipient": { + "message": "Mottagare" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Återkalla" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Ogiltig verifieringskod" + }, + "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": "Lämna organisation" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Tillbaka till Rapporter" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json new file mode 100644 index 0000000000..e392f2634b --- /dev/null +++ b/apps/web/src/locales/tr/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ web kasası", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Bu kaydın türü nedir?" + }, + "name": { + "message": "Ad" + }, + "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": "Yeni URI" + }, + "username": { + "message": "Kullanıcı adı" + }, + "password": { + "message": "Parola" + }, + "newPassword": { + "message": "Yeni parola" + }, + "passphrase": { + "message": "Uzun söz" + }, + "notes": { + "message": "Notlar" + }, + "customFields": { + "message": "Özel alanlar" + }, + "cardholderName": { + "message": "Kart sahibinin adı" + }, + "number": { + "message": "Numara" + }, + "brand": { + "message": "Marka" + }, + "expiration": { + "message": "Son kullanma tarihi" + }, + "securityCode": { + "message": "Güvenlik kodu (CVV)" + }, + "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" + }, + "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" + }, + "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ı" + }, + "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." + }, + "remove": { + "message": "Kaldır" + }, + "unassigned": { + "message": "Atanmamış" + }, + "noneFolder": { + "message": "Klasör yok", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Klasör ekle" + }, + "editFolder": { + "message": "Klasörü düzenle" + }, + "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." + }, + "never": { + "message": "Asla" + }, + "toggleVisibility": { + "message": "Görünürlüğü aç/kapat" + }, + "toggleCollapse": { + "message": "Daraltmayı aç/kapat", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Parola oluştur" + }, + "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." + }, + "save": { + "message": "Kaydet" + }, + "cancel": { + "message": "İptal" + }, + "canceled": { + "message": "İptal edildi" + }, + "close": { + "message": "Kapat" + }, + "delete": { + "message": "Sil" + }, + "favorite": { + "message": "Favori" + }, + "unfavorite": { + "message": "Favorilerden çıkar" + }, + "edit": { + "message": "Düzenle" + }, + "searchCollection": { + "message": "Koleksiyonda ara" + }, + "searchFolder": { + "message": "Klasörde ara" + }, + "searchFavorites": { + "message": "Favorilerde ara" + }, + "searchType": { + "message": "Arama türü", + "description": "Search item type" + }, + "searchVault": { + "message": "Kasada ara" + }, + "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" + }, + "typeLoginPlural": { + "message": "Hesaplar" + }, + "typeCardPlural": { + "message": "Kartlar" + }, + "typeIdentityPlural": { + "message": "Kimlikler" + }, + "typeSecureNotePlural": { + "message": "Güvenli Notlar" + }, + "folders": { + "message": "Klasörler" + }, + "collections": { + "message": "Koleksiyonlar" + }, + "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" + }, + "shared": { + "message": "Paylaşılan" + }, + "attachments": { + "message": "Ekler" + }, + "select": { + "message": "Seç" + }, + "addItem": { + "message": "Kayıt ekle" + }, + "editItem": { + "message": "Kaydı düzenle" + }, + "viewItem": { + "message": "Kaydı göster" + }, + "ex": { + "message": "örn.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Diğer" + }, + "share": { + "message": "Paylaş" + }, + "moveToOrganization": { + "message": "Kuruluşa taşı" + }, + "valueCopied": { + "message": "$VALUE$ kopyalandı", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Değeri kopyala", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Parolayı kopyala", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Kullanıcı adını kopyala", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Numarayı kopyala", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Güvenlik kodunu kopyala", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "URI'yi kopyala", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Kasam" + }, + "vault": { + "message": "Kasa" + }, + "moveSelectedToOrg": { + "message": "Seçilenleri kuruluşa taşı" + }, + "deleteSelected": { + "message": "Seçilenleri sil" + }, + "moveSelected": { + "message": "Seçilenleri taşı" + }, + "selectAll": { + "message": "Tümünü seç" + }, + "unselectAll": { + "message": "Seçimi iptal et" + }, + "launch": { + "message": "Aç" + }, + "newAttachment": { + "message": "Yeni dosya ekle" + }, + "deletedAttachment": { + "message": "Dosya silindi" + }, + "deleteAttachmentConfirmation": { + "message": "Bu dosyayı silmek istediğinizden emin misiniz?" + }, + "attachmentSaved": { + "message": "Dosya kaydedildi." + }, + "file": { + "message": "Dosya" + }, + "selectFile": { + "message": "Bir dosya seçin." + }, + "maxFileSize": { + "message": "Maksimum dosya boyutu 500 MB'dir." + }, + "updateKey": { + "message": "Şifreleme anahtarınızı güncellemeden bu özelliği kullanamazsınız." + }, + "addedItem": { + "message": "Kayıt eklendi" + }, + "editedItem": { + "message": "Kayıt düzenlendi" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ $ORGNAME$ kuruluşuna taşındı", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Seçilen kayıtlar $ORGNAME$ kuruluşuna taşındı", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Kaydı sil" + }, + "deleteFolder": { + "message": "Klasörü sil" + }, + "deleteAttachment": { + "message": "Dosyayı sil" + }, + "deleteItemConfirmation": { + "message": "Çöp kutusuna göndermek istediğinizden emin misiniz?" + }, + "deletedItem": { + "message": "Kayıt çöp kutusuna gönderildi" + }, + "deletedItems": { + "message": "Kayıtlar çöp kutusuna gönderildi" + }, + "movedItems": { + "message": "Kayıtlar taşındı" + }, + "overwritePasswordConfirmation": { + "message": "Mevcut parolanın üzerine kaydetmek istediğinizden emin misiniz?" + }, + "editedFolder": { + "message": "Klasör düzenlendi" + }, + "addedFolder": { + "message": "Klasör eklendi" + }, + "deleteFolderConfirmation": { + "message": "Bu klasörü silmek istediğinizden emin misiniz?" + }, + "deletedFolder": { + "message": "Klasör silindi" + }, + "loggedOut": { + "message": "Çıkış yapıldı" + }, + "loginExpired": { + "message": "Oturumunuz zaman aşımına uğradı." + }, + "logOutConfirmation": { + "message": "Çıkmak istediğinizden emin misiniz?" + }, + "logOut": { + "message": "Çıkış yap" + }, + "ok": { + "message": "Tamam" + }, + "yes": { + "message": "Evet" + }, + "no": { + "message": "Hayır" + }, + "loginOrCreateNewAccount": { + "message": "Güvenli kasanıza ulaşmak için giriş yapın veya yeni bir hesap oluşturun." + }, + "createAccount": { + "message": "Hesap aç" + }, + "logIn": { + "message": "Giriş yap" + }, + "submit": { + "message": "Gönder" + }, + "emailAddressDesc": { + "message": "Giriş yapmak için e-posta adresinizi kullanacaksınız." + }, + "yourName": { + "message": "Adınız" + }, + "yourNameDesc": { + "message": "Size nasıl hitap edelim?" + }, + "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. Unutursanız parolalarınızı asla kurtaramazsınız." + }, + "masterPassHintDesc": { + "message": "Ana parolanızı unutursanız bu ipucuna bakınca size ana parolanızı hatırlatacak bir şey yazabilirsiniz." + }, + "reTypeMasterPass": { + "message": "Ana parolayı tekrar yazın" + }, + "masterPassHint": { + "message": "Ana parola ipucu (isteğe bağlı)" + }, + "masterPassHintLabel": { + "message": "Ana parola ipucu" + }, + "settings": { + "message": "Ayarlar" + }, + "passwordHint": { + "message": "Parola ipucu" + }, + "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 gerekli." + }, + "masterPassLength": { + "message": "Ana parola en az 8 karakter uzunluğunda olmalıdır." + }, + "masterPassDoesntMatch": { + "message": "Ana 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." + }, + "emailAddress": { + "message": "E-posta adresi" + }, + "yourVaultIsLocked": { + "message": "Kasanız kilitli. Devam etmek için ana parolanızı doğrulayın." + }, + "unlock": { + "message": "Kilidi aç" + }, + "loggedInAsEmailOn": { + "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" + }, + "lockNow": { + "message": "Şimdi kilitle" + }, + "noItemsInList": { + "message": "Listelenecek kayıt yok." + }, + "noCollectionsInList": { + "message": "Listelenecek koleksiyon yok." + }, + "noGroupsInList": { + "message": "Listelenecek grup yok." + }, + "noUsersInList": { + "message": "Listelenecek kullanıcı yok." + }, + "noEventsInList": { + "message": "Listelenecek olay yok." + }, + "newOrganization": { + "message": "Yeni kuruluş" + }, + "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." + }, + "versionNumber": { + "message": "Sürüm $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Kimlik doğrulama uygulamanızdaki 6 haneli doğrulama kodunu girin." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ adresine e-postayla gönderdiğimiz 6 haneli doğrulama kodunu girin.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Doğrulama e-postası $EMAIL$ adresine gönderildi.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Beni hatırla" + }, + "sendVerificationCodeEmailAgain": { + "message": "Doğrulama kodu e-postasını yeniden gönder" + }, + "useAnotherTwoStepMethod": { + "message": "Başka bir iki aşamalı giriş yöntemini kullan" + }, + "insertYubiKey": { + "message": "YubiKey'inizi 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. Düğmesi varsa dokunun." + }, + "loginUnavailable": { + "message": "Giriş yapılamıyor" + }, + "noTwoStepProviders": { + "message": "Bu hesapta iki aşamalı giriş özelliği etkin ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu tarayıcıyı desteklemiyor." + }, + "noTwoStepProviders2": { + "message": "Lütfen desteklenen bir web tarayıcısı (örn. Chrome) kullanın ve/veya web tarayıcılarında daha iyi desteklenen sağlayıcılar (örn. kimlik doğrulama uygulaması) ekleyin." + }, + "twoStepOptions": { + "message": "İki aşamalı giriş seçenekleri" + }, + "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ğrulama uygulaması" + }, + "authenticatorAppDesc": { + "message": "Zamana dayalı doğrulama kodları oluşturmak için kimlik doğrulama uygulaması (örn. Authy veya Google Authenticator) 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 YubiKey kullanabilirsiniz. YubiKey 4 serisi, 5 serisi ve NEO cihazlarıyla çalışır." + }, + "duoDesc": { + "message": "Duo Security ile doğrulama için Duo Mobile uygulaması, SMS, telefon araması 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 araması veya U2F güvenlik anahtarını kullanın.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "u2fDesc": { + "message": "Hesabınıza erişmek için FIDO U2F uyumlu bir güvenlik anahtarı kullanın." + }, + "u2fTitle": { + "message": "FIDO U2F güvenlik anahtarı" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Hesabınıza erişmek için WebAuthn uyumlu bir güvenlik anahtarı kullanın." + }, + "webAuthnMigrated": { + "message": "(FIDO'dan taşındı)" + }, + "emailTitle": { + "message": "E-posta" + }, + "emailDesc": { + "message": "Doğrulama kodları e-posta adresinize gönderilecek." + }, + "continue": { + "message": "Devam" + }, + "organization": { + "message": "Kuruluş" + }, + "organizations": { + "message": "Kuruluşlar" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Bu kayıtları taşımak istediğiniz kuruluşu seçin. Taşıdığınız kayıtların sahipliği seçtiğiniz kuruluşa aktarılacak. Artık bu kayıtların doğrudan sahibi olmayacaksınız." + }, + "collectionsDesc": { + "message": "Bu kaydın şu anda paylaşıldığı koleksiyonları düzenler. Kuruluştaki kullanıcılardan yalnızca bu koleksiyonlara erişimi olanlar bu kaydı görebilir." + }, + "deleteSelectedItemsDesc": { + "message": "Silinmek üzere $COUNT$ kayıt seçtiniz. Bu kayıtların hepsini silmek istediğinizden emin misiniz?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Seçtiğiniz $COUNT$ kaydı taşımak istediğiniz klasörü seçin.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "$COUNT$ kayıt seçtiniz. $MOVEABLE_COUNT$ kayıt bir kuruluşa taşınabilir, $NONMOVEABLE_COUNT$ kayıt taşınamaz.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Doğrulama kodu (TOTP)" + }, + "copyVerificationCode": { + "message": "Doğrulama kodunu kopyala" + }, + "warning": { + "message": "Uyarı" + }, + "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." + }, + "export": { + "message": "Dışarı aktar" + }, + "exportVault": { + "message": "Kasayı dışa aktar" + }, + "fileFormat": { + "message": "Dosya biçimi" + }, + "exportSuccess": { + "message": "Kasadaki verileriniz dışa aktarıldı." + }, + "passwordGenerator": { + "message": "Parola oluşturucu" + }, + "minComplexityScore": { + "message": "Minimum karmaşıklık puanı" + }, + "minNumbers": { + "message": "En az rakam" + }, + "minSpecial": { + "message": "En az özel karakter", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Okurken karışabilecek karakterleri kullanma" + }, + "regeneratePassword": { + "message": "Yeni parola oluştur" + }, + "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" + }, + "passwordHistory": { + "message": "Parola geçmişi" + }, + "noPasswordsInList": { + "message": "Listelenecek parola yok." + }, + "clear": { + "message": "Temizle", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Hesap güncellendi" + }, + "changeEmail": { + "message": "E-postayı değiştir" + }, + "changeEmailTwoFactorWarning": { + "message": "Devam ederseniz hesabınızın e-posta adresi değişecek. İki aşamalı doğrulama için kullandığınız e-posta adresiniz değişmeyecek. Onu iki aşamalı doğrulama ayarlarından değiştirebilirsiniz." + }, + "newEmail": { + "message": "Yeni e-posta" + }, + "code": { + "message": "Kod" + }, + "changeEmailDesc": { + "message": "$EMAIL$ adresine bir doğrulama kodu gönderdik. E-posta adresi değişikliğinizi tamamlamak için lütfen gönderdiğimiz kodu aşağıya yazın.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Devam ederseniz geçerli oturumunuz sonlanacak ve yeniden oturum açmanız gerekecek. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir." + }, + "emailChanged": { + "message": "E-posta değiştirildi" + }, + "logBackIn": { + "message": "Lütfen yeniden giriş yapın." + }, + "logBackInOthersToo": { + "message": "Lütfen yeniden oturum açın. Diğer Bitwarden uygulamalarını kullanıyorsanız onlarda da oturumunuzu kapatıp yeniden açın." + }, + "changeMasterPassword": { + "message": "Ana parolayı değiştir" + }, + "masterPasswordChanged": { + "message": "Ana parola değiştirildi" + }, + "currentMasterPass": { + "message": "Mevcut ana parola" + }, + "newMasterPass": { + "message": "Yeni ana parola" + }, + "confirmNewMasterPass": { + "message": "Yeni ana parolayı onaylayın" + }, + "encKeySettings": { + "message": "Şifreleme anahtarı ayarları" + }, + "kdfAlgorithm": { + "message": "KDF algoritması" + }, + "kdfIterations": { + "message": "KDF iterasyonu" + }, + "kdfIterationsDesc": { + "message": "KDF iterasyonunun daha yüksek olması ana parolanızın kaba kuvvet yoluyla kırılmasını önleyebilir. $VALUE$ veya üzeri bir değer tavsiye ediyoruz.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "KDF iterasyonunu çok yüksek ayarlamak, işlemcisi yavaş olan cihazlardan Bitwarden'a giriş yaparken (ve kilidi açarken) düşük performansa neden olabilir. Değeri $INCREMENT$ ve katları halinde artırmanızı ve ardından tüm cihazlarınızda test etmenizi öneririz.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "KDF'i değiştir" + }, + "encKeySettingsChanged": { + "message": "Şifreleme anahtarı ayarları değişti" + }, + "dangerZone": { + "message": "Tehlikeli Bölge" + }, + "dangerZoneDesc": { + "message": "Dikkatli olun, bu işlemleri geri alamazsınız!" + }, + "deauthorizeSessions": { + "message": "Oturumları kapat" + }, + "deauthorizeSessionsDesc": { + "message": "Başka bir cihazda oturum açtığınızdan endişeli misiniz? Daha önce kullandığınız tüm cihazlardan oturumu kapatmak için aşağıdan ilerleyin. Bu güvenlik aşaması, halka açık bir bilgisayar kullandıysanız veya sahibi olmadığınız bir cihazda parolanızı kaydettiyseniz önerilir. Bu aşama aynı zamanda iki aşamalı giriş kullanılan oturumları da temizleyecektir." + }, + "deauthorizeSessionsWarning": { + "message": "Devam ederseniz geçerli oturumunuz da sonlanacak ve yeniden oturum açmanız gerekecek. İki aşamalı girişi etkinleştirdiyseniz onu da tamamlamanız gerekecek. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir." + }, + "sessionsDeauthorized": { + "message": "Tüm oturumlar kapatıldı" + }, + "purgeVault": { + "message": "Kasayı sil" + }, + "purgedOrganizationVault": { + "message": "Kuruluş kasası silindi." + }, + "vaultAccessedByProvider": { + "message": "Sağlayıcı, kasaya erişti." + }, + "purgeVaultDesc": { + "message": "Kasanızdaki tüm kayıtları ve klasörleri silmek için aşağıdan devam edin. Kuruluşa ait kayıtlar silinmeyecektir." + }, + "purgeOrgVaultDesc": { + "message": "Kuruluş kasasındaki tüm kayıtları silmek için aşağıdaki adımları izleyin." + }, + "purgeVaultWarning": { + "message": "Kasanızı silmek kalıcıdır. Bu işlem geri alınamaz." + }, + "vaultPurged": { + "message": "Kasanız silindi." + }, + "deleteAccount": { + "message": "Hesabı sil" + }, + "deleteAccountDesc": { + "message": "Hesabınızı ve tüm ilişkili verileri silmek için aşağıdan devam edin." + }, + "deleteAccountWarning": { + "message": "Hesabınızı silmek kalıcıdır. Geri alınamaz." + }, + "accountDeleted": { + "message": "Hesap silindi" + }, + "accountDeletedDesc": { + "message": "Hesabınız kapatıldı ve ilişkili tüm veriler silindi." + }, + "myAccount": { + "message": "Hesabım" + }, + "tools": { + "message": "Araçlar" + }, + "importData": { + "message": "Verileri içe aktar" + }, + "importError": { + "message": "İçe aktarma hatası" + }, + "importErrorDesc": { + "message": "İçe aktarmaya çalıştığınız verilerle ilgili bir problem var. Lütfen kaynak dosyanızdaki aşağıda belirtilen hataları çözüp tekrar deneyin." + }, + "importSuccess": { + "message": "Veriler kasanıza başarıyla aktarıldı." + }, + "importWarning": { + "message": "$ORGANIZATION$ kuruluşuna veri aktarıyorsunuz. Verileriniz bu kuruluşun üyeleriyle paylaşılabilir. Devam etmek istiyor musunuz?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Veriler doğru biçimlendirilmemiş. Lütfen içe aktarma dosyanızı kontrol edin ve tekrar deneyin." + }, + "importNothingError": { + "message": "Hiçbir şey içe aktarılmadı." + }, + "importEncKeyError": { + "message": "Dışa aktarılmış dosya çözülemedi. Şifreleme anahtarınız, veri dışa aktarılırken kullanılanla uyuşmuyor." + }, + "selectFormat": { + "message": "İçe aktarma dosyasının biçimini seçin" + }, + "selectImportFile": { + "message": "İçe aktarma dosyasını seçin" + }, + "orCopyPasteFileContents": { + "message": "veya içe aktarma dosyasının içeriğini kopyalayıp yapıştırın" + }, + "instructionsFor": { + "message": "$NAME$ Talimatları", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Seçenekler" + }, + "optionsDesc": { + "message": "Web kasası deneyiminizi özelleştirin." + }, + "optionsUpdated": { + "message": "Seçenekler güncellendi" + }, + "language": { + "message": "Dil" + }, + "languageDesc": { + "message": "Web kasasında kullanılan dili değiştirin." + }, + "disableIcons": { + "message": "Site simgelerini devre dışı bırak" + }, + "disableIconsDesc": { + "message": "Web sitesi simgeleri, kasanızdaki her kaydın yanında o siteyi tanımanıza yardımcı olan bir resim sunar." + }, + "enableGravatars": { + "message": "Gravatar'ı etkinleştir", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "gravatar.com adresinden yüklenen avatarları kullan." + }, + "enableFullWidth": { + "message": "Tam genişlik görünümünü etkinleştir", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Web kasasının tarayıcı penceresi genişliğinin tamamını kullanmasına izin ver." + }, + "default": { + "message": "Varsayılan" + }, + "domainRules": { + "message": "Alan adı kuralları" + }, + "domainRulesDesc": { + "message": "Farklı web sitesi alan adlarında aynı hesap bilgisine sahipseniz web sitesini \"eşdeğer\" olarak işaretleyebilirsiniz. \"Global\" alan adları, sizin için Bitwarden tarafından oluşturulmuş olanlardır." + }, + "globalEqDomains": { + "message": "Global eşdeğer alan adları" + }, + "customEqDomains": { + "message": "Özel eşdeğer alan adları" + }, + "exclude": { + "message": "Hariç tut" + }, + "include": { + "message": "Dahil et" + }, + "customize": { + "message": "Özelleştir" + }, + "newCustomDomain": { + "message": "Yeni özel alan adı" + }, + "newCustomDomainDesc": { + "message": "Alan adları listesini virgülle ayırarak girin. Sadece ana alan adlarına izin verilir. Alt alan adları girmeyin. Örneğin, \"www.google.com\" yerine \"google.com\" yazmalısınız. Bir Android uygulamasını diğer web sitesi alan adlarıyla eşleştirmek için \"androiduygulaması://paket.ismi\" girebilirsiniz." + }, + "customDomainX": { + "message": "Özel alan adı: $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Alan adları güncellendi" + }, + "twoStepLogin": { + "message": "İki aşamalı giriş" + }, + "twoStepLoginDesc": { + "message": "Oturum açarken ek bir adım talep ederek hesabınızı güvenceye alabilirsiniz." + }, + "twoStepLoginOrganizationDesc": { + "message": "Kuruluş düzeyinde sağlayıcıları düzenleyerek kuruluşunuzun kullanıcılarına iki aşamalı girişi zorunlu kılabilirsiniz." + }, + "twoStepLoginRecoveryWarning": { + "message": "İki aşamalı girişi etkinleştirmek, Bitwarden hesabınızı kalıcı olarak kilitleyebilir. Kurtarma kodunuz, iki aşamalı giriş sağlayıcınızı kullanamamanız durumunda hesabınıza erişmenize olanak sağlar (ör. cihazınızı kaybedersiniz). Hesabınıza erişiminizi kaybederseniz Bitwarden destek ekibi size yardımcı olamaz. Kurtarma kodunu not almanızı veya yazdırmanızı ve güvenli bir yerde saklamanızı öneririz." + }, + "viewRecoveryCode": { + "message": "Kurtarma kodunu göster" + }, + "providers": { + "message": "Sağlayıcılar", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Etkinleştir" + }, + "enabled": { + "message": "Etkin" + }, + "premium": { + "message": "Premium", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Premium üyelik" + }, + "premiumRequired": { + "message": "Premium gerekli" + }, + "premiumRequiredDesc": { + "message": "Bu özelliği kullanmak için premium üyelik gereklidir." + }, + "youHavePremiumAccess": { + "message": "Premium erişiminiz var" + }, + "alreadyPremiumFromOrg": { + "message": "Üyesi olduğunuz kuruluş sayesinde premium özelliklere zaten erişiminiz var." + }, + "manage": { + "message": "Yönet" + }, + "disable": { + "message": "Devre dışı bırak" + }, + "twoStepLoginProviderEnabled": { + "message": "Bu iki aşamalı giriş sağlayıcısı hesabınızda etkin durumda." + }, + "twoStepLoginAuthDesc": { + "message": "İki aşamalı giriş ayarlarını değiştirmek için ana parolanızı girin." + }, + "twoStepAuthenticatorDesc": { + "message": "Kimlik doğrulama uygulamasıyla iki aşamalı girişi ayarlamak için aşağıdaki adımları izleyin:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "İki aşamalı kimlik doğrulama uygulamalarından birini indirin" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Kimlik doğrulama uygulamasına mı ihtiyacınız var? Aşağıdakilerden birini indirebilirsiniz" + }, + "iosDevices": { + "message": "iOS cihazları" + }, + "androidDevices": { + "message": "Android cihazları" + }, + "windowsDevices": { + "message": "Windows cihazları" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Bunlar bizim önerdiğimiz uygulamalar ama farklı kimlik doğrulama uygulamaları da kullanabilirsiniz." + }, + "twoStepAuthenticatorScanCode": { + "message": "Bu QR kodunu kimlik doğrulama uygulamanızla tarayın" + }, + "key": { + "message": "Anahtar" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Uygulamanın verdiği 6 basamaklı doğrulama kodunu girin" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Başka bir cihaza eklemeniz gerekirse kimlik doğrulama uygulamanıza aşağıdaki QR kodunu (veya anahtarı) verebilirsiniz." + }, + "twoStepDisableDesc": { + "message": "Bu iki aşamalı giriş sağlayıcısını devre dışı bırakmak istediğinize emin misiniz?" + }, + "twoStepDisabled": { + "message": "İki aşamalı giriş sağlayıcısı devre dışı." + }, + "twoFactorYubikeyAdd": { + "message": "Hesabıma yeni bir YubiKey ekle" + }, + "twoFactorYubikeyPlugIn": { + "message": "YubiKey'i bilgisayarınızın USB portuna takın." + }, + "twoFactorYubikeySelectKey": { + "message": "Aşağıdaki ilk boş YubiKey giriş alanını seçin." + }, + "twoFactorYubikeyTouchButton": { + "message": "YubiKey'in düğmesine dokunun." + }, + "twoFactorYubikeySaveForm": { + "message": "Formu kaydedin." + }, + "twoFactorYubikeyWarning": { + "message": "Platform sınırlamaları nedeniyle YubiKey tüm Bitwarden uygulamalarında kullanılamaz. YubiKey kullanılamadığında hesabınıza erişebilmek için başka bir iki aşamalı doğrulama yöntemi ayarlamanız gerekir. Desteklenen platformlar:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web kasası, masaüstü uygulaması, CLI ve YubiKey'inizi kabul edebilecek bir USB bağlantı noktasına sahip bir cihazdaki tüm tarayıcı uzantıları." + }, + "twoFactorYubikeySupportMobile": { + "message": "NFC özellikli bir cihazdaki mobil uygulamalar veya YubiKey'inizi kabul edebilen bir veri bağlantı noktası." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F anahtarı $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Anahtarı $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC desteği" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Anahtarlarımdan biri NFC destekliyor." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "YubiKey'lerinizden biri NFC'yi destekliyorsa (örn. YubiKey NEO) NFC kullanılabilirliği tespit edildiğinde mobil cihazınızdan sizi uyaracağız." + }, + "yubikeysUpdated": { + "message": "YubiKey'ler güncellendi" + }, + "disableAllKeys": { + "message": "Tüm anahtarları devre dışı bırak" + }, + "twoFactorDuoDesc": { + "message": "Duo Yönetici panelinizden Bitwarden uygulama bilgilerini girin." + }, + "twoFactorDuoIntegrationKey": { + "message": "Entegrasyon anahtarı" + }, + "twoFactorDuoSecretKey": { + "message": "Gizli anahtar" + }, + "twoFactorDuoApiHostname": { + "message": "API sunucusu" + }, + "twoFactorEmailDesc": { + "message": "E-posta ile iki aşamalı girişi kurmak için aşağıdaki adımları izleyin:" + }, + "twoFactorEmailEnterEmail": { + "message": "Doğrulama kodlarını almak istediğiniz e-posta adresini girin" + }, + "twoFactorEmailEnterCode": { + "message": "E-postadaki 6 basamaklı doğrulama kodunu girin" + }, + "sendEmail": { + "message": "E-posta gönder" + }, + "twoFactorU2fAdd": { + "message": "Hesabınıza FIDO U2F güvenlik anahtarı ekleyin" + }, + "removeU2fConfirmation": { + "message": "Bu güvenlik anahtarını kaldırmak istediğinizden emin misiniz?" + }, + "twoFactorWebAuthnAdd": { + "message": "Hesabınıza bir WebAuthn güvenlik anahtarı ekleyin" + }, + "readKey": { + "message": "Anahtarı oku" + }, + "keyCompromised": { + "message": "Anahtar ele geçirilmiş." + }, + "twoFactorU2fGiveName": { + "message": "Güvenlik anahtarını tanımlamak için kolay bir isim verin." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Güvenlik anahtarını bilgisayarınızın USB portuna takıp \"Anahtarı oku\" düğmesine tıklayın." + }, + "twoFactorU2fTouchButton": { + "message": "Güvenlik anahtarının düğmesi varsa düğmeye dokunun." + }, + "twoFactorU2fSaveForm": { + "message": "Formu kaydedin." + }, + "twoFactorU2fWarning": { + "message": "Platform sınırlamaları nedeniyle FIDO U2F tüm Bitwarden uygulamalarında kullanılamaz. FIDO U2F kullanılamadığında hesabınıza erişebilmek için başka bir iki aşamalı doğrulama yöntemi ayarlamanız gerekir. Desteklenen platformlar:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web kasası ve U2F uyumlu bir tarayıcıya (FIDO U2F uyumlu Chrome, Opera, Vivaldi veya Firefox) sahip bir bilgisayardaki tarayıcı uzantıları." + }, + "twoFactorU2fWaiting": { + "message": "Güvenlik anahtarınızdaki düğmeye dokunmanız bekleniyor" + }, + "twoFactorU2fClickSave": { + "message": "Bu güvenlik anahtarıyla iki aşamalı girişi etkinleştirmek için aşağıdaki \"Kaydet\" düğmesine tıklayın." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Güvenlik anahtarını okurken bir sorun oluştu. Tekrar deneyin." + }, + "twoFactorWebAuthnWarning": { + "message": "Platform sınırlamaları nedeniyle WebAuthn tüm Bitwarden uygulamalarında kullanılamaz. WebAuthn kullanılamadığında hesabınıza erişebilmek için başka bir iki aşamalı doğrulama yöntemi ayarlamanız gerekir. Desteklenen platformlar:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "WebAuthn uyumlu bir tarayıcıya (FIDO U2F uyumlu Chrome, Opera, Vivaldi veya Firefox) sahip bir bilgisayardaki tarayıcı uzantıları." + }, + "twoFactorRecoveryYourCode": { + "message": "Bitwarden iki aşamalı giriş kurtarma kodunuz" + }, + "twoFactorRecoveryNoCode": { + "message": "Henüz herhangi bir iki aşamalı giriş sağlayıcısını etkinleştirmediniz. İki aşamalı giriş sağlayıcısını etkinleştirdikten sonra kurtarma kodunuzu almak için burayı tekrar kontrol edebilirsiniz." + }, + "printCode": { + "message": "Kodu yazdır", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Raporlar" + }, + "reportsDesc": { + "message": "Aşağıdaki raporlara tıklayarak çevrimiçi hesaplarınızdaki güvenlik açıklarını görün ve kapatın." + }, + "unsecuredWebsitesReport": { + "message": "Güvensiz Web Siteler Raporu" + }, + "unsecuredWebsitesReportDesc": { + "message": "http:// protokolünü kullanan güvenilmez web sitelerini kullanmak tehlikeli olabilir. Web sitesi bunu sunuyorsa bağlantınızın şifrelenmesi için her zaman https:// protokolünü kullanmalısınız." + }, + "unsecuredWebsitesFound": { + "message": "Güvensiz web siteleri bulundu" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Kasanızda güvenli olmayan URI'ye sahip $COUNT$ kayıt bulduk. Web sitesi izin veriyorsa URI şemasını https:// olarak değiştirmelisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "Kasanızda güvenli olmayan URI'ye sahip hiç kayıt yok." + }, + "inactive2faReport": { + "message": "Pasif 2FA Raporu" + }, + "inactive2faReportDesc": { + "message": "İki aşamalı kimlik doğrulama (2FA), hesaplarınızı güvenceye almanızı sağlayan önemli bir güvenlik ayarıdır. İki aşamalı kimlik doğrulamayı destekleyen sitelerde bu ayarı her zaman etkinleştirmenizi öneririz." + }, + "inactive2faFound": { + "message": "2FA olmayan hesaplar bulundu" + }, + "inactive2faFoundDesc": { + "message": "Kasanızda iki aşamalı kimlik doğrulaması kullanmıyor olabilecek $COUNT$ web sitesi bulduk (2fa.directory’ye göre). Bu hesapları daha iyi korumak için iki aşamalı kimlik doğrulamasını etkinleştirmelisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Kasanızda iki aşamalı kimlik doğrulama yapılandırması eksik olan web sitesi bulunamadı." + }, + "instructions": { + "message": "Yönergeler" + }, + "exposedPasswordsReport": { + "message": "Açığa Çıkmış Parolalar Raporu" + }, + "exposedPasswordsReportDesc": { + "message": "Açığa çıkmış parolalar, kamuya açık olarak yayınlanan veya bilgisayar korsanları tarafından karanlık ağda satıldığı bilinen parolalardır." + }, + "exposedPasswordsFound": { + "message": "Açığa Çıkmış Parolalar Bulundu" + }, + "exposedPasswordsFoundDesc": { + "message": "Kasanızda, bilinen veri ihlallerine maruz kalmış parolalara sahip $COUNT$ kayıt bulundu. Bu parolaları değiştirmelisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "Kasanızdaki hiçbir kaydın parolası bilinen veri ihlallerinde ele geçirilmemiş." + }, + "checkExposedPasswords": { + "message": "Açığa Çıkmış Parolaları Kontrol Et" + }, + "exposedXTimes": { + "message": "$COUNT$ kez açığa çıkmış", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Zayıf Parolalar Raporu" + }, + "weakPasswordsReportDesc": { + "message": "Zayıf parolalar bilgisayar korsanları ve parola kırmak için kullanılan otomatik araçlar tarafından kolayca tahmin edilebilir. Bitwarden parola üreticisi, güçlü şifreler oluşturmanıza yardımcı olabilir." + }, + "weakPasswordsFound": { + "message": "Zayıf parolalar pulundu" + }, + "weakPasswordsFoundDesc": { + "message": "Kasanızda zayıf parolalara sahip $COUNT$ kayıt bulduk. Bunları güncelleyip daha güçlü parolalar kullanmalısınız.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "Kasanızdaki hiçbir kaydın parolası zayıf değil." + }, + "reusedPasswordsReport": { + "message": "Yeniden Kullanılmış Parolalar Raporu" + }, + "reusedPasswordsReportDesc": { + "message": "Kullandığınız bir servis ele geçirilirse, aynı parolayı başka yerlerde kullanmanız hacker'ların diğer hesaplarınıza da kolayca erişmesine olanak tanıyabilir. bu yüzden her hesap ve hizmet için farklı bir parola kullanmalısınız." + }, + "reusedPasswordsFound": { + "message": "Yeniden kullanılmış parolalar bulundu" + }, + "reusedPasswordsFoundDesc": { + "message": "Kasanızda tekrar kullanılmakta olan $COUNT$ parola bulduk. Onları benzersiz parolalarla değiştirmelisiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "Kasanızdaki hiçbir hesabın parolası tekrar kullanılmamış." + }, + "reusedXTimes": { + "message": "$COUNT$ kere yeniden kullanılmış", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Veri İhlali Raporu" + }, + "breachDesc": { + "message": "Hacker'ların bir sitenin verilerine yasadışı bir şekilde erişip bunları herkese açık bir şekilde yayımlamalarına \"ihlal\" denir. Ele geçirilen veri türlerini (e-posta adresleri, parolalar, kredi kartları vb.) inceleyin ve gerekli önlemleri alın (örn. parolaları değiştirin)." + }, + "breachCheckUsernameEmail": { + "message": "Kullandığınız kullanıcı adlarını ve e-posta adreslerini kontrol edin." + }, + "checkBreaches": { + "message": "İhlalleri denetle" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ bilinen veri ihlallerinde bulunamadı.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Haberler iyi", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ $COUNT$ farklı çevrimiçi veri ihlalinde bulundu.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Ele geçirilmiş hesaplar bulundu" + }, + "compromisedData": { + "message": "Ele geçirilen veriler" + }, + "website": { + "message": "Web sitesi" + }, + "affectedUsers": { + "message": "Etkilenen kullanıcılar" + }, + "breachOccurred": { + "message": "İhlal tarihi" + }, + "breachReported": { + "message": "Bildirilme tarihi" + }, + "reportError": { + "message": "Rapor yüklenmeye çalışılırken bir hata oluştu. Tekrar deneyin" + }, + "billing": { + "message": "Faturalandırma" + }, + "accountCredit": { + "message": "Hesap kredisi", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Hesap bakiyesi", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Kredi ekle", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Tutar", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Ödeme tamamlandıktan sonra eklenen kredi hesabınızda görünecektir. Bazı ödeme yöntemlerinin işlenmesi diğerlerine göre daha uzun sürebilir." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Hesabınızdaki krediyi satın alımlarda kullanabilirsiniz. Mevcut krediniz bu hesap için oluşturulan faturalardan otomatik olarak düşülecektir." + }, + "goPremium": { + "message": "Premium'a geçin", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Premium'a yükselttiniz." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Hesabınızı premium üyeliğe yükselterek harika ek özelliklere sahip olabilirsiniz." + }, + "premiumSignUpStorage": { + "message": "Dosya ekleri için 1 GB şifrelenmiş depolama." + }, + "premiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F ve Duo gibi iki aşamalı giriş seçenekleri." + }, + "premiumSignUpEmergency": { + "message": "Acil durum erişimi" + }, + "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!" + }, + "premiumPrice": { + "message": "Bunların hepsi yıllık sadece $PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Eklentiler" + }, + "premiumAccess": { + "message": "Premium erişim" + }, + "premiumAccessDesc": { + "message": "Kuruluşunuzdaki tüm üyelerine $PRICE$ /$INTERVAL$ fiyatla premium erişim ekleyebilirsiniz.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Ek depolama alanı (GB)" + }, + "additionalStorageGbDesc": { + "message": "# ilave GB" + }, + "additionalStorageIntervalDesc": { + "message": "Paketinizde $SIZE$ şifrelenmiş dosya depolama alanı bulunuyor. GB/$INTERVAL$ başına $PRICE$ fiyatla ilave depolama alanı ekleyebilirsiniz.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Özet" + }, + "total": { + "message": "Toplam" + }, + "year": { + "message": "yıl" + }, + "month": { + "message": "ay" + }, + "monthAbbr": { + "message": "ay", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Ödeme yönteminizden hemen şimdi ve ardından her yıl düzenli ödeme alınacaktır. İstediğiniz zaman aboneliğinizi iptal edebilirsiniz." + }, + "paymentCharged": { + "message": "Ödeme yönteminizden hemen şimdi ve ardından her $INTERVAL$ düzenli ödeme alınacaktır. İstediğiniz zaman aboneliğinizi iptal edebilirsiniz.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Paketiniz 7 günlük ücretsiz deneme süresiyle geliyor. Deneme süresi bitene kadar sizden ücret alınmayacak. İstediğiniz zaman aboneliğinizi iptal edebilirsiniz." + }, + "paymentInformation": { + "message": "Ödeme Bilgileri" + }, + "billingInformation": { + "message": "Fatura Bilgileri" + }, + "creditCard": { + "message": "Kredi kartı" + }, + "paypalClickSubmit": { + "message": "PayPal hesabınıza giriş yapmak için PayPal düğmesine tıklayın. Ardından devam etmek için aşağıdaki Gönder düğmesine tıklayın." + }, + "cancelSubscription": { + "message": "Aboneliği iptal et" + }, + "subscriptionCanceled": { + "message": "Aboneliğiniz iptal edildi." + }, + "pendingCancellation": { + "message": "İptal bekleniyor" + }, + "subscriptionPendingCanceled": { + "message": "Aboneliğiniz geçerli fatura dönemi sonunda iptal edilmek üzere işaretlendi." + }, + "reinstateSubscription": { + "message": "Aboneliği sürdür" + }, + "reinstateConfirmation": { + "message": "Bekleyen iptal isteğini kaldırmak ve aboneliğinizi yeniden eski haline getirmek istediğinizden emin misiniz?" + }, + "reinstated": { + "message": "Abonelik sürdürüldü." + }, + "cancelConfirmation": { + "message": "İptal etmek istediğinden emin misin? Bu fatura döneminin sonunda bu aboneliğin tüm özelliklerine erişiminizi kaybedeceksiniz." + }, + "canceledSubscription": { + "message": "Abonelik iptal edildi." + }, + "neverExpires": { + "message": "Zaman aşımı yok" + }, + "status": { + "message": "Durum" + }, + "nextCharge": { + "message": "Sonraki ödeme" + }, + "details": { + "message": "Ayrıntılar" + }, + "downloadLicense": { + "message": "Lisansı indir" + }, + "updateLicense": { + "message": "Lisansı güncelle" + }, + "updatedLicense": { + "message": "Lisans güncellendi" + }, + "manageSubscription": { + "message": "Aboneliğimi yönet" + }, + "storage": { + "message": "Depolama" + }, + "addStorage": { + "message": "Depolama ekle" + }, + "removeStorage": { + "message": "Depolama azalt" + }, + "subscriptionStorage": { + "message": "Aboneliğinizin toplam $MAX_STORAGE$ GB şifrelenmiş dosya depolama alanı var. Şu anda $USED_STORAGE$ kullanıyorsunuz.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Ödeme yöntemi" + }, + "noPaymentMethod": { + "message": "Kayıtlı bir ödeme yöntemi yok." + }, + "addPaymentMethod": { + "message": "Ödeme yöntemi ekle" + }, + "changePaymentMethod": { + "message": "Ödeme yöntemini değiştir" + }, + "invoices": { + "message": "Faturalar" + }, + "noInvoices": { + "message": "Fatura yok." + }, + "paid": { + "message": "Ödendi", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Ödenmedi", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "İşlemler", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "İşlem yok." + }, + "chargeNoun": { + "message": "Ödeme", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "İade", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Ödemeler hesap özetinizde $STATEMENT_NAME$ olarak görünecektir.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "Depolamaya eklenecek GB miktarı" + }, + "gbStorageRemove": { + "message": "Depolamadan çıkarılacak GB miktarı" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "$AMOUNT$ GB depolama alanı ayarlandı.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Müşteri hizmetleriyle iletişime geçin" + }, + "updatedPaymentMethod": { + "message": "Ödeme yöntemi güncellendi." + }, + "purchasePremium": { + "message": "Premium satın al" + }, + "licenseFile": { + "message": "Lisans dosyası" + }, + "licenseFileDesc": { + "message": "Lisans dosyanızın adı şuna benzer olacak: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Hesabınızı premium üyeliğe yükseltmek için geçerli bir lisans dosyası yüklemelisiniz." + }, + "uploadLicenseFileOrg": { + "message": "Şirket içinde barındırılan bir kuruluş oluşturmak için geçerli bir lisans dosyası yüklemeniz gerekir." + }, + "accountEmailMustBeVerified": { + "message": "Hesabınızın e-posta adresi doğrulanmalıdır." + }, + "newOrganizationDesc": { + "message": "Kuruluşlar, kasanızın belli kısımları başkalarıyla paylaşmanıza ve aile, küçük ekip veya büyük şirket gibi kuruluşların kullanıcılarını yönetmenize olanak tanır." + }, + "generalInformation": { + "message": "Genel bilgiler" + }, + "organizationName": { + "message": "Kuruluş adı" + }, + "accountOwnedBusiness": { + "message": "Bu hesap bir işletmeye aittir." + }, + "billingEmail": { + "message": "Fatura için e-posta" + }, + "businessName": { + "message": "Firma adı" + }, + "chooseYourPlan": { + "message": "Planınızı seçin" + }, + "users": { + "message": "Kullanıcı" + }, + "userSeats": { + "message": "Kullanıcı sayısı" + }, + "additionalUserSeats": { + "message": "Ek kullanıcı sayısı" + }, + "userSeatsDesc": { + "message": "Kullanıcı sayısı" + }, + "userSeatsAdditionalDesc": { + "message": "Abonelik paketiniz $BASE_SEATS$ kullanıcıya izin veriyor. İsterseniz kullanıcı başına aylık $SEAT_PRICE$ fiyatla daha fazla kullanıcı ekleyebilirsiniz.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Kaç kullanıcıya ihtiyacınız var? Gerekirse daha sonra bu sayıyı artırabilirsiniz." + }, + "planNameFree": { + "message": "Ücretsiz", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Test veya kişisel kullanım amacıyla $COUNT$ kullanıcıyla paylaşılması için.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Aile" + }, + "planDescFamilies": { + "message": "Kişisel kullanım için, aileniz ve arkadaşlarınızla paylaşın." + }, + "planNameTeams": { + "message": "Ekip" + }, + "planDescTeams": { + "message": "İşletmeler ve diğer ekipler için." + }, + "planNameEnterprise": { + "message": "Kurumsal" + }, + "planDescEnterprise": { + "message": "İşyerleri ve diğer büyük kuruluşlar için." + }, + "freeForever": { + "message": "Ömür boyu ücretsiz" + }, + "includesXUsers": { + "message": "$COUNT$ kullanıcı içerir", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Ek kullanıcı" + }, + "costPerUser": { + "message": "Kullanıcı başına $COST$", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "$COUNT$ kullanıcıyla sınırlı (siz dahil)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "$COUNT$ koleksiyonla sınırlı", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "$COUNT$ kullanıcı ekleyin ve paylaşın", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Sınırsız kullanıcı ekleyin ve paylaşın" + }, + "createUnlimitedCollections": { + "message": "Sınırsız koleksiyon oluşturma" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ şifrelenmiş dosya depolama", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Şirket içi barındırma (isteğe bağlı)" + }, + "usersGetPremium": { + "message": "Kullanıcılar premium özelliklere erişebilir" + }, + "controlAccessWithGroups": { + "message": "Kullanıcı erişimini gruplarla kontrol etme" + }, + "syncUsersFromDirectory": { + "message": "Kullanıcılarınızı ve gruplarınızı dizinle eşitleme" + }, + "trackAuditLogs": { + "message": "Kullanıcı işlemlerinin günlüklerini izleme" + }, + "enforce2faDuo": { + "message": "Duo ile 2FA uygulaması" + }, + "priorityCustomerSupport": { + "message": "Öncelikli müşteri desteği" + }, + "xDayFreeTrial": { + "message": "$COUNT$ günlük ücretsiz deneme. İstediğiniz zaman iptal edebilirsiniz", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Aylık" + }, + "annually": { + "message": "Yıllık" + }, + "basePrice": { + "message": "Taban fiyat" + }, + "organizationCreated": { + "message": "Kuruluş oluşturuldu" + }, + "organizationReadyToGo": { + "message": "Yeni kuruluşunuz hazır!" + }, + "organizationUpgraded": { + "message": "Kuruluşunuz yükseltildi." + }, + "leave": { + "message": "Ayrıl" + }, + "leaveOrganizationConfirmation": { + "message": "Bu kuruluştan ayrılmak istediğinizden emin misiniz?" + }, + "leftOrganization": { + "message": "Kuruluştan ayrıldınız." + }, + "defaultCollection": { + "message": "Varsayılan koleksiyon" + }, + "getHelp": { + "message": "Yardım al" + }, + "getApps": { + "message": "Uygulamaları indir" + }, + "loggedInAs": { + "message": "Kullanıcı:" + }, + "eventLogs": { + "message": "Olay günlükleri" + }, + "people": { + "message": "Kişiler" + }, + "policies": { + "message": "İlkeler" + }, + "singleSignOn": { + "message": "Tek Oturum Açma" + }, + "editPolicy": { + "message": "İlkeyi düzenle" + }, + "groups": { + "message": "Gruplar" + }, + "newGroup": { + "message": "Yeni grup" + }, + "addGroup": { + "message": "Grup ekle" + }, + "editGroup": { + "message": "Grubu düzenle" + }, + "deleteGroupConfirmation": { + "message": "Bu grubu silmek isteğinizden emin misiniz?" + }, + "removeUserConfirmation": { + "message": "Bu kullanıcıyı silmek istediğinizden emin misiniz?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Uyarı! Bu kullanıcı, şifrelemelerini yönetmek için Anahtar Bağlayıcı'ya ihtiyaç duyuyor. Bu kullanıcıyı kuruluşunuzdan çıkarmak, hesabını kalıcı olarak devre dışı bırakacaktır. Bu işlem geri alınamaz. Devam etmek istiyor musunuz?" + }, + "externalId": { + "message": "Harici kimlik" + }, + "externalIdDesc": { + "message": "Harici kimlik, referans olarak veya bu kaynağı kullanıcı dizini gibi harici bir sisteme bağlamak için kullanılabilir." + }, + "accessControl": { + "message": "Erişim kontrolü" + }, + "groupAccessAllItems": { + "message": "Bu grup tüm kayıtlara erişebilir ve onları değiştirebilir." + }, + "groupAccessSelectedCollections": { + "message": "Bu grup sadece seçili koleksiyonlara erişebilir." + }, + "readOnly": { + "message": "Salt okunur" + }, + "newCollection": { + "message": "Yeni koleksiyon" + }, + "addCollection": { + "message": "Koleksiyon ekle" + }, + "editCollection": { + "message": "Koleksiyonu düzenle" + }, + "deleteCollectionConfirmation": { + "message": "Bu koleksiyonu silmek istediğinizden emin misiniz?" + }, + "editUser": { + "message": "Kullanıcıyı düzenle" + }, + "inviteUser": { + "message": "Kullanıcı davet et" + }, + "inviteUserDesc": { + "message": "Aşağıya Bitwarden hesabının e-posta adresini girerek kuruluşunuza yeni bir kullanıcı davet edin. Halihazırda bir Bitwarden hesabı yoksa yeni bir hesap oluşturması istenecektir." + }, + "inviteMultipleEmailDesc": { + "message": "E-posta listesini virgülle ayırarak bir seferde en fazla $COUNT$ kullanıcıyı davet edebilirsiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Bu kullanıcı hesabını korumak için iki aşamalı giriş kullanıyor." + }, + "userAccessAllItems": { + "message": "Bu kullanıcı tüm kayıtlara erişebilir ve onları değiştirebilir." + }, + "userAccessSelectedCollections": { + "message": "Bu kullanıcı sadece seçili koleksiyonlara erişebilir." + }, + "search": { + "message": "Ara" + }, + "invited": { + "message": "Davet edildi" + }, + "accepted": { + "message": "Kabul etti" + }, + "confirmed": { + "message": "Onaylandı" + }, + "clientOwnerEmail": { + "message": "Müşteri sahibinin e-postası" + }, + "owner": { + "message": "Sahip" + }, + "ownerDesc": { + "message": "Kuruluşunuzun tüm alanlarını yönetebilen en yüksek erişimli kullanıcı." + }, + "clientOwnerDesc": { + "message": "Bu kullanıcı Sağlayıcıdan bağımsız olmalıdır. Sağlayıcının kuruluşla ilişkisi kesilirse, bu kullanıcı kuruluşun sahipliğini sürdürür." + }, + "admin": { + "message": "Yönetici" + }, + "adminDesc": { + "message": "Yöneticiler kuruluşunuzdaki tüm kayıtlara, koleksiyonlara ve kullanıcılara erişebilir ve onları yönetebilir." + }, + "user": { + "message": "Kullanıcı" + }, + "userDesc": { + "message": "Kuruluşunuzda atanmış koleksiyonlara erişimi olan normal bir kullanıcı." + }, + "manager": { + "message": "Yönetici" + }, + "managerDesc": { + "message": "Yetkililer kuruluşunuzdaki kendilerine atanmış koleksiyonlara erişebilir ve onları yönetebilir." + }, + "all": { + "message": "Tümü" + }, + "refresh": { + "message": "Yenile" + }, + "timestamp": { + "message": "Zaman damgası" + }, + "event": { + "message": "Olay" + }, + "unknown": { + "message": "Bilinmeyen" + }, + "loadMore": { + "message": "Devamını yükle" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Uzantı", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Masaüstü", + "description": "Desktop app" + }, + "webVault": { + "message": "Web kasası" + }, + "loggedIn": { + "message": "Giriş yapıldı." + }, + "changedPassword": { + "message": "Hesap parolası değiştirildi." + }, + "enabledUpdated2fa": { + "message": "İki aşamalı giriş açıldı/güncellendi." + }, + "disabled2fa": { + "message": "İki aşamalı giriş kapatıldı." + }, + "recovered2fa": { + "message": "İki aşamalı giriş ile hesap kurtarıldı." + }, + "failedLogin": { + "message": "Hatalı parola sebebiyle oturum açma başarısız oldu." + }, + "failedLogin2fa": { + "message": "Hatalı iki aşamalı doğrulama sebebiyle oturum açma başarısız oldu." + }, + "exportedVault": { + "message": "Kasa dışa aktarıldı." + }, + "exportedOrganizationVault": { + "message": "Kuruluş kasası dışa aktarıldı." + }, + "editedOrgSettings": { + "message": "Kuruluş ayarları düzenlendi." + }, + "createdItemId": { + "message": "$ID$ kaydı oluşturuldu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "$ID$ kaydı düzenlendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "$ID$ kaydı çöp kutusuna gönderildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "$ID$ kaydı bir kuruluşa taşındı.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "$ID$ kaydı görüntülendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "$ID$ parolası görüntülendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "$ID$ gizli alanı görüntülendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "$ID$ güvenlik kodu görüntülendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "$ID$ parolası kopyalandı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "$ID$ gizli alanı kopyalandı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "$ID$ güvenlik kodu kopyalandı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "$ID$ kaydı otomatik dolduruldu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "$ID$ koleksiyonu oluşturuldu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "$ID$ koleksiyonu düzenlendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "$ID$ koleksiyonu silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "İlke düzenlendi: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Grup oluşturuldu: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Grup düzenlendi: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Grup silindi: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Kullanıcı silindi: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "$ID$ için bir ek oluşturuldu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "$ID$ için bir ek silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "$ID$ için koleksiyonlar düzenlendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Kullanıcı davet edildi: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Kullanıcı onaylandı: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Kullanıcı düzenlendi: $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "$ID$ için gruplar düzenlendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "$ID$ kullanıcısı için SSO bağlantısı kesildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "$ID$ kuruluşu oluşturuldu.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "$ID$ kuruluşu eklendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "$ID$ kuruluşu kaldırıldı.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "$ID$ kuruluş kasasına erişildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Cihaz" + }, + "view": { + "message": "Görüntüle" + }, + "invalidDateRange": { + "message": "Geçersiz tarih aralığı." + }, + "errorOccurred": { + "message": "Bir hata oluştu." + }, + "userAccess": { + "message": "Kullanıcı erişimi" + }, + "userType": { + "message": "Kullanıcı türü" + }, + "groupAccess": { + "message": "Grup erişimi" + }, + "groupAccessUserDesc": { + "message": "Bu kullanıcının gruplarını düzenleyin." + }, + "invitedUsers": { + "message": "Kullanıcı(lar) davet edildi." + }, + "resendInvitation": { + "message": "Daveti yeniden gönder" + }, + "resendEmail": { + "message": "E-postayı yeniden gönder" + }, + "hasBeenReinvited": { + "message": "$USER$ yeniden davet edildi.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Onayla" + }, + "confirmUser": { + "message": "Kullanıcıyı onayla" + }, + "hasBeenConfirmed": { + "message": "$USER$ onaylandı.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Kullanıcıları onayla" + }, + "usersNeedConfirmed": { + "message": "Davetlerinizi kabul eden ancak hâlâ onaylanması gereken kullanıcılarınız var. Kullanıcılar onaylanana kadar kuruluşa erişemez." + }, + "startDate": { + "message": "Başlangıç tarihi" + }, + "endDate": { + "message": "Bitiş tarihi" + }, + "verifyEmail": { + "message": "E-postayı doğrula" + }, + "verifyEmailDesc": { + "message": "Bütün özelliklere erişmek için e-posta adresinizi doğrulayın." + }, + "verifyEmailFirst": { + "message": "Öncelikle hesabınızın e-posta adresini doğrulamasınız." + }, + "checkInboxForVerification": { + "message": "Doğrulama linki için e-posta hesabınızı kontrol edin." + }, + "emailVerified": { + "message": "E-posta hesabınız doğrulandı." + }, + "emailVerifiedFailed": { + "message": "E-posta hesabı doğrulanamadı. Yeniden doğrulama e-postası göndermeyi deneyin." + }, + "emailVerificationRequired": { + "message": "E-posta Doğrulaması Gerekli" + }, + "emailVerificationRequiredDesc": { + "message": "Bu özelliği kullanmak için e-postanızı doğrulamalısınız." + }, + "updateBrowser": { + "message": "Tarayıcıyı güncelle" + }, + "updateBrowserDesc": { + "message": "Desteklenmeyen bir web tarayıcısı kullanıyorsunuz. Web kasası düzgün çalışmayabilir." + }, + "joinOrganization": { + "message": "Kuruluşa katıl" + }, + "joinOrganizationDesc": { + "message": "Yukarıdaki kuruluşa katılmaya davet edildiniz. Daveti kabul etmek için giriş yapmanız veya yeni bir Bitwarden hesabı açmanız gerekiyor." + }, + "inviteAccepted": { + "message": "Davet kabul edildi" + }, + "inviteAcceptedDesc": { + "message": "Yöneticiler üyeliğinizi onayladıktan sonra kuruluşa erişebilirsiniz. Üyeliğiniz onaylandığında size e-posta göndereceğiz." + }, + "inviteAcceptFailed": { + "message": "Davet kabul edilemedi. Kuruluş yöneticisinden yeni bir davet göndermesini isteyin." + }, + "inviteAcceptFailedShort": { + "message": "Davet kabul edilemedi. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "E-postamı hatırla" + }, + "recoverAccountTwoStepDesc": { + "message": "Eğer hesabınıza iki aşamalı doğrulama ile erişimde bir sorun yaşıyorsanız, kurtarma kodunuz ile iki aşamalı doğrulama özelliğini kapatabilirsiniz." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "İki aşamalı doğrulama hesabınızda devre dışı bırakıldı." + }, + "learnMore": { + "message": "Daha fazla bilgi al" + }, + "deleteRecoverDesc": { + "message": "Hesabınızı kurtarmak ve silmek için e-posta adresinizi yazın." + }, + "deleteRecoverEmailSent": { + "message": "Hesabınız varsa gerekli talimatları içeren bir mesajı e-posta adresinize gönderdik." + }, + "deleteRecoverConfirmDesc": { + "message": "Bitwarden hesabınızı silme talebinde bulundunuz. Onaylamak için aşağıdaki düğmeye tıklayın." + }, + "myOrganization": { + "message": "Kuruluşum" + }, + "deleteOrganization": { + "message": "Kuruluşu sil" + }, + "deletingOrganizationContentWarning": { + "message": "$ORGANIZATION$ kuruluşunu ve tüm verilerini silmeyi onaylamak için ana parolayı girin. $ORGANIZATION$ kasa verileri şunları içerir:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Silme işleminin ardından kullanıcı hesapları aktif kalacaktır ama artık bu kuruluşa bağlı olmayacaklardır." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "$ORGANIZATION$ kuruluşunu silme işlemi kalıcıdır ve geri alınamaz.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Kuruluş silindi" + }, + "organizationDeletedDesc": { + "message": "Kuruluş ve ilişkili tüm veriler silindi." + }, + "organizationUpdated": { + "message": "Kuruluş güncellendi" + }, + "taxInformation": { + "message": "Vergi bilgileri" + }, + "taxInformationDesc": { + "message": "ABD'deki müşteriler için satış vergisi gereksinimlerini karşılamak adına posta kodu gereklidir. Diğer ülkeler için isteğe bağlı olarak, faturalarınızda görünecek bir vergi numarası ve/veya adres ekleyebilirsiniz." + }, + "billingPlan": { + "message": "Paket", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Paketi yükselt", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Aşağıdaki bilgileri sağlayarak hesabınızı başka bir pakete yükseltin. Lütfen hesaba aktif bir ödeme yöntemi eklediğinizden emin olun.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Fatura no: $NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Faturayı görüntüle" + }, + "downloadInvoice": { + "message": "Faturayı indir" + }, + "verifyBankAccount": { + "message": "Banka hesabını doğrula" + }, + "verifyBankAccountDesc": { + "message": "Banka hesabınıza iki mikro para yatırma işlemi yaptık. (Ulaşmaları 1-2 iş günü sürebilir.) Banka hesabını doğrulamak için bu tutarları girin." + }, + "verifyBankAccountInitialDesc": { + "message": "Banka hesabıyla ödeme yalnızca Amerika Birleşik Devletleri'ndeki müşteriler tarafından kullanılabilir. Banka hesabınızı doğrulamanız istenecektir. Önümüzdeki 1-2 iş günü içinde iki mikro para yatırma işlemi yapacağız. Banka hesabını doğrulamak için bu tutarları kuruluşun faturalandırma sayfasına girin." + }, + "verifyBankAccountFailureWarning": { + "message": "Banka hesabınız doğrulanmazsa ödeme yapılamaz ve aboneliğiniz devre dışı bırakılır." + }, + "verifiedBankAccount": { + "message": "Banka hesabınız doğrulandı." + }, + "bankAccount": { + "message": "Banka hesabı" + }, + "amountX": { + "message": "Tutar: $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Şube kodu", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Hesap numarası" + }, + "accountHolderName": { + "message": "Hesap sahibinin adı" + }, + "bankAccountType": { + "message": "Hesap türü" + }, + "bankAccountTypeCompany": { + "message": "Şirket (işletme)" + }, + "bankAccountTypeIndividual": { + "message": "Bireysel (kişisel)" + }, + "enterInstallationId": { + "message": "Yükleme numarasını girin" + }, + "limitSubscriptionDesc": { + "message": "Aboneliğiniz için kullanıcı sayısı sınırını belirleyin. Bu sınıra ulaşıldıktan sonra yeni kullanıcı davet edemezsiniz." + }, + "maxSeatLimit": { + "message": "Maksimum kullanıcı sayısı (isteğe bağlı)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Maksimum potansiyel kullanıcı maliyeti" + }, + "addSeats": { + "message": "Kullanıcı ekle", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Kullanıcı kaldır", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Aboneliğinizde yapacağınız değişiklikler toplam faturanızın değişmesine yol açacaktır. Yeni davet edilen kullanıcıların sayısı abonelik paketinizdeki kullanıcı sayınızı aşarsa ek kullanıcılar için derhal ödeme alınır." + }, + "subscriptionUserSeats": { + "message": "Aboneliğiniz toplam $COUNT$ kullanıcıya izin veriyor.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Aboneliği sınırlandır (isteğe bağlı)" + }, + "subscriptionSeats": { + "message": "Abonelik kullanıcı sayısı" + }, + "subscriptionUpdated": { + "message": "Abonelik güncellendi" + }, + "additionalOptions": { + "message": "Ek Seçenekler" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Aboneliğinizde yapacağınız değişiklikler toplam faturanızın değişmesine yol açacaktır. Yeni davet edilen kullanıcıların sayısı abonelik paketinizdeki kullanıcı sayınızı aşarsa ek kullanıcılar için derhal ödeme alınır." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Aboneliğinizde yapacağınız değişiklikler toplam faturanızın değişmesine yol açacaktır. Yeni davet edilen kullanıcıların sayısı abonelik paketinizdeki kullanıcı sayınızı aşarsa $MAX$ kullanıcı sınırınıza ulaşana dek ek kullanıcılar için ödeme alınır.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Paketinizi yükseltmeden $COUNT$ kullanıcıdan fazlasını davet edemezsiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Paketinizi yükseltmeden en fazla $COUNT$ kullanıcı davet edebilirsiniz. Yükseltme yapmak için lütfen müşteri hizmetleri ile iletişime geçin.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Paketiniz toplam $COUNT$ kullanıcıya izin veriyor. Paketinizin ücretini başka bir kuruluş ödüyor.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Aboneliğinizde yapacağınız değişiklikler toplam faturanızın değişmesine yol açacaktır. Aboneliğinizin kullanıcı sayısını artırmadan en fazla $COUNT$ kullanıcı davet edebilirsiniz.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Eklenecek kullanıcı sayısı" + }, + "seatsToRemove": { + "message": "Kaldırılacak kullanıcı sayısı" + }, + "seatsAddNote": { + "message": "Kullanıcı sayısını artırdığınızda toplam faturanızın değişecek ve kayıtlı ödeme yönteminiz aracılığıyla derhal ödeme alınacaktır. İlk ödemeniz mevcut fatura süresinin kalanı için geçerli olacaktır." + }, + "seatsRemoveNote": { + "message": "Kullanıcı sayısını azalttığınızda toplam faturanız azalacak ve aradaki fark bir sonraki faturanıza kredi olarak yansıtılacaktır." + }, + "adjustedSeats": { + "message": "$AMOUNT$ kullanıcı sayısı güncellendi.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Anahtar güncellendi" + }, + "updateKeyTitle": { + "message": "Anahtarı güncelle" + }, + "updateEncryptionKey": { + "message": "Şifreleme anahtarını güncelle" + }, + "updateEncryptionKeyShortDesc": { + "message": "Şu anda eski bir şifreleme modeli kullanıyorsunuz." + }, + "updateEncryptionKeyDesc": { + "message": "Daha yüksek güvenlik ve daha yeni özelliklere erişim sağlayan daha büyük şifreleme anahtarlarına geçtik. Şifreleme anahtarınızı kolayca güncelleyebilirsiniz. Ana parolanızı aşağıya yazmanız yeterli. Bu güncelleme bir süre sonra zorunlu hale gelecektir." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Şifrelenmiş dışa aktarmalarınız da geçersiz olacaktır." + }, + "subscription": { + "message": "Abonelik" + }, + "loading": { + "message": "Yükleniyor" + }, + "upgrade": { + "message": "Yükselt" + }, + "upgradeOrganization": { + "message": "Kuruluşu yükselt" + }, + "upgradeOrganizationDesc": { + "message": "Bu özellik ücretsiz kuruluşlar için mevcut değil. Daha fazla özellik için ücretli pakete geçin." + }, + "createOrganizationStep1": { + "message": "Kuruluş oluşturma: 1. adım" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Kuruluş oluşturmak için önce ücretsiz bir kişisel hesap açmalısınız." + }, + "refunded": { + "message": "İade edildi" + }, + "nothingSelected": { + "message": "Hiçbir şey seçmediniz." + }, + "acceptPolicies": { + "message": "Bu kutuyu işaretleyerek aşağıdakileri kabul etmiş olursunuz:" + }, + "acceptPoliciesError": { + "message": "Hizmet Koşulları ve Gizlilik Politikası kabul edilmemiş." + }, + "termsOfService": { + "message": "Hizmet Koşulları" + }, + "privacyPolicy": { + "message": "Gizlilik Politikası" + }, + "filters": { + "message": "Filtreler" + }, + "vaultTimeout": { + "message": "Kasa zaman aşımı" + }, + "vaultTimeoutDesc": { + "message": "Kasanızın zaman aşımına uğrayıp seçilen eylemi uygulayacağı zamanı seçin." + }, + "oneMinute": { + "message": "1 dakika" + }, + "fiveMinutes": { + "message": "5 dakika" + }, + "fifteenMinutes": { + "message": "15 dakika" + }, + "thirtyMinutes": { + "message": "30 dakika" + }, + "oneHour": { + "message": "1 saat" + }, + "fourHours": { + "message": "4 saat" + }, + "onRefresh": { + "message": "On Browser Refresh" + }, + "dateUpdated": { + "message": "Güncelleme", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parola güncelleme", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Kuruluş devre dışı." + }, + "licenseIsExpired": { + "message": "Lisans süresi doldu." + }, + "updatedUsers": { + "message": "Kullanıcılar güncellendi" + }, + "selected": { + "message": "Seçildi" + }, + "ownership": { + "message": "Sahip" + }, + "whoOwnsThisItem": { + "message": "Bu ögenin sahibi kim?" + }, + "strong": { + "message": "Güçlü", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "İyi", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Zayıf", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Çok zayıf", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Hesabımın şifreleme anahtarını da yenile" + }, + "rotateEncKeyTitle": { + "message": "Şifreleme anahtarını değiştir" + }, + "rotateEncKeyConfirmation": { + "message": "Hesabınızın şifreleme anahtarını yenilemek istediğinizden emin misiniz?" + }, + "attachmentsNeedFix": { + "message": "Bu kayıtta düzeltilmesi gereken eski dosya ekleri bulunuyor." + }, + "attachmentFixDesc": { + "message": "Bu eski dosya ekinin düzeltmesi gerekiyor. Daha fazla bilgi için tıklayın." + }, + "fix": { + "message": "Düzelt", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "Hesabınızın şifreleme anahtarını yenilemeden önce kasanızdaki eski dosya eklerini düzeltilmeniz gerekiyor." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "Şifreleme anahtarlarınızın bütünlüğünü sağlamak için, devam etmeden önce lütfen kullanıcının parmak izi ifadesini doğrulayı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." + }, + "dontAskFingerprintAgain": { + "message": "Parmak izi ifadesini doğrulamamı bir daha isteme", + "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." + }, + "free": { + "message": "Ücretsiz", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API anahtarı" + }, + "apiKeyDesc": { + "message": "API anahtarınız, Bitwarden API'sinde kimlik doğrulama için kullanılabilir." + }, + "apiKeyRotateDesc": { + "message": "API anahtarının güncellenmesi önceki anahtarı geçersiz kılacaktır. Geçerli anahtarın artık güvenli olmadığını düşünüyorsanız API anahtarınızı güncelleyebilirsiniz." + }, + "apiKeyWarning": { + "message": "API anahtarınız kuruluşa tam erişime sahiptir ve gizli tutulmalıdır." + }, + "userApiKeyDesc": { + "message": "API anahtarınız, Bitwarden CLI'de kimlik doğrulaması için kullanılabilir." + }, + "userApiKeyWarning": { + "message": "API anahtarınız, alternatif bir kimlik doğrulama mekanizmasıdır. Gizli tutulmalıdır." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 istemci bilgileri", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "API anahtarını görüntüle" + }, + "rotateApiKey": { + "message": "API anahtarını yenile" + }, + "selectOneCollection": { + "message": "En az bir koleksiyon seçmelisiniz." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "Uygulama içi satın alma" + }, + "cannotPerformInAppPurchase": { + "message": "Uygulama içi satın alma ödeme yöntemi kullanırken bu işlemi gerçekleştiremezsiniz." + }, + "manageSubscriptionFromStore": { + "message": "Aboneliğinizi uygulama içi satın alımınızın yapıldığı mağazadan yönetmelisiniz." + }, + "minLength": { + "message": "Minimum uzunluk" + }, + "clone": { + "message": "Klonla" + }, + "masterPassPolicyDesc": { + "message": "Ana parola gücü için minimum gereksinimleri ayarlayın." + }, + "twoStepLoginPolicyDesc": { + "message": "Kullanıcıların hesaplarında iki aşamalı giriş kullanmalarını zorunlu tutun." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "İki aşamalı girişin etkinleştirilmesi gereken bir kuruluşa üyesisiniz. İki aşamalı giriş sağlayıcılarının tümünü devre dışı bırakırsanız bu kuruluşlardan otomatik olarak kaldırılırsınız." + }, + "passwordGeneratorPolicyDesc": { + "message": "Parola üreticisi ayarları için minimum gereksinimleri ayarlayın." + }, + "passwordGeneratorPolicyInEffect": { + "message": "Bir ya da daha fazla kuruluş ilkesi, oluşturucu ayarlarınızı etkiliyor." + }, + "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 sayı içermeli" + }, + "policyInEffectSpecial": { + "message": "Aşağıdaki ö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." + }, + "minimumNumberOfWords": { + "message": "Minimum kelime sayısı" + }, + "defaultType": { + "message": "Varsayılan tür" + }, + "userPreference": { + "message": "Kullanıcı tercihi" + }, + "vaultTimeoutAction": { + "message": "Kasa zaman aşımı eylemi" + }, + "vaultTimeoutActionLockDesc": { + "message": "Kilitli bir kasaya tekrar erişebilmek için ana parolanızı tekrar girmeniz gerekir." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Çıkış yapılmış bir kasaya yeniden erişmek için kimliğinizi doğrulamanız gerekir." + }, + "lock": { + "message": "Kilitle", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Çöp Kutusu", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Çöp kutusunda ara" + }, + "permanentlyDelete": { + "message": "Kalıcı olarak sil" + }, + "permanentlyDeleteSelected": { + "message": "Seçilenleri kalıcı olarak sil" + }, + "permanentlyDeleteItem": { + "message": "Kaydı kalıcı olarak sil" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Bu kaydı kalıcı olarak silmek istediğinizden emin misiniz?" + }, + "permanentlyDeletedItem": { + "message": "Kayıt kalıcı olarak silindi" + }, + "permanentlyDeletedItems": { + "message": "Kayıtlar kalıcı olarak silindi" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Kalıcı olarak silinmek üzere $COUNT$ kayıt seçtiniz. Bu kayıtların hepsini kalıcı olarak silmek istediğinizden emin misiniz?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "$ID$ kaydı kalıcı olarak silindi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Geri yükle" + }, + "restoreSelected": { + "message": "Seçilenleri geri yükle" + }, + "restoreItem": { + "message": "Kaydı geri yükle" + }, + "restoredItem": { + "message": "Kayıt geri yüklendi" + }, + "restoredItems": { + "message": "Kayıtlar geri yüklendi" + }, + "restoreItemConfirmation": { + "message": "Bu kayıtları geri yüklemek istediğinizden emin misiniz?" + }, + "restoreItems": { + "message": "Kayıtları geri yükle" + }, + "restoreSelectedItemsDesc": { + "message": "Geri yüklenmesi için $COUNT$ kayıt seçtiniz. Bu kayıtların tamamını geri yüklemek istediğinizden emin misiniz?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "$ID$ kaydı geri yüklendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Çıkış yaptığınızda kasanıza erişiminiz tamamen sonlanacak ve zaman aşımının ardından çevrimiçi kimlik doğrulaması yapmanız gerekecek. Bu ayarı kullanmak istediğinizden emin misiniz?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Zaman Aşımı Eylem Onayı" + }, + "hidePasswords": { + "message": "Parolaları gizle" + }, + "countryPostalCodeRequiredDesc": { + "message": "Bu bilgileri sadece satış vergisi hesaplama ve mali raporlama için istiyoruz." + }, + "includeVAT": { + "message": "KDV bilgisi ekle (tercihe bağlı)" + }, + "taxIdNumber": { + "message": "KDV/vergi kimlik numarası" + }, + "taxInfoUpdated": { + "message": "Vergi bilgileriniz güncellendi." + }, + "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." + }, + "identifier": { + "message": "Tanımlayıcı" + }, + "organizationIdentifier": { + "message": "Kuruluş tanımlayıcı" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Kuruluşunuzun tek oturum açma portalını kullanarak giriş yapabilirsiniz. Başlamak için lütfen kuruluşunuzun tanımlayıcısını girin." + }, + "enterpriseSingleSignOn": { + "message": "Kurumsal tek oturum açma" + }, + "ssoHandOff": { + "message": "Şimdi bu sekmeyi kapatıp uzantı üzerinden devam edebilirsiniz." + }, + "includeAllTeamsFeatures": { + "message": "Ekip paketi özelliklerinin yanı sıra:" + }, + "includeSsoAuthentication": { + "message": "SAML2.0 ve OpenID Connect ile SSO doğrulaması" + }, + "includeEnterprisePolicies": { + "message": "Kuruluş ilkeleri" + }, + "ssoValidationFailed": { + "message": "SSO doğrulaması başarısız oldu" + }, + "ssoIdentifierRequired": { + "message": "Kuruluş tanımlayıcısı gereklidir." + }, + "unlinkSso": { + "message": "SSO bağlantısını kes" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "SSO bağla" + }, + "singleOrg": { + "message": "Tek kuruluş" + }, + "singleOrgDesc": { + "message": "Kullanıcıların diğer kuruluşlara katılmasını kısıtlayın." + }, + "singleOrgBlockCreateMessage": { + "message": "Mevcut kuruluşunuzun birden fazla kuruluşa katılmanıza izin vermeyen bir ilkesi var. Lütfen kuruluş yöneticilerinizle iletişime geçin veya farklı bir Bitwarden hesabı açın." + }, + "singleOrgPolicyWarning": { + "message": "Sahip veya yönetici olmayan ve zaten başka bir kuruluşun üyesi olan kuruluş üyeleri kuruluşunuzdan kaldırılır." + }, + "requireSso": { + "message": "Tek oturum açma kimlik doğrulaması" + }, + "requireSsoPolicyDesc": { + "message": "Kullanıcıların kurumsal tek oturum açma (SSO) yöntemiyle oturum açmasını zorunlu kılın." + }, + "prerequisite": { + "message": "Önkoşul" + }, + "requireSsoPolicyReq": { + "message": "Bu ilkeyi etkinleştirmeden önce tek kuruluş kurumsal ilkesi etkinleştirilmelidir." + }, + "requireSsoPolicyReqError": { + "message": "Tek kuruluş ilkesi etkin değil." + }, + "requireSsoExemption": { + "message": "Kuruluş sahipleri ve yöneticileri bu ilkenin uygulanmasından muaf tutulur." + }, + "sendTypeFile": { + "message": "Dosya" + }, + "sendTypeText": { + "message": "Metin" + }, + "createSend": { + "message": "Yeni Send oluştur", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Send'i sil", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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ı" + }, + "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." + }, + "disabled": { + "message": "Devre dışı" + }, + "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." + }, + "copySendLink": { + "message": "Send bağlantısını kopyala", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Parolayı kaldır" + }, + "removedPassword": { + "message": "Parola kaldırıldı" + }, + "removePasswordConfirmation": { + "message": "Parolayı kaldırmak istediğinizden emin misiniz?" + }, + "hideEmail": { + "message": "E-posta adresimi alıcılardan gizle." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Tüm Send'ler" + }, + "maxAccessCountReached": { + "message": "Maksimum erişim sayısına ulaşıldı", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Silinmesi bekleniyor" + }, + "expired": { + "message": "Süresi dolmuş" + }, + "searchSends": { + "message": "Send'lerde ara", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Bu Send parola ile korunuyor. Devam etmek için lütfen parolayı yazın.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Parolayı bilmiyor musunuz? Bu Send'e erişmek için gereken parolayı dosyayı gönderen kişiye sorabilirsiniz.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Bu Send varsayılan olarak gizlidir. Aşağıdaki düğmeyi kullanarak görünürlüğünü değiştirebilirsiniz.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Dosyayı indir" + }, + "sendAccessUnavailable": { + "message": "Erişmeye çalıştığınız Send yok veya artık mevcut değil.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Bu Send ile ilişkili dosya bulunamadı.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "Listelenecek Send yok.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Acil durum erişimi" + }, + "emergencyAccessDesc": { + "message": "Güvenilen kişiler için acil erişim izni verin ve izinleri yönetin. Güvenilen kişiler acil bir durumda hesabınızı görmek veya devralmak için talepte bulunabilirler. Sıfır bilgi ispatı ile paylaşımının nasıl çalıştığını öğrenmek için yardım sayfamıza bakabilirsiniz." + }, + "emergencyAccessOwnerWarning": { + "message": "Bir veya daha fazla kuruluşun sahibisiniz. Acil durum kişisine devralma yetkisi verirseniz devralma işleminden sonra bu kişi sahip olduğunuz tüm hakları kullanabilir." + }, + "trustedEmergencyContacts": { + "message": "Güvenilen acil durum kişileri" + }, + "noTrustedContacts": { + "message": "Henüz hiç acil durum kişisi eklemediniz. Başlamak için güvendiğiniz birini davet edin." + }, + "addEmergencyContact": { + "message": "Acil durum kişisi ekle" + }, + "designatedEmergencyContacts": { + "message": "Acil durum kişisi olarak ayarlandı" + }, + "noGrantedAccess": { + "message": "Henüz kimse sizi acil durum kişisi olarak ayarlamadı." + }, + "inviteEmergencyContact": { + "message": "Acil durum kişisi davet et" + }, + "editEmergencyContact": { + "message": "Acil durum kişisini düzenle" + }, + "inviteEmergencyContactDesc": { + "message": "Aşağıya Bitwarden hesabının e-posta adresini girerek yeni bir acil durum kişisi davet edebilirsiniz. Bu kişinin mevcut bir Bitwarden hesabı yoksa yeni bir hesap açması istenecektir." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Acil durum erişimi başlatıldı" + }, + "emergencyAccessRecoveryApproved": { + "message": "Acil durum erişimi onaylandı" + }, + "viewDesc": { + "message": "Kasanızdaki tüm kayıtları görebilir." + }, + "takeover": { + "message": "Devralma" + }, + "takeoverDesc": { + "message": "Yeni bir ana parola ile hesabınızı sıfırlayabilir." + }, + "waitTime": { + "message": "Bekleme süresi" + }, + "waitTimeDesc": { + "message": "Otomatik olarak erişime izin vermeden önce geçmesi gereken süre." + }, + "oneDay": { + "message": "1 gün" + }, + "days": { + "message": "$DAYS$ gün", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Kullanıcı davet edildi." + }, + "acceptEmergencyAccess": { + "message": "Yukarıdaki kullanıcı için acil durum kişisi olmaya davet edildiniz. Daveti kabul etmek için giriş yapmanız veya yeni bir Bitwarden hesabı oluşturmanız gerekir." + }, + "emergencyInviteAcceptFailed": { + "message": "Davet kabul edilemedi. Kullanıcıdan yeni bir davet göndermesini isteyin." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Davet kabul edilemedi. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Kimliğiniz doğrulandıktan sonra bu kullanıcı için acil durum seçeneklerine erişebilirsiniz. Bu gerçekleştiğinde size e-posta göndereceğiz." + }, + "requestAccess": { + "message": "Erişim talep et" + }, + "requestAccessConfirmation": { + "message": "Erişim talep etmek istediğinizden emin misiniz? Kullanıcı talebi kabul ettikten veya $WAITTIME$ gün geçtikten sonra erişim izni alacaksınız.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "$USER$ için acil durum erişimi isteğinde bulunuldu. Devam etmeniz mümkün hale geldiğinde size e-posta ile haber vereceğiz.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Onayla" + }, + "reject": { + "message": "Reddet" + }, + "approveAccessConfirmation": { + "message": "Acil durum erişimini onaylamak istediğinize emin misiniz? Bu $USER$ kullanıcısının hesabınızda $ACTION$ eylemlerinde bulunmasına izin verecek.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Acil durum erişimi onaylandı." + }, + "emergencyRejected": { + "message": "Acil durum erişimi reddedildi" + }, + "passwordResetFor": { + "message": "$USER$ için parola sıfırlandı. Artık yeni parola ile giriş yapabilirsiniz.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Kişisel sahiplik" + }, + "personalOwnershipPolicyDesc": { + "message": "Kişisel sahiplik seçeneğini kapatarak kullanıcıların kasadaki kayıtlarını bir kuruluşa kaydetmesini zorunlu kılabilirsiniz." + }, + "personalOwnershipExemption": { + "message": "Kuruluş sahipleri ve yöneticileri bu ilkenin uygulanmasından muaf tutulur." + }, + "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." + }, + "disableSend": { + "message": "Send'i devre dışı bırak" + }, + "disableSendPolicyDesc": { + "message": "Kullanıcıların Bitwarden Send oluşturmasına veya düzenlemesine izin verme. Mevcut Send'leri silmeye yine de izin verilir.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Kuruluş ilkelerini yönetebilen kullanıcılar bu ilkenin uygulanmasından muaf tutulur." + }, + "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." + }, + "sendOptions": { + "message": "Send Seçenekleri", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Send oluşturma ve düzenleme için seçenekleri ayarlayın.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Kuruluş ilkelerini yönetebilen kullanıcılar bu ilkenin uygulanmasından muaf tutulur." + }, + "disableHideEmail": { + "message": "Kullanıcıların Send oluştururken veya düzenlerken alıcılardan e-posta adreslerini gizlemelerini yasakla.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Şu anda yürüklükte olan kuruluş ilkeleri:" + }, + "sendDisableHideEmailInEffect": { + "message": "Kullanıcıların Send oluştururken veya düzenlerken alıcılardan e-posta adreslerini gizlemelerine izin verilmiyor.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "$ID$ ilkesi düzenlendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Paket fiyatı" + }, + "estimatedTax": { + "message": "Tahmini vergi" + }, + "custom": { + "message": "Özel" + }, + "customDesc": { + "message": "Gelişmiş yapılandırma için kullanıcı izinleri üzerinde daha detaylı kontrol sağlar." + }, + "permissions": { + "message": "İzinler" + }, + "accessEventLogs": { + "message": "Olay günlüklerine erişme" + }, + "accessImportExport": { + "message": "İçe/dışa aktarıma erişme" + }, + "accessReports": { + "message": "Raporlara erişme" + }, + "missingPermissions": { + "message": "Bu eylemi gerçekleştirmek için gereken izinlere sahip değilsiniz." + }, + "manageAllCollections": { + "message": "Tüm koleksiyonları yönetme" + }, + "createNewCollections": { + "message": "Yeni koleksiyon oluşturma" + }, + "editAnyCollection": { + "message": "Tüm koleksiyonları düzenleme" + }, + "deleteAnyCollection": { + "message": "Tüm koleksiyonları silme" + }, + "manageAssignedCollections": { + "message": "Atanmış koleksiyonları yönetme" + }, + "editAssignedCollections": { + "message": "Atanmış koleksiyonları düzenleme" + }, + "deleteAssignedCollections": { + "message": "Atanmış koleksiyonları silme" + }, + "manageGroups": { + "message": "Grupları yönetme" + }, + "managePolicies": { + "message": "İlkeleri yönetme" + }, + "manageSso": { + "message": "SSO'yu yönetme" + }, + "manageUsers": { + "message": "Kullanıcıları yönetme" + }, + "manageResetPassword": { + "message": "Parola sıfırlamayı yönetme" + }, + "disableRequiredError": { + "message": "Bu ilke devre dışı bırakılmadan önce $POLICYNAME$ ilkesini elle devre dışı bırakmanız gerekir.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Bir kuruluş ilkesi sahiplik seçeneklerinizi etkiliyor." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Kuruluş kullanıcıları için kişisel sahipliği kapatma" + }, + "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." + }, + "sendNameDesc": { + "message": "Bu Send'i açıklayan anlaşılır bir ad.", + "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." + }, + "copySendLinkOnSave": { + "message": "Kaydettikten sonra bu Send'i paylaşma linkini panoya kopyala." + }, + "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." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send geçici ve hassas bilginin başkalarına kolayca ve güvenle iletmenizi sağlar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": " ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Metinleri ve dosyaları istediğiniz kişilerle paylaşın." + }, + "sendVaultCardLearnMore": { + "message": "Daha fazla bilgi alın", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "nasıl çalıştığını", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "görün", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "veya", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "hemen deneyin", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "veya", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "kaydolarak", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "hemen deneyin.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden kullanıcısı $USER_IDENTIFIER$ aşağıdakileri sizinle paylaştı", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Bu Send'i oluşturan Bitwarden kullanıcısı e-posta adresini gizlemeyi seçti. Kullanmadan veya içeriğini indirmeden önce bu bağlantının kaynağının güvenilir olduğundan emin olun.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Belirtilen son kullanma tarihi geçersiz." + }, + "deletionDateIsInvalid": { + "message": "Belirtilen silinme tarihi geçersiz." + }, + "expirationDateAndTimeRequired": { + "message": "Son kullanma tarihi ve saati gereklidir." + }, + "deletionDateAndTimeRequired": { + "message": "Silinme tarihi ve saati gereklidir." + }, + "dateParsingError": { + "message": "Silinme ve son kullanma tarihleriniz kaydedilirken bir hata oluştu." + }, + "webAuthnFallbackMsg": { + "message": "İki aşamalı doğrulamanızı onaylamak için aşağıdaki düğmeye tıklayın." + }, + "webAuthnAuthenticate": { + "message": "WebAutn ile doğrula" + }, + "webAuthnNotSupported": { + "message": "WebAuthn bu tarayıcıda desteklenmiyor." + }, + "webAuthnSuccess": { + "message": "WebAuthn başarıyla doğrulandı. Bu sekmeyi kapatabilirsiniz." + }, + "hintEqualsPassword": { + "message": "Parola ipucunuz parolanızla aynı olamaz." + }, + "enrollPasswordReset": { + "message": "Parola Sıfırlama Kaydı Yaptır" + }, + "enrolledPasswordReset": { + "message": "Parola Sıfırlama Kaydı Yaptırıldı" + }, + "withdrawPasswordReset": { + "message": "Parola Sıfırlamadan Geri Çekil" + }, + "enrollPasswordResetSuccess": { + "message": "Kayıt başarılı!" + }, + "withdrawPasswordResetSuccess": { + "message": "Çekilme başarılı!" + }, + "eventEnrollPasswordReset": { + "message": "$ID$ kullanıcısı parola sıfırlama desteği için kayıt yaptırdı.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "$ID$ kullanıcı parola sıfırlama desteğinden geri çekildi.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "$ID$ kullanıcısının ana parolası sıfırlandı.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ ilk defa SSO ile giriş yaptı", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Parolayı sıfırla" + }, + "resetPasswordLoggedOutWarning": { + "message": "Devam ederseniz $NAME$ oturumu sonlanacak ve yeniden oturum açması gerekecek. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "bu kullanıcı" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Bir veya daha fazla kuruluş ilkesi gereğince ana parola aşağıdaki gereksinimleri karşılamalıdır:" + }, + "resetPasswordSuccess": { + "message": "Parola başarıyla sıfırlandı." + }, + "resetPasswordEnrollmentWarning": { + "message": "Katılmak kuruluş yöneticilerinin ana parolanızı değiştirmesine izin verir. Katılmak istediğinize emin misiniz?" + }, + "resetPasswordPolicy": { + "message": "Ana parola sıfırlama" + }, + "resetPasswordPolicyDescription": { + "message": "Kuruluş yöneticilerinin kuruluş kullanıcılarının ana parolalarını sıfırlamasına izin ver." + }, + "resetPasswordPolicyWarning": { + "message": "Yöneticilerin kullanıcıların ana parolalarını sıfırlayabilmesi önce kuruluştaki kullanıcıların kendileri katılmaları veya otomatik eklenmeleri gerekir." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Otomatik eklenme" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Davetiyeleri kabul edildiğinde tüm kullanıcılar otomatik olarak parola sıfırlamaya eklenecek." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Zaten kuruluşta olan kullanıcılar parola sıfırlamaya eklenmeyecekler. Yöneticiler tarafından parolalarının sıfırlanabilmesi için kendileri katılmaları gerekecek." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Yeni kullanıcıları otomatik ekle" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Kuruluş anahtarları yanıtı boş" + }, + "resetPasswordDetailsError": { + "message": "Parola sıfırlama detayları yanıtı boş" + }, + "trashCleanupWarning": { + "message": "30 günden uzun süre çöp kutusunda duran kayıtlar otomatik olarak silinecektir." + }, + "trashCleanupWarningSelfHosted": { + "message": "Bir süre çöp kutusunda duran kayıtlar otomatik olarak silinecektir." + }, + "passwordPrompt": { + "message": "Ana parolayı yeniden iste" + }, + "passwordConfirmation": { + "message": "Ana parola onayı" + }, + "passwordConfirmationDesc": { + "message": "Bu işlem korumalıdır. İşleme devam etmek için lütfen ana parolanızı yeniden girin." + }, + "reinviteSelected": { + "message": "Davetleri yeniden gönder" + }, + "noSelectedUsersApplicable": { + "message": "Bu eylem seçilen kullanıcılardan hiçbirine uygulanamıyor." + }, + "removeUsersWarning": { + "message": "Aşağıdaki kullanıcıları kaldırmak istediğinize emin misiniz? İşlemin tamamlanması birkaç saniye sürer ve durdurulamaz veya iptal edilemez." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Web kasanız için tema seçin." + }, + "themeSystem": { + "message": "Sistem temasını kullan" + }, + "themeDark": { + "message": "Koyu" + }, + "themeLight": { + "message": "Açık" + }, + "confirmSelected": { + "message": "Seçimi onaylayın" + }, + "bulkConfirmStatus": { + "message": "Toplu işlem durumu" + }, + "bulkConfirmMessage": { + "message": "Başarıyla onaylandı." + }, + "bulkReinviteMessage": { + "message": "Yeniden davet edildi." + }, + "bulkRemovedMessage": { + "message": "Başarıyla kaldırıldı" + }, + "bulkFilteredMessage": { + "message": "İstisnai, bu eylem uygulanamaz." + }, + "fingerprint": { + "message": "Parmak izi" + }, + "removeUsers": { + "message": "Kullanıcıları kaldır" + }, + "error": { + "message": "Hata" + }, + "resetPasswordManageUsers": { + "message": "Parola Sıfırlamayı Yönet izniyle birlikte Kullanıcıları Yönet de açılmak zorundadır" + }, + "setupProvider": { + "message": "Sağlayıcı kurulumu" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Sağlayıcı adı" + }, + "providerSetup": { + "message": "Sağlayıcı kuruldu." + }, + "clients": { + "message": "Müşteriler" + }, + "providerAdmin": { + "message": "Sağlayıcı yöneticisi" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Hizmet kullanıcısı" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Sağlayıcıya katıl" + }, + "joinProviderDesc": { + "message": "Yukarıdaki sağlayıcıya katılmaya davet edildiniz. Daveti kabul etmek için giriş yapmanız veya yeni bir Bitwarden hesabı açmanız gerekiyor." + }, + "providerInviteAcceptFailed": { + "message": "Davet kabul edilemedi. Sağlayıcı yöneticisinden yeni bir davet göndermesini isteyin." + }, + "providerInviteAcceptedDesc": { + "message": "Yöneticiler üyeliğinizi onayladıktan sonra sağlayıcıya erişebilirsiniz. Üyeliğiniz onaylandığında size e-posta göndereceğiz." + }, + "providerUsersNeedConfirmed": { + "message": "Davetlerinizi kabul eden ancak hâlâ onaylanması gereken kullanıcılarınız var. Kullanıcılar onaylanana kadar sağlayıcıya erişemez." + }, + "provider": { + "message": "Sağlayıcı" + }, + "newClientOrganization": { + "message": "Yeni müşteri kuruluşu" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Mevcut kuruluşu ekle" + }, + "myProvider": { + "message": "Sağlayıcım" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Kuruluş başarıyla sağlayıcıya eklendi" + }, + "accessingUsingProvider": { + "message": "Kuruluşa $PROVIDER$ sağlayıcısı aracılığıyla erişiliyor", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Sağlayıcı devre dışı." + }, + "providerUpdated": { + "message": "Sağlayıcı güncellendi" + }, + "yourProviderIs": { + "message": "Sağlayıcınız: $PROVIDER$. Kuruluşunuzun yönetim ve ödeme yetkileri sağlayıcınıza aittir.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "$ORGANIZATION$ kuruluşu sağlayıcınızdan ayrıldı.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Ekle" + }, + "updatedMasterPassword": { + "message": "Ana parola güncellendi" + }, + "updateMasterPassword": { + "message": "Ana parolayı güncelle" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Ana parolanız bu kuruluşun ilke gereksinimlerini karşılamıyor. Kuruluşa katılmak için ana 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." + }, + "maximumVaultTimeout": { + "message": "Kasa zaman aşımı" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maksimum kasa zaman aşımı" + }, + "invalidMaximumVaultTimeout": { + "message": "Geçersiz maksimum kasa zaman aşımı." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Özel kasa zaman aşımı" + }, + "vaultTimeoutToLarge": { + "message": "Kasa zaman aşımınız, kuruluşunuz tarafından belirlenen kısıtlamaları aşıyor." + }, + "disablePersonalVaultExport": { + "message": "Kişisel kasayı dışa aktarmayı devre dışı bırak" + }, + "disablePersonalVaultExportDesc": { + "message": "Kullanıcıların kişisel kasa verilerini dışa aktarmasını yasaklar." + }, + "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." + }, + "selectType": { + "message": "SSO türünü seçin" + }, + "type": { + "message": "Tür" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Yapılandırması" + }, + "samlSpConfig": { + "message": "SAML Servis Sağlayıcı Yapılandırması" + }, + "samlIdpConfig": { + "message": "SAML Kimlik Sağlayıcı Yapılandırması" + }, + "callbackPath": { + "message": "Callback yolu" + }, + "signedOutCallbackPath": { + "message": "Signed out callback yolu" + }, + "authority": { + "message": "Otorite" + }, + "clientId": { + "message": "Müşteri kimliği" + }, + "clientSecret": { + "message": "Müşteri anahtarı" + }, + "metadataAddress": { + "message": "Meta veri adresi" + }, + "oidcRedirectBehavior": { + "message": "OIDC yönlendirme davranışı" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP varlık kimliği" + }, + "spMetadataUrl": { + "message": "SAML 2.0 metadata URL'si" + }, + "spAcsUrl": { + "message": "Assertion consumer service (ACS) URL'si" + }, + "spNameIdFormat": { + "message": "İsim kimliği biçimi" + }, + "spOutboundSigningAlgorithm": { + "message": "Çıkış imza algoritması" + }, + "spSigningBehavior": { + "message": "İmza davranışı" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum gelen imza algoritması" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Sertifikaları doğrula" + }, + "idpEntityId": { + "message": "Varlık kimliği" + }, + "idpBindingType": { + "message": "Bağlama türü" + }, + "idpSingleSignOnServiceUrl": { + "message": "Tek oturum açma (SSO) servis URL'si" + }, + "idpSingleLogoutServiceUrl": { + "message": "Tek çıkış (SLO) servis URL'si" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Ücretsiz Bitwarden Aile" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Verilerinizi evde de güvenle depolamak için Ücretsiz Bitwarden Aile paketinizi hemen kullanmaya başlayın." + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden Aile paketinin özellikleri" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "6 kullanıcı için premium erişim" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Ücretsiz paket kullanıldı" + }, + "redeem": { + "message": "Kullan" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Sponsor kuruluştan ayrılır veya çıkarılırsanız Aile paketiniz ödeme döneminin sonunda sonra erecektir." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Ücretsiz Bitwarden Aile Paketi Kuruluşuna davet edildiniz. Devam etmek için bu teklifi alan hesaba giriş yapmanız gerekiyor." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Teklif kabul edilemedi. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Ücretsiz Bitwarden Aile'yi kabul et" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Kullanıldı" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "$NAME$ hesabını iptal et", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Ücretsiz Aile Paketi" + }, + "redeemNow": { + "message": "Şimdi kullan" + }, + "recipient": { + "message": "Alıcı" + }, + "removeSponsorship": { + "message": "Sponsorluğu kaldır" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorluk oluştur" + }, + "revoke": { + "message": "İptal et" + }, + "emailSent": { + "message": "E-posta gönderildi" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorluk kaldırdıldı" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Ana parolayı kaldır" + }, + "removedMasterPassword": { + "message": "Ana parola kaldırıldı." + }, + "allowSso": { + "message": "SSO doğrulamasına izin ver" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "SSO etkinleştirildi" + }, + "disabledSso": { + "message": "SSO kapatıldı" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Teklifi kabul et" + }, + "sponsoringOrg": { + "message": "Sponsor kuruluş" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Başarılı! Key Connector'a ulaşıldı." + }, + "keyConnectorTestFail": { + "message": "Key Connector'e ulaşılamadı. URL 'i kontrol edin." + }, + "sponsorshipTokenHasExpired": { + "message": "Sponsorluk teklifinin süresi doldu." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ zorunludur.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "zorunlu" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Oturumunuzun süresi doldu. Lütfen geri dönüp yeniden giriş yapın." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Raporlara geri dön" + }, + "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", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "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": "Rastgele" + }, + "randomWord": { + "message": "Rastgele kelime" + }, + "service": { + "message": "Servis" + } +} diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json new file mode 100644 index 0000000000..80fc5f1ac8 --- /dev/null +++ b/apps/web/src/locales/uk/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Веб сховище $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "Пароль" + }, + "newPassword": { + "message": "Новий пароль" + }, + "passphrase": { + "message": "Парольна фраза" + }, + "notes": { + "message": "Нотатки" + }, + "customFields": { + "message": "Власні поля" + }, + "cardholderName": { + "message": "Ім'я власника картки" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Тип картки" + }, + "expiration": { + "message": "Термін дії" + }, + "securityCode": { + "message": "Код безпеки (CVV)" + }, + "identityName": { + "message": "Назва" + }, + "company": { + "message": "Компанія" + }, + "ssn": { + "message": "Номер соціального страхування" + }, + "passportNumber": { + "message": "Номер паспорта" + }, + "licenseNumber": { + "message": "Номер ліцензії" + }, + "email": { + "message": "Е-пошта" + }, + "phone": { + "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": "Грудень" + }, + "title": { + "message": "Звернення" + }, + "mr": { + "message": "Містер" + }, + "mrs": { + "message": "Місіс" + }, + "ms": { + "message": "Міс" + }, + "dr": { + "message": "Доктор" + }, + "expirationMonth": { + "message": "Місяць завершення" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "Вилучити" + }, + "unassigned": { + "message": "Не призначено" + }, + "noneFolder": { + "message": "Без теки", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Додати теку" + }, + "editFolder": { + "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." + }, + "never": { + "message": "Ніколи" + }, + "toggleVisibility": { + "message": "Перемкнути видимість" + }, + "toggleCollapse": { + "message": "Згорнути/розгорнути", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Генерувати пароль" + }, + "checkPassword": { + "message": "Перевірити чи пароль було викрито." + }, + "passwordExposed": { + "message": "Цей пароль було викрито $VALUE$ разів з витоком даних. Вам слід його змінити.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Цей пароль не було знайдено у жодних відомих витоках даних. Його можна безпечно використовувати." + }, + "save": { + "message": "Зберегти" + }, + "cancel": { + "message": "Скасувати" + }, + "canceled": { + "message": "Скасовано" + }, + "close": { + "message": "Закрити" + }, + "delete": { + "message": "Видалити" + }, + "favorite": { + "message": "Обране" + }, + "unfavorite": { + "message": "Вилучити з обраного" + }, + "edit": { + "message": "Змінити" + }, + "searchCollection": { + "message": "Пошук в збірках" + }, + "searchFolder": { + "message": "Пошук в теці" + }, + "searchFavorites": { + "message": "Пошук в обраному" + }, + "searchType": { + "message": "Пошук за типом", + "description": "Search item type" + }, + "searchVault": { + "message": "Пошук" + }, + "allItems": { + "message": "Всі елементи" + }, + "favorites": { + "message": "Обране" + }, + "types": { + "message": "Типи" + }, + "typeLogin": { + "message": "Вхід" + }, + "typeCard": { + "message": "Картка" + }, + "typeIdentity": { + "message": "Особисті дані" + }, + "typeSecureNote": { + "message": "Захищена нотатка" + }, + "typeLoginPlural": { + "message": "Записи" + }, + "typeCardPlural": { + "message": "Картки" + }, + "typeIdentityPlural": { + "message": "Особисті дані" + }, + "typeSecureNotePlural": { + "message": "Захищені нотатки" + }, + "folders": { + "message": "Теки" + }, + "collections": { + "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": "Країна" + }, + "shared": { + "message": "Спільні" + }, + "attachments": { + "message": "Вкладення" + }, + "select": { + "message": "Обрати" + }, + "addItem": { + "message": "Додати запис" + }, + "editItem": { + "message": "Змінити запис" + }, + "viewItem": { + "message": "Перегляд запису" + }, + "ex": { + "message": "зразок", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Інше" + }, + "share": { + "message": "Поділитися" + }, + "moveToOrganization": { + "message": "Перемістити до організації" + }, + "valueCopied": { + "message": "$VALUE$ скопійовано", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Копіювати значення", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Копіювати пароль", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Копіювати ім'я користувача", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Копіювати номер", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Копіювати код безпеки", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "Копіювати URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Моє сховище" + }, + "vault": { + "message": "Сховище" + }, + "moveSelectedToOrg": { + "message": "Перемістити вибране до організації" + }, + "deleteSelected": { + "message": "Видалити вибране" + }, + "moveSelected": { + "message": "Перемістити вибране" + }, + "selectAll": { + "message": "Вибрати все" + }, + "unselectAll": { + "message": "Скасувати вибір" + }, + "launch": { + "message": "Перейти" + }, + "newAttachment": { + "message": "Додати нове вкладення" + }, + "deletedAttachment": { + "message": "Вкладення видалено" + }, + "deleteAttachmentConfirmation": { + "message": "Ви дійсно хочете видалити це вкладення?" + }, + "attachmentSaved": { + "message": "Вкладення збережено." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Оберіть файл." + }, + "maxFileSize": { + "message": "Максимальний розмір файлу 500 Мб." + }, + "updateKey": { + "message": "Ви не можете використовувати цю функцію доки не оновите свій ключ шифрування." + }, + "addedItem": { + "message": "Запис додано" + }, + "editedItem": { + "message": "Запис змінено" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ переміщено до $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Вибрані записи переміщено до $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Видалити запис" + }, + "deleteFolder": { + "message": "Видалити теку" + }, + "deleteAttachment": { + "message": "Видалити файл" + }, + "deleteItemConfirmation": { + "message": "Ви дійсно хочете перенести до смітника?" + }, + "deletedItem": { + "message": "Запис перенесено до смітника" + }, + "deletedItems": { + "message": "Записи перенесено до смітника" + }, + "movedItems": { + "message": "Записи переміщено" + }, + "overwritePasswordConfirmation": { + "message": "Ви дійсно хочете перезаписати поточний пароль?" + }, + "editedFolder": { + "message": "Тека відредагована" + }, + "addedFolder": { + "message": "Додано теку" + }, + "deleteFolderConfirmation": { + "message": "Ви дійсно хочете видалити цю теку?" + }, + "deletedFolder": { + "message": "Теку видалено" + }, + "loggedOut": { + "message": "Ви вийшли" + }, + "loginExpired": { + "message": "Тривалість вашого сеансу завершилась." + }, + "logOutConfirmation": { + "message": "Ви дійсно хочете вийти?" + }, + "logOut": { + "message": "Вийти" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Так" + }, + "no": { + "message": "Ні" + }, + "loginOrCreateNewAccount": { + "message": "Для доступу до сховища увійдіть в обліковий запис, або створіть новий." + }, + "createAccount": { + "message": "Створити обліковий запис" + }, + "logIn": { + "message": "Увійти" + }, + "submit": { + "message": "Відправити" + }, + "emailAddressDesc": { + "message": "Адреса е-пошти буде використовуватися для входу." + }, + "yourName": { + "message": "Ваше ім'я" + }, + "yourNameDesc": { + "message": "Як до вас звертатися?" + }, + "masterPass": { + "message": "Головний пароль" + }, + "masterPassDesc": { + "message": "Головний пароль використовується для доступу до вашого сховища. Дуже важливо, щоб ви запам'ятали його. Якщо ви забудете головний пароль, його неможливо буде відновити." + }, + "masterPassHintDesc": { + "message": "Якщо ви забудете головний пароль, підказка може допомогти вам згадати його." + }, + "reTypeMasterPass": { + "message": "Введіть головний пароль ще раз" + }, + "masterPassHint": { + "message": "Підказка для головного пароля (необов'язково)" + }, + "masterPassHintLabel": { + "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": "Сталася неочікувана помилка." + }, + "emailAddress": { + "message": "Адреса е-пошти" + }, + "yourVaultIsLocked": { + "message": "Сховище заблоковано. Введіть головний пароль для продовження." + }, + "unlock": { + "message": "Розблокувати" + }, + "loggedInAsEmailOn": { + "message": "Ви увійшли як $EMAIL$ на $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Неправильний головний пароль" + }, + "lockNow": { + "message": "Заблокувати зараз" + }, + "noItemsInList": { + "message": "Немає записів." + }, + "noCollectionsInList": { + "message": "Немає збірок." + }, + "noGroupsInList": { + "message": "Немає груп." + }, + "noUsersInList": { + "message": "Немає користувачів." + }, + "noEventsInList": { + "message": "Немає подій." + }, + "newOrganization": { + "message": "Нова організація" + }, + "noOrganizationsList": { + "message": "Ви не входите до жодної організації. Організації дозволяють безпечно обмінюватися елементами з іншими користувачами." + }, + "versionNumber": { + "message": "Версія $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 порт комп'ютера. Якщо в нього є кнопка, натисніть її." + }, + "loginUnavailable": { + "message": "Вхід недоступний" + }, + "noTwoStepProviders": { + "message": "Для цього облікового запису увімкнено двоетапну перевірку. Однак, жоден з налаштованих провайдерів двоетапної перевірки не підтримується цим браузером." + }, + "noTwoStepProviders2": { + "message": "Будь ласка, скористайтеся підтримуваним браузером (наприклад, Chrome) та/або іншими провайдерами, що краще підтримуються браузерами (наприклад, програма авторизації)." + }, + "twoStepOptions": { + "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, 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." + }, + "u2fDesc": { + "message": "Використовуйте будь-який ключ безпеки FIDO U2F для доступу до сховища." + }, + "u2fTitle": { + "message": "Ключ безпеки FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Використовуйте будь-який ключ безпеки WebAuthn для доступу до сховища." + }, + "webAuthnMigrated": { + "message": "(Перенесено з FIDO)" + }, + "emailTitle": { + "message": "Е-пошта" + }, + "emailDesc": { + "message": "Коди підтвердження будуть надсилатися на вашу пошту." + }, + "continue": { + "message": "Продовжити" + }, + "organization": { + "message": "Організація" + }, + "organizations": { + "message": "Організації" + }, + "moveToOrgDesc": { + "message": "Виберіть організацію, до якої ви бажаєте перемістити цей запис. При переміщенні до організації власність запису передається тій організації. Ви більше не будете єдиним власником цього запису після переміщення." + }, + "moveManyToOrgDesc": { + "message": "Виберіть організацію, до якої ви бажаєте перемістити ці записи. При переміщенні до організації власність записів передається тій організації. Ви більше не будете єдиним власником цих записів після переміщення." + }, + "collectionsDesc": { + "message": "Редагуйте збірки, з якими цей запис знаходиться в спільному доступі. Лише учасники організацій з доступом до цих збірок матимуть можливість бачити цей запис." + }, + "deleteSelectedItemsDesc": { + "message": "Ви обрали $COUNT$ записів для видалення. Ви справді хочете їх видалити?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Оберіть теку, в яку ви бажаєте перемістити $COUNT$ вибраних записів.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "Ви вибрали $COUNT$ запис(ів). $MOVEABLE_COUNT$ запис(ів) можна перемістити до організації, $NONMOVEABLE_COUNT$ не можна.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Код підтвердження (TOTP)" + }, + "copyVerificationCode": { + "message": "Копіювати код підтвердження" + }, + "warning": { + "message": "Попередження" + }, + "confirmVaultExport": { + "message": "Підтвердити експорт сховища" + }, + "exportWarningDesc": { + "message": "Експортовані дані вашого сховища знаходяться в незашифрованому вигляді. Вам не слід зберігати чи надсилати їх через незахищені канали (наприклад, е-поштою). Після використання негайно видаліть їх." + }, + "encExportKeyWarningDesc": { + "message": "Цей експорт шифрує ваші дані за допомогою ключа шифрування облікового запису. Якщо ви коли-небудь оновите ключ шифрування облікового запису, ви повинні виконати експорт знову, оскільки не зможете розшифрувати цей файл експорту." + }, + "encExportAccountWarningDesc": { + "message": "Ключі шифрування унікальні для кожного облікового запису користувача Bitwarden, тому ви не можете імпортувати зашифрований експорт до іншого облікового запису." + }, + "export": { + "message": "Експорт" + }, + "exportVault": { + "message": "Експорт сховища" + }, + "fileFormat": { + "message": "Формат файлу" + }, + "exportSuccess": { + "message": "Дані сховища експортовано." + }, + "passwordGenerator": { + "message": "Генератор паролів" + }, + "minComplexityScore": { + "message": "Мінімальна оцінка складності" + }, + "minNumbers": { + "message": "Мінімум цифр" + }, + "minSpecial": { + "message": "Мінімум спеціальних символів", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Уникати неоднозначних символів" + }, + "regeneratePassword": { + "message": "Генерувати новий" + }, + "length": { + "message": "Довжина" + }, + "numWords": { + "message": "Кількість слів" + }, + "wordSeparator": { + "message": "Розділювач слів" + }, + "capitalize": { + "message": "Великі літери", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Включити число" + }, + "passwordHistory": { + "message": "Історія паролів" + }, + "noPasswordsInList": { + "message": "Немає паролів." + }, + "clear": { + "message": "Стерти", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Обліковий запис оновлено" + }, + "changeEmail": { + "message": "Змінити адресу е-пошти" + }, + "changeEmailTwoFactorWarning": { + "message": "Продовжуючи, ви зміните адресу електронної пошти вашого облікового запису. Ця дія не змінить адресу електронної пошти, що використовується для двоетапної перевірки. Ви можете змінити цю електронну адресу в налаштуваннях двоетапної перевірки." + }, + "newEmail": { + "message": "Нова адреса е-пошти" + }, + "code": { + "message": "Код" + }, + "changeEmailDesc": { + "message": "Ми надіслали код підтвердження на $EMAIL$. Знайдіть цей код в отриманому листі та введіть його внизу, щоб завершити зміну адреси електронної пошти.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Продовжуючи, ви вийдете з поточного сеансу і необхідно буде виконати вхід знову. Активні сеанси на інших пристроях можуть залишатися активними протягом години." + }, + "emailChanged": { + "message": "Е-пошту змінено" + }, + "logBackIn": { + "message": "Повторно виконайте вхід." + }, + "logBackInOthersToo": { + "message": "Будь ласка, повторно виконайте вхід. Якщо ви користуєтесь іншими додатками Bitwarden, також вийдіть із них, і знову увійдіть." + }, + "changeMasterPassword": { + "message": "Змінити головний пароль" + }, + "masterPasswordChanged": { + "message": "Головний пароль змінено" + }, + "currentMasterPass": { + "message": "Поточний головний пароль" + }, + "newMasterPass": { + "message": "Новий головний пароль" + }, + "confirmNewMasterPass": { + "message": "Підтвердьте новий головний пароль" + }, + "encKeySettings": { + "message": "Налаштування ключа шифрування" + }, + "kdfAlgorithm": { + "message": "Алгоритм KDF" + }, + "kdfIterations": { + "message": "Ітерації KDF" + }, + "kdfIterationsDesc": { + "message": "Вище значення KDF-ітерацій може допомогти захистити головний пароль від перехоплення зловмисником. Ми рекомендуємо встановити значення не менше $VALUE$.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Встановлення надто великого значення KDF-ітерацій може призвести до повільної роботи системи при вході (і розблокуванні системи) на слабких комп'ютерах. Рекомендуємо збільшувати значення поступово з кроком $INCREMENT$, після чого тестувати роботу на всіх ваших пристроях.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Змінити KDF" + }, + "encKeySettingsChanged": { + "message": "Налаштування ключа шифрування змінено" + }, + "dangerZone": { + "message": "Небезпечна зона" + }, + "dangerZoneDesc": { + "message": "Обережно, ці дії неможливо скасувати!" + }, + "deauthorizeSessions": { + "message": "Закрити сеанси" + }, + "deauthorizeSessionsDesc": { + "message": "Хвилюєтесь про те, чи не виконано вхід на іншому пристрої? Перейдіть нижче, щоб закрити сеанси на всіх комп'ютерах чи інших пристроях, які ви раніше використовували. Рекомендовано використовувати цей крок, якщо ви раніше користувалися загальнодоступними комп'ютерами, або іншими чужими пристроями, на яких міг зберегтися ваш пароль входу. Ця дія також зітре всі попередньо збережені сеанси двоетапної перевірки." + }, + "deauthorizeSessionsWarning": { + "message": "Продовжуючи, ви також вийдете з поточного сеансу і необхідно буде виконати вхід знову. Ви також отримаєте повторний запит двоетапної перевірки, якщо вона увімкнена. Активні сеанси на інших пристроях можуть залишатися активними протягом години." + }, + "sessionsDeauthorized": { + "message": "Всі сеанси закрито" + }, + "purgeVault": { + "message": "Очистити сховище" + }, + "purgedOrganizationVault": { + "message": "Сховище організації очищено." + }, + "vaultAccessedByProvider": { + "message": "Постачальник має доступ до сховища." + }, + "purgeVaultDesc": { + "message": "Продовжуйте внизу для видалення всіх записів і тек у вашому сховищі. Записи, що належать до спільної організації не будуть видалені." + }, + "purgeOrgVaultDesc": { + "message": "Продовжуйте внизу, щоб видалити всі записи в сховищі організації." + }, + "purgeVaultWarning": { + "message": "Очищення вашого сховища є незворотною дією. Це не можна буде скасувати." + }, + "vaultPurged": { + "message": "Ваше сховище було очищено." + }, + "deleteAccount": { + "message": "Видалити обліковий запис" + }, + "deleteAccountDesc": { + "message": "Продовжуйте внизу для видалення облікового запису і всіх пов'язаних даних." + }, + "deleteAccountWarning": { + "message": "Видалення облікового запису є незворотною дією. Це не можна буде скасувати." + }, + "accountDeleted": { + "message": "Обліковий запис видалено" + }, + "accountDeletedDesc": { + "message": "Ваш обліковий запис було закрито і всі пов'язані дані було видалено." + }, + "myAccount": { + "message": "Мій обліковий запис" + }, + "tools": { + "message": "Інструменти" + }, + "importData": { + "message": "Імпорт даних" + }, + "importError": { + "message": "Помилка імпорту" + }, + "importErrorDesc": { + "message": "При спробі імпорту ваших даних виникла проблема. Будь ласка, виправте вказані нижче помилки у вихідному файлі та спробуйте знову." + }, + "importSuccess": { + "message": "Дані успішно імпортовано до вашого сховища." + }, + "importWarning": { + "message": "Ви імпортуєте дані до $ORGANIZATION$. Ваші дані можуть бути доступними учасникам цієї організації. Ви хочете продовжити?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Дані мають некоректне форматування. Перевірте файл імпорту і спробуйте знову." + }, + "importNothingError": { + "message": "Нічого не імпортовано." + }, + "importEncKeyError": { + "message": "Помилка при розшифруванні експортованого файлу. Ваш ключ шифрування відрізняється від ключа, використаного при експортуванні даних." + }, + "selectFormat": { + "message": "Оберіть формат імпортованого файлу" + }, + "selectImportFile": { + "message": "Оберіть файл для імпорту" + }, + "orCopyPasteFileContents": { + "message": "або скопіюйте і вставте вміст файлу для імпорту" + }, + "instructionsFor": { + "message": "Інструкції для $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Додатково" + }, + "optionsDesc": { + "message": "Налаштуйте свою роботу з веб сховищем." + }, + "optionsUpdated": { + "message": "Налаштування оновлено" + }, + "language": { + "message": "Мова" + }, + "languageDesc": { + "message": "Змінити мову інтерфейсу веб сховища." + }, + "disableIcons": { + "message": "Вимкнути піктограми вебсайтів" + }, + "disableIconsDesc": { + "message": "Впізнавані піктограми вебсайтів додаються біля кожного запису вашого сховища." + }, + "enableGravatars": { + "message": "Увімкнути Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Використовувати зображення профілю завантажені з gravatar.com." + }, + "enableFullWidth": { + "message": "Увімкнути макет повної ширини", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Дозволити веб сховищу розгортатися на повну ширину вікна браузера." + }, + "default": { + "message": "Типово" + }, + "domainRules": { + "message": "Правила доменів" + }, + "domainRulesDesc": { + "message": "Якщо у вас є однакові дані входу для різних вебсайтів, ви можете позначити такий вебсайт як \"еквівалентний\". \"Глобальні\" домени вже створені для вас в Bitwarden." + }, + "globalEqDomains": { + "message": "Глобальні еквівалентні домени" + }, + "customEqDomains": { + "message": "Власні еквівалентні домени" + }, + "exclude": { + "message": "Виключити" + }, + "include": { + "message": "Включити" + }, + "customize": { + "message": "Налаштувати" + }, + "newCustomDomain": { + "message": "Новий власний домен" + }, + "newCustomDomainDesc": { + "message": "Введіть список доменів, розділених комами. Дозволяються лише \"основні\" домени. Не вводьте піддомени. Наприклад, вводьте \"google.com\" замість \"www.google.com\". Ви також можете ввести \"androidapp://package.name\", щоб асоціювати програму android з іншими доменами вебсайту." + }, + "customDomainX": { + "message": "Власний домен $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Домени оновлено" + }, + "twoStepLogin": { + "message": "Двоетапна перевірка" + }, + "twoStepLoginDesc": { + "message": "Захистіть обліковий запис, вимагаючи додатковий крок перевірки при вході." + }, + "twoStepLoginOrganizationDesc": { + "message": "Вимагати двоетапну перевірку для користувачів вашої організації, змінивши конфігурацію провайдерів на рівні організації." + }, + "twoStepLoginRecoveryWarning": { + "message": "Увімкнення двоетапної перевірки може цілком заблокувати доступ до облікового запису Bitwarden. Код відновлення дозволяє вам отримати доступ до свого облікового запису у випадку, якщо ви не можете скористатися провайдером двоетапної перевірки (наприклад, при втраті пристрою). Служба підтримки Bitwarden не зможе допомогти відновити доступ до вашого облікового запису. Ми радимо вам записати чи роздрукувати цей код відновлення і зберігати його в надійному місці." + }, + "viewRecoveryCode": { + "message": "Переглянути код відновлення" + }, + "providers": { + "message": "Провайдери", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Увімкнути" + }, + "enabled": { + "message": "Увімкнено" + }, + "premium": { + "message": "Преміум", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Преміум статус" + }, + "premiumRequired": { + "message": "Необхідний преміум статус" + }, + "premiumRequiredDesc": { + "message": "Для використання цієї функції необхідний преміум статус." + }, + "youHavePremiumAccess": { + "message": "У вас є преміум-доступ" + }, + "alreadyPremiumFromOrg": { + "message": "У вас вже є доступ до преміум-функцій, тому що ви входите до організації, яка вам їх надає." + }, + "manage": { + "message": "Керувати" + }, + "disable": { + "message": "Вимкнути" + }, + "twoStepLoginProviderEnabled": { + "message": "Для вашого облікового запису увімкнено цей спосіб двоетапної перевірки." + }, + "twoStepLoginAuthDesc": { + "message": "Введіть головний пароль, щоб змінити налаштування двоетапної перевірки." + }, + "twoStepAuthenticatorDesc": { + "message": "Дотримуйтесь цих кроків, щоб встановити двоетапну перевірку за допомогою програми:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Завантажте програму для двоетапної перевірки" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Необхідна програма для двоетапної перевірки? Завантажте одну з таких" + }, + "iosDevices": { + "message": "Пристрої iOS" + }, + "androidDevices": { + "message": "Пристрої Android" + }, + "windowsDevices": { + "message": "Пристрої Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Ці програми є рекомендованими, однак, інші програми авторизації також працюватимуть." + }, + "twoStepAuthenticatorScanCode": { + "message": "Скануйте цей QR-код за допомогою програми авторизації" + }, + "key": { + "message": "Ключ" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Введіть отриманий в програмі 6-значний код авторизації" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Якщо вам необхідно додати його на іншому пристрої, внизу знаходиться QR-код (або код) для вашої програми авторизації." + }, + "twoStepDisableDesc": { + "message": "Ви справді хочете вимкнути цього провайдера двоетапної перевірки?" + }, + "twoStepDisabled": { + "message": "Провайдера двоетапної перевірки вимкнено." + }, + "twoFactorYubikeyAdd": { + "message": "Додайте новий YubiKey до вашого облікового запису" + }, + "twoFactorYubikeyPlugIn": { + "message": "Під'єднайте YubiKey до USB вашого комп'ютера." + }, + "twoFactorYubikeySelectKey": { + "message": "Оберіть перше порожнє поле вводу YubiKey внизу." + }, + "twoFactorYubikeyTouchButton": { + "message": "Торкніться кнопки YubiKey." + }, + "twoFactorYubikeySaveForm": { + "message": "Збережіть форму." + }, + "twoFactorYubikeyWarning": { + "message": "У зв'язку з обмеженнями платформи, YubiKey не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб ви могли отримати доступ до свого облікового запису, коли неможливо скористатися YubiKey. Підтримувані платформи:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Веб сховище, програма для комп'ютера, CLI, а також усі розширення браузера на пристроях, де можливо під'єднати YubiKey до USB." + }, + "twoFactorYubikeySupportMobile": { + "message": "Мобільні програми на пристроях з NFC, або порт даних, який може приймати YubiKey." + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Ключ $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "Ключ WebAuthn $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Підтримка NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Один з моїх ключів підтримує NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Якщо один з ваших YubiKey підтримує NFC (наприклад, YubiKey NEO), ви отримаєте запит на мобільних пристроях, як тільки буде виявлено NFC." + }, + "yubikeysUpdated": { + "message": "YubiKey оновлено" + }, + "disableAllKeys": { + "message": "Вимкнути всі ключі" + }, + "twoFactorDuoDesc": { + "message": "Введіть інформацію про програму Bitwarden з вашої панелі адміністратора Duo." + }, + "twoFactorDuoIntegrationKey": { + "message": "Ключ інтеграції" + }, + "twoFactorDuoSecretKey": { + "message": "Секретний ключ" + }, + "twoFactorDuoApiHostname": { + "message": "Назва вузла API" + }, + "twoFactorEmailDesc": { + "message": "Дотримуйтесь цих кроків, щоб встановити двоетапну перевірку за допомогою електронної пошти:" + }, + "twoFactorEmailEnterEmail": { + "message": "Введіть адресу електронної пошти, на яку ви бажаєте отримувати коди перевірки" + }, + "twoFactorEmailEnterCode": { + "message": "Введіть отриманий 6-значний код перевірки з електронного повідомлення" + }, + "sendEmail": { + "message": "Надіслати повідомлення" + }, + "twoFactorU2fAdd": { + "message": "Додайте ключ безпеки FIDO U2F до свого облікового запису" + }, + "removeU2fConfirmation": { + "message": "Ви впевнені, що хочете вилучити цей ключ безпеки?" + }, + "twoFactorWebAuthnAdd": { + "message": "Додайте ключ безпеки WebAuthn до свого облікового запису" + }, + "readKey": { + "message": "Читати ключ" + }, + "keyCompromised": { + "message": "Ключ скомпрометований." + }, + "twoFactorU2fGiveName": { + "message": "Назвіть ключ безпеки для легкої його ідентифікації." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Під'єднайте ключ безпеки до USB вашого комп'ютера і натисніть кнопку \"Читати ключ\"." + }, + "twoFactorU2fTouchButton": { + "message": "Якщо ключ безпеки має кнопку, торкніться її." + }, + "twoFactorU2fSaveForm": { + "message": "Зберегти форму." + }, + "twoFactorU2fWarning": { + "message": "У зв'язку з обмеженнями платформи, FIDO U2F не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб ви могли отримати доступ до свого облікового запису, коли неможливо скористатися FIDO U2F. Підтримувані платформи:" + }, + "twoFactorU2fSupportWeb": { + "message": "Веб сховище і розширення браузера на комп'ютерах і ноутбуках з браузерами, що мають підтримку U2F (Chrome, Opera, Vivaldi, або Firefox з увімкненим FIDO U2F)." + }, + "twoFactorU2fWaiting": { + "message": "Чекаємо доки ви торкнетеся кнопки на своєму ключі безпеки" + }, + "twoFactorU2fClickSave": { + "message": "Натисніть кнопку \"Зберегти\" внизу, щоб активувати двоетапну перевірку з використанням цього ключа." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "Сталася проблема при читанні ключа безпеки. Спробуйте знову." + }, + "twoFactorWebAuthnWarning": { + "message": "У зв'язку з обмеженнями платформи, WebAuthn не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб ви могли отримати доступ до свого облікового запису, коли неможливо скористатися WebAuthn. Підтримувані платформи:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Веб сховище і розширення браузера на комп'ютерах і ноутбуках з браузерами, що мають підтримку WebAuthn (Chrome, Opera, Vivaldi, або Firefox з увімкненим FIDO U2F)." + }, + "twoFactorRecoveryYourCode": { + "message": "Ваш код відновлення двоетапної перевірки Bitwarden" + }, + "twoFactorRecoveryNoCode": { + "message": "Ви ще не увімкнули жодного провайдера двоетапної перевірки. Після того, як ви це зробите, ви можете повернутися сюди для отримання коду відновлення." + }, + "printCode": { + "message": "Друкувати код", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Звіти" + }, + "reportsDesc": { + "message": "Визначте і закрийте прогалини в безпеці у ваших облікових записах, натиснувши на звіти нижче." + }, + "unsecuredWebsitesReport": { + "message": "Незахищені вебсайти" + }, + "unsecuredWebsitesReportDesc": { + "message": "URL-адреси, що починаються з http:// не мають надійного шифрування. Змініть URL-адреси цих облікових записів на https:// для використання безпечного з'єднання." + }, + "unsecuredWebsitesFound": { + "message": "Знайдено незахищені вебсайти" + }, + "unsecuredWebsitesFoundDesc": { + "message": "Ми знайшли $COUNT$ записів у вашому сховищі з незахищеними URL-адресами. Вам слід змінити їхні URL-схеми на https://, якщо вони це дозволяють.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "У вашому сховищі немає записів з незахищеними URL-адресами." + }, + "inactive2faReport": { + "message": "Неактивна двоетапна перевірка" + }, + "inactive2faReportDesc": { + "message": "Двоетапна перевірка надає додатковий рівень захисту для ваших облікових записів. Увімкніть двоетапнуперевірку з використанням вбудованих засобів Bitwarden для цих облікових записів, або скористайтеся альтернативним способом." + }, + "inactive2faFound": { + "message": "Знайдено записи без двоетапної перевірки" + }, + "inactive2faFoundDesc": { + "message": "Ми знайшли $COUNT$ вебсайтів у вашому сховищі, що можуть бути не налаштовані для двоетапної перевірки (за даними 2fa.directory). Для захисту цих облікових записів вам слід активувати двоетапну перевірку.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "У вашому сховищі не знайдено вебсайтів з неналаштованою двоетапною перевіркою." + }, + "instructions": { + "message": "Інструкції" + }, + "exposedPasswordsReport": { + "message": "Викриті паролі" + }, + "exposedPasswordsReportDesc": { + "message": "Паролі, викриті у витоках даних, є легкою мішенню для зловмисників. Змініть ці паролі для запобігання потенційних ризиків." + }, + "exposedPasswordsFound": { + "message": "Знайдено викриті паролі" + }, + "exposedPasswordsFoundDesc": { + "message": "У вашому сховищі знайдено $COUNT$ записів з паролями, які було викрито у відомих витоках даних. Вам слід змінити їх з використанням нового пароля.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "У вашому сховищі не знайдено записів з паролями, що були викриті у відомих витоках даних." + }, + "checkExposedPasswords": { + "message": "Перевірка викритих паролів" + }, + "exposedXTimes": { + "message": "Викрито $COUNT$ разів", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Ненадійні паролі" + }, + "weakPasswordsReportDesc": { + "message": "Ненадійні паролі можуть легко бути вгадані зловмисниками. Замініть ці паролі на надійні за допомогою генератора паролів." + }, + "weakPasswordsFound": { + "message": "Знайдено ненадійні паролі" + }, + "weakPasswordsFoundDesc": { + "message": "У вашому сховищі знайдено $COUNT$ записів з ненадійними паролями. Вам слід оновити їх з використанням надійніших паролів.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "У вашому сховищі немає ненадійних паролів." + }, + "reusedPasswordsReport": { + "message": "Повторювані паролі" + }, + "reusedPasswordsReportDesc": { + "message": "Повторне використання паролів дає змогу легко отримати доступ до багатьох облікових записів. Замініть ці паролі, щоб кожен з них був унікальним." + }, + "reusedPasswordsFound": { + "message": "Знайдено повторювані паролі" + }, + "reusedPasswordsFoundDesc": { + "message": "У вашому сховищі знайдено $COUNT$ паролів з повторним використанням. Вам слід змінити їх на унікальні.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "У вашому сховищі не знайдено паролів з повторним використанням." + }, + "reusedXTimes": { + "message": "Повторюється $COUNT$ разів", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Витік даних" + }, + "breachDesc": { + "message": "Викриті облікові дані можуть розкрити вашу особисту інформацію. Захистіть викриті облікові записи, увімкнувши двоктапну перевірку чи створивши надійніший пароль." + }, + "breachCheckUsernameEmail": { + "message": "Перевірте будь-які використовувані вами імена користувачів чи адреси електронної пошти." + }, + "checkBreaches": { + "message": "Перевірити витоки даних" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ не знайдено у відомих витоках даних.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Гарні новини", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ було знайдено в $COUNT$ різних витоках даних онлайн.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Знайдено скомпрометовані облікові дані" + }, + "compromisedData": { + "message": "Скомпрометовані дані" + }, + "website": { + "message": "Вебсайт" + }, + "affectedUsers": { + "message": "Впливає на користувачів" + }, + "breachOccurred": { + "message": "Стався витік даних" + }, + "breachReported": { + "message": "Отримано звіт про витік даних" + }, + "reportError": { + "message": "При завантаженні звіту сталася помилка. Спробуйте знову" + }, + "billing": { + "message": "Оплата" + }, + "accountCredit": { + "message": "Кредит рахунку", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Баланс рахунку", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Додати кредит", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Сума", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Доданий кредит з'явиться на вашому рахунку після повної обробки платежу. Деякі способи оплати затримуються і можуть оброблятися довше, ніж інші." + }, + "makeSureEnoughCredit": { + "message": "Будь ласка, переконайтеся, що на вашому рахунку достатньо коштів для цієї покупки. Якщо на вашому рахунку недостатньо коштів, то різниця спишеться з використанням вашого типового способу оплати. Ви можете додати кошти до свого рахунку на сторінці Оплата." + }, + "creditAppliedDesc": { + "message": "Кредит вашого рахунку можна використовувати для покупок. Будь-який наявний кредит автоматично використовуватиметься для рахунків, згенерованих для цього облікового запису." + }, + "goPremium": { + "message": "Перейти на Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "Ви оновилися до версії Premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Оновіть свій обліковий запис до тарифного плану Premium й отримайте чудові додаткові можливості." + }, + "premiumSignUpStorage": { + "message": "1 ГБ зашифрованого сховища для файлів." + }, + "premiumSignUpTwoStep": { + "message": "Додаткові можливості двоетапної перевірки, наприклад, YubiKey, FIDO U2F та Duo." + }, + "premiumSignUpEmergency": { + "message": "Екстрений доступ" + }, + "premiumSignUpReports": { + "message": "Гігієна паролів, здоров'я облікового запису, а також звіти про вразливості даних, щоб зберігати ваше сховище в безпеці." + }, + "premiumSignUpTotp": { + "message": "Генератор коду авторизації TOTP (2FA) для входу в сховище." + }, + "premiumSignUpSupport": { + "message": "Пріоритетну технічну підтримку." + }, + "premiumSignUpFuture": { + "message": "Всі майбутні функції преміум статусу. Їх буде більше!" + }, + "premiumPrice": { + "message": "Всього лише $PRICE$ / за рік!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Додатки" + }, + "premiumAccess": { + "message": "Преміум-доступ" + }, + "premiumAccessDesc": { + "message": "Ви можете додати преміум-доступ для всіх учасників вашої організації за $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Додаткове сховище (ГБ)" + }, + "additionalStorageGbDesc": { + "message": "# додаткових ГБ" + }, + "additionalStorageIntervalDesc": { + "message": "У ваш тарифний план включено зашифроване сховище файлів, розміром $SIZE$. Ви можете збільшити обсяг сховища по ціні $PRICE$ за ГБ /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Підсумок" + }, + "total": { + "message": "Всього" + }, + "year": { + "message": "рік" + }, + "month": { + "message": "місяць" + }, + "monthAbbr": { + "message": "міс.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "З вас буде одразу стягнуто плату згідно з обраним способом, а потім так само кожного року. Ви можете скасувати це в будь-який час." + }, + "paymentCharged": { + "message": "З вас буде одразу стягнуто плату згідно з обраним способом, а потім так само кожного $INTERVAL$. Ви можете скасувати це в будь-який час.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Ваш тарифний план має 7 днів безплатного пробного періоду. З вас не буде стягнуто плату до завершення цього періоду. Ви можете скасувати це в будь-який час." + }, + "paymentInformation": { + "message": "Інформація про оплату" + }, + "billingInformation": { + "message": "Платіжна інформація" + }, + "creditCard": { + "message": "Кредитна карта" + }, + "paypalClickSubmit": { + "message": "Натисніть кнопку PayPal для входу в свій обліковий запис PayPal, потім натисніть кнопку Відправити внизу для продовження." + }, + "cancelSubscription": { + "message": "Скасувати передплату" + }, + "subscriptionCanceled": { + "message": "Передплату було скасовано." + }, + "pendingCancellation": { + "message": "Очікування скасування" + }, + "subscriptionPendingCanceled": { + "message": "Передплату було позначено для скасування в кінці поточного оплаченого періоду." + }, + "reinstateSubscription": { + "message": "Відновити передплату" + }, + "reinstateConfirmation": { + "message": "Ви справді хочете вилучити очікуваний запит скасування і відновити вашу передплату?" + }, + "reinstated": { + "message": "Передплату було відновлено." + }, + "cancelConfirmation": { + "message": "Ви справді хочете скасувати? Ви втратите доступ до всіх можливостей, пов'язаних з нею після завершення поточного періоду передплати." + }, + "canceledSubscription": { + "message": "Передплату було скасовано." + }, + "neverExpires": { + "message": "Необмежений термін дії" + }, + "status": { + "message": "Статус" + }, + "nextCharge": { + "message": "Наступна оплата" + }, + "details": { + "message": "Подробиці" + }, + "downloadLicense": { + "message": "Завантажити ліцензію" + }, + "updateLicense": { + "message": "Оновити ліцензію" + }, + "updatedLicense": { + "message": "Ліцензію оновлено" + }, + "manageSubscription": { + "message": "Керувати передплатою" + }, + "storage": { + "message": "Сховище" + }, + "addStorage": { + "message": "Додати сховище" + }, + "removeStorage": { + "message": "Вилучити сховище" + }, + "subscriptionStorage": { + "message": "Ваша передплата включає всього $MAX_STORAGE$ ГБ зашифрованого сховища файлів. Ви зараз використовуєте $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Спосіб оплати" + }, + "noPaymentMethod": { + "message": "Файл не містить способу оплати." + }, + "addPaymentMethod": { + "message": "Додати спосіб оплати" + }, + "changePaymentMethod": { + "message": "Змінити спосіб оплати" + }, + "invoices": { + "message": "Рахунки" + }, + "noInvoices": { + "message": "Немає рахунків." + }, + "paid": { + "message": "Сплачено", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Не сплачено", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Транзакції", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "Немає транзакцій." + }, + "chargeNoun": { + "message": "Списання", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Повернення", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Будь-які оплати з'являтимуться у вашому рахунку як $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "ГБ сховища для додавання" + }, + "gbStorageRemove": { + "message": "ГБ сховища для вилучення" + }, + "storageAddNote": { + "message": "Додавання сховища призведе до змін суми вашої оплати і негайно буде стягнуто плату способом, зазначеним у файлі. Перша оплата буде пропорційна решті за поточний цикл оплати." + }, + "storageRemoveNote": { + "message": "Вилучення сховища призведе до змін у сумі вашої оплати і буде пропорційно розділено у вигляді кредиту за наступний цикл оплати." + }, + "adjustedStorage": { + "message": "Змінено $AMOUNT$ ГБ сховища.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Зв'язатися зі службою підтримки клієнтів" + }, + "updatedPaymentMethod": { + "message": "Спосіб оплати оновлено." + }, + "purchasePremium": { + "message": "Придбати преміум" + }, + "licenseFile": { + "message": "Файл ліцензії" + }, + "licenseFileDesc": { + "message": "Ваш файл ліцензії має назву $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "Для оновлення вашого облікового запису до Premium, вам необхідно вивантажити дійсний файл ліцензії." + }, + "uploadLicenseFileOrg": { + "message": "Для створення організації, розміщеної на локальному хостингу, вам необхідно вивантажити дійсний файл ліцензії." + }, + "accountEmailMustBeVerified": { + "message": "Необхідно підтвердити адресу електронної пошти вашого облікового запису." + }, + "newOrganizationDesc": { + "message": "Організації дозволяють вам спільно використовувати ваше сховище з іншими, а також керувати пов'язаними користувачами окремих записів, наприклад, родиною, невеликою командою, або великою компанією." + }, + "generalInformation": { + "message": "Загальна інформація" + }, + "organizationName": { + "message": "Назва організації" + }, + "accountOwnedBusiness": { + "message": "Цей обліковий запис належить компанії." + }, + "billingEmail": { + "message": "Адреса електронної пошти для оплати" + }, + "businessName": { + "message": "Назва компанії" + }, + "chooseYourPlan": { + "message": "Оберіть свій тарифний план" + }, + "users": { + "message": "Користувачі" + }, + "userSeats": { + "message": "Місця користувачів" + }, + "additionalUserSeats": { + "message": "Додаткові місця користувачів" + }, + "userSeatsDesc": { + "message": "# місць користувачів" + }, + "userSeatsAdditionalDesc": { + "message": "Ваш тарифний план постачається з $BASE_SEATS$ місць користувачів. Ви можете додати місця для користувачів по ціні $SEAT_PRICE$ за користувача на місяць.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "Скільки місць користувачів вам необхідно? При необхідності, ви також можете пізніше додати місця користувачів." + }, + "planNameFree": { + "message": "Безплатно", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "Для тестування чи особистого користування спільно з $COUNT$ іншим користувачем.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Родина" + }, + "planDescFamilies": { + "message": "Для особистого користування спільно з родиною і друзями." + }, + "planNameTeams": { + "message": "Команда" + }, + "planDescTeams": { + "message": "Для компаній та інших командних організацій." + }, + "planNameEnterprise": { + "message": "Компанія" + }, + "planDescEnterprise": { + "message": "Для компаній та інших великих організацій." + }, + "freeForever": { + "message": "Безплатно назавжди" + }, + "includesXUsers": { + "message": "включає $COUNT$ користувачів", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Додаткові користувачі" + }, + "costPerUser": { + "message": "$COST$ за користувача", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Обмеження для $COUNT$ користувачів (разом з вами)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Обмеження для $COUNT$ збірок", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Додавання й спільне користування з $COUNT$ користувачами", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Додавання й спільне користування з необмеженою кількістю користувачів" + }, + "createUnlimitedCollections": { + "message": "Створення необмежених збірок" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ зашифрованого сховища файлів", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "Попереднє розміщення (необов'язково)" + }, + "usersGetPremium": { + "message": "Користувачі отримують доступ до можливостей Premium" + }, + "controlAccessWithGroups": { + "message": "Контроль доступу користувачів за допомогою груп" + }, + "syncUsersFromDirectory": { + "message": "Синхронізація користувачів і груп з каталогу" + }, + "trackAuditLogs": { + "message": "Відстеження дій користувачів з журналами аудиту" + }, + "enforce2faDuo": { + "message": "Вимагайте 2FA з використанням Duo" + }, + "priorityCustomerSupport": { + "message": "Пріоритетна підтримка користувачів" + }, + "xDayFreeTrial": { + "message": "$COUNT$ днів безплатного пробного періоду. Можна скасувати в будь-який час", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Щомісяця" + }, + "annually": { + "message": "Щороку" + }, + "basePrice": { + "message": "Базова ціна" + }, + "organizationCreated": { + "message": "Організацію створено" + }, + "organizationReadyToGo": { + "message": "Ваша нова організація готова до використання!" + }, + "organizationUpgraded": { + "message": "Вашу організацію було оновлено." + }, + "leave": { + "message": "Покинути" + }, + "leaveOrganizationConfirmation": { + "message": "Ви справді хочете покинути цю організацію?" + }, + "leftOrganization": { + "message": "Ви покинули організацію." + }, + "defaultCollection": { + "message": "Типова збірка" + }, + "getHelp": { + "message": "Отримати допомогу" + }, + "getApps": { + "message": "Отримати додатки" + }, + "loggedInAs": { + "message": "Вхід виконано" + }, + "eventLogs": { + "message": "Журнали подій" + }, + "people": { + "message": "Люди" + }, + "policies": { + "message": "Політики" + }, + "singleSignOn": { + "message": "Єдиний вхід" + }, + "editPolicy": { + "message": "Змінити політику" + }, + "groups": { + "message": "Групи" + }, + "newGroup": { + "message": "Нова група" + }, + "addGroup": { + "message": "Додати групу" + }, + "editGroup": { + "message": "Змінити групу" + }, + "deleteGroupConfirmation": { + "message": "Ви справді хочете видалити цю групу?" + }, + "removeUserConfirmation": { + "message": "Ви справді хочете вилучити цього користувача?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Попередження! Цей користувач потребує Key Connector для керування шифруванням. Вилучення цього користувача з вашої організації остаточно вимкне його обліковий запис. Цю дію неможливо скасувати. Ви хочете продовжити?" + }, + "externalId": { + "message": "Зовнішній ID" + }, + "externalIdDesc": { + "message": "Зовнішній ID може використовуватись в якості посилання або для зв'язку цього ресурсу із зовнішньою системою, такою як каталок користувача." + }, + "accessControl": { + "message": "Контроль доступу" + }, + "groupAccessAllItems": { + "message": "Ця грума має доступ і дозвіл редагування записів." + }, + "groupAccessSelectedCollections": { + "message": "Ця група має доступ лише до окремих збірок." + }, + "readOnly": { + "message": "Лише читання" + }, + "newCollection": { + "message": "Нова збірка" + }, + "addCollection": { + "message": "Додати збірку" + }, + "editCollection": { + "message": "Змінити збірку" + }, + "deleteCollectionConfirmation": { + "message": "Ви справді хочете видалити цю збірку?" + }, + "editUser": { + "message": "Редагувати користувача" + }, + "inviteUser": { + "message": "Запросити користувача" + }, + "inviteUserDesc": { + "message": "Запросіть нового користувача до вашої організації, ввівши адресу е-пошти його облікового запису Bitwarden. Якщо він ще не має облікового запису, він отримає запит на його створення." + }, + "inviteMultipleEmailDesc": { + "message": "Ви можете запросити до $COUNT$ користувачів за раз, розділивши адреси е-пошти комою.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "Цей користувач використовує двоетапну перевірку для захисту свого облікового запису." + }, + "userAccessAllItems": { + "message": "Цей користувач має доступ і можливість змінювати всі записи." + }, + "userAccessSelectedCollections": { + "message": "Цей користувач має доступ лише до обраних збірок." + }, + "search": { + "message": "Пошук" + }, + "invited": { + "message": "Запрошено" + }, + "accepted": { + "message": "Схвалено" + }, + "confirmed": { + "message": "Підтверджено" + }, + "clientOwnerEmail": { + "message": "Е-пошта власника клієнта" + }, + "owner": { + "message": "Власник" + }, + "ownerDesc": { + "message": "Користувач з найвищими привілеями, який може керувати всіма налаштуваннями організації." + }, + "clientOwnerDesc": { + "message": "Цей користувач повинен бути незалежним від постачальника. Якщо постачальник не пов'язаний з організацією, цей користувач підтримуватиме право власності організації." + }, + "admin": { + "message": "Адміністратор" + }, + "adminDesc": { + "message": "Адміністратори мають доступ і можливість керування всіма записами, збірками та користувачами вашої організації." + }, + "user": { + "message": "Користувач" + }, + "userDesc": { + "message": "Звичайний користувач з доступом до пов'язаних збірок вашої організації." + }, + "manager": { + "message": "Менеджер" + }, + "managerDesc": { + "message": "Менеджери мають доступ і можуть керувати пов'язаними збірками вашої організації." + }, + "all": { + "message": "Усі" + }, + "refresh": { + "message": "Оновити" + }, + "timestamp": { + "message": "Мітка часу" + }, + "event": { + "message": "Подія" + }, + "unknown": { + "message": "Невідомо" + }, + "loadMore": { + "message": "Завантажити більше" + }, + "mobile": { + "message": "Мобільний", + "description": "Mobile app" + }, + "extension": { + "message": "Розширення", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Комп'ютер", + "description": "Desktop app" + }, + "webVault": { + "message": "Веб сховище" + }, + "loggedIn": { + "message": "Вхід виконано." + }, + "changedPassword": { + "message": "Пароль облікового запису змінено." + }, + "enabledUpdated2fa": { + "message": "Двоетапну перевірку увімкнено/оновлено." + }, + "disabled2fa": { + "message": "Двоетапну перевірку вимкнено." + }, + "recovered2fa": { + "message": "Обліковий запис відновлено після двоетапної перевірки." + }, + "failedLogin": { + "message": "Не вдалося виконати вхід через неправильний пароль." + }, + "failedLogin2fa": { + "message": "Не вдалося виконати вхід через невдалу двоетапну перевірку." + }, + "exportedVault": { + "message": "Експортовано сховище." + }, + "exportedOrganizationVault": { + "message": "Експортовано сховище організації." + }, + "editedOrgSettings": { + "message": "Налаштування організації змінено." + }, + "createdItemId": { + "message": "Створено запис $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Змінений елемент $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Запис $ID$ перенесено до смітника.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Запис $ID$ переміщено до організації.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Переглянуто запис $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Переглянуто пароль для запису $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Переглянути приховане поле запису $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Переглянуто код безпеки запису $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Скопійовано пароль запису $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Скопійовано приховане поле запису $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Скопійовано код безпеки запису $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Виконано автозаповнення запису $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Створена збірка $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Змінена збірка $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Видалена збірка $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "$ID$ зміненої політики.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Створена група $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Змінена група $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Видалена група $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Вилучений користувач $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Створено вкладення для елемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Видалено вкладення для елемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Змінена збірка для елемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Запрошений користувач $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Підтверджений користувач $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Змінений користувач $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Змінені групи для користувача $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Незв'язаний SSO для користувача $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Створено організацію $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Додано організацію $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Вилучено організацію $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Отримано доступ до сховища організації $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Пристрій" + }, + "view": { + "message": "Перегляд" + }, + "invalidDateRange": { + "message": "Недійсний проміжок часу." + }, + "errorOccurred": { + "message": "Сталася помилка." + }, + "userAccess": { + "message": "Доступ користувачів" + }, + "userType": { + "message": "Тип користувача" + }, + "groupAccess": { + "message": "Доступ до групи" + }, + "groupAccessUserDesc": { + "message": "Змінюйте приналежність користувача до груп." + }, + "invitedUsers": { + "message": "Запрошений користувач." + }, + "resendInvitation": { + "message": "Повторно надіслати запрошення" + }, + "resendEmail": { + "message": "Надіслати лист повторно" + }, + "hasBeenReinvited": { + "message": "$USER$ було повторно запрошено.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Підтвердити" + }, + "confirmUser": { + "message": "Підтвердити користувача" + }, + "hasBeenConfirmed": { + "message": "$USER$ було підтверджено.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Підтвердити користувачів" + }, + "usersNeedConfirmed": { + "message": "У вас є користувачі, які підтвердили ваше запрошення, але все ще мають бути схвалені. Користувачі не матимуть доступу до організації доки ви їх не затвердите." + }, + "startDate": { + "message": "Дата початку" + }, + "endDate": { + "message": "Дата завершення" + }, + "verifyEmail": { + "message": "Підтвердити е-пошту" + }, + "verifyEmailDesc": { + "message": "Підтвердьте е-пошту вашого облікового запису для розблокування доступу до всіх можливостей." + }, + "verifyEmailFirst": { + "message": "Спершу вам необхідно підтвердити е-пошту вашого облікового запису." + }, + "checkInboxForVerification": { + "message": "Знайдіть посилання для підтвердження у своїх поштовій скриньці." + }, + "emailVerified": { + "message": "Вашу е-пошту було підтверджено." + }, + "emailVerifiedFailed": { + "message": "Неможливо підтвердити вашу е-пошту. Спробуйте надіслати нове повідомлення для підтвердження." + }, + "emailVerificationRequired": { + "message": "Необхідно підтвердити е-пошту" + }, + "emailVerificationRequiredDesc": { + "message": "Для використання цієї функції необхідно підтвердити електронну пошту." + }, + "updateBrowser": { + "message": "Оновити браузер" + }, + "updateBrowserDesc": { + "message": "Ви використовуєте непідтримуваний браузер. Веб сховище може працювати неправильно." + }, + "joinOrganization": { + "message": "Приєднатися до організації" + }, + "joinOrganizationDesc": { + "message": "Вас було запрошено приєднатися до зазначеної вгорі організації. Щоб підтвердити запрошення, вам необхідно увійти в обліковий запис Bitwarden, або створити його." + }, + "inviteAccepted": { + "message": "Запрошення прийнято" + }, + "inviteAcceptedDesc": { + "message": "Ви можете отримати доступ до цієї організації одразу після підтвердження адміністратором. Ми надішлемо вам електронне повідомлення, коли це станеться." + }, + "inviteAcceptFailed": { + "message": "Не вдалося прийняти запрошення. Попросіть адміністратора організації надіслати вам нове." + }, + "inviteAcceptFailedShort": { + "message": "Не вдається прийняти запрошення. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Запам'ятати е-пошту" + }, + "recoverAccountTwoStepDesc": { + "message": "Якщо вам не вдається отримати доступ до свого облікового запису з використанням звичайної двоетапної перевірки, ви можете скористатися своїм кодом відновлення, щоб вимкнути всіх провайдерів двоетапної перевірки для вашого облікового запису." + }, + "recoverAccountTwoStep": { + "message": "Відновити вхід з використанням двоетапної перевірки" + }, + "twoStepRecoverDisabled": { + "message": "Вхід з використанням двоетапної перевірки було вимкнено." + }, + "learnMore": { + "message": "Докладніше" + }, + "deleteRecoverDesc": { + "message": "Введіть свою адресу е-пошти внизу, щоб відновити і видалити обліковий запис." + }, + "deleteRecoverEmailSent": { + "message": "Якщо ваш обліковий запис існує, ми надіслали вам електронне повідомлення з подальшими інструкціями." + }, + "deleteRecoverConfirmDesc": { + "message": "Ви відправили запит видалення облікового запису Bitwarden. Натисніть на кнопку внизу для підтвердження." + }, + "myOrganization": { + "message": "Моя організація" + }, + "deleteOrganization": { + "message": "Видалити організацію" + }, + "deletingOrganizationContentWarning": { + "message": "Введіть головний пароль для підтвердження видалення $ORGANIZATION$ та всіх пов'язаних даних. Дані сховища в $ORGANIZATION$ включають:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "Облікові записи користувачів залишатимуться активними після видалення, але більше не будуть пов'язані з цією організацією." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Видалення $ORGANIZATION$ є остаточним і незворотнім.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Організацію видалено" + }, + "organizationDeletedDesc": { + "message": "Організацію і всі пов'язані дані було видалено." + }, + "organizationUpdated": { + "message": "Організацію оновлено" + }, + "taxInformation": { + "message": "Інформація про податки" + }, + "taxInformationDesc": { + "message": "Клієнтам у США необхідно вказувати поштовий індекс для забезпечення вимог податкового законодавства. Для інших країн надання ІПН (ПДВ/GST) та/або адреси є необов'язковим і ви можете вказувати ці дані для включення в рахунки." + }, + "billingPlan": { + "message": "Тарифний план", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Оновити тарифний план", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Перейдіть на передплату вищого рівня, вказавши інформацію внизу. Переконайтеся, що ваш обліковий запис має актуальні дані про спосіб оплати.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Рахунок #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Переглянути рахунок" + }, + "downloadInvoice": { + "message": "Завантажити рахунок" + }, + "verifyBankAccount": { + "message": "Підтвердьте банківський рахунок" + }, + "verifyBankAccountDesc": { + "message": "Ми зробили два мікро-депозити для вашого облікового запису (їх поява може тривати 1-2 робочих дні). Введіть ці суми для підтвердження вашого банківського рахунку." + }, + "verifyBankAccountInitialDesc": { + "message": "Оплата з банківського рахунку доступна лише для клієнтів США. Вам необхідно буде засвідчити свій банківський рахунок. Ми зробимо два мікро-депозити протягом наступних 1-2 днів. Введіть ці суми на сторінці оплати організації для підтвердження банківського рахунку." + }, + "verifyBankAccountFailureWarning": { + "message": "Неможливість засвідчення банківського рахунку призведе до втраченого платежу і ваша передплата залишиться неактивною." + }, + "verifiedBankAccount": { + "message": "Банківський рахунок було засвідчено." + }, + "bankAccount": { + "message": "Банківський рахунок" + }, + "amountX": { + "message": "Сума $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Номер відстеження", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Номер рахунку" + }, + "accountHolderName": { + "message": "Ім'я власника рахунку" + }, + "bankAccountType": { + "message": "Тип рахунку" + }, + "bankAccountTypeCompany": { + "message": "Компанія (Бізнес)" + }, + "bankAccountTypeIndividual": { + "message": "Індивідуальний (Особистий)" + }, + "enterInstallationId": { + "message": "Введіть ID вашої інсталяції" + }, + "limitSubscriptionDesc": { + "message": "Встановіть ліміт місць для вашої передплати. Після досягнення цього ліміту ви не зможете запрошувати нових користувачів." + }, + "maxSeatLimit": { + "message": "Максимальний ліміт місць (необов'язково)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Максимальна потенційна вартість місця" + }, + "addSeats": { + "message": "Додати місця", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Вилучити місця", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Якщо нові запрошені користувачі перевищать обмеження ваших місць, ви відразу отримаєте пропорційний рахунок для оплати за додаткових користувачів." + }, + "subscriptionUserSeats": { + "message": "Ваша передплата дозволяє всього $COUNT$ користувачів.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Обмеження передплати (Необов'язково)" + }, + "subscriptionSeats": { + "message": "Передплачені місця" + }, + "subscriptionUpdated": { + "message": "Передплату оновлено" + }, + "additionalOptions": { + "message": "Додаткові налаштування" + }, + "additionalOptionsDesc": { + "message": "Для отримання додаткової допомоги в керуванні вашою передплатою, будь ласка, зверніться до служби підтримки." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Якщо нові запрошені користувачі перевищать обмеження ваших місць, ви відразу отримаєте пропорційний рахунок для оплати за додаткових користувачів." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Якщо нові запрошені користувачі перевищать обмеження ваших місць, ви відразу отримаєте пропорційний рахунок для оплати за додаткових користувачів, доки не досягнуто вашого обмеження $MAX$ місць.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "Ви не можете запросити більше $COUNT$ користувачів без переходу на вищий тарифний план.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "Ви не можете запросити більше $COUNT$ користувачів без оновлення вашого тарифного плану. Будь ласка, зв'яжіться зі службою підтримки для оновлення.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Ваша передплата дозволяє всього $COUNT$ користувачів. Ваш тарифний план спонсорується та оплачується сторонньою організацією.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Ви не можете запросити понад $COUNT$ користувачів без збільшення передплачених місць.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Додається місць" + }, + "seatsToRemove": { + "message": "Вилучається місць" + }, + "seatsAddNote": { + "message": "Додавання місць користувачів призведе до змін суми вашого рахунку і одразу ж буде стягнуто плату згідно зазначеного способу. Перша оплата буде пропорційною залишку поточного циклу оплати." + }, + "seatsRemoveNote": { + "message": "Вилучення місць користувачів призведе до змін суми вашого рахунку, що буде пропорційно розділено у вигляді кредитів за наступний цикл оплати." + }, + "adjustedSeats": { + "message": "Змінено $AMOUNT$ місць користувачів.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Ключ оновлено" + }, + "updateKeyTitle": { + "message": "Оновити ключ" + }, + "updateEncryptionKey": { + "message": "Оновити ключ шифрування" + }, + "updateEncryptionKeyShortDesc": { + "message": "Зараз ви використовуєте застарілу схему шифрування." + }, + "updateEncryptionKeyDesc": { + "message": "Ми перейшли на більші ключі шифрування, що гарантує кращу безпеку і доступ до новіших функцій. Оновлення вашого ключа шифрування є швидким і простим процесом. Просто введіть свій головний пароль внизу. Це оновлення невдовзі стане обов'язковою вимогою." + }, + "updateEncryptionKeyWarning": { + "message": "Після оновлення вашого ключа шифрування вам необхідно вийти з системи і потім виконати повторний вхід у всіх програмах Bitwarden, які ви використовуєте. Збій при виході та повторному вході може призвести до пошкодження даних. Ми спробуємо завершити ваші сеанси автоматично, однак, цей процес може відбутися із затримкою." + }, + "updateEncryptionKeyExportWarning": { + "message": "Будь-які зашифровані експортування, які ви зберегли, також стануть недійсними." + }, + "subscription": { + "message": "Передплата" + }, + "loading": { + "message": "Завантаження" + }, + "upgrade": { + "message": "Оновити" + }, + "upgradeOrganization": { + "message": "Оновити організацію" + }, + "upgradeOrganizationDesc": { + "message": "Ця функція недоступна для безплатних організацій. Перемкніться на платний тарифний план для розблокування додаткових можливостей." + }, + "createOrganizationStep1": { + "message": "Створити організацію: Крок 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Перед створенням вашої організації, вам спочатку необхідно створити безплатний особистий обліковий запис." + }, + "refunded": { + "message": "Відшкодовано" + }, + "nothingSelected": { + "message": "Ви нічого не обрали." + }, + "acceptPolicies": { + "message": "Позначивши цей прапорець, ви погоджуєтеся з:" + }, + "acceptPoliciesError": { + "message": "Умови користування та політика приватності не погоджені." + }, + "termsOfService": { + "message": "Умови користування" + }, + "privacyPolicy": { + "message": "Політику приватності" + }, + "filters": { + "message": "Фільтри" + }, + "vaultTimeout": { + "message": "Час очікування сховища" + }, + "vaultTimeoutDesc": { + "message": "Оберіть дію, яка виконається після завершення часу очікування вашого сховища." + }, + "oneMinute": { + "message": "1 хвилина" + }, + "fiveMinutes": { + "message": "5 хвилин" + }, + "fifteenMinutes": { + "message": "15 хвилин" + }, + "thirtyMinutes": { + "message": "30 хвилин" + }, + "oneHour": { + "message": "1 година" + }, + "fourHours": { + "message": "4 години" + }, + "onRefresh": { + "message": "Перезавантаження сторінки" + }, + "dateUpdated": { + "message": "Оновлено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль оновлено", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Організацію вимкнено." + }, + "licenseIsExpired": { + "message": "Термін дії ліцензії завершився." + }, + "updatedUsers": { + "message": "Оновлені користувачі" + }, + "selected": { + "message": "Вибрано" + }, + "ownership": { + "message": "Власник" + }, + "whoOwnsThisItem": { + "message": "Хто є власником цього елемента?" + }, + "strong": { + "message": "Надійний", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Хороший", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Слабкий", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Дуже слабкий", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слабкий головний пароль" + }, + "weakMasterPasswordDesc": { + "message": "Обраний вами головний пароль є слабким. Для належного захисту свого облікового запису Bitwarden, вам слід використовувати надійний головний пароль (або парольну фразу). Ви впевнені, що хочете використати цей пароль?" + }, + "rotateAccountEncKey": { + "message": "Також повернути ключ шифрування мого облікового запису" + }, + "rotateEncKeyTitle": { + "message": "Повернути ключ шифрування" + }, + "rotateEncKeyConfirmation": { + "message": "Ви справді хочете повернути ключ шифрування облікового запису?" + }, + "attachmentsNeedFix": { + "message": "Цей елемент має старі вкладені файли, які необхідно виправити." + }, + "attachmentFixDesc": { + "message": "Цей старий вкладений файл необхідно виправити. Натисніть, щоб дізнатися більше." + }, + "fix": { + "message": "Виправити", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "У вашому сховищі є старі вкладені файли, які необхідно виправити перед тим, як повертати ключ шифрування облікового запису." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "Безплатно", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "Ключ API" + }, + "apiKeyDesc": { + "message": "Ваш ключ API може бути використаний для авторизації публічного API Bitwarden." + }, + "apiKeyRotateDesc": { + "message": "Поворот ключа API спричинить анулювання попереднього ключа. Ви можете повернути свій ключ API, якщо вважаєте, що поточний ключ більше не є безпечним для використання." + }, + "apiKeyWarning": { + "message": "Ваш ключ API має повний доступ до організації. Він повинен зберігатися в секреті." + }, + "userApiKeyDesc": { + "message": "Ваш ключ API може бути використаний для авторизації в Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Ваш ключ API є альтернативним засобом перевірки. Його слід зберігати в таємниці." + }, + "oauth2ClientCredentials": { + "message": "Облікові дані клієнта OAuth 2.0", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "Переглянути ключ API" + }, + "rotateApiKey": { + "message": "Повернути ключ API" + }, + "selectOneCollection": { + "message": "Ви повинні обрати принаймні одну збірку." + }, + "couldNotChargeCardPayInvoice": { + "message": "Нам не вдалося виконати оплату з вашої картки. Будь ласка, перегляньте і проведіть оплату за рахунком, вказаним внизу." + }, + "inAppPurchase": { + "message": "Покупка в додатку" + }, + "cannotPerformInAppPurchase": { + "message": "Ви не можете виконати цю дію під час використання способу оплати покупки в додатку." + }, + "manageSubscriptionFromStore": { + "message": "Ви повинні керувати своєю передплатою з магазину, в якому виконали покупку в додатку." + }, + "minLength": { + "message": "Мінімальна довжина" + }, + "clone": { + "message": "Клонувати" + }, + "masterPassPolicyDesc": { + "message": "Встановіть мінімальні вимоги надійності головного пароля." + }, + "twoStepLoginPolicyDesc": { + "message": "Зобов'язувати користувачів встановлювати двоетапну перевірку в їхніх особистих облікових записах." + }, + "twoStepLoginPolicyWarning": { + "message": "Учасники організації, які не є власниками, чи адміністратори, в яких не увімкнено двоетапну перевірку для їхніх особистих облікових записів, будуть вилучені з організації та проінформовані поштовим повідомленням." + }, + "twoStepLoginPolicyUserWarning": { + "message": "Ви включені до організації, яка зобов'язує використання двоетапної перевірки у вашому обліковому записі. Якщо ви вимкнете всі способи двоетапної перевірки, вас буде автоматично вилучено з цієї організації." + }, + "passwordGeneratorPolicyDesc": { + "message": "Встановіть мінімальні вимоги для параметрів генерування пароля." + }, + "passwordGeneratorPolicyInEffect": { + "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": "Ваш новий головний пароль не відповідає вимогам політики." + }, + "minimumNumberOfWords": { + "message": "Мінімальна кількість слів" + }, + "defaultType": { + "message": "Стандартний тип" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Пошук у смітнику" + }, + "permanentlyDelete": { + "message": "Остаточно видалити" + }, + "permanentlyDeleteSelected": { + "message": "Остаточно видалити вибрані" + }, + "permanentlyDeleteItem": { + "message": "Остаточно видалити запис" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Ви дійсно хочете остаточно видалити цей запис?" + }, + "permanentlyDeletedItem": { + "message": "Запис остаточно видалено" + }, + "permanentlyDeletedItems": { + "message": "Записи остаточно видалено" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "Ви вибрали $COUNT$ записів для остаточного видалення. Ви справді хочете остаточно видалити всі ці записи?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Запис $ID$ остаточно видалено.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Відновити" + }, + "restoreSelected": { + "message": "Відновити вибрані" + }, + "restoreItem": { + "message": "Відновити запис" + }, + "restoredItem": { + "message": "Запис відновлено" + }, + "restoredItems": { + "message": "Записи відновлено" + }, + "restoreItemConfirmation": { + "message": "Ви дійсно хочете відновити цей запис?" + }, + "restoreItems": { + "message": "Відновити записи" + }, + "restoreSelectedItemsDesc": { + "message": "Ви вибрали $COUNT$ записів для відновлення. Ви справді хочете відновити всі ці записи?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Запис $ID$ відновлено.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Вихід скасує всі права доступу до вашого сховища і вимагатиме авторизації після завершення часу очікування. Ви дійсно хочете використати цей параметр?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Підтвердження дії часу очікування" + }, + "hidePasswords": { + "message": "Приховати паролі" + }, + "countryPostalCodeRequiredDesc": { + "message": "Нам необхідна ця інформація лише для розрахунку податку на продажі та фінансових звітів." + }, + "includeVAT": { + "message": "Включити інформацію про ПДВ/GST (необов'язково)" + }, + "taxIdNumber": { + "message": "ІПН/GST" + }, + "taxInfoUpdated": { + "message": "Податкову інформацію оновлено." + }, + "setMasterPassword": { + "message": "Встановити головний пароль" + }, + "ssoCompleteRegistration": { + "message": "Щоб завершити налаштування входу з SSO, встановіть головний пароль для доступу і захисту сховища." + }, + "identifier": { + "message": "Ідентифікатор" + }, + "organizationIdentifier": { + "message": "Ідентифікатор організації" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Виконуйте вхід з використанням порталу єдиного входу вашої організації. Для початку введіть ідентифікатор вашої організації." + }, + "enterpriseSingleSignOn": { + "message": "Єдиний корпоративний вхід (SSO)" + }, + "ssoHandOff": { + "message": "Тепер ви можете закрити цю вкладку і продовжити в розширенні." + }, + "includeAllTeamsFeatures": { + "message": "Усі функції команд, плюс:" + }, + "includeSsoAuthentication": { + "message": "SSO автентифікація через SAML2.0 та OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Політики організації" + }, + "ssoValidationFailed": { + "message": "Збій перевірки SSO" + }, + "ssoIdentifierRequired": { + "message": "Потрібен ідентифікатор організації." + }, + "unlinkSso": { + "message": "Від'єднати SSO" + }, + "unlinkSsoConfirmation": { + "message": "Ви справді хочете від'єднати SSO для цієї організації?" + }, + "linkSso": { + "message": "Під'єднати SSO" + }, + "singleOrg": { + "message": "Єдина організація" + }, + "singleOrgDesc": { + "message": "Заборонити користувачам приєднуватися до будь-яких інших організацій." + }, + "singleOrgBlockCreateMessage": { + "message": "Ваша організація має політику, що не дозволяє вам приєднуватися до більш, ніж однієї організації. Будь ласка, зв'яжіться з адміністратором вашої організації, або увійдіть з іншим обліковим записом Bitwarden." + }, + "singleOrgPolicyWarning": { + "message": "Учасники організації, які не є власниками чи адміністраторами, але вже є учасниками іншої організації, будуть вилучені з вашої організації." + }, + "requireSso": { + "message": "Авторизація через єдиний вхід (SSO)" + }, + "requireSsoPolicyDesc": { + "message": "Вимагати від користувачів входити в систему через єдиний вхід (SSO) компанії." + }, + "prerequisite": { + "message": "Передумови" + }, + "requireSsoPolicyReq": { + "message": "Для активації цієї політики необхідно увімкнути політику єдиної організації компанії." + }, + "requireSsoPolicyReqError": { + "message": "Політику єдиної організації компанії не увімкнено." + }, + "requireSsoExemption": { + "message": "Власники організації та адміністратори звільняються від дотримання цієї політики." + }, + "sendTypeFile": { + "message": "Файл" + }, + "sendTypeText": { + "message": "Текст" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "Видалити відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "Ви дійсно хочете видалити це відправлення?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "Який це тип відправлення?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "Поточна кількість доступів" + }, + "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." + }, + "disabled": { + "message": "Вимкнено" + }, + "sendLink": { + "message": "Посилання на відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "Копіювати посилання відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Вилучити пароль" + }, + "removedPassword": { + "message": "Пароль вилучено" + }, + "removePasswordConfirmation": { + "message": "Ви дійсно хочете вилучити пароль?" + }, + "hideEmail": { + "message": "Приховувати мою адресу електронної пошти від отримувачів." + }, + "disableThisSend": { + "message": "Деактивувати це відправлення для скасування доступу до нього.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "Усі відправлення" + }, + "maxAccessCountReached": { + "message": "Досягнуто максимальну кількість доступів", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Очікується видалення" + }, + "expired": { + "message": "Термін дії завершився" + }, + "searchSends": { + "message": "Пошук відправлень", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "Це відправлення захищено паролем. Введіть пароль внизу для продовження.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Не знаєте пароль? Попросіть його у відправника для отримання доступу.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "Це відправлення типово приховане. Ви можете змінити його видимість кнопкою нижче.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Завантажити файл" + }, + "sendAccessUnavailable": { + "message": "Відправлення, до якого ви намагаєтесь отримати доступ, не існує, або більше недоступне.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "Не вдається знайти файл, пов'язаний з цим відправленням.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "У списку немає відправлень.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Екстрений доступ" + }, + "emergencyAccessDesc": { + "message": "Надавайте екстрений доступ довіреним контактам і керуйте ним. Довірені контакти можуть отримати доступ для перегляду чи привласнення вашого облікового запису в екстрених ситуаціях. Відвідайте нашу сторінку допомоги для детального ознайомлення про те, як працює спільний доступ нульового рівня." + }, + "emergencyAccessOwnerWarning": { + "message": "Ви володієте однією чи більше організаціями. Якщо ви надасте доступ для передачі власності екстреним контактам, то вони зможуть використовувати усі ваші повноваження власника після передачі." + }, + "trustedEmergencyContacts": { + "message": "Довірені екстрені контакти" + }, + "noTrustedContacts": { + "message": "Ви ще не додали жодного екстреного контакту. Запросіть довірений контакт, щоб почати." + }, + "addEmergencyContact": { + "message": "Додати екстрений контакт" + }, + "designatedEmergencyContacts": { + "message": "Визначено як екстрений контакт" + }, + "noGrantedAccess": { + "message": "Ви ще не були призначені екстреним контактом для когось." + }, + "inviteEmergencyContact": { + "message": "Запросити екстрений контакт" + }, + "editEmergencyContact": { + "message": "Редагувати екстрений контакт" + }, + "inviteEmergencyContactDesc": { + "message": "Запросіть новий екстрений контакт, ввівши нижче адресу е-пошти його облікового запису Bitwarden. Якщо користувач ще не має облікового запису Bitwarden, йому буде запропоновано зареєструватися." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Ініційовано екстрений доступ" + }, + "emergencyAccessRecoveryApproved": { + "message": "Екстрений доступ схвалено" + }, + "viewDesc": { + "message": "Може переглядати усі записи у вашому сховищі." + }, + "takeover": { + "message": "Передача власності" + }, + "takeoverDesc": { + "message": "Може скидати пароль вашого облікового запису." + }, + "waitTime": { + "message": "Час очікування" + }, + "waitTimeDesc": { + "message": "Час, після якого автоматично надається доступ." + }, + "oneDay": { + "message": "1 день" + }, + "days": { + "message": "$DAYS$ днів", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Запрошений користувач." + }, + "acceptEmergencyAccess": { + "message": "Вас було запрошено стати екстреним контактом для користувача, зазначеного вгорі. Щоб прийняти запрошення, вам необхідно увійти чи створити новий обліковий запис Bitwarden." + }, + "emergencyInviteAcceptFailed": { + "message": "Неможливо прийняти запрошення. Попросіть користувача надіслати нове запрошення." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Не вдається прийняти запрошення. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "Ви отримаєте доступ до екстрених можливостей для цього користувача після підтвердження ваших облікових даних. Ми надішлемо вам електронний лист, коли це станеться." + }, + "requestAccess": { + "message": "Запитати доступ" + }, + "requestAccessConfirmation": { + "message": "Ви дійсно хочете запитати екстрений доступ? Вам надасться доступ через $WAITTIME$ днів, або коли користувач вручну схвалить запит.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Для користувача $USER$ запитано екстрений доступ. Ми повідомимо вас електронною поштою, коли можна буде продовжити.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Схвалити" + }, + "reject": { + "message": "Відхилити" + }, + "approveAccessConfirmation": { + "message": "Ви впевнені, що хочете схвалити екстрений доступ? Це дозволить користувачу $USER$ $ACTION$ ваш обліковий запис.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Екстрений доступ схвалено." + }, + "emergencyRejected": { + "message": "Екстрений доступ відхилено" + }, + "passwordResetFor": { + "message": "Пароль для користувача $USER$ скинуто. Тепер ви можете увійти використовуючи новий пароль.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Особиста власність" + }, + "personalOwnershipPolicyDesc": { + "message": "Вимагати від користувачів зберігати записи до організації, вилучивши можливість особистої власності." + }, + "personalOwnershipExemption": { + "message": "Власники організації та адміністратори звільняються від дотримання цієї політики." + }, + "personalOwnershipSubmitError": { + "message": "У зв'язку з корпоративною політикою, вам не дозволено зберігати записи до особистого сховища. Змініть налаштування власності на організацію та виберіть серед доступних збірок." + }, + "disableSend": { + "message": "Вимкнути відправлення" + }, + "disableSendPolicyDesc": { + "message": "Не дозволяти користувачам створювати чи змінювати відправлення Bitwarden. Видалення наявних відправлень все ще дозволяється.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "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." + }, + "sendOptions": { + "message": "Налаштування відправлень", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Встановити налаштування для створення та редагування відправлень.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Користувачі організації, які можуть керувати політиками організації, звільняються від дотримання цієї політики." + }, + "disableHideEmail": { + "message": "Не дозволяти користувачам приховувати свою адресу електронної пошти від отримувачів під час створення чи редагування відправлень.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "Наразі діють такі політики організації:" + }, + "sendDisableHideEmailInEffect": { + "message": "Користувачам не дозволяється приховувати свою адресу електронної пошти від отримувачів під час створення чи редагування відправлень.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Змінено політику $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Ціна тарифного плану" + }, + "estimatedTax": { + "message": "Приблизний податок" + }, + "custom": { + "message": "Спеціальний" + }, + "customDesc": { + "message": "Дозволяє детальніший контроль дозволів користувача для розширеної конфігурації." + }, + "permissions": { + "message": "Дозволи" + }, + "accessEventLogs": { + "message": "Доступ до журналів подій" + }, + "accessImportExport": { + "message": "Доступ до імпорту й експорту" + }, + "accessReports": { + "message": "Доступ до звітів" + }, + "missingPermissions": { + "message": "У вас недостатньо повноважень для виконання цієї дії." + }, + "manageAllCollections": { + "message": "Керування всіма збірками" + }, + "createNewCollections": { + "message": "Створювати нові збірки" + }, + "editAnyCollection": { + "message": "Редагувати будь-яку збірку" + }, + "deleteAnyCollection": { + "message": "Видаляти будь-яку збірку" + }, + "manageAssignedCollections": { + "message": "Керування призначеними збірками" + }, + "editAssignedCollections": { + "message": "Редагувати призначені колекції" + }, + "deleteAssignedCollections": { + "message": "Видаляти призначені колекції" + }, + "manageGroups": { + "message": "Керування групами" + }, + "managePolicies": { + "message": "Керування політиками" + }, + "manageSso": { + "message": "Керування SSO" + }, + "manageUsers": { + "message": "Керування користувачами" + }, + "manageResetPassword": { + "message": "Керувати скиданням пароля" + }, + "disableRequiredError": { + "message": "Перш ніж вимкнути цю політику, ви повинні вручну вимкнути політику $POLICYNAME$.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "Політика організації впливає на ваші параметри власності." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Політика організації вимкнула імпортування елементів до вашого особистого сховища." + }, + "personalOwnershipCheckboxDesc": { + "message": "Вимкнути особисту власність для користувачів організації" + }, + "textHiddenByDefault": { + "message": "При доступі до відправлення типово приховувати текст", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "message": "Опис цього відправлення.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст, який ви хочете відправити." + }, + "sendFileDesc": { + "message": "Файл, який ви хочете відправити." + }, + "copySendLinkOnSave": { + "message": "Копіювати посилання, щоб поділитися відправленням після збереження." + }, + "sendLinkLabel": { + "message": "Посилання на відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Відправлення Bitwarden легко та надійно передає вразливу, тимчасову інформацію іншим.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Дізнайтеся більше про", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Обмінюйтесь текстом чи файлами безпосередньо з іншими." + }, + "sendVaultCardLearnMore": { + "message": "Дізнайтеся більше", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "подивіться", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "як це працює", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "або", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "спробуйте", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "або", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "зареєструйтеся", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "щоб спробувати.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Користувач Bitwarden $USER_IDENTIFIER$ ділиться з вами таким", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "Користувач Bitwarden, який створив це відправлення, вирішив приховати свою адресу електронної пошти. Вам слід упевнитися в надійності джерела цього посилання перед його використанням чи завантаженням вмісту.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "Вказано недійсний термін дії." + }, + "deletionDateIsInvalid": { + "message": "Вказано недійсну дату видалення." + }, + "expirationDateAndTimeRequired": { + "message": "Необхідно вказати час і дату терміну дії." + }, + "deletionDateAndTimeRequired": { + "message": "Необхідно вказати час і дату видалення." + }, + "dateParsingError": { + "message": "При збереженні дат видалення і терміну дії виникла помилка." + }, + "webAuthnFallbackMsg": { + "message": "Щоб засвідчити ваш 2FA, натисніть кнопку внизу." + }, + "webAuthnAuthenticate": { + "message": "Авторизація WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn не підтримується в цьому браузері." + }, + "webAuthnSuccess": { + "message": "WebAuthn успішно підтверджено! Ви можете закрити цю вкладку." + }, + "hintEqualsPassword": { + "message": "Підказка для пароля не може бути такою самою, як ваш пароль." + }, + "enrollPasswordReset": { + "message": "Подати запит на скидання пароля" + }, + "enrolledPasswordReset": { + "message": "Запит на скидання пароля подано" + }, + "withdrawPasswordReset": { + "message": "Відмовитись від скидання пароля" + }, + "enrollPasswordResetSuccess": { + "message": "Запит успішно подано!" + }, + "withdrawPasswordResetSuccess": { + "message": "Відмову успішно прийнято!" + }, + "eventEnrollPasswordReset": { + "message": "Користувач $ID$ подав запит на допомогу зі скиданням пароля.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "Користувач $ID$ відмовився від допомоги зі скиданням пароля.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Головний пароль для користувача $ID$ скинуто.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Скинути SSO-посилання для користувача $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ вперше виконує вхід з використанням SSO", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Скинути пароль" + }, + "resetPasswordLoggedOutWarning": { + "message": "Продовжуючи, користувач $NAME$ вийде зі свого поточного сеансу і йому необхідно буде виконати вхід знову. Активні сеанси на інших пристроях можуть залишатися активними протягом години.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "цей користувач" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "Одна або декілька політик організації вимагають дотримання таких вимог для головного пароля:" + }, + "resetPasswordSuccess": { + "message": "Пароль успішно скинуто!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Розгортання дозволить адміністраторам організації змінювати ваш головний пароль. Ви дійсно хочете розгорнути?" + }, + "resetPasswordPolicy": { + "message": "Скидання головного пароля" + }, + "resetPasswordPolicyDescription": { + "message": "Дозволити адміністраторам організації скидати головний пароль користувачів." + }, + "resetPasswordPolicyWarning": { + "message": "Користувачі в організації повинні виконати самостійне розгортання, або отримати автоматичне розгортання, перш ніж адміністратори зможуть скинути їхній пароль." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматичне розгортання" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "Усі користувачі отримають автоматичне розгортання на скидання пароля одразу після схвалення запрошення та не зможуть його відкликати." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Вже наявні користувачі організації не отримають активного розгортання на скидання пароля. Їм необхідно буде виконати самостійне розгортання, перш ніж адміністратори зможуть скинути їхній пароль." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Вимагати автоматичне розгортання нових користувачів" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Ця організація має корпоративну політику, яка автоматично розгортає вас на скидання пароля. Розгортання дозволятиме адміністраторам організації змінювати ваш головний пароль." + }, + "resetPasswordOrgKeysError": { + "message": "Порожня відповідь на ключі організації" + }, + "resetPasswordDetailsError": { + "message": "Порожня відповідь на скидання пароля" + }, + "trashCleanupWarning": { + "message": "Записи, що знаходяться в смітнику понад 30 днів, автоматично видалятимуться." + }, + "trashCleanupWarningSelfHosted": { + "message": "Записи, що знаходяться в смітнику деякий час, автоматично видалятимуться." + }, + "passwordPrompt": { + "message": "Повторний запит головного пароля" + }, + "passwordConfirmation": { + "message": "Підтвердження головного пароля" + }, + "passwordConfirmationDesc": { + "message": "Ця дія захищена. Щоб продовжити, повторно введіть головний пароль." + }, + "reinviteSelected": { + "message": "Повторно надіслати запрошення" + }, + "noSelectedUsersApplicable": { + "message": "Ця дія не застосовується для жодного з вибраних користувачів." + }, + "removeUsersWarning": { + "message": "Ви дійсно хочете вилучити зазначених користувачів? Цей процес може тривати кілька секунд і його неможливо перервати чи скасувати." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Оберіть тему для вашого вебсховища." + }, + "themeSystem": { + "message": "Використовувати системну тему" + }, + "themeDark": { + "message": "Темна" + }, + "themeLight": { + "message": "Світла" + }, + "confirmSelected": { + "message": "Підтвердити вибір" + }, + "bulkConfirmStatus": { + "message": "Стан масової дії" + }, + "bulkConfirmMessage": { + "message": "Успішно підтверджено." + }, + "bulkReinviteMessage": { + "message": "Повторне запрошення успішне." + }, + "bulkRemovedMessage": { + "message": "Успішно вилучено" + }, + "bulkFilteredMessage": { + "message": "Виключено, не застосовується для цієї дії." + }, + "fingerprint": { + "message": "Цифровий відбиток" + }, + "removeUsers": { + "message": "Вилучити користувачів" + }, + "error": { + "message": "Помилка" + }, + "resetPasswordManageUsers": { + "message": "Керування користувачами повинно також бути увімкнено з дозволом Керувати скиданням пароля" + }, + "setupProvider": { + "message": "Налаштування постачальника" + }, + "setupProviderLoginDesc": { + "message": "Вас запрошено налаштувати нового постачальника. Для продовження вам необхідно увійти чи створити новий обліковий запис Bitwarden." + }, + "setupProviderDesc": { + "message": "Будь ласка, введіть наведені нижче подробиці, щоб завершити налаштування постачальника. Зверніться до служби підтримки, якщо у вас виникли будь-які запитання." + }, + "providerName": { + "message": "Назва постачальника" + }, + "providerSetup": { + "message": "Постачальника було налаштовано." + }, + "clients": { + "message": "Клієнти" + }, + "providerAdmin": { + "message": "Адміністратор постачальника" + }, + "providerAdminDesc": { + "message": "Користувач з найвищими привілеями, який може керувати усіма аспектами вашого постачальника, а також отримувати доступ до керування організаціями клієнтів." + }, + "serviceUser": { + "message": "Сервісний користувач" + }, + "serviceUserDesc": { + "message": "Сервісні користувачі можуть отримувати доступ та керувати всіма організаціями клієнтів." + }, + "providerInviteUserDesc": { + "message": "Запросіть нового користувача до вашого постачальника, ввівши адресу е-пошти його облікового запису Bitwarden. Якщо він ще не має облікового запису, він отримає запит на його створення." + }, + "joinProvider": { + "message": "Приєднатися до постачальника" + }, + "joinProviderDesc": { + "message": "Вас було запрошено приєднатися до зазначеного вгорі постачальника. Щоб підтвердити запрошення, вам необхідно увійти в обліковий запис Bitwarden, або створити його." + }, + "providerInviteAcceptFailed": { + "message": "Не вдалося прийняти запрошення. Попросіть адміністратора постачальника надіслати вам нове." + }, + "providerInviteAcceptedDesc": { + "message": "Ви можете отримати доступ до цього постачальника одразу після підтвердження адміністратором. Ми надішлемо вам електронне повідомлення, коли це станеться." + }, + "providerUsersNeedConfirmed": { + "message": "У вас є користувачі, які підтвердили ваше запрошення, але все ще мають бути схвалені. Користувачі не матимуть доступу до постачальника доки ви їх не затвердите." + }, + "provider": { + "message": "Постачальник" + }, + "newClientOrganization": { + "message": "Нова організація клієнта" + }, + "newClientOrganizationDesc": { + "message": "Створіть нову організацію клієнта, яка буде пов'язана з вами, як постачальником. Ви зможете отримати доступ та керувати цією організацією." + }, + "addExistingOrganization": { + "message": "Додати наявну організацію" + }, + "myProvider": { + "message": "Мій постачальник" + }, + "addOrganizationConfirmation": { + "message": "Ви дійсно хочете додати $ORGANIZATION$ як клієнт для $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Організацію було успішно додано до постачальника" + }, + "accessingUsingProvider": { + "message": "Доступ до організації з використанням постачальника $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Постачальника вимкнено." + }, + "providerUpdated": { + "message": "Постачальника оновлено" + }, + "yourProviderIs": { + "message": "Ваш постачальник $PROVIDER$. Він має адміністраторські та платіжні повноваження для вашої організації.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "Організацію $ORGANIZATION$ було від'єднано від вашого постачальника.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Ви дійсно хочете від'єднати цю організацію? Організація продовжить існувати, але більше не керуватиметься провайдером." + }, + "add": { + "message": "Додати" + }, + "updatedMasterPassword": { + "message": "Головний пароль оновлено" + }, + "updateMasterPassword": { + "message": "Оновити головний пароль" + }, + "updateMasterPasswordWarning": { + "message": "Ваш головний пароль нещодавно був змінений адміністратором організації. Щоб отримати доступ до сховища, ви повинні оновити свій головний пароль зараз. Продовживши, ви вийдете з поточного сеансу, після чого необхідно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години." + }, + "masterPasswordInvalidWarning": { + "message": "Ваш головний пароль не відповідає вимогам політики цієї організації. Щоб приєднатися до організації, ви повинні оновити свій головний пароль зараз. Продовживши, ви вийдете з поточного сеансу, після чого необхідно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години." + }, + "maximumVaultTimeout": { + "message": "Час очікування сховища" + }, + "maximumVaultTimeoutDesc": { + "message": "Налаштувати максимальний час очікування сховища для всіх користувачів." + }, + "maximumVaultTimeoutLabel": { + "message": "Максимальний час очікування сховища" + }, + "invalidMaximumVaultTimeout": { + "message": "Недійсний максимальний час очікування сховища." + }, + "hours": { + "message": "Годин" + }, + "minutes": { + "message": "Хвилин" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Політики вашої організації впливають на час очікування сховища. Максимальний дозволений час очікування сховища $HOURS$ годин, $MINUTES$ хвилин", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "customVaultTimeout": { + "message": "Власний час очікування сховища" + }, + "vaultTimeoutToLarge": { + "message": "Час очікування сховища перевищує обмеження, встановлене вашою організацією." + }, + "disablePersonalVaultExport": { + "message": "Вимкнути експорт особистого сховища" + }, + "disablePersonalVaultExportDesc": { + "message": "Забороняє користувачам експортувати їхні особисті дані сховища." + }, + "vaultExportDisabled": { + "message": "Експорт сховища вимкнено" + }, + "personalVaultExportPolicyInEffect": { + "message": "Одна чи декілька організаційних політик не дозволяють вам експортувати особисте сховище." + }, + "selectType": { + "message": "Виберіть тип SSO" + }, + "type": { + "message": "Тип" + }, + "openIdConnectConfig": { + "message": "Конфігурація з'єднання OpenID" + }, + "samlSpConfig": { + "message": "Конфігурація постачальника послуг SAML" + }, + "samlIdpConfig": { + "message": "Конфігурація ідентифікації постачальника SAML" + }, + "callbackPath": { + "message": "Шлях до зворотного виклику" + }, + "signedOutCallbackPath": { + "message": "Вихід зі шляху зворотного виклику" + }, + "authority": { + "message": "Установа" + }, + "clientId": { + "message": "ID клієнта" + }, + "clientSecret": { + "message": "Секретний ключ клієнта" + }, + "metadataAddress": { + "message": "Адреса метаданих" + }, + "oidcRedirectBehavior": { + "message": "Поведінка переспрямування OIDC" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Отримувати запити від інформації користувача кінцевої точки" + }, + "additionalScopes": { + "message": "Власні області" + }, + "additionalUserIdClaimTypes": { + "message": "Власні типи запитів ID користувача" + }, + "additionalEmailClaimTypes": { + "message": "Типи запитів е-пошти" + }, + "additionalNameClaimTypes": { + "message": "Типи запитів власного імені" + }, + "acrValues": { + "message": "Запитані значення посилання класу контексту автентифікації" + }, + "expectedReturnAcrValue": { + "message": "Очікувалось значення запиту \"acr\" у відповіді" + }, + "spEntityId": { + "message": "ID об'єкта SP" + }, + "spMetadataUrl": { + "message": "URL метаданих SAML 2.0" + }, + "spAcsUrl": { + "message": "URL-адреса служби підтвердження клієнтів (ACS)" + }, + "spNameIdFormat": { + "message": "Формат ID назви" + }, + "spOutboundSigningAlgorithm": { + "message": "Алгоритм вихідного підпису" + }, + "spSigningBehavior": { + "message": "Поведінка при підписанні" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Мінімальний алгоритм вхідного підписання" + }, + "spWantAssertionsSigned": { + "message": "Очікується підпис підтвердження" + }, + "spValidateCertificates": { + "message": "Перевірка сертифікатів" + }, + "idpEntityId": { + "message": "ID об'єкта" + }, + "idpBindingType": { + "message": "Тип пов'язування" + }, + "idpSingleSignOnServiceUrl": { + "message": "URL служби єдиного входу" + }, + "idpSingleLogoutServiceUrl": { + "message": "URL служби єдиного виходу" + }, + "idpX509PublicCert": { + "message": "Публічний сертифікат X509" + }, + "idpOutboundSigningAlgorithm": { + "message": "Алгоритм вихідного підпису" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Дозволити небажану відповідь авторизації" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Дозволити вихідні запити для виходу" + }, + "idpSignAuthenticationRequests": { + "message": "Підписувати запити авторизації" + }, + "ssoSettingsSaved": { + "message": "Конфігурацію єдиного входу збережено." + }, + "sponsoredFamilies": { + "message": "Bitwarden Families безплатно" + }, + "sponsoredFamiliesEligible": { + "message": "Ви та ваша сім'я маєте право на Bitwarden Families безплатно. Активуйте доступ з особистою електронною адресою, щоб зберігати свої дані захищеними навіть коли ви не на роботі." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Активуйте сьогодні безплатний тарифний план Bitwarden Families, щоб зберігати свої дані захищеними, навіть коли ви не на роботі." + }, + "sponsoredFamiliesInclude": { + "message": "Тариф Bitwarden Families включає" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Преміум-доступ до 6 користувачів" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Спільні збірки для обміну паролями" + }, + "badToken": { + "message": "Посилання більше не дійсне. Попросіть спонсора повторно надіслати пропозицію." + }, + "reclaimedFreePlan": { + "message": "Безплатний тариф відновлено" + }, + "redeem": { + "message": "Активувати" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Оберіть організацію, від якої ви бажаєте бути спонсорованими" + }, + "familiesSponsoringOrgSelect": { + "message": "Яку безплатну сімейну пропозицію ви бажаєте активувати?" + }, + "sponsoredFamiliesEmail": { + "message": "Введіть особисту електронну адресу для активації Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "Якщо ви покинете цю спонсоровану організацію, ваш доступ до тарифного плану Bitwarden Families завершиться в кінці оплаченого періоду." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Прийняти пропозицію для наявної організації або створити нову сімейну організацію." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "Вам запропоновано безплатний тарифний план Bitwarden Families від організації. Щоб продовжити, вам необхідно увійти в обліковий запис, на який вам прийшла пропозиція." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Не вдалося прийняти пропозицію. Будь ласка, повторно надішліть лист з пропозицією зі свого корпоративного облікового запису та спробуйте знову." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Не вдалося прийняти пропозицію. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Прийняти безплатно Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Пропозицію безплатного доступу Bitwarden Families успішно активовано" + }, + "redeemed": { + "message": "Активовано" + }, + "redeemedAccount": { + "message": "Обліковий запис активовано" + }, + "revokeAccount": { + "message": "Відкликати обліковий запис $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Повторно надіслати лист про спонсорування до $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Безплатний сімейний план" + }, + "redeemNow": { + "message": "Активувати зараз" + }, + "recipient": { + "message": "Отримувач" + }, + "removeSponsorship": { + "message": "Вилучити спонсорування" + }, + "removeSponsorshipConfirmation": { + "message": "Після вилучення спонсорування, ви будете відповідальні за цю передплату та пов'язані рахунки. Ви дійсно хочете продовжити?" + }, + "sponsorshipCreated": { + "message": "Спонсорування створено" + }, + "revoke": { + "message": "Відкликати" + }, + "emailSent": { + "message": "Лист надіслано" + }, + "revokeSponsorshipConfirmation": { + "message": "Після вилучення цього облікового запису, власники сімейної організації будуть відповідальними за цю передплату та пов'язані рахунки. Ви дійсно хочете продовжити?" + }, + "removeSponsorshipSuccess": { + "message": "Спонсорування вилучено" + }, + "ssoKeyConnectorUnavailable": { + "message": "Не вдається отримати доступ до Key Connector. Спробуйте знову пізніше." + }, + "keyConnectorUrl": { + "message": "URL-адреса Key Connector" + }, + "sendVerificationCode": { + "message": "Надіслати код підтвердження е-поштою" + }, + "sendCode": { + "message": "Надіслати код" + }, + "codeSent": { + "message": "Код надіслано" + }, + "verificationCode": { + "message": "Код підтвердження" + }, + "confirmIdentity": { + "message": "Підтвердьте свої облікові дані для продовження." + }, + "verificationCodeRequired": { + "message": "Потрібний код підтвердження." + }, + "invalidVerificationCode": { + "message": "Недійсний код підтвердження" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ використовує SSO з власним сервером ключів. Головний пароль для учасників цієї організації більше не вимагається.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Покинути організацію" + }, + "removeMasterPassword": { + "message": "Вилучити головний пароль" + }, + "removedMasterPassword": { + "message": "Головний пароль вилучено." + }, + "allowSso": { + "message": "Дозволити авторизацію SSO" + }, + "allowSsoDesc": { + "message": "Після налаштування вашу конфігурацію буде збережено та учасники зможуть авторизуватися з використанням облікових даних їхнього постачальника." + }, + "ssoPolicyHelpStart": { + "message": "Увімкнути", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "Політика авторизації SSO", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "щоб вимагати в усіх учасників виконувати вхід з SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "Для встановлення розшифрування Key Connector необхідні політики авторизації SSO та єдиної організації." + }, + "memberDecryptionOption": { + "message": "Налаштування розшифрування учасників" + }, + "memberDecryptionPassDesc": { + "message": "Після авторизації учасники розшифровуватимуть дані сховища з використанням їх головного пароля." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Під'єднайте вхід з SSO до свого власного сервера ключів розшифрування. Скориставшись цією можливістю, учасникам не потрібен буде головний пароль для розшифрування даних сховища. Для отримання допомоги з налаштуванням зв'яжіться зі службою підтримки Bitwarden." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Вхід з SSO та розшифрування Key Connector\" увімкнено. Ця політика застосовується лише для власників та адміністраторів." + }, + "enabledSso": { + "message": "SSO увімкнено" + }, + "disabledSso": { + "message": "SSO вимкнено" + }, + "enabledKeyConnector": { + "message": "Key Connector увімкнено" + }, + "disabledKeyConnector": { + "message": "Key Connector вимкнено" + }, + "keyConnectorWarning": { + "message": "Як тільки учасники почнуть користуватися Key Connector, ваша організація не зможе повернутися до розшифрування з головним паролем. Продовжуйте тільки якщо ви готові розгортати сервер ключів та керувати ним." + }, + "migratedKeyConnector": { + "message": "Виконано перехід на Key Connector" + }, + "paymentSponsored": { + "message": "Будь ласка, вкажіть спосіб оплати для організації. Не хвилюйтеся, гроші не списуватимуться доки ви не виберете додаткові функції чи не завершиться термін дії передплати. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "Термін дії спонсорської пропозиції завершився. Ви можете видалити створену організацію, щоб уникнути списання грошей після завершення 7 днів пробного періоду. Або ж ви можете закрити цей запит, щоб зберегти організацію та прийняти відповідальність за сплату рахунків." + }, + "newFamiliesOrganization": { + "message": "Нова сімейна організація" + }, + "acceptOffer": { + "message": "Прийняти пропозицію" + }, + "sponsoringOrg": { + "message": "Організація спонсорування" + }, + "keyConnectorTest": { + "message": "Тест" + }, + "keyConnectorTestSuccess": { + "message": "Успішно! Key Connector під'єднано." + }, + "keyConnectorTestFail": { + "message": "Неможливо під'єднатися до Key Connector. Перевірте URL." + }, + "sponsorshipTokenHasExpired": { + "message": "Термін дії пропозиції спонсорування завершилась." + }, + "freeWithSponsorship": { + "message": "БЕЗПЛАТНО зі спонсоруванням" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ зазначених вище полів потребують вашої уваги.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 зазначене вище поле потребує вашої уваги." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ є обов'язковим.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "обов’язково" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Обов'язково, якщо ID елемента не є URL." + }, + "openIdOptionalCustomizations": { + "message": "Додаткові налаштування" + }, + "openIdAuthorityRequired": { + "message": "Обов'язково, якщо установа недійсна." + }, + "separateMultipleWithComma": { + "message": "Декілька значень розділених комою." + }, + "sessionTimeout": { + "message": "Час вашого сеансу завершився. Поверніться назад і спробуйте увійти знову." + }, + "exportingPersonalVaultTitle": { + "message": "Експортування особистого сховища" + }, + "exportingOrganizationVaultTitle": { + "message": "Експортування сховища організації" + }, + "exportingPersonalVaultDescription": { + "message": "Будуть експортовані лише записи особистого сховища, пов'язані з $EMAIL$. Записи сховища організації не буде включено.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Будуть експортовані лише записи сховища організації, пов'язані з $ORGANIZATION$. Записи особистого сховища та записи з інших організацій не буде включено.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Повернутися до звітів" + }, + "generator": { + "message": "Генератор" + }, + "whatWouldYouLikeToGenerate": { + "message": "Що ви бажаєте згенерувати?" + }, + "passwordType": { + "message": "Тип пароля" + }, + "regenerateUsername": { + "message": "Повторно генерувати ім'я користувача" + }, + "generateUsername": { + "message": "Генерувати ім'я користувача" + }, + "usernameType": { + "message": "Тип імені користувача" + }, + "plusAddressedEmail": { + "message": "Плюс адреса електронної пошти", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Використовуйте розширені можливості адрес вашого постачальника електронної пошти." + }, + "catchallEmail": { + "message": "Адреса е-пошти Catch-all" + }, + "catchallEmailDesc": { + "message": "Використовуйте свою скриньку вхідних Catch-All власного домену." + }, + "random": { + "message": "Випадково" + }, + "randomWord": { + "message": "Випадкове слово" + }, + "service": { + "message": "Послуга" + } +} diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json new file mode 100644 index 0000000000..ea0802fd2b --- /dev/null +++ b/apps/web/src/locales/vi/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "Kho lưu trữ trên web $APP_NAME$", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "message": "Mục này là gì?" + }, + "name": { + "message": "Tên" + }, + "uri": { + "message": "URI" + }, + "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": "URI mới" + }, + "username": { + "message": "Tên người dùng" + }, + "password": { + "message": "Mật khẩu" + }, + "newPassword": { + "message": "Mật khẩu mới" + }, + "passphrase": { + "message": "Cụm từ mật khẩu" + }, + "notes": { + "message": "Ghi chú" + }, + "customFields": { + "message": "Trường tùy chỉnh" + }, + "cardholderName": { + "message": "Tên chủ thẻ" + }, + "number": { + "message": "Số" + }, + "brand": { + "message": "Thương hiệu" + }, + "expiration": { + "message": "Thời hạn" + }, + "securityCode": { + "message": "Mã bảo mật (CVV)" + }, + "identityName": { + "message": "Tên định danh" + }, + "company": { + "message": "Công ty" + }, + "ssn": { + "message": "Số an sinh xã hội" + }, + "passportNumber": { + "message": "Số hộ chiếu" + }, + "licenseNumber": { + "message": "Số giấy phép" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Điện thoạ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" + }, + "title": { + "message": "Tiêu đề" + }, + "mr": { + "message": "Ông" + }, + "mrs": { + "message": "Bà" + }, + "ms": { + "message": "Cô" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Tháng hết hạn" + }, + "expirationYear": { + "message": "Năm hết hạn" + }, + "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": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "remove": { + "message": "Xoá" + }, + "unassigned": { + "message": "Hủy ấn định" + }, + "noneFolder": { + "message": "Không có thư mục", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Thêm thư mục" + }, + "editFolder": { + "message": "Chỉnh sửa thư mục" + }, + "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." + }, + "never": { + "message": "Không bao giờ" + }, + "toggleVisibility": { + "message": "Bật tắt khả năng hiển thị" + }, + "toggleCollapse": { + "message": "Ẩn bớt", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "Tạo mật khẩu" + }, + "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$ lần() 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." + }, + "save": { + "message": "Lưu" + }, + "cancel": { + "message": "Hủy bỏ" + }, + "canceled": { + "message": "Đã hủy" + }, + "close": { + "message": "Đóng" + }, + "delete": { + "message": "Xóa" + }, + "favorite": { + "message": "Yêu thích" + }, + "unfavorite": { + "message": "Bỏ yêu thích" + }, + "edit": { + "message": "Sửa" + }, + "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" + }, + "searchVault": { + "message": "Tìm kiếm trong Kho" + }, + "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": "Định danh" + }, + "typeSecureNote": { + "message": "Ghi chú bảo mật" + }, + "typeLoginPlural": { + "message": "Logins" + }, + "typeCardPlural": { + "message": "Cards" + }, + "typeIdentityPlural": { + "message": "Identities" + }, + "typeSecureNotePlural": { + "message": "Secure Notes" + }, + "folders": { + "message": "Thư mục" + }, + "collections": { + "message": "Các bộ sưu tập" + }, + "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" + }, + "shared": { + "message": "Đã chia sẻ" + }, + "attachments": { + "message": "Đính kèm" + }, + "select": { + "message": "Chọn" + }, + "addItem": { + "message": "Thêm mục" + }, + "editItem": { + "message": "Chỉnh sửa mục" + }, + "viewItem": { + "message": "View Item" + }, + "ex": { + "message": "vd.", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "Khác" + }, + "share": { + "message": "Chia sẻ" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "valueCopied": { + "message": "Đã sao chép $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "Sao chép giá trị", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "Sao chép mật khẩu", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "Sao chép tên đăng nhập", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "Sao 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)" + }, + "copyUri": { + "message": "Sao chép URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "Kho của tôi" + }, + "vault": { + "message": "Kho" + }, + "moveSelectedToOrg": { + "message": "Move Selected to Organization" + }, + "deleteSelected": { + "message": "Xóa mục đã chọn" + }, + "moveSelected": { + "message": "Di chuyển mục đã chọn" + }, + "selectAll": { + "message": "Chọn tất cả" + }, + "unselectAll": { + "message": "Bỏ chọn tất cả" + }, + "launch": { + "message": "Khởi chạy" + }, + "newAttachment": { + "message": "Thêm tệp đính kèm mới" + }, + "deletedAttachment": { + "message": "Đã xoá tệp đính kèm" + }, + "deleteAttachmentConfirmation": { + "message": "Bạn có chắc chắn muốn xóa tập tin đính kèm này?" + }, + "attachmentSaved": { + "message": "Tệp đính kèm đã được lưu." + }, + "file": { + "message": "Tập tin" + }, + "selectFile": { + "message": "Chọn một tập tin." + }, + "maxFileSize": { + "message": "Kích thước tối đa của tệp tin là 500 MB." + }, + "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." + }, + "addedItem": { + "message": "Đã thêm mục" + }, + "editedItem": { + "message": "Mục được chỉnh sửa" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "Selected items moved to $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "Xóa mục" + }, + "deleteFolder": { + "message": "Xóa thư mục" + }, + "deleteAttachment": { + "message": "Xóa tệp đí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" + }, + "deletedItems": { + "message": "Đã xóa mục" + }, + "movedItems": { + "message": "Đã di chuyển mục" + }, + "overwritePasswordConfirmation": { + "message": "Bạn có chắc chắn muốn ghi đè mật khẩu hiện tại không?" + }, + "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" + }, + "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" + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Có" + }, + "no": { + "message": "Không" + }, + "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" + }, + "emailAddressDesc": { + "message": "Bạn sẽ cần email của bạn để đăng nhập." + }, + "yourName": { + "message": "Tên của bạn" + }, + "yourNameDesc": { + "message": "Chúng tôi nên gọi bạn là gì nào?" + }, + "masterPass": { + "message": "Mật khẩu chính" + }, + "masterPassDesc": { + "message": "Mật khẩu chính là mật khẩu cho kho mật khẩu của bạn. Mật khẩu này rất quan trọng và bạn không nên quên nó của mình. Bạn sẽ không thể khôi phục lại mật khẩu chính của bạn nếu bạn quên nó." + }, + "masterPassHintDesc": { + "message": "Gợi ý mật khẩu có thể giúp bạn nhớ lại mật khẩu chính của mình nếu bạn quên nó." + }, + "reTypeMasterPass": { + "message": "Vui lòng nhập lại mật khẩu chính" + }, + "masterPassHint": { + "message": "Gợi ý mật khẩu chính (không bắt buộc)" + }, + "masterPassHintLabel": { + "message": "Gợi ý mật khẩu chính" + }, + "settings": { + "message": "Cài đặt" + }, + "passwordHint": { + "message": "Gợi ý mật khẩu" + }, + "enterEmailToGetHint": { + "message": "Vui lòng nhập địa chỉ email của tài khoản bạn để nhận gợi ý mật khẩu." + }, + "getMasterPasswordHint": { + "message": "Nhận gợi ý mật khẩu chính" + }, + "emailRequired": { + "message": "Cần phải có địa chỉ email." + }, + "invalidEmail": { + "message": "Địa chỉ email không hợp lệ." + }, + "masterPassRequired": { + "message": "Cần phải có mật khẩu chính." + }, + "masterPassLength": { + "message": "Mật khẩu chính phải có ít nhất 8 kí tự." + }, + "masterPassDoesntMatch": { + "message": "Xác minh mật khẩu chính không đúng." + }, + "newAccountCreated": { + "message": "Tài khoản của bạn đã được tạo! Bạn có thể đăng nhập ngay bây giờ." + }, + "masterPassSent": { + "message": "Chúng tôi đã gửi cho bạn email với gợi ý mật khẩu chính của bạn." + }, + "unexpectedError": { + "message": "Một lỗi bất ngờ đã xảy ra." + }, + "emailAddress": { + "message": "Địa chỉ email" + }, + "yourVaultIsLocked": { + "message": "Kho của bạn đã bị khóa. Xác minh mật khẩu chính của bạn để tiếp tục." + }, + "unlock": { + "message": "Mở khóa" + }, + "loggedInAsEmailOn": { + "message": "Đã đăng nhập là $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ệ" + }, + "lockNow": { + "message": "Khóa ngay" + }, + "noItemsInList": { + "message": "Không có mục nào để liệt kê." + }, + "noCollectionsInList": { + "message": "Không có bộ sưu tập nào để liệt kê." + }, + "noGroupsInList": { + "message": "Không có nhóm nào để liệt kê." + }, + "noUsersInList": { + "message": "Không có người nào để liệt kê." + }, + "noEventsInList": { + "message": "Không có sự kiện nào để liệt kê." + }, + "newOrganization": { + "message": "Tổ chức mới" + }, + "noOrganizationsList": { + "message": "Bạn không thuộc tổ chức nào. Tổ chức sẽ cho phép bạn chia sẻ với người dùng khác một cách bảo mật." + }, + "versionNumber": { + "message": "Phiên bản $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "enterVerificationCodeApp": { + "message": "Vui lòng nhập mã xác thực 6 chữ số từ ứng dụng xác thực của bạn." + }, + "enterVerificationCodeEmail": { + "message": "Vui lòng nhập mã xác thực 6 chữ số được gửi tới $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Email xác thực đã đượ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 xác thực" + }, + "useAnotherTwoStepMethod": { + "message": "Sử dụng phương pháp xác thực hai lớp khác" + }, + "insertYubiKey": { + "message": "Vui lòng cắm Yubikey vào cổng USB của máy tính bạn và bấm nút trên Yubikey." + }, + "insertU2f": { + "message": "Vui lòng cắm chìa khóa bảo mật vào cổng USB của máy tính bạn và bấm nút trên chìa khóa nếu có." + }, + "loginUnavailable": { + "message": "Đăng nhập không hoạt động" + }, + "noTwoStepProviders": { + "message": "Tài khoản này có xác thực hai lớp, tuy nhiên, trình duyệt của bạn không hỗ trợ dịch vụ xác thực hai lớp đang sử dụng." + }, + "noTwoStepProviders2": { + "message": "Vui lòng sử dụng trình duyệt được hỗ trợ (chẳng hạn như Chrome) và/hoặc thêm dịch vụ khác với hỗ trợ tốt hơn trên các trình duyệt (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" + }, + "recoveryCodeDesc": { + "message": "Bạn bị mất quyền truy cập vào tất cả các dịch vụ xác thực hai lớp? Sử dụng mã phục hồi của bạn để tắt tất cả các dịch vụ xác thực hai lớp của tài khoản 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.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Mật khẩu OTP YubiKey" + }, + "yubiKeyDesc": { + "message": "Sử dụng YubiKey để truy cập tài khoản của bạn. Hoạt động với YubiKey 4, 4 Nano, 4C và NEO." + }, + "duoDesc": { + "message": "Xác minh với Duo Security dùng ứng dụng Duo Mobile, SMS, điện thoại, hoặc mật khẩu U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Xác minh với Duo Security cho tổ chức của bạn dùng ứng dụng Duo Mobile, SMS, điện thoại, hoặc mật khẩu U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "u2fDesc": { + "message": "Sử dụng bất kỳ mật khẩu FIDO U2F nào để truy cập tài khoản của bạn." + }, + "u2fTitle": { + "message": "Mật khẩu FIDO U2F" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "webAuthnMigrated": { + "message": "(Migrated from FIDO)" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Mã xác thực sẽ được gửi qua email cho bạn." + }, + "continue": { + "message": "Tiếp tục" + }, + "organization": { + "message": "Tổ chức" + }, + "organizations": { + "message": "Tổ chức" + }, + "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." + }, + "moveManyToOrgDesc": { + "message": "Choose an organization that you wish to move these items to. Moving to an organization transfers ownership of the items to that organization. You will no longer be the direct owner of these items once they have been moved." + }, + "collectionsDesc": { + "message": "Chỉnh sửa những bộ sưu tập mà bạn sẽ chia sẻ mục này với. Chỉ những thành viên của tổ chức với quyền cho những bộ sưu tập đó mới có thể xem được mục này." + }, + "deleteSelectedItemsDesc": { + "message": "Bạn đã chọn $COUNT$ mục để xóa. Bạn có chắc bạn muốn xóa hết những mục này?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "Vui lòng chọn thư mục mà bạn muốn di chuyển $COUNT$ mục này tới.", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "You have selected $COUNT$ item(s). $MOVEABLE_COUNT$ item(s) can be moved to an organization, $NONMOVEABLE_COUNT$ cannot.", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "Mã xác thực (TOTP)" + }, + "copyVerificationCode": { + "message": "Sao chép mã xác thực" + }, + "warning": { + "message": "Cảnh báo" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "Bản trích xuất này chứa dữ liệu kho bạn và không được mã hóa. Bạn không nên lưu trữ hay gửi tập tin trích xuất thông qua phương thức không an toàn (như email). Vui lòng xóa nó ngay lập tức khi bạn đã sử dụng xong." + }, + "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." + }, + "export": { + "message": "Export" + }, + "exportVault": { + "message": "Trích xuất kho" + }, + "fileFormat": { + "message": "Định dạng tập tin" + }, + "exportSuccess": { + "message": "Dữ liệu kho cảu bạn đã được trích xuất." + }, + "passwordGenerator": { + "message": "Tạo mật khẩu" + }, + "minComplexityScore": { + "message": "Điểm phức tạp tối thiểu" + }, + "minNumbers": { + "message": "Số chữ số 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" + }, + "regeneratePassword": { + "message": "Tạo lại mật khẩu" + }, + "length": { + "message": "Độ dài" + }, + "numWords": { + "message": "Số lượng chữ" + }, + "wordSeparator": { + "message": "Dấu tách từ" + }, + "capitalize": { + "message": "Viết hoa", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Bao gồm cả số" + }, + "passwordHistory": { + "message": "Lịch sử mật khẩu" + }, + "noPasswordsInList": { + "message": "Không có mật khẩu để liệt kê." + }, + "clear": { + "message": "Xoá", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "Tài khoản đã được cập nhật" + }, + "changeEmail": { + "message": "Thay đổi địa chỉ email" + }, + "changeEmailTwoFactorWarning": { + "message": "Proceeding will change your account email address. It will not change the email address used for two-factor authentication. You can change this email address in the Two-Step Login settings." + }, + "newEmail": { + "message": "Địa chỉ email mới" + }, + "code": { + "message": "Mã" + }, + "changeEmailDesc": { + "message": "Chúng tôi đã gửi mã xác thực tới $EMAIL$. Vui lòng kiểm tra thùng thư của bạn để nhận và nhập mã vào bên dưới để hoàn thành quá trình thay đổi địa chỉ email.", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "Tiếp tục sẽ đăng xuất bạn ra khỏi phiên hiện tại, cần bạn phải đăng nhập lại. Những phiên trên các thiết bị khác sẽ tiếp tục có hiệu lực lên đến 1 tiếng." + }, + "emailChanged": { + "message": "Đã thay đổi email" + }, + "logBackIn": { + "message": "Hãy đăng nhập lại." + }, + "logBackInOthersToo": { + "message": "Vui lòng đăng nhập lại. Nếu bạn đang dùng những ứng dụng Bitwarden khác, vui lòng đăng xuất and đăng nhập lại những ứng dụng đó." + }, + "changeMasterPassword": { + "message": "Thay đổi mật khẩu chính" + }, + "masterPasswordChanged": { + "message": "Đã thay đổi mật khẩu chính" + }, + "currentMasterPass": { + "message": "Mật khẩu chính hiện tại" + }, + "newMasterPass": { + "message": "Mật khẩu chính mới" + }, + "confirmNewMasterPass": { + "message": "Xác nhận mật khẩu chính mới" + }, + "encKeySettings": { + "message": "Cài đặt mật khẩu mã hóa" + }, + "kdfAlgorithm": { + "message": "Thuật toán KDF" + }, + "kdfIterations": { + "message": "Số lần KDF" + }, + "kdfIterationsDesc": { + "message": "Số lần KDF nhiều có thể giúp bảo vệ mật khẩu chính khỏi những cuộc tấn công cưỡng chế. Chúng tôi khuyến khích giá trị $VALUE$ hoặc cao hơn.", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "Số lần KDF quá cao có thể làm các thiết bị yếu hơn bị giật lag khi đăng nhập (hoặc mỏ khóa). Chúng tôi khuyến khích tăng $INCREMENT$ mỗi lần và thử trên các thiết bị của bạn trước.", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "Thay đổi KDF" + }, + "encKeySettingsChanged": { + "message": "Cài đặt mật khẩu mã hóa đã thay đổi" + }, + "dangerZone": { + "message": "Vùng nguy hiểm" + }, + "dangerZoneDesc": { + "message": "Vui lòng cẩn thận, những hành động này không thể được hủy bỏ!" + }, + "deauthorizeSessions": { + "message": "Hủy quyền phiên" + }, + "deauthorizeSessionsDesc": { + "message": "Lo lắng tài khoản của bạn bị đăng nhập trên một thiết bị khác? Tiếp tục bên dưới để hủy quyền tất cả thiết bị bạn đã sử dụng. Bước bảo mật này được khuyến khích nếu bạn đã sử dụng thiết bị công cộng hoặc thiết bị không phải của bạn. Nó cũng sẽ xóa hết những phiên đăng nhập hai bước đã được lưu." + }, + "deauthorizeSessionsWarning": { + "message": "Tiếp tục sẽ đăng xuất bạn ra khỏi phiên hiện tại, cần bạn phải đăng nhập lại. Bạn cũng sẽ phải đăng nhập hai bước lại nếu bạn có đăng nhập hai bước. Những phiên đăng nhập trên các thiết bị khác sẽ tiếp tục có hiệu lực lên đến 1 tiếng." + }, + "sessionsDeauthorized": { + "message": "Tất cả phiên đăng nhập đã bị hủy" + }, + "purgeVault": { + "message": "Xóa kho" + }, + "purgedOrganizationVault": { + "message": "Đã xóa kho tổ chức." + }, + "vaultAccessedByProvider": { + "message": "Vault accessed by provider." + }, + "purgeVaultDesc": { + "message": "Tiếp tục bên dưới để xóa hết tất cả mục và thư mục trong kho của bạn. Những mục thuộc về tổ chức mà bạn chia sẻ với sẽ không bị xóa." + }, + "purgeOrgVaultDesc": { + "message": "Tiếp tục bên dưới để xóa hết tất cả mục trong kho của tổ chức." + }, + "purgeVaultWarning": { + "message": "Việc xóa kho là vĩnh viễn và không thể hoàn tác." + }, + "vaultPurged": { + "message": "Kho của bạn đã được xóa." + }, + "deleteAccount": { + "message": "Xóa tài khoản" + }, + "deleteAccountDesc": { + "message": "Tiếp tục bên dưới để xóa tài khoản và dữ liệu liên quan của bạn." + }, + "deleteAccountWarning": { + "message": "Việc xóa tài khoản là vĩnh viễn và không thể hoàn tác." + }, + "accountDeleted": { + "message": "Tài khoản đã được xóa" + }, + "accountDeletedDesc": { + "message": "Tài khoản của bạn đã được đóng và tất cả những dữ liệu liên quan đã được xóa." + }, + "myAccount": { + "message": "Tài khoản của tôi" + }, + "tools": { + "message": "Công cụ" + }, + "importData": { + "message": "Nhập dữ liệu" + }, + "importError": { + "message": "Import Error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "importSuccess": { + "message": "Dữ liệu đã được nhập vào kho thành công." + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "Dữ liệu không được định dạng đúng cách, vui lòng kiểm tra và thử lại." + }, + "importNothingError": { + "message": "Không có gì đã được nhập." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "selectFormat": { + "message": "Chọn định dạng cho file xuất" + }, + "selectImportFile": { + "message": "Chọn tập tin nhập" + }, + "orCopyPasteFileContents": { + "message": "hoặc sao chép/dán để nhập nội dung file" + }, + "instructionsFor": { + "message": "Chỉ dẫn cho $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "Tùy chọn" + }, + "optionsDesc": { + "message": "Tùy biến trải nghiệm kho mạng của bạn." + }, + "optionsUpdated": { + "message": "Tùy chọn đã được cập nhật" + }, + "language": { + "message": "Ngôn ngữ" + }, + "languageDesc": { + "message": "Thay đổi ngôn ngữ của kho mạng." + }, + "disableIcons": { + "message": "Vô hiệu hóa icon website" + }, + "disableIconsDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableGravatars": { + "message": "Enable Gravatars", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "Use avatar images loaded from gravatar.com." + }, + "enableFullWidth": { + "message": "Enable Full Width Layout", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "Allow the web vault to expand the full width of the browser window." + }, + "default": { + "message": "Mặc định" + }, + "domainRules": { + "message": "Quy luật tên miền" + }, + "domainRulesDesc": { + "message": "If you have the same login across multiple different website domains, you can mark the website as \"equivalent\". \"Global\" domains are ones already created for you by Bitwarden." + }, + "globalEqDomains": { + "message": "Global Equivalent Domains" + }, + "customEqDomains": { + "message": "Custom Equivalent Domains" + }, + "exclude": { + "message": "Ngoại trừ" + }, + "include": { + "message": "Bao gồm" + }, + "customize": { + "message": "Tùy biến" + }, + "newCustomDomain": { + "message": "Tên miền tùy biến mới" + }, + "newCustomDomainDesc": { + "message": "Enter a list of domains separated by commas. Only \"base\" domains are allowed. Do not enter subdomains. For example, enter \"google.com\" instead of \"www.google.com\". You can also enter \"androidapp://package.name\" to associate an android app with other website domains." + }, + "customDomainX": { + "message": "Custom Domain $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "Tên miền được cập nhật" + }, + "twoStepLogin": { + "message": "Xác thực 2 bước" + }, + "twoStepLoginDesc": { + "message": "Bảo mật tài khoản bằng các phương pháp sau khi đăng nhập." + }, + "twoStepLoginOrganizationDesc": { + "message": "Require two-step login for your organization's users by configuring providers at the organization level." + }, + "twoStepLoginRecoveryWarning": { + "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." + }, + "viewRecoveryCode": { + "message": "Hiển thị mã khôi phục" + }, + "providers": { + "message": "Cung cấp", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "Kích hoạt" + }, + "enabled": { + "message": "Kích hoạt" + }, + "premium": { + "message": "Cao cấp", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "Thành viên trả phí" + }, + "premiumRequired": { + "message": "Cần có tài khoản trả phí" + }, + "premiumRequiredDesc": { + "message": "Cần nâng cấp tài khoản trả phí để sử dụng chức năng này." + }, + "youHavePremiumAccess": { + "message": "Bạn được truy cập tài khoản trả phí" + }, + "alreadyPremiumFromOrg": { + "message": "Bạn được truy cập tài khoản trả phí vì tổ chức của bạn đã chi trả cho việc này." + }, + "manage": { + "message": "Quản lý" + }, + "disable": { + "message": "Vô hiệu hoá" + }, + "twoStepLoginProviderEnabled": { + "message": "This two-step login provider is enabled on your account." + }, + "twoStepLoginAuthDesc": { + "message": "Vui lòng nhập mật khẩu chính để chỉnh sửa cài đặt đăng nhập hai bước." + }, + "twoStepAuthenticatorDesc": { + "message": "Làm theo hướng dẫn để thiếp lập đăng nhập hai bước bằng ứng dụng:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "Tải về ứng dụng xác thực hai bước" + }, + "twoStepAuthenticatorNeedApp": { + "message": "Cần ứng dụng xác thực hai bước? Tải theo danh sách sau" + }, + "iosDevices": { + "message": "Thiết bị iOS" + }, + "androidDevices": { + "message": "Thiết bị Android" + }, + "windowsDevices": { + "message": "Thiết bị Windows" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "Những ứng dụng xác thực sau đây được khuyên dùng, thích cái khác cũng được, ko sao." + }, + "twoStepAuthenticatorScanCode": { + "message": "Quét nã QR code bằng ứng dụng xác thực" + }, + "key": { + "message": "Chìa khóa" + }, + "twoStepAuthenticatorEnterCode": { + "message": "Vui lòng nhập mã 6 bước sinh ra từ ứng dụng xác thực" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "Trong trường hợp bạn cần thêm thiết bị khác, ở dưới là mã QR( hoặc khóa) được yêu cầu bởi ứng dụng xác thực." + }, + "twoStepDisableDesc": { + "message": "Bạn có chắc muốn vô hiệu hóa xác thực hai bước?" + }, + "twoStepDisabled": { + "message": "Xác thực hai bước bị hủy bỏ." + }, + "twoFactorYubikeyAdd": { + "message": "Thêm khóa Yubikey mới vào tài khoản của bạn" + }, + "twoFactorYubikeyPlugIn": { + "message": "Cắm khóa Yubikey vào cổng USB máy tính của bạn." + }, + "twoFactorYubikeySelectKey": { + "message": "Select the first empty YubiKey input field below." + }, + "twoFactorYubikeyTouchButton": { + "message": "Chạm vào nút bấm trên Yubikey." + }, + "twoFactorYubikeySaveForm": { + "message": "Lưu mẫu." + }, + "twoFactorYubikeyWarning": { + "message": "Do giới hạn của hệ điều hành, Yubikey KHÔNG thể xài hết được trên các ứng dụng Bitwarden. Bạn nên đăng ký thêm một phương pháp xác thực 2 bước khác khi mà Yubikey không xài được. Hỗ trợ hệ điều hành:" + }, + "twoFactorYubikeySupportUsb": { + "message": "Web vault, desktop application, CLI, and all browser extensions on a device with a USB port that can accept your YubiKey." + }, + "twoFactorYubikeySupportMobile": { + "message": "Mobile apps on a device with NFC capabilities or a USB port that can accept your YubiKey." + }, + "yubikeyX": { + "message": "Yubikey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "Thiết bị U2F $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "Hỗ trợ NFC" + }, + "twoFactorYubikeySupportsNfc": { + "message": "Một trong các khóa bảo mật của tôi có hỗ trợ NFC." + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "Nếu một trong các khóa Yubikey có hỗ trợ NFC (ví dụ như Yubikey NEO), bạn sẽ được nhắc nhở trên thiết bị di động khi sóng NFC được phát hiện." + }, + "yubikeysUpdated": { + "message": "Đã cập nhập Yubikey" + }, + "disableAllKeys": { + "message": "Disable All Keys" + }, + "twoFactorDuoDesc": { + "message": "Enter the Bitwarden application information from your Duo Admin panel." + }, + "twoFactorDuoIntegrationKey": { + "message": "Integration Key" + }, + "twoFactorDuoSecretKey": { + "message": "Mã khóa bí mật" + }, + "twoFactorDuoApiHostname": { + "message": "API Hostname" + }, + "twoFactorEmailDesc": { + "message": "Follow these steps to set up two-step login with email:" + }, + "twoFactorEmailEnterEmail": { + "message": "Enter the email that you wish to receive verification codes" + }, + "twoFactorEmailEnterCode": { + "message": "Enter the resulting 6 digit verification code from the email" + }, + "sendEmail": { + "message": "Gửi Email" + }, + "twoFactorU2fAdd": { + "message": "Add a FIDO U2F security key to your account" + }, + "removeU2fConfirmation": { + "message": "Bạn có chắc chắn muốn xóa khóa bảo mật này?" + }, + "twoFactorWebAuthnAdd": { + "message": "Add a WebAuthn security key to your account" + }, + "readKey": { + "message": "Read Key" + }, + "keyCompromised": { + "message": "Chìa khóa bị lộ." + }, + "twoFactorU2fGiveName": { + "message": "Đặt cho Yubikey một cái tên để nhận diện." + }, + "twoFactorU2fPlugInReadKey": { + "message": "Cắm khóa bảo mật vào cổng USB và bấm nút trên khóa." + }, + "twoFactorU2fTouchButton": { + "message": "Nếu khóa bảo mật có nút, hãy chạm vào." + }, + "twoFactorU2fSaveForm": { + "message": "Lưu mẫu." + }, + "twoFactorU2fWarning": { + "message": "Do giới hạn của hệ điều hành, FIDO U2F KHÔNG thể xài hết được trên các ứng dụng Bitwarden. Bạn nên đăng ký thêm một phương pháp xác thực 2 bước khác khi mà FIDO U2F không xài được. Hỗ trợ hệ điều hành:" + }, + "twoFactorU2fSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorU2fWaiting": { + "message": "Waiting for you to touch the button on your security key" + }, + "twoFactorU2fClickSave": { + "message": "Click the \"Save\" button below to enable this security key for two-step login." + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "There was a problem reading the security key. Try again." + }, + "twoFactorWebAuthnWarning": { + "message": "Due to platform limitations, WebAuthn cannot be used on all Bitwarden applications. You should enable another two-step login provider so that you can access your account when WebAuthn cannot be used. Supported platforms:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn enabled browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F enabled)." + }, + "twoFactorRecoveryYourCode": { + "message": "Your Bitwarden two-step login recovery code" + }, + "twoFactorRecoveryNoCode": { + "message": "You have not enabled any two-step login providers yet. After you have enabled a two-step login provider you can check back here for your recovery code." + }, + "printCode": { + "message": "In mã", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "Báo cáo" + }, + "reportsDesc": { + "message": "Identify and close security gaps in your online accounts by clicking the reports below." + }, + "unsecuredWebsitesReport": { + "message": "Báo cáo trang web không an toàn" + }, + "unsecuredWebsitesReportDesc": { + "message": "URLs that start with http:// don’t use the best available encryption. Change the Login URIs for these accounts to https:// for safer browsing." + }, + "unsecuredWebsitesFound": { + "message": "Tìm thấy trang web không an toàn" + }, + "unsecuredWebsitesFoundDesc": { + "message": "We found $COUNT$ items in your vault with unsecured URIs. You should change their URI scheme to https:// if the website allows it.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "No items in your vault have unsecured URIs." + }, + "inactive2faReport": { + "message": "Inactive Two-step Login" + }, + "inactive2faReportDesc": { + "message": "Xác thực 2 bước là một bước quan trọng để bảo vệ tài khoản của bạn khỏi hacker. Nếu trang web cho phép, bạn nên kích hoạt xác thực 2 bước." + }, + "inactive2faFound": { + "message": "Logins Without 2FA Found" + }, + "inactive2faFoundDesc": { + "message": "Tìm thấy $COUNT$ trang web trong kho của bạn có thể thiếu xác thực 2 bước. Để đảm bảo an toàn, bạn nên kích hoạt xác thực 2 bước", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "Không tìm thấy trang web thiếu bảo mật 2 bước trong kho của bạn." + }, + "instructions": { + "message": "Hướng dẫn" + }, + "exposedPasswordsReport": { + "message": "Báo cáo mật khẩu bị rò rỉ" + }, + "exposedPasswordsReportDesc": { + "message": "Mật khẩu bị rò rĩ là mật khẩu đã bị hacker hack được trong các vụ rò rĩ dữ liệu được thông báo công khai hoặc được bán trên web đen( dark web) bởi hacker" + }, + "exposedPasswordsFound": { + "message": "Phát hiện mật khẩu bị rò rĩ" + }, + "exposedPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault that have passwords that were exposed in known data breaches. You should change them to use a new password.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "No items in your vault have passwords that have been exposed in known data breaches." + }, + "checkExposedPasswords": { + "message": "Kiểm tra mật khẩu bị rò rỉ" + }, + "exposedXTimes": { + "message": "Exposed $COUNT$ time(s)", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "Báo cáo mật khẩu không đảm bảo an toàn" + }, + "weakPasswordsReportDesc": { + "message": "Mật khẩu không an toàn có thể bị hacker và công cụ dò mật khẩu tự động đoán được dễ dàng . Chế độ tạo mật khẩu tự động của Bitwarden sẽ khắc phục vấn đề này." + }, + "weakPasswordsFound": { + "message": "Phát hiện mật khẩu không an toàn" + }, + "weakPasswordsFoundDesc": { + "message": "We found $COUNT$ items in your vault with passwords that are not strong. You should update them to use stronger passwords.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "No items in your vault have weak passwords." + }, + "reusedPasswordsReport": { + "message": "Báo cáo mật khẩu tái sử dụng" + }, + "reusedPasswordsReportDesc": { + "message": "Reusing passwords makes it easier for attackers to break into multiple accounts. Change these passwords so that each is unique." + }, + "reusedPasswordsFound": { + "message": "Phát hiện mật khẩu tái sử dụng" + }, + "reusedPasswordsFoundDesc": { + "message": "We found $COUNT$ passwords that are being reused in your vault. You should change them to a unique value.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "No logins in your vault have passwords that are being reused." + }, + "reusedXTimes": { + "message": "Reused $COUNT$ times", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "Báo cáo dữ liệu bị rò rĩ" + }, + "breachDesc": { + "message": "Breached accounts can expose your personal information. Secure breached accounts by enabling 2FA or creating a stronger password." + }, + "breachCheckUsernameEmail": { + "message": "Check any usernames or email addresses that you use." + }, + "checkBreaches": { + "message": "Check Breaches" + }, + "breachUsernameNotFound": { + "message": "$USERNAME$ was not found in any known data breaches.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "Tin tốt!", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ was found in $COUNT$ different data breaches online.", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "Breached Accounts Found" + }, + "compromisedData": { + "message": "Compromised data" + }, + "website": { + "message": "Trang web" + }, + "affectedUsers": { + "message": "Affected Users" + }, + "breachOccurred": { + "message": "Breach Occurred" + }, + "breachReported": { + "message": "Breach Reported" + }, + "reportError": { + "message": "An error occurred trying to load the report. Try again" + }, + "billing": { + "message": "Hóa đơn" + }, + "accountCredit": { + "message": "Account Credit", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "Account Balance", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "Add Credit", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "Amount", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "Added credit will appear on your account after the payment has been fully processed. Some payment methods are delayed and can take longer to process than others." + }, + "makeSureEnoughCredit": { + "message": "Please make sure that your account has enough credit available for this purchase. If your account does not have enough credit available, your default payment method on file will be used for the difference. You can add credit to your account from the Billing page." + }, + "creditAppliedDesc": { + "message": "Your account's credit can be used to make purchases. Any available credit will be automatically applied towards invoices generated for this account." + }, + "goPremium": { + "message": "Go Premium", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "premiumUpgradeUnlockFeatures": { + "message": "Upgrade your account to a premium membership and unlock some great additional features." + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpEmergency": { + "message": "Emergency Access" + }, + "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!" + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "Addons" + }, + "premiumAccess": { + "message": "Premium Access" + }, + "premiumAccessDesc": { + "message": "You can add premium access to all members of your organization for $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "Additional Storage (GB)" + }, + "additionalStorageGbDesc": { + "message": "# of additional GB" + }, + "additionalStorageIntervalDesc": { + "message": "Your plan comes with $SIZE$ of encrypted file storage. You can add additional storage for $PRICE$ per GB /$INTERVAL$.", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "Summary" + }, + "total": { + "message": "Total" + }, + "year": { + "message": "năm" + }, + "month": { + "message": "tháng" + }, + "monthAbbr": { + "message": "mo.", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "Phương thức thanh toán của bạn sẽ được thu phí ngay lập tức và sau đó sẽ định kỳ thu phí mỗi năm. Bạn có thể hủy bỏ bất cứ lúc nào." + }, + "paymentCharged": { + "message": "Your payment method will be charged immediately and then on a recurring basis each $INTERVAL$. You may cancel at any time.", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "Gói của bạn đi kèm với 7 ngày dùng thử miễn phí. Phương thức thanh toán của bạn sẽ không bị tính phí cho đến khi hết thời gian dùng thử. Việc thanh toán sẽ thực hiện định kỳ mỗi $INTERVAL$. Bạn có thể hủy bỏ bất cứ lúc nào." + }, + "paymentInformation": { + "message": "Thông Tin Thanh Toán" + }, + "billingInformation": { + "message": "Thông Tin Hóa Đơn" + }, + "creditCard": { + "message": "Thẻ Tín Dụng" + }, + "paypalClickSubmit": { + "message": "Nhấn vào nút PayPal để đăng nhập vào tài khoản PayPal của bạn, sau đó nhấn vào nút Submit bên dưới để tiếp tục." + }, + "cancelSubscription": { + "message": "Cancel Subscription" + }, + "subscriptionCanceled": { + "message": "The subscription has been canceled." + }, + "pendingCancellation": { + "message": "Pending Cancellation" + }, + "subscriptionPendingCanceled": { + "message": "The subscription has been marked for cancellation at the end of the current billing period." + }, + "reinstateSubscription": { + "message": "Reinstate Subscription" + }, + "reinstateConfirmation": { + "message": "Are you sure you want to remove the pending cancellation request and reinstate your subscription?" + }, + "reinstated": { + "message": "The subscription has been reinstated." + }, + "cancelConfirmation": { + "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle." + }, + "canceledSubscription": { + "message": "The subscription has been canceled." + }, + "neverExpires": { + "message": "Never Expires" + }, + "status": { + "message": "Trạng Thái" + }, + "nextCharge": { + "message": "Next Charge" + }, + "details": { + "message": "Details" + }, + "downloadLicense": { + "message": "Download License" + }, + "updateLicense": { + "message": "Update License" + }, + "updatedLicense": { + "message": "Updated license" + }, + "manageSubscription": { + "message": "Manage Subscription" + }, + "storage": { + "message": "Lưu trữ" + }, + "addStorage": { + "message": "Add Storage" + }, + "removeStorage": { + "message": "Remove Storage" + }, + "subscriptionStorage": { + "message": "Your subscription has a total of $MAX_STORAGE$ GB of encrypted file storage. You are currently using $USED_STORAGE$.", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "Payment Method" + }, + "noPaymentMethod": { + "message": "No payment method on file." + }, + "addPaymentMethod": { + "message": "Add Payment Method" + }, + "changePaymentMethod": { + "message": "Change Payment Method" + }, + "invoices": { + "message": "Invoices" + }, + "noInvoices": { + "message": "No invoices." + }, + "paid": { + "message": "Paid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "Unpaid", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "Transactions", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "No transactions." + }, + "chargeNoun": { + "message": "Charge", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "Refund", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "Any charges will appear on your statement as $STATEMENT_NAME$.", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB of Storage To Add" + }, + "gbStorageRemove": { + "message": "GB of Storage To Remove" + }, + "storageAddNote": { + "message": "Adding storage will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "storageRemoveNote": { + "message": "Removing storage will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedStorage": { + "message": "Adjusted $AMOUNT$ GB of storage.", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "Contact Customer Support" + }, + "updatedPaymentMethod": { + "message": "Updated payment method." + }, + "purchasePremium": { + "message": "Purchase Premium" + }, + "licenseFile": { + "message": "License File" + }, + "licenseFileDesc": { + "message": "Your license file will be named something like $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "To upgrade your account to a premium membership you need to upload a valid license file." + }, + "uploadLicenseFileOrg": { + "message": "To create an on-premises hosted organization you need to upload a valid license file." + }, + "accountEmailMustBeVerified": { + "message": "Your account's email address must be verified." + }, + "newOrganizationDesc": { + "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." + }, + "generalInformation": { + "message": "General Information" + }, + "organizationName": { + "message": "Organization Name" + }, + "accountOwnedBusiness": { + "message": "This account is owned by a business." + }, + "billingEmail": { + "message": "Billing Email" + }, + "businessName": { + "message": "Business Name" + }, + "chooseYourPlan": { + "message": "Choose Your Plan" + }, + "users": { + "message": "Users" + }, + "userSeats": { + "message": "User Seats" + }, + "additionalUserSeats": { + "message": "Additional User Seats" + }, + "userSeatsDesc": { + "message": "# of user seats" + }, + "userSeatsAdditionalDesc": { + "message": "Your plan comes with $BASE_SEATS$ user seats. You can add additional users for $SEAT_PRICE$ per user /month.", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "How many user seats do you need? You can also add additional seats later if needed." + }, + "planNameFree": { + "message": "Free", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "For testing or personal users to share with $COUNT$ other user.", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "Families" + }, + "planDescFamilies": { + "message": "Để sử dụng cá nhân, chia sẻ với gia đình và bạn bè." + }, + "planNameTeams": { + "message": "Teams" + }, + "planDescTeams": { + "message": "For businesses and other team organizations." + }, + "planNameEnterprise": { + "message": "Enterprise" + }, + "planDescEnterprise": { + "message": "For businesses and other large organizations." + }, + "freeForever": { + "message": "Miễn Phí Mãi Mãi" + }, + "includesXUsers": { + "message": "includes $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "Additional Users" + }, + "costPerUser": { + "message": "$COST$ per user", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "Limited to $COUNT$ users (including you)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "Limited to $COUNT$ collections", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "Add and share with up to $COUNT$ users", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "Add and share with unlimited users" + }, + "createUnlimitedCollections": { + "message": "Create unlimited Collections" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ encrypted file storage", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "On-premise hosting (optional)" + }, + "usersGetPremium": { + "message": "Users get access to Premium Features" + }, + "controlAccessWithGroups": { + "message": "Control user access with Groups" + }, + "syncUsersFromDirectory": { + "message": "Sync your users and Groups from a directory" + }, + "trackAuditLogs": { + "message": "Track user actions with audit logs" + }, + "enforce2faDuo": { + "message": "Enforce 2FA with Duo" + }, + "priorityCustomerSupport": { + "message": "Priority customer support" + }, + "xDayFreeTrial": { + "message": "$COUNT$ day free trial, cancel anytime", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "Hàng tháng" + }, + "annually": { + "message": "Hàng năm" + }, + "basePrice": { + "message": "Base Price" + }, + "organizationCreated": { + "message": "Organization Created" + }, + "organizationReadyToGo": { + "message": "Your new organization is ready to go!" + }, + "organizationUpgraded": { + "message": "Your organization has been upgraded." + }, + "leave": { + "message": "Leave" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "defaultCollection": { + "message": "Default Collection" + }, + "getHelp": { + "message": "Get Help" + }, + "getApps": { + "message": "Get the Apps" + }, + "loggedInAs": { + "message": "Logged in as" + }, + "eventLogs": { + "message": "Event Logs" + }, + "people": { + "message": "People" + }, + "policies": { + "message": "Policies" + }, + "singleSignOn": { + "message": "Single Sign-On" + }, + "editPolicy": { + "message": "Edit Policy" + }, + "groups": { + "message": "Groups" + }, + "newGroup": { + "message": "New Group" + }, + "addGroup": { + "message": "Thêm Nhóm" + }, + "editGroup": { + "message": "Chỉnh Sửa Nhóm" + }, + "deleteGroupConfirmation": { + "message": "Bạn có chắc chắn muốn xóa nhóm này?" + }, + "removeUserConfirmation": { + "message": "Are you sure you want to remove this user?" + }, + "removeUserConfirmationKeyConnector": { + "message": "Warning! This user requires Key Connector to manage their encryption. Removing this user from your organization will permanently disable their account. This action cannot be undone. Do you want to proceed?" + }, + "externalId": { + "message": "External Id" + }, + "externalIdDesc": { + "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." + }, + "accessControl": { + "message": "Access Control" + }, + "groupAccessAllItems": { + "message": "This group can access and modify all items." + }, + "groupAccessSelectedCollections": { + "message": "This group can access only the selected collections." + }, + "readOnly": { + "message": "Read Only" + }, + "newCollection": { + "message": "New Collection" + }, + "addCollection": { + "message": "Add Collection" + }, + "editCollection": { + "message": "Edit Collection" + }, + "deleteCollectionConfirmation": { + "message": "Are you sure you want to delete this collection?" + }, + "editUser": { + "message": "Edit User" + }, + "inviteUser": { + "message": "Invite User" + }, + "inviteUserDesc": { + "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "inviteMultipleEmailDesc": { + "message": "You can invite up to $COUNT$ users at a time by comma separating a list of email addresses.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "This user is using two-step login to protect their account." + }, + "userAccessAllItems": { + "message": "This user can access and modify all items." + }, + "userAccessSelectedCollections": { + "message": "This user can access only the selected collections." + }, + "search": { + "message": "Search" + }, + "invited": { + "message": "Invited" + }, + "accepted": { + "message": "Accepted" + }, + "confirmed": { + "message": "Confirmed" + }, + "clientOwnerEmail": { + "message": "Client Owner Email" + }, + "owner": { + "message": "Owner" + }, + "ownerDesc": { + "message": "The highest access user that can manage all aspects of your organization." + }, + "clientOwnerDesc": { + "message": "This user should be independent of the Provider. If the Provider is disassociated with the organization, this user will maintain ownership of the organization." + }, + "admin": { + "message": "Admin" + }, + "adminDesc": { + "message": "Admins can access and manage all items, collections and users in your organization." + }, + "user": { + "message": "User" + }, + "userDesc": { + "message": "A regular user with access to assigned collections in your organization." + }, + "manager": { + "message": "Manager" + }, + "managerDesc": { + "message": "Managers can access and manage assigned collections in your organization." + }, + "all": { + "message": "All" + }, + "refresh": { + "message": "Refresh" + }, + "timestamp": { + "message": "Timestamp" + }, + "event": { + "message": "Event" + }, + "unknown": { + "message": "Unknown" + }, + "loadMore": { + "message": "Load More" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web Vault" + }, + "loggedIn": { + "message": "Logged in." + }, + "changedPassword": { + "message": "Changed account password." + }, + "enabledUpdated2fa": { + "message": "Enabled/updated two-step login." + }, + "disabled2fa": { + "message": "Đã tắt đăng nhập 2 bước." + }, + "recovered2fa": { + "message": "Recovered account from two-step login." + }, + "failedLogin": { + "message": "Login attempt failed with incorrect password." + }, + "failedLogin2fa": { + "message": "Login attempt failed with incorrect two-step login." + }, + "exportedVault": { + "message": "Exported vault." + }, + "exportedOrganizationVault": { + "message": "Exported organization vault." + }, + "editedOrgSettings": { + "message": "Edited organization settings." + }, + "createdItemId": { + "message": "Created item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "Edited item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "Sent item $ID$ to trash.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "Moved item $ID$ to an organization.", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "Viewed item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "Viewed password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "Viewed hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "Viewed security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "Copied password for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "Copied hidden field for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "Copied security code for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "Auto-filled item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "Created collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "Edited collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "Deleted collection $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "Edited policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "Created group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "Edited group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "Deleted group $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "Removed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "Created attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "Deleted attachment for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "Edited collections for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "Invited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "Confirmed user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "Edited user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "Edited groups for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "Unlinked SSO for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "Created organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "Added organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "Removed organization $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "Accessed $ID$ organization vault.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "Thiết bị" + }, + "view": { + "message": "View" + }, + "invalidDateRange": { + "message": "Invalid date range." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "userAccess": { + "message": "User Access" + }, + "userType": { + "message": "User Type" + }, + "groupAccess": { + "message": "Group Access" + }, + "groupAccessUserDesc": { + "message": "Edit the groups that this user belongs to." + }, + "invitedUsers": { + "message": "Invited user(s)." + }, + "resendInvitation": { + "message": "Resend Invitation" + }, + "resendEmail": { + "message": "Resend Email" + }, + "hasBeenReinvited": { + "message": "$USER$ has been reinvited.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "Confirm" + }, + "confirmUser": { + "message": "Confirm User" + }, + "hasBeenConfirmed": { + "message": "$USER$ has been confirmed.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "Confirm Users" + }, + "usersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." + }, + "startDate": { + "message": "Start Date" + }, + "endDate": { + "message": "End Date" + }, + "verifyEmail": { + "message": "Verify Email" + }, + "verifyEmailDesc": { + "message": "Verify your account's email address to unlock access to all features." + }, + "verifyEmailFirst": { + "message": "Your account's email address first must be verified." + }, + "checkInboxForVerification": { + "message": "Check your email inbox for a verification link." + }, + "emailVerified": { + "message": "Your email has been verified." + }, + "emailVerifiedFailed": { + "message": "Unable to verify your email. Try sending a new verification email." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "updateBrowser": { + "message": "Update Browser" + }, + "updateBrowserDesc": { + "message": "You are using an unsupported web browser. The web vault may not function properly." + }, + "joinOrganization": { + "message": "Join Organization" + }, + "joinOrganizationDesc": { + "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "inviteAccepted": { + "message": "Invitation Accepted" + }, + "inviteAcceptedDesc": { + "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." + }, + "inviteAcceptFailed": { + "message": "Unable to accept invitation. Ask an organization admin to send a new invitation." + }, + "inviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "Remember email" + }, + "recoverAccountTwoStepDesc": { + "message": "If you cannot access your account through your normal two-step login methods, you can use your two-step login recovery code to disable all two-step providers on your account." + }, + "recoverAccountTwoStep": { + "message": "Recover Account Two-Step Login" + }, + "twoStepRecoverDisabled": { + "message": "Two-step login has been disabled on your account." + }, + "learnMore": { + "message": "Tìm hiểu thêm" + }, + "deleteRecoverDesc": { + "message": "Nhập địa chỉ email của bạn vào bên dưới để khôi phục và xóa tài khoản của bạn." + }, + "deleteRecoverEmailSent": { + "message": "Nếu tài khoản của bạn có tồn tại, chúng tôi đã gửi cho bạn một email với hướng dẫn chi tiết." + }, + "deleteRecoverConfirmDesc": { + "message": "Bạn đã yêu cầu xóa tài khoản Bitwarden của mình. Nhấn vào nút bên dưới để xác nhận." + }, + "myOrganization": { + "message": "My Organization" + }, + "deleteOrganization": { + "message": "Delete Organization" + }, + "deletingOrganizationContentWarning": { + "message": "Enter the master password to confirm deletion of $ORGANIZATION$ and all associated data. Vault data in $ORGANIZATION$ includes:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "User accounts will remain active after deletion but will no longer be associated to this organization." + }, + "deletingOrganizationIsPermanentWarning": { + "message": "Deleting $ORGANIZATION$ is permanent and irreversible.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "Organization Deleted" + }, + "organizationDeletedDesc": { + "message": "The organization and all associated data has been deleted." + }, + "organizationUpdated": { + "message": "Organization updated" + }, + "taxInformation": { + "message": "Thông Tin Thuế" + }, + "taxInformationDesc": { + "message": "Đối với các khách hàng ở Mỹ, mã ZIP là bắt buộc để đáp ứng các yêu cầu về thuế bán hàng, đối với các quốc gia khác, bạn có thể tùy chọn cung cấp mã số thuế (VAT / GST) và/hoặc địa chỉ để xuất hiện trên hóa đơn của mình." + }, + "billingPlan": { + "message": "Gói", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "Thay Đổi Gói", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "Upgrade your account to another plan be providing the information below. Please ensure that you have an active payment method added to the account.", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "Hóa đơn số #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "Xem Hóa đơn" + }, + "downloadInvoice": { + "message": "Tải Hóa đơn" + }, + "verifyBankAccount": { + "message": "Xác minh tài khoản ngân hàng" + }, + "verifyBankAccountDesc": { + "message": "We have made two micro-deposits to your bank account (it may take 1-2 business days to show up). Enter these amounts to verify the bank account." + }, + "verifyBankAccountInitialDesc": { + "message": "Payment with a bank account is only available to customers in the United States. You will be required to verify your bank account. We will make two micro-deposits within the next 1-2 business days. Enter these amounts on the organization's billing page to verify the bank account." + }, + "verifyBankAccountFailureWarning": { + "message": "Failure to verify the bank account will result in a missed payment and your subscription being disabled." + }, + "verifiedBankAccount": { + "message": "Bank account has been verified." + }, + "bankAccount": { + "message": "Bank Account" + }, + "amountX": { + "message": "Amount $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "Routing Number", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "Account Number" + }, + "accountHolderName": { + "message": "Account Holder Name" + }, + "bankAccountType": { + "message": "Loại tài khoản" + }, + "bankAccountTypeCompany": { + "message": "Company (Business)" + }, + "bankAccountTypeIndividual": { + "message": "Individual (Personal)" + }, + "enterInstallationId": { + "message": "Enter your installation id" + }, + "limitSubscriptionDesc": { + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + }, + "maxSeatLimit": { + "message": "Maximum Seat Limit (optional)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "Max potential seat cost" + }, + "addSeats": { + "message": "Add Seats", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "Remove Seats", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeats": { + "message": "Your subscription allows for a total of $COUNT$ users.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "Limit Subscription (Optional)" + }, + "subscriptionSeats": { + "message": "Subscription Seats" + }, + "subscriptionUpdated": { + "message": "Subscription updated" + }, + "additionalOptions": { + "message": "Additional Options" + }, + "additionalOptionsDesc": { + "message": "For additional help in managing your subscription, please contact Customer Support." + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "Seats To Add" + }, + "seatsToRemove": { + "message": "Seats To Remove" + }, + "seatsAddNote": { + "message": "Adding user seats will result in adjustments to your billing totals and immediately charge your payment method on file. The first charge will be prorated for the remainder of the current billing cycle." + }, + "seatsRemoveNote": { + "message": "Removing user seats will result in adjustments to your billing totals that will be prorated as credits toward your next billing charge." + }, + "adjustedSeats": { + "message": "Adjusted $AMOUNT$ user seats.", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "Key Updated" + }, + "updateKeyTitle": { + "message": "Update Key" + }, + "updateEncryptionKey": { + "message": "Update Encryption Key" + }, + "updateEncryptionKeyShortDesc": { + "message": "You are currently using an outdated encryption scheme." + }, + "updateEncryptionKeyDesc": { + "message": "We've moved to larger encryption keys that provide better security and access to newer features. Updating your encryption key is quick and easy. Just type your master password below. This update will eventually become mandatory." + }, + "updateEncryptionKeyWarning": { + "message": "After updating your encryption key, you are required to log out and back in to all Bitwarden applications that you are currently using (such as the mobile app or browser extensions). Failure to log out and back in (which downloads your new encryption key) may result in data corruption. We will attempt to log you out automatically, however, it may be delayed." + }, + "updateEncryptionKeyExportWarning": { + "message": "Any encrypted exports that you have saved will also become invalid." + }, + "subscription": { + "message": "Subscription" + }, + "loading": { + "message": "Loading" + }, + "upgrade": { + "message": "Upgrade" + }, + "upgradeOrganization": { + "message": "Upgrade Organization" + }, + "upgradeOrganizationDesc": { + "message": "This feature is not available for free organizations. Switch to a paid plan to unlock more features." + }, + "createOrganizationStep1": { + "message": "Create Organization: Step 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "Before creating your organization, you first need to create a free personal account." + }, + "refunded": { + "message": "Refunded" + }, + "nothingSelected": { + "message": "You have not selected anything." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "filters": { + "message": "Filters" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "oneMinute": { + "message": "1 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ờ" + }, + "onRefresh": { + "message": "Mỗi khi khởi động lại trình duyệt" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Mật khẩu đã cập nhật", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "Organization is disabled." + }, + "licenseIsExpired": { + "message": "License is expired." + }, + "updatedUsers": { + "message": "Updated users" + }, + "selected": { + "message": "Selected" + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "Yếu", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "Rất Yếu", + "description": "ex. A very weak password. Scale: Very Weak -> 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?" + }, + "rotateAccountEncKey": { + "message": "Also rotate my account's encryption key" + }, + "rotateEncKeyTitle": { + "message": "Rotate Encryption Key" + }, + "rotateEncKeyConfirmation": { + "message": "Are you sure you want to rotate your account's encryption key?" + }, + "attachmentsNeedFix": { + "message": "This item has old file attachments that need to be fixed." + }, + "attachmentFixDesc": { + "message": "This is an old file attachment the needs to be fixed. Click to learn more." + }, + "fix": { + "message": "Fix", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "message": "To ensure the integrity of your encryption keys, please verify the user's fingerprint phrase before continuing.", + "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." + }, + "dontAskFingerprintAgain": { + "message": "Never prompt to verify fingerprint phrases for invited users (Not recommended)", + "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." + }, + "free": { + "message": "Miễn phí", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API Key" + }, + "apiKeyDesc": { + "message": "Your API key can be used to authenticate to the Bitwarden public API." + }, + "apiKeyRotateDesc": { + "message": "Rotating the API key will invalidate the previous key. You can rotate your API key if you believe that the current key is no longer safe to use." + }, + "apiKeyWarning": { + "message": "Your API key has full access to the organization. It should be kept secret." + }, + "userApiKeyDesc": { + "message": "Your API key can be used to authenticate in the Bitwarden CLI." + }, + "userApiKeyWarning": { + "message": "Your API key is an alternative authentication mechanism. It should be kept secret." + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 Client Credentials", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "View API Key" + }, + "rotateApiKey": { + "message": "Rotate API Key" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "couldNotChargeCardPayInvoice": { + "message": "We were not able to charge your card. Please view and pay the unpaid invoice listed below." + }, + "inAppPurchase": { + "message": "In-app Purchase" + }, + "cannotPerformInAppPurchase": { + "message": "You cannot perform this action while using an in-app purchase payment method." + }, + "manageSubscriptionFromStore": { + "message": "You must manage your subscription from the store where your in-app purchase was made." + }, + "minLength": { + "message": "Minimum Length" + }, + "clone": { + "message": "Clone" + }, + "masterPassPolicyDesc": { + "message": "Set minimum requirements for master password strength." + }, + "twoStepLoginPolicyDesc": { + "message": "Require users to set up two-step login on their personal accounts." + }, + "twoStepLoginPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and do not have two-step login enabled for their personal account will be removed from the organization and will receive an email notifying them about the change." + }, + "twoStepLoginPolicyUserWarning": { + "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." + }, + "passwordGeneratorPolicyDesc": { + "message": "Set minimum requirements for password generator configuration." + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "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." + }, + "minimumNumberOfWords": { + "message": "Minimum Number of Words" + }, + "defaultType": { + "message": "Default Type" + }, + "userPreference": { + "message": "User Preference" + }, + "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": "Khóa", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Thùng rác", + "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "Tìm kiếm thùng rác" + }, + "permanentlyDelete": { + "message": "Xóa Vĩnh Viễn" + }, + "permanentlyDeleteSelected": { + "message": "Permanently Delete Selected" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "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": "Permanently Deleted item" + }, + "permanentlyDeletedItems": { + "message": "Permanently Deleted items" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "Permanently Deleted item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "Khôi phục" + }, + "restoreSelected": { + "message": "Khôi phục những mục đã chọn" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoredItem": { + "message": "Restored Item" + }, + "restoredItems": { + "message": "Restored Items" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoreItems": { + "message": "Restore items" + }, + "restoreSelectedItemsDesc": { + "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "Restored item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "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" + }, + "hidePasswords": { + "message": "Hide Passwords" + }, + "countryPostalCodeRequiredDesc": { + "message": "We require this information for calculating sales tax and financial reporting only." + }, + "includeVAT": { + "message": "Include VAT/GST Information (optional)" + }, + "taxIdNumber": { + "message": "VAT/GST Tax ID" + }, + "taxInfoUpdated": { + "message": "Tax information updated." + }, + "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." + }, + "identifier": { + "message": "Identifier" + }, + "organizationIdentifier": { + "message": "Organization Identifier" + }, + "ssoLogInWithOrgIdentifier": { + "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "ssoHandOff": { + "message": "You may now close this tab and continue in the extension." + }, + "includeAllTeamsFeatures": { + "message": "All Teams features, plus:" + }, + "includeSsoAuthentication": { + "message": "SSO Authentication via SAML2.0 and OpenID Connect" + }, + "includeEnterprisePolicies": { + "message": "Enterprise Policies" + }, + "ssoValidationFailed": { + "message": "SSO Validation Failed" + }, + "ssoIdentifierRequired": { + "message": "Organization Identifier is required." + }, + "unlinkSso": { + "message": "Unlink SSO" + }, + "unlinkSsoConfirmation": { + "message": "Are you sure you want to unlink SSO for this organization?" + }, + "linkSso": { + "message": "Link SSO" + }, + "singleOrg": { + "message": "Single Organization" + }, + "singleOrgDesc": { + "message": "Restrict users from being able to join any other organizations." + }, + "singleOrgBlockCreateMessage": { + "message": "Your current organization has a policy that does not allow you to join more than one organization. Please contact your organization admins or sign up from a different Bitwarden account." + }, + "singleOrgPolicyWarning": { + "message": "Organization members who are not Owners or Administrators and are already a member of another organization will be removed from your organization." + }, + "requireSso": { + "message": "Single Sign-On Authentication" + }, + "requireSsoPolicyDesc": { + "message": "Require users to log in with the Enterprise Single Sign-On method." + }, + "prerequisite": { + "message": "Prerequisite" + }, + "requireSsoPolicyReq": { + "message": "The Single Organization enterprise policy must be enabled before activating this policy." + }, + "requireSsoPolicyReqError": { + "message": "Single Organization policy not enabled." + }, + "requireSsoExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "sendTypeFile": { + "message": "Tập tin" + }, + "sendTypeText": { + "message": "Văn bản" + }, + "createSend": { + "message": "Tạo Send mới", + "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." + }, + "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." + }, + "deleteSend": { + "message": "Xóa Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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." + }, + "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." + }, + "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": "Expiration Date" + }, + "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": "Maximum Access Count" + }, + "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" + }, + "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." + }, + "disabled": { + "message": "Đã tắt" + }, + "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." + }, + "copySendLink": { + "message": "Sao chép liên kết Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "Remove Password" + }, + "removedPassword": { + "message": "Removed Password" + }, + "removePasswordConfirmation": { + "message": "Are you sure you want to remove the password?" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "disableThisSend": { + "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." + }, + "allSends": { + "message": "Toàn bộ Send" + }, + "maxAccessCountReached": { + "message": "Max access count reached", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "expired": { + "message": "Expired" + }, + "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." + }, + "sendProtectedPassword": { + "message": "Send này được bảo vệ bằng mật khẩu. Hãy nhập mật khẩu vào bên dưới để tiếp tục.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "Don't know the password? Ask the Sender for the password needed to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "This send is hidden by default. You can toggle its visibility using the button below.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "Download File" + }, + "sendAccessUnavailable": { + "message": "The Send you are trying to access does not exist or is no longer available.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "The file associated with this Send could not be found.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "There are no Sends to list.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "Truy Cập Khẩn Cấp" + }, + "emergencyAccessDesc": { + "message": "Grant and manage emergency access for trusted contacts. Trusted contacts may request access to either View or Takeover your account in case of an emergency. Visit our help page for more information and details into how zero knowledge sharing works." + }, + "emergencyAccessOwnerWarning": { + "message": "You are an Owner of one or more organizations. If you give takeover access to an emergency contact, they will be able to use all your permissions as Owner after a takeover." + }, + "trustedEmergencyContacts": { + "message": "Trusted emergency contacts" + }, + "noTrustedContacts": { + "message": "You have not added any emergency contacts yet, invite a trusted contact to get started." + }, + "addEmergencyContact": { + "message": "Add emergency contact" + }, + "designatedEmergencyContacts": { + "message": "Designated as emergency contact" + }, + "noGrantedAccess": { + "message": "You have not been designated as an emergency contact for anyone yet." + }, + "inviteEmergencyContact": { + "message": "Invite emergency contact" + }, + "editEmergencyContact": { + "message": "Edit emergency contact" + }, + "inviteEmergencyContactDesc": { + "message": "Invite a new emergency contact by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "emergencyAccessRecoveryInitiated": { + "message": "Emergency Access Initiated" + }, + "emergencyAccessRecoveryApproved": { + "message": "Emergency Access Approved" + }, + "viewDesc": { + "message": "Can view all items in your own vault." + }, + "takeover": { + "message": "Takeover" + }, + "takeoverDesc": { + "message": "Can reset your account with a new master password." + }, + "waitTime": { + "message": "Wait Time" + }, + "waitTimeDesc": { + "message": "Time required before automatically granting access." + }, + "oneDay": { + "message": "1 ngày" + }, + "days": { + "message": "$DAYS$ ngày", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "Invited user." + }, + "acceptEmergencyAccess": { + "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "emergencyInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask the user to send a new invitation." + }, + "emergencyInviteAcceptFailedShort": { + "message": "Unable to accept invitation. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "You can access the emergency options for this user after your identity has been confirmed. We'll send you an email when that happens." + }, + "requestAccess": { + "message": "Request Access" + }, + "requestAccessConfirmation": { + "message": "Are you sure you want to request emergency access? You will be provided access after $WAITTIME$ day(s) or whenever the user manually approves the request.", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "Emergency access requested for $USER$. We'll notify you by email when it's possible to continue.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "Chấp nhận" + }, + "reject": { + "message": "Từ chối" + }, + "approveAccessConfirmation": { + "message": "Are you sure you want to approve emergency access? This will allow $USER$ to $ACTION$ your account.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "Emergency access approved." + }, + "emergencyRejected": { + "message": "Emergency access rejected" + }, + "passwordResetFor": { + "message": "Password reset for $USER$. You can now login using the new password.", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "Personal Ownership" + }, + "personalOwnershipPolicyDesc": { + "message": "Require users to save vault items to an organization by removing the personal ownership option." + }, + "personalOwnershipExemption": { + "message": "Organization Owners and Administrators are exempt from this policy's enforcement." + }, + "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." + }, + "disableSend": { + "message": "Tắt Send" + }, + "disableSendPolicyDesc": { + "message": "Do not allow users to create or edit a Bitwarden Send. Deleting an existing Send is still allowed.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "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." + }, + "sendOptions": { + "message": "Send Options", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "Set options for creating and editing Sends.", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + }, + "disableHideEmail": { + "message": "Do not allow users to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "The following organization policies are currently in effect:" + }, + "sendDisableHideEmailInEffect": { + "message": "Users are not allowed to hide their email address from recipients when creating or editing a Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "Modified policy $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "Plan price" + }, + "estimatedTax": { + "message": "Estimated tax" + }, + "custom": { + "message": "Custom" + }, + "customDesc": { + "message": "Allows more granular control of user permissions for advanced configurations." + }, + "permissions": { + "message": "Permissions" + }, + "accessEventLogs": { + "message": "Access Event Logs" + }, + "accessImportExport": { + "message": "Access Import/Export" + }, + "accessReports": { + "message": "Access Reports" + }, + "missingPermissions": { + "message": "You lack the necessary permissions to perform this action." + }, + "manageAllCollections": { + "message": "Manage All Collections" + }, + "createNewCollections": { + "message": "Create New Collections" + }, + "editAnyCollection": { + "message": "Edit Any Collection" + }, + "deleteAnyCollection": { + "message": "Delete Any Collection" + }, + "manageAssignedCollections": { + "message": "Manage Assigned Collections" + }, + "editAssignedCollections": { + "message": "Edit Assigned Collections" + }, + "deleteAssignedCollections": { + "message": "Delete Assigned Collections" + }, + "manageGroups": { + "message": "Manage Groups" + }, + "managePolicies": { + "message": "Manage Policies" + }, + "manageSso": { + "message": "Manage SSO" + }, + "manageUsers": { + "message": "Quản Lý Người Dùng" + }, + "manageResetPassword": { + "message": "Manage Password Reset" + }, + "disableRequiredError": { + "message": "You must manually disable the $POLICYNAME$ policy before this policy can be disabled.", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has disabled importing items into your personal vault." + }, + "personalOwnershipCheckboxDesc": { + "message": "Disable personal ownership for organization users" + }, + "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." + }, + "sendNameDesc": { + "message": "Một tên gợi nhớ để mô tả về Send này.", + "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." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Chia sẻ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send transmits sensitive, temporary information to others easily and securely.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "Tìm hiểu thêm về", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "Share text or files directly with anyone." + }, + "sendVaultCardLearnMore": { + "message": "Learn more", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "see", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "how it works", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "hoặc", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "thử ngay", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "hoặc", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "đăng ký", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "thử ngay hôm nay.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden user $USER_IDENTIFIER$ shared the following with you", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "The Bitwarden user who created this Send has chosen to hide their email address. You should ensure you trust the source of this link before using or downloading its content.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "The expiration date provided is not valid." + }, + "deletionDateIsInvalid": { + "message": "The deletion date provided is not valid." + }, + "expirationDateAndTimeRequired": { + "message": "An expiration date and time are required." + }, + "deletionDateAndTimeRequired": { + "message": "A deletion date and time are required." + }, + "dateParsingError": { + "message": "There was an error saving your deletion and expiration dates." + }, + "webAuthnFallbackMsg": { + "message": "To verify your 2FA please click the button below." + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "webAuthnNotSupported": { + "message": "WebAuthn is not supported in this browser." + }, + "webAuthnSuccess": { + "message": "WebAuthn verified successfully! You may close this tab." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "enrollPasswordReset": { + "message": "Enroll in Password Reset" + }, + "enrolledPasswordReset": { + "message": "Enrolled in Password Reset" + }, + "withdrawPasswordReset": { + "message": "Withdraw from Password Reset" + }, + "enrollPasswordResetSuccess": { + "message": "Enrollment success!" + }, + "withdrawPasswordResetSuccess": { + "message": "Withdrawal success!" + }, + "eventEnrollPasswordReset": { + "message": "User $ID$ enrolled in password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "User $ID$ withdrew from password reset assistance.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "Master password reset for user $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "Reset Sso link for user $ID$", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ logged in using Sso for the first time", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "Reset Password" + }, + "resetPasswordLoggedOutWarning": { + "message": "Proceeding will log $NAME$ out of their current session, requiring them to log back in. Active sessions on other devices may continue to remain active for up to one hour.", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "this user" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "One or more organization policies require the master password to meet the following requirements:" + }, + "resetPasswordSuccess": { + "message": "Password reset success!" + }, + "resetPasswordEnrollmentWarning": { + "message": "Enrollment will allow organization administrators to change your master password. Are you sure you want to enroll?" + }, + "resetPasswordPolicy": { + "message": "Master Password Reset" + }, + "resetPasswordPolicyDescription": { + "message": "Allow administrators in the organization to reset organization users' master password." + }, + "resetPasswordPolicyWarning": { + "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "Require new users to be enrolled automatically" + }, + "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." + }, + "resetPasswordOrgKeysError": { + "message": "Organization Keys response is null" + }, + "resetPasswordDetailsError": { + "message": "Reset Password Details response is null" + }, + "trashCleanupWarning": { + "message": "Items that have been in Trash more than 30 days will be automatically deleted." + }, + "trashCleanupWarningSelfHosted": { + "message": "Items that have been in Trash for a while will be automatically deleted." + }, + "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." + }, + "reinviteSelected": { + "message": "Resend Invitations" + }, + "noSelectedUsersApplicable": { + "message": "This action is not applicable to any of the selected users." + }, + "removeUsersWarning": { + "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Choose a theme for your web vault." + }, + "themeSystem": { + "message": "Use System Theme" + }, + "themeDark": { + "message": "Dark" + }, + "themeLight": { + "message": "Light" + }, + "confirmSelected": { + "message": "Confirm Selected" + }, + "bulkConfirmStatus": { + "message": "Bulk action status" + }, + "bulkConfirmMessage": { + "message": "Confirmed successfully." + }, + "bulkReinviteMessage": { + "message": "Reinvited successfully." + }, + "bulkRemovedMessage": { + "message": "Removed successfully" + }, + "bulkFilteredMessage": { + "message": "Excluded, not applicable for this action." + }, + "fingerprint": { + "message": "Fingerprint" + }, + "removeUsers": { + "message": "Remove Users" + }, + "error": { + "message": "Error" + }, + "resetPasswordManageUsers": { + "message": "Manage Users must also be enabled with the Manage Password Reset permission" + }, + "setupProvider": { + "message": "Provider Setup" + }, + "setupProviderLoginDesc": { + "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + }, + "setupProviderDesc": { + "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + }, + "providerName": { + "message": "Provider Name" + }, + "providerSetup": { + "message": "The provider has been set up." + }, + "clients": { + "message": "Clients" + }, + "providerAdmin": { + "message": "Provider Admin" + }, + "providerAdminDesc": { + "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + }, + "serviceUser": { + "message": "Service User" + }, + "serviceUserDesc": { + "message": "Service users can access and manage all client organizations." + }, + "providerInviteUserDesc": { + "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + }, + "joinProvider": { + "message": "Join Provider" + }, + "joinProviderDesc": { + "message": "You've been invited to join the provider listed above. To accept the invitation, you need to log in or create a new Bitwarden account." + }, + "providerInviteAcceptFailed": { + "message": "Unable to accept invitation. Ask a provider admin to send a new invitation." + }, + "providerInviteAcceptedDesc": { + "message": "You can access this provider once an administrator confirms your membership. We'll send you an email when that happens." + }, + "providerUsersNeedConfirmed": { + "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the provider until they are confirmed." + }, + "provider": { + "message": "Provider" + }, + "newClientOrganization": { + "message": "New Client Organization" + }, + "newClientOrganizationDesc": { + "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + }, + "addExistingOrganization": { + "message": "Add Existing Organization" + }, + "myProvider": { + "message": "My Provider" + }, + "addOrganizationConfirmation": { + "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "Organization was successfully added to the provider" + }, + "accessingUsingProvider": { + "message": "Accessing organization using provider $PROVIDER$", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "Provider is disabled." + }, + "providerUpdated": { + "message": "Provider updated" + }, + "yourProviderIs": { + "message": "Your provider is $PROVIDER$. They have administrative and billing privileges for your organization.", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "The organization $ORGANIZATION$ has been detached from your provider.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + }, + "add": { + "message": "Add" + }, + "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 your Master Password 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." + }, + "masterPasswordInvalidWarning": { + "message": "Your Master Password does not meet the policy requirements of this organization. In order to join the organization, you must update your Master Password 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." + }, + "maximumVaultTimeout": { + "message": "Vault Timeout" + }, + "maximumVaultTimeoutDesc": { + "message": "Configure a maximum vault timeout for all users." + }, + "maximumVaultTimeoutLabel": { + "message": "Maximum Vault Timeout" + }, + "invalidMaximumVaultTimeout": { + "message": "Invalid Maximum Vault Timeout." + }, + "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" + } + } + }, + "customVaultTimeout": { + "message": "Custom Vault Timeout" + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restriction set by your organization." + }, + "disablePersonalVaultExport": { + "message": "Disable Personal Vault Export" + }, + "disablePersonalVaultExportDesc": { + "message": "Prohibits users from exporting their private vault data." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "selectType": { + "message": "Select SSO Type" + }, + "type": { + "message": "Type" + }, + "openIdConnectConfig": { + "message": "OpenID Connect Configuration" + }, + "samlSpConfig": { + "message": "SAML Service Provider Configuration" + }, + "samlIdpConfig": { + "message": "SAML Identity Provider Configuration" + }, + "callbackPath": { + "message": "Callback Path" + }, + "signedOutCallbackPath": { + "message": "Signed Out Callback Path" + }, + "authority": { + "message": "Authority" + }, + "clientId": { + "message": "Client ID" + }, + "clientSecret": { + "message": "Client Secret" + }, + "metadataAddress": { + "message": "Metadata Address" + }, + "oidcRedirectBehavior": { + "message": "OIDC Redirect Behavior" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "Get claims from user info endpoint" + }, + "additionalScopes": { + "message": "Custom Scopes" + }, + "additionalUserIdClaimTypes": { + "message": "Custom User ID Claim Types" + }, + "additionalEmailClaimTypes": { + "message": "Email Claim Types" + }, + "additionalNameClaimTypes": { + "message": "Custom Name Claim Types" + }, + "acrValues": { + "message": "Requested Authentication Context Class Reference values" + }, + "expectedReturnAcrValue": { + "message": "Expected \"acr\" Claim Value In Response" + }, + "spEntityId": { + "message": "SP Entity ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 Metadata URL" + }, + "spAcsUrl": { + "message": "Assertion Consumer Service (ACS) URL" + }, + "spNameIdFormat": { + "message": "Name ID Format" + }, + "spOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "spSigningBehavior": { + "message": "Signing Behavior" + }, + "spMinIncomingSigningAlgorithm": { + "message": "Minimum Incoming Signing Algorithm" + }, + "spWantAssertionsSigned": { + "message": "Expect signed assertions" + }, + "spValidateCertificates": { + "message": "Validate certificates" + }, + "idpEntityId": { + "message": "Entity ID" + }, + "idpBindingType": { + "message": "Binding Type" + }, + "idpSingleSignOnServiceUrl": { + "message": "Single Sign On Service URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "Single Log Out Service URL" + }, + "idpX509PublicCert": { + "message": "X509 Public Certificate" + }, + "idpOutboundSigningAlgorithm": { + "message": "Outbound Signing Algorithm" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "Allow unsolicited authentication response" + }, + "idpAllowOutboundLogoutRequests": { + "message": "Allow outbound logout requests" + }, + "idpSignAuthenticationRequests": { + "message": "Sign authentication requests" + }, + "ssoSettingsSaved": { + "message": "Single Sign-On configuration was saved." + }, + "sponsoredFamilies": { + "message": "Free Bitwarden Families" + }, + "sponsoredFamiliesEligible": { + "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesEligibleCard": { + "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + }, + "sponsoredFamiliesInclude": { + "message": "The Bitwarden for Families plan include" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "Premium access for up to 6 users" + }, + "sponsoredFamiliesSharedCollections": { + "message": "Shared collections for Family secrets" + }, + "badToken": { + "message": "The link is no longer valid. Please have the sponsor resend the offer." + }, + "reclaimedFreePlan": { + "message": "Reclaimed free plan" + }, + "redeem": { + "message": "Redeem" + }, + "sponsoredFamiliesSelectOffer": { + "message": "Select the organization you would like sponsored" + }, + "familiesSponsoringOrgSelect": { + "message": "Which Free Families offer would you like to redeem?" + }, + "sponsoredFamiliesEmail": { + "message": "Enter your personal email to redeem Bitwarden Families" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "If you leave or are removed from the sponsoring organization, your Families plan will expire at the end of the billing period." + }, + "acceptBitwardenFamiliesHelp": { + "message": "Accept offer for an existing organization or create a new Families organization." + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + }, + "sponsoredFamiliesAcceptFailed": { + "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "Unable to accept offer. $DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "Accept Free Bitwarden Families" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "Free Bitwarden Families offer successfully redeemed" + }, + "redeemed": { + "message": "Redeemed" + }, + "redeemedAccount": { + "message": "Redeemed Account" + }, + "revokeAccount": { + "message": "Revoke account $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "Resend Sponsorship email to $NAME$ sponsorship", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "Free Families Plan" + }, + "redeemNow": { + "message": "Redeem Now" + }, + "recipient": { + "message": "Recipient" + }, + "removeSponsorship": { + "message": "Remove Sponsorship" + }, + "removeSponsorshipConfirmation": { + "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "sponsorshipCreated": { + "message": "Sponsorship Created" + }, + "revoke": { + "message": "Revoke" + }, + "emailSent": { + "message": "Email Sent" + }, + "revokeSponsorshipConfirmation": { + "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + }, + "removeSponsorshipSuccess": { + "message": "Sponsorship Removed" + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the Key Connector, try again later." + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "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" + }, + "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" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "allowSso": { + "message": "Allow SSO authentication" + }, + "allowSsoDesc": { + "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + }, + "ssoPolicyHelpStart": { + "message": "Enable the", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO Authentication policy", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "to require all members to log in with SSO.", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO Authentication and Single Organization policies are required to set up Key Connector decryption." + }, + "memberDecryptionOption": { + "message": "Member Decryption Options" + }, + "memberDecryptionPassDesc": { + "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + }, + "keyConnectorPolicyRestriction": { + "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + }, + "enabledSso": { + "message": "Enabled SSO" + }, + "disabledSso": { + "message": "Disabled SSO" + }, + "enabledKeyConnector": { + "message": "Enabled Key Connector" + }, + "disabledKeyConnector": { + "message": "Disabled Key Connector" + }, + "keyConnectorWarning": { + "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + }, + "migratedKeyConnector": { + "message": "Migrated to Key Connector" + }, + "paymentSponsored": { + "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + }, + "orgCreatedSponsorshipInvalid": { + "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + }, + "newFamiliesOrganization": { + "message": "New Families Organization" + }, + "acceptOffer": { + "message": "Accept Offer" + }, + "sponsoringOrg": { + "message": "Sponsoring Organization" + }, + "keyConnectorTest": { + "message": "Test" + }, + "keyConnectorTestSuccess": { + "message": "Success! Key Connector reached." + }, + "keyConnectorTestFail": { + "message": "Cannot reach Key Connector. Check URL." + }, + "sponsorshipTokenHasExpired": { + "message": "The sponsorship offer has expired." + }, + "freeWithSponsorship": { + "message": "FREE with sponsorship" + }, + "formErrorSummaryPlural": { + "message": "$COUNT$ fields above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "1 field above needs your attention." + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ is required.", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "required" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "Required if Entity ID is not a URL." + }, + "openIdOptionalCustomizations": { + "message": "Optional Customizations" + }, + "openIdAuthorityRequired": { + "message": "Required if Authority is not valid." + }, + "separateMultipleWithComma": { + "message": "Separate multiple with a comma." + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingOrganizationVaultTitle": { + "message": "Exporting Organization 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" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "Back to Reports" + }, + "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" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json new file mode 100644 index 0000000000..461530d03f --- /dev/null +++ b/apps/web/src/locales/zh_CN/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ 网页密码库", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "密码" + }, + "newPassword": { + "message": "新密码" + }, + "passphrase": { + "message": "密码短语" + }, + "notes": { + "message": "备注" + }, + "customFields": { + "message": "自定义字段" + }, + "cardholderName": { + "message": "持卡人姓名" + }, + "number": { + "message": "号码" + }, + "brand": { + "message": "品牌" + }, + "expiration": { + "message": "过期日" + }, + "securityCode": { + "message": "安全码 (CVV)" + }, + "identityName": { + "message": "身份名称" + }, + "company": { + "message": "公司" + }, + "ssn": { + "message": "社会保险号码" + }, + "passportNumber": { + "message": "护照号码" + }, + "licenseNumber": { + "message": "许可证号码" + }, + "email": { + "message": "电子邮件" + }, + "phone": { + "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": "十二月" + }, + "title": { + "message": "称呼" + }, + "mr": { + "message": "先生" + }, + "mrs": { + "message": "夫人" + }, + "ms": { + "message": "女士" + }, + "dr": { + "message": "博士" + }, + "expirationMonth": { + "message": "过期月份" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "移除" + }, + "unassigned": { + "message": "未分派" + }, + "noneFolder": { + "message": "默认文件夹", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "添加文件夹" + }, + "editFolder": { + "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." + }, + "never": { + "message": "从不" + }, + "toggleVisibility": { + "message": "切换可见性" + }, + "toggleCollapse": { + "message": "切换折叠", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "生成密码" + }, + "checkPassword": { + "message": "检查密码是否已经被公开。" + }, + "passwordExposed": { + "message": "此密码在泄露数据中已被公开 $VALUE$ 次。请立即修改。", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "没有在已知的数据泄露中发现此密码,它暂时比较安全。" + }, + "save": { + "message": "保存" + }, + "cancel": { + "message": "取消" + }, + "canceled": { + "message": "已取消" + }, + "close": { + "message": "关闭" + }, + "delete": { + "message": "删除" + }, + "favorite": { + "message": "收藏" + }, + "unfavorite": { + "message": "取消收藏" + }, + "edit": { + "message": "编辑" + }, + "searchCollection": { + "message": "搜索集合" + }, + "searchFolder": { + "message": "搜索文件夹" + }, + "searchFavorites": { + "message": "搜索收藏" + }, + "searchType": { + "message": "搜索类型", + "description": "Search item type" + }, + "searchVault": { + "message": "搜索密码库" + }, + "allItems": { + "message": "所有项目" + }, + "favorites": { + "message": "收藏" + }, + "types": { + "message": "类型" + }, + "typeLogin": { + "message": "登录" + }, + "typeCard": { + "message": "支付卡" + }, + "typeIdentity": { + "message": "身份" + }, + "typeSecureNote": { + "message": "安全笔记" + }, + "typeLoginPlural": { + "message": "登录" + }, + "typeCardPlural": { + "message": "支付卡" + }, + "typeIdentityPlural": { + "message": "身份" + }, + "typeSecureNotePlural": { + "message": "安全笔记" + }, + "folders": { + "message": "文件夹" + }, + "collections": { + "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": "国家" + }, + "shared": { + "message": "已共享" + }, + "attachments": { + "message": "附件" + }, + "select": { + "message": "选择" + }, + "addItem": { + "message": "添加项目" + }, + "editItem": { + "message": "编辑项目" + }, + "viewItem": { + "message": "查看项目" + }, + "ex": { + "message": "例如", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "其他" + }, + "share": { + "message": "共享" + }, + "moveToOrganization": { + "message": "移动到组织" + }, + "valueCopied": { + "message": "$VALUE$ 已复制", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "复制值", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "复制密码", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "复制用户名", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "复制号码", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "复制安全码", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "复制 URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "密码库" + }, + "vault": { + "message": "密码库" + }, + "moveSelectedToOrg": { + "message": "移动所选项目到组织" + }, + "deleteSelected": { + "message": "删除所选" + }, + "moveSelected": { + "message": "移动所选" + }, + "selectAll": { + "message": "全选" + }, + "unselectAll": { + "message": "取消全选" + }, + "launch": { + "message": "启动" + }, + "newAttachment": { + "message": "添加新附件" + }, + "deletedAttachment": { + "message": "附件已删除" + }, + "deleteAttachmentConfirmation": { + "message": "您确定要删除此附件吗?" + }, + "attachmentSaved": { + "message": "附件已保存。" + }, + "file": { + "message": "文件" + }, + "selectFile": { + "message": "选择一个文件。" + }, + "maxFileSize": { + "message": "文件最大为 500 MB。" + }, + "updateKey": { + "message": "在您更新加密密钥前,您不能使用此功能。" + }, + "addedItem": { + "message": "项目已添加" + }, + "editedItem": { + "message": "项目已编辑" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ 已移动到 $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "所选项目已移动到 $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "删除项目" + }, + "deleteFolder": { + "message": "删除文件夹" + }, + "deleteAttachment": { + "message": "删除附件" + }, + "deleteItemConfirmation": { + "message": "您确定要删除此项目吗?" + }, + "deletedItem": { + "message": "项目已发送到回收站" + }, + "deletedItems": { + "message": "项目已发送到回收站" + }, + "movedItems": { + "message": "项目已移动" + }, + "overwritePasswordConfirmation": { + "message": "您确定要覆盖当前密码吗?" + }, + "editedFolder": { + "message": "文件夹已编辑" + }, + "addedFolder": { + "message": "文件夹已添加" + }, + "deleteFolderConfirmation": { + "message": "您确定要删除此文件夹吗?" + }, + "deletedFolder": { + "message": "文件夹已删除" + }, + "loggedOut": { + "message": "已登出" + }, + "loginExpired": { + "message": "您的登录会话已过期。" + }, + "logOutConfirmation": { + "message": "您确定要注销吗?" + }, + "logOut": { + "message": "注销" + }, + "ok": { + "message": "确定" + }, + "yes": { + "message": "是" + }, + "no": { + "message": "否" + }, + "loginOrCreateNewAccount": { + "message": "登录或者新建一个账户来访问您的安全密码库。" + }, + "createAccount": { + "message": "创建账户" + }, + "logIn": { + "message": "登录" + }, + "submit": { + "message": "提交" + }, + "emailAddressDesc": { + "message": "您将使用您的电子邮件地址登录。" + }, + "yourName": { + "message": "您的姓名" + }, + "yourNameDesc": { + "message": "我们应该怎么称呼您?" + }, + "masterPass": { + "message": "主密码" + }, + "masterPassDesc": { + "message": "主密码是您访问密码库的密码。它非常重要,请您不要忘记。一旦忘记,无任何办法恢复此密码。" + }, + "masterPassHintDesc": { + "message": "主密码提示可以在你忘记密码时帮你回忆起来。" + }, + "reTypeMasterPass": { + "message": "确认主密码" + }, + "masterPassHint": { + "message": "主密码提示(可选)" + }, + "masterPassHintLabel": { + "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": "发生意外错误。" + }, + "emailAddress": { + "message": "电子邮件地址" + }, + "yourVaultIsLocked": { + "message": "您的密码库已被锁定,请验证您的主密码以继续。" + }, + "unlock": { + "message": "解锁​​​​" + }, + "loggedInAsEmailOn": { + "message": "已在 $HOSTNAME$ 上以 $EMAIL$ 身份登录。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "无效的主密码" + }, + "lockNow": { + "message": "立即锁定" + }, + "noItemsInList": { + "message": "没有可列出的项目。" + }, + "noCollectionsInList": { + "message": "没有可列出的集合。" + }, + "noGroupsInList": { + "message": "没有可列出的群组。" + }, + "noUsersInList": { + "message": "没有可列出的用户。" + }, + "noEventsInList": { + "message": "没有可列出的事件。" + }, + "newOrganization": { + "message": "新建组织" + }, + "noOrganizationsList": { + "message": "您没有加入任何组织。同一组织的用户可以安全地与其他用户共享项目。" + }, + "versionNumber": { + "message": "版本: $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 端口。如果它有一个按钮,按下它。" + }, + "loginUnavailable": { + "message": "登录不可用" + }, + "noTwoStepProviders": { + "message": "此账户已启用两步登录,但此浏览器不支持任何已配置的两步登录提供程序。" + }, + "noTwoStepProviders2": { + "message": "请使用支持的网页浏览器(例如 Chrome)和/或添加其他支持更广泛的提供程序(例如验证器应用)。" + }, + "twoStepOptions": { + "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 系列、5 系列以及 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." + }, + "u2fDesc": { + "message": "使用任何支持 FIDO U2F 的安全钥匙来访问您的账户。" + }, + "u2fTitle": { + "message": "FIDO U2F 安全钥匙" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "使用任何启用了 WebAuthn 的安全钥匙访问您的账户。" + }, + "webAuthnMigrated": { + "message": "(迁移自 FIDO)" + }, + "emailTitle": { + "message": "电子邮件" + }, + "emailDesc": { + "message": "验证码将会发送到您的电子邮箱。" + }, + "continue": { + "message": "继续" + }, + "organization": { + "message": "组织" + }, + "organizations": { + "message": "组织" + }, + "moveToOrgDesc": { + "message": "选择一个您想将此项目移至的组织。移动到组织会将该项目的所有权转让给该组织。移动后,您将不再是此项目的直接所有者。" + }, + "moveManyToOrgDesc": { + "message": "选择一个您想将这些项目移至的组织。移动到组织会将这些项目的所有权转让给该组织。移动后,您将不再是这些项目的直接所有者。" + }, + "collectionsDesc": { + "message": "编辑与此项目共享的集合。只有具有这些集合访问权限的组织用户才能看到此项目。" + }, + "deleteSelectedItemsDesc": { + "message": "您选择了要删除 $COUNT$ 个项目。确实要删除所有这些项目吗?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "选择要将这 $COUNT$ 个项目移动到的文件夹。", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "您选择了 $COUNT$ 个项目。$MOVEABLE_COUNT$ 个项目可以移动到组织,$NONMOVEABLE_COUNT$ 不能。", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "验证码 (TOTP)" + }, + "copyVerificationCode": { + "message": "复制验证码" + }, + "warning": { + "message": "警告" + }, + "confirmVaultExport": { + "message": "确认导出密码库" + }, + "exportWarningDesc": { + "message": "导出的密码库数据包含未加密格式。您不应该通过不安全的渠道(例如电子邮件)来存储或发送导出的文件。用完后请立即将其删除。" + }, + "encExportKeyWarningDesc": { + "message": "此导出将使用您账户的加密密钥来加密您的数据。 如果您曾经轮换过账户的加密密钥,您应将其重新导出,否则您将无法解密导出的文件。" + }, + "encExportAccountWarningDesc": { + "message": "账户加密密钥对每个 Bitwarden 用户账户都是唯一的,所以您不能将加密的导出导入到另一个账户。" + }, + "export": { + "message": "导出" + }, + "exportVault": { + "message": "导出密码库" + }, + "fileFormat": { + "message": "文件格式" + }, + "exportSuccess": { + "message": "已经导出您的密码库数据。" + }, + "passwordGenerator": { + "message": "密码生成器" + }, + "minComplexityScore": { + "message": "最小复杂度" + }, + "minNumbers": { + "message": "数字最少个数" + }, + "minSpecial": { + "message": "符号最少个数", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "避免易混淆的字符" + }, + "regeneratePassword": { + "message": "重新生成密码" + }, + "length": { + "message": "长度" + }, + "numWords": { + "message": "单词数" + }, + "wordSeparator": { + "message": "单词分隔符" + }, + "capitalize": { + "message": "大写", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "包含数字" + }, + "passwordHistory": { + "message": "密码历史记录" + }, + "noPasswordsInList": { + "message": "没有可列出的密码。" + }, + "clear": { + "message": "清除", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "账户已更新" + }, + "changeEmail": { + "message": "更改电子邮件" + }, + "changeEmailTwoFactorWarning": { + "message": "继续操作将更改您的账户电子邮件地址。这不会更改用于双重身份验证的电子邮件地址。您可以在两步登录设置中更改它。" + }, + "newEmail": { + "message": "新电子邮件" + }, + "code": { + "message": "代码" + }, + "changeEmailDesc": { + "message": "我们已将验证码发送到 $EMAIL$。请检查您的电子邮件,在下方输入验证码,以确认更改您的电子邮件地址。", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "接下来将会注销您当前的会话,要求您重新登录。其他设备上的活动会话可能会继续保持最多一小时。" + }, + "emailChanged": { + "message": "电子邮件已更改" + }, + "logBackIn": { + "message": "请重新登录。" + }, + "logBackInOthersToo": { + "message": "请重新登录。如果您还在使用其他 Bitwarden 应用,也请注销并重新登陆。" + }, + "changeMasterPassword": { + "message": "修改主密码" + }, + "masterPasswordChanged": { + "message": "主密码已修改" + }, + "currentMasterPass": { + "message": "当前主密码" + }, + "newMasterPass": { + "message": "新主密码" + }, + "confirmNewMasterPass": { + "message": "确认新主密码" + }, + "encKeySettings": { + "message": "加密密钥设置" + }, + "kdfAlgorithm": { + "message": "KDF 算法" + }, + "kdfIterations": { + "message": "KDF 迭代" + }, + "kdfIterationsDesc": { + "message": "更高的 KDF 迭代可以帮助保护您的主密码免遭攻击者的暴力破解。建议 $VALUE$ 或更高。", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "如果将 KDF 迭代设置得太高,可能会在 CPU 速度较慢的设备上登录(以及解锁)Bitwarden 时性能变差。建议您以 $INCREMENT$ 的增量值递增,然后在所有设备上进行测试。", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "更改 KDF" + }, + "encKeySettingsChanged": { + "message": "加密密钥设置已更改" + }, + "dangerZone": { + "message": "危险操作区" + }, + "dangerZoneDesc": { + "message": "当心,这些操作是不可逆的!" + }, + "deauthorizeSessions": { + "message": "取消会话授权" + }, + "deauthorizeSessionsDesc": { + "message": "您是否担心自己的账户在其他设备上登录过?请按照以下步骤取消对之前使用过的所有计算机或设备的授权。如果您以前使用过公共电脑或不小心曾将密码保存在不属于您的设备上,则建议执行此安全步骤。此步骤还将清除所有以前记住的两步登录会话。" + }, + "deauthorizeSessionsWarning": { + "message": "接下来将会注销您当前的会话,并要求您重新登录。如果有设置两步登录,也需要重新认证。其他设备上的活动会话可能会继续保持最多一小时。" + }, + "sessionsDeauthorized": { + "message": "已取消会话授权" + }, + "purgeVault": { + "message": "清空密码库" + }, + "purgedOrganizationVault": { + "message": "组织密码库已清空。" + }, + "vaultAccessedByProvider": { + "message": "密码库被提供商访问。" + }, + "purgeVaultDesc": { + "message": "接下来的操作会删除密码库中的所有项目和文件夹。属于组织的共享项目将不会被删除。" + }, + "purgeOrgVaultDesc": { + "message": "接下来的操作会删除组织密码库中的所有项目。" + }, + "purgeVaultWarning": { + "message": "清空密码库是永久性的。不能被撤消。" + }, + "vaultPurged": { + "message": "你的密码库已经被清空。" + }, + "deleteAccount": { + "message": "删除账户" + }, + "deleteAccountDesc": { + "message": "接下来的操作会删除您的账户和所有相关数据。" + }, + "deleteAccountWarning": { + "message": "删除账户是永久性的。不能被撤消。" + }, + "accountDeleted": { + "message": "账户已删除" + }, + "accountDeletedDesc": { + "message": "您的账户已关闭,所有相关数据也已被删除。" + }, + "myAccount": { + "message": "我的账户" + }, + "tools": { + "message": "工具" + }, + "importData": { + "message": "导入数据" + }, + "importError": { + "message": "导入错误" + }, + "importErrorDesc": { + "message": "您尝试导入的数据有问题。请解决如下列出的源文件中的错误,然后重试。" + }, + "importSuccess": { + "message": "数据已经成功导入到密码库" + }, + "importWarning": { + "message": "您正在将数据导入到 $ORGANIZATION$。您的数据可能会与此组织中的成员共享。是否继续?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "数据格式不正确。请检查您的导入文件后重试。" + }, + "importNothingError": { + "message": "没有导入任何内容。" + }, + "importEncKeyError": { + "message": "解密导出的文件时出错。您的加密密钥与导出数据时使用的加密密钥不匹配。" + }, + "selectFormat": { + "message": "选择导入文件的格式" + }, + "selectImportFile": { + "message": "选择要导入的文件" + }, + "orCopyPasteFileContents": { + "message": "或复制/粘贴要导入文件的内容" + }, + "instructionsFor": { + "message": "$NAME$ 文件说明", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "选项" + }, + "optionsDesc": { + "message": "自定义您的网页版密码库体验。" + }, + "optionsUpdated": { + "message": "选项已更新" + }, + "language": { + "message": "语言" + }, + "languageDesc": { + "message": "更改网页密码库的语言。" + }, + "disableIcons": { + "message": "禁用网站图标" + }, + "disableIconsDesc": { + "message": "网站图标用于在您密码库的每个登录项目旁显示一个易识别的图标。" + }, + "enableGravatars": { + "message": "启用 Gravatar 头像", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "使用从 gravatar.com 加载的头像图像。" + }, + "enableFullWidth": { + "message": "启用全宽布局", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "允许网页密码库拓展到整个浏览器窗口宽度。" + }, + "default": { + "message": "默认" + }, + "domainRules": { + "message": "域名规则" + }, + "domainRulesDesc": { + "message": "如果您在多个不同网站之间使用同一个登陆信息,您可以把这些网站标记为「通用」。Bitwarden 会为您设置「全局」域名。" + }, + "globalEqDomains": { + "message": "全局通用域名" + }, + "customEqDomains": { + "message": "自定义通用域名" + }, + "exclude": { + "message": "排除" + }, + "include": { + "message": "包括" + }, + "customize": { + "message": "自定义" + }, + "newCustomDomain": { + "message": "添加自定义域名" + }, + "newCustomDomainDesc": { + "message": "输入用逗号分隔的域名列表。只能输入「基础」域名,不要输入子域名。例如,输入「google.com」而不是「www.google.com」。您也可以输入「androidapp://package.name」以将 Android 应用程序与其他网站域名关联。" + }, + "customDomainX": { + "message": "自定义域名 $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "域名已更新" + }, + "twoStepLogin": { + "message": "两步登录" + }, + "twoStepLoginDesc": { + "message": "在登录时需要额外的步骤来保护您的账户。" + }, + "twoStepLoginOrganizationDesc": { + "message": "在组织机构层面配置提供程序,以要求你组织的用户采用两步登录。" + }, + "twoStepLoginRecoveryWarning": { + "message": "启用两步登录可能会将您永久锁定在 Bitwarden 账户之外。如果您无法使用常规的两步登录提供程序(例如您丢失了设备),则可以使用恢复代码访问您的账户。如果您失去对您账户的访问,Bitwarden 支持也无法帮助您。我们建议您记下或打印恢复代码,并将其妥善保管。" + }, + "viewRecoveryCode": { + "message": "查看恢复代码" + }, + "providers": { + "message": "提供程序", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "启用" + }, + "enabled": { + "message": "启用" + }, + "premium": { + "message": "高级会员", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "高级会员" + }, + "premiumRequired": { + "message": "需要高级会员" + }, + "premiumRequiredDesc": { + "message": "此功能需要高级会员资格。" + }, + "youHavePremiumAccess": { + "message": "您拥有高级访问权限" + }, + "alreadyPremiumFromOrg": { + "message": "由于您是拥有高级会员功能的组织的成员,您已经拥有此功能。" + }, + "manage": { + "message": "管理" + }, + "disable": { + "message": "停用" + }, + "twoStepLoginProviderEnabled": { + "message": "您的账户已启用此两步登录提供程序。" + }, + "twoStepLoginAuthDesc": { + "message": "输入主密码以修改两步登录设置。" + }, + "twoStepAuthenticatorDesc": { + "message": "按照以下步骤,使用验证器应用设置两步登录:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "下载两步登录验证器应用" + }, + "twoStepAuthenticatorNeedApp": { + "message": "需要两步登录验证器应用?您可以下载以下应用:" + }, + "iosDevices": { + "message": "iOS 设备" + }, + "androidDevices": { + "message": "安卓设备" + }, + "windowsDevices": { + "message": "Windows 设备" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "推荐使用这些应用,您也可以使用其它验证器应用。" + }, + "twoStepAuthenticatorScanCode": { + "message": "使用验证器应用扫描这个二维码" + }, + "key": { + "message": "密钥" + }, + "twoStepAuthenticatorEnterCode": { + "message": "输入应用程序中的 6 位验证码" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "如果您要把它添加到另一个设备,下面是您的验证器应用所需要的二维码(或密钥)。" + }, + "twoStepDisableDesc": { + "message": "您确定要禁用此两步登录提供程序吗?" + }, + "twoStepDisabled": { + "message": "此两步登录提供程序已禁用。" + }, + "twoFactorYubikeyAdd": { + "message": "将新的 YubiKey 添加到您的账户" + }, + "twoFactorYubikeyPlugIn": { + "message": "将 YubiKey 插入您电脑的 USB 端口。" + }, + "twoFactorYubikeySelectKey": { + "message": "在下面选择第一个空的 YubiKey 输入字段。" + }, + "twoFactorYubikeyTouchButton": { + "message": "按下 YubiKey 的按钮。" + }, + "twoFactorYubikeySaveForm": { + "message": "保存表单。" + }, + "twoFactorYubikeyWarning": { + "message": "由于平台的限制,YubiKey 不能在所有 Bitwarden 应用程序上使用。您应该启用另一个两步登录提供程序,以便在无法使用 YubiKey 时可以访问您的账户。支持的平台:" + }, + "twoFactorYubikeySupportUsb": { + "message": "具有 USB 端口的设备上的网页版密码库、桌面应用程序、CLI 以及浏览器扩展都可以使用您的 YubiKey。" + }, + "twoFactorYubikeySupportMobile": { + "message": "具有兼容 NFC 或数据端口的设备上的移动应用程序可以使用您的 YubiKey。" + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F Key $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn 密钥 $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC 支持" + }, + "twoFactorYubikeySupportsNfc": { + "message": "我的一把钥匙支持 NFC。" + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "如果您的某个 YubiKey 支持 NFC(例如 YubiKey NEO),移动设备在检测到 NFC 时将提示您。" + }, + "yubikeysUpdated": { + "message": "YubiKey 已更新" + }, + "disableAllKeys": { + "message": "禁用全部钥匙" + }, + "twoFactorDuoDesc": { + "message": "输入 Duo 管理面板提供的 Bitwarden 应用信息。" + }, + "twoFactorDuoIntegrationKey": { + "message": "集成密钥" + }, + "twoFactorDuoSecretKey": { + "message": "安全密钥" + }, + "twoFactorDuoApiHostname": { + "message": "API 主机名" + }, + "twoFactorEmailDesc": { + "message": "按照以下步骤设置使用电子邮件两步登录:" + }, + "twoFactorEmailEnterEmail": { + "message": "输入您希望接收验证码的电子邮件" + }, + "twoFactorEmailEnterCode": { + "message": "输入电子邮件中的 6 位验证码" + }, + "sendEmail": { + "message": "发送电子邮件" + }, + "twoFactorU2fAdd": { + "message": "在您的账户中添加 FIDO U2F 安全钥匙" + }, + "removeU2fConfirmation": { + "message": "您确认要删除这个安全钥匙吗?" + }, + "twoFactorWebAuthnAdd": { + "message": "添加一个 WebAuthn 安全密钥到您的账户" + }, + "readKey": { + "message": "读取钥匙" + }, + "keyCompromised": { + "message": "密钥被破坏。" + }, + "twoFactorU2fGiveName": { + "message": "给安全钥匙一个友好的名称来标识它。" + }, + "twoFactorU2fPlugInReadKey": { + "message": "将安全钥匙插入计算机的 USB 端口,然后单击「读取钥匙」按钮。" + }, + "twoFactorU2fTouchButton": { + "message": "如果安全钥匙有按钮,请按下它。" + }, + "twoFactorU2fSaveForm": { + "message": "保存表单。" + }, + "twoFactorU2fWarning": { + "message": "由于平台的限制,FIDO U2F 不能在所有 Bitwarden 应用程序上使用。您应该启用另一个两步登录提供程序,以便在无法使用 FIDO U2F 时可以访问您的账户。支持的平台:" + }, + "twoFactorU2fSupportWeb": { + "message": "台式机 / 笔记本电脑上启用了 U2F 的浏览器(Chrome,Opera,Vivaldi 或启用了 FIDO U2F 的 Firefox)中的网页版密码库和浏览器扩展。" + }, + "twoFactorU2fWaiting": { + "message": "等待您按下安全钥匙上的按钮" + }, + "twoFactorU2fClickSave": { + "message": "单击下面的「保存」按钮,以启用此安全钥匙进行两步登录。" + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "读取安全钥匙时出现问题,请再试一次。" + }, + "twoFactorWebAuthnWarning": { + "message": "由于平台限制,无法在所有 Bitwarden 应用程序中使用 WebAuthn。您应该启用另一种两步登录方式,以便在 WebAuthn 无法使用时可以访问您的账户。支持的平台有:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "桌面/笔记本电脑上具有 WebAuthn 功能的浏览器(Chrome、Opera、Vivaldi 或启用了 FIDO U2F 的 Firefox)上的网页密码库和浏览器扩展。" + }, + "twoFactorRecoveryYourCode": { + "message": "您的 Bitwarden 两步登录恢复代码" + }, + "twoFactorRecoveryNoCode": { + "message": "您尚未启用任何两步登录提供程序。在启用了一个两步登录提供程序后,您可以在这里检查恢复代码。" + }, + "printCode": { + "message": "打印代码", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "报告" + }, + "reportsDesc": { + "message": "点击下面的报告,识别并消除您的在线账户中的安全漏洞。" + }, + "unsecuredWebsitesReport": { + "message": "不安全的网站报告" + }, + "unsecuredWebsitesReportDesc": { + "message": "以 http:// 开头的 URL 没有使用最好的加密方式。将这些账户的登录 URI 更改为 https://,以便更安全地浏览。" + }, + "unsecuredWebsitesFound": { + "message": "发现不安全的网站" + }, + "unsecuredWebsitesFoundDesc": { + "message": "我们在您的密码库中发现了 $COUNT$ 个项目带有不安全的 URI。如果网站允许,您应该将他们更改为 https://。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "没有在你的密码库中发现带不安全 URI 的项目。" + }, + "inactive2faReport": { + "message": "未激活的两步登录" + }, + "inactive2faReportDesc": { + "message": "两步登录为您的账户增加了一层保护。使用 Bitwarden 验证器或其他方式为这些账户开启两步登录。" + }, + "inactive2faFound": { + "message": "发现未使用双重身份验证的登录" + }, + "inactive2faFoundDesc": { + "message": "我们在您的密码库中发现 $COUNT$ 个网站可能没有配置双重身份验证(通过 twofactorauth.org)。为了进一步保护这些账户,您应该启用双重身份验证。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "没有在您的密码库发现未使用双重身份验证的网站。" + }, + "instructions": { + "message": "说明" + }, + "exposedPasswordsReport": { + "message": "已泄露密码报告" + }, + "exposedPasswordsReportDesc": { + "message": "在数据泄露事件中暴露的密码很容易成为攻击者的目标。更改这些密码以防止潜在的入侵。" + }, + "exposedPasswordsFound": { + "message": "发现公开密码" + }, + "exposedPasswordsFoundDesc": { + "message": "我们在密码库发现 $COUNT$ 个项目的密码在已知数据泄露中被公开。您应该将它们更改为新密码。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "没有在密码库中发现有密码在已知数据泄露中被公开。" + }, + "checkExposedPasswords": { + "message": "检查公开密码" + }, + "exposedXTimes": { + "message": "被公开 $COUNT$ 次", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "弱密码报告" + }, + "weakPasswordsReportDesc": { + "message": "弱的密码很容易被攻击者猜到。使用密码生成器将这些密码改为强密码。" + }, + "weakPasswordsFound": { + "message": "找到弱密码" + }, + "weakPasswordsFoundDesc": { + "message": "我们在您的密码库中发现了 $COUNT$ 个弱密码项目。您应该将它们改为更强的密码。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "没有在密码库中发现弱密码。" + }, + "reusedPasswordsReport": { + "message": "重复使用的密码" + }, + "reusedPasswordsReportDesc": { + "message": "重复使用的密码使攻击者更容易侵入多个账户。更改这些密码以使每个密码都是唯一的。" + }, + "reusedPasswordsFound": { + "message": "发现重复使用的密码" + }, + "reusedPasswordsFoundDesc": { + "message": "我们发现 $COUNT$ 个密码正在您的密码库中重复使用。您应该将它们更改为不同的值。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "您密码库中没有密码重复使用的项目。" + }, + "reusedXTimes": { + "message": "重复使用了 $COUNT$ 次", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "数据泄露" + }, + "breachDesc": { + "message": "泄露的账户可能会暴露您的个人信息。通过启用 2FA 或创建更强大的密码来保护被泄露的账户。" + }, + "breachCheckUsernameEmail": { + "message": "检查您使用的任何用户名或电子邮件地址。" + }, + "checkBreaches": { + "message": "检查泄漏情况" + }, + "breachUsernameNotFound": { + "message": "在任何已知数据泄漏中找不到 $USERNAME$。", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "好消息", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ 在不同的在线数据泄漏中找到 $COUNT$ 次。", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "发现被泄露的账户" + }, + "compromisedData": { + "message": "被盗数据" + }, + "website": { + "message": "网站" + }, + "affectedUsers": { + "message": "受影响的用户" + }, + "breachOccurred": { + "message": "泄漏发生于" + }, + "breachReported": { + "message": "泄漏报告于" + }, + "reportError": { + "message": "加载报告时发生错误,请重试。" + }, + "billing": { + "message": "计费" + }, + "accountCredit": { + "message": "账户信用额度", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "账户余额", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "添加信用额度", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "合计", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "添加的信用额度在付款全部处理后将出现在您的账户上。某些付款方式会延迟,并且可能需要比其他付款方式更长的时间来处理。" + }, + "makeSureEnoughCredit": { + "message": "请确保您的账户有足够的信用额度来用于此购买。如果您的账户信用额度不足,您的默认付款方式将用于补足差额。您可以从计费页面向您的账户添加信用额度。" + }, + "creditAppliedDesc": { + "message": "您帐户的信用额度可用于进行消费。任何可用的信用额度将用于自动支付此帐户的账单。" + }, + "goPremium": { + "message": "升级高级会员", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "您已升级到高级会员。" + }, + "premiumUpgradeUnlockFeatures": { + "message": "将您的账户升级为高级会员,将解锁一些强大的附加功能。" + }, + "premiumSignUpStorage": { + "message": "1 GB 文件附件加密存储。" + }, + "premiumSignUpTwoStep": { + "message": "额外的两步登录选项,如 YubiKey、FIDO U2F 和 Duo。" + }, + "premiumSignUpEmergency": { + "message": "紧急访问" + }, + "premiumSignUpReports": { + "message": "密码健康、账户体检以及数据泄露报告,保障您的密码库安全。" + }, + "premiumSignUpTotp": { + "message": "用于密码库中登录的 TOTP 验证码(两步验证)生成器。" + }, + "premiumSignUpSupport": { + "message": "优先客户支持。" + }, + "premiumSignUpFuture": { + "message": "所有未来的高级功能,即将推出!" + }, + "premiumPrice": { + "message": "每年只需 $PRICE$ !", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "附加项目" + }, + "premiumAccess": { + "message": "高级会员" + }, + "premiumAccessDesc": { + "message": "您可以为您的组织所有成员添加高级访问权限,只要 $PRICE$ / 每 $INTERVAL$ 。", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "附加存储 (GB)" + }, + "additionalStorageGbDesc": { + "message": "# GB 附加存储" + }, + "additionalStorageIntervalDesc": { + "message": "您的计划附带 $SIZE$ 的加密存储空间。您也可以用 $PRICE$ 每 GB 每 $INTERVAL$ 购买附加存储。", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "概要" + }, + "total": { + "message": "总计" + }, + "year": { + "message": "年" + }, + "month": { + "message": "月" + }, + "monthAbbr": { + "message": "月", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "将立即从您的支付方式扣款,并且将每年定期扣款。您可以随时取消。" + }, + "paymentCharged": { + "message": "将立即从您的支付方式扣款,并且将每 $INTERVAL$ 定期扣款。您可以随时取消。", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "您的计划包含了 7 天的免费试用期。在试用期结束前,不会从您的支付方式中扣款。您可以随时取消。" + }, + "paymentInformation": { + "message": "支付信息" + }, + "billingInformation": { + "message": "账单信息" + }, + "creditCard": { + "message": "支付卡" + }, + "paypalClickSubmit": { + "message": "点击 PayPal 按钮登录您的 PayPal 账户,然后点击下面的提交按钮继续。" + }, + "cancelSubscription": { + "message": "取消订阅" + }, + "subscriptionCanceled": { + "message": "您的订阅已取消。" + }, + "pendingCancellation": { + "message": "待取消" + }, + "subscriptionPendingCanceled": { + "message": "此订阅在当前计费周期结束前已标记为取消。" + }, + "reinstateSubscription": { + "message": "恢复订阅" + }, + "reinstateConfirmation": { + "message": "您确定要撤销请求并恢复订阅吗?" + }, + "reinstated": { + "message": "您的订阅已恢复。" + }, + "cancelConfirmation": { + "message": "您确定要取消吗?在本次计费周期结束后,您将无法使用此订阅的所有功能。" + }, + "canceledSubscription": { + "message": "订阅已取消。" + }, + "neverExpires": { + "message": "永不过期" + }, + "status": { + "message": "状态" + }, + "nextCharge": { + "message": "下一次扣款" + }, + "details": { + "message": "详细信息" + }, + "downloadLicense": { + "message": "下载许可证" + }, + "updateLicense": { + "message": "更新许可证" + }, + "updatedLicense": { + "message": "许可证已更新" + }, + "manageSubscription": { + "message": "管理订阅" + }, + "storage": { + "message": "存储" + }, + "addStorage": { + "message": "添加存储" + }, + "removeStorage": { + "message": "移除存储空间" + }, + "subscriptionStorage": { + "message": "您的订阅共有 $MAX_STORAGE$ GB 的加密存储空间。您目前已使用 $USED_STORAGE$ 。", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "支付方式" + }, + "noPaymentMethod": { + "message": "无支付方式" + }, + "addPaymentMethod": { + "message": "添加支付方式" + }, + "changePaymentMethod": { + "message": "更改支付方式" + }, + "invoices": { + "message": "账单" + }, + "noInvoices": { + "message": "无账单。" + }, + "paid": { + "message": "已支付", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "待支付", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "交易记录", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "无交易记录" + }, + "chargeNoun": { + "message": "费用", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "退款", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "任何费用将在您的对账单上以 $STATEMENT_NAME$ 显示。", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB 存储空间将增加" + }, + "gbStorageRemove": { + "message": "GB 存储空间将删除" + }, + "storageAddNote": { + "message": "添加存储空间将会调整计费总金额,并立即通过您的支付方式进行扣款。 第一笔费用将按当前计费周期的剩余时间按比例分配。" + }, + "storageRemoveNote": { + "message": "移除存储空间将会调整计费总金额,这笔费用将按比例返回下一笔账单费用中。" + }, + "adjustedStorage": { + "message": "已调整 $AMOUNT$ GB 的存储空间。", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "联系客户支持" + }, + "updatedPaymentMethod": { + "message": "支付方式已更新" + }, + "purchasePremium": { + "message": "购买高级会员" + }, + "licenseFile": { + "message": "许可证文件" + }, + "licenseFileDesc": { + "message": "您的许可证文件的文件名类似于 $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "要将您的账户升级为高级会员资格,您需要上传有效的许可证文件。" + }, + "uploadLicenseFileOrg": { + "message": "若要创建基于本地托管的组织,您需要上传有效的许可证文件。" + }, + "accountEmailMustBeVerified": { + "message": "您必须验证账户的电子邮件地址。" + }, + "newOrganizationDesc": { + "message": "组织允许您与他人共享您的密码库的部分内容,以及管理特定实体(例如家族、小型团队或大型公司)的相关用户。" + }, + "generalInformation": { + "message": "常规信息" + }, + "organizationName": { + "message": "组织名称" + }, + "accountOwnedBusiness": { + "message": "此账户由商业用户拥有。" + }, + "billingEmail": { + "message": "账单电子邮件" + }, + "businessName": { + "message": "公司名称" + }, + "chooseYourPlan": { + "message": "选择您的计划" + }, + "users": { + "message": "用户" + }, + "userSeats": { + "message": "用户席位" + }, + "additionalUserSeats": { + "message": "附加用户席位" + }, + "userSeatsDesc": { + "message": "# 用户席位" + }, + "userSeatsAdditionalDesc": { + "message": "您的计划包含 $BASE_SEATS$ 个用户席位。添加附加用户的价格是 $SEAT_PRICE$ 每用户每月。", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "您需要多少个用户席位?您也可以在以后需要的时候添加附加席位。" + }, + "planNameFree": { + "message": "免费", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "适用于测试或个人用户与 $COUNT$ 位其他用户共享。", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "家庭" + }, + "planDescFamilies": { + "message": "适用于个人使用,与家人和朋友共享。" + }, + "planNameTeams": { + "message": "团队" + }, + "planDescTeams": { + "message": "适用于企业和其他团队组织。" + }, + "planNameEnterprise": { + "message": "企业" + }, + "planDescEnterprise": { + "message": "适用于企业和其他大型组织。" + }, + "freeForever": { + "message": "永远免费" + }, + "includesXUsers": { + "message": "包含 $COUNT$ 位用户", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "附加用户" + }, + "costPerUser": { + "message": "每位用户 $COST$", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "仅限 $COUNT$ 位用户(包括您)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "仅限 $COUNT$ 个集合", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "添加并最多与 $COUNT$ 位用户共享", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "添加并与无限的用户共享" + }, + "createUnlimitedCollections": { + "message": "创建无限个集合" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ 加密文件存储", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "本地托管(可选)" + }, + "usersGetPremium": { + "message": "用户拥有高级会员功能权限" + }, + "controlAccessWithGroups": { + "message": "使用群组控制用户访问权限" + }, + "syncUsersFromDirectory": { + "message": "使用目录同步用户和群组" + }, + "trackAuditLogs": { + "message": "使用审核日志跟踪用户操作" + }, + "enforce2faDuo": { + "message": "强制启用 Duo 的两步登录" + }, + "priorityCustomerSupport": { + "message": "优先客户支持" + }, + "xDayFreeTrial": { + "message": "$COUNT$ 天免费试用,随时取消", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "每月" + }, + "annually": { + "message": "每年" + }, + "basePrice": { + "message": "基本价格" + }, + "organizationCreated": { + "message": "组织已创建" + }, + "organizationReadyToGo": { + "message": "你的组织准备好了!" + }, + "organizationUpgraded": { + "message": "您的组织已升级。" + }, + "leave": { + "message": "离开" + }, + "leaveOrganizationConfirmation": { + "message": "您确定要离开此组织吗?" + }, + "leftOrganization": { + "message": "您已经离开该组织。" + }, + "defaultCollection": { + "message": "默认集合" + }, + "getHelp": { + "message": "获取帮助" + }, + "getApps": { + "message": "获取应用" + }, + "loggedInAs": { + "message": "已登录为" + }, + "eventLogs": { + "message": "事件日志" + }, + "people": { + "message": "人员" + }, + "policies": { + "message": "策略" + }, + "singleSignOn": { + "message": "单点登录" + }, + "editPolicy": { + "message": "编辑策略" + }, + "groups": { + "message": "群组" + }, + "newGroup": { + "message": "新建群组" + }, + "addGroup": { + "message": "添加群组" + }, + "editGroup": { + "message": "编辑群组" + }, + "deleteGroupConfirmation": { + "message": "您确定要删除此群组吗?" + }, + "removeUserConfirmation": { + "message": "您确实要删除此用户吗?" + }, + "removeUserConfirmationKeyConnector": { + "message": "警告!此用户需要 Key Connector 来管理他们的加密。从您的组织中移除此用户将永久禁用他们的账户。此操作无法撤消。您要继续吗?" + }, + "externalId": { + "message": "外部 ID" + }, + "externalIdDesc": { + "message": "外部 ID 可用作参考,或将此资源与用户目录等外部系统联系起来。" + }, + "accessControl": { + "message": "访问控制" + }, + "groupAccessAllItems": { + "message": "此群组可以访问和修改所有项目。" + }, + "groupAccessSelectedCollections": { + "message": "此群组只能访问选定的集合。" + }, + "readOnly": { + "message": "只读" + }, + "newCollection": { + "message": "新建集合" + }, + "addCollection": { + "message": "添加集合" + }, + "editCollection": { + "message": "编辑集合" + }, + "deleteCollectionConfirmation": { + "message": "你确定要删除此集合吗?" + }, + "editUser": { + "message": "编辑用户" + }, + "inviteUser": { + "message": "邀请用户" + }, + "inviteUserDesc": { + "message": "在下面输入 Bitwarden 账户的电子邮件地址,以邀请新用户加入您的组织。如果他们没有 Bitwarden 账户,将会提示他们创建一个。" + }, + "inviteMultipleEmailDesc": { + "message": "通过使用逗号分隔的电子邮件地址列表,您可以一次邀请 $COUNT$ 位用户。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "此用户正在使用两步登录来保护他们的账户。" + }, + "userAccessAllItems": { + "message": "此用户可以访问和修改所有项目。" + }, + "userAccessSelectedCollections": { + "message": "此用户只能访问选定的集合。" + }, + "search": { + "message": "搜索" + }, + "invited": { + "message": "已邀请" + }, + "accepted": { + "message": "已接受" + }, + "confirmed": { + "message": "已确认" + }, + "clientOwnerEmail": { + "message": "客户所有者电子邮件" + }, + "owner": { + "message": "所有者" + }, + "ownerDesc": { + "message": "可以管理组织的所有方面的最高权限用户。" + }, + "clientOwnerDesc": { + "message": "此用户应独立于提供商。如果提供商与组织断开关联,该用户将保留该组织的所有权。" + }, + "admin": { + "message": "管理员" + }, + "adminDesc": { + "message": " 管理员可以访问和管理组织中的所有项目、集合和用户。" + }, + "user": { + "message": "用户" + }, + "userDesc": { + "message": "具有对组织所分配的集合有访问权限的普通用户。" + }, + "manager": { + "message": "经理" + }, + "managerDesc": { + "message": "经理可以访问和管理组织所分配的集合。" + }, + "all": { + "message": "全部" + }, + "refresh": { + "message": "刷新" + }, + "timestamp": { + "message": "时间戳" + }, + "event": { + "message": "事件" + }, + "unknown": { + "message": "未知" + }, + "loadMore": { + "message": "加载更多" + }, + "mobile": { + "message": "手机版应用", + "description": "Mobile app" + }, + "extension": { + "message": "扩展", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "桌面版应用", + "description": "Desktop app" + }, + "webVault": { + "message": "网页密码库" + }, + "loggedIn": { + "message": "已登录。" + }, + "changedPassword": { + "message": "账户密码已更改。" + }, + "enabledUpdated2fa": { + "message": "已启用/更新两步登录。" + }, + "disabled2fa": { + "message": "两步登录已禁用。" + }, + "recovered2fa": { + "message": "已从两步登录中恢复账户。" + }, + "failedLogin": { + "message": "登录失败,密码不正确。" + }, + "failedLogin2fa": { + "message": "登录失败,两步登录不正确。" + }, + "exportedVault": { + "message": "已导出密码库。" + }, + "exportedOrganizationVault": { + "message": "已导出组织密码库。" + }, + "editedOrgSettings": { + "message": "已编辑组织设置。" + }, + "createdItemId": { + "message": "已创建项目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "已编辑项目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "项目 $ID$ 已发送到回收站。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "已将项目 $ID$ 移动到组织。", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "查看了项目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "查看了项目 $ID$ 的密码。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "查看了项目 $ID$ 的隐藏字段。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "查看了项目 $ID$ 的安全代码。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "复制了项目 $ID$ 的密码。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "复制了项目 $ID$ 隐藏字段。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "复制项目 $ID$ 的安全代码。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "项目 $ID$ 已自动填充。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "已创建集合 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "已编辑集合 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "已删除集合 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "已编辑策略 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "已创建群组 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "已编辑群组 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "已删除群组 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "已删除用户 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "已为项目 $ID$ 创建附件。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "已删除项目 $ID$ 的附件。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "已为项目 $ID$ 编辑集合。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "已邀请用户 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "已确认用户 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "已编辑用户 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "已为用户 $ID$ 编辑群组。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "为用户 $ID$ 取消链接 SSO。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "已创建组织 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "已添加组织 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "已移除组织 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "已访问 $ID$ 组织密码库。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "设备" + }, + "view": { + "message": "查看" + }, + "invalidDateRange": { + "message": "无效的日期范围。" + }, + "errorOccurred": { + "message": "发生错误。" + }, + "userAccess": { + "message": "用户权限" + }, + "userType": { + "message": "用户类型" + }, + "groupAccess": { + "message": "群组权限" + }, + "groupAccessUserDesc": { + "message": "编辑此用户隶属的群组。" + }, + "invitedUsers": { + "message": "受邀用户。" + }, + "resendInvitation": { + "message": "重新发送邀请" + }, + "resendEmail": { + "message": "重新发送电子邮件" + }, + "hasBeenReinvited": { + "message": "已重新邀请 $USER$。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "确认" + }, + "confirmUser": { + "message": "确认用户" + }, + "hasBeenConfirmed": { + "message": "已确认 $USER$。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "确认用户" + }, + "usersNeedConfirmed": { + "message": "您的用户已经接受了发给他们的邀请,但仍需要被确认。用户在被确认之前将无法访问组织。" + }, + "startDate": { + "message": "开始日期" + }, + "endDate": { + "message": "结束日期" + }, + "verifyEmail": { + "message": "验证电子邮件" + }, + "verifyEmailDesc": { + "message": "验证您账户的电子邮件地址来解锁所有功能。" + }, + "verifyEmailFirst": { + "message": "首先必须验证您账户的电子邮件地址。" + }, + "checkInboxForVerification": { + "message": "检查您的电子邮件收件箱以获取验证链接。" + }, + "emailVerified": { + "message": "您的电子邮件已验证。" + }, + "emailVerifiedFailed": { + "message": "无法验证您的电子邮件。尝试发送新的验证电子邮件。" + }, + "emailVerificationRequired": { + "message": "需要验证电子邮件地址" + }, + "emailVerificationRequiredDesc": { + "message": "您必须验证您的电子邮件才能使用此功能。" + }, + "updateBrowser": { + "message": "更新浏览器" + }, + "updateBrowserDesc": { + "message": "您使用的是不受支持的Web浏览器。 网页密码库可能无法正常运行。" + }, + "joinOrganization": { + "message": "加入组织" + }, + "joinOrganizationDesc": { + "message": "您已被邀请加入上面的组织。要接受邀请,您需要登录或者创建一个 Bitwarden 账户。" + }, + "inviteAccepted": { + "message": "邀请已接受" + }, + "inviteAcceptedDesc": { + "message": "管理员确认您的成员资格后,您将能访问此组织。到时我们将向您发送电子邮件通知。" + }, + "inviteAcceptFailed": { + "message": "无法接受邀请。请向组织管理员请求发送新的邀请。" + }, + "inviteAcceptFailedShort": { + "message": "无法接受邀请。$DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "记住电子邮件" + }, + "recoverAccountTwoStepDesc": { + "message": "如果您无法通过常规的两步登录方式访问您的账户,您可以使用两步登录恢复代码来禁用账户上的所有两步登录提供程序。" + }, + "recoverAccountTwoStep": { + "message": "恢复账户两步登录" + }, + "twoStepRecoverDisabled": { + "message": "您的账户已禁用两步登录。" + }, + "learnMore": { + "message": "进一步了解" + }, + "deleteRecoverDesc": { + "message": "请在下面输入您的电子邮件地址以恢复和删除您的账户。" + }, + "deleteRecoverEmailSent": { + "message": "如果您的帐户存在,我们已经向您发送了电子邮件,其中包含了进一步说明。" + }, + "deleteRecoverConfirmDesc": { + "message": "您已请求删除您的 Bitwarden 账户。单击下面的按钮以确认。" + }, + "myOrganization": { + "message": "我的组织" + }, + "deleteOrganization": { + "message": "删除组织" + }, + "deletingOrganizationContentWarning": { + "message": "请输入主密码以确认删除 $ORGANIZATION$ 及关联的所有数据。$ORGANIZATION$ 中的密码库数据包括:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "删除后用户账户仍可用,但不再与此组织关联。" + }, + "deletingOrganizationIsPermanentWarning": { + "message": "删除 $ORGANIZATION$ 是永久操作,不可撤销!", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "组织已删除" + }, + "organizationDeletedDesc": { + "message": "该组织和所有相关数据已删除。" + }, + "organizationUpdated": { + "message": "组织已更新" + }, + "taxInformation": { + "message": "税务信息" + }, + "taxInformationDesc": { + "message": "对于美国境内的客户,需要提供邮政编码以满足销售税要求。 对于其他国家,您可以选择提供一个税号(VAT/GST) 和/或地址来显示在您的账单上。" + }, + "billingPlan": { + "message": "计划", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "升级计划", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "为了将您的账户升级到另一个计划,请提供以下信息。同时请确保您账户已添加有一个有效的支付方式。", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "账单 #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "查看账单" + }, + "downloadInvoice": { + "message": "下载账单" + }, + "verifyBankAccount": { + "message": "验证银行账户" + }, + "verifyBankAccountDesc": { + "message": "我们已将两笔小额转账存入您的银行账户(将会在 1-2 个工作日到账)。输入这些金额来验证银行账户。" + }, + "verifyBankAccountInitialDesc": { + "message": "只有美国用户才能使用银行账户付款。您需要验证自己的银行账户。我们将在 1-2 个工作日内进行两笔小额转账,在组织的计费页面输入这些金额来验证银行账户。" + }, + "verifyBankAccountFailureWarning": { + "message": "验证银行账户失败将会错过支付,您的订阅将失效。" + }, + "verifiedBankAccount": { + "message": "您的银行账户已验证。" + }, + "bankAccount": { + "message": "银行账户" + }, + "amountX": { + "message": "金额 $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "汇款路线号码", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "账户号码" + }, + "accountHolderName": { + "message": "账户持有人姓名" + }, + "bankAccountType": { + "message": "账户类型" + }, + "bankAccountTypeCompany": { + "message": "公司(商业)" + }, + "bankAccountTypeIndividual": { + "message": "个体(个人)" + }, + "enterInstallationId": { + "message": "输入您的安装 ID" + }, + "limitSubscriptionDesc": { + "message": "为您的订阅设置席位限制。达到此限制后,您将无法邀请新的用户。" + }, + "maxSeatLimit": { + "message": "最大席位限制(可选)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "最大潜在席位费用" + }, + "addSeats": { + "message": "添加席位", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "移除席位", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "调整订阅将导致按比例调整您的账单总额。如果新邀请的用户超过了您的订阅座位,您将立即收到按比例的额外用户费用。" + }, + "subscriptionUserSeats": { + "message": "您的订阅一共允许 $COUNT$ 位用户。", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "限制订阅(可选)" + }, + "subscriptionSeats": { + "message": "订阅席位" + }, + "subscriptionUpdated": { + "message": "订阅已更新" + }, + "additionalOptions": { + "message": "附加选项" + }, + "additionalOptionsDesc": { + "message": "如需更多订阅管理的帮助,请联系客服支持。" + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "调整订阅将导致按比例调整您的账单总额。如果新邀请的用户超过了您的订阅座位,您将立即收到按比例的额外用户费用。" + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "调整订阅将导致按比例调整您的账单总额。如果新邀请的用户超过了您的订阅席位,您将立即收到额外用户的按比例费用,直到您达到 $MAX$ 席位限制。", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "如果不升级你的计划,你不能邀请超过 $COUNT$ 位用户。", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "如果不升级你的计划,你不能邀请超过 $COUNT$ 位用户。请联系客户支持进行升级。", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "您的订阅允许总共 $COUNT$ 位用户。您的计划由一个外部组织赞助和支付费用。", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "调整订阅将导致按比例调整您的账单总额。如果不增加订阅席位,您将不能邀请超过 $COUNT$ 位用户。", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "要添加的席位数" + }, + "seatsToRemove": { + "message": "要移除的席位数" + }, + "seatsAddNote": { + "message": "添加用户席位将会调整计费总金额,并立即通过您的支付方式进行扣款。 第一笔费用将按当前计费周期的剩余时间按比例分配。" + }, + "seatsRemoveNote": { + "message": "移除用户席位将会调整计费总金额,这笔费用将按比例返回下一笔账单费用中。" + }, + "adjustedSeats": { + "message": "调整了 $AMOUNT$ 个用户席位。", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "密钥已更新" + }, + "updateKeyTitle": { + "message": "更新密钥" + }, + "updateEncryptionKey": { + "message": "更新加密密钥" + }, + "updateEncryptionKeyShortDesc": { + "message": "您目前使用的是过时的加密方案。" + }, + "updateEncryptionKeyDesc": { + "message": "我们已经采用更强大的加密密钥,提供了更强的安全性和更新的功能。更新您的加密密钥非常简单快捷,只需要输入主密码。此次更新最终将强制执行。" + }, + "updateEncryptionKeyWarning": { + "message": "更新加密密钥后,您需要注销所有正在使用的 Bitwarden 应用(比如手机版应用或者浏览器扩展)后重新登录。注销或者重新登录(这将下载新的加密密钥)失败可能会导致数据损坏。我们会尝试自动为您注销,但是,可能会有所延迟。" + }, + "updateEncryptionKeyExportWarning": { + "message": "您保存的任何已加密导出也将变为无效。" + }, + "subscription": { + "message": "订阅" + }, + "loading": { + "message": "正在加载" + }, + "upgrade": { + "message": "升级" + }, + "upgradeOrganization": { + "message": "升级组织" + }, + "upgradeOrganizationDesc": { + "message": "本功能对免费组织不可用。切换到付费计划以解锁更多功能。" + }, + "createOrganizationStep1": { + "message": "创建组织:第一步" + }, + "createOrganizationCreatePersonalAccount": { + "message": "在创建组织之前,首先需要创建一个免费的个人账户。" + }, + "refunded": { + "message": "退款" + }, + "nothingSelected": { + "message": "您没有选择任何内容。" + }, + "acceptPolicies": { + "message": "选中此框表示您同意:" + }, + "acceptPoliciesError": { + "message": "尚未同意服务条款和隐私政策。" + }, + "termsOfService": { + "message": "服务条款" + }, + "privacyPolicy": { + "message": "隐私条款" + }, + "filters": { + "message": "筛选器" + }, + "vaultTimeout": { + "message": "密码库超时时间" + }, + "vaultTimeoutDesc": { + "message": "选择您的密码库何时超时并执行所选的动作。" + }, + "oneMinute": { + "message": "1 分钟" + }, + "fiveMinutes": { + "message": "5 分钟" + }, + "fifteenMinutes": { + "message": "15 分钟" + }, + "thirtyMinutes": { + "message": "30 分钟" + }, + "oneHour": { + "message": "1 小时" + }, + "fourHours": { + "message": "4 小时" + }, + "onRefresh": { + "message": "在浏览器刷新时" + }, + "dateUpdated": { + "message": "更新于", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "密码更新于", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "该组织已被禁用。" + }, + "licenseIsExpired": { + "message": "授权已过期" + }, + "updatedUsers": { + "message": "更新用户" + }, + "selected": { + "message": "已选择" + }, + "ownership": { + "message": "所有权" + }, + "whoOwnsThisItem": { + "message": "谁拥有这个项目?" + }, + "strong": { + "message": "强", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "良好", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "弱", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "很弱", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "脆弱的主密码" + }, + "weakMasterPasswordDesc": { + "message": "您选择的主密码较弱。您应该使用强密码(或密码短语)来正确保护您的 Bitwarden 账户。仍要使用此主密码吗?" + }, + "rotateAccountEncKey": { + "message": "同时轮换账户的加密密钥" + }, + "rotateEncKeyTitle": { + "message": "轮换加密密钥" + }, + "rotateEncKeyConfirmation": { + "message": "您确定要轮换账户的加密密钥吗?" + }, + "attachmentsNeedFix": { + "message": "此项目有需要修复的旧文件附件。" + }, + "attachmentFixDesc": { + "message": "这是一个需要修复的旧文件附件。点击了解更多。" + }, + "fix": { + "message": "修复", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "需要先修复密码库中的旧文件附件,然后才能轮换账户的加密密钥。" + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "免费", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API 密钥" + }, + "apiKeyDesc": { + "message": "您的 API 密钥可用于认证 Bitwarden 公共 API。" + }, + "apiKeyRotateDesc": { + "message": "轮换 API 密钥将使前一个密钥无效。如果你认为当前密钥不再安全,你可以轮换您的 API 密钥。" + }, + "apiKeyWarning": { + "message": "您的 API 密钥拥有组织的全部访问权限。请将其存放在安全的地方。" + }, + "userApiKeyDesc": { + "message": "您的 API 密钥可用于在 Bitwarden CLI 中进行身份验证。" + }, + "userApiKeyWarning": { + "message": "您的 API 密钥是另一套等效的身份验证机制。请严格保密。" + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 客户端证书", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "查看 API 密钥" + }, + "rotateApiKey": { + "message": "轮换 API 密钥" + }, + "selectOneCollection": { + "message": "您必须至少选择一个集合。" + }, + "couldNotChargeCardPayInvoice": { + "message": "我们无法从您的支付卡中扣款。请查看并支付下面列出的待支付账单。" + }, + "inAppPurchase": { + "message": "应用内购买" + }, + "cannotPerformInAppPurchase": { + "message": "使用应用内购买这种支付方式时,您不能执行此操作。" + }, + "manageSubscriptionFromStore": { + "message": "您必须在进行应用内购买的商店中管理订阅。" + }, + "minLength": { + "message": "最小长度" + }, + "clone": { + "message": "克隆" + }, + "masterPassPolicyDesc": { + "message": "设置主密码强度的最低要求。" + }, + "twoStepLoginPolicyDesc": { + "message": "要求用户在个人账户上设置两步登录。" + }, + "twoStepLoginPolicyWarning": { + "message": "非所有者或管理员并且其个人账户未启用两步登录的组织成员将从组织中移除,并将收到一封关于此更改的电子邮件通知。" + }, + "twoStepLoginPolicyUserWarning": { + "message": "您的组织要求您在您的个人账户上启用两步登录。如果您禁用所有两步登录提供程序,您将自动从这些组织中移除。" + }, + "passwordGeneratorPolicyDesc": { + "message": "设置密码生成器配置的最低要求。" + }, + "passwordGeneratorPolicyInEffect": { + "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": "您的新主密码不符合策略要求。" + }, + "minimumNumberOfWords": { + "message": "最少单词数" + }, + "defaultType": { + "message": "默认类型" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "搜索回收站" + }, + "permanentlyDelete": { + "message": "永久删除" + }, + "permanentlyDeleteSelected": { + "message": "永久删除选中项目" + }, + "permanentlyDeleteItem": { + "message": "永久删除项目" + }, + "permanentlyDeleteItemConfirmation": { + "message": "您确定要永久删除此项目吗?" + }, + "permanentlyDeletedItem": { + "message": "已永久删除项目" + }, + "permanentlyDeletedItems": { + "message": "已永久删除项目" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "您选择了要永久删除 $COUNT$ 个项目。确定要永久删除所有这些项目吗?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "已永久删除项目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "恢复" + }, + "restoreSelected": { + "message": "恢复选中的项目" + }, + "restoreItem": { + "message": "恢复项目" + }, + "restoredItem": { + "message": "已恢复项目" + }, + "restoredItems": { + "message": "已恢复项目" + }, + "restoreItemConfirmation": { + "message": "确定要恢复此项目吗?" + }, + "restoreItems": { + "message": "恢复项目" + }, + "restoreSelectedItemsDesc": { + "message": "您选择了要恢复 $COUNT$ 个项目。确实要恢复所有这些项目吗?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "已恢复项目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "超时后注销将解除对密码库的所有访问权限,并需要进行在线身份验证。确定使用此设置吗?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "超时动作确认" + }, + "hidePasswords": { + "message": "隐藏密码" + }, + "countryPostalCodeRequiredDesc": { + "message": "我们仅使用此信息来计算营业税和财务报告。" + }, + "includeVAT": { + "message": "包括 VAT/GST 信息(可选)" + }, + "taxIdNumber": { + "message": "VAT/GST 税号" + }, + "taxInfoUpdated": { + "message": "税务信息已更新。" + }, + "setMasterPassword": { + "message": "设置主密码" + }, + "ssoCompleteRegistration": { + "message": "要完成 SSO 登录配置,请设置一个主密码以访问和保护您的密码库。" + }, + "identifier": { + "message": "标识符" + }, + "organizationIdentifier": { + "message": "组织标识符" + }, + "ssoLogInWithOrgIdentifier": { + "message": "要使用您组织的单点登录门户登录。请首先输入您组织的标识符。" + }, + "enterpriseSingleSignOn": { + "message": "企业单点登录" + }, + "ssoHandOff": { + "message": "您现在可以在扩展中关闭此标签页并继续。" + }, + "includeAllTeamsFeatures": { + "message": "包含所有团队版功能" + }, + "includeSsoAuthentication": { + "message": "通过 SAML2.0 和 OpenID Connect 进行 SSO 身份验证" + }, + "includeEnterprisePolicies": { + "message": "企业策略" + }, + "ssoValidationFailed": { + "message": "SSO 验证失败" + }, + "ssoIdentifierRequired": { + "message": "需要组织标识符。" + }, + "unlinkSso": { + "message": "取消链接 SSO" + }, + "unlinkSsoConfirmation": { + "message": "您确定要断开该组织的 SSO 链接吗?" + }, + "linkSso": { + "message": "链接 SSO" + }, + "singleOrg": { + "message": "单一组织" + }, + "singleOrgDesc": { + "message": "限制用户加入任何其他组织。" + }, + "singleOrgBlockCreateMessage": { + "message": "您当前的组织策略禁止您加入多个组织。请联系您的组织管理员,或从其他 Bitwarden 账户注册。" + }, + "singleOrgPolicyWarning": { + "message": "不是所有者或管理员并且已是其他组织的成员的组织成员将从您的组织中移除。" + }, + "requireSso": { + "message": "单点登录身份验证" + }, + "requireSsoPolicyDesc": { + "message": "要求用户使用企业单点登录方式登录。" + }, + "prerequisite": { + "message": "先决条件" + }, + "requireSsoPolicyReq": { + "message": "启用此策略前,需先启用单一组织企业策略。" + }, + "requireSsoPolicyReqError": { + "message": "单一组织策略未启用。" + }, + "requireSsoExemption": { + "message": "组织的所有者和管理员豁免此策略。" + }, + "sendTypeFile": { + "message": "文件" + }, + "sendTypeText": { + "message": "文本" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "删除 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "确定要删除此 Send 吗?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "这是什么类型的 Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "当前访问次数" + }, + "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." + }, + "disabled": { + "message": "已禁用" + }, + "sendLink": { + "message": "Send 链接", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "复制 Send 链接", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "移除密码" + }, + "removedPassword": { + "message": "密码已移除" + }, + "removePasswordConfirmation": { + "message": "确定移除此密码?" + }, + "hideEmail": { + "message": "对收件人隐藏我的电子邮件地址。" + }, + "disableThisSend": { + "message": "禁用此 Send 以阻止任何人访问它。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "所有 Send" + }, + "maxAccessCountReached": { + "message": "已达最大访问次数", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "等待删除" + }, + "expired": { + "message": "已过期" + }, + "searchSends": { + "message": "搜索 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "此 Send 受到密码保护。在下方输入密码以继续。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "不知道密码?请向提供此 Send 的发件人索要密码。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "此 Send 默认隐藏。您可使用下方的按钮切换其可见性。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "下载文件" + }, + "sendAccessUnavailable": { + "message": "您尝试访问的 Send 不存在或不再可用。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "没有找到与此 Send 关联的文件。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "没有可列出的 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "紧急访问" + }, + "emergencyAccessDesc": { + "message": "授予和管理可信联系人的紧急访问权限。可信联系人可以在紧急情况下请求获取查看或接管您账户的权限。查阅我们的帮助页面以了解更多关于零知识共享的工作原理和细节。" + }, + "emergencyAccessOwnerWarning": { + "message": "您是一个或多个组织的拥有者。如果您授予紧急联系人接管权限,他们在接管后可作为拥有者持有您的所有权限。" + }, + "trustedEmergencyContacts": { + "message": "可信的紧急联系人" + }, + "noTrustedContacts": { + "message": "您尚未添加任何紧急联系人,请邀请可信的联系人以开始。" + }, + "addEmergencyContact": { + "message": "添加紧急联系人" + }, + "designatedEmergencyContacts": { + "message": "已指定为紧急联系人" + }, + "noGrantedAccess": { + "message": "您尚未被任何人指定为紧急联系人。" + }, + "inviteEmergencyContact": { + "message": "邀请紧急联系人" + }, + "editEmergencyContact": { + "message": "编辑紧急联系人" + }, + "inviteEmergencyContactDesc": { + "message": "通过在下面输入他们的 Bitwarden 账户电子邮件地址来邀请新的紧急联系人。 如果他们还没有 Bitwarden 账户,将提示创建一个新账户。" + }, + "emergencyAccessRecoveryInitiated": { + "message": "紧急访问已发起" + }, + "emergencyAccessRecoveryApproved": { + "message": "紧急访问已批准" + }, + "viewDesc": { + "message": "可以查看您拥有的密码库中的所有项目。" + }, + "takeover": { + "message": "接管" + }, + "takeoverDesc": { + "message": "可以使用新的主密码重置您的账户。" + }, + "waitTime": { + "message": "等待时间" + }, + "waitTimeDesc": { + "message": "自动授予访问权限之前的等待时间。" + }, + "oneDay": { + "message": "1 天" + }, + "days": { + "message": "$DAYS$ 天", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "已邀请用户。" + }, + "acceptEmergencyAccess": { + "message": "您已被邀请成为上面所列用户的紧急联系人。要接受邀请,您需要登录或创建一个新的 Bitwarden 账户。" + }, + "emergencyInviteAcceptFailed": { + "message": "无法接受邀请。请向用户请求发送新的邀请。" + }, + "emergencyInviteAcceptFailedShort": { + "message": "无法接受邀请。$DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "身份确认后,您可以访问该用户的紧急选项。当发生这种情况时,我们会向您发送一封电子邮件。" + }, + "requestAccess": { + "message": "请求访问权限" + }, + "requestAccessConfirmation": { + "message": "您确定要申请紧急访问吗?这将在 $WAITTIME$ 天后或当用户手动批准请求时获得访问权限。", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "来自 $USER$ 的紧急访问请求。我们将通过电子邮件通知您何时可以继续。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "批准" + }, + "reject": { + "message": "拒绝" + }, + "approveAccessConfirmation": { + "message": "您确定要批准紧急访问吗?这将允许 $USER$ $ACTION$ 您的账户。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "紧急访问已批准。" + }, + "emergencyRejected": { + "message": "紧急访问已拒绝" + }, + "passwordResetFor": { + "message": "$USER$ 的密码已重置。您现在可以使用新密码登录了。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "个人所有权" + }, + "personalOwnershipPolicyDesc": { + "message": "通过移除个人所有权选项,要求用户将密码库项目保存到组织。" + }, + "personalOwnershipExemption": { + "message": "组织的所有者和管理员豁免此策略。" + }, + "personalOwnershipSubmitError": { + "message": "由于企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。" + }, + "disableSend": { + "message": "禁用 Send" + }, + "disableSendPolicyDesc": { + "message": "不允许用户创建和编辑 Bitwarden Send。但允许删除现有的 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "可以管理组织策略的组织用户豁免此策略的执行。" + }, + "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." + }, + "sendOptions": { + "message": "Send 选项", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "设置用于创建和编辑 Send 的选项。", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "可以管理组织策略的组织用户豁免此策略的执行。" + }, + "disableHideEmail": { + "message": "不允许用户在创建或编辑 Send 时隐藏他们的电子邮件地址。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "以下组织策略目前正起作用:" + }, + "sendDisableHideEmailInEffect": { + "message": "用户在创建或编辑 Send 时不允许隐藏他们的电子邮件地址。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "策略 $ID$ 已修改。", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "计划价格" + }, + "estimatedTax": { + "message": "预计税额" + }, + "custom": { + "message": "自定义" + }, + "customDesc": { + "message": "高级配置允许对用户权限进行更多的粒度控制。" + }, + "permissions": { + "message": "权限" + }, + "accessEventLogs": { + "message": "访问事件日志" + }, + "accessImportExport": { + "message": "访问导入/导出" + }, + "accessReports": { + "message": "访问报告" + }, + "missingPermissions": { + "message": "您缺乏执行此操作所需的权限。" + }, + "manageAllCollections": { + "message": "管理所有集合" + }, + "createNewCollections": { + "message": "创建新的集合" + }, + "editAnyCollection": { + "message": "编辑任何集合" + }, + "deleteAnyCollection": { + "message": "删除任何集合" + }, + "manageAssignedCollections": { + "message": "管理已分配的集合" + }, + "editAssignedCollections": { + "message": "编辑已分配的集合" + }, + "deleteAssignedCollections": { + "message": "删除已分配的集合" + }, + "manageGroups": { + "message": "管理群组" + }, + "managePolicies": { + "message": "管理策略" + }, + "manageSso": { + "message": "管理 SSO" + }, + "manageUsers": { + "message": "管理用户" + }, + "manageResetPassword": { + "message": "管理密码重置" + }, + "disableRequiredError": { + "message": "您必须先手动禁用 $POLICYNAME$ 策略,然后才能禁用此策略。", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "组织策略正在影响您的所有权选项。" + }, + "personalOwnershipPolicyInEffectImports": { + "message": "组织策略已禁用将项目导入您的个人密码库。" + }, + "personalOwnershipCheckboxDesc": { + "message": "为组织用户禁用个人所有权" + }, + "textHiddenByDefault": { + "message": "访问 Send 时,默认将隐藏文本", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "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": "您要发送的文件。" + }, + "copySendLinkOnSave": { + "message": "保存时复制链接到剪贴板以便分享此 Send。" + }, + "sendLinkLabel": { + "message": "Send 链接", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send 能轻松、安全地向他人传送敏感的临时信息。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "进一步了解", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "直接与其他人分享文本或文件。" + }, + "sendVaultCardLearnMore": { + "message": "进一步了解", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "参见", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "工作原理", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "或", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "立即体验", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "或", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "注册", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "来马上尝试。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden 用户 $USER_IDENTIFIER$ 与您分享了以下内容", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "创建此 Send 的 Bitwarden 用户已选择隐藏他们的电子邮件地址。在使用或下载此链接的内容之前,应确保您信任此链接的来源。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "所提供的过期日期无效。" + }, + "deletionDateIsInvalid": { + "message": "所提供的删除日期无效。" + }, + "expirationDateAndTimeRequired": { + "message": "需要过期日期和时间。" + }, + "deletionDateAndTimeRequired": { + "message": "需要删除日期和时间。" + }, + "dateParsingError": { + "message": "保存您的删除和过期日期时出错。" + }, + "webAuthnFallbackMsg": { + "message": "要验证您的 2FA,请点击下面的按钮。" + }, + "webAuthnAuthenticate": { + "message": "验证 WebAuthn" + }, + "webAuthnNotSupported": { + "message": "此浏览器不支持 WebAuthn。" + }, + "webAuthnSuccess": { + "message": "WebAuthn 验证成功!您可以关闭此标签页。" + }, + "hintEqualsPassword": { + "message": "密码提示不能与密码相同。" + }, + "enrollPasswordReset": { + "message": "注册密码重置" + }, + "enrolledPasswordReset": { + "message": "已注册密码重置" + }, + "withdrawPasswordReset": { + "message": "撤销密码重置" + }, + "enrollPasswordResetSuccess": { + "message": "注册成功!" + }, + "withdrawPasswordResetSuccess": { + "message": "撤销成功!" + }, + "eventEnrollPasswordReset": { + "message": "用户 $ID$ 注册了密码重置协助。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "用户 $ID$ 撤销了密码重置协助。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "重置用户 $ID$ 的主密码。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "重置用户 $ID$ 的 SSO 链接", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ 首次使用 SSO 登录", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "重置密码" + }, + "resetPasswordLoggedOutWarning": { + "message": "继续操作会将 $NAME$ 登出当前会话,要求他们重新登录。在其他设备上的活动会话可能继续活动长达一个小时。", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "此用户" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "一个或多个组织策略要求主密码满足下列要求:" + }, + "resetPasswordSuccess": { + "message": "密码重置成功" + }, + "resetPasswordEnrollmentWarning": { + "message": "注册后将允许组织管理员更改您的主密码。确定要注册吗?" + }, + "resetPasswordPolicy": { + "message": "主密码重置" + }, + "resetPasswordPolicyDescription": { + "message": "允许组织管理员重置组织用户的主密码。" + }, + "resetPasswordPolicyWarning": { + "message": "组织中的用户自行注册或被自动注册后,管理员才能重置他们的主密码。" + }, + "resetPasswordPolicyAutoEnroll": { + "message": "自动注册" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "所有接受邀请的用戶,将会被自动注册密码重置,并且不允许撤销。" + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "已经在组织中的用户将不会被注册密码重置。需要他们自行注册后,管理员才能重置他们的主密码。" + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "要求为新用户启用自动注册" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "此组织有一个企业策略,将自动为你注册密码重置。注册后将允许组织管理员更改您的主密码。" + }, + "resetPasswordOrgKeysError": { + "message": "组织密钥响应为空" + }, + "resetPasswordDetailsError": { + "message": "重置密码详细信息响应为空" + }, + "trashCleanupWarning": { + "message": "回收站中超过 30 天的项目将会被自动删除。" + }, + "trashCleanupWarningSelfHosted": { + "message": "回收站中超过一定时间的项目将会被自动删除。" + }, + "passwordPrompt": { + "message": "重新询问主密码" + }, + "passwordConfirmation": { + "message": "确认主密码" + }, + "passwordConfirmationDesc": { + "message": "此操作受到保护。若要继续,请重新输入您的主密码以验证您的身份。" + }, + "reinviteSelected": { + "message": "重新发送邀请" + }, + "noSelectedUsersApplicable": { + "message": "此操作不适用于所选用户。" + }, + "removeUsersWarning": { + "message": "您确定要移除以下用户吗?该过程可能需要几秒钟才能完成,并且不能中断或取消。" + }, + "theme": { + "message": "主题" + }, + "themeDesc": { + "message": "为您的网页密码库选择一个主题。" + }, + "themeSystem": { + "message": "使用系统主题" + }, + "themeDark": { + "message": "深色" + }, + "themeLight": { + "message": "浅色" + }, + "confirmSelected": { + "message": "确认选择" + }, + "bulkConfirmStatus": { + "message": "批量操作状态" + }, + "bulkConfirmMessage": { + "message": "确认成功。" + }, + "bulkReinviteMessage": { + "message": "重新邀请成功。" + }, + "bulkRemovedMessage": { + "message": "移除成功" + }, + "bulkFilteredMessage": { + "message": "排除,不适用于此操作。" + }, + "fingerprint": { + "message": "指纹" + }, + "removeUsers": { + "message": "移除用户" + }, + "error": { + "message": "错误" + }, + "resetPasswordManageUsers": { + "message": "必须启用管理密码重置权限后才能启用管理用户" + }, + "setupProvider": { + "message": "提供商设置" + }, + "setupProviderLoginDesc": { + "message": "您已被邀请设置一个新的提供商。要继续,您需要登录或创建一个新的 Bitwarden 账户。" + }, + "setupProviderDesc": { + "message": "请在下面输入详细信息以完成提供商设置。如果您有任何疑问,请联系客户支持。" + }, + "providerName": { + "message": "提供商名称" + }, + "providerSetup": { + "message": "已完成提供商设置。" + }, + "clients": { + "message": "客户" + }, + "providerAdmin": { + "message": "提供商管理" + }, + "providerAdminDesc": { + "message": "能够管理您的提供商的所有方面的具有最高访问权限的用户也可以访问和管理客户组织。" + }, + "serviceUser": { + "message": "服务用户" + }, + "serviceUserDesc": { + "message": "服务用户可以访问和管理所有客户组织。" + }, + "providerInviteUserDesc": { + "message": "通过在下面输入他们的 Bitwarden 账户电子邮件地址,邀请新用户加入您的提供商。如果他们还没有 Bitwarden 账户,将被提示创建一个新的账户。" + }, + "joinProvider": { + "message": "加入提供商" + }, + "joinProviderDesc": { + "message": "您已被邀请加入上面列出的提供商。要接受邀请,您需要登录或创建一个新的 Bitwarden 账户。" + }, + "providerInviteAcceptFailed": { + "message": "无法接受邀请。请联系提供商管理员发送新的邀请。" + }, + "providerInviteAcceptedDesc": { + "message": "管理员确认您的会员资格后,您就可以访问此提供商了。发生这种情况时,我们会向您发送一封电子邮件。" + }, + "providerUsersNeedConfirmed": { + "message": "您有用户接受了他们的邀请,但仍然需要确认。用户在确认之前将无法访问提供商。" + }, + "provider": { + "message": "提供商" + }, + "newClientOrganization": { + "message": "新客户组织" + }, + "newClientOrganizationDesc": { + "message": "创建一个新的客户组织,该组织将作为提供商与你关联。您可以访问和管理这个组织。" + }, + "addExistingOrganization": { + "message": "添加现有组织" + }, + "myProvider": { + "message": "我的提供商" + }, + "addOrganizationConfirmation": { + "message": "您确定要将 $ORGANIZATION$ 添加为 $PROVIDER$ 的客户吗?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "组织已成功添加到此提供商" + }, + "accessingUsingProvider": { + "message": "正在使用提供商 $PROVIDER$ 访问组织", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "提供商已被禁用。" + }, + "providerUpdated": { + "message": "提供商已更新" + }, + "yourProviderIs": { + "message": "您的提供商是 $PROVIDER$。他们对您的组织拥有管理和计费权限。", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "组织 $ORGANIZATION$ 已从您的提供商分离。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "您确定要分离这个组织吗?该组织将继续存在,但不再由此提供商管理。" + }, + "add": { + "message": "添加" + }, + "updatedMasterPassword": { + "message": "已更新主密码" + }, + "updateMasterPassword": { + "message": "更新主密码" + }, + "updateMasterPasswordWarning": { + "message": "您的主密码最近被您组织的管理员更改过。要访问密码库,您必须立即更新主密码。继续操作将使您退出当前会话,要求您重新登录。其他设备上的活动会话可能会继续保持活动状态长达一小时。" + }, + "masterPasswordInvalidWarning": { + "message": "您的主密码不符合此组织的策略要求。要加入此组织,您必须现在更新您的主密码。继续操作将您注销当前会话,要求您重新登录。在其他设备上的活动会话可能继续活动长达一小时。" + }, + "maximumVaultTimeout": { + "message": "密码库超时时间" + }, + "maximumVaultTimeoutDesc": { + "message": "为所有用户配置最大密码库超时时间。" + }, + "maximumVaultTimeoutLabel": { + "message": "最大密码库超时时间" + }, + "invalidMaximumVaultTimeout": { + "message": "无效的最大密码库超时时间。" + }, + "hours": { + "message": "小时" + }, + "minutes": { + "message": "分钟" + }, + "vaultTimeoutPolicyInEffect": { + "message": "您的组织策略正在影响您的密码库超时时间。最大允许的密码库超时时间是 $HOURS$ 小时 $MINUTES$ 分钟。", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "customVaultTimeout": { + "message": "自定义密码库超时时间" + }, + "vaultTimeoutToLarge": { + "message": "您的密码库超时时间超出了您的组织设置的限制。" + }, + "disablePersonalVaultExport": { + "message": "禁用个人密码库导出" + }, + "disablePersonalVaultExportDesc": { + "message": "禁止用户导出个人密码库数据。" + }, + "vaultExportDisabled": { + "message": "密码库导出已禁用" + }, + "personalVaultExportPolicyInEffect": { + "message": "一个或多个组织策略阻止您导出个人密码库。" + }, + "selectType": { + "message": "选择 SSO 类型" + }, + "type": { + "message": "类型" + }, + "openIdConnectConfig": { + "message": "OpenID 连接配置" + }, + "samlSpConfig": { + "message": "SAML 服务提供程序配置" + }, + "samlIdpConfig": { + "message": "SAML 身份提供程序配置" + }, + "callbackPath": { + "message": "回调路径" + }, + "signedOutCallbackPath": { + "message": "注销回调路径" + }, + "authority": { + "message": "权威机构" + }, + "clientId": { + "message": "客户 ID" + }, + "clientSecret": { + "message": "客户密钥" + }, + "metadataAddress": { + "message": "元数据地址" + }, + "oidcRedirectBehavior": { + "message": "OIDC 重定向行为" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "从用户信息端点获取声明" + }, + "additionalScopes": { + "message": "自定义范围" + }, + "additionalUserIdClaimTypes": { + "message": "自定义用户 ID 声明类型" + }, + "additionalEmailClaimTypes": { + "message": "电子邮件声明类型" + }, + "additionalNameClaimTypes": { + "message": "自定义名称声明类型" + }, + "acrValues": { + "message": "请求的身份验证上下文类参考值" + }, + "expectedReturnAcrValue": { + "message": "响应中预期的「acr」声明值" + }, + "spEntityId": { + "message": "SP 实体 ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 元数据 URL" + }, + "spAcsUrl": { + "message": "断言消费者服务(ACS) URL" + }, + "spNameIdFormat": { + "message": "名称 ID 格式" + }, + "spOutboundSigningAlgorithm": { + "message": "出站签名算法" + }, + "spSigningBehavior": { + "message": "签名行为" + }, + "spMinIncomingSigningAlgorithm": { + "message": "最小入站签名算法" + }, + "spWantAssertionsSigned": { + "message": "希望断言被签名" + }, + "spValidateCertificates": { + "message": "验证证书" + }, + "idpEntityId": { + "message": "实体 ID" + }, + "idpBindingType": { + "message": "绑定类型" + }, + "idpSingleSignOnServiceUrl": { + "message": "单点登录服务 URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "单点登出服务 URL" + }, + "idpX509PublicCert": { + "message": "X509 公共证书" + }, + "idpOutboundSigningAlgorithm": { + "message": "出站签名算法" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "允许未经请求的身份验证响应" + }, + "idpAllowOutboundLogoutRequests": { + "message": "允许出站注销请求" + }, + "idpSignAuthenticationRequests": { + "message": "签名身份验证请求" + }, + "ssoSettingsSaved": { + "message": "单点登录配置已保存。" + }, + "sponsoredFamilies": { + "message": "免费 Bitwarden 家庭" + }, + "sponsoredFamiliesEligible": { + "message": "您和您的家人可使用免费的 Bitwarden 家庭版计划。即使您不在公司上班,您也可以使用个人电子邮件兑换此计划,以保护您的数据安全。" + }, + "sponsoredFamiliesEligibleCard": { + "message": "立即兑换免费的 Bitwarden 家庭版计划,即使您不在公司上班也能确保您的数据安全。" + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden 家庭版计划包含" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "最多 6 个用户的高级访问权限" + }, + "sponsoredFamiliesSharedCollections": { + "message": "用于家庭账号密码共享的集合" + }, + "badToken": { + "message": "链接已失效。请让赞助方重新发送邀请。" + }, + "reclaimedFreePlan": { + "message": "已回收免费计划" + }, + "redeem": { + "message": "兑换" + }, + "sponsoredFamiliesSelectOffer": { + "message": "选择您希望被赞助的组织" + }, + "familiesSponsoringOrgSelect": { + "message": "您想兑换哪一个免费家庭邀请?" + }, + "sponsoredFamiliesEmail": { + "message": "输入您的个人电子邮件以兑换 Bitwarden 家庭" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "如果您离开或被从这个组织中移除,您的家庭计划将在计费周期结束时到期。" + }, + "acceptBitwardenFamiliesHelp": { + "message": "接受现有组织的邀请或创建一个新的家庭组织。" + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "您已被邀请加入 Bitwarden 家庭计划组织。要继续,您需要登录到接受邀请的账户。" + }, + "sponsoredFamiliesAcceptFailed": { + "message": "无法接受邀请。请重新发送来自您企业账户的邀请邮件,然后重试。" + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "无法接受邀请。$DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "接受免费的 Bitwarden 家庭组织" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "免费 Bitwarden 家庭邀请已成功兑换" + }, + "redeemed": { + "message": "已兑换" + }, + "redeemedAccount": { + "message": "已兑换账户" + }, + "revokeAccount": { + "message": "撤销账户 $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "重新发送赞助邮件到 $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "免费家庭计划" + }, + "redeemNow": { + "message": "立即兑换" + }, + "recipient": { + "message": "收件人" + }, + "removeSponsorship": { + "message": "移除赞助" + }, + "removeSponsorshipConfirmation": { + "message": "移除赞助后,将由您自己负责此订阅及其相关的账单。您确定要继续吗?" + }, + "sponsorshipCreated": { + "message": "赞助已创建" + }, + "revoke": { + "message": "撤销" + }, + "emailSent": { + "message": "电子邮件已发送" + }, + "revokeSponsorshipConfirmation": { + "message": "移除这个账户后,家庭组织的所有者将负责此订阅及其相关的账单。您确定要继续吗?" + }, + "removeSponsorshipSuccess": { + "message": "赞助已移除" + }, + "ssoKeyConnectorUnavailable": { + "message": "无法连接到 Key Connector,请稍后再试。" + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "sendVerificationCode": { + "message": "发送验证码到您的电子邮箱" + }, + "sendCode": { + "message": "发送验证码" + }, + "codeSent": { + "message": "验证码已发送" + }, + "verificationCode": { + "message": "验证码" + }, + "confirmIdentity": { + "message": "确认您的身份以继续。" + }, + "verificationCodeRequired": { + "message": "必须填写验证码。" + }, + "invalidVerificationCode": { + "message": "无效的验证码" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ 使用自托管密钥服务器 SSO。这个组织的成员登录时将不再需要主密码。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "离开组织" + }, + "removeMasterPassword": { + "message": "移除主密码" + }, + "removedMasterPassword": { + "message": "主密码已移除。" + }, + "allowSso": { + "message": "允许 SSO 身份验证" + }, + "allowSsoDesc": { + "message": "设置后,您的配置将被保存,成员将能够使用他们的身份提供程序凭据进行身份验证。" + }, + "ssoPolicyHelpStart": { + "message": "启用", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO 身份验证策略", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "要求所有会员使用 SSO 登录。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "需要先设置 Key Connector 解密,然后才能启用 SSO 身份验证和单一组织策略。" + }, + "memberDecryptionOption": { + "message": "成员解密选项" + }, + "memberDecryptionPassDesc": { + "message": "验证后,成员将使用他们的主密码来解密密码库数据。" + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "连接 SSO 登录到您的自托管解密密钥服务器。使用此选项后,成员将不再需要使用他们的主密码来解密密码库数据。联系 Bitwarden 支持以获取设置指导。" + }, + "keyConnectorPolicyRestriction": { + "message": "「SSO 登录和 Key Connector 解密」已启用。此策略仅适用于所有者和管理员。" + }, + "enabledSso": { + "message": "已启用 SSO" + }, + "disabledSso": { + "message": "已禁用 SSO" + }, + "enabledKeyConnector": { + "message": "已启用 Key Connector" + }, + "disabledKeyConnector": { + "message": "已禁用 Key Connector" + }, + "keyConnectorWarning": { + "message": "一旦成员开始使用 Key Connector,您的组织就无法恢复到使用主密码解密。仅当您可以轻松地部署和管理密钥服务器时才继续。" + }, + "migratedKeyConnector": { + "message": "已迁移到 Key Connector" + }, + "paymentSponsored": { + "message": "请提供一个与组织关联的付款方式。无需担心,我们不会向您收取任何费用,除非您选择附加功能或您的赞助到期。 " + }, + "orgCreatedSponsorshipInvalid": { + "message": "赞助邀请已过期,您可以删除您创建的组织,以避免 7 天试用期结束时收取费用。您也可以关闭这个提示,以保留此组织并承担计费责任。" + }, + "newFamiliesOrganization": { + "message": "新的家庭组织" + }, + "acceptOffer": { + "message": "接受邀请" + }, + "sponsoringOrg": { + "message": "赞助组织" + }, + "keyConnectorTest": { + "message": "测试" + }, + "keyConnectorTestSuccess": { + "message": "成功!已连接 Key Connector。" + }, + "keyConnectorTestFail": { + "message": "无法连接 Key Connector。请检查 URL。" + }, + "sponsorshipTokenHasExpired": { + "message": "此赞助邀请已过期。" + }, + "freeWithSponsorship": { + "message": "免费赞助" + }, + "formErrorSummaryPlural": { + "message": "上面的 $COUNT$ 个字段需要您注意。", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "上面的 1 个字段需要您注意。" + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ 必填。", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "必填" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "如果实体 ID 不是一个 URL,则必填。" + }, + "openIdOptionalCustomizations": { + "message": "可选定制" + }, + "openIdAuthorityRequired": { + "message": "如果授权无效,则必填。" + }, + "separateMultipleWithComma": { + "message": "使用逗号分隔。" + }, + "sessionTimeout": { + "message": "您的会话已超时。请返回并尝试重新登录。" + }, + "exportingPersonalVaultTitle": { + "message": "导出个人密码库" + }, + "exportingOrganizationVaultTitle": { + "message": "导出组织密码库" + }, + "exportingPersonalVaultDescription": { + "message": "仅会导出与 $EMAIL$ 关联的个人密码库。组织密码库的项目不会导出。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "仅会导出与 $ORGANIZATION$ 关联的组织密码库。个人或其他组织的密码库项目不会导出。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "返回到报告" + }, + "generator": { + "message": "生成器" + }, + "whatWouldYouLikeToGenerate": { + "message": "您想要生成什么?" + }, + "passwordType": { + "message": "密码类型" + }, + "regenerateUsername": { + "message": "重新生成用户名" + }, + "generateUsername": { + "message": "生成用户名" + }, + "usernameType": { + "message": "用户名类型" + }, + "plusAddressedEmail": { + "message": "附加地址电子邮件", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "使用您的电子邮件提供商的子地址功能。" + }, + "catchallEmail": { + "message": "Catch-all 电子邮件" + }, + "catchallEmailDesc": { + "message": "使用您的域名配置的 Catch-all 收件箱。" + }, + "random": { + "message": "随机" + }, + "randomWord": { + "message": "随机单词" + }, + "service": { + "message": "服务" + } +} diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json new file mode 100644 index 0000000000..b94239b5f5 --- /dev/null +++ b/apps/web/src/locales/zh_TW/messages.json @@ -0,0 +1,4882 @@ +{ + "pageTitle": { + "message": "$APP_NAME$ 網頁版密碼庫", + "description": "The title of the website in the browser window.", + "placeholders": { + "app_name": { + "content": "$1", + "example": "Bitwarden" + } + } + }, + "whatTypeOfItem": { + "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": "密碼" + }, + "newPassword": { + "message": "新密碼" + }, + "passphrase": { + "message": "密碼短語" + }, + "notes": { + "message": "備註" + }, + "customFields": { + "message": "自訂欄位" + }, + "cardholderName": { + "message": "持卡人姓名" + }, + "number": { + "message": "號碼" + }, + "brand": { + "message": "發卡組織" + }, + "expiration": { + "message": "逾期" + }, + "securityCode": { + "message": "安全代碼 (CVV)" + }, + "identityName": { + "message": "身分名稱" + }, + "company": { + "message": "公司" + }, + "ssn": { + "message": "社會保險號碼" + }, + "passportNumber": { + "message": "護照號碼" + }, + "licenseNumber": { + "message": "許可證號碼" + }, + "email": { + "message": "電子郵件" + }, + "phone": { + "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": "十二月" + }, + "title": { + "message": "稱呼" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "逾期月份" + }, + "expirationYear": { + "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." + }, + "remove": { + "message": "移除" + }, + "unassigned": { + "message": "未指派" + }, + "noneFolder": { + "message": "(未分類)", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "新增資料夾" + }, + "editFolder": { + "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." + }, + "never": { + "message": "永不" + }, + "toggleVisibility": { + "message": "切換可見度" + }, + "toggleCollapse": { + "message": "切換折疊", + "description": "Toggling an expand/collapse state." + }, + "generatePassword": { + "message": "產生密碼" + }, + "checkPassword": { + "message": "檢查密碼是否已外洩。" + }, + "passwordExposed": { + "message": "此密碼已外洩了 $VALUE$ 次,應立即變更密碼。", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "任何已知的外洩密碼資料庫中都沒有此密碼,它目前是安全的。" + }, + "save": { + "message": "儲存" + }, + "cancel": { + "message": "取消" + }, + "canceled": { + "message": "已取消" + }, + "close": { + "message": "關閉" + }, + "delete": { + "message": "刪除" + }, + "favorite": { + "message": "我的最愛" + }, + "unfavorite": { + "message": "取消最愛" + }, + "edit": { + "message": "編輯" + }, + "searchCollection": { + "message": "搜尋集合" + }, + "searchFolder": { + "message": "搜尋資料夾" + }, + "searchFavorites": { + "message": "搜尋我的最愛" + }, + "searchType": { + "message": "搜尋類型", + "description": "Search item type" + }, + "searchVault": { + "message": "搜尋密碼庫" + }, + "allItems": { + "message": "所有項目" + }, + "favorites": { + "message": "我的最愛" + }, + "types": { + "message": "類型" + }, + "typeLogin": { + "message": "登入" + }, + "typeCard": { + "message": "支付卡" + }, + "typeIdentity": { + "message": "身分" + }, + "typeSecureNote": { + "message": "安全筆記" + }, + "typeLoginPlural": { + "message": "登入資料" + }, + "typeCardPlural": { + "message": "支付卡" + }, + "typeIdentityPlural": { + "message": "身分" + }, + "typeSecureNotePlural": { + "message": "安全筆記" + }, + "folders": { + "message": "資料夾" + }, + "collections": { + "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": "國家" + }, + "shared": { + "message": "已共用" + }, + "attachments": { + "message": "附件" + }, + "select": { + "message": "選擇" + }, + "addItem": { + "message": "新增項目" + }, + "editItem": { + "message": "編輯項目" + }, + "viewItem": { + "message": "檢視項目" + }, + "ex": { + "message": "例如", + "description": "Short abbreviation for 'example'." + }, + "other": { + "message": "其他" + }, + "share": { + "message": "共用" + }, + "moveToOrganization": { + "message": "移動至組織" + }, + "valueCopied": { + "message": "$VALUE$ 已複製", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "copyValue": { + "message": "複製值", + "description": "Copy value to clipboard" + }, + "copyPassword": { + "message": "複製密碼", + "description": "Copy password to clipboard" + }, + "copyUsername": { + "message": "複製使用者名稱", + "description": "Copy username to clipboard" + }, + "copyNumber": { + "message": "複製號碼", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "複製安全代碼", + "description": "Copy credit card security code (CVV)" + }, + "copyUri": { + "message": "複製 URI", + "description": "Copy URI to clipboard" + }, + "myVault": { + "message": "我的密碼庫" + }, + "vault": { + "message": "密碼庫" + }, + "moveSelectedToOrg": { + "message": "移動已選取項目至組織" + }, + "deleteSelected": { + "message": "刪除已選取項目" + }, + "moveSelected": { + "message": "移動已選取項目" + }, + "selectAll": { + "message": "全選" + }, + "unselectAll": { + "message": "取消全選" + }, + "launch": { + "message": "啟動" + }, + "newAttachment": { + "message": "新增附件" + }, + "deletedAttachment": { + "message": "附件已刪除" + }, + "deleteAttachmentConfirmation": { + "message": "確定要刪除此附件嗎?" + }, + "attachmentSaved": { + "message": "附件已儲存。" + }, + "file": { + "message": "檔案" + }, + "selectFile": { + "message": "選擇檔案。" + }, + "maxFileSize": { + "message": "檔案最大為 500MB。" + }, + "updateKey": { + "message": "更新加密金鑰前不能使用此功能。" + }, + "addedItem": { + "message": "已新增項目" + }, + "editedItem": { + "message": "已編輯項目" + }, + "movedItemToOrg": { + "message": "已將 $ITEMNAME$ 移動至 $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "movedItemsToOrg": { + "message": "將已選取項目移動至 $ORGNAME$", + "placeholders": { + "orgname": { + "content": "$1", + "example": "Company Name" + } + } + }, + "deleteItem": { + "message": "刪除項目" + }, + "deleteFolder": { + "message": "刪除資料夾" + }, + "deleteAttachment": { + "message": "刪除附件" + }, + "deleteItemConfirmation": { + "message": "確定要刪除此項目嗎?" + }, + "deletedItem": { + "message": "項目已移至垃圾桶" + }, + "deletedItems": { + "message": "項目已移至垃圾桶" + }, + "movedItems": { + "message": "已移動項目" + }, + "overwritePasswordConfirmation": { + "message": "您確定要覆寫目前的密碼嗎?" + }, + "editedFolder": { + "message": "已編輯資料夾" + }, + "addedFolder": { + "message": "已新增資料夾" + }, + "deleteFolderConfirmation": { + "message": "您確定要刪除此資料夾嗎?" + }, + "deletedFolder": { + "message": "已刪除的資料夾" + }, + "loggedOut": { + "message": "已登出" + }, + "loginExpired": { + "message": "您的登入工作階段已逾期。" + }, + "logOutConfirmation": { + "message": "您確定要登出嗎?" + }, + "logOut": { + "message": "登出" + }, + "ok": { + "message": "確定" + }, + "yes": { + "message": "是" + }, + "no": { + "message": "否" + }, + "loginOrCreateNewAccount": { + "message": "登入或建立帳戶以存取您的安全密碼庫。" + }, + "createAccount": { + "message": "建立帳戶" + }, + "logIn": { + "message": "登入" + }, + "submit": { + "message": "送出" + }, + "emailAddressDesc": { + "message": "您需要使用您的電子郵件地址登入。" + }, + "yourName": { + "message": "您的名稱" + }, + "yourNameDesc": { + "message": "我們應該怎樣稱呼您?" + }, + "masterPass": { + "message": "主密碼" + }, + "masterPassDesc": { + "message": "主密碼是用於存取密碼庫的密碼。它非常重要,請您不要忘記它。若您忘記了主密碼,沒有任何方法能將其復原。" + }, + "masterPassHintDesc": { + "message": "主密碼提示可以在您忘記主密碼時幫助您回憶主密碼。" + }, + "reTypeMasterPass": { + "message": "重新輸入主密碼" + }, + "masterPassHint": { + "message": "主密碼提示(選用)" + }, + "masterPassHintLabel": { + "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": "發生了未預期的錯誤。" + }, + "emailAddress": { + "message": "電子郵件地址" + }, + "yourVaultIsLocked": { + "message": "密碼庫已鎖定。請驗證主密碼以繼續。" + }, + "unlock": { + "message": "解鎖" + }, + "loggedInAsEmailOn": { + "message": "已在 $HOSTNAME$ 上以 $EMAIL$ 身份登入。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "無效的主密碼" + }, + "lockNow": { + "message": "立即鎖定" + }, + "noItemsInList": { + "message": "沒有可列出的項目。" + }, + "noCollectionsInList": { + "message": "沒有可列出的集合。" + }, + "noGroupsInList": { + "message": "沒有可列出的群組。" + }, + "noUsersInList": { + "message": "沒有可列出的使用者。" + }, + "noEventsInList": { + "message": "沒有可列出的事件。" + }, + "newOrganization": { + "message": "新增組織" + }, + "noOrganizationsList": { + "message": "您沒有加入任何組織。組織允許您與其他使用者安全地共用項目。" + }, + "versionNumber": { + "message": "版本 $VERSION_NUMBER$", + "placeholders": { + "version_number": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "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 連接埠,然後按一下它的按鈕(如有的話)。" + }, + "loginUnavailable": { + "message": "無法登入" + }, + "noTwoStepProviders": { + "message": "此帳戶已啟用兩步驟登入,但是本瀏覽器不支援已設定的兩步驟登入方法。" + }, + "noTwoStepProviders2": { + "message": "請使用已支援的瀏覽器(例如 Chrome ),及/或新增可以更好地跨瀏覽器的兩步驟登入方法(例如驗證器應用程式)。" + }, + "twoStepOptions": { + "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 系列、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." + }, + "u2fDesc": { + "message": "使用任何啟用了 FIDO U2F 的安全金鑰來存取您的帳戶。" + }, + "u2fTitle": { + "message": "FIDO U2F 安全金鑰" + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "使用任何具有 WebAuthn 功能的安全金鑰以存取您的帳戶。" + }, + "webAuthnMigrated": { + "message": "(遷移自 FIDO)" + }, + "emailTitle": { + "message": "電子郵件" + }, + "emailDesc": { + "message": "使用電子郵件傳送驗證碼給您。" + }, + "continue": { + "message": "繼續" + }, + "organization": { + "message": "組織" + }, + "organizations": { + "message": "組織" + }, + "moveToOrgDesc": { + "message": "選擇您希望將這個項目移動至哪個組織。項目的擁有權將會轉移至該組織。轉移之後,您將不再是此項目的直接擁有者。" + }, + "moveManyToOrgDesc": { + "message": "選擇您希望將這些項目移動至哪個組織。項目的擁有權將會轉移至該組織。轉移之後,您將不再是這些項目的直接擁有者。" + }, + "collectionsDesc": { + "message": "編輯與此項目共享的集合。只有具有這些集合存取權限的組織使用者才能夠看到此項目。" + }, + "deleteSelectedItemsDesc": { + "message": "您已經選取了 $COUNT$ 個項目要刪除。確定要刪除這些項目嗎 ?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsDesc": { + "message": "選擇要將這 $COUNT$ 個項目移動至哪個資料夾。", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "moveSelectedItemsCountDesc": { + "message": "你選擇了 $COUNT$ 個項目。當中有 $MOVEABLE_COUNT$ 個項目可移動到組織當中,而有 $NONMOVEABLE_COUNT$ 個無法移動。", + "placeholders": { + "count": { + "content": "$1", + "example": "10" + }, + "moveable_count": { + "content": "$2", + "example": "8" + }, + "nonmoveable_count": { + "content": "$3", + "example": "2" + } + } + }, + "verificationCodeTotp": { + "message": "驗證碼 (TOTP)" + }, + "copyVerificationCode": { + "message": "複製驗證碼" + }, + "warning": { + "message": "警告" + }, + "confirmVaultExport": { + "message": "確認匯出密碼庫" + }, + "exportWarningDesc": { + "message": "此次匯出的密碼庫檔案為未加密格式。您不應將它存放或經由不安全的方式(例如電子郵件)傳送。用完後請立即將它刪除。" + }, + "encExportKeyWarningDesc": { + "message": "將使用您帳戶的加密金鑰來加密匯出的資料,若您更新了帳戶的加密金鑰,請重新匯出,否則將無法解密匯出的檔案。" + }, + "encExportAccountWarningDesc": { + "message": "每個 Bitwarden 使用者帳戶的帳戶加密金鑰都不相同,因此無法將已加密匯出的檔案匯入至不同帳戶中。" + }, + "export": { + "message": "匯出" + }, + "exportVault": { + "message": "匯出密碼庫" + }, + "fileFormat": { + "message": "檔案格式" + }, + "exportSuccess": { + "message": "已匯出您的密碼庫資料。" + }, + "passwordGenerator": { + "message": "密碼產生器" + }, + "minComplexityScore": { + "message": "最小複雜度" + }, + "minNumbers": { + "message": "最少數字位數" + }, + "minSpecial": { + "message": "最少符號位數", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "避免易混淆的字元" + }, + "regeneratePassword": { + "message": "重新產生密碼" + }, + "length": { + "message": "長度" + }, + "numWords": { + "message": "字數" + }, + "wordSeparator": { + "message": "文字分隔字元" + }, + "capitalize": { + "message": "大寫", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "包含數字" + }, + "passwordHistory": { + "message": "密碼歷史記錄" + }, + "noPasswordsInList": { + "message": "沒有可列出的密碼。" + }, + "clear": { + "message": "清除", + "description": "To clear something out. example: To clear browser history." + }, + "accountUpdated": { + "message": "帳戶已更新" + }, + "changeEmail": { + "message": "變更電子郵件" + }, + "changeEmailTwoFactorWarning": { + "message": "繼續操作將變更您的帳戶電子郵件地址。這不會變更用於雙因素驗證的電子郵件地址。您可以在雙因素登入設定中變更它。" + }, + "newEmail": { + "message": "新的電子郵件" + }, + "code": { + "message": "代碼" + }, + "changeEmailDesc": { + "message": "我們已傳送電子郵件至 $EMAIL$。請檢查您的電子郵件信箱以取得驗證碼,並在下方輸入驗證碼以完成電子郵件地址的變更。", + "placeholders": { + "email": { + "content": "$1", + "example": "john.smith@example.com" + } + } + }, + "loggedOutWarning": { + "message": "接下來會登出目前工作階段,並要求您重新登入帳戶。其他裝置上的工作階段最多會保持一個小時。" + }, + "emailChanged": { + "message": "已變更電子郵件" + }, + "logBackIn": { + "message": "請重新登入。" + }, + "logBackInOthersToo": { + "message": "請重新登入。若您還在使用其他 Bitwarden 應用程式,也請登出後再重新登入。" + }, + "changeMasterPassword": { + "message": "變更主密碼" + }, + "masterPasswordChanged": { + "message": "主密碼已變更" + }, + "currentMasterPass": { + "message": "目前的主密碼" + }, + "newMasterPass": { + "message": "新的主密碼" + }, + "confirmNewMasterPass": { + "message": "確認新的主密碼" + }, + "encKeySettings": { + "message": "加密金鑰設定" + }, + "kdfAlgorithm": { + "message": "KDF 演算法" + }, + "kdfIterations": { + "message": "KDF 迭代" + }, + "kdfIterationsDesc": { + "message": "較高的 KDF 迭代次數可以避免您的主密碼遭到暴力破解。我們建議為 $VALUE$ 或更高。", + "placeholders": { + "value": { + "content": "$1", + "example": "100,000" + } + } + }, + "kdfIterationsWarning": { + "message": "若將 KDF 迭代次數設定太高會導致在 CPU 較慢的裝置上登入(與解鎖)Bitwarden 時降低效能。我們建議您以 $INCREMENT$ 的增量值遞增並在所有的裝置上測試。", + "placeholders": { + "increment": { + "content": "$1", + "example": "50,000" + } + } + }, + "changeKdf": { + "message": "變更 KDF" + }, + "encKeySettingsChanged": { + "message": "加密金鑰設定已變更" + }, + "dangerZone": { + "message": "危險操作區" + }, + "dangerZoneDesc": { + "message": "小心,這些動作無法復原!" + }, + "deauthorizeSessions": { + "message": "取消工作階段授權" + }, + "deauthorizeSessionsDesc": { + "message": "您是否擔心自己的帳戶在其他裝置上保持登入?請遵照以下步驟取消對之前使用過的所有電腦和裝置的授權。若您以前使用過公用電腦或不小心曾將密碼儲存在不屬於您的裝置上,則建議執行此安全步驟,此操作還將清除所有以前記住的兩步驟登入工作階段。" + }, + "deauthorizeSessionsWarning": { + "message": "接下來會登出目前的工作階段,並要求您重新登入。若您有設定兩步驟登入,也需重新驗證。其他裝置上的活動工作階段最多會保持一個小時。" + }, + "sessionsDeauthorized": { + "message": "已取消所有工作階段授權" + }, + "purgeVault": { + "message": "清空密碼庫" + }, + "purgedOrganizationVault": { + "message": "已清空組織的密碼庫。" + }, + "vaultAccessedByProvider": { + "message": "提供者存取了密碼庫。" + }, + "purgeVaultDesc": { + "message": "接下來的操作會刪除密碼庫當中的所有項目與資料夾。屬於組織的共用項目將不會刪除。" + }, + "purgeOrgVaultDesc": { + "message": "接下來的操作將刪除密碼庫當中的所有項目。" + }, + "purgeVaultWarning": { + "message": "清空密碼庫是永久性的。並且無法復原。" + }, + "vaultPurged": { + "message": "已清空您的密碼庫。" + }, + "deleteAccount": { + "message": "刪除帳戶" + }, + "deleteAccountDesc": { + "message": "接下來的操作將刪除您的帳戶及所有相關資料。" + }, + "deleteAccountWarning": { + "message": "刪除您的帳戶是永久性的。並且無法復原。" + }, + "accountDeleted": { + "message": "已刪除帳戶" + }, + "accountDeletedDesc": { + "message": "您的帳戶已經關閉,所有關聯的資料已經被刪除。" + }, + "myAccount": { + "message": "我的帳戶" + }, + "tools": { + "message": "工具" + }, + "importData": { + "message": "匯入資料" + }, + "importError": { + "message": "匯入錯誤" + }, + "importErrorDesc": { + "message": "您嘗試匯入的資料有問題,請處理下方列出的來源檔案中的錯誤然後再試一次。" + }, + "importSuccess": { + "message": "資料已經成功匯入至您的密碼庫中。" + }, + "importWarning": { + "message": "即將匯入資料至 $ORGANIZATION$。您的資料可能會與該組織中的成員共用,確定要繼續嗎?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "importFormatError": { + "message": "資料格式不正確。請檢查您匯入的檔案後再試一次。" + }, + "importNothingError": { + "message": "沒有匯入任何內容。" + }, + "importEncKeyError": { + "message": "解密匯出的檔案時發生錯誤,您的加密金鑰與匯出資料時使用的金鑰不同。" + }, + "selectFormat": { + "message": "選擇匯入檔案的格式" + }, + "selectImportFile": { + "message": "選擇要匯入的檔案" + }, + "orCopyPasteFileContents": { + "message": "或複製/貼上要匯入的檔案內容" + }, + "instructionsFor": { + "message": "$NAME$ 教學", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "options": { + "message": "選項" + }, + "optionsDesc": { + "message": "自訂您的網頁版密碼庫" + }, + "optionsUpdated": { + "message": "已更新選項" + }, + "language": { + "message": "語言" + }, + "languageDesc": { + "message": "變更網頁版密碼庫使用的語言。" + }, + "disableIcons": { + "message": "停用網站圖示顯示功能" + }, + "disableIconsDesc": { + "message": "在您密碼庫的每個登入資料旁顯示一個可辨識的圖示。" + }, + "enableGravatars": { + "message": "啟用 Gravatars 頭像", + "description": "'Gravatar' is the name of a service. See www.gravatar.com" + }, + "enableGravatarsDesc": { + "message": "載入 gravatar.com 上的頭像圖片。" + }, + "enableFullWidth": { + "message": "啟用全寬度版面配置", + "description": "Allows scaling the web vault UI's width" + }, + "enableFullWidthDesc": { + "message": "允許將網頁版密碼庫完全展開至瀏覽器視窗寬度。" + }, + "default": { + "message": "預設" + }, + "domainRules": { + "message": "網域規則" + }, + "domainRulesDesc": { + "message": "如果您在多個不同網站使用相同的登入資料,您可以將這些網站標記為「通用」。Bitwarden 會為您設定 「全域」域名。" + }, + "globalEqDomains": { + "message": "全域通用域名" + }, + "customEqDomains": { + "message": "自訂通用域名" + }, + "exclude": { + "message": "排除" + }, + "include": { + "message": "包含" + }, + "customize": { + "message": "自訂" + }, + "newCustomDomain": { + "message": "新增自訂網域" + }, + "newCustomDomainDesc": { + "message": "輸入以逗號分隔的網域清單。只允許輸入「基本」網域,請勿輸入子網域名稱。例如,輸入「google.com」即可,而非「www.google.com」。您也可以輸入「androidapp://package.name」來將 Android 應用程式與其他網域名稱建立關聯。" + }, + "customDomainX": { + "message": "自訂網域 $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "domainsUpdated": { + "message": "網域已更新" + }, + "twoStepLogin": { + "message": "兩步驟登入" + }, + "twoStepLoginDesc": { + "message": "在登入時執行額外的步驟來保護您的帳戶。" + }, + "twoStepLoginOrganizationDesc": { + "message": "可透過組織等級來設定提供方式,以要求所有使用者都必須開啟兩步驟登入。" + }, + "twoStepLoginRecoveryWarning": { + "message": "啟用兩步驟登入可能會將您永久鎖定在您的 Bitwarden 帳戶外。如果您無法正常使用兩步驟登入驗證應用程式(例如,您遺失了裝置),則可以使用復原碼存取您的帳戶。 如果您失去帳戶的存取權限,Bitwarden 也無法幫助您。所以我們建議您記下或列印復原碼,並將其妥善保存。" + }, + "viewRecoveryCode": { + "message": "檢視復原碼" + }, + "providers": { + "message": "提供者", + "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." + }, + "enable": { + "message": "啟用" + }, + "enabled": { + "message": "已啟用" + }, + "premium": { + "message": "進階版", + "description": "Premium Membership" + }, + "premiumMembership": { + "message": "進階會員" + }, + "premiumRequired": { + "message": "需要進階會員資格" + }, + "premiumRequiredDesc": { + "message": "進階會員才可使用此功能。" + }, + "youHavePremiumAccess": { + "message": "您有進階版存取權限" + }, + "alreadyPremiumFromOrg": { + "message": "由於您是擁有進階會員功能的組織的成員,您已獲得進階功能。" + }, + "manage": { + "message": "管理" + }, + "disable": { + "message": "停用" + }, + "twoStepLoginProviderEnabled": { + "message": "您的帳戶已啟用兩步驟登入" + }, + "twoStepLoginAuthDesc": { + "message": "輸入您的主密碼以修改兩步驟登入設定。" + }, + "twoStepAuthenticatorDesc": { + "message": "請依照下列步驟設定使用驗證器應用程式的兩步驟登入:" + }, + "twoStepAuthenticatorDownloadApp": { + "message": "下載兩步驟驗證器應用程式" + }, + "twoStepAuthenticatorNeedApp": { + "message": "需要驗證器應用程式嗎?您可以下載以下應用程式:" + }, + "iosDevices": { + "message": "iOS 裝置" + }, + "androidDevices": { + "message": "Android 裝置" + }, + "windowsDevices": { + "message": "Windows 裝置" + }, + "twoStepAuthenticatorAppsRecommended": { + "message": "推薦使用下列的應用程式,您也可使用其他驗證器應用程式。" + }, + "twoStepAuthenticatorScanCode": { + "message": "使用您的驗證器應用程式掃描此 QR Code" + }, + "key": { + "message": "金鑰" + }, + "twoStepAuthenticatorEnterCode": { + "message": "請輸入應用程式產生的 6 位數驗證碼" + }, + "twoStepAuthenticatorReaddDesc": { + "message": "若您需要將其加入其他裝置,以下是您的驗證器應用程式所需要的 QR Code(或金鑰)。" + }, + "twoStepDisableDesc": { + "message": "您確定要停用兩步驟登入嗎?" + }, + "twoStepDisabled": { + "message": "已停用兩步驟登入方式。" + }, + "twoFactorYubikeyAdd": { + "message": "新增 YubiKey 至您的帳戶。" + }, + "twoFactorYubikeyPlugIn": { + "message": "將 YubiKey 插入電腦的 USB 連接埠。" + }, + "twoFactorYubikeySelectKey": { + "message": "於下方選擇第一個空白的 YubiKey 輸入欄位。" + }, + "twoFactorYubikeyTouchButton": { + "message": "按下 YubiKey 的按鈕。" + }, + "twoFactorYubikeySaveForm": { + "message": "儲存表單" + }, + "twoFactorYubikeyWarning": { + "message": "由於平台限制,無法於所有 Bitwarden 應用程式中使用 YubiKey。請開啟另一套兩步驟登入方式,以確保可在 YubiKey 無法使用時還能存取您的帳戶。支援的平台有:" + }, + "twoFactorYubikeySupportUsb": { + "message": "具有 USB 連接埠的電腦上的網頁版密碼庫、桌面應用程式、命令列介面以及所有瀏覽器擴充套件均可使用您的 YubiKey 。" + }, + "twoFactorYubikeySupportMobile": { + "message": "在具有 NFC 功能或擁有資料連接埠的裝置上的行動應用程式可使用您的 YubiKey。" + }, + "yubikeyX": { + "message": "YubiKey $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "u2fkeyX": { + "message": "U2F 金鑰 $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "webAuthnkeyX": { + "message": "WebAuthn 金鑰 $INDEX$", + "placeholders": { + "index": { + "content": "$1", + "example": "2" + } + } + }, + "nfcSupport": { + "message": "NFC 支援" + }, + "twoFactorYubikeySupportsNfc": { + "message": "我有一把金鑰支援 NFC。" + }, + "twoFactorYubikeySupportsNfcDesc": { + "message": "若您有一個支援 NFC 的 YubiKey(例如 YubiKey NEO),行動裝置在感應到 NFC 時將提示您。" + }, + "yubikeysUpdated": { + "message": "YubiKey 已更新" + }, + "disableAllKeys": { + "message": "停用全部金鑰" + }, + "twoFactorDuoDesc": { + "message": "請輸入來自您的 Duo 管理面板的 Bitwarden 應用程式資訊。" + }, + "twoFactorDuoIntegrationKey": { + "message": "整合金鑰" + }, + "twoFactorDuoSecretKey": { + "message": "私密金鑰" + }, + "twoFactorDuoApiHostname": { + "message": "API 主機名稱" + }, + "twoFactorEmailDesc": { + "message": "請依照下列步驟設定使用電子郵件的兩步驟登入:" + }, + "twoFactorEmailEnterEmail": { + "message": "輸入您想用來接收驗證碼的電子郵件地址" + }, + "twoFactorEmailEnterCode": { + "message": "請輸入電子郵件中的 6 位數驗證碼" + }, + "sendEmail": { + "message": "傳送電子郵件" + }, + "twoFactorU2fAdd": { + "message": "在您的帳戶中新增 FIDO U2F 安全金鑰" + }, + "removeU2fConfirmation": { + "message": "您確定要移除這把安全金鑰嗎?" + }, + "twoFactorWebAuthnAdd": { + "message": "在您的帳戶中新增 WebAuthn 安全金鑰" + }, + "readKey": { + "message": "讀取金鑰" + }, + "keyCompromised": { + "message": "金鑰已損壞。" + }, + "twoFactorU2fGiveName": { + "message": "幫安全金鑰取一個易記名稱,以方便辨識。" + }, + "twoFactorU2fPlugInReadKey": { + "message": "請將安全金鑰插入您電腦的 USB 連接埠,並按下「讀取鑰匙」按鈕。" + }, + "twoFactorU2fTouchButton": { + "message": "若安全金鑰有按鈕,請按下它。" + }, + "twoFactorU2fSaveForm": { + "message": "儲存表單" + }, + "twoFactorU2fWarning": { + "message": "由於平台限制,無法於所有 Bitwarden 應用程式中使用 FIDO U2F。請開啟另一套兩步驟登入方式,以確保 FIDO U2F 無法使用時還能存取您的帳戶。支援的平台有:" + }, + "twoFactorU2fSupportWeb": { + "message": "桌上型電腦/筆記型電腦上啟用了 U2F 的瀏覽器(Chrome、Opera、Vivaldi 或啟用了 FIDO U2F 的 Firefox)中的網頁版密碼庫和瀏覽器擴充套件。" + }, + "twoFactorU2fWaiting": { + "message": "等待您按下安全金鑰上的按鈕" + }, + "twoFactorU2fClickSave": { + "message": "點選下方的「儲存」按鈕,以啟用此安全金鑰用於兩步驟登入。" + }, + "twoFactorU2fProblemReadingTryAgain": { + "message": "讀取安全金鑰時發生問題。請再試一次。" + }, + "twoFactorWebAuthnWarning": { + "message": "由於平台限制,無法於所有 Bitwarden 應用程式中使用 WebAuthn。請設定另一套兩步驟登入方式,以確保在 WebAuthn 無法使用時還能存取您的帳戶。支援的平台有:" + }, + "twoFactorWebAuthnSupportWeb": { + "message": "桌上型電腦/筆記型電腦上具有 WebAuthn 功能的瀏覽器(Chrome、Opera、Vivaldi 或開啟 FIDO U2F 功能的 Firefox)上的網頁版密碼庫和瀏覽器擴充套件。" + }, + "twoFactorRecoveryYourCode": { + "message": "您的 Bitwarden 兩步驟登入復原碼" + }, + "twoFactorRecoveryNoCode": { + "message": "您尚未啟用任何兩步驟登入方式。等你啟用兩步驟登入方式後,您可回來這裡取得復原碼。" + }, + "printCode": { + "message": "列印代碼", + "description": "Print 2FA recovery code" + }, + "reports": { + "message": "報告" + }, + "reportsDesc": { + "message": "點選下方的報告,識別並消除您的線上帳戶中的安全漏洞。" + }, + "unsecuredWebsitesReport": { + "message": "不安全的網站" + }, + "unsecuredWebsitesReportDesc": { + "message": "以 http:// 開頭的 URL 沒有使用最佳的加密方式。將這些帳戶的登入 URI 更改為 https:// 以更安全地瀏覽。" + }, + "unsecuredWebsitesFound": { + "message": "發現不安全的網站" + }, + "unsecuredWebsitesFoundDesc": { + "message": "我們在您的密碼庫中找到 $COUNT$ 個使用不安全 URI 的項目。若網站允許,您應變更其網址配置為 https://。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noUnsecuredWebsites": { + "message": "您的密碼庫中沒有使用不安全 URI 的項目。" + }, + "inactive2faReport": { + "message": "非使用中兩步驟登入" + }, + "inactive2faReportDesc": { + "message": "兩步驟登入為您的帳戶添加了一層保護。使用 Bitwarden 驗證器或使用其他方法為這些帳戶啟用兩步驟登入。" + }, + "inactive2faFound": { + "message": "發現未啟用 2FA 的登入資料" + }, + "inactive2faFoundDesc": { + "message": "我們在您的密碼庫中找到 $COUNT$ 個可能未設定雙因素驗證的網站(依據 twofactorauth.org)。若要進一步保護這些帳戶,您應啟用雙因素驗證。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noInactive2fa": { + "message": "沒有在您的密碼庫中找到未設定雙因素驗證的網站。" + }, + "instructions": { + "message": "說明" + }, + "exposedPasswordsReport": { + "message": "已公開的密碼" + }, + "exposedPasswordsReportDesc": { + "message": "資料外洩中暴露的密碼很容易成為攻擊者的目標。更改這些密碼以防止潛在的入侵。" + }, + "exposedPasswordsFound": { + "message": "發現公開密碼" + }, + "exposedPasswordsFoundDesc": { + "message": "我們在您的密碼庫中找到 $COUNT$ 個項目的密碼在已知資料外洩事件中被公開。您應將它們變更為新密碼。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noExposedPasswords": { + "message": "未在您的密碼庫中找到在已知資料外洩事件中被公開的項目。" + }, + "checkExposedPasswords": { + "message": "檢查公開密碼" + }, + "exposedXTimes": { + "message": "被公開 $COUNT$ 次", + "placeholders": { + "count": { + "content": "$1", + "example": "52" + } + } + }, + "weakPasswordsReport": { + "message": "弱式密碼" + }, + "weakPasswordsReportDesc": { + "message": "弱密碼很容易被攻擊者猜到。使用密碼產生器將這些密碼更改為強密碼。" + }, + "weakPasswordsFound": { + "message": "發現弱式密碼" + }, + "weakPasswordsFoundDesc": { + "message": "我們在您的密碼庫中發現了 $COUNT$ 個使用弱式密碼的項目。您應該將它們變更為更強的密碼。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noWeakPasswords": { + "message": "您的密碼庫中沒有項目具有弱式密碼。" + }, + "reusedPasswordsReport": { + "message": "重複使用密碼" + }, + "reusedPasswordsReportDesc": { + "message": "重複使用密碼使攻擊者更容易侵入多個帳戶。更改這些密碼,使每個密碼都是唯一的。" + }, + "reusedPasswordsFound": { + "message": "發現重複使用的密碼" + }, + "reusedPasswordsFoundDesc": { + "message": "我們發現您的密碼庫中有 $COUNT$ 組密碼重複使用。您應該將它們變更為不同的密碼。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "noReusedPasswords": { + "message": "未在您密碼庫中找到重複使用密碼的登入資訊。" + }, + "reusedXTimes": { + "message": "已重複使用 $COUNT$ 次", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "dataBreachReport": { + "message": "資料外洩" + }, + "breachDesc": { + "message": "外洩的帳戶可能會暴露您的個人信息。透過啟用 2FA 或創建更強的密碼來保護被外洩的帳戶。" + }, + "breachCheckUsernameEmail": { + "message": "請檢查您使用的使用者名稱或電子郵件地址。" + }, + "checkBreaches": { + "message": "檢查密碼外洩情況" + }, + "breachUsernameNotFound": { + "message": "在任何已知的外洩密碼資料庫中都找不到 $USERNAME$。", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + } + } + }, + "goodNews": { + "message": "好消息!", + "description": "ex. Good News, No Breached Accounts Found!" + }, + "breachUsernameFound": { + "message": "$USERNAME$ 在不同的外洩密碼資料庫中找到了 $COUNT$ 次。", + "placeholders": { + "username": { + "content": "$1", + "example": "user@example.com" + }, + "count": { + "content": "$2", + "example": "7" + } + } + }, + "breachFound": { + "message": "發現已外洩的帳戶" + }, + "compromisedData": { + "message": "遭外洩的資料" + }, + "website": { + "message": "網站" + }, + "affectedUsers": { + "message": "受影響的使用者" + }, + "breachOccurred": { + "message": "外洩發生於" + }, + "breachReported": { + "message": "外洩回報於" + }, + "reportError": { + "message": "嘗試載入報告時發生錯誤。請再試一次。" + }, + "billing": { + "message": "計費" + }, + "accountCredit": { + "message": "帳戶餘額", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "accountBalance": { + "message": "帳戶餘額", + "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." + }, + "addCredit": { + "message": "儲值餘額", + "description": "Add more credit to your account's balance." + }, + "amount": { + "message": "金額", + "description": "Dollar amount, or quantity." + }, + "creditDelayed": { + "message": "已儲值的餘額在交易處理完成後將會出現在你的帳戶中。部分付款方式較為緩慢,會比其他方式花費更多時間處理。" + }, + "makeSureEnoughCredit": { + "message": "請確保您的帳戶有足夠的餘額用於此次購買,若您的帳戶餘額不足,則會以您預設的付款方式補足差額。您可以透過計費頁面對您的帳戶儲值餘額。" + }, + "creditAppliedDesc": { + "message": "您帳戶的餘額可用於消費。任何可用的餘額將用於自動繳納此帳戶的帳單。" + }, + "goPremium": { + "message": "升級至進階版", + "description": "Another way of saying \"Get a premium membership\"" + }, + "premiumUpdated": { + "message": "您已升級至進階版" + }, + "premiumUpgradeUnlockFeatures": { + "message": "將您的帳戶升級至進階版,並解鎖一些很棒的附加功能。" + }, + "premiumSignUpStorage": { + "message": "用於檔案附件的 1 GB 的加密檔案儲存空間。" + }, + "premiumSignUpTwoStep": { + "message": "YubiKey、FIDO U2F 和 Duo 等額外的兩步驟登入選項。" + }, + "premiumSignUpEmergency": { + "message": "緊急存取" + }, + "premiumSignUpReports": { + "message": "密碼健康、帳戶體檢以及資料外洩報告,保障您的密碼庫安全。" + }, + "premiumSignUpTotp": { + "message": "用於登入您的密碼庫的 TOTP 驗證碼(2FA)產生器。" + }, + "premiumSignUpSupport": { + "message": "優先客戶支援。" + }, + "premiumSignUpFuture": { + "message": "未來會增加更多進階功能,敬請期待!" + }, + "premiumPrice": { + "message": "每年只需 $PRICE$ !", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "addons": { + "message": "附加項目" + }, + "premiumAccess": { + "message": "進階存取" + }, + "premiumAccessDesc": { + "message": "您可以為您的組織的所有使用者添加進階存取,只需 $PRICE$ /$INTERVAL$.", + "placeholders": { + "price": { + "content": "$1", + "example": "$3.33" + }, + "interval": { + "content": "$2", + "example": "'month' or 'year'" + } + } + }, + "additionalStorageGb": { + "message": "額外的儲存空間 (GB)" + }, + "additionalStorageGbDesc": { + "message": "# GB 額外儲存空間" + }, + "additionalStorageIntervalDesc": { + "message": "您的方案擁有 $SIZE$ 的加密儲存空間。您也可以用每 GB $PRICE$ / $INTERVAL$ 購買額外的儲存空間。", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + }, + "price": { + "content": "$2", + "example": "$4.00" + }, + "interval": { + "content": "$3", + "example": "'month' or 'year'" + } + } + }, + "summary": { + "message": "摘要" + }, + "total": { + "message": "總計" + }, + "year": { + "message": "年" + }, + "month": { + "message": "月" + }, + "monthAbbr": { + "message": "月", + "description": "Short abbreviation for 'month'" + }, + "paymentChargedAnnually": { + "message": "將立即使用您選擇的付款方式來扣款,並且每年都會定期扣款。您可以隨時取消。" + }, + "paymentCharged": { + "message": "將立即使用您選擇的付款方式來扣款,並且將每 $INTERVAL$ 定期扣款。您可以隨時取消。", + "placeholders": { + "interval": { + "content": "$1", + "example": "month or year" + } + } + }, + "paymentChargedWithTrial": { + "message": "您的方案包含了 7 天的免費試用。在試用期結束之前,不會從您的付款方式中扣款。您可以隨時取消。" + }, + "paymentInformation": { + "message": "付款資訊" + }, + "billingInformation": { + "message": "帳單資訊" + }, + "creditCard": { + "message": "信用卡" + }, + "paypalClickSubmit": { + "message": "點選 PayPal 按鈕登入您的 PayPal 帳戶,然後點選下方的送出按鈕以繼續。" + }, + "cancelSubscription": { + "message": "取消訂閱" + }, + "subscriptionCanceled": { + "message": "已取消訂閱" + }, + "pendingCancellation": { + "message": "待取消" + }, + "subscriptionPendingCanceled": { + "message": "此訂閱在目前計費周期结束前已標記為取消。" + }, + "reinstateSubscription": { + "message": "重新開始訂閱" + }, + "reinstateConfirmation": { + "message": "您是否要移除待處理的取消要求,重新開始您的訂閱?" + }, + "reinstated": { + "message": "已重新開始訂閱。" + }, + "cancelConfirmation": { + "message": "您確定要取消訂閱嗎?在目前計費周期結束之後,您將無法使用所有訂閲功能。" + }, + "canceledSubscription": { + "message": "已取消訂閱。" + }, + "neverExpires": { + "message": "永不逾期" + }, + "status": { + "message": "狀態" + }, + "nextCharge": { + "message": "下一次扣款" + }, + "details": { + "message": "詳細資料" + }, + "downloadLicense": { + "message": "下載授權證" + }, + "updateLicense": { + "message": "更新授權" + }, + "updatedLicense": { + "message": "已更新授權" + }, + "manageSubscription": { + "message": "管理訂閱" + }, + "storage": { + "message": "儲存空間" + }, + "addStorage": { + "message": "增加儲存空間" + }, + "removeStorage": { + "message": "移除儲存空間" + }, + "subscriptionStorage": { + "message": "您的訂閱方案包含 $MAX_STORAGE$ GB 的加密檔案儲存空間,目前已使用 $USED_STORAGE$。", + "placeholders": { + "max_storage": { + "content": "$1", + "example": "4" + }, + "used_storage": { + "content": "$2", + "example": "65 MB" + } + } + }, + "paymentMethod": { + "message": "付款方式" + }, + "noPaymentMethod": { + "message": "尚未選擇付款方式" + }, + "addPaymentMethod": { + "message": "新增付款方式" + }, + "changePaymentMethod": { + "message": "變更付款方式" + }, + "invoices": { + "message": "帳單" + }, + "noInvoices": { + "message": "無帳單。" + }, + "paid": { + "message": "已付款", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "unpaid": { + "message": "待付款", + "description": "Past tense status of an invoice. ex. Paid or unpaid." + }, + "transactions": { + "message": "交易紀錄", + "description": "Payment/credit transactions." + }, + "noTransactions": { + "message": "無交易記錄" + }, + "chargeNoun": { + "message": "費用", + "description": "Noun. A charge from a payment method." + }, + "refundNoun": { + "message": "退款", + "description": "Noun. A refunded payment that was charged." + }, + "chargesStatement": { + "message": "任何費用都會在您的帳單上以 $STATEMENT_NAME$ 顯示。", + "placeholders": { + "statement_name": { + "content": "$1", + "example": "BITWARDEN" + } + } + }, + "gbStorageAdd": { + "message": "GB 儲存空間將增加" + }, + "gbStorageRemove": { + "message": "GB 儲存空間將移除" + }, + "storageAddNote": { + "message": "增加存儲空間將會調整計費總額,並立即透過您選擇的付款方式進行扣款。第一期費用將依照目前計費週期的剩餘時間依比例分配。" + }, + "storageRemoveNote": { + "message": "移除儲存空間將會調整計費總額,這筆費用將依照比例返還並用於下一筆帳單費用中。" + }, + "adjustedStorage": { + "message": "已調整 $AMOUNT$ GB 的儲存空間。", + "placeholders": { + "amount": { + "content": "$1", + "example": "5" + } + } + }, + "contactSupport": { + "message": "聯絡客戶支援部門" + }, + "updatedPaymentMethod": { + "message": "已更新付款方式。" + }, + "purchasePremium": { + "message": "購買進階版" + }, + "licenseFile": { + "message": "授權檔案" + }, + "licenseFileDesc": { + "message": "您的授權檔案將被命名為類似 $FILE_NAME$ 的名稱", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_premium_license.json" + } + } + }, + "uploadLicenseFilePremium": { + "message": "要升級您的帳戶為進階版會員,您需要上傳有效的授權檔案。" + }, + "uploadLicenseFileOrg": { + "message": "要建立基於內部部署的組織,您需要上傳有效的授權檔案。" + }, + "accountEmailMustBeVerified": { + "message": "必須驗證您帳戶的電子郵件地址。" + }, + "newOrganizationDesc": { + "message": "組織允許您與他人共用密碼庫的部分內容,以及管理特定實體(如家庭、小型團隊或大型公司)的相關使用者。" + }, + "generalInformation": { + "message": "一般資訊" + }, + "organizationName": { + "message": "組織名稱" + }, + "accountOwnedBusiness": { + "message": "此帳戶為企業所有。" + }, + "billingEmail": { + "message": "帳單電子郵件" + }, + "businessName": { + "message": "企業名稱" + }, + "chooseYourPlan": { + "message": "選擇您的方案" + }, + "users": { + "message": "使用者" + }, + "userSeats": { + "message": "使用者席位" + }, + "additionalUserSeats": { + "message": "額外使用者席位" + }, + "userSeatsDesc": { + "message": "# 使用者席位" + }, + "userSeatsAdditionalDesc": { + "message": "您的方案包含 $BASE_SEATS$ 個使用者席位。您可以以每使用者每月 $SEAT_PRICE$ 的價格增加額外使用者。", + "placeholders": { + "base_seats": { + "content": "$1", + "example": "5" + }, + "seat_price": { + "content": "$2", + "example": "$2.00" + } + } + }, + "userSeatsHowManyDesc": { + "message": "您需要多少個使用者席位?您也可以在需要的時候增加額外席位。" + }, + "planNameFree": { + "message": "免費", + "description": "Free as in 'free beer'." + }, + "planDescFree": { + "message": "適用於測試或個人使用者與 $COUNT$ 位其他使用者共用。", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "planNameFamilies": { + "message": "家庭" + }, + "planDescFamilies": { + "message": "適用於個人使用,與家人及朋友共用。" + }, + "planNameTeams": { + "message": "團隊" + }, + "planDescTeams": { + "message": "適用於企業和其他團隊組織。" + }, + "planNameEnterprise": { + "message": "企業" + }, + "planDescEnterprise": { + "message": "適用於企業和其他大型組織。" + }, + "freeForever": { + "message": "永久免費" + }, + "includesXUsers": { + "message": "包含 $COUNT$ 位使用者", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "additionalUsers": { + "message": "額外使用者" + }, + "costPerUser": { + "message": "每位使用者 $COST$", + "placeholders": { + "cost": { + "content": "$1", + "example": "$3" + } + } + }, + "limitedUsers": { + "message": "限制 $COUNT$ 位使用者(包括您)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "limitedCollections": { + "message": "限制 $COUNT$ 個集合", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "addShareLimitedUsers": { + "message": "新增並與最多 $COUNT$ 位使用者共用", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "addShareUnlimitedUsers": { + "message": "新增並與無限位使用者共用" + }, + "createUnlimitedCollections": { + "message": "建立無限個集合" + }, + "gbEncryptedFileStorage": { + "message": "$SIZE$ 加密檔案儲存空間。", + "placeholders": { + "size": { + "content": "$1", + "example": "1 GB" + } + } + }, + "onPremHostingOptional": { + "message": "內部部署(選用)" + }, + "usersGetPremium": { + "message": "使用者取得了進階功能的存取權限" + }, + "controlAccessWithGroups": { + "message": "使用群組控制使用者的存取權限" + }, + "syncUsersFromDirectory": { + "message": "從目錄同步使用者及群組" + }, + "trackAuditLogs": { + "message": "使用稽核記錄追蹤使用者動作" + }, + "enforce2faDuo": { + "message": "強制使用 Duo 2FA" + }, + "priorityCustomerSupport": { + "message": "優先客戶支援" + }, + "xDayFreeTrial": { + "message": "$COUNT$ 天免費試用,隨時可取消", + "placeholders": { + "count": { + "content": "$1", + "example": "7" + } + } + }, + "monthly": { + "message": "每月" + }, + "annually": { + "message": "每年" + }, + "basePrice": { + "message": "基本價格" + }, + "organizationCreated": { + "message": "已建立組織" + }, + "organizationReadyToGo": { + "message": "您的新組織已準備好!" + }, + "organizationUpgraded": { + "message": "您的組織已升級。" + }, + "leave": { + "message": "離開" + }, + "leaveOrganizationConfirmation": { + "message": "您確定要離開這個組織嗎?" + }, + "leftOrganization": { + "message": "您已離開組織。" + }, + "defaultCollection": { + "message": "預設集合" + }, + "getHelp": { + "message": "尋求幫助" + }, + "getApps": { + "message": "取得應用程式" + }, + "loggedInAs": { + "message": "已登入為" + }, + "eventLogs": { + "message": "事件記錄" + }, + "people": { + "message": "人員" + }, + "policies": { + "message": "原則" + }, + "singleSignOn": { + "message": "單一登入(SSO)" + }, + "editPolicy": { + "message": "編輯原則" + }, + "groups": { + "message": "群組" + }, + "newGroup": { + "message": "新群組" + }, + "addGroup": { + "message": "新增群組" + }, + "editGroup": { + "message": "編輯群組" + }, + "deleteGroupConfirmation": { + "message": "您確定要刪除這個群組?" + }, + "removeUserConfirmation": { + "message": "您確定要移除此使用者?" + }, + "removeUserConfirmationKeyConnector": { + "message": "警告!這位使用者需要 Key Connector 管理他們的加密方式。從您的組織中移除這位使用者,會永久停用他們的帳戶。此操作無法復原,是否繼續?" + }, + "externalId": { + "message": "外部 ID" + }, + "externalIdDesc": { + "message": "外部 ID 可用於參考,或將此資源與使用者目錄等外部系統連結起來。" + }, + "accessControl": { + "message": "存取控制" + }, + "groupAccessAllItems": { + "message": "此群組可存取及變更所有項目。" + }, + "groupAccessSelectedCollections": { + "message": "此群組只能存取選擇的集合。" + }, + "readOnly": { + "message": "唯讀" + }, + "newCollection": { + "message": "新集合" + }, + "addCollection": { + "message": "新增集合" + }, + "editCollection": { + "message": "編輯集合" + }, + "deleteCollectionConfirmation": { + "message": "確定要刪除此集合嗎?" + }, + "editUser": { + "message": "編輯使用者" + }, + "inviteUser": { + "message": "邀請使用者" + }, + "inviteUserDesc": { + "message": "在下方輸入 Bitwarden 帳戶的電子郵件位址,以邀請新使用者加入您的組織。若他們沒有 Bitwarden 帳戶,系統將提示他們建立新帳戶。" + }, + "inviteMultipleEmailDesc": { + "message": "透過使用逗號分隔的電子郵件地址,您可以一次邀請 $COUNT$ 位使用者。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "userUsingTwoStep": { + "message": "此使用者正在使用兩步驟登入保護帳戶。" + }, + "userAccessAllItems": { + "message": "此使用者可存取及變更所有項目。" + }, + "userAccessSelectedCollections": { + "message": "此使用者只能存取選擇的集合。" + }, + "search": { + "message": "搜尋" + }, + "invited": { + "message": "已邀請" + }, + "accepted": { + "message": "已接受" + }, + "confirmed": { + "message": "已確認" + }, + "clientOwnerEmail": { + "message": "用戶端擁有者電子郵件" + }, + "owner": { + "message": "擁有者" + }, + "ownerDesc": { + "message": "可以管理組織所有方面且具有最高權限的使用者。" + }, + "clientOwnerDesc": { + "message": "此使用者應獨立於提供者。若提供者與該組織解除關聯,此使用者將繼續保留組織的擁有權。" + }, + "admin": { + "message": "管理員" + }, + "adminDesc": { + "message": "管理員可以存取和管理組織内的所有項目、集合和使用者。" + }, + "user": { + "message": "使用者" + }, + "userDesc": { + "message": "具有組織内已指派集合的存取權限的一般使用者。" + }, + "manager": { + "message": "管理員" + }, + "managerDesc": { + "message": "管理員可以存取和管理組織内已指派的集合。" + }, + "all": { + "message": "全部" + }, + "refresh": { + "message": "重新整理" + }, + "timestamp": { + "message": "時間戳記" + }, + "event": { + "message": "事件" + }, + "unknown": { + "message": "不詳" + }, + "loadMore": { + "message": "載入更多" + }, + "mobile": { + "message": "行動裝置", + "description": "Mobile app" + }, + "extension": { + "message": "擴充套件", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "電腦版應用程式", + "description": "Desktop app" + }, + "webVault": { + "message": "網頁版密碼庫" + }, + "loggedIn": { + "message": "已登入。" + }, + "changedPassword": { + "message": "已變更帳戶密碼。" + }, + "enabledUpdated2fa": { + "message": "已啟用 / 更新兩步驟登入。" + }, + "disabled2fa": { + "message": "已停用兩步驟登入。" + }, + "recovered2fa": { + "message": "已透過兩步驟登入復原帳戶。" + }, + "failedLogin": { + "message": "登入失敗,密碼錯誤。" + }, + "failedLogin2fa": { + "message": "嘗試登入失敗,兩步驟登入錯誤。" + }, + "exportedVault": { + "message": "已匯出密碼庫。" + }, + "exportedOrganizationVault": { + "message": "已匯出組織密碼庫。" + }, + "editedOrgSettings": { + "message": "已編輯組織設定。" + }, + "createdItemId": { + "message": "已建立項目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedItemId": { + "message": "已編輯項目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedItemId": { + "message": "項目 $ID$ 已移至垃圾桶。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "movedItemIdToOrg": { + "message": "移動項目 $ID$ 至一個組織。", + "placeholders": { + "id": { + "content": "$1", + "example": "'Google'" + } + } + }, + "viewedItemId": { + "message": "檢視了項目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedPasswordItemId": { + "message": "檢視了項目 $ID$ 的密碼。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedHiddenFieldItemId": { + "message": "檢視了項目 $ID$ 的隱藏欄位。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "viewedSecurityCodeItemId": { + "message": "檢視了項目 $ID$ 的安全代碼。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedPasswordItemId": { + "message": "複製了項目 $ID$ 的密碼。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedHiddenFieldItemId": { + "message": "複製了項目 $ID$ 的隱藏欄位。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "copiedSecurityCodeItemId": { + "message": "複製了項目 $ID$ 的安全代碼", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "autofilledItemId": { + "message": "項目 $ID$ 已自動填入。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "createdCollectionId": { + "message": "已建立集合 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedCollectionId": { + "message": "已編輯集合 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "deletedCollectionId": { + "message": "已刪除集合 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Server Passwords" + } + } + }, + "editedPolicyId": { + "message": "已編輯原則 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "createdGroupId": { + "message": "已建立群組 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "editedGroupId": { + "message": "已編輯群組 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "deletedGroupId": { + "message": "已刪除群組 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Developers" + } + } + }, + "removedUserId": { + "message": "已移除使用者 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdAttachmentForItem": { + "message": "已為項目 $ID$ 建立附件。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "deletedAttachmentForItem": { + "message": "已為項目 $ID$ 刪除附件。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "editedCollectionsForItem": { + "message": "已為項目 $ID$ 編輯集合。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "invitedUserId": { + "message": "已邀請使用者 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmedUserId": { + "message": "已確認使用者 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedUserId": { + "message": "已編輯使用者 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "editedGroupsForUser": { + "message": "已編輯使用者 $ID$ 的群組。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "unlinkedSsoUser": { + "message": "已為使用者 $ID$ 取消連結 SSO。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "createdOrganizationId": { + "message": "已建立組織 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "addedOrganizationId": { + "message": "已新增組織 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "removedOrganizationId": { + "message": "已移除組織 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "accessedClientVault": { + "message": "已存取組織 $ID$ 的密碼庫。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "device": { + "message": "裝置" + }, + "view": { + "message": "檢視" + }, + "invalidDateRange": { + "message": "無效的日期範圍。" + }, + "errorOccurred": { + "message": "發生錯誤。" + }, + "userAccess": { + "message": "使用者存取" + }, + "userType": { + "message": "使用者類型" + }, + "groupAccess": { + "message": "群組存取" + }, + "groupAccessUserDesc": { + "message": "編輯此使用者所屬的群組。" + }, + "invitedUsers": { + "message": "已邀請使用者。" + }, + "resendInvitation": { + "message": "重新傳送邀請" + }, + "resendEmail": { + "message": "重新傳送電子郵件" + }, + "hasBeenReinvited": { + "message": "已重新邀請 $USER$。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirm": { + "message": "確認" + }, + "confirmUser": { + "message": "確認使用者" + }, + "hasBeenConfirmed": { + "message": "$USER$ 已經確認。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "confirmUsers": { + "message": "確認使用者" + }, + "usersNeedConfirmed": { + "message": "有使用者已接受邀請,但仍然需要確認。在確認之前,使用者將無法存取組織。" + }, + "startDate": { + "message": "開始日期" + }, + "endDate": { + "message": "结束日期" + }, + "verifyEmail": { + "message": "驗證電子郵件" + }, + "verifyEmailDesc": { + "message": "驗證您帳戶的電子郵件地址以使用所有功能。" + }, + "verifyEmailFirst": { + "message": "必須驗證您帳戶的電子郵件位址。" + }, + "checkInboxForVerification": { + "message": "請檢查您的電子郵件收件匣以取得驗證連結。" + }, + "emailVerified": { + "message": "您的電子郵件已驗證。" + }, + "emailVerifiedFailed": { + "message": "無法驗證電子郵件。請嘗試傳送一封新的驗證電子郵件。" + }, + "emailVerificationRequired": { + "message": "需要驗證電子郵件" + }, + "emailVerificationRequiredDesc": { + "message": "必須驗證您的電子郵件才能使用此功能。" + }, + "updateBrowser": { + "message": "更新瀏覽器" + }, + "updateBrowserDesc": { + "message": "未支援您使用的瀏覽器。網頁版密碼庫可能無法正常運作。" + }, + "joinOrganization": { + "message": "加入組織" + }, + "joinOrganizationDesc": { + "message": "您已被邀請加入以上組織。若想接受邀請,您需要登入或建立新的 Bitwarden 帳戶。" + }, + "inviteAccepted": { + "message": "已接受邀請" + }, + "inviteAcceptedDesc": { + "message": "管理員確認您的成員身分後,您便可以存取此組織。到時我們會向您傳送電子郵件通知。" + }, + "inviteAcceptFailed": { + "message": "無法接受邀請。請要求組織管理員傳送新的邀請。" + }, + "inviteAcceptFailedShort": { + "message": "無法接受邀請。$DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "rememberEmail": { + "message": "記住電子郵件地址" + }, + "recoverAccountTwoStepDesc": { + "message": "若您無法透過一般的兩步驟登入方式存取您的帳戶,您可以使用兩步驟登入復原碼以停用帳戶上的所有兩步驟登入方式。" + }, + "recoverAccountTwoStep": { + "message": "復原帳戶的兩步驟登入" + }, + "twoStepRecoverDisabled": { + "message": "兩步驟登入已在您的帳戶中停用。" + }, + "learnMore": { + "message": "深入了解" + }, + "deleteRecoverDesc": { + "message": "請在下方輸入您的電子郵件地址以復原及刪除您的帳戶。" + }, + "deleteRecoverEmailSent": { + "message": "如果您的帳戶存在,我們將傳送一封包含詳細指示的電子郵件。" + }, + "deleteRecoverConfirmDesc": { + "message": "您已要求刪除您的 Bitwarden 帳戶。點選下方的按鈕以確認。" + }, + "myOrganization": { + "message": "我的組織" + }, + "deleteOrganization": { + "message": "刪除組織" + }, + "deletingOrganizationContentWarning": { + "message": "輸入主密碼以確認刪除 $ORGANIZATION$ 及與之關聯的所有資料。$ORGANIZATION$ 中的密碼庫資料包含:", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "deletingOrganizationActiveUserAccountsWarning": { + "message": "刪除後,使用者帳戶仍然可用,但將不再與此組織關聯。" + }, + "deletingOrganizationIsPermanentWarning": { + "message": "刪除 $ORGANIZATION$ 是永久性動作,無法回復。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "organizationDeleted": { + "message": "已刪除組織" + }, + "organizationDeletedDesc": { + "message": "該組織和所有關聯資料已刪除。" + }, + "organizationUpdated": { + "message": "已更新組織" + }, + "taxInformation": { + "message": "稅務資訊" + }, + "taxInformationDesc": { + "message": "對於美國境內的客戶,需要提供郵遞區號來滿足銷售稅要求,對於其他國家,您可以選擇提供稅務識別碼(VAT/GST)和/或地址以顯示在您的帳單上。" + }, + "billingPlan": { + "message": "方案", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlan": { + "message": "升級方案", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "changeBillingPlanUpgrade": { + "message": "為了將您的帳戶升級至另一個方案,請提供以下資訊。同時請確保您的帳戶已經有一個有效的付款方式。", + "description": "A billing plan/package. For example: families, teams, enterprise, etc." + }, + "invoiceNumber": { + "message": "帳單 #$NUMBER$", + "description": "ex. Invoice #79C66F0-0001", + "placeholders": { + "number": { + "content": "$1", + "example": "79C66F0-0001" + } + } + }, + "viewInvoice": { + "message": "檢視帳單" + }, + "downloadInvoice": { + "message": "下載帳單" + }, + "verifyBankAccount": { + "message": "驗證銀行帳戶" + }, + "verifyBankAccountDesc": { + "message": "我們已匯入了兩筆小額款項至您的銀行帳戶(需要 1-2 個工作天後才能到帳)。請在此輸入這兩筆款項的金額以驗證銀行帳戶。" + }, + "verifyBankAccountInitialDesc": { + "message": "只有在美國的客戶才能使用銀行帳戶付款。您必須驗證您的銀行帳戶。我們將在未來 1-2 個工作天內匯入兩筆小額款項。在組織的計費頁面上輸入款項金額以驗證銀行帳戶。" + }, + "verifyBankAccountFailureWarning": { + "message": "驗證銀行帳戶失敗將會導致付款失效,並且您的訂閱將會被取消。" + }, + "verifiedBankAccount": { + "message": "已驗證您的銀行帳戶。" + }, + "bankAccount": { + "message": "銀行帳戶" + }, + "amountX": { + "message": "金額 $COUNT$", + "description": "Used in bank account verification of micro-deposits. Amount, as in a currency amount. Ex. Amount 1 is $2.00, Amount 2 is $1.50", + "placeholders": { + "count": { + "content": "$1", + "example": "1" + } + } + }, + "routingNumber": { + "message": "匯款路徑編號", + "description": "Bank account routing number" + }, + "accountNumber": { + "message": "帳戶號碼" + }, + "accountHolderName": { + "message": "帳戶持有人姓名" + }, + "bankAccountType": { + "message": "帳戶類型" + }, + "bankAccountTypeCompany": { + "message": "公司" + }, + "bankAccountTypeIndividual": { + "message": "個人" + }, + "enterInstallationId": { + "message": "輸入您的安裝 ID" + }, + "limitSubscriptionDesc": { + "message": "為您的訂閲設定席位限制。達到此限制後,您將無法邀請新的使用者。" + }, + "maxSeatLimit": { + "message": "最大席位限制(選用)", + "description": "Upper limit of seats to allow through autoscaling" + }, + "maxSeatCost": { + "message": "最大潛在席位費用" + }, + "addSeats": { + "message": "新增席位", + "description": "Seat = User Seat" + }, + "removeSeats": { + "message": "移除席位", + "description": "Seat = User Seat" + }, + "subscriptionDesc": { + "message": "調整訂閱將會依比例變更您的帳單總額。若新邀請的使用者超過您的訂閱席位,您將立即收到依比例收取的額外使用者費用。" + }, + "subscriptionUserSeats": { + "message": "您的訂閱當中包含 $COUNT$ 位使用者的授權。", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "limitSubscription": { + "message": "限制訂閲(選用)" + }, + "subscriptionSeats": { + "message": "訂閲席位" + }, + "subscriptionUpdated": { + "message": "已更新訂閲" + }, + "additionalOptions": { + "message": "其他選項" + }, + "additionalOptionsDesc": { + "message": "如需更多管理訂閱協助,請聯絡客戶支援。" + }, + "subscriptionUserSeatsUnlimitedAutoscale": { + "message": "調整訂閱將會依比例變更您的帳單總額。若新邀請的使用者超過您的訂閱席位,您將立即收到依比例收取的額外使用者費用。" + }, + "subscriptionUserSeatsLimitedAutoscale": { + "message": "調整訂閱將會依比例變更您的帳單總額。若新邀請的使用者超過您的訂閱席位,您將立即收到依比例收取的額外使用者費用,直到您達到 $MAX$ 席位限制。", + "placeholders": { + "max": { + "content": "$1", + "example": "50" + } + } + }, + "subscriptionFreePlan": { + "message": "除非升級方案,否則您最多只能邀請 $COUNT$ 位使用者。", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "subscriptionFamiliesPlan": { + "message": "除非升級方案,否則您最多只能邀請 $COUNT$ 位使用者。請聯絡客戶支援進行升級。", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionSponsoredFamiliesPlan": { + "message": "您的訂閱允許總共 $COUNT$ 位使用者。您的方案由外部組織贊助和支付費用。", + "placeholders": { + "count": { + "content": "$1", + "example": "6" + } + } + }, + "subscriptionMaxReached": { + "message": "調整訂閱將會依比例變更您的帳單總額。在不增加訂閱席位的情況下,您不能邀請超過 $COUNT$ 位使用者。", + "placeholders": { + "count": { + "content": "$1", + "example": "50" + } + } + }, + "seatsToAdd": { + "message": "要新增的席位數" + }, + "seatsToRemove": { + "message": "要移除的席位數" + }, + "seatsAddNote": { + "message": "增加使用者席位將會調整帳單總額,並立即透過您選擇的付款方式進行扣款。第一期費用將依照目前計費週期的剩餘時間依比例分配。" + }, + "seatsRemoveNote": { + "message": "移除使用者席位將會調整計費總額,這筆費用將依照比例返還並用於下一筆帳單費用中。" + }, + "adjustedSeats": { + "message": "調整了 $AMOUNT$ 個使用者席位。", + "placeholders": { + "amount": { + "content": "$1", + "example": "15" + } + } + }, + "keyUpdated": { + "message": "已更新金鑰" + }, + "updateKeyTitle": { + "message": "更新金鑰" + }, + "updateEncryptionKey": { + "message": "更新加密金鑰" + }, + "updateEncryptionKeyShortDesc": { + "message": "您目前使用的是過時的加密方式。" + }, + "updateEncryptionKeyDesc": { + "message": "我們已經採用更強大的加密金鑰,此金鑰提供了更強的安全性及更新功能。更新您的加密金鑰非常簡單快速,僅需輸入您的主密碼即可。此次更新最終將強制執行。" + }, + "updateEncryptionKeyWarning": { + "message": "更新加密金鑰後,您需要登出並重新登入目前使用的所有 Bitwarden 應用程式(如行動應用程式或瀏覽器擴充套件)。登出和重新登入(這會下載新的加密金鑰)失敗可能會導致資料損毀。我們將嘗試自動登出,但可能會有所延遲。" + }, + "updateEncryptionKeyExportWarning": { + "message": "您儲存的任何已加密匯出的檔案也將變成無效。" + }, + "subscription": { + "message": "訂閱" + }, + "loading": { + "message": "正在載入" + }, + "upgrade": { + "message": "升級" + }, + "upgradeOrganization": { + "message": "升級組織" + }, + "upgradeOrganizationDesc": { + "message": "免費組織不提供此功能。切換至付費方案以解鎖更多功能。" + }, + "createOrganizationStep1": { + "message": "建立組織:步驟 1" + }, + "createOrganizationCreatePersonalAccount": { + "message": "在建立組織之前,首先需要建立一個免費的個人帳戶。" + }, + "refunded": { + "message": "已退款" + }, + "nothingSelected": { + "message": "您未選取任何内容。" + }, + "acceptPolicies": { + "message": "一旦核取此方塊,即表示您同意下列條款:" + }, + "acceptPoliciesError": { + "message": "尚未接受服務條款與隱私權政策。" + }, + "termsOfService": { + "message": "服務條款" + }, + "privacyPolicy": { + "message": "隱私權政策" + }, + "filters": { + "message": "篩選器" + }, + "vaultTimeout": { + "message": "密碼庫逾時時間" + }, + "vaultTimeoutDesc": { + "message": "選擇密碼庫多久之後才會逾時並執行選取動作。" + }, + "oneMinute": { + "message": "1 分鐘" + }, + "fiveMinutes": { + "message": "5 分鐘" + }, + "fifteenMinutes": { + "message": "15 分鐘" + }, + "thirtyMinutes": { + "message": "30 分鐘" + }, + "oneHour": { + "message": "1 小時" + }, + "fourHours": { + "message": "4 小時" + }, + "onRefresh": { + "message": "瀏覽器重新重新整理時" + }, + "dateUpdated": { + "message": "已更新", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "密碼更新於", + "description": "ex. Date this password was updated" + }, + "organizationIsDisabled": { + "message": "已停用組織。" + }, + "licenseIsExpired": { + "message": "授權已逾期。" + }, + "updatedUsers": { + "message": "已更新使用者" + }, + "selected": { + "message": "已選擇" + }, + "ownership": { + "message": "擁有權" + }, + "whoOwnsThisItem": { + "message": "誰擁有這個項目?" + }, + "strong": { + "message": "強", + "description": "ex. A strong password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "good": { + "message": "好", + "description": "ex. A good password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weak": { + "message": "弱", + "description": "ex. A weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "veryWeak": { + "message": "非常弱", + "description": "ex. A very weak password. Scale: Very Weak -> Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "主密碼強度太弱" + }, + "weakMasterPasswordDesc": { + "message": "您設定的主密碼很脆弱。您應該使用高強度的密碼(或密碼短語)來正確保護您的 bitwarden 帳戶。仍要使用這組主密碼嗎?" + }, + "rotateAccountEncKey": { + "message": "同時輪換帳戶的加密金鑰" + }, + "rotateEncKeyTitle": { + "message": "輪換加密金鑰" + }, + "rotateEncKeyConfirmation": { + "message": "確定要輪換帳戶的加密金鑰嗎?" + }, + "attachmentsNeedFix": { + "message": "此項目包含需要修正的舊檔案附件。" + }, + "attachmentFixDesc": { + "message": "這是一個需要修正的舊檔案附件。點選此處以深入了解。" + }, + "fix": { + "message": "修正", + "description": "This is a verb. ex. 'Fix The Car'" + }, + "oldAttachmentsNeedFixDesc": { + "message": "需要先修正密碼庫中舊的檔案附件,然後才能輪換帳戶的加密金鑰。" + }, + "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." + }, + "fingerprintEnsureIntegrityVerify": { + "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." + }, + "dontAskFingerprintAgain": { + "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." + }, + "free": { + "message": "免費", + "description": "Free, as in 'Free beer'" + }, + "apiKey": { + "message": "API 金鑰" + }, + "apiKeyDesc": { + "message": "您的 API 金鑰可用於驗證 Bitwarden 公用 API。" + }, + "apiKeyRotateDesc": { + "message": "輪換 API 金鑰將使前一份金鑰失效。若您認為目前的金鑰不再安全,您可以輪換您的 API 金鑰。" + }, + "apiKeyWarning": { + "message": "您的 API 金鑰擁有對組織的完整存取權限,請儲存在安全的地方。" + }, + "userApiKeyDesc": { + "message": "您的 API 金鑰可用於在 Bitwarden CLI 中進行身分驗證。" + }, + "userApiKeyWarning": { + "message": "您的 API 金鑰是另一套替代的身分驗證機制,請儲存在安全的地方。" + }, + "oauth2ClientCredentials": { + "message": "OAuth 2.0 用戶端憑證", + "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." + }, + "viewApiKey": { + "message": "檢視 API 金鑰" + }, + "rotateApiKey": { + "message": "輪換 API 金鑰" + }, + "selectOneCollection": { + "message": "您必須至少選擇一個集合。" + }, + "couldNotChargeCardPayInvoice": { + "message": "我們無法從您的支付卡扣款。請檢視並支付以下尚未付清的款項。" + }, + "inAppPurchase": { + "message": "應用程式內購買" + }, + "cannotPerformInAppPurchase": { + "message": "使用程式內購買這種付款方式時,無法執行這個動作。" + }, + "manageSubscriptionFromStore": { + "message": "您必須在進行應用程式內購買的商店中管理訂閱。" + }, + "minLength": { + "message": "最小長度" + }, + "clone": { + "message": "複製" + }, + "masterPassPolicyDesc": { + "message": "設定對主密碼強度的最低要求。" + }, + "twoStepLoginPolicyDesc": { + "message": "要求使用者對個人帳戶設定兩步驟登入。" + }, + "twoStepLoginPolicyWarning": { + "message": "非擁有者或管理員,並且其個人帳戶未啟用兩步驟登入的組織成員將從組織中移除,他們將收到一封關於此變更的電子郵件通知。" + }, + "twoStepLoginPolicyUserWarning": { + "message": "您是組織成員,而組織要求您的使用者帳戶啟用兩步驟登入。如果停用所有兩步驟登入方式,您將被自動從這些組織移除。" + }, + "passwordGeneratorPolicyDesc": { + "message": "設定密碼產生器設定的最低要求。" + }, + "passwordGeneratorPolicyInEffect": { + "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": "新的主密碼不符合原則要求。" + }, + "minimumNumberOfWords": { + "message": "字數下限" + }, + "defaultType": { + "message": "預設類型" + }, + "userPreference": { + "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 for holding deleted items that have not yet been permanently deleted" + }, + "searchTrash": { + "message": "搜尋垃圾桶" + }, + "permanentlyDelete": { + "message": "永久刪除" + }, + "permanentlyDeleteSelected": { + "message": "永久刪除已選取項目" + }, + "permanentlyDeleteItem": { + "message": "永久刪除項目" + }, + "permanentlyDeleteItemConfirmation": { + "message": "您確定要永久刪除此項目嗎?" + }, + "permanentlyDeletedItem": { + "message": "已永久刪除項目" + }, + "permanentlyDeletedItems": { + "message": "已永久刪除項目" + }, + "permanentlyDeleteSelectedItemsDesc": { + "message": "您已經選取了 $COUNT$ 個項目要永久刪除。確定要永久刪除這些項目嗎?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "permanentlyDeletedItemId": { + "message": "已永久刪除 $ID$ 項目。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "restore": { + "message": "還原" + }, + "restoreSelected": { + "message": "還原已選取的項目" + }, + "restoreItem": { + "message": "還原項目" + }, + "restoredItem": { + "message": "已還原項目" + }, + "restoredItems": { + "message": "已還原項目" + }, + "restoreItemConfirmation": { + "message": "您確定要還原此項目嗎?" + }, + "restoreItems": { + "message": "還原項目" + }, + "restoreSelectedItemsDesc": { + "message": "您已經選取了 $COUNT$ 個項目要還原。確定要還原這些項目嗎?", + "placeholders": { + "count": { + "content": "$1", + "example": "150" + } + } + }, + "restoredItemId": { + "message": "已還原項目 $ID$。", + "placeholders": { + "id": { + "content": "$1", + "example": "Google" + } + } + }, + "vaultTimeoutLogOutConfirmation": { + "message": "選擇登出將會在密碼庫逾時後移除對密碼庫的所有存取權限,若要重新驗證則需連線網路。確定要使用此設定嗎?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "逾時動作確認" + }, + "hidePasswords": { + "message": "隱藏密碼" + }, + "countryPostalCodeRequiredDesc": { + "message": "我們僅收集此資訊用來計算營業稅與財務報表。" + }, + "includeVAT": { + "message": "包含 VAT/GST 稅務資訊(選用)" + }, + "taxIdNumber": { + "message": "VAT/GST 稅務 ID" + }, + "taxInfoUpdated": { + "message": "已更新稅務資訊。" + }, + "setMasterPassword": { + "message": "設定主密碼" + }, + "ssoCompleteRegistration": { + "message": "要完成 SSO 登入設定,請設定一組主密碼以存取和保護您的密碼庫。" + }, + "identifier": { + "message": "識別碼" + }, + "organizationIdentifier": { + "message": "組織識別碼" + }, + "ssoLogInWithOrgIdentifier": { + "message": "若要使用組織的單一登入入口登入。請先輸入您的組織識別碼。" + }, + "enterpriseSingleSignOn": { + "message": "企業單一登入" + }, + "ssoHandOff": { + "message": "您現在可以關閉此分頁,並且回到擴充套件繼續。" + }, + "includeAllTeamsFeatures": { + "message": "包含所有團隊版功能" + }, + "includeSsoAuthentication": { + "message": "透過 SAML2.0 和 OpenID Connect 進行 SSO 驗證" + }, + "includeEnterprisePolicies": { + "message": "企業原則" + }, + "ssoValidationFailed": { + "message": "SSO 驗證失敗" + }, + "ssoIdentifierRequired": { + "message": "需要組織識別碼。" + }, + "unlinkSso": { + "message": "取消連結 SSO" + }, + "unlinkSsoConfirmation": { + "message": "您確定要取消本組織的 SSO 連結嗎?" + }, + "linkSso": { + "message": "連結 SSO" + }, + "singleOrg": { + "message": "單一組織" + }, + "singleOrgDesc": { + "message": "限制使用者加入任何其他組織。" + }, + "singleOrgBlockCreateMessage": { + "message": "您目前的組織原則不允許您加入多個組織。請聯絡您的組織管理員或從其他 Bitwarden 帳戶註冊。" + }, + "singleOrgPolicyWarning": { + "message": "不是擁有者或管理員並且已經是其他組織的成員的組織成員將從您的組織中移除。" + }, + "requireSso": { + "message": "單一登入驗證" + }, + "requireSsoPolicyDesc": { + "message": "要求使用者以企業單一登入方法登入。" + }, + "prerequisite": { + "message": "先決條件" + }, + "requireSsoPolicyReq": { + "message": "必須先開啟單一組織企業原則,才能開啟此原則。" + }, + "requireSsoPolicyReqError": { + "message": "未啟用單一組織原則。" + }, + "requireSsoExemption": { + "message": "組織擁有者與管理員不受此原則的執行影響。" + }, + "sendTypeFile": { + "message": "檔案" + }, + "sendTypeText": { + "message": "文字" + }, + "createSend": { + "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." + }, + "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." + }, + "deleteSend": { + "message": "刪除 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deleteSendConfirmation": { + "message": "您確定要刪除此 Send 嗎?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "whatTypeOfSend": { + "message": "這是什麽類型的 Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "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": "目前存取次數" + }, + "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." + }, + "disabled": { + "message": "已停用" + }, + "sendLink": { + "message": "Send 連結", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLink": { + "message": "複製 Send 連結", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "removePassword": { + "message": "移除密碼" + }, + "removedPassword": { + "message": "已移除密碼" + }, + "removePasswordConfirmation": { + "message": "您確定要移除此密碼嗎?" + }, + "hideEmail": { + "message": "對收件人隱藏我的電子郵件地址。" + }, + "disableThisSend": { + "message": "停用此 Send 以阻止任何人存取。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "allSends": { + "message": "所有 Send" + }, + "maxAccessCountReached": { + "message": "已達最大存取次數", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "pendingDeletion": { + "message": "等待刪除" + }, + "expired": { + "message": "已逾期" + }, + "searchSends": { + "message": "搜尋 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPassword": { + "message": "此 Send 受到密碼保護,請在下方輸入密碼以繼續。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendProtectedPasswordDontKnow": { + "message": "不知道密碼?請向此 Send 的寄件者索取密碼。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendHiddenByDefault": { + "message": "此 Send 預設為隱藏。您可使用下方的按鈕切換其可見度。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "downloadFile": { + "message": "下載檔案" + }, + "sendAccessUnavailable": { + "message": "您嘗試存取的 Send 不存在或無法再使用。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "missingSendFile": { + "message": "找不到與此 Send 關聯的檔案。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "noSendsInList": { + "message": "沒有可列出的 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "emergencyAccess": { + "message": "緊急存取" + }, + "emergencyAccessDesc": { + "message": "授予和管理可信任連絡人的緊急存取權限。當遇到緊急情况時,可信任連絡人可以要求存取檢視或接管您帳戶的權限。瀏覽說明頁面以取得有關零知識共用的工作原理和更多詳細資訊。" + }, + "emergencyAccessOwnerWarning": { + "message": "您是一個或多個組織的擁有者。如果您授予緊急聯絡人接管存取權限,那麼他們在接管後將能夠以組織擁有者的身分使用您的所有權限。" + }, + "trustedEmergencyContacts": { + "message": "信任的緊急聯絡人" + }, + "noTrustedContacts": { + "message": "您尚未新增任何緊急聯絡人,請邀請一位可信任的聯絡人以開始。" + }, + "addEmergencyContact": { + "message": "新增緊急聯絡人" + }, + "designatedEmergencyContacts": { + "message": "已指定為緊急聯絡人" + }, + "noGrantedAccess": { + "message": "您尚未被指定為任何人的緊急聯絡人。" + }, + "inviteEmergencyContact": { + "message": "邀請緊急聯絡人" + }, + "editEmergencyContact": { + "message": "編輯緊急聯絡人" + }, + "inviteEmergencyContactDesc": { + "message": "透過在下方輸入他們的 Bitwarden 帳戶的電子郵件地址,來邀請新的緊急聯絡人。若他們還沒有 Bitwarden 帳戶,系統將提示他們建立新帳戶。" + }, + "emergencyAccessRecoveryInitiated": { + "message": "已啟動緊急存取" + }, + "emergencyAccessRecoveryApproved": { + "message": "已核准緊急存取" + }, + "viewDesc": { + "message": "可以檢視您擁有的密碼庫中的所有項目。" + }, + "takeover": { + "message": "接管" + }, + "takeoverDesc": { + "message": "可以使用新的主密碼重設您的帳戶。" + }, + "waitTime": { + "message": "等候時間" + }, + "waitTimeDesc": { + "message": "自動授予存取權限前所需的時間。" + }, + "oneDay": { + "message": "1 天" + }, + "days": { + "message": "$DAYS$ 天", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "invitedUser": { + "message": "已邀請使用者。" + }, + "acceptEmergencyAccess": { + "message": "您已被邀請成為上述使用者的緊急聯絡人。要接受邀請,您需要登入或建立新的 Bitwarden 帳戶。" + }, + "emergencyInviteAcceptFailed": { + "message": "無法接受邀請。請向使用者要求傳送新的邀請。" + }, + "emergencyInviteAcceptFailedShort": { + "message": "無法接受邀請。$DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must enable 2FA on your user account before you can join this organization." + } + } + }, + "emergencyInviteAcceptedDesc": { + "message": "確認您的身份後,您便可以存取此使用者的緊急選項。到時我們會向您傳送電子郵件通知。" + }, + "requestAccess": { + "message": "要求存取權限" + }, + "requestAccessConfirmation": { + "message": "您確定要申請緊急存取嗎?在 $WAITTIME$ 天之後或使用者手動批准要求時您將取得存取權限。", + "placeholders": { + "waittime": { + "content": "$1", + "example": "1" + } + } + }, + "requestSent": { + "message": "來自 $USER$ 的緊急存取要求。我們將透過電子郵件通知您何時可以繼續。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "approve": { + "message": "核准" + }, + "reject": { + "message": "拒絕" + }, + "approveAccessConfirmation": { + "message": "您確定要核准緊急存取嗎?這將允許 $USER$ $ACTION$ 您的帳戶。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + }, + "action": { + "content": "$2", + "example": "View" + } + } + }, + "emergencyApproved": { + "message": "已核准緊急存取。" + }, + "emergencyRejected": { + "message": "已拒絕緊急存取" + }, + "passwordResetFor": { + "message": "$USER$ 的密碼已重設。您現在可以使用新密碼登入了。", + "placeholders": { + "user": { + "content": "$1", + "example": "John Smith" + } + } + }, + "personalOwnership": { + "message": "個人擁有權" + }, + "personalOwnershipPolicyDesc": { + "message": "透過移除個人擁有權選項要求使用者將密碼庫項目儲存至組織。" + }, + "personalOwnershipExemption": { + "message": "組織擁有者與管理員不受此原則的執行影響。" + }, + "personalOwnershipSubmitError": { + "message": "由於某個企業原則,您被限制為儲存項目至您的個人密碼庫。將擁有權變更為組織,並從可用的集合中選擇。" + }, + "disableSend": { + "message": "停用 Send" + }, + "disableSendPolicyDesc": { + "message": "不允許使用者建立或編輯 Bitwarden Send。但允許刪除現有的 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "disableSendExemption": { + "message": "可以管理組織原則的組織使用者豁免此原則的執行。" + }, + "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." + }, + "sendOptions": { + "message": "Send 選項", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyDesc": { + "message": "設定用於建立和編輯 Send 的選項。", + "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsExemption": { + "message": "可以管理組織原則的組織使用者豁免此原則的執行。" + }, + "disableHideEmail": { + "message": "不允許使用者在建立或編輯 Send 時隱藏他們的電子郵件位址。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendOptionsPolicyInEffect": { + "message": "以下組織原則目前作用中:" + }, + "sendDisableHideEmailInEffect": { + "message": "使用者在建立或編輯 Send 時不允許隱藏他們的電子郵件地址。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "modifiedPolicyId": { + "message": "原則 $ID$ 已修改。", + "placeholders": { + "id": { + "content": "$1", + "example": "Master Password" + } + } + }, + "planPrice": { + "message": "方案價格" + }, + "estimatedTax": { + "message": "估計稅額" + }, + "custom": { + "message": "自訂" + }, + "customDesc": { + "message": "進階設定允許更精細地控制使用者權限。" + }, + "permissions": { + "message": "權限" + }, + "accessEventLogs": { + "message": "存取事件紀錄" + }, + "accessImportExport": { + "message": "存取匯入/匯出" + }, + "accessReports": { + "message": "存取報告" + }, + "missingPermissions": { + "message": "您欠缺執行本動作必要的權限。" + }, + "manageAllCollections": { + "message": "管理所有集合。" + }, + "createNewCollections": { + "message": "建立新的集合" + }, + "editAnyCollection": { + "message": "編輯任何集合" + }, + "deleteAnyCollection": { + "message": "刪除任何集合" + }, + "manageAssignedCollections": { + "message": "管理已指派的集合" + }, + "editAssignedCollections": { + "message": "編輯已指派的集合" + }, + "deleteAssignedCollections": { + "message": "刪除已指派的集合" + }, + "manageGroups": { + "message": "管理群組" + }, + "managePolicies": { + "message": "管理原則" + }, + "manageSso": { + "message": "管理 SSO" + }, + "manageUsers": { + "message": "管理使用者" + }, + "manageResetPassword": { + "message": "管理密碼重設" + }, + "disableRequiredError": { + "message": "您必須先手動停用 $POLICYNAME$ 原則,然後才能停用此原則。", + "placeholders": { + "policyName": { + "content": "$1", + "example": "Single Sign-On Authentication" + } + } + }, + "personalOwnershipPolicyInEffect": { + "message": "組織原則正在影響您的擁有權選項。" + }, + "personalOwnershipPolicyInEffectImports": { + "message": "組織原則已禁止您將項目匯入至您的個人密碼庫。" + }, + "personalOwnershipCheckboxDesc": { + "message": "停用組織使用者的個人擁有權。" + }, + "textHiddenByDefault": { + "message": "存取此 Send 時,將預設隱藏文字", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNameDesc": { + "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": "您想要傳送的檔案。" + }, + "copySendLinkOnSave": { + "message": "儲存時複製連結至剪貼簿以便共用此 Send。" + }, + "sendLinkLabel": { + "message": "Send 連結", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineProductDesc": { + "message": "Bitwarden Send 可以輕鬆、安全地向其他人傳輸敏感的暫存資訊。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendAccessTaglineLearnMore": { + "message": "深入了解", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more about** Bitwarden Send or sign up to try it today.'" + }, + "sendVaultCardProductDesc": { + "message": "與任何人直接共用文字或檔案。" + }, + "sendVaultCardLearnMore": { + "message": "深入了解", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**Learn more**, see how it works, or try it now. '" + }, + "sendVaultCardSee": { + "message": "參閲", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, **see** how it works, or try it now.'" + }, + "sendVaultCardHowItWorks": { + "message": "運作方式", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see **how it works**, or try it now.'" + }, + "sendVaultCardOr": { + "message": "或", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, **or** try it now.'" + }, + "sendVaultCardTryItNow": { + "message": "立即嘗試", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more, see how it works, or **try it now**.'" + }, + "sendAccessTaglineOr": { + "message": "或", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send **or** sign up to try it today.'" + }, + "sendAccessTaglineSignUp": { + "message": "註冊", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or **sign up** to try it today.'" + }, + "sendAccessTaglineTryToday": { + "message": "現在就試試。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about Bitwarden Send or sign up to **try it today.**'" + }, + "sendCreatorIdentifier": { + "message": "Bitwarden 使用者 $USER_IDENTIFIER$ 與您共用了以下內容", + "placeholders": { + "user_identifier": { + "content": "$1", + "example": "An email address" + } + } + }, + "viewSendHiddenEmailWarning": { + "message": "建立此 Send 的 Bitwarden 使用者已選擇隱藏他們的電子郵件地址。在使用或下載此連結的內容之前,應確保您信任此連結的來源。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDateIsInvalid": { + "message": "指定的逾期日期無效。" + }, + "deletionDateIsInvalid": { + "message": "指定的刪除日期無效。" + }, + "expirationDateAndTimeRequired": { + "message": "必須指定逾期日期和時間。" + }, + "deletionDateAndTimeRequired": { + "message": "要求指定刪除日期和時間。" + }, + "dateParsingError": { + "message": "儲存刪除日期和逾期日期時發生錯誤。" + }, + "webAuthnFallbackMsg": { + "message": "要驗證您的 2FA,請點選下方的按鈕。" + }, + "webAuthnAuthenticate": { + "message": "驗證 WebAuthn" + }, + "webAuthnNotSupported": { + "message": "此瀏覽器不支援 WebAuthn。" + }, + "webAuthnSuccess": { + "message": "WebAuthn 驗證成功!您可以關閉此分頁。" + }, + "hintEqualsPassword": { + "message": "密碼提示不能與您的密碼相同。" + }, + "enrollPasswordReset": { + "message": "註冊密碼重設" + }, + "enrolledPasswordReset": { + "message": "已註冊密碼重設" + }, + "withdrawPasswordReset": { + "message": "撤銷密碼重設" + }, + "enrollPasswordResetSuccess": { + "message": "註冊成功!" + }, + "withdrawPasswordResetSuccess": { + "message": "撤銷成功!" + }, + "eventEnrollPasswordReset": { + "message": "使用者 $ID$ 註冊了密碼重設協助。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventWithdrawPasswordReset": { + "message": "使用者 $ID$ 撤銷了密碼重設協助。", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventAdminPasswordReset": { + "message": "重設使用者 $ID$ 的主密碼", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "eventResetSsoLink": { + "message": "重設使用者 $ID$ 的 SSO 連結", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "firstSsoLogin": { + "message": "$ID$ 第一次使用 SSO 登入", + "placeholders": { + "id": { + "content": "$1", + "example": "John Smith" + } + } + }, + "resetPassword": { + "message": "重設密碼" + }, + "resetPasswordLoggedOutWarning": { + "message": "接下來會將 $NAME$ 登出目前的工作階段,並要求他們重新登入帳戶。其他裝置上的活動工作階段最多會保持一個小時。", + "placeholders": { + "name": { + "content": "$1", + "example": "John Smith" + } + } + }, + "thisUser": { + "message": "此使用者" + }, + "resetPasswordMasterPasswordPolicyInEffect": { + "message": "一個或多個組織原則要求主密碼須符合下列條件:" + }, + "resetPasswordSuccess": { + "message": "密碼重設成功!" + }, + "resetPasswordEnrollmentWarning": { + "message": "註冊後將允許組織管理者變更您的主密碼。確定要註冊嗎?" + }, + "resetPasswordPolicy": { + "message": "主密碼重設" + }, + "resetPasswordPolicyDescription": { + "message": "允許組織管理者重設組織使用者的主密碼。" + }, + "resetPasswordPolicyWarning": { + "message": "組織使用者需要先自行註冊或被自動註冊後,管理者才能重設他們的主密碼。" + }, + "resetPasswordPolicyAutoEnroll": { + "message": "自動註冊" + }, + "resetPasswordPolicyAutoEnrollDescription": { + "message": "所有接受邀請的使用者,將會被自動註冊密碼重設,並且不允許撤銷。" + }, + "resetPasswordPolicyAutoEnrollWarning": { + "message": "已經在組織中的使用者將不會被註冊密碼重設。他們需要先自行註冊後管理者才能重設他們的主密碼。" + }, + "resetPasswordPolicyAutoEnrollCheckbox": { + "message": "要求為新使用者啟用自動註冊" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "此組織有一個可以為您自動註冊密碼重設的企業原則。註冊後將允許組織管理員變更您的主密碼。" + }, + "resetPasswordOrgKeysError": { + "message": "組織金鑰回應為 null" + }, + "resetPasswordDetailsError": { + "message": "重設密碼詳細資訊回應為 null" + }, + "trashCleanupWarning": { + "message": "垃圾桶中超過 30 天的密碼將會被自動刪除。" + }, + "trashCleanupWarningSelfHosted": { + "message": "垃圾桶中超過一定時間的密碼將會被自動刪除。" + }, + "passwordPrompt": { + "message": "重新詢問主密碼" + }, + "passwordConfirmation": { + "message": "確認主密碼" + }, + "passwordConfirmationDesc": { + "message": "此動作受到保護。若要繼續,請重新輸入您的主密碼以驗證您的身份。" + }, + "reinviteSelected": { + "message": "重新傳送邀請" + }, + "noSelectedUsersApplicable": { + "message": "此動作不適用於任何已選取的使用者。" + }, + "removeUsersWarning": { + "message": "您確定要移除以下使用者嗎?這可能需要幾秒鐘的時間,並且不能中斷或取消。" + }, + "theme": { + "message": "主題" + }, + "themeDesc": { + "message": "選擇網頁密碼庫主題。" + }, + "themeSystem": { + "message": "使用系統主題" + }, + "themeDark": { + "message": "深色" + }, + "themeLight": { + "message": "淺色" + }, + "confirmSelected": { + "message": "確認選取" + }, + "bulkConfirmStatus": { + "message": "批次作業狀態" + }, + "bulkConfirmMessage": { + "message": "已成功確認。" + }, + "bulkReinviteMessage": { + "message": "已成功重新邀請。" + }, + "bulkRemovedMessage": { + "message": "已成功移除。" + }, + "bulkFilteredMessage": { + "message": "已排除,不適用於此動作。" + }, + "fingerprint": { + "message": "指紋" + }, + "removeUsers": { + "message": "移除使用者" + }, + "error": { + "message": "錯誤" + }, + "resetPasswordManageUsers": { + "message": "必須啟用管理密碼重設權限後才能啟用管理使用者權限" + }, + "setupProvider": { + "message": "提供者設定" + }, + "setupProviderLoginDesc": { + "message": "已邀請您設定一個新的提供者。若要繼續,您需要登入或建立一個新的 Bitwarden 帳戶。" + }, + "setupProviderDesc": { + "message": "請在下方輸入詳細資訊以完成提供者設定。若您有任何問題,請聯絡客戶支援。" + }, + "providerName": { + "message": "提供者名稱" + }, + "providerSetup": { + "message": "已完成提供者設定。" + }, + "clients": { + "message": "客户" + }, + "providerAdmin": { + "message": "提供者管理員" + }, + "providerAdminDesc": { + "message": "具有最高權限的使用者,可以管理提供者的所有層面也可以存取和管理客戶組織。" + }, + "serviceUser": { + "message": "服務使用者" + }, + "serviceUserDesc": { + "message": "服務使用者可以存取和管理所有客戶組織。" + }, + "providerInviteUserDesc": { + "message": "透過在下方輸入他們的 Bitwarden 帳戶電子郵件位址,來邀請新的使用者加入您的提供者。若他們還沒有 Bitwarden 帳戶,將提示他們建立新帳戶。" + }, + "joinProvider": { + "message": "加入提供者" + }, + "joinProviderDesc": { + "message": "您已受邀請加入上方所列的提供者。若想接受邀請,您需要登入或建立新的 Bitwarden 帳戶。" + }, + "providerInviteAcceptFailed": { + "message": "無法接受邀請。請要求提供者管理員傳送新的邀請。" + }, + "providerInviteAcceptedDesc": { + "message": "管理員確認您的成員身分後,您便可以存取此提供者。到時我們會向您傳送電子郵件通知。" + }, + "providerUsersNeedConfirmed": { + "message": "有使用者已接受邀請,但仍然需要確認。在確認之前,使用者將無法存取提供者。" + }, + "provider": { + "message": "提供者" + }, + "newClientOrganization": { + "message": "新的客戶組織" + }, + "newClientOrganizationDesc": { + "message": "建立一個新的客戶組織,該組織將作為提供者與您建立關聯。您將能夠存取和管理此組織。" + }, + "addExistingOrganization": { + "message": "新增現有組織" + }, + "myProvider": { + "message": "我的提供者" + }, + "addOrganizationConfirmation": { + "message": "您確定要將 $ORGANIZATION$ 新增為 $PROVIDER$ 的客戶嗎?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + }, + "provider": { + "content": "$2", + "example": "My Provider Name" + } + } + }, + "organizationJoinedProvider": { + "message": "已成功將組織新增至提供者" + }, + "accessingUsingProvider": { + "message": "正在使用提供者 $PROVIDER$ 存取組織", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "providerIsDisabled": { + "message": "已停用提供者。" + }, + "providerUpdated": { + "message": "已更新提供者" + }, + "yourProviderIs": { + "message": "您的提供者為 $PROVIDER$。他們對您的組織具有管理和計費權限。", + "placeholders": { + "provider": { + "content": "$1", + "example": "My Provider Name" + } + } + }, + "detachedOrganization": { + "message": "組織 $ORGANIZATION$ 已與您的提供者中斷連結。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "detachOrganizationConfirmation": { + "message": "您確定要分離此組織嗎?該組織將繼續存在,但不再由此提供者管理。" + }, + "add": { + "message": "新增" + }, + "updatedMasterPassword": { + "message": "已更新主密碼" + }, + "updateMasterPassword": { + "message": "更新主密碼" + }, + "updateMasterPasswordWarning": { + "message": "您的主密碼最近被您的組織管理者變更過。您必須現在更新主密碼才能存取密碼庫。繼續操作會登出您目前的工作階段,並要求您重新登入帳戶。其他裝置上的活動工作階段最多會保持一個小時。" + }, + "masterPasswordInvalidWarning": { + "message": "您的主密碼不符合此組織原則的要求。您必須現在更新主密碼才可以加入此組織。繼續操作會登出您目前的工作階段,並要求您重新登入帳戶。其他裝置上的活動工作階段最多會保持一個小時。" + }, + "maximumVaultTimeout": { + "message": "密碼庫逾時時間" + }, + "maximumVaultTimeoutDesc": { + "message": "為所有使用者設定最大密碼庫逾時時間。" + }, + "maximumVaultTimeoutLabel": { + "message": "最大密碼庫逾時時間" + }, + "invalidMaximumVaultTimeout": { + "message": "無效的最大密碼庫逾時時間。" + }, + "hours": { + "message": "小時" + }, + "minutes": { + "message": "分鐘" + }, + "vaultTimeoutPolicyInEffect": { + "message": "您的組織原則正在影響您的密碼庫逾時時間。密碼庫逾時時間最多可以設定到 $HOURS$ 小時 $MINUTES$ 分鐘。", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "customVaultTimeout": { + "message": "自訂密碼庫逾時時間" + }, + "vaultTimeoutToLarge": { + "message": "您的密碼庫逾時時間超過組織設定的限制。" + }, + "disablePersonalVaultExport": { + "message": "停用個人密碼庫匯出" + }, + "disablePersonalVaultExportDesc": { + "message": "禁止使用者匯出個人密碼庫資料。" + }, + "vaultExportDisabled": { + "message": "已停用密碼庫匯出" + }, + "personalVaultExportPolicyInEffect": { + "message": "一個或多個組織原則禁止您匯出個人密碼庫。" + }, + "selectType": { + "message": "選擇 SSO 類型" + }, + "type": { + "message": "類型" + }, + "openIdConnectConfig": { + "message": "OpenID 連線設定" + }, + "samlSpConfig": { + "message": "SAML 服務提供程式設定" + }, + "samlIdpConfig": { + "message": "SAML 身分提供程式設定" + }, + "callbackPath": { + "message": "回呼路徑" + }, + "signedOutCallbackPath": { + "message": "已登出回呼路徑" + }, + "authority": { + "message": "授權單位" + }, + "clientId": { + "message": "客戶 ID" + }, + "clientSecret": { + "message": "客戶金鑰" + }, + "metadataAddress": { + "message": "中繼資料位址" + }, + "oidcRedirectBehavior": { + "message": "OIDC 重新導向行為" + }, + "getClaimsFromUserInfoEndpoint": { + "message": "從使用者資訊端點取得聲明" + }, + "additionalScopes": { + "message": "自訂範圍" + }, + "additionalUserIdClaimTypes": { + "message": "自訂使用者 ID 聲明類型" + }, + "additionalEmailClaimTypes": { + "message": "電子郵件聲明類型" + }, + "additionalNameClaimTypes": { + "message": "自訂名稱聲明類型" + }, + "acrValues": { + "message": "要求的驗證資料內容類別參考值" + }, + "expectedReturnAcrValue": { + "message": "回應中預期的「acr」聲明值" + }, + "spEntityId": { + "message": "SP 實體 ID" + }, + "spMetadataUrl": { + "message": "SAML 2.0 中繼資料 URL" + }, + "spAcsUrl": { + "message": "判斷提示取用者服務 (ACS) URL" + }, + "spNameIdFormat": { + "message": "名稱 ID 格式" + }, + "spOutboundSigningAlgorithm": { + "message": "傳出簽署演算法" + }, + "spSigningBehavior": { + "message": "簽署行為" + }, + "spMinIncomingSigningAlgorithm": { + "message": "最小傳入簽署演算法" + }, + "spWantAssertionsSigned": { + "message": "需要已簽署宣告" + }, + "spValidateCertificates": { + "message": "驗證憑證" + }, + "idpEntityId": { + "message": "實體 ID" + }, + "idpBindingType": { + "message": "繫結類型" + }, + "idpSingleSignOnServiceUrl": { + "message": "單一登入服務 URL" + }, + "idpSingleLogoutServiceUrl": { + "message": "單一登出服務 URL" + }, + "idpX509PublicCert": { + "message": "X509 公開憑證" + }, + "idpOutboundSigningAlgorithm": { + "message": "傳出簽署演算法" + }, + "idpAllowUnsolicitedAuthnResponse": { + "message": "允許未經要求的驗證回應" + }, + "idpAllowOutboundLogoutRequests": { + "message": "允許傳出登出要求" + }, + "idpSignAuthenticationRequests": { + "message": "簽署身分驗證要求" + }, + "ssoSettingsSaved": { + "message": "已儲存單一登入設定。" + }, + "sponsoredFamilies": { + "message": "免費的 Bitwarden 家庭方案" + }, + "sponsoredFamiliesEligible": { + "message": "您與家庭成員可使用免費的 Bitwarden 家庭方案。就算不在上班時間,也可以使用您的私人電子郵件來兌換此方案,以保障您的資料安全。" + }, + "sponsoredFamiliesEligibleCard": { + "message": "立即兌換您的免費 Bitwarden 家庭方案,即使不在上班時間也能夠保障您的資料安全。" + }, + "sponsoredFamiliesInclude": { + "message": "Bitwarden 家庭方案內容包含" + }, + "sponsoredFamiliesPremiumAccess": { + "message": "最多 6 位使用者的付費方案存取權限" + }, + "sponsoredFamiliesSharedCollections": { + "message": "用於家庭共用帳號密碼的集合" + }, + "badToken": { + "message": "連結已失效。請讓贊助者重新傳送邀請。" + }, + "reclaimedFreePlan": { + "message": "已回收免費方案" + }, + "redeem": { + "message": "兌換" + }, + "sponsoredFamiliesSelectOffer": { + "message": "選擇您希望被贊助的組織" + }, + "familiesSponsoringOrgSelect": { + "message": "您想兌換哪一個免費家庭邀請呢?" + }, + "sponsoredFamiliesEmail": { + "message": "輸入您的個人電子郵件以兌換 Bitwarden 家庭方案" + }, + "sponsoredFamiliesLeaveCopy": { + "message": "如果您離開或被從該組織中移除,您的家庭方案將在計費周期結束時逾期。" + }, + "acceptBitwardenFamiliesHelp": { + "message": "接受現有組織的邀請或建立一個新的家庭組織。" + }, + "setupSponsoredFamiliesLoginDesc": { + "message": "您已被邀請加入一個免費的 Bitwarden 家庭方案組織。若要繼續,您必須登入至接受邀請的帳戶。" + }, + "sponsoredFamiliesAcceptFailed": { + "message": "無法接受邀請。請透過您的企業帳戶重新傳送邀請郵件,然後再試一次。" + }, + "sponsoredFamiliesAcceptFailedShort": { + "message": "無法接受邀請。$DESCRIPTION$", + "placeholders": { + "description": { + "content": "$1", + "example": "You must have at least one existing Families Organization." + } + } + }, + "sponsoredFamiliesOffer": { + "message": "兌換免費的 Bitwarden 家庭方案" + }, + "sponsoredFamiliesOfferRedeemed": { + "message": "已成功兌換免費的 Bitwarden 家庭方案" + }, + "redeemed": { + "message": "已兌換" + }, + "redeemedAccount": { + "message": "已兌換帳戶" + }, + "revokeAccount": { + "message": "撤銷帳戶 $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "resendEmailLabel": { + "message": "重新傳送贊助郵件至 $NAME$", + "placeholders": { + "name": { + "content": "$1", + "example": "My Sponsorship Name" + } + } + }, + "freeFamiliesPlan": { + "message": "免費家庭方案" + }, + "redeemNow": { + "message": "立即兌換" + }, + "recipient": { + "message": "收件者" + }, + "removeSponsorship": { + "message": "移除贊助" + }, + "removeSponsorshipConfirmation": { + "message": "移除贊助後,您將自己負責此訂閱及其相關帳單。您確定要繼續嗎?" + }, + "sponsorshipCreated": { + "message": "已建立贊助" + }, + "revoke": { + "message": "撤銷" + }, + "emailSent": { + "message": "已寄出郵件" + }, + "revokeSponsorshipConfirmation": { + "message": "移除此帳戶後,家庭組織的擁有者將負責此訂閱及其相關帳單。您確定要繼續嗎?" + }, + "removeSponsorshipSuccess": { + "message": "已移除贊助" + }, + "ssoKeyConnectorUnavailable": { + "message": "無法連線至 Key Connector。請稍後再試。" + }, + "keyConnectorUrl": { + "message": "Key Connector URL" + }, + "sendVerificationCode": { + "message": "傳送驗證碼至您的電子郵件信箱" + }, + "sendCode": { + "message": "傳送驗證碼" + }, + "codeSent": { + "message": "驗證碼已傳送" + }, + "verificationCode": { + "message": "驗證碼" + }, + "confirmIdentity": { + "message": "請先確認身分後再繼續。" + }, + "verificationCodeRequired": { + "message": "必須填入驗證碼。" + }, + "invalidVerificationCode": { + "message": "無效的驗證碼" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ 使用自我托管金鑰伺服器 SSO。此組織的成員登入時將不再需要主密碼。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "離開組織" + }, + "removeMasterPassword": { + "message": "移除主密碼" + }, + "removedMasterPassword": { + "message": "已移除主密碼。" + }, + "allowSso": { + "message": "允許 SSO 身分驗證" + }, + "allowSsoDesc": { + "message": "設定後,您的設定將被儲存,成員將可以使用他們的識別提供者憑證進行身分驗證。" + }, + "ssoPolicyHelpStart": { + "message": "啟用", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpLink": { + "message": "SSO 驗證原則", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpEnd": { + "message": "要求所有成員皆使用 SSO 登入。", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enable the SSO Authentication policy to require all members to log in with SSO.'" + }, + "ssoPolicyHelpKeyConnector": { + "message": "SSO 驗證及單一組織原則需要先設定 Key Connector 解密方式後才能啟用。" + }, + "memberDecryptionOption": { + "message": "成員解密選項" + }, + "memberDecryptionPassDesc": { + "message": "通過驗證以後,成員將使用他們的主密碼解密密碼庫資料。" + }, + "keyConnector": { + "message": "Key Connector" + }, + "memberDecryptionKeyConnectorDesc": { + "message": "連結 SSO 登入至您的自我托管解密金鑰伺服器。使用此選項後,成員便無需使用它們的主密碼來解密密碼庫資料。聯絡 Bitwarden 客戶支援以取得設定協助。" + }, + "keyConnectorPolicyRestriction": { + "message": "已啟用「SSO 登入和 Key Connector 解密」。此原則僅適用於擁有者和管理員。" + }, + "enabledSso": { + "message": "已啟用 SSO" + }, + "disabledSso": { + "message": "已停用 SSO" + }, + "enabledKeyConnector": { + "message": "已啟用 Key Connector" + }, + "disabledKeyConnector": { + "message": "已停用 Key Connector" + }, + "keyConnectorWarning": { + "message": "一旦成員開始使用 Key Connector,您的組織將無法還原為使用主密碼解密。請於您可以輕鬆地部署和管理金鑰伺服器時再繼續。" + }, + "migratedKeyConnector": { + "message": "已移轉至 Key Connector" + }, + "paymentSponsored": { + "message": "請提供一個與此組織關聯的付款方式。別擔心,我們不會向您收取任何費用,除非您選擇進階功能或您的贊助到期。 " + }, + "orgCreatedSponsorshipInvalid": { + "message": "贊助邀請已逾期,您可以刪除您建立的組織,以避免在 7 天試用期結束後被收取費用。 您也可以關閉此提示以保留該組織並承擔計費責任。" + }, + "newFamiliesOrganization": { + "message": "新的家庭組織" + }, + "acceptOffer": { + "message": "接受邀請" + }, + "sponsoringOrg": { + "message": "贊助組織" + }, + "keyConnectorTest": { + "message": "測試" + }, + "keyConnectorTestSuccess": { + "message": "成功!已連線 Key Connector。" + }, + "keyConnectorTestFail": { + "message": "無法連線 Key Connector。請檢查 URL。" + }, + "sponsorshipTokenHasExpired": { + "message": "此贊助邀請已逾期。" + }, + "freeWithSponsorship": { + "message": "免費贊助" + }, + "formErrorSummaryPlural": { + "message": "您需注意上方的 $COUNT$ 個欄位。", + "placeholders": { + "count": { + "content": "$1", + "example": "5" + } + } + }, + "formErrorSummarySingle": { + "message": "您需注意上方的 1 個欄位。" + }, + "fieldRequiredError": { + "message": "$FIELDNAME$ 是必要項目。", + "placeholders": { + "fieldname": { + "content": "$1", + "example": "Full name" + } + } + }, + "required": { + "message": "必填" + }, + "idpSingleSignOnServiceUrlRequired": { + "message": "若 Entity ID 非 URL,則必須填入。" + }, + "openIdOptionalCustomizations": { + "message": "選用自訂項目" + }, + "openIdAuthorityRequired": { + "message": "若授權無效,則必須填入。" + }, + "separateMultipleWithComma": { + "message": "使用逗號分隔。" + }, + "sessionTimeout": { + "message": "您的登入階段已逾時,請返回並嘗試重新登入。" + }, + "exportingPersonalVaultTitle": { + "message": "匯出個人密碼庫" + }, + "exportingOrganizationVaultTitle": { + "message": "匯出組織密碼庫" + }, + "exportingPersonalVaultDescription": { + "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫。組織密碼庫的項目不包含在內。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "exportingOrganizationVaultDescription": { + "message": "只會匯出與 $ORGANIZATION$ 關聯的組織密碼庫。個人密碼庫和其他組織的項目不包含在內。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "backToReports": { + "message": "返回報告" + }, + "generator": { + "message": "產生器" + }, + "whatWouldYouLikeToGenerate": { + "message": "您想要產生什麼?" + }, + "passwordType": { + "message": "密碼類型" + }, + "regenerateUsername": { + "message": "重新產生使用者名稱" + }, + "generateUsername": { + "message": "產生使用者名稱" + }, + "usernameType": { + "message": "使用者名稱類型" + }, + "plusAddressedEmail": { + "message": "加號地址電子郵件", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "使用您的電子郵件提供者的子地址功能。" + }, + "catchallEmail": { + "message": "Catch-all 電子郵件" + }, + "catchallEmailDesc": { + "message": "使用您的網域設定的 Catch-all 收件匣。" + }, + "random": { + "message": "隨機" + }, + "randomWord": { + "message": "隨機單字" + }, + "service": { + "message": "服務" + } +} diff --git a/apps/web/src/manifest.json b/apps/web/src/manifest.json new file mode 100644 index 0000000000..92a1204c60 --- /dev/null +++ b/apps/web/src/manifest.json @@ -0,0 +1,17 @@ +{ + "name": "Bitwarden Vault", + "icons": [ + { + "src": "images/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "images/icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#175DDC", + "background_color": "#175DDC" +} diff --git a/apps/web/src/models/account.ts b/apps/web/src/models/account.ts new file mode 100644 index 0000000000..b45c40b1ad --- /dev/null +++ b/apps/web/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: number = process.env.NODE_ENV === "development" ? null : 15; +} + +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/web/src/models/globalState.ts b/apps/web/src/models/globalState.ts new file mode 100644 index 0000000000..3937690209 --- /dev/null +++ b/apps/web/src/models/globalState.ts @@ -0,0 +1,7 @@ +import { ThemeType } from "jslib-common/enums/themeType"; +import { GlobalState as BaseGlobalState } from "jslib-common/models/domain/globalState"; + +export class GlobalState extends BaseGlobalState { + theme?: ThemeType = ThemeType.Light; + rememberEmail = true; +} diff --git a/apps/web/src/scss/base.scss b/apps/web/src/scss/base.scss new file mode 100644 index 0000000000..a17fc5c543 --- /dev/null +++ b/apps/web/src/scss/base.scss @@ -0,0 +1,307 @@ +html { + font-size: 14px; +} + +body { + min-width: 1010px; + + &.layout_frontend { + @media (prefers-color-scheme: dark) { + background-color: $darkDarkBlue2; + } + @media (prefers-color-scheme: light) { + background-color: $white; + } + @include themify($themes) { + background-color: themed("layoutFrontendColor"); + color: themed("textHeadingColor"); + } + } + + @include themify($themes) { + background-color: themed("backgroundColor"); + color: themed("textColor"); + } + + &.full-width:not(.layout_frontend) { + .container { + min-width: 980px; + width: 90%; + } + } +} + +.container { + margin: 0 auto; + max-width: none !important; + padding: 0; + width: 980px; +} + +.page-header, +.secondary-header, +.tabbed-header { + margin-bottom: 0.5rem; + padding-bottom: 0.6rem; + + &:not(.text-danger) { + h1, + h2, + h3, + h4 { + margin: 0; + @include themify($themes) { + color: themed("textHeadingColor"); + } + } + } +} + +.page-header, +.secondary-header { + @include themify($themes) { + border-bottom: 1px solid themed("separator"); + } +} + +.secondary-header, +.spaced-header { + margin-top: 4rem; +} + +.tabbed-header { + margin-top: 1.5rem; +} + +img.logo { + display: block; + height: 43px; + margin: 0 auto; + width: 284px; + + &.logo-themed { + @include themify($themes) { + content: url("../images/logo-" + themed("logoSuffix") + "@2x.png"); + } + } +} + +.page-content { + margin-top: 20px; +} + +.footer { + margin-top: 40px; + padding: 40px 0 40px 0; + @include themify($themes) { + border-top: 1px solid themed("separator"); + } +} + +hr, +.dropdown-divider { + @include themify($themes) { + border-top: 1px solid themed("separatorHr"); + } +} + +.min-height-fix { + min-height: 1px; +} + +.overflow-hidden { + overflow: hidden; +} + +.cursor-move { + cursor: move !important; +} + +h1, +h2, +h3, +h4, +h5 { + @include themify($themes) { + color: themed("textHeadingColor"); + } + + small { + font-size: 80%; + } + + &.spaced-header { + @include themify($themes) { + color: themed("textHeadingColor"); + } + } +} + +a { + @include themify($themes) { + color: themed("linkColor"); + } + + &.text-body { + @include themify($themes) { + color: themed("textHeadingColor") !important; + font-weight: themed("linkWeight"); + } + } +} + +code { + @include themify($themes) { + color: themed("codeColor"); + } +} + +.bwi-icon-above-input { + height: 1.5em; +} + +.text-lg { + font-size: $font-size-lg; +} + +.text-strike { + text-decoration: line-through; +} + +.font-weight-semibold { + font-weight: 600; +} + +.btn:focus, +.swal2-popup .swal2-actions button:focus, +.btn.focus, +.swal2-popup .swal2-actions button.focus, +.form-control:focus { + @include themify($themes) { + box-shadow: 0 0 0 0.2rem themed("focus"); + } +} + +/* Override Bootstrap theming */ + +.bg-primary { + @include themify($themes) { + background-color: themed("bgPrimaryColor"); + } +} + +.bg-light { + @include themify($themes) { + background-color: themed("bgLightColor") !important; + } +} + +.bg-success { + @include themify($themes) { + background-color: themed("success") !important; + color: themed("textSuccessColor") !important; + } +} + +.bg-warning { + @include themify($themes) { + background-color: themed("warning") !important; + color: themed("textWarningColor") !important; + } +} + +.bg-error, +.bg-danger { + @include themify($themes) { + background-color: themed("danger") !important; + color: themed("textDangerColor") !important; + } +} + +.bg-info { + @include themify($themes) { + background-color: themed("info") !important; + color: themed("textInfoColor") !important; + } +} + +.border-primary { + @include themify($themes) { + border-color: themed("borderPrimaryColor") !important; + } +} + +.border-warning { + @include themify($themes) { + border-color: themed("warning") !important; + } +} + +.border-danger { + @include themify($themes) { + border-color: themed("danger") !important; + } +} + +.border-info { + @include themify($themes) { + border-color: themed("info") !important; + } +} + +.text-success { + @include themify($themes) { + color: themed("success") !important; + } + + & > h1, + h2, + h3, + h4 { + @include themify($themes) { + color: themed("success") !important; + } + } +} + +.text-warning { + @include themify($themes) { + color: themed("warning") !important; + } + + & > h1, + h2, + h3, + h4 { + @include themify($themes) { + color: themed("warning") !important; + } + } +} + +.text-danger { + &:not(.dropdown-item) { + @include themify($themes) { + color: themed("danger") !important; + } + + & > h1, + h2, + h3, + h4 { + @include themify($themes) { + color: themed("danger") !important; + } + } + } +} + +.text-muted { + @include themify($themes) { + color: themed("textMuted") !important; + } +} + +button i.bwi { + margin-right: 0.25rem; +} diff --git a/apps/web/src/scss/buttons.scss b/apps/web/src/scss/buttons.scss new file mode 100644 index 0000000000..6713a97abe --- /dev/null +++ b/apps/web/src/scss/buttons.scss @@ -0,0 +1,253 @@ +.btn-primary, +.swal2-confirm { + @include themify($themes) { + background-color: themed("btnPrimary"); + border-color: themed("btnPrimary"); + color: themed("btnPrimaryText"); + } + + &:hover:not(:disabled), + &:active:not(:disabled) { + @include themify($themes) { + background-color: themed("btnPrimaryHover"); + border-color: themed("btnPrimaryBorderHover"); + color: themed("btnPrimaryText"); + } + } + + &:disabled { + opacity: 0.65; + } +} + +.btn-outline-primary { + @include themify($themes) { + background-color: themed("btnOutlinePrimaryBackground"); + border-color: themed("btnOutlinePrimaryBorder"); + color: themed("btnOutlinePrimaryText"); + } + + &:hover:not(:disabled), + &:active { + @include themify($themes) { + background-color: themed("btnOutlinePrimaryBackgroundHover"); + border-color: themed("btnOutlinePrimaryBorderHover"); + color: themed("btnOutlinePrimaryTextHover"); + } + } +} + +.btn-secondary, +.swal2-cancel { + @include themify($themes) { + background-color: themed("btnSecondary"); + border-color: themed("btnSecondaryBorder"); + color: themed("btnSecondaryText"); + } + + &:hover:not(:disabled), + &:active:not(:disabled) { + @include themify($themes) { + background-color: themed("btnSecondaryHover"); + border-color: themed("btnSecondaryBorderHover"); + color: themed("btnSecondaryTextHover"); + } + } + + &:disabled { + opacity: 0.65; + } + + &:focus, + &.focus { + @include themify($themes) { + box-shadow: 0 0 0 $btn-focus-width + rgba(mix(color-yiq(themed("primary")), themed("primary"), 15%), 0.5); + } + } +} + +.btn-outline-secondary { + @include themify($themes) { + background-color: themed("btnOutlineSecondaryBackground"); + border-color: themed("btnOutlineSecondaryBorder"); + color: themed("btnOutlineSecondaryText"); + } + + &:hover:not(:disabled), + &:active { + @include themify($themes) { + background-color: themed("btnOutlineSecondaryBackgroundHover"); + border-color: themed("btnOutlineSecondaryBorderHover"); + color: themed("btnOutlineSecondaryTextHover"); + } + } +} + +.show > .btn-outline-secondary { + &.dropdown-toggle, + &:focus { + @include themify($themes) { + background-color: themed("btnOutlineSecondaryBackground"); + border-color: themed("btnOutlineSecondaryBorder"); + color: themed("btnOutlineSecondaryText"); + } + } + + &:hover { + @include themify($themes) { + background-color: themed("btnOutlineSecondaryBackgroundHover"); + border-color: themed("btnOutlineSecondaryBorderHover"); + color: themed("btnOutlineSecondaryTextHover"); + } + } +} + +.btn-danger, +.swal2-deny { + @include themify($themes) { + background-color: themed("btnDanger"); + border-color: themed("btnDanger"); + color: themed("btnDangerText"); + } + + &:hover:not(:disabled), + &:active:not(:disabled) { + @include themify($themes) { + background-color: themed("btnDangerHover"); + border-color: themed("btnDangerHover"); + color: themed("btnDangerText"); + } + } +} + +.btn-outline-danger { + @include themify($themes) { + background-color: themed("btnOutlineDangerBackground"); + border-color: themed("btnOutlineDangerBorder"); + color: themed("btnOutlineDangerText"); + } + + &:hover:not(:disabled), + &:active { + @include themify($themes) { + background-color: themed("btnOutlineDangerBackgroundHover"); + border-color: themed("btnOutlineDangerBorderHover"); + color: themed("btnOutlineDangerTextHover"); + } + } +} + +.btn-link { + &:focus, + &.focus { + outline-color: -webkit-focus-ring-color; + outline-offset: 1px; + outline-style: auto; + outline-width: 1px; + } + + &:not(.text-danger):not(.cursor-move) { + @include themify($themes) { + color: themed("btnLinkText"); + } + } + + &:hover:not(.text-danger):not(.cursor-move) { + @include themify($themes) { + color: themed("btnLinkTextHover"); + } + } +} + +.btn-submit { + position: relative; + + .bwi-spinner { + align-items: center; + bottom: 0; + display: none; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + } + + &:disabled:not(.manual), + &.loading { + .bwi-spinner { + display: flex; + } + + span { + visibility: hidden; + } + } +} + +button.no-btn { + background: transparent; + border: none; + padding: 0; + color: inherit; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + &:hover, + &:focus { + background: transparent; + box-shadow: none; + color: inherit; + } +} + +.badge-primary { + @include themify($themes) { + background-color: themed("badgePrimaryBackground"); + color: themed("badgePrimaryText"); + } + + &:hover { + @include themify($themes) { + background-color: themed("badgePrimaryBackgroundHover"); + color: themed("badgePrimaryText"); + } + } +} + +.badge-secondary { + @include themify($themes) { + background-color: themed("badgeSecondaryBackground"); + color: themed("badgeSecondaryText"); + } +} + +.badge-info { + @include themify($themes) { + background-color: themed("badgeInfoBackground"); + color: themed("badgeInfoText"); + } +} + +.badge-danger { + @include themify($themes) { + background-color: themed("badgeDangerBackground"); + color: themed("badgeDangerText"); + } +} + +.badge-warning { + @include themify($themes) { + background-color: themed("warning"); + color: themed("textWarningColor"); + } +} + +.badge-success { + @include themify($themes) { + background-color: themed("success"); + color: themed("textSuccessColor"); + } +} diff --git a/apps/web/src/scss/callouts.scss b/apps/web/src/scss/callouts.scss new file mode 100644 index 0000000000..bde5bedcc3 --- /dev/null +++ b/apps/web/src/scss/callouts.scss @@ -0,0 +1,83 @@ +.callout { + border-left-width: 5px !important; + border-radius: $card-inner-border-radius; + margin-bottom: $alert-margin-bottom; + padding: $alert-padding-y $alert-padding-x; + @include themify($themes) { + background-color: themed("calloutBackground"); + border: 1px solid themed("borderColor"); + color: themed("calloutColor"); + } + + .callout-heading { + margin-top: 0; + } + + h3.callout-heading { + font-weight: bold; + text-transform: uppercase; + } + + &.callout-primary { + @include themify($themes) { + border-left-color: themed("primary"); + } + .callout-heading { + @include themify($themes) { + color: themed("primary"); + } + } + } + + &.callout-info { + @include themify($themes) { + border-left-color: themed("info"); + } + + .callout-heading { + @include themify($themes) { + color: themed("info"); + } + } + } + + &.callout-danger { + @include themify($themes) { + border-left-color: themed("danger"); + } + + .callout-heading { + @include themify($themes) { + color: themed("danger"); + } + } + } + + &.callout-success { + @include themify($themes) { + border-left-color: themed("success"); + } + + .callout-heading { + @include themify($themes) { + color: themed("success"); + } + } + } + + &.callout-warning { + @include themify($themes) { + border-left-color: themed("warning"); + } + + .callout-heading { + @include themify($themes) { + color: themed("warning"); + } + } + } + + .enforced-policy-options ul { + margin-bottom: 0px; + } +} diff --git a/apps/web/src/scss/cards.scss b/apps/web/src/scss/cards.scss new file mode 100644 index 0000000000..b57687fb8f --- /dev/null +++ b/apps/web/src/scss/cards.scss @@ -0,0 +1,98 @@ +.card { + @include themify($themes) { + background-color: themed("foregroundColor"); + border-color: themed("borderColor"); + color: themed("textColor"); + } + + &.text-danger { + &.text-danger > .card-body { + @include themify($themes) { + color: themed("danger"); + } + } + } +} + +.card-header, +.modal-header { + font-weight: bold; + text-transform: uppercase; + + small { + font-weight: normal; + text-transform: none; + @extend .text-muted; + } +} + +.card-header { + @include themify($themes) { + background-color: themed("headerColor"); + color: themed("textHeadingColor"); + } + + a:hover { + &:not(.badge) { + @include themify($themes) { + color: themed("learnMoreHover"); + } + } + } +} + +.card-body-header { + font-size: $font-size-lg; + @extend .mb-4; +} + +.card ul.bwi-ul.card-ul { + margin-left: 1.9em; + + li { + word-break: break-all; + } + + .bwi-li { + top: 4px; + } + + &.carets { + margin-left: 1.1em; + + .bwi-li { + left: -17px; + width: 1.1em; + } + } + + ul { + &.carets { + margin-left: 0.85em; + } + } + + &.no-margin { + margin-left: 0; + } +} + +.card-org-plans { + h2 { + font-size: $font-size-lg; + } +} + +.card-body { + &:not(.bg-light > .card-body) { + @include themify($themes) { + background-color: themed("foregroundColor"); + color: themed("textColor"); + } + &.card-body a:not(li a) { + @include themify($themes) { + font-weight: themed("linkWeight"); + } + } + } +} diff --git a/apps/web/src/scss/export.module.scss b/apps/web/src/scss/export.module.scss new file mode 100644 index 0000000000..615a0f75d1 --- /dev/null +++ b/apps/web/src/scss/export.module.scss @@ -0,0 +1,8 @@ +@import "variables"; + +:export { + darkInputColor: $darkInputColor; + darkInputPlaceholderColor: $darkInputPlaceholderColor; + lightInputColor: $lightInputColor; + lightInputPlaceholderColor: $lightInputPlaceholderColor; +} diff --git a/apps/web/src/scss/export.module.scss.d.ts b/apps/web/src/scss/export.module.scss.d.ts new file mode 100644 index 0000000000..6b2c06a0c7 --- /dev/null +++ b/apps/web/src/scss/export.module.scss.d.ts @@ -0,0 +1,9 @@ +export interface ThemeVariableExport { + lightInputColor: string; + lightInputPlaceholderColor: string; + darkInputColor: string; + darkInputPlaceholderColor: string; +} + +export const ThemeVariables: ThemeVariableExport; +export default ThemeVariables; diff --git a/apps/web/src/scss/forms.scss b/apps/web/src/scss/forms.scss new file mode 100644 index 0000000000..acba154f30 --- /dev/null +++ b/apps/web/src/scss/forms.scss @@ -0,0 +1,256 @@ +::-ms-reveal { + display: none; +} + +::placeholder { + @include themify($themes) { + color: themed("inputPlaceholderColor"); + } +} + +input, +select, +textarea { + &:required { + box-shadow: none; + } +} + +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: -cancel-button; +} + +label:not(.form-check-label):not(.btn), +label.bold { + font-weight: 600; + @include themify($themes) { + color: themed("textHeadingColor"); + } +} + +label.form-check-label, +.form-control-file { + @include themify($themes) { + color: themed("textHeadingColor"); + } +} + +.form-check-block { + .form-check-label { + font-weight: 600; + + > small { + display: block; + font-weight: normal; + @include themify($themes) { + color: themed("textMuted"); + } + } + + > span { + display: block; + font-weight: normal; + @extend .mt-2; + } + } +} + +.form-check-block + .form-check-block { + &:not(.mt-2) { + @extend .mt-3; + } +} + +.form-group { + .form-group-child-check { + @extend .ml-4; + } +} + +.form-inline { + input[type="datetime-local"] { + width: 200px; + } +} + +.form-control { + @include themify($themes) { + background-color: themed("inputBackgroundColor"); + border-color: themed("inputBorderColor"); + color: themed("inputTextColor"); + + option { + background-color: themed("backgroundColor"); + } + } + + &:disabled, + &[readonly] { + @include themify($themes) { + background-color: themed("inputDisabledBackground"); + color: themed("inputDisabledColor"); + } + } +} + +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +.form-control.stripe-form-control { + padding-top: 0.55rem; + + &.is-focused { + outline: 0; + @include themify($themes) { + background-color: themed("inputBackgroundColor"); + border-color: themed("inputBorderColor"); + box-shadow: 0 0 0 $input-focus-width + rgba(mix(color-yiq(themed("primary")), themed("primary"), 15%), 0.5); + color: themed("inputTextColor"); + } + + &.is-invalid { + opacity: 0.75; + @include themify($themes) { + box-shadow: 0 0 0 $input-focus-width themed("danger"); + } + } + } + + &.is-invalid { + @include themify($themes) { + border-color: themed("danger"); + } + } +} + +.dropdown-menu, +.dropdown-item { + @include themify($themes) { + background-color: themed("dropdownBackground"); + color: themed("dropdownTextColor"); + } +} + +.dropdown-item { + @include themify($themes) { + color: themed("dropdownTextColor"); + } + + &.text-danger { + @include themify($themes) { + color: themed("danger") !important; + } + } + &:hover { + @include themify($themes) { + background-color: themed("dropdownHover"); + } + } + &:active { + background-color: rgba(0, 0, 0, 0.1) !important; + } +} + +.dropdown-menu { + button { + cursor: pointer; + } + @include themify($themes) { + border: 1px solid themed("listItemBorder"); + } +} + +.list-group-item { + &:focus, + &.focus { + z-index: 100; + } + @include themify($themes) { + background-color: themed("foregroundColor"); + border-color: themed("listItemBorder"); + color: themed("textColor"); + } + > .two-factor-content { + justify-content: center; + flex-direction: row; + display: flex; + > .text-col { + flex-direction: column; + flex: 1; + } + > .logo-col { + min-width: 100px; + margin-right: 20px; + display: flex; + align-items: center; + justify-content: center; + img { + height: fit-content; + } + } + > .btn-col { + width: 85px; + display: flex; + align-items: center; + justify-content: center; + } + } +} + +.list-group-item.active { + font-weight: bold !important; + padding-left: calc(#{$list-group-item-padding-x} - 3px); + @include themify($themes) { + border-color: themed("borderColor"); + border-left: 3px solid themed("borderPrimaryColor"); + color: themed("listItemActive"); + } +} + +.section-header { + h3, + .btn.btn-link { + @include themify($themes) { + color: themed("headingColor"); + } + } + + h3 { + font-weight: normal; + text-transform: uppercase; + } +} + +.error-summary { + margin-top: 1rem; +} + +.error-inline { + @include themify($themes) { + color: themed("danger"); + } +} + +// Theming for invalid form elements in the SSO Config Form only +// Will be deprecated by component-level styling in the Component Library +app-org-manage-sso form { + .form-control.ng-invalid, + app-input-text.ng-invalid .form-control, + app-select.ng-invalid .form-control { + @include themify($themes) { + border-color: themed("danger"); + } + } +} + +// Browser specific icons overlayed on input fields. e.g. caps lock indicator on password field +::-webkit-calendar-picker-indicator, +input::-webkit-caps-lock-indicator, +input::-webkit-credentials-auto-fill-button { + @include themify($themes) { + filter: themed("browserInputIconsFilter"); + } +} diff --git a/apps/web/src/scss/modals.scss b/apps/web/src/scss/modals.scss new file mode 100644 index 0000000000..337bc3169c --- /dev/null +++ b/apps/web/src/scss/modals.scss @@ -0,0 +1,162 @@ +.modal-content { + border: none; + border-radius: none; + @include themify($themes) { + background-color: themed("backgroundColor"); + } +} + +.modal-dialog { + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + width: $modal-md; +} + +.modal-sm { + width: $modal-sm; +} + +.modal-lg { + width: $modal-lg; +} + +.modal-header { + @include themify($themes) { + background-color: themed("foregroundColor"); + border-bottom: 1px solid themed("separator"); + color: themed("textColor"); + } +} + +.modal-body { + @include themify($themes) { + background-color: themed("foregroundColor"); + color: themed("textColor"); + } + + h3, + .section-header > * { + font-weight: normal; + text-transform: uppercase; + @include themify($themes) { + color: themed("textMuted"); + } + } +} +.modal .list-group-flush { + :first-child { + border-top: none; + } + + :last-child { + border-bottom: none; + } +} + +.modal .list-group-flush-2fa { + div { + border-left: none; + border-right: none; + } + div:first-child { + border-top: none; + } + + div:last-child { + border-bottom: none; + } +} + +.modal-footer { + justify-content: flex-start; + @include themify($themes) { + background-color: themed("footerBackgroundColor"); + border-top: 1px solid themed("separator"); + } +} + +.close { + @include themify($themes) { + color: themed("textColor"); + } +} + +#totpImage { + @include themify($themes) { + filter: themed("imgFilter"); + } +} + +.totp { + .totp-code { + @extend .text-monospace; + font-size: 1.2rem; + } + + .totp-countdown { + display: block; + margin: 3px 3px 0 0; + user-select: none; + + .totp-sec { + font-size: 0.85em; + line-height: 32px; + position: absolute; + text-align: center; + width: 32px; + } + + svg { + height: 32px; + transform: rotate(-90deg); + width: 32px; + } + + .totp-circle { + fill: none; + @include themify($themes) { + stroke: themed("primary"); + } + + &.inner { + stroke-dasharray: 78.6; + stroke-dashoffset: 0; + stroke-width: 3; + } + + &.outer { + stroke-dasharray: 88; + stroke-dashoffset: 0; + stroke-width: 2; + } + } + } + + > .align-items-center { + margin-bottom: -5px; + } + + &.low { + .totp-sec, + .totp-code { + @include themify($themes) { + color: themed("danger"); + } + } + + .totp-circle { + @include themify($themes) { + stroke: themed("danger"); + } + } + } +} + +.cdk-drag-preview { + border-radius: $border-radius; + opacity: 0.8; + z-index: $zindex-tooltip !important; + @include themify($themes) { + background: themed("cdkDraggingBackground"); + } +} diff --git a/apps/web/src/scss/navigation.scss b/apps/web/src/scss/navigation.scss new file mode 100644 index 0000000000..f57936d49e --- /dev/null +++ b/apps/web/src/scss/navigation.scss @@ -0,0 +1,104 @@ +.navbar { + padding-left: 0; + padding-right: 0; + @include themify($themes) { + background-color: themed("navBackground"); + } + + &.nav-background-alt { + @include themify($themes) { + background-color: themed("navBackgroundAlt"); + } + } + + .nav-item { + > .nav-link { + @include themify($themes) { + font-weight: themed("navWeight"); + } + } + &.active > .nav-link { + @include themify($themes) { + font-weight: themed("navActiveWeight"); + } + } + } +} + +.navbar-brand { + margin-bottom: -20px; + margin-top: -20px; +} + +.nav-tabs .nav-link.active { + @include themify($themes) { + background: themed("navActiveBackground"); + border-color: themed("borderColor"); + } +} + +.org-nav { + height: 100px; + min-height: 100px; + @include themify($themes) { + background-color: themed("navOrgBackgroundColor"); + border-bottom: 1px solid themed("borderColor"); + color: themed("textColor"); + } + + .container { + height: 100%; + } + + .org-name { + line-height: 1; + text-align: left; + font-weight: normal; + span { + display: block; + font-size: $font-size-lg; + @include themify($themes) { + color: themed("textHeadingColor"); + } + } + } +} + +.tabbed-nav { + @include themify($themes) { + border-bottom: 1px solid themed("borderColor"); + color: themed("textColor"); + } +} + +.org-nav, +.tabbed-nav { + .nav-tabs { + border-bottom: none; + + a { + &:not(.active) { + border-color: transparent; + @include themify($themes) { + color: themed("textColor"); + } + } + + &.active { + font-weight: bold; + padding-top: calc(#{$nav-link-padding-y} - 2px); + @include themify($themes) { + border-top: 3px solid themed("primary"); + border-bottom: 1px solid themed("backgroundColor"); + color: themed("linkColor"); + } + } + + &.disabled { + @include themify($themes) { + color: themed("inputDisabledColor"); + } + } + } + } +} diff --git a/apps/web/src/scss/pages.scss b/apps/web/src/scss/pages.scss new file mode 100644 index 0000000000..088be84f50 --- /dev/null +++ b/apps/web/src/scss/pages.scss @@ -0,0 +1,230 @@ +.generated-wrapper { + min-width: 0; + white-space: pre-wrap; + word-break: break-all; +} + +.password-row { + min-width: 0; +} + +.password-letter { + @include themify($themes) { + color: themed("pwLetter"); + } +} + +.password-number { + @include themify($themes) { + color: themed("pwNumber"); + } +} + +.password-special { + @include themify($themes) { + color: themed("pwSpecial"); + } +} + +app-generator { + #lengthRange { + width: 100%; + } + + .card-generated { + .card-body { + @include themify($themes) { + background: themed("foregroundColor"); + } + align-items: center; + display: flex; + flex-wrap: wrap; + font-family: $font-family-monospace; + font-size: $font-size-lg; + justify-content: center; + text-align: center; + } + } +} + +app-password-generator-history { + .list-group-item { + line-height: 1; + @include themify($themes) { + background: themed("backgroundColor"); + } + + .password { + font-family: $font-family-monospace; + } + } +} + +app-import { + textarea { + height: 150px; + } +} + +app-avatar { + img { + @extend .rounded; + } +} + +app-user-billing { + .progress { + height: 20px; + + .progress-bar { + min-width: 50px; + } + } +} + +app-sponsored-families { + .inset-list { + padding-left: 1.5rem; + } +} + +/* Register Layout Page */ +.layout { + &.default, + &.teams, + &.teams1, + &.teams2, + &.enterprise, + &.enterprise1, + &.enterprise2, + &.cnetcmpgnent, + &.cnetcmpgnteams, + &.cnetcmpgnind { + header { + background: #175ddc; + color: #ced4da; + height: 70px; + + &:before { + background: #175ddc; + content: ""; + height: 520px; + left: 0; + position: absolute; + top: -80px; + transform: skewY(-3deg); + width: 100%; + z-index: -1; + } + img.logo { + height: 57px; + margin: 12px 0 0; + max-width: 284px; + width: 284px; + } + } + + h1 { + color: #ffffff; + font-size: 3.5rem; + margin: 50px 0 0; + } + + h2 { + color: #ffffff; + font-size: 2rem; + line-height: 1.5; + margin: 20px 0 140px; + } + + p { + font-size: 2rem; + margin: 10px 0 70px 0; + + &:before { + content: "/"; + padding-right: 12px; + } + &:not(.highlight) { + &:before { + color: #1252a3; + } + } + + b { + &:after { + content: "⟶"; + font-size: 2rem; + padding-left: 6px; + } + } + } + + figure { + margin: 0; + } + + blockquote { + font-size: 1.4rem; + margin: 20px 0 0; + } + } + + &.cnetcmpgnind { + p { + font-size: 1.5rem; + margin: 10px 0 50px 0; + } + } +} + +.collapsable-row { + display: flex; + padding-top: 15px; + i { + margin-top: 3px; + } + .filter-title { + padding-left: 5px; + } + &.active { + @include themify($themes) { + color: themed("primary"); + } + } +} + +.vault-filter-option { + padding-bottom: 3px; + &.active { + @include themify($themes) { + color: themed("primary"); + font-weight: bold; + } + } + button.org-options { + background: none; + border: none; + padding: 0; + + &:hover, + &:focus { + @include themify($themes) { + color: themed("iconHover") !important; + box-shadow: none; + } + } + } +} + +.org-filter-heading { + @include themify($themes) { + color: themed("textColor"); + } + &.active { + @include themify($themes) { + color: themed("primary"); + font-weight: bold; + } + } +} diff --git a/apps/web/src/scss/plugins.scss b/apps/web/src/scss/plugins.scss new file mode 100644 index 0000000000..0610535eb5 --- /dev/null +++ b/apps/web/src/scss/plugins.scss @@ -0,0 +1,227 @@ +#duo-frame { + height: 330px; + @include themify($themes) { + background: themed("imgLoading") 0 0 no-repeat; + } + + iframe { + border: none; + height: 100%; + width: 100%; + } +} + +#web-authn-frame { + height: 290px; + @include themify($themes) { + background: themed("imgLoading") 0 0 no-repeat; + } + + iframe { + border: none; + height: 100%; + width: 100%; + } +} + +#hcaptcha_iframe { + border: none; + transition: height 0.25s linear; + width: 100%; +} + +.list-group-2fa { + .logo-2fa { + min-width: 100px; + } +} + +@each $mfaType in $mfaTypes { + .mfaType#{$mfaType} { + content: url("../images/two-factor/" + $mfaType + ".png"); + max-width: 100px; + } +} + +.mfaType1 { + @include themify($themes) { + content: url("../images/two-factor/1" + themed("mfaLogoSuffix")); + max-width: 100px; + max-height: 45px; + } +} + +.mfaType7 { + @include themify($themes) { + content: url("../images/two-factor/7" + themed("mfaLogoSuffix")); + max-width: 100px; + } +} + +.recovery-code-img { + @include themify($themes) { + content: url("../images/two-factor/rc" + themed("mfaLogoSuffix")); + max-width: 100px; + max-height: 45px; + } +} + +.progress { + @include themify($themes) { + background-color: themed("pwStrengthBackground"); + } +} + +// Braintree + +#bt-dropin-container { + min-height: 50px; + @include themify($themes) { + background: themed("loadingSvg") center center no-repeat; + } +} + +.braintree-placeholder, +.braintree-sheet__header { + display: none; +} + +.braintree-sheet__content--button { + min-height: 0; + padding: 0; + text-align: left; +} + +.braintree-sheet__container { + margin-bottom: 0; +} + +.braintree-sheet { + border: none; +} + +[data-braintree-id="upper-container"]::before { + @include themify($themes) { + background-color: themed("backgroundColor"); + } +} + +.card [data-braintree-id="upper-container"]::before { + @include themify($themes) { + background-color: themed("foregroundColor"); + } +} + +[data-braintree-id="paypal-button"] { + @include themify($themes) { + background-color: themed("backgroundColor"); + } +} + +.card [data-braintree-id="paypal-button"] { + @include themify($themes) { + background-color: themed("foregroundColor"); + } +} + +.paypal-button-text { + @include themify($themes) { + color: themed("textColor"); + } +} + +// SweetAlert2 + +[class*="swal2-"] { + &:not(.swal2-container, .swal2-confirm, .swal2-cancel, .swal2-deny) { + @include themify($themes) { + background-color: themed("backgroundColor"); + color: themed("textColor"); + } + } +} + +.swal2-container { + background-color: rgba(0, 0, 0, 0.3); +} + +.swal2-popup { + @include themify($themes) { + background-color: themed("backgroundColor"); + color: themed("textColor"); + } + border: $modal-content-border-width solid #9a9a9a; + @include border-radius($modal-content-border-radius); + padding: 15px 0 0; + width: 34em; // slightly bigger than the hardcoded 478px in v1. + + .swal2-header { + padding: 0 15px; + } + + .swal2-icon { + border: none; + height: auto; + margin: 0 auto; + width: auto; + } + + .swal2-content { + font-size: $font-size-base; + padding-bottom: 15px; + @include themify($themes) { + border-bottom: $modal-footer-border-width solid themed("separator"); + } + } + + i.swal-custom-icon { + display: block; + font-size: 35px; + margin: 0 auto; + } + + .swal2-title { + font-size: $font-size-lg; + margin: 0; + padding: 10px 0 15px; + @include themify($themes) { + color: themed("textHeadingColor"); + } + } + + .swal2-content { + font-size: $font-size-base; + padding: 0 15px 15px; + @include themify($themes) { + color: themed("textColor"); + } + } + + .swal2-actions { + @include border-radius($modal-content-border-radius); + display: flex; + flex-direction: row; + font-size: $font-size-base; + justify-content: flex-start; + margin: 0; + padding: 15px; + @include themify($themes) { + background-color: themed("backgroundColor"); + } + + button { + margin-right: 10px; + @extend .btn; + } + } + + .swal2-validation-message { + margin: 0 -15px; + } +} + +date-input-polyfill { + &[data-open="true"] { + z-index: 10000 !important; + } +} diff --git a/apps/web/src/scss/styles.scss b/apps/web/src/scss/styles.scss new file mode 100644 index 0000000000..9b5c9e9060 --- /dev/null +++ b/apps/web/src/scss/styles.scss @@ -0,0 +1,63 @@ +$icomoon-font-path: "../../../../libs/angular/src/scss/bwicons/fonts/"; +$card-icons-base: "../../../../libs/angular/src/images/cards/"; + +@import "../../../../libs/angular/src/scss/webfonts.css"; +@import "./variables"; +@import "../../../../libs/angular/src/scss/bwicons/styles/style.scss"; +@import "../../../../libs/angular/src/scss/icons.scss"; +@import "@angular/cdk/overlay-prebuilt.css"; + +//@import "~bootstrap/scss/bootstrap"; +@import "~bootstrap/scss/_functions"; +@import "~bootstrap/scss/_variables"; +@import "~bootstrap/scss/_mixins"; +@import "~bootstrap/scss/_root"; +@import "~bootstrap/scss/_reboot"; +@import "~bootstrap/scss/_type"; +@import "~bootstrap/scss/_images"; +@import "~bootstrap/scss/_code"; +@import "~bootstrap/scss/_grid"; +@import "~bootstrap/scss/_tables"; +@import "~bootstrap/scss/_forms"; +@import "~bootstrap/scss/_buttons"; +@import "~bootstrap/scss/_transitions"; +@import "~bootstrap/scss/_dropdown"; +@import "~bootstrap/scss/_button-group"; +@import "~bootstrap/scss/_input-group"; +@import "~bootstrap/scss/_custom-forms"; +@import "~bootstrap/scss/_nav"; +@import "~bootstrap/scss/_navbar"; +@import "~bootstrap/scss/_card"; +@import "~bootstrap/scss/_breadcrumb"; +@import "~bootstrap/scss/_pagination"; +@import "~bootstrap/scss/_badge"; +@import "~bootstrap/scss/_jumbotron"; +@import "~bootstrap/scss/_alert"; +@import "~bootstrap/scss/_progress"; +@import "~bootstrap/scss/_media"; +@import "~bootstrap/scss/_list-group"; +@import "~bootstrap/scss/_close"; +//@import "~bootstrap/scss/_toasts"; +@import "~bootstrap/scss/_modal"; +@import "~bootstrap/scss/_tooltip"; +@import "~bootstrap/scss/_popover"; +@import "~bootstrap/scss/_carousel"; +@import "~bootstrap/scss/_spinners"; +@import "~bootstrap/scss/_utilities"; +@import "~bootstrap/scss/_print"; + +@import "~ngx-toastr/toastr"; +@import "~#sweetalert2"; + +@import "./base"; +@import "./buttons"; +@import "./callouts"; +@import "./cards"; +@import "./forms"; +@import "./navigation"; +@import "./modals"; +@import "./pages"; +@import "./plugins"; +@import "./tables"; +@import "./toasts"; +@import "./vault-filters"; diff --git a/apps/web/src/scss/tables.scss b/apps/web/src/scss/tables.scss new file mode 100644 index 0000000000..7274aaf0e8 --- /dev/null +++ b/apps/web/src/scss/tables.scss @@ -0,0 +1,137 @@ +.table { + @include themify($themes) { + color: themed("textColor"); + } + + td { + vertical-align: middle; + @include themify($themes) { + color: themed("textColor"); + } + + & > a { + &:not(.badge) { + @include themify($themes) { + color: themed("tableLinkColor"); + } + &:hover { + @include themify($themes) { + color: themed("tableLinkColorHover"); + } + } + } + } + + &.reduced-lh { + line-height: 1; + + small { + font-size: 80%; + } + } + + small, + > .bwi, + .icon { + @include themify($themes) { + color: themed("textMuted"); + } + } + + .bwi-globe { + @include themify($themes) { + color: themed("iconColor"); + } + } + } + + td.wrap { + word-break: break-all; + } + + td.table-list-options { + height: 50px; + max-width: 76px; + text-align: right; + width: 76px; + + &.wider { + max-width: 100px; + width: 100px; + } + + .btn { + line-height: 1; + transition: initial; + } + + .dropdown-menu { + line-height: $line-height-base; + } + } + + td.table-action-right { + text-align: right; + } + + // Deprecated: only used for old Bootstrap table-list-option menus before the End User Vault Refresh. + // New menus should be permanently visible. + tr:not(:hover) td.table-list-options { + > .dropdown:not(.show) button:not(:focus):not(:active), + > button.dropdown-toggle:not(:focus):not(:active) { + @extend .sr-only; + } + } + + td.table-list-icon { + max-width: 45px; + text-align: center; + width: 45px; + + img { + @extend .rounded; + @extend .img-fluid; + max-height: 24px; + } + } + + td.table-list-checkbox { + max-width: 35px; + width: 35px; + } + + td.table-list-strike { + text-decoration: line-through; + @include themify($themes) { + color: themed("textMuted"); + } + } + + &.table-list { + &.table td, + .table th { + &:not(tr:first-child td) { + @include themify($themes) { + border-top: 1px solid themed("tableSeparator"); + } + } + } + + thead th { + border-top: none; + } + + tr:first-child { + td { + border: none; + } + } + } +} + +.table-hover tbody tr:hover { + @include themify($themes) { + background-color: themed("tableRowHover"); + color: themed("tableColorHover"); + } +} diff --git a/apps/web/src/scss/tailwind.css b/apps/web/src/scss/tailwind.css new file mode 100644 index 0000000000..e58785aecb --- /dev/null +++ b/apps/web/src/scss/tailwind.css @@ -0,0 +1,5 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@import "../../../../libs/components/src/tw-theme.css"; diff --git a/apps/web/src/scss/toasts.scss b/apps/web/src/scss/toasts.scss new file mode 100644 index 0000000000..6685de6449 --- /dev/null +++ b/apps/web/src/scss/toasts.scss @@ -0,0 +1,117 @@ +.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("danger"); + } + + &, + &:before, + & .toast-close-button { + @include themify($themes) { + color: themed("textDangerColor") !important; + } + } + + .icon i::before { + content: map_get($icons, "error"); + } + } + + &.toast-warning { + @include themify($themes) { + background-color: themed("warning"); + } + + &, + &:before, + & .toast-close-button { + @include themify($themes) { + color: themed("textWarningColor") !important; + } + } + + .icon i::before { + content: map_get($icons, "exclamation-triangle"); + } + } + + &.toast-info { + @include themify($themes) { + background-color: themed("info"); + } + + &, + &:before, + & .toast-close-button { + @include themify($themes) { + color: themed("textInfoColor") !important; + } + } + + .icon i:before { + content: map_get($icons, "info-circle"); + } + } + + &.toast-success { + @include themify($themes) { + background-color: themed("success"); + } + + &, + &:before, + & .toast-close-button { + @include themify($themes) { + color: themed("textSuccessColor") !important; + } + } + + .icon i:before { + content: map_get($icons, "check"); + } + } + } +} diff --git a/apps/web/src/scss/variables.scss b/apps/web/src/scss/variables.scss new file mode 100644 index 0000000000..a0bc2d8852 --- /dev/null +++ b/apps/web/src/scss/variables.scss @@ -0,0 +1,357 @@ +$dark-icon-themes: "theme_dark"; + +$primary: #175ddc; +$primary-accent: #1252a3; +$secondary: #ced4da; +$secondary-alt: #1a3b66; +$success: #00a65a; +$info: #555555; +$warning: #bf7e16; +$danger: #dd4b39; +$white: #ffffff; + +// Bootstrap Variable Overrides + +$theme-colors: ( + "primary-accent": $primary-accent, + "secondary-alt": $secondary-alt, +); + +$body-bg: $white; +$body-color: #333333; + +$font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + +$h1-font-size: 1.7rem; +$h2-font-size: 1.3rem; +$h3-font-size: 1rem; +$h4-font-size: 1rem; +$h5-font-size: 1rem; +$h6-font-size: 1rem; + +$small-font-size: 90%; +$font-size-lg: 1.15rem; +$code-font-size: 100%; + +$navbar-padding-y: 0.75rem; +$grid-gutter-width: 20px; +$card-spacer-y: 0.6rem; + +$list-group-item-padding-y: 0.6rem; +$list-group-active-color: $body-color; +$list-group-active-bg: $white; +$list-group-active-border-color: rgba(#000000, 0.125); + +$dropdown-link-color: $body-color; +$dropdown-link-hover-bg: rgba(#000000, 0.06); +$dropdown-link-active-color: $dropdown-link-color; +$dropdown-link-active-bg: rgba(#000000, 0.1); +$dropdown-item-padding-x: 1rem; + +$navbar-brand-font-size: 35px; +$navbar-brand-height: 35px; +$navbar-brand-padding-y: 0; +$navbar-dark-color: rgba($white, 0.7); +$navbar-dark-hover-color: rgba($white, 0.9); +$navbar-nav-link-padding-x: 0.8rem; + +$input-bg: #fbfbfb; +$input-focus-bg: $white; +$input-disabled-bg: #e0e0e0; +$input-placeholder-color: #b4b4b4; + +$table-accent-bg: rgba(#000000, 0.02); +$table-hover-bg: rgba(#000000, 0.03); + +$modal-backdrop-opacity: 0.3; +$btn-font-weight: 600; +$lead-font-weight: normal; + +$grid-breakpoints: ( + xs: 0, + sm: 1px, + md: 2px, + lg: 3px, + xl: 4px, +); + +$border-color: $secondary; + +// MFA Types for logo styling with no dark theme alternative + +$mfaTypes: 0, 2, 3, 4, 6; + +// Theme Variables +// Light + +$lightDangerHover: #c43421; +$lightInputColor: #465057; +$lightInputPlaceholderColor: #b6b8b8; + +// Dark + +$darkPrimary: #6a99f0; +$darkPrimary-alt: #b4ccf9; +$darkDanger: #ff8d85; +$darkDangerHover: #ffbfbb; +$darkSuccess: #52e07c; +$darkWarning: #ffeb66; +$darkInfo: #a4b0c6; +$darkLinks: #6a99f0; +$darkGrey1: #bac0ce; +$darkGrey2: #8d94a5; +$darkBlue1: #4c525f; +$darkBlue2: #3c424e; +$darkDarkBlue1: #2f343d; +$darkDarkBlue2: #1f242e; +$darkInputColor: $white; +$darkInputPlaceholderColor: $darkGrey1; + +$themes: ( + light: ( + primary: $primary, + primaryAlt: $primary-accent, + danger: $danger, + info: #343a40, + success: $success, + warning: $warning, + backgroundColor: $white, + badgeDangerBackground: $danger, + badgeDangerText: $white, + badgeInfoBackground: #555555, + badgeInfoText: $white, + badgePrimaryBackground: $primary, + badgePrimaryBackgroundHover: #134eb9, + badgePrimaryText: $white, + badgeSecondaryBackground: #ced4da, + badgeSecondaryText: #212529, + bgLightColor: #f8f9fa, + bgPrimaryColor: $primary, + borderColor: $border-color, + borderPrimaryColor: $primary, + browserInputIconsFilter: invert(0), + btnDanger: $danger, + btnDangerHover: $lightDangerHover, + btnDangerText: $white, + btnLinkText: $primary, + btnLinkTextHover: #104097, + btnOutlineDangerBackground: $input-bg, + btnOutlineDangerBackgroundHover: $danger, + btnOutlineDangerBorder: #ced4da, + btnOutlineDangerBorderHover: $danger, + btnOutlineDangerText: $danger, + btnOutlineDangerTextHover: $white, + btnOutlinePrimaryBackground: $input-bg, + btnOutlinePrimaryBackgroundHover: $primary, + btnOutlinePrimaryBorder: #ced4da, + btnOutlinePrimaryBorderHover: $primary, + btnOutlinePrimaryText: $primary, + btnOutlinePrimaryTextHover: $white, + btnOutlineSecondaryBackground: $input-bg, + btnOutlineSecondaryBackgroundHover: #ced4da, + btnOutlineSecondaryBorder: #ced4da, + btnOutlineSecondaryBorderHover: #ced4da, + btnOutlineSecondaryText: #6c757d, + btnOutlineSecondaryTextHover: #333333, + btnPrimary: $primary, + btnPrimaryBorderHover: #1249ae, + btnPrimaryHover: #134eb9, + btnPrimaryText: $white, + btnSecondary: $secondary, + btnSecondaryBorder: $secondary, + btnSecondaryBorderHover: #b1bbc4, + btnSecondaryHover: #b8c1ca, + btnSecondaryText: #212529, + btnSecondaryTextHover: #212529, + calloutBackground: #fafafa, + calloutColor: #212529, + cdkDraggingBackground: $white, + codeColor: #e83e8c, + dropdownBackground: $white, + dropdownHover: rgba(0, 0, 0, 0.06), + dropdownTextColor: $body-color, + dropdownTextMuted: #6c757d, + focus: rgb(23 93 220 / 25%), + footerBackgroundColor: #fbfbfb, + foregroundColor: $white, + headerColor: rgba(0, 0, 0, 0.03), + iconColor: #777777, + iconHover: $body-color, + imgFilter: invert(0) grayscale(0), + inputBackgroundColor: $input-bg, + inputBorderColor: $border-color, + inputDisabledBackground: #e0e0e0, + inputDisabledColor: #6c757d, + inputPlaceholderColor: $lightInputPlaceholderColor, + inputTextColor: $lightInputColor, + layoutFrontendColor: #ecf0f5, + learnMoreHover: #104097, + linkColor: $primary, + linkColorHover: #104097, + linkWeight: 400, + listItemActive: $body-color, + listItemBorder: rgba(0, 0, 0, 0.125), + loadingSvg: url("../images/loading.svg"), + logoSuffix: "dark", + mfaLogoSuffix: ".png", + navActiveBackground: $white, + navActiveWeight: 600, + navBackground: $primary, + navBackgroundAlt: $secondary-alt, + navOrgBackgroundColor: #fbfbfb, + navWeight: 600, + pwLetter: $body-color, + pwNumber: #007fde, + pwSpecial: #c40800, + pwStrengthBackground: #e9ecef, + separator: $secondary, + separatorHr: rgb(0, 0, 0, 0.1), + tableColorHover: #333333, + tableLinkColor: $primary, + tableLinkColorHover: #104097, + tableRowHover: rgba(0, 0, 0, 0.03), + tableSeparator: #dee2e6, + textColor: $body-color, + textDangerColor: $white, + textInfoColor: $white, + textHeadingColor: #333333, + textMuted: #6c757d, + textSuccessColor: $white, + textWarningColor: $white, + ), + dark: ( + primary: $darkPrimary, + primaryAlt: $darkPrimary-alt, + danger: $darkDanger, + info: $darkInfo, + success: $darkSuccess, + warning: $darkWarning, + backgroundColor: $darkDarkBlue2, + badgeDangerBackground: $darkDanger, + badgeDangerText: $darkDarkBlue2, + badgeInfoBackground: $darkInfo, + badgeInfoText: $darkDarkBlue2, + badgePrimaryBackground: $darkLinks, + badgePrimaryBackgroundHover: $darkPrimary-alt, + badgePrimaryText: $darkDarkBlue2, + badgeSecondaryBackground: $darkGrey2, + badgeSecondaryText: $darkDarkBlue2, + bgLightColor: $darkDarkBlue2, + bgPrimaryColor: $darkPrimary, + borderColor: $darkBlue1, + borderPrimaryColor: $darkPrimary, + browserInputIconsFilter: invert(1), + btnDanger: $darkDanger, + btnDangerHover: $darkDangerHover, + btnDangerText: $darkDarkBlue2, + btnLinkText: $white, + btnLinkTextHover: $darkGrey1, + btnOutlineDangerBackground: $darkDanger, + btnOutlineDangerBackgroundHover: $darkDangerHover, + btnOutlineDangerBorder: $darkDanger, + btnOutlineDangerBorderHover: $darkDangerHover, + btnOutlineDangerText: $darkDarkBlue2, + btnOutlineDangerTextHover: $darkDarkBlue2, + btnOutlinePrimaryBackground: $darkPrimary, + btnOutlinePrimaryBackgroundHover: $darkPrimary-alt, + btnOutlinePrimaryBorder: $darkPrimary, + btnOutlinePrimaryBorderHover: $darkPrimary-alt, + btnOutlinePrimaryText: $darkDarkBlue2, + btnOutlinePrimaryTextHover: $darkDarkBlue2, + btnOutlineSecondaryBackground: transparent, + btnOutlineSecondaryBackgroundHover: transparent, + btnOutlineSecondaryBorder: $darkGrey1, + btnOutlineSecondaryBorderHover: $darkGrey2, + btnOutlineSecondaryText: $white, + btnOutlineSecondaryTextHover: $darkGrey2, + btnPrimary: $darkLinks, + btnPrimaryBorderHover: $darkPrimary-alt, + btnPrimaryHover: $darkPrimary-alt, + btnPrimaryText: $darkDarkBlue2, + btnSecondary: transparent, + btnSecondaryBorder: $darkGrey1, + btnSecondaryBorderHover: $darkGrey2, + btnSecondaryHover: transparent, + btnSecondaryText: $white, + btnSecondaryTextHover: $darkGrey2, + calloutBackground: $darkBlue2, + calloutColor: $white, + cdkDraggingBackground: $darkDarkBlue1, + codeColor: #e83e8c, + dropdownBackground: $darkDarkBlue1, + dropdownHover: rgba(255, 255, 255, 0.03), + dropdownTextColor: $white, + dropdownTextMuted: #bec6cf, + focus: rgb(106 153 240 / 25%), + footerBackgroundColor: $darkBlue1, + foregroundColor: $darkDarkBlue1, + headerColor: $darkBlue1, + iconColor: #777777, + iconHover: $darkGrey2, + imgFilter: invert(1) grayscale(1), + inputBackgroundColor: transparent, + inputBorderColor: $darkGrey1, + inputDisabledBackground: $darkBlue2, + inputDisabledColor: $darkGrey1, + inputPlaceholderColor: $darkInputPlaceholderColor, + inputTextColor: $darkInputColor, + layoutFrontendColor: $darkDarkBlue2, + learnMoreHover: $darkPrimary-alt, + linkColor: $darkLinks, + linkColorHover: $darkLinks, + linkWeight: 600, + listItemActive: $darkPrimary, + listItemBorder: $darkBlue1, + loadingSvg: url("../images/loading-white.svg"), + logoSuffix: "white", + mfaLogoSuffix: "-w.png", + navActiveBackground: $darkDarkBlue2, + navActiveWeight: 600, + navBackground: $darkDarkBlue1, + navBackgroundAlt: $darkDarkBlue1, + navOrgBackgroundColor: #161c26, + navWeight: 400, + pwLetter: $white, + pwNumber: #52bdfb, + pwSpecial: #ff7c70, + pwStrengthBackground: $darkBlue2, + separator: $darkBlue1, + separatorHr: $darkBlue1, + tableColorHover: $darkGrey1, + tableLinkColor: $white, + tableLinkColorHover: $white, + tableRowHover: rgba(255, 255, 255, 0.03), + tableSeparator: $darkBlue1, + textColor: $darkGrey1, + textDangerColor: $darkDarkBlue2, + textHeadingColor: $white, + textInfoColor: $darkDarkBlue2, + textMuted: $darkGrey1, + textSuccessColor: $darkDarkBlue2, + textWarningColor: $darkDarkBlue2, + ), +); + +@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/web/src/scss/vault-filters.scss b/apps/web/src/scss/vault-filters.scss new file mode 100644 index 0000000000..301497ea5b --- /dev/null +++ b/apps/web/src/scss/vault-filters.scss @@ -0,0 +1,196 @@ +.filter { + padding-bottom: 10px; +} + +.filter-heading { + display: flex; + text-transform: uppercase; + align-items: center; + + * { + @include themify($themes) { + color: themed("headingColor"); + } + font-size: $font-size-base; + } + + button { + @extend .no-btn; + } + + h3, + button.filter-button { + margin: 0; + @include themify($themes) { + color: themed("textMuted"); + } + } + + button.filter-button { + &:hover, + &:focus, + &.active { + @include themify($themes) { + color: themed("linkColor") !important; + } + } + &.active { + font-weight: bold; + } + } + + button.toggle-button { + &:hover, + &:focus { + @include themify($themes) { + color: themed("iconHover") !important; + } + } + } +} + +.filter-options { + padding: 0; + list-style: none; + margin: 0 0 15px 0; + .nested-filter-options { + list-style: none; + margin-bottom: 0px; + padding-left: 0.85em; + } +} + +.filter-option { + @include themify($themes) { + color: themed("textColor"); + } + + &.active { + > .filter-buttons { + .filter-button { + @include themify($themes) { + color: themed("linkColor") !important; + } + font-weight: bold; + } + + .edit-button { + visibility: visible; + } + } + } +} + +.filter-buttons { + display: flex; + align-items: center; + + button, + a { + @extend .no-btn; + } + + .toggle-button { + &:hover, + &:focus { + @include themify($themes) { + color: themed("iconHover") !important; + } + } + } + + .filter-button { + &:hover, + &:focus, + &:active { + @include themify($themes) { + color: themed("linkColor") !important; + } + text-decoration: none; + } + max-width: 90%; + } + + .edit-button { + visibility: hidden; + margin-left: auto; + + @include themify($themes) { + color: themed("headingButtonColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + color: themed("iconHover") !important; + } + } + } +} + +.groupings { + .card { + #search { + margin-bottom: 1rem; + @include themify($themes) { + background-color: themed("inputBackgroundColor"); + border-color: themed("inputBorderColor"); + color: themed("inputTextColor"); + } + + &::placeholder { + @include themify($themes) { + color: themed("inputPlaceholderColor"); + } + } + } + + h3 { + font-weight: normal; + text-transform: uppercase; + @include themify($themes) { + color: themed("textMuted"); + } + } + + ul:last-child { + margin-bottom: 0; + } + + .card-body a { + @include themify($themes) { + color: themed("textHeadingColor"); + font-weight: themed("linkWeight"); + } + + &:hover { + &.text-muted { + } + } + } + .show-active { + display: none; + } + li.active { + > .show-active, + > div .show-active { + display: inline; + } + } + li.active { + > button:first-of-type, + > div button:first-of-type { + @include themify($themes) { + color: themed("linkColor"); + } + } + + > .bwi, + > div > .bwi { + @include themify($themes) { + color: themed("linkColor"); + } + } + } + } +} diff --git a/apps/web/src/services/broadcasterMessaging.service.ts b/apps/web/src/services/broadcasterMessaging.service.ts new file mode 100644 index 0000000000..8ba3e7f1ba --- /dev/null +++ b/apps/web/src/services/broadcasterMessaging.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from "@angular/core"; + +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; + +@Injectable() +export class BroadcasterMessagingService implements MessagingService { + constructor(private broadcasterService: BroadcasterService) {} + + send(subscriber: string, arg: any = {}) { + const message = Object.assign({}, { command: subscriber }, arg); + this.broadcasterService.send(message); + } +} diff --git a/apps/web/src/services/htmlStorage.service.ts b/apps/web/src/services/htmlStorage.service.ts new file mode 100644 index 0000000000..b706d5277d --- /dev/null +++ b/apps/web/src/services/htmlStorage.service.ts @@ -0,0 +1,70 @@ +import { Injectable } from "@angular/core"; + +import { StorageService } from "jslib-common/abstractions/storage.service"; +import { HtmlStorageLocation } from "jslib-common/enums/htmlStorageLocation"; +import { StorageOptions } from "jslib-common/models/domain/storageOptions"; + +@Injectable() +export class HtmlStorageService implements StorageService { + get defaultOptions(): StorageOptions { + return { htmlStorageLocation: HtmlStorageLocation.Session }; + } + + get(key: string, options: StorageOptions = this.defaultOptions): Promise { + let json: string = null; + switch (options.htmlStorageLocation) { + case HtmlStorageLocation.Local: + json = window.localStorage.getItem(key); + break; + case HtmlStorageLocation.Session: + default: + json = window.sessionStorage.getItem(key); + break; + } + + if (json != null) { + const obj = JSON.parse(json); + return Promise.resolve(obj as T); + } + return Promise.resolve(null); + } + + async has(key: string, options: StorageOptions = this.defaultOptions): Promise { + return (await this.get(key, options)) != null; + } + + save(key: string, obj: any, options: StorageOptions = this.defaultOptions): Promise { + if (obj == null) { + return this.remove(key, options); + } + + if (obj instanceof Set) { + obj = Array.from(obj); + } + + const json = JSON.stringify(obj); + switch (options.htmlStorageLocation) { + case HtmlStorageLocation.Local: + window.localStorage.setItem(key, json); + break; + case HtmlStorageLocation.Session: + default: + window.sessionStorage.setItem(key, json); + break; + } + return Promise.resolve(); + } + + remove(key: string, options: StorageOptions = this.defaultOptions): Promise { + switch (options.htmlStorageLocation) { + case HtmlStorageLocation.Local: + window.localStorage.removeItem(key); + break; + case HtmlStorageLocation.Session: + default: + window.sessionStorage.removeItem(key); + break; + } + return Promise.resolve(); + } +} diff --git a/apps/web/src/services/i18n.service.ts b/apps/web/src/services/i18n.service.ts new file mode 100644 index 0000000000..0b0b526a7d --- /dev/null +++ b/apps/web/src/services/i18n.service.ts @@ -0,0 +1,72 @@ +import { I18nService as BaseI18nService } from "jslib-common/services/i18n.service"; + +export class I18nService extends BaseI18nService { + constructor(systemLanguage: string, localesDirectory: string) { + super(systemLanguage || "en-US", localesDirectory, async (formattedLocale: string) => { + const filePath = + this.localesDirectory + + "/" + + formattedLocale + + "/messages.json?cache=" + + process.env.CACHE_TAG; + const localesResult = await fetch(filePath); + const locales = await localesResult.json(); + return 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", + "fi", + "fil", + "fr", + "he", + "hi", + "hr", + "hu", + "id", + "it", + "ja", + "ka", + "km", + "kn", + "ko", + "lv", + "ml", + "nb", + "nl", + "nn", + "pl", + "pt-PT", + "pt-BR", + "ro", + "ru", + "si", + "sk", + "sl", + "sr", + "sv", + "tr", + "uk", + "vi", + "zh-CN", + "zh-TW", + ]; + } +} diff --git a/apps/web/src/services/memoryStorage.service.ts b/apps/web/src/services/memoryStorage.service.ts new file mode 100644 index 0000000000..5560f883de --- /dev/null +++ b/apps/web/src/services/memoryStorage.service.ts @@ -0,0 +1,30 @@ +import { StorageService } from "jslib-common/abstractions/storage.service"; + +export class MemoryStorageService implements StorageService { + private store = new Map(); + + get(key: string): Promise { + if (this.store.has(key)) { + const obj = this.store.get(key); + return Promise.resolve(obj as T); + } + return Promise.resolve(null); + } + + async has(key: string): Promise { + return this.get(key) != null; + } + + save(key: string, obj: any): Promise { + if (obj == null) { + return this.remove(key); + } + this.store.set(key, obj); + return Promise.resolve(); + } + + remove(key: string): Promise { + this.store.delete(key); + return Promise.resolve(); + } +} diff --git a/apps/web/src/services/passwordReprompt.service.ts b/apps/web/src/services/passwordReprompt.service.ts new file mode 100644 index 0000000000..ad13a4d003 --- /dev/null +++ b/apps/web/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/web/src/services/state.service.ts b/apps/web/src/services/state.service.ts new file mode 100644 index 0000000000..9328a4fd8b --- /dev/null +++ b/apps/web/src/services/state.service.ts @@ -0,0 +1,102 @@ +import { CipherData } from "jslib-common/models/data/cipherData"; +import { CollectionData } from "jslib-common/models/data/collectionData"; +import { FolderData } from "jslib-common/models/data/folderData"; +import { SendData } from "jslib-common/models/data/sendData"; +import { StorageOptions } from "jslib-common/models/domain/storageOptions"; +import { StateService as BaseStateService } from "jslib-common/services/state.service"; + +import { StateService as StateServiceAbstraction } from "../abstractions/state.service"; +import { Account } from "../models/account"; +import { GlobalState } from "../models/globalState"; + +export class StateService + extends BaseStateService + implements StateServiceAbstraction +{ + async addAccount(account: Account) { + // Apply web overides to default account values + account = new Account(account); + await super.addAccount(account); + } + + async getRememberEmail(options?: StorageOptions) { + return ( + await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())) + )?.rememberEmail; + } + + async setRememberEmail(value: boolean, options?: StorageOptions): Promise { + const globals = await this.getGlobals( + this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()) + ); + globals.rememberEmail = value; + await this.saveGlobals( + globals, + this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()) + ); + } + + async getEncryptedCiphers(options?: StorageOptions): Promise<{ [id: string]: CipherData }> { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.getEncryptedCiphers(options); + } + + async setEncryptedCiphers( + value: { [id: string]: CipherData }, + options?: StorageOptions + ): Promise { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.setEncryptedCiphers(value, options); + } + + async getEncryptedCollections( + options?: StorageOptions + ): Promise<{ [id: string]: CollectionData }> { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.getEncryptedCollections(options); + } + + async setEncryptedCollections( + value: { [id: string]: CollectionData }, + options?: StorageOptions + ): Promise { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.setEncryptedCollections(value, options); + } + + async getEncryptedFolders(options?: StorageOptions): Promise<{ [id: string]: FolderData }> { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.getEncryptedFolders(options); + } + + async setEncryptedFolders( + value: { [id: string]: FolderData }, + options?: StorageOptions + ): Promise { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.setEncryptedFolders(value, options); + } + + async getEncryptedSends(options?: StorageOptions): Promise<{ [id: string]: SendData }> { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.getEncryptedSends(options); + } + + async setEncryptedSends( + value: { [id: string]: SendData }, + options?: StorageOptions + ): Promise { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.setEncryptedSends(value, options); + } + + override async getLastSync(options?: StorageOptions): Promise { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.getLastSync(options); + } + + override async setLastSync(value: string, options?: StorageOptions): Promise { + options = this.reconcileOptions(options, this.defaultInMemoryOptions); + return await super.setLastSync(value, options); + } +} diff --git a/apps/web/src/services/stateMigration.service.ts b/apps/web/src/services/stateMigration.service.ts new file mode 100644 index 0000000000..86b2169307 --- /dev/null +++ b/apps/web/src/services/stateMigration.service.ts @@ -0,0 +1,13 @@ +import { StateMigrationService as BaseStateMigrationService } from "jslib-common/services/stateMigration.service"; + +import { Account } from "../models/account"; +import { GlobalState } from "../models/globalState"; + +export class StateMigrationService extends BaseStateMigrationService { + protected async migrationStateFrom1To2(): Promise { + await super.migrateStateFrom1To2(); + const globals = (await this.get("global")) ?? this.stateFactory.createGlobal(null); + globals.rememberEmail = (await this.get("rememberEmail")) ?? globals.rememberEmail; + await this.set("global", globals); + } +} diff --git a/apps/web/src/services/webPlatformUtils.service.ts b/apps/web/src/services/webPlatformUtils.service.ts new file mode 100644 index 0000000000..755600a15a --- /dev/null +++ b/apps/web/src/services/webPlatformUtils.service.ts @@ -0,0 +1,334 @@ +import { Injectable } from "@angular/core"; +import Swal, { SweetAlertIcon } from "sweetalert2"; + +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 { ClientType } from "jslib-common/enums/clientType"; +import { DeviceType } from "jslib-common/enums/deviceType"; +import { ThemeType } from "jslib-common/enums/themeType"; + +@Injectable() +export class WebPlatformUtilsService implements PlatformUtilsService { + private browserCache: DeviceType = null; + private prefersColorSchemeDark = window.matchMedia("(prefers-color-scheme: dark)"); + + constructor( + private i18nService: I18nService, + private messagingService: MessagingService, + private logService: LogService, + private stateService: StateService + ) {} + + getDevice(): DeviceType { + if (this.browserCache != null) { + return this.browserCache; + } + + if ( + navigator.userAgent.indexOf(" Firefox/") !== -1 || + navigator.userAgent.indexOf(" Gecko/") !== -1 + ) { + this.browserCache = DeviceType.FirefoxBrowser; + } else if (navigator.userAgent.indexOf(" OPR/") >= 0) { + this.browserCache = DeviceType.OperaBrowser; + } else if (navigator.userAgent.indexOf(" Edg/") !== -1) { + this.browserCache = DeviceType.EdgeBrowser; + } else if (navigator.userAgent.indexOf(" Vivaldi/") !== -1) { + this.browserCache = DeviceType.VivaldiBrowser; + } else if ( + navigator.userAgent.indexOf(" Safari/") !== -1 && + navigator.userAgent.indexOf("Chrome") === -1 + ) { + this.browserCache = DeviceType.SafariBrowser; + } else if ((window as any).chrome && navigator.userAgent.indexOf(" Chrome/") !== -1) { + this.browserCache = DeviceType.ChromeBrowser; + } else if (navigator.userAgent.indexOf(" Trident/") !== -1) { + this.browserCache = DeviceType.IEBrowser; + } else { + this.browserCache = DeviceType.UnknownBrowser; + } + + return this.browserCache; + } + + getDeviceString(): string { + const device = DeviceType[this.getDevice()].toLowerCase(); + return device.replace("browser", ""); + } + + getClientType() { + return ClientType.Web; + } + + isFirefox(): boolean { + return this.getDevice() === DeviceType.FirefoxBrowser; + } + + isChrome(): boolean { + return this.getDevice() === DeviceType.ChromeBrowser; + } + + isEdge(): boolean { + return this.getDevice() === DeviceType.EdgeBrowser; + } + + isOpera(): boolean { + return this.getDevice() === DeviceType.OperaBrowser; + } + + isVivaldi(): boolean { + return this.getDevice() === DeviceType.VivaldiBrowser; + } + + isSafari(): boolean { + return this.getDevice() === DeviceType.SafariBrowser; + } + + isMacAppStore(): boolean { + return false; + } + + isViewOpen(): Promise { + return Promise.resolve(false); + } + + launchUri(uri: string, options?: any): void { + const a = document.createElement("a"); + a.href = uri; + if (options == null || !options.sameWindow) { + a.target = "_blank"; + a.rel = "noreferrer noopener"; + } + a.classList.add("d-none"); + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + } + + saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void { + let blob: Blob = null; + let type: string = null; + const fileNameLower = fileName.toLowerCase(); + let doDownload = true; + if (fileNameLower.endsWith(".pdf")) { + type = "application/pdf"; + doDownload = false; + } else if (fileNameLower.endsWith(".xlsx")) { + type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + } else if (fileNameLower.endsWith(".docx")) { + type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + } else if (fileNameLower.endsWith(".pptx")) { + type = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + } else if (fileNameLower.endsWith(".csv")) { + type = "text/csv"; + } else if (fileNameLower.endsWith(".png")) { + type = "image/png"; + } else if (fileNameLower.endsWith(".jpg") || fileNameLower.endsWith(".jpeg")) { + type = "image/jpeg"; + } else if (fileNameLower.endsWith(".gif")) { + type = "image/gif"; + } + if (type != null) { + blobOptions = blobOptions || {}; + if (blobOptions.type == null) { + blobOptions.type = type; + } + } + if (blobOptions != null) { + blob = new Blob([blobData], blobOptions); + } else { + blob = new Blob([blobData]); + } + + const a = win.document.createElement("a"); + if (doDownload) { + a.download = fileName; + } else if (!this.isSafari()) { + a.target = "_blank"; + } + a.href = URL.createObjectURL(blob); + a.style.position = "fixed"; + win.document.body.appendChild(a); + a.click(); + win.document.body.removeChild(a); + } + + getApplicationVersion(): Promise { + return Promise.resolve(process.env.APPLICATION_VERSION || "-"); + } + + supportsWebAuthn(win: Window): boolean { + return typeof PublicKeyCredential !== "undefined"; + } + + supportsDuo(): boolean { + return true; + } + + showToast( + type: "error" | "success" | "warning" | "info", + title: string, + text: string | string[], + options?: any + ): void { + this.messagingService.send("showToast", { + text: text, + title: title, + type: type, + options: options, + }); + } + + async showDialog( + body: string, + title?: string, + confirmText?: string, + cancelText?: string, + type?: string, + bodyIsHtml = false + ) { + let iconClasses: string = null; + if (type != null) { + // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed. + switch (type) { + case "success": + iconClasses = "bwi-check text-success"; + break; + case "warning": + iconClasses = "bwi-exclamation-triangle text-warning"; + break; + case "error": + iconClasses = "bwi-error text-danger"; + break; + case "info": + iconClasses = "bwi-info-circle text-info"; + break; + default: + break; + } + } + + const bootstrapModal = document.querySelector("div.modal"); + if (bootstrapModal != null) { + bootstrapModal.removeAttribute("tabindex"); + } + + const iconHtmlStr = + iconClasses != null ? `` : undefined; + const confirmed = await Swal.fire({ + heightAuto: false, + buttonsStyling: false, + icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml. + iconHtml: iconHtmlStr, + text: bodyIsHtml ? null : body, + html: bodyIsHtml ? body : null, + titleText: title, + showCancelButton: cancelText != null, + cancelButtonText: cancelText, + showConfirmButton: true, + confirmButtonText: confirmText == null ? this.i18nService.t("ok") : confirmText, + }); + + if (bootstrapModal != null) { + bootstrapModal.setAttribute("tabindex", "-1"); + } + + return confirmed.value; + } + + isDev(): boolean { + return process.env.NODE_ENV === "development"; + } + + isSelfHost(): boolean { + return process.env.ENV.toString() === "selfhosted"; + } + + copyToClipboard(text: string, options?: any): void | boolean { + let win = window; + let doc = window.document; + if (options && (options.window || options.win)) { + win = options.window || options.win; + doc = win.document; + } else if (options && options.doc) { + doc = options.doc; + } + if ((win as any).clipboardData && (win as any).clipboardData.setData) { + // IE specific code path to prevent textarea being shown while dialog is visible. + (win as any).clipboardData.setData("Text", text); + } else if (doc.queryCommandSupported && doc.queryCommandSupported("copy")) { + const textarea = doc.createElement("textarea"); + textarea.textContent = text; + // Prevent scrolling to bottom of page in MS Edge. + textarea.style.position = "fixed"; + let copyEl = doc.body; + // For some reason copy command won't work when modal is open if appending to body + if (doc.body.classList.contains("modal-open")) { + copyEl = doc.body.querySelector(".modal"); + } + copyEl.appendChild(textarea); + textarea.select(); + let success = false; + try { + // Security exception may be thrown by some browsers. + success = doc.execCommand("copy"); + if (!success) { + this.logService.debug("Copy command unsupported or disabled."); + } + } catch (e) { + // eslint-disable-next-line + console.warn("Copy to clipboard failed.", e); + } finally { + copyEl.removeChild(textarea); + } + return success; + } + } + + readFromClipboard(options?: any): Promise { + throw new Error("Cannot read from clipboard on web."); + } + + supportsBiometric() { + return Promise.resolve(false); + } + + authenticateBiometric() { + return Promise.resolve(false); + } + + supportsSecureStorage() { + return false; + } + + getDefaultSystemTheme(): Promise { + return Promise.resolve(this.prefersColorSchemeDark.matches ? ThemeType.Dark : ThemeType.Light); + } + + async getEffectiveTheme(): Promise { + const theme = await this.stateService.getTheme(); + if (theme === ThemeType.Dark) { + return ThemeType.Dark; + } else if (theme === ThemeType.System) { + return this.getDefaultSystemTheme(); + } else { + return ThemeType.Light; + } + } + + onDefaultSystemThemeChange(callback: (theme: ThemeType.Light | ThemeType.Dark) => unknown) { + try { + this.prefersColorSchemeDark.addEventListener("change", ({ matches }) => { + callback(matches ? ThemeType.Dark : ThemeType.Light); + }); + } catch (e) { + // Safari older than v14 + this.prefersColorSchemeDark.addListener((ev) => { + callback(ev.matches ? ThemeType.Dark : ThemeType.Light); + }); + } + } +} diff --git a/apps/web/src/theme.js b/apps/web/src/theme.js new file mode 100644 index 0000000000..3fa49c6b37 --- /dev/null +++ b/apps/web/src/theme.js @@ -0,0 +1,24 @@ +// Set theme on page load +// This is done outside the Angular app to avoid a flash of unthemed content before it loads +// The defaultTheme is also set in the html itself to make sure that some theming is always applied +(function () { + const defaultTheme = "light"; + const htmlEl = document.documentElement; + let theme = defaultTheme; + + const globalState = window.localStorage.getItem("global"); + if (globalState != null) { + const globalStateJson = JSON.parse(globalState); + if (globalStateJson != null && globalStateJson.theme != null) { + if (globalStateJson.theme.indexOf("system") > -1) { + theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; + } else if (globalStateJson.theme.indexOf("dark") > -1) { + theme = "dark"; + } + } + if (!htmlEl.classList.contains("theme_" + theme)) { + htmlEl.classList.remove("theme_" + defaultTheme); + htmlEl.classList.add("theme_" + theme); + } + } +})(); diff --git a/apps/web/src/version.json b/apps/web/src/version.json new file mode 100644 index 0000000000..69c06fba13 --- /dev/null +++ b/apps/web/src/version.json @@ -0,0 +1 @@ +{ "version": "process.env.APPLICATION_VERSION" } diff --git a/apps/web/tailwind.config.js b/apps/web/tailwind.config.js new file mode 100644 index 0000000000..380a5b8870 --- /dev/null +++ b/apps/web/tailwind.config.js @@ -0,0 +1,4 @@ +/* eslint-disable no-undef, @typescript-eslint/no-var-requires */ +const config = require("../../libs/components/tailwind.config.base"); + +module.exports = config; diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json new file mode 100644 index 0000000000..de14b95f30 --- /dev/null +++ b/apps/web/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../libs/shared/tsconfig", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "tldjs": ["../../libs/common/src/misc/tldjs.noop"], + "jslib-common/*": ["../../libs/common/src/*"], + "jslib-angular/*": ["../../libs/angular/src/*"], + "@bitwarden/components": ["../../libs/components/src"], + "src/*": ["src/*"] + } + }, + "angularCompilerOptions": { + "preserveWhitespaces": true + }, + "files": [ + "src/app/polyfills.ts", + "src/app/main.ts", + "../../bitwarden_license/bit-web/src/app/main.ts" + ], + "include": [ + "src/connectors/*.ts", + "src/models/*.ts", + "src/services/*.ts", + "src/abstractions/*.ts" + ] +} diff --git a/apps/web/webpack.config.js b/apps/web/webpack.config.js new file mode 100644 index 0000000000..c79a1fc29a --- /dev/null +++ b/apps/web/webpack.config.js @@ -0,0 +1,340 @@ +const fs = require("fs"); +const path = require("path"); + +const { AngularWebpackPlugin } = require("@ngtools/webpack"); +const { CleanWebpackPlugin } = require("clean-webpack-plugin"); +const CopyWebpackPlugin = require("copy-webpack-plugin"); +const HtmlWebpackInjector = require("html-webpack-injector"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const TerserPlugin = require("terser-webpack-plugin"); +const webpack = require("webpack"); + +const config = require("./config.js"); +const pjson = require("./package.json"); + +const ENV = process.env.ENV == null ? "development" : process.env.ENV; +const NODE_ENV = process.env.NODE_ENV == null ? "development" : process.env.NODE_ENV; + +const envConfig = config.load(ENV); +config.log(envConfig); + +const moduleRules = [ + { + test: /\.(html)$/, + loader: "html-loader", + }, + { + test: /.(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, + exclude: /loading(|-white).svg/, + generator: { + filename: "fonts/[name][ext]", + }, + type: "asset/resource", + }, + { + test: /\.(jpe?g|png|gif|svg|webp|avif)$/i, + exclude: /.*(bwi-font)\.svg/, + generator: { + filename: "images/[name][ext]", + }, + type: "asset/resource", + }, + { + test: /\.scss$/, + use: [ + { + loader: MiniCssExtractPlugin.loader, + }, + "css-loader", + "sass-loader", + ], + }, + { + test: /\.css$/, + use: [ + { + loader: MiniCssExtractPlugin.loader, + }, + "css-loader", + "postcss-loader", + ], + }, + { + test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/, + loader: "@ngtools/webpack", + }, +]; + +const plugins = [ + new CleanWebpackPlugin(), + // 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: ["theme_head", "app/polyfills", "app/vendor", "app/main"], + }), + new HtmlWebpackInjector(), + new HtmlWebpackPlugin({ + template: "./src/connectors/duo.html", + filename: "duo-connector.html", + chunks: ["connectors/duo"], + }), + new HtmlWebpackPlugin({ + template: "./src/connectors/webauthn.html", + filename: "webauthn-connector.html", + chunks: ["connectors/webauthn"], + }), + new HtmlWebpackPlugin({ + template: "./src/connectors/webauthn-mobile.html", + filename: "webauthn-mobile-connector.html", + chunks: ["connectors/webauthn"], + }), + new HtmlWebpackPlugin({ + template: "./src/connectors/webauthn-fallback.html", + filename: "webauthn-fallback-connector.html", + chunks: ["connectors/webauthn-fallback"], + }), + new HtmlWebpackPlugin({ + template: "./src/connectors/sso.html", + filename: "sso-connector.html", + chunks: ["connectors/sso"], + }), + new HtmlWebpackPlugin({ + template: "./src/connectors/captcha.html", + filename: "captcha-connector.html", + chunks: ["connectors/captcha"], + }), + new HtmlWebpackPlugin({ + template: "./src/connectors/captcha-mobile.html", + filename: "captcha-mobile-connector.html", + chunks: ["connectors/captcha"], + }), + new CopyWebpackPlugin({ + patterns: [ + { from: "./src/.nojekyll" }, + { from: "./src/manifest.json" }, + { from: "./src/favicon.ico" }, + { from: "./src/browserconfig.xml" }, + { from: "./src/app-id.json" }, + { from: "./src/404.html" }, + { from: "./src/404", to: "404" }, + { from: "./src/images", to: "images" }, + { from: "./src/locales", to: "locales" }, + { from: "../../node_modules/qrious/dist/qrious.min.js", to: "scripts" }, + { from: "../../node_modules/braintree-web-drop-in/dist/browser/dropin.js", to: "scripts" }, + { + from: "./src/version.json", + transform(content, path) { + return content.toString().replace("process.env.APPLICATION_VERSION", pjson.version); + }, + }, + ], + }), + new MiniCssExtractPlugin({ + filename: "[name].[contenthash].css", + chunkFilename: "[id].[contenthash].css", + }), + new webpack.EnvironmentPlugin({ + ENV: ENV, + NODE_ENV: NODE_ENV === "production" ? "production" : "development", + APPLICATION_VERSION: pjson.version, + CACHE_TAG: Math.random().toString(36).substring(7), + URLS: envConfig["urls"] ?? {}, + STRIPE_KEY: envConfig["stripeKey"] ?? "", + BRAINTREE_KEY: envConfig["braintreeKey"] ?? "", + PAYPAL_CONFIG: envConfig["paypal"] ?? {}, + }), + new webpack.ProvidePlugin({ + process: "process/browser", + }), + new AngularWebpackPlugin({ + tsConfigPath: "tsconfig.json", + entryModule: "src/app/app.module#AppModule", + sourceMap: true, + }), +]; + +// ref: https://webpack.js.org/configuration/dev-server/#devserver +let certSuffix = fs.existsSync("dev-server.local.pem") ? ".local" : ".shared"; +const devServer = + NODE_ENV !== "development" + ? {} + : { + server: { + type: "https", + options: { + key: fs.readFileSync("dev-server" + certSuffix + ".pem"), + cert: fs.readFileSync("dev-server" + certSuffix + ".pem"), + }, + }, + // host: '192.168.1.9', + proxy: { + "/api": { + target: envConfig.dev?.proxyApi, + pathRewrite: { "^/api": "" }, + secure: false, + changeOrigin: true, + }, + "/identity": { + target: envConfig.dev?.proxyIdentity, + pathRewrite: { "^/identity": "" }, + secure: false, + changeOrigin: true, + }, + "/events": { + target: envConfig.dev?.proxyEvents, + pathRewrite: { "^/events": "" }, + secure: false, + changeOrigin: true, + }, + "/notifications": { + target: envConfig.dev?.proxyNotifications, + pathRewrite: { "^/notifications": "" }, + secure: false, + changeOrigin: true, + }, + }, + headers: (req) => { + if (!req.originalUrl.includes("connector.html")) { + return [ + { + key: "Content-Security-Policy", + value: ` + default-src 'self'; + script-src + 'self' + 'sha256-ryoU+5+IUZTuUyTElqkrQGBJXr1brEv6r2CA62WUw8w=' + https://js.stripe.com + https://js.braintreegateway.com + https://www.paypalobjects.com; + style-src + 'self' + https://assets.braintreegateway.com + https://*.paypal.com + 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' + 'sha256-JVRXyYPueLWdwGwY9m/7u4QlZ1xeQdqUj2t8OVIzZE4='; + 'sha256-0xHKHIT3+e2Gknxsm/cpErSprhL+o254L/y5bljg74U=' + img-src + 'self' + data: + https://icons.bitwarden.net + https://*.paypal.com + https://www.paypalobjects.com + https://q.stripe.com + https://haveibeenpwned.com + https://www.gravatar.com; + child-src + 'self' + https://js.stripe.com + https://assets.braintreegateway.com + https://*.paypal.com + https://*.duosecurity.com; + frame-src + 'self' + https://js.stripe.com + https://assets.braintreegateway.com + https://*.paypal.com + https://*.duosecurity.com; + connect-src + 'self' + wss://notifications.bitwarden.com + https://notifications.bitwarden.com + https://cdn.bitwarden.net + https://api.pwnedpasswords.com + https://2fa.directory/api/v3/totp.json + https://api.stripe.com + https://www.paypal.com + https://api.braintreegateway.com + https://client-analytics.braintreegateway.com + https://*.braintree-api.com + https://*.blob.core.windows.net + https://app.simplelogin.io/api/alias/random/new + https://app.anonaddy.com/api/v1/aliases; + object-src + 'self' + blob:;`, + }, + ]; + } + }, + hot: false, + port: envConfig.dev?.port ?? 8080, + allowedHosts: envConfig.dev?.allowedHosts ?? "auto", + client: { + overlay: { + errors: true, + warnings: false, + }, + }, + }; + +const webpackConfig = { + mode: NODE_ENV, + devtool: "source-map", + devServer: devServer, + entry: { + "app/polyfills": "./src/app/polyfills.ts", + "app/main": "./src/app/main.ts", + "connectors/webauthn": "./src/connectors/webauthn.ts", + "connectors/webauthn-fallback": "./src/connectors/webauthn-fallback.ts", + "connectors/duo": "./src/connectors/duo.ts", + "connectors/sso": "./src/connectors/sso.ts", + "connectors/captcha": "./src/connectors/captcha.ts", + theme_head: "./src/theme.js", + }, + optimization: { + splitChunks: { + cacheGroups: { + commons: { + test: /[\\/]node_modules[\\/]/, + name: "app/vendor", + chunks: (chunk) => { + return chunk.name === "app/main"; + }, + }, + }, + }, + minimizer: [ + new TerserPlugin({ + terserOptions: { + safari10: true, + // Replicate Angular CLI behaviour + compress: { + global_defs: { + ngDevMode: false, + ngI18nClosureMode: false, + }, + }, + }, + }), + ], + }, + resolve: { + extensions: [".ts", ".js"], + symlinks: false, + modules: [path.resolve("../../node_modules")], + alias: { + sweetalert2: require.resolve("sweetalert2/dist/sweetalert2.js"), + "#sweetalert2": require.resolve("sweetalert2/src/sweetalert2.scss"), + }, + fallback: { + buffer: false, + util: require.resolve("util/"), + assert: false, + url: false, + }, + }, + output: { + filename: "[name].[contenthash].js", + path: path.resolve(__dirname, "build"), + }, + module: { rules: moduleRules }, + plugins: plugins, +}; + +module.exports = webpackConfig; diff --git a/bitwarden_license/README.md b/bitwarden_license/README.md new file mode 100644 index 0000000000..b3c416ee06 --- /dev/null +++ b/bitwarden_license/README.md @@ -0,0 +1,3 @@ +# Bitwarden Licensed Code + +All source code under this directory is licensed under the [Bitwarden License Agreement](../LICENSE_BITWARDEN.txt). diff --git a/bitwarden_license/bit-web/src/app/app-routing.module.ts b/bitwarden_license/bit-web/src/app/app-routing.module.ts new file mode 100644 index 0000000000..f9d434ed68 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/app-routing.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +const routes: Routes = [ + { + path: "providers", + loadChildren: async () => (await import("./providers/providers.module")).ProvidersModule, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class AppRoutingModule {} diff --git a/bitwarden_license/bit-web/src/app/app.component.ts b/bitwarden_license/bit-web/src/app/app.component.ts new file mode 100644 index 0000000000..5f7fd544a2 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/app.component.ts @@ -0,0 +1,21 @@ +import { Component } from "@angular/core"; + +import { AppComponent as BaseAppComponent } from "src/app/app.component"; + +import { DisablePersonalVaultExportPolicy } from "./policies/disable-personal-vault-export.component"; +import { MaximumVaultTimeoutPolicy } from "./policies/maximum-vault-timeout.component"; + +@Component({ + selector: "app-root", + templateUrl: "../../../../apps/web/src/app/app.component.html", +}) +export class AppComponent extends BaseAppComponent { + ngOnInit() { + super.ngOnInit(); + + this.policyListService.addPolicies([ + new MaximumVaultTimeoutPolicy(), + new DisablePersonalVaultExportPolicy(), + ]); + } +} diff --git a/bitwarden_license/bit-web/src/app/app.module.ts b/bitwarden_license/bit-web/src/app/app.module.ts new file mode 100644 index 0000000000..b137491b7d --- /dev/null +++ b/bitwarden_license/bit-web/src/app/app.module.ts @@ -0,0 +1,46 @@ +import { DragDropModule } from "@angular/cdk/drag-drop"; +import { OverlayModule } from "@angular/cdk/overlay"; +import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; +import { RouterModule } from "@angular/router"; +import { InfiniteScrollModule } from "ngx-infinite-scroll"; + +import { JslibModule } from "jslib-angular/jslib.module"; + +import { OssRoutingModule } from "src/app/oss-routing.module"; +import { OssModule } from "src/app/oss.module"; +import { ServicesModule } from "src/app/services/services.module"; +import { WildcardRoutingModule } from "src/app/wildcard-routing.module"; + +import { AppRoutingModule } from "./app-routing.module"; +import { AppComponent } from "./app.component"; +import { OrganizationsModule } from "./organizations/organizations.module"; +import { DisablePersonalVaultExportPolicyComponent } from "./policies/disable-personal-vault-export.component"; +import { MaximumVaultTimeoutPolicyComponent } from "./policies/maximum-vault-timeout.component"; + +@NgModule({ + imports: [ + OverlayModule, + OssModule, + JslibModule, + BrowserAnimationsModule, + FormsModule, + ReactiveFormsModule, + ServicesModule, + InfiniteScrollModule, + DragDropModule, + AppRoutingModule, + OssRoutingModule, + OrganizationsModule, // Must be after OssRoutingModule for competing routes to resolve properly + RouterModule, + WildcardRoutingModule, // Needs to be last to catch all non-existing routes + ], + declarations: [ + AppComponent, + DisablePersonalVaultExportPolicyComponent, + MaximumVaultTimeoutPolicyComponent, + ], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/bitwarden_license/bit-web/src/app/main.ts b/bitwarden_license/bit-web/src/app/main.ts new file mode 100644 index 0000000000..5d15ec7460 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/main.ts @@ -0,0 +1,17 @@ +import { enableProdMode } from "@angular/core"; +import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; + +import "bootstrap"; +import "jquery"; +import "popper.js"; + +require("src/scss/styles.scss"); +require("src/scss/tailwind.css"); + +import { AppModule } from "./app.module"; + +if (process.env.NODE_ENV === "production") { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true }); diff --git a/bitwarden_license/bit-web/src/app/organizations/components/base-cva.component.ts b/bitwarden_license/bit-web/src/app/organizations/components/base-cva.component.ts new file mode 100644 index 0000000000..409090ddc4 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/base-cva.component.ts @@ -0,0 +1,68 @@ +import { Directive, Input, OnInit, Self } from "@angular/core"; +import { ControlValueAccessor, FormControl, NgControl, Validators } from "@angular/forms"; + +import { dirtyRequired } from "jslib-angular/validators/dirty.validator"; + +/** For use in the SSO Config Form only - will be deprecated by the Component Library */ +@Directive() +export abstract class BaseCvaComponent implements ControlValueAccessor, OnInit { + get describedById() { + return this.showDescribedBy ? this.controlId + "Desc" : null; + } + + get showDescribedBy() { + return this.helperText != null || this.controlDir.control.hasError("required"); + } + + get isRequired() { + return ( + this.controlDir.control.hasValidator(Validators.required) || + this.controlDir.control.hasValidator(dirtyRequired) + ); + } + + @Input() label: string; + @Input() controlId: string; + @Input() helperText: string; + + internalControl = new FormControl(""); + + protected onChange: any; + protected onTouched: any; + + constructor(@Self() public controlDir: NgControl) { + this.controlDir.valueAccessor = this; + } + + ngOnInit() { + this.internalControl.valueChanges.subscribe(this.onValueChangesInternal); + } + + onBlurInternal() { + this.onTouched(); + } + + // CVA interfaces + writeValue(value: string) { + this.internalControl.setValue(value); + } + + registerOnChange(fn: any) { + this.onChange = fn; + } + + registerOnTouched(fn: any) { + this.onTouched = fn; + } + + setDisabledState(isDisabled: boolean) { + if (isDisabled) { + this.internalControl.disable(); + } else { + this.internalControl.enable(); + } + } + + protected onValueChangesInternal: any = (value: string) => this.onChange(value); + // End CVA interfaces +} diff --git a/bitwarden_license/bit-web/src/app/organizations/components/input-checkbox.component.html b/bitwarden_license/bit-web/src/app/organizations/components/input-checkbox.component.html new file mode 100644 index 0000000000..2c3c8639c1 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/input-checkbox.component.html @@ -0,0 +1,16 @@ +
+
+ + +
+ {{ + helperText + }} +
diff --git a/bitwarden_license/bit-web/src/app/organizations/components/input-checkbox.component.ts b/bitwarden_license/bit-web/src/app/organizations/components/input-checkbox.component.ts new file mode 100644 index 0000000000..b494c6c817 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/input-checkbox.component.ts @@ -0,0 +1,10 @@ +import { Component } from "@angular/core"; + +import { BaseCvaComponent } from "./base-cva.component"; + +/** For use in the SSO Config Form only - will be deprecated by the Component Library */ +@Component({ + selector: "app-input-checkbox", + templateUrl: "input-checkbox.component.html", +}) +export class InputCheckboxComponent extends BaseCvaComponent {} diff --git a/bitwarden_license/bit-web/src/app/organizations/components/input-text-readonly.component.html b/bitwarden_license/bit-web/src/app/organizations/components/input-text-readonly.component.html new file mode 100644 index 0000000000..b25edf6363 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/input-text-readonly.component.html @@ -0,0 +1,26 @@ +
+ +
+ +
+ +
+
+ +
+
+
diff --git a/bitwarden_license/bit-web/src/app/organizations/components/input-text-readonly.component.ts b/bitwarden_license/bit-web/src/app/organizations/components/input-text-readonly.component.ts new file mode 100644 index 0000000000..a7618ac8e2 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/input-text-readonly.component.ts @@ -0,0 +1,25 @@ +import { Component, Input } from "@angular/core"; + +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +/** For use in the SSO Config Form only - will be deprecated by the Component Library */ +@Component({ + selector: "app-input-text-readonly", + templateUrl: "input-text-readonly.component.html", +}) +export class InputTextReadOnlyComponent { + @Input() controlValue: string; + @Input() label: string; + @Input() showCopy = true; + @Input() showLaunch = false; + + constructor(private platformUtilsService: PlatformUtilsService) {} + + copy(value: string) { + this.platformUtilsService.copyToClipboard(value); + } + + launchUri(url: string) { + this.platformUtilsService.launchUri(url); + } +} diff --git a/bitwarden_license/bit-web/src/app/organizations/components/input-text.component.html b/bitwarden_license/bit-web/src/app/organizations/components/input-text.component.html new file mode 100644 index 0000000000..e19963474c --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/input-text.component.html @@ -0,0 +1,33 @@ +
+ + +
+ + {{ helperText }} + + + + {{ "error" | i18n }}: + {{ + controlDir.control.hasError(helperTextSameAsError) + ? helperText + : ("fieldRequiredError" | i18n: label) + }} + +
+
diff --git a/bitwarden_license/bit-web/src/app/organizations/components/input-text.component.ts b/bitwarden_license/bit-web/src/app/organizations/components/input-text.component.ts new file mode 100644 index 0000000000..a8810e3806 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/input-text.component.ts @@ -0,0 +1,48 @@ +import { Component, Input, OnInit } from "@angular/core"; + +import { BaseCvaComponent } from "./base-cva.component"; + +/** For use in the SSO Config Form only - will be deprecated by the Component Library */ +@Component({ + selector: "app-input-text[label][controlId]", + templateUrl: "input-text.component.html", +}) +export class InputTextComponent extends BaseCvaComponent implements OnInit { + @Input() helperTextSameAsError: string; + @Input() requiredErrorMessage: string; + @Input() stripSpaces = false; + + transformValue: (value: string) => string = null; + + ngOnInit() { + super.ngOnInit(); + if (this.stripSpaces) { + this.transformValue = this.doStripSpaces; + } + } + + writeValue(value: string) { + this.internalControl.setValue(value == null ? "" : value); + } + + protected onValueChangesInternal: any = (value: string) => { + let newValue = value; + if (this.transformValue != null) { + newValue = this.transformValue(value); + this.internalControl.setValue(newValue, { emitEvent: false }); + } + this.onChange(newValue); + }; + + protected onValueChangeInternal(value: string) { + let newValue = value; + if (this.transformValue != null) { + newValue = this.transformValue(value); + this.internalControl.setValue(newValue, { emitEvent: false }); + } + } + + private doStripSpaces(value: string) { + return value.replace(/ /g, ""); + } +} diff --git a/bitwarden_license/bit-web/src/app/organizations/components/select.component.html b/bitwarden_license/bit-web/src/app/organizations/components/select.component.html new file mode 100644 index 0000000000..bc2108e8af --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/select.component.html @@ -0,0 +1,19 @@ +
+ + +
diff --git a/bitwarden_license/bit-web/src/app/organizations/components/select.component.ts b/bitwarden_license/bit-web/src/app/organizations/components/select.component.ts new file mode 100644 index 0000000000..0045032865 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/components/select.component.ts @@ -0,0 +1,14 @@ +import { Component, Input } from "@angular/core"; + +import { SelectOptions } from "jslib-angular/interfaces/selectOptions"; + +import { BaseCvaComponent } from "./base-cva.component"; + +/** For use in the SSO Config Form only - will be deprecated by the Component Library */ +@Component({ + selector: "app-select", + templateUrl: "select.component.html", +}) +export class SelectComponent extends BaseCvaComponent { + @Input() selectOptions: SelectOptions[]; +} diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.html b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.html new file mode 100644 index 0000000000..525dc22b8e --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.html @@ -0,0 +1,448 @@ + + + + + {{ "loading" | i18n }} + + +
+

+ {{ "ssoPolicyHelpStart" | i18n }} + {{ "ssoPolicyHelpLink" | i18n }} + {{ "ssoPolicyHelpEnd" | i18n }} +
+ {{ "ssoPolicyHelpKeyConnector" | i18n }} +

+ + + + + +
+ +
+ + +
+
+ + +
+
+ + + + + {{ "keyConnectorWarning" | i18n }} + + +
+ +
+ +
+ +
+
+
+ + + {{ "error" | i18n }}: + {{ "keyConnectorTestFail" | i18n }} + + + + + {{ "keyConnectorTestSuccess" | i18n }} + + +
+
+
+ + + +
+ + +
+
+

{{ "openIdConnectConfig" | i18n }}

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

+ {{ "openIdOptionalCustomizations" | i18n }} +

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

{{ "samlSpConfig" | i18n }}

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

{{ "samlIdpConfig" | i18n }}

+ + + + + + + + + + +
+ + + + + {{ "error" | i18n }}: + {{ "fieldRequiredError" | i18n: ("idpX509PublicCert" | i18n) }} + +
+ + + + + + + + + + +
+
+ + +
+ + {{ "error" | i18n }}: + {{ + (errorCount === 1 ? "formErrorSummarySingle" : "formErrorSummaryPlural") | i18n: errorCount + }} +
+
diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts new file mode 100644 index 0000000000..8dc074a701 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts @@ -0,0 +1,318 @@ +import { Component, OnInit } from "@angular/core"; +import { AbstractControl, FormBuilder, FormGroup } from "@angular/forms"; +import { ActivatedRoute } from "@angular/router"; + +import { SelectOptions } from "jslib-angular/interfaces/selectOptions"; +import { dirtyRequired } from "jslib-angular/validators/dirty.validator"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { + OpenIdConnectRedirectBehavior, + Saml2BindingType, + Saml2NameIdFormat, + Saml2SigningBehavior, + SsoType, +} from "jslib-common/enums/ssoEnums"; +import { Utils } from "jslib-common/misc/utils"; +import { SsoConfigApi } from "jslib-common/models/api/ssoConfigApi"; +import { Organization } from "jslib-common/models/domain/organization"; +import { OrganizationSsoRequest } from "jslib-common/models/request/organization/organizationSsoRequest"; +import { OrganizationSsoResponse } from "jslib-common/models/response/organization/organizationSsoResponse"; +import { SsoConfigView } from "jslib-common/models/view/ssoConfigView"; + +const defaultSigningAlgorithm = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"; + +@Component({ + selector: "app-org-manage-sso", + templateUrl: "sso.component.html", +}) +export class SsoComponent implements OnInit { + readonly ssoType = SsoType; + + readonly ssoTypeOptions: SelectOptions[] = [ + { name: this.i18nService.t("selectType"), value: SsoType.None, disabled: true }, + { name: "OpenID Connect", value: SsoType.OpenIdConnect }, + { name: "SAML 2.0", value: SsoType.Saml2 }, + ]; + + readonly samlSigningAlgorithms = [ + "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", + "http://www.w3.org/2000/09/xmldsig#rsa-sha384", + "http://www.w3.org/2000/09/xmldsig#rsa-sha512", + "http://www.w3.org/2000/09/xmldsig#rsa-sha1", + ]; + + readonly saml2SigningBehaviourOptions: SelectOptions[] = [ + { + name: "If IdP Wants Authn Requests Signed", + value: Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned, + }, + { name: "Always", value: Saml2SigningBehavior.Always }, + { name: "Never", value: Saml2SigningBehavior.Never }, + ]; + readonly saml2BindingTypeOptions: SelectOptions[] = [ + { name: "Redirect", value: Saml2BindingType.HttpRedirect }, + { name: "HTTP POST", value: Saml2BindingType.HttpPost }, + ]; + readonly saml2NameIdFormatOptions: SelectOptions[] = [ + { name: "Not Configured", value: Saml2NameIdFormat.NotConfigured }, + { name: "Unspecified", value: Saml2NameIdFormat.Unspecified }, + { name: "Email Address", value: Saml2NameIdFormat.EmailAddress }, + { name: "X.509 Subject Name", value: Saml2NameIdFormat.X509SubjectName }, + { name: "Windows Domain Qualified Name", value: Saml2NameIdFormat.WindowsDomainQualifiedName }, + { name: "Kerberos Principal Name", value: Saml2NameIdFormat.KerberosPrincipalName }, + { name: "Entity Identifier", value: Saml2NameIdFormat.EntityIdentifier }, + { name: "Persistent", value: Saml2NameIdFormat.Persistent }, + { name: "Transient", value: Saml2NameIdFormat.Transient }, + ]; + + readonly connectRedirectOptions: SelectOptions[] = [ + { name: "Redirect GET", value: OpenIdConnectRedirectBehavior.RedirectGet }, + { name: "Form POST", value: OpenIdConnectRedirectBehavior.FormPost }, + ]; + + showOpenIdCustomizations = false; + + loading = true; + haveTestedKeyConnector = false; + organizationId: string; + organization: Organization; + formPromise: Promise; + + callbackPath: string; + signedOutCallbackPath: string; + spEntityId: string; + spMetadataUrl: string; + spAcsUrl: string; + + enabled = this.formBuilder.control(false); + + openIdForm = this.formBuilder.group( + { + authority: ["", dirtyRequired], + clientId: ["", dirtyRequired], + clientSecret: ["", dirtyRequired], + metadataAddress: [], + redirectBehavior: [OpenIdConnectRedirectBehavior.RedirectGet, dirtyRequired], + getClaimsFromUserInfoEndpoint: [], + additionalScopes: [], + additionalUserIdClaimTypes: [], + additionalEmailClaimTypes: [], + additionalNameClaimTypes: [], + acrValues: [], + expectedReturnAcrValue: [], + }, + { + updateOn: "blur", + } + ); + + samlForm = this.formBuilder.group( + { + spNameIdFormat: [Saml2NameIdFormat.NotConfigured], + spOutboundSigningAlgorithm: [defaultSigningAlgorithm], + spSigningBehavior: [Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned], + spMinIncomingSigningAlgorithm: [defaultSigningAlgorithm], + spWantAssertionsSigned: [], + spValidateCertificates: [], + + idpEntityId: ["", dirtyRequired], + idpBindingType: [Saml2BindingType.HttpRedirect], + idpSingleSignOnServiceUrl: [], + idpSingleLogoutServiceUrl: [], + idpX509PublicCert: ["", dirtyRequired], + idpOutboundSigningAlgorithm: [defaultSigningAlgorithm], + idpAllowUnsolicitedAuthnResponse: [], + idpAllowOutboundLogoutRequests: [true], + idpWantAuthnRequestsSigned: [], + }, + { + updateOn: "blur", + } + ); + + ssoConfigForm = this.formBuilder.group({ + configType: [SsoType.None], + keyConnectorEnabled: [false], + keyConnectorUrl: [""], + openId: this.openIdForm, + saml: this.samlForm, + }); + + constructor( + private formBuilder: FormBuilder, + private route: ActivatedRoute, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private organizationService: OrganizationService + ) {} + + async ngOnInit() { + this.ssoConfigForm.get("configType").valueChanges.subscribe((newType: SsoType) => { + if (newType === SsoType.OpenIdConnect) { + this.openIdForm.enable(); + this.samlForm.disable(); + } else if (newType === SsoType.Saml2) { + this.openIdForm.disable(); + this.samlForm.enable(); + } else { + this.openIdForm.disable(); + this.samlForm.disable(); + } + }); + + this.samlForm + .get("spSigningBehavior") + .valueChanges.subscribe(() => + this.samlForm.get("idpX509PublicCert").updateValueAndValidity() + ); + + this.route.parent.parent.params.subscribe(async (params) => { + this.organizationId = params.organizationId; + await this.load(); + }); + } + + async load() { + this.organization = await this.organizationService.get(this.organizationId); + const ssoSettings = await this.apiService.getOrganizationSso(this.organizationId); + this.populateForm(ssoSettings); + + this.callbackPath = ssoSettings.urls.callbackPath; + this.signedOutCallbackPath = ssoSettings.urls.signedOutCallbackPath; + this.spEntityId = ssoSettings.urls.spEntityId; + this.spMetadataUrl = ssoSettings.urls.spMetadataUrl; + this.spAcsUrl = ssoSettings.urls.spAcsUrl; + + this.loading = false; + } + + async submit() { + this.validateForm(this.ssoConfigForm); + + if (this.ssoConfigForm.get("keyConnectorEnabled").value) { + await this.validateKeyConnectorUrl(); + } + + if (!this.ssoConfigForm.valid) { + this.readOutErrors(); + return; + } + + const request = new OrganizationSsoRequest(); + request.enabled = this.enabled.value; + request.data = SsoConfigApi.fromView(this.ssoConfigForm.value as SsoConfigView); + + this.formPromise = this.apiService.postOrganizationSso(this.organizationId, request); + + try { + const response = await this.formPromise; + this.populateForm(response); + this.platformUtilsService.showToast("success", null, this.i18nService.t("ssoSettingsSaved")); + } catch { + // Logged by appApiAction, do nothing + } + + this.formPromise = null; + } + + async validateKeyConnectorUrl() { + if (this.haveTestedKeyConnector) { + return; + } + + this.keyConnectorUrl.markAsPending(); + + try { + await this.apiService.getKeyConnectorAlive(this.keyConnectorUrl.value); + this.keyConnectorUrl.updateValueAndValidity(); + } catch { + this.keyConnectorUrl.setErrors({ + invalidUrl: true, + }); + } + + this.haveTestedKeyConnector = true; + } + + toggleOpenIdCustomizations() { + this.showOpenIdCustomizations = !this.showOpenIdCustomizations; + } + + getErrorCount(form: FormGroup): number { + return Object.values(form.controls).reduce((acc: number, control: AbstractControl) => { + if (control instanceof FormGroup) { + return acc + this.getErrorCount(control); + } + + if (control.errors == null) { + return acc; + } + return acc + Object.keys(control.errors).length; + }, 0); + } + + get enableTestKeyConnector() { + return ( + this.ssoConfigForm.get("keyConnectorEnabled").value && + !Utils.isNullOrWhitespace(this.keyConnectorUrl?.value) + ); + } + + get keyConnectorUrl() { + return this.ssoConfigForm.get("keyConnectorUrl"); + } + + get samlSigningAlgorithmOptions(): SelectOptions[] { + return this.samlSigningAlgorithms.map((algorithm) => ({ name: algorithm, value: algorithm })); + } + + private validateForm(form: FormGroup) { + Object.values(form.controls).forEach((control: AbstractControl) => { + if (control.disabled) { + return; + } + + if (control instanceof FormGroup) { + this.validateForm(control); + } else { + control.markAsDirty(); + control.markAsTouched(); + control.updateValueAndValidity(); + } + }); + } + + private populateForm(ssoSettings: OrganizationSsoResponse) { + this.enabled.setValue(ssoSettings.enabled); + if (ssoSettings.data != null) { + const ssoConfigView = new SsoConfigView(ssoSettings.data); + this.ssoConfigForm.patchValue(ssoConfigView); + } + } + + private readOutErrors() { + const errorText = this.i18nService.t("error"); + const errorCount = this.getErrorCount(this.ssoConfigForm); + const errorCountText = this.i18nService.t( + errorCount === 1 ? "formErrorSummarySingle" : "formErrorSummaryPlural", + errorCount.toString() + ); + + const div = document.createElement("div"); + div.className = "sr-only"; + div.id = "srErrorCount"; + div.setAttribute("aria-live", "polite"); + div.innerText = errorText + ": " + errorCountText; + + const existing = document.getElementById("srErrorCount"); + if (existing != null) { + existing.remove(); + } + + document.body.append(div); + } +} diff --git a/bitwarden_license/bit-web/src/app/organizations/organizations-routing.module.ts b/bitwarden_license/bit-web/src/app/organizations/organizations-routing.module.ts new file mode 100644 index 0000000000..691feda30c --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/organizations-routing.module.ts @@ -0,0 +1,46 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AuthGuard } from "jslib-angular/guards/auth.guard"; +import { Permissions } from "jslib-common/enums/permissions"; + +import { PermissionsGuard } from "src/app/organizations/guards/permissions.guard"; +import { OrganizationLayoutComponent } from "src/app/organizations/layouts/organization-layout.component"; +import { ManageComponent } from "src/app/organizations/manage/manage.component"; +import { NavigationPermissionsService } from "src/app/organizations/services/navigation-permissions.service"; + +import { SsoComponent } from "./manage/sso.component"; + +const routes: Routes = [ + { + path: "organizations/:organizationId", + component: OrganizationLayoutComponent, + canActivate: [AuthGuard, PermissionsGuard], + children: [ + { + path: "manage", + component: ManageComponent, + canActivate: [PermissionsGuard], + data: { + permissions: NavigationPermissionsService.getPermissions("manage"), + }, + children: [ + { + path: "sso", + component: SsoComponent, + canActivate: [PermissionsGuard], + data: { + permissions: [Permissions.ManageSso], + }, + }, + ], + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class OrganizationsRoutingModule {} diff --git a/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts b/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts new file mode 100644 index 0000000000..f67a9b7ef5 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts @@ -0,0 +1,32 @@ +import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; + +import { JslibModule } from "jslib-angular/jslib.module"; + +import { InputCheckboxComponent } from "./components/input-checkbox.component"; +import { InputTextReadOnlyComponent } from "./components/input-text-readonly.component"; +import { InputTextComponent } from "./components/input-text.component"; +import { SelectComponent } from "./components/select.component"; +import { SsoComponent } from "./manage/sso.component"; +import { OrganizationsRoutingModule } from "./organizations-routing.module"; + +// Form components are for use in the SSO Configuration Form only and should not be exported for use elsewhere. +// They will be deprecated by the Component Library. +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + JslibModule, + OrganizationsRoutingModule, + ], + declarations: [ + InputCheckboxComponent, + InputTextComponent, + InputTextReadOnlyComponent, + SelectComponent, + SsoComponent, + ], +}) +export class OrganizationsModule {} diff --git a/bitwarden_license/bit-web/src/app/policies/disable-personal-vault-export.component.html b/bitwarden_license/bit-web/src/app/policies/disable-personal-vault-export.component.html new file mode 100644 index 0000000000..317a9c8f1d --- /dev/null +++ b/bitwarden_license/bit-web/src/app/policies/disable-personal-vault-export.component.html @@ -0,0 +1,12 @@ +
+
+ + +
+
diff --git a/bitwarden_license/bit-web/src/app/policies/disable-personal-vault-export.component.ts b/bitwarden_license/bit-web/src/app/policies/disable-personal-vault-export.component.ts new file mode 100644 index 0000000000..617499c84b --- /dev/null +++ b/bitwarden_license/bit-web/src/app/policies/disable-personal-vault-export.component.ts @@ -0,0 +1,21 @@ +import { Component } from "@angular/core"; + +import { PolicyType } from "jslib-common/enums/policyType"; + +import { + BasePolicy, + BasePolicyComponent, +} from "src/app/organizations/policies/base-policy.component"; + +export class DisablePersonalVaultExportPolicy extends BasePolicy { + name = "disablePersonalVaultExport"; + description = "disablePersonalVaultExportDesc"; + type = PolicyType.DisablePersonalVaultExport; + component = DisablePersonalVaultExportPolicyComponent; +} + +@Component({ + selector: "policy-disable-personal-vault-export", + templateUrl: "disable-personal-vault-export.component.html", +}) +export class DisablePersonalVaultExportPolicyComponent extends BasePolicyComponent {} diff --git a/bitwarden_license/bit-web/src/app/policies/maximum-vault-timeout.component.html b/bitwarden_license/bit-web/src/app/policies/maximum-vault-timeout.component.html new file mode 100644 index 0000000000..344cf009ec --- /dev/null +++ b/bitwarden_license/bit-web/src/app/policies/maximum-vault-timeout.component.html @@ -0,0 +1,47 @@ + + {{ "requireSsoPolicyReq" | i18n }} + + +
+
+ + +
+
+ +
+
+ +
+
+ + {{ "hours" | i18n }} +
+
+ + {{ "minutes" | i18n }} +
+
+
+
diff --git a/bitwarden_license/bit-web/src/app/policies/maximum-vault-timeout.component.ts b/bitwarden_license/bit-web/src/app/policies/maximum-vault-timeout.component.ts new file mode 100644 index 0000000000..e31097dcd3 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/policies/maximum-vault-timeout.component.ts @@ -0,0 +1,70 @@ +import { Component } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PolicyType } from "jslib-common/enums/policyType"; +import { PolicyRequest } from "jslib-common/models/request/policyRequest"; + +import { + BasePolicy, + BasePolicyComponent, +} from "src/app/organizations/policies/base-policy.component"; + +export class MaximumVaultTimeoutPolicy extends BasePolicy { + name = "maximumVaultTimeout"; + description = "maximumVaultTimeoutDesc"; + type = PolicyType.MaximumVaultTimeout; + component = MaximumVaultTimeoutPolicyComponent; +} + +@Component({ + selector: "policy-maximum-timeout", + templateUrl: "maximum-vault-timeout.component.html", +}) +export class MaximumVaultTimeoutPolicyComponent extends BasePolicyComponent { + data = this.formBuilder.group({ + hours: [null], + minutes: [null], + }); + + constructor(private formBuilder: FormBuilder, private i18nService: I18nService) { + super(); + } + + loadData() { + const minutes = this.policyResponse.data?.minutes; + + if (minutes == null) { + return; + } + + this.data.patchValue({ + hours: Math.floor(minutes / 60), + minutes: minutes % 60, + }); + } + + buildRequestData() { + if (this.data.value.hours == null && this.data.value.minutes == null) { + return null; + } + + return { + minutes: this.data.value.hours * 60 + this.data.value.minutes, + }; + } + + buildRequest(policiesEnabledMap: Map): Promise { + const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false; + if (this.enabled.value && !singleOrgEnabled) { + throw new Error(this.i18nService.t("requireSsoPolicyReqError")); + } + + const data = this.buildRequestData(); + if (data?.minutes == null || data?.minutes <= 0) { + throw new Error(this.i18nService.t("invalidMaximumVaultTimeout")); + } + + return super.buildRequest(policiesEnabledMap); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.html b/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.html new file mode 100644 index 0000000000..1b87269006 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.html @@ -0,0 +1,46 @@ + diff --git a/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.ts b/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.ts new file mode 100644 index 0000000000..ef678a838e --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.ts @@ -0,0 +1,84 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +import { ValidationService } from "jslib-angular/services/validation.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { Organization } from "jslib-common/models/domain/organization"; +import { Provider } from "jslib-common/models/domain/provider"; + +import { WebProviderService } from "../services/webProvider.service"; + +@Component({ + selector: "provider-add-organization", + templateUrl: "add-organization.component.html", +}) +export class AddOrganizationComponent implements OnInit { + @Input() providerId: string; + @Input() organizations: Organization[]; + @Output() onAddedOrganization = new EventEmitter(); + + provider: Provider; + formPromise: Promise; + loading = true; + + constructor( + private providerService: ProviderService, + private webProviderService: WebProviderService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private validationService: ValidationService + ) {} + + async ngOnInit() { + await this.load(); + } + + async load() { + if (this.providerId == null) { + return; + } + + this.provider = await this.providerService.get(this.providerId); + + this.loading = false; + } + + async add(organization: Organization) { + if (this.formPromise) { + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("addOrganizationConfirmation", organization.name, this.provider.name), + organization.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + + if (!confirmed) { + return false; + } + + try { + this.formPromise = this.webProviderService.addOrganizationToProvider( + this.providerId, + organization.id + ); + await this.formPromise; + } catch (e) { + this.validationService.showError(e); + return; + } finally { + this.formPromise = null; + } + + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("organizationJoinedProvider") + ); + this.onAddedOrganization.emit(); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/clients/clients.component.html b/bitwarden_license/bit-web/src/app/providers/clients/clients.component.html new file mode 100644 index 0000000000..e5d048002e --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/clients/clients.component.html @@ -0,0 +1,90 @@ + + + + + {{ "loading" | i18n }} + + + +

{{ "noClientsInList" | i18n }}

+ + + + + + + + + +
+ + + {{ o.organizationName }} + + +
+
+
+ + diff --git a/bitwarden_license/bit-web/src/app/providers/clients/clients.component.ts b/bitwarden_license/bit-web/src/app/providers/clients/clients.component.ts new file mode 100644 index 0000000000..c78bac24e4 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/clients/clients.component.ts @@ -0,0 +1,179 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { ValidationService } from "jslib-angular/services/validation.service"; +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 { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { PlanType } from "jslib-common/enums/planType"; +import { ProviderUserType } from "jslib-common/enums/providerUserType"; +import { Organization } from "jslib-common/models/domain/organization"; +import { ProviderOrganizationOrganizationDetailsResponse } from "jslib-common/models/response/provider/providerOrganizationResponse"; + +import { WebProviderService } from "../services/webProvider.service"; + +import { AddOrganizationComponent } from "./add-organization.component"; + +const DisallowedPlanTypes = [ + PlanType.Free, + PlanType.FamiliesAnnually2019, + PlanType.FamiliesAnnually, +]; + +@Component({ + templateUrl: "clients.component.html", +}) +export class ClientsComponent implements OnInit { + @ViewChild("add", { read: ViewContainerRef, static: true }) addModalRef: ViewContainerRef; + + providerId: any; + searchText: string; + addableOrganizations: Organization[]; + loading = true; + manageOrganizations = false; + showAddExisting = false; + + clients: ProviderOrganizationOrganizationDetailsResponse[]; + pagedClients: ProviderOrganizationOrganizationDetailsResponse[]; + + protected didScroll = false; + protected pageSize = 100; + protected actionPromise: Promise; + private pagedClientsCount = 0; + + constructor( + private route: ActivatedRoute, + private providerService: ProviderService, + private apiService: ApiService, + private searchService: SearchService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private validationService: ValidationService, + private webProviderService: WebProviderService, + private logService: LogService, + private modalService: ModalService, + private organizationService: OrganizationService + ) {} + + async ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + this.providerId = params.providerId; + + await this.load(); + + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + this.searchText = qParams.search; + }); + }); + } + + async load() { + const response = await this.apiService.getProviderClients(this.providerId); + this.clients = response.data != null && response.data.length > 0 ? response.data : []; + this.manageOrganizations = + (await this.providerService.get(this.providerId)).type === ProviderUserType.ProviderAdmin; + const candidateOrgs = (await this.organizationService.getAll()).filter( + (o) => o.isOwner && o.providerId == null + ); + const allowedOrgsIds = await Promise.all( + candidateOrgs.map((o) => this.apiService.getOrganization(o.id)) + ).then((orgs) => + orgs.filter((o) => !DisallowedPlanTypes.includes(o.planType)).map((o) => o.id) + ); + this.addableOrganizations = candidateOrgs.filter((o) => allowedOrgsIds.includes(o.id)); + + this.showAddExisting = this.addableOrganizations.length !== 0; + this.loading = false; + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.clients && this.clients.length > this.pageSize; + } + + isSearching() { + return this.searchService.isSearchable(this.searchText); + } + + async resetPaging() { + this.pagedClients = []; + this.loadMore(); + } + + loadMore() { + if (!this.clients || this.clients.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedClients.length; + let pagedSize = this.pageSize; + if (pagedLength === 0 && this.pagedClientsCount > this.pageSize) { + pagedSize = this.pagedClientsCount; + } + if (this.clients.length > pagedLength) { + this.pagedClients = this.pagedClients.concat( + this.clients.slice(pagedLength, pagedLength + pagedSize) + ); + } + this.pagedClientsCount = this.pagedClients.length; + this.didScroll = this.pagedClients.length > this.pageSize; + } + + async addExistingOrganization() { + const [modal] = await this.modalService.openViewRef( + AddOrganizationComponent, + this.addModalRef, + (comp) => { + comp.providerId = this.providerId; + comp.organizations = this.addableOrganizations; + comp.onAddedOrganization.subscribe(async () => { + try { + await this.load(); + modal.close(); + } catch (e) { + this.logService.error(`Handled exception: ${e}`); + } + }); + } + ); + } + + async remove(organization: ProviderOrganizationOrganizationDetailsResponse) { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("detachOrganizationConfirmation"), + organization.organizationName, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + + if (!confirmed) { + return false; + } + + this.actionPromise = this.webProviderService.detachOrganizastion( + this.providerId, + organization.id + ); + try { + await this.actionPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("detachedOrganization", organization.organizationName) + ); + await this.load(); + } catch (e) { + this.validationService.showError(e); + } + this.actionPromise = null; + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/clients/create-organization.component.html b/bitwarden_license/bit-web/src/app/providers/clients/create-organization.component.html new file mode 100644 index 0000000000..59ac5e4f4e --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/clients/create-organization.component.html @@ -0,0 +1,5 @@ + +

{{ "newClientOrganizationDesc" | i18n }}

+ diff --git a/bitwarden_license/bit-web/src/app/providers/clients/create-organization.component.ts b/bitwarden_license/bit-web/src/app/providers/clients/create-organization.component.ts new file mode 100644 index 0000000000..f04af8ad2f --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/clients/create-organization.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit, ViewChild } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { OrganizationPlansComponent } from "src/app/settings/organization-plans.component"; + +@Component({ + selector: "app-create-organization", + templateUrl: "create-organization.component.html", +}) +export class CreateOrganizationComponent implements OnInit { + @ViewChild(OrganizationPlansComponent, { static: true }) + orgPlansComponent: OrganizationPlansComponent; + + providerId: string; + + constructor(private route: ActivatedRoute) {} + + ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + this.providerId = params.providerId; + }); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/guards/provider-type.guard.ts b/bitwarden_license/bit-web/src/app/providers/guards/provider-type.guard.ts new file mode 100644 index 0000000000..107fd04494 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/guards/provider-type.guard.ts @@ -0,0 +1,26 @@ +import { Injectable } from "@angular/core"; +import { ActivatedRouteSnapshot, CanActivate, Router } from "@angular/router"; + +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { Permissions } from "jslib-common/enums/permissions"; + +@Injectable() +export class PermissionsGuard implements CanActivate { + constructor(private providerService: ProviderService, private router: Router) {} + + async canActivate(route: ActivatedRouteSnapshot) { + const provider = await this.providerService.get(route.params.providerId); + const permissions = route.data == null ? null : (route.data.permissions as Permissions[]); + + if ( + (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && provider.canAccessEventLogs) || + (permissions.indexOf(Permissions.ManageProvider) !== -1 && provider.isProviderAdmin) || + (permissions.indexOf(Permissions.ManageUsers) !== -1 && provider.canManageUsers) + ) { + return true; + } + + this.router.navigate(["/providers", provider.id]); + return false; + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/guards/provider.guard.ts b/bitwarden_license/bit-web/src/app/providers/guards/provider.guard.ts new file mode 100644 index 0000000000..444d65fda6 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/guards/provider.guard.ts @@ -0,0 +1,31 @@ +import { Injectable } from "@angular/core"; +import { ActivatedRouteSnapshot, CanActivate, Router } from "@angular/router"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; + +@Injectable() +export class ProviderGuard implements CanActivate { + constructor( + private router: Router, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private providerService: ProviderService + ) {} + + async canActivate(route: ActivatedRouteSnapshot) { + const provider = await this.providerService.get(route.params.providerId); + if (provider == null) { + this.router.navigate(["/"]); + return false; + } + if (!provider.isProviderAdmin && !provider.enabled) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("providerIsDisabled")); + this.router.navigate(["/"]); + return false; + } + + return true; + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/manage/accept-provider.component.html b/bitwarden_license/bit-web/src/app/providers/manage/accept-provider.component.html new file mode 100644 index 0000000000..a5927cbc9a --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/accept-provider.component.html @@ -0,0 +1,46 @@ +
+
+ +

+ + {{ "loading" | i18n }} +

+
+
+
+
+
+

{{ "joinProvider" | i18n }}

+
+
+

+ {{ providerName }} + {{ email }} +

+

{{ "joinProviderDesc" | i18n }}

+
+ +
+
+
+
+
diff --git a/bitwarden_license/bit-web/src/app/providers/manage/accept-provider.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/accept-provider.component.ts new file mode 100644 index 0000000000..f27e68f9f6 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/accept-provider.component.ts @@ -0,0 +1,55 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { ProviderUserAcceptRequest } from "jslib-common/models/request/provider/providerUserAcceptRequest"; + +import { BaseAcceptComponent } from "src/app/common/base.accept.component"; + +@Component({ + selector: "app-accept-provider", + templateUrl: "accept-provider.component.html", +}) +export class AcceptProviderComponent extends BaseAcceptComponent { + providerName: string; + + failedMessage = "providerInviteAcceptFailed"; + + requiredParameters = ["providerId", "providerUserId", "token"]; + + constructor( + router: Router, + i18nService: I18nService, + route: ActivatedRoute, + stateService: StateService, + private apiService: ApiService, + platformUtilService: PlatformUtilsService + ) { + super(router, platformUtilService, i18nService, route, stateService); + } + + async authedHandler(qParams: any) { + const request = new ProviderUserAcceptRequest(); + request.token = qParams.token; + + await this.apiService.postProviderUserAccept( + qParams.providerId, + qParams.providerUserId, + request + ); + this.platformUtilService.showToast( + "success", + this.i18nService.t("inviteAccepted"), + this.i18nService.t("providerInviteAcceptedDesc"), + { timeout: 10000 } + ); + this.router.navigate(["/vault"]); + } + + async unauthedHandler(qParams: any) { + this.providerName = qParams.providerName; + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/manage/bulk/bulk-confirm.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/bulk/bulk-confirm.component.ts new file mode 100644 index 0000000000..656793f22d --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/bulk/bulk-confirm.component.ts @@ -0,0 +1,34 @@ +import { Component, Input } from "@angular/core"; + +import { ProviderUserStatusType } from "jslib-common/enums/providerUserStatusType"; +import { ProviderUserBulkConfirmRequest } from "jslib-common/models/request/provider/providerUserBulkConfirmRequest"; +import { ProviderUserBulkRequest } from "jslib-common/models/request/provider/providerUserBulkRequest"; + +import { BulkConfirmComponent as OrganizationBulkConfirmComponent } from "src/app/organizations/manage/bulk/bulk-confirm.component"; +import { BulkUserDetails } from "src/app/organizations/manage/bulk/bulk-status.component"; + +@Component({ + templateUrl: + "../../../../../../../apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html", +}) +export class BulkConfirmComponent extends OrganizationBulkConfirmComponent { + @Input() providerId: string; + + protected isAccepted(user: BulkUserDetails) { + return user.status === ProviderUserStatusType.Accepted; + } + + protected async getPublicKeys() { + const request = new ProviderUserBulkRequest(this.filteredUsers.map((user) => user.id)); + return await this.apiService.postProviderUsersPublicKey(this.providerId, request); + } + + protected getCryptoKey() { + return this.cryptoService.getProviderKey(this.providerId); + } + + protected async postConfirmRequest(userIdsWithKeys: any[]) { + const request = new ProviderUserBulkConfirmRequest(userIdsWithKeys); + return await this.apiService.postProviderUserBulkConfirm(this.providerId, request); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/manage/bulk/bulk-remove.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/bulk/bulk-remove.component.ts new file mode 100644 index 0000000000..b910f8f76c --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/bulk/bulk-remove.component.ts @@ -0,0 +1,18 @@ +import { Component, Input } from "@angular/core"; + +import { ProviderUserBulkRequest } from "jslib-common/models/request/provider/providerUserBulkRequest"; + +import { BulkRemoveComponent as OrganizationBulkRemoveComponent } from "src/app/organizations/manage/bulk/bulk-remove.component"; + +@Component({ + templateUrl: + "../../../../../../../apps/web/src/app/organizations/manage/bulk/bulk-remove.component.html", +}) +export class BulkRemoveComponent extends OrganizationBulkRemoveComponent { + @Input() providerId: string; + + async deleteUsers() { + const request = new ProviderUserBulkRequest(this.users.map((user) => user.id)); + return await this.apiService.deleteManyProviderUsers(this.providerId, request); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/manage/events.component.html b/bitwarden_license/bit-web/src/app/providers/manage/events.component.html new file mode 100644 index 0000000000..d27b53e8d9 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/events.component.html @@ -0,0 +1,107 @@ + + + + {{ "loading" | i18n }} + + +

{{ "noEventsInList" | i18n }}

+ + + + + + + + + + + + + + + + + +
{{ "timestamp" | i18n }} + {{ "device" | i18n }} + {{ "user" | i18n }}{{ "event" | i18n }}
{{ e.date | date: "medium" }} + + {{ e.appName }}, {{ e.ip }} + + {{ e.userName }} +
+ +
diff --git a/bitwarden_license/bit-web/src/app/providers/manage/events.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/events.component.ts new file mode 100644 index 0000000000..791cdd1e68 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/events.component.ts @@ -0,0 +1,79 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { UserNamePipe } from "jslib-angular/pipes/user-name.pipe"; +import { ApiService } from "jslib-common/abstractions/api.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 { ProviderService } from "jslib-common/abstractions/provider.service"; +import { EventResponse } from "jslib-common/models/response/eventResponse"; + +import { BaseEventsComponent } from "src/app/common/base.events.component"; +import { EventService } from "src/app/services/event.service"; + +@Component({ + selector: "provider-events", + templateUrl: "events.component.html", +}) +export class EventsComponent extends BaseEventsComponent implements OnInit { + exportFileName = "provider-events"; + providerId: string; + + private providerUsersUserIdMap = new Map(); + private providerUsersIdMap = new Map(); + + constructor( + private apiService: ApiService, + private route: ActivatedRoute, + eventService: EventService, + i18nService: I18nService, + private providerService: ProviderService, + exportService: ExportService, + platformUtilsService: PlatformUtilsService, + private router: Router, + logService: LogService, + private userNamePipe: UserNamePipe + ) { + super(eventService, i18nService, exportService, platformUtilsService, logService); + } + + async ngOnInit() { + this.route.parent.parent.params.subscribe(async (params) => { + this.providerId = params.providerId; + const provider = await this.providerService.get(this.providerId); + if (provider == null || !provider.useEvents) { + this.router.navigate(["/providers", this.providerId]); + return; + } + await this.load(); + }); + } + + async load() { + const response = await this.apiService.getProviderUsers(this.providerId); + response.data.forEach((u) => { + const name = this.userNamePipe.transform(u); + this.providerUsersIdMap.set(u.id, { name: name, email: u.email }); + this.providerUsersUserIdMap.set(u.userId, { name: name, email: u.email }); + }); + await this.loadEvents(true); + this.loaded = true; + } + + protected requestEvents(startDate: string, endDate: string, continuationToken: string) { + return this.apiService.getEventsProvider( + this.providerId, + startDate, + endDate, + continuationToken + ); + } + + protected getUserName(r: EventResponse, userId: string) { + return userId != null && this.providerUsersUserIdMap.has(userId) + ? this.providerUsersUserIdMap.get(userId) + : null; + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/manage/manage.component.html b/bitwarden_license/bit-web/src/app/providers/manage/manage.component.html new file mode 100644 index 0000000000..48e26fb5fe --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/manage.component.html @@ -0,0 +1,30 @@ +
+
+ +
+ +
+
+
diff --git a/bitwarden_license/bit-web/src/app/providers/manage/manage.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/manage.component.ts new file mode 100644 index 0000000000..2ddc19c3b7 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/manage.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { Provider } from "jslib-common/models/domain/provider"; + +@Component({ + selector: "provider-manage", + templateUrl: "manage.component.html", +}) +export class ManageComponent implements OnInit { + provider: Provider; + accessEvents = false; + + constructor(private route: ActivatedRoute, private providerService: ProviderService) {} + + ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + this.provider = await this.providerService.get(params.providerId); + this.accessEvents = this.provider.useEvents; + }); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/manage/people.component.html b/bitwarden_license/bit-web/src/app/providers/manage/people.component.html new file mode 100644 index 0000000000..884a6bafb1 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/people.component.html @@ -0,0 +1,233 @@ + + + + {{ "loading" | i18n }} + + +

{{ "noUsersInList" | i18n }}

+ + + {{ "providerUsersNeedConfirmed" | i18n }} + + + + + + + + + + + + +
+ + + + + + {{ u.email }} + {{ + "invited" | i18n + }} + {{ + "accepted" | i18n + }} + {{ u.name }} + + + + {{ "userUsingTwoStep" | i18n }} + + + {{ "providerAdmin" | i18n }} + {{ "serviceUser" | i18n }} + {{ "custom" | i18n }} + + +
+
+
+ + + + + + diff --git a/bitwarden_license/bit-web/src/app/providers/manage/people.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/people.component.ts new file mode 100644 index 0000000000..9cc615b87e --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/people.component.ts @@ -0,0 +1,284 @@ +import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { SearchPipe } from "jslib-angular/pipes/search.pipe"; +import { UserNamePipe } from "jslib-angular/pipes/user-name.pipe"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { ValidationService } from "jslib-angular/services/validation.service"; +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { ProviderUserStatusType } from "jslib-common/enums/providerUserStatusType"; +import { ProviderUserType } from "jslib-common/enums/providerUserType"; +import { ProviderUserBulkRequest } from "jslib-common/models/request/provider/providerUserBulkRequest"; +import { ProviderUserConfirmRequest } from "jslib-common/models/request/provider/providerUserConfirmRequest"; +import { ListResponse } from "jslib-common/models/response/listResponse"; +import { ProviderUserBulkResponse } from "jslib-common/models/response/provider/providerUserBulkResponse"; +import { ProviderUserUserDetailsResponse } from "jslib-common/models/response/provider/providerUserResponse"; + +import { BasePeopleComponent } from "src/app/common/base.people.component"; +import { BulkStatusComponent } from "src/app/organizations/manage/bulk/bulk-status.component"; +import { EntityEventsComponent } from "src/app/organizations/manage/entity-events.component"; + +import { BulkConfirmComponent } from "./bulk/bulk-confirm.component"; +import { BulkRemoveComponent } from "./bulk/bulk-remove.component"; +import { UserAddEditComponent } from "./user-add-edit.component"; + +@Component({ + selector: "provider-people", + templateUrl: "people.component.html", +}) +export class PeopleComponent + extends BasePeopleComponent + implements OnInit +{ + @ViewChild("addEdit", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef; + @ViewChild("groupsTemplate", { read: ViewContainerRef, static: true }) + groupsModalRef: ViewContainerRef; + @ViewChild("eventsTemplate", { read: ViewContainerRef, static: true }) + eventsModalRef: ViewContainerRef; + @ViewChild("bulkStatusTemplate", { read: ViewContainerRef, static: true }) + bulkStatusModalRef: ViewContainerRef; + @ViewChild("bulkConfirmTemplate", { read: ViewContainerRef, static: true }) + bulkConfirmModalRef: ViewContainerRef; + @ViewChild("bulkRemoveTemplate", { read: ViewContainerRef, static: true }) + bulkRemoveModalRef: ViewContainerRef; + + userType = ProviderUserType; + userStatusType = ProviderUserStatusType; + providerId: string; + accessEvents = false; + + constructor( + apiService: ApiService, + private route: ActivatedRoute, + i18nService: I18nService, + modalService: ModalService, + platformUtilsService: PlatformUtilsService, + cryptoService: CryptoService, + private router: Router, + searchService: SearchService, + validationService: ValidationService, + logService: LogService, + searchPipe: SearchPipe, + userNamePipe: UserNamePipe, + stateService: StateService, + private providerService: ProviderService + ) { + super( + apiService, + searchService, + i18nService, + platformUtilsService, + cryptoService, + validationService, + modalService, + logService, + searchPipe, + userNamePipe, + stateService + ); + } + + ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + this.providerId = params.providerId; + const provider = await this.providerService.get(this.providerId); + + if (!provider.canManageUsers) { + this.router.navigate(["../"], { relativeTo: this.route }); + return; + } + + this.accessEvents = provider.useEvents; + + await this.load(); + + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + this.searchText = qParams.search; + if (qParams.viewEvents != null) { + const user = this.users.filter((u) => u.id === qParams.viewEvents); + if (user.length > 0 && user[0].status === ProviderUserStatusType.Confirmed) { + this.events(user[0]); + } + } + }); + }); + } + + getUsers(): Promise> { + return this.apiService.getProviderUsers(this.providerId); + } + + deleteUser(id: string): Promise { + return this.apiService.deleteProviderUser(this.providerId, id); + } + + reinviteUser(id: string): Promise { + return this.apiService.postProviderUserReinvite(this.providerId, id); + } + + async confirmUser(user: ProviderUserUserDetailsResponse, publicKey: Uint8Array): Promise { + const providerKey = await this.cryptoService.getProviderKey(this.providerId); + const key = await this.cryptoService.rsaEncrypt(providerKey.key, publicKey.buffer); + const request = new ProviderUserConfirmRequest(); + request.key = key.encryptedString; + await this.apiService.postProviderUserConfirm(this.providerId, user.id, request); + } + + async edit(user: ProviderUserUserDetailsResponse) { + const [modal] = await this.modalService.openViewRef( + UserAddEditComponent, + this.addEditModalRef, + (comp) => { + comp.name = this.userNamePipe.transform(user); + comp.providerId = this.providerId; + comp.providerUserId = user != null ? user.id : null; + comp.onSavedUser.subscribe(() => { + modal.close(); + this.load(); + }); + comp.onDeletedUser.subscribe(() => { + modal.close(); + this.removeUser(user); + }); + } + ); + } + + async events(user: ProviderUserUserDetailsResponse) { + await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => { + comp.name = this.userNamePipe.transform(user); + comp.providerId = this.providerId; + comp.entityId = user.id; + comp.showUser = false; + comp.entity = "user"; + }); + } + + async bulkRemove() { + if (this.actionPromise != null) { + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkRemoveComponent, + this.bulkRemoveModalRef, + (comp) => { + comp.providerId = this.providerId; + comp.users = this.getCheckedUsers(); + } + ); + + await modal.onClosedPromise(); + await this.load(); + } + + async bulkReinvite() { + if (this.actionPromise != null) { + return; + } + + const users = this.getCheckedUsers(); + const filteredUsers = users.filter((u) => u.status === ProviderUserStatusType.Invited); + + if (filteredUsers.length <= 0) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("noSelectedUsersApplicable") + ); + return; + } + + try { + const request = new ProviderUserBulkRequest(filteredUsers.map((user) => user.id)); + const response = this.apiService.postManyProviderUserReinvite(this.providerId, request); + this.showBulkStatus( + users, + filteredUsers, + response, + this.i18nService.t("bulkReinviteMessage") + ); + } catch (e) { + this.validationService.showError(e); + } + this.actionPromise = null; + } + + async bulkConfirm() { + if (this.actionPromise != null) { + return; + } + + const [modal] = await this.modalService.openViewRef( + BulkConfirmComponent, + this.bulkConfirmModalRef, + (comp) => { + comp.providerId = this.providerId; + comp.users = this.getCheckedUsers(); + } + ); + + await modal.onClosedPromise(); + await this.load(); + } + + private async showBulkStatus( + users: ProviderUserUserDetailsResponse[], + filteredUsers: ProviderUserUserDetailsResponse[], + request: Promise>, + successfullMessage: string + ) { + const [modal, childComponent] = await this.modalService.openViewRef( + BulkStatusComponent, + this.bulkStatusModalRef, + (comp) => { + comp.loading = true; + } + ); + + // Workaround to handle closing the modal shortly after it has been opened + let close = false; + modal.onShown.subscribe(() => { + if (close) { + modal.close(); + } + }); + + try { + const response = await request; + + if (modal) { + const keyedErrors: any = response.data + .filter((r) => r.error !== "") + .reduce((a, x) => ({ ...a, [x.id]: x.error }), {}); + const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {}); + + childComponent.users = users.map((user) => { + let message = keyedErrors[user.id] ?? successfullMessage; + // eslint-disable-next-line + if (!keyedFilteredUsers.hasOwnProperty(user.id)) { + message = this.i18nService.t("bulkFilteredMessage"); + } + + return { + user: user, + error: keyedErrors.hasOwnProperty(user.id), // eslint-disable-line + message: message, + }; + }); + childComponent.loading = false; + } + } catch { + close = true; + modal.close(); + } + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.html b/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.html new file mode 100644 index 0000000000..d784294071 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.html @@ -0,0 +1,124 @@ + diff --git a/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.ts new file mode 100644 index 0000000000..48038472d8 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.ts @@ -0,0 +1,118 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; + +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 { ProviderUserType } from "jslib-common/enums/providerUserType"; +import { PermissionsApi } from "jslib-common/models/api/permissionsApi"; +import { ProviderUserInviteRequest } from "jslib-common/models/request/provider/providerUserInviteRequest"; +import { ProviderUserUpdateRequest } from "jslib-common/models/request/provider/providerUserUpdateRequest"; + +@Component({ + selector: "provider-user-add-edit", + templateUrl: "user-add-edit.component.html", +}) +export class UserAddEditComponent implements OnInit { + @Input() name: string; + @Input() providerUserId: string; + @Input() providerId: string; + @Output() onSavedUser = new EventEmitter(); + @Output() onDeletedUser = new EventEmitter(); + + loading = true; + editMode = false; + title: string; + emails: string; + type: ProviderUserType = ProviderUserType.ServiceUser; + permissions = new PermissionsApi(); + showCustom = false; + access: "all" | "selected" = "selected"; + formPromise: Promise; + deletePromise: Promise; + userType = ProviderUserType; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + this.editMode = this.loading = this.providerUserId != null; + + if (this.editMode) { + this.editMode = true; + this.title = this.i18nService.t("editUser"); + try { + const user = await this.apiService.getProviderUser(this.providerId, this.providerUserId); + this.type = user.type; + } catch (e) { + this.logService.error(e); + } + } else { + this.title = this.i18nService.t("inviteUser"); + } + + this.loading = false; + } + + async submit() { + try { + if (this.editMode) { + const request = new ProviderUserUpdateRequest(); + request.type = this.type; + this.formPromise = this.apiService.putProviderUser( + this.providerId, + this.providerUserId, + request + ); + } else { + const request = new ProviderUserInviteRequest(); + request.emails = this.emails.trim().split(/\s*,\s*/); + request.type = this.type; + this.formPromise = this.apiService.postProviderUserInvite(this.providerId, request); + } + await this.formPromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t(this.editMode ? "editedUserId" : "invitedUsers", this.name) + ); + this.onSavedUser.emit(); + } catch (e) { + this.logService.error(e); + } + } + + async delete() { + if (!this.editMode) { + return; + } + + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("removeUserConfirmation"), + this.name, + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + if (!confirmed) { + return false; + } + + try { + this.deletePromise = this.apiService.deleteProviderUser(this.providerId, this.providerUserId); + await this.deletePromise; + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("removedUserId", this.name) + ); + this.onDeletedUser.emit(); + } catch (e) { + this.logService.error(e); + } + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/providers-layout.component.html b/bitwarden_license/bit-web/src/app/providers/providers-layout.component.html new file mode 100644 index 0000000000..f5546f909e --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/providers-layout.component.html @@ -0,0 +1,44 @@ + +
+
+
+
+ +
+ {{ provider.name }} + {{ "provider" | i18n }} +
+
+
+ + {{ "providerIsDisabled" | i18n }} +
+
+
+ +
+
+
+
+ +
+ diff --git a/bitwarden_license/bit-web/src/app/providers/providers-layout.component.ts b/bitwarden_license/bit-web/src/app/providers/providers-layout.component.ts new file mode 100644 index 0000000000..e00a30b65b --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/providers-layout.component.ts @@ -0,0 +1,49 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ProviderService } from "jslib-common/abstractions/provider.service"; +import { Provider } from "jslib-common/models/domain/provider"; + +@Component({ + selector: "providers-layout", + templateUrl: "providers-layout.component.html", +}) +export class ProvidersLayoutComponent { + provider: Provider; + private providerId: string; + + constructor(private route: ActivatedRoute, private providerService: ProviderService) {} + + ngOnInit() { + document.body.classList.remove("layout_frontend"); + this.route.params.subscribe(async (params) => { + this.providerId = params.providerId; + await this.load(); + }); + } + + async load() { + this.provider = await this.providerService.get(this.providerId); + } + + get showMenuBar() { + return this.showManageTab || this.showSettingsTab; + } + + get showManageTab() { + return this.provider.canManageUsers || this.provider.canAccessEventLogs; + } + + get showSettingsTab() { + return this.provider.isProviderAdmin; + } + + get manageRoute(): string { + switch (true) { + case this.provider.canManageUsers: + return "manage/people"; + case this.provider.canAccessEventLogs: + return "manage/events"; + } + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/providers-routing.module.ts b/bitwarden_license/bit-web/src/app/providers/providers-routing.module.ts new file mode 100644 index 0000000000..14cd7c4707 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/providers-routing.module.ts @@ -0,0 +1,121 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AuthGuard } from "jslib-angular/guards/auth.guard"; +import { Permissions } from "jslib-common/enums/permissions"; + +import { FrontendLayoutComponent } from "src/app/layouts/frontend-layout.component"; +import { ProvidersComponent } from "src/app/providers/providers.component"; + +import { ClientsComponent } from "./clients/clients.component"; +import { CreateOrganizationComponent } from "./clients/create-organization.component"; +import { PermissionsGuard } from "./guards/provider-type.guard"; +import { ProviderGuard } from "./guards/provider.guard"; +import { AcceptProviderComponent } from "./manage/accept-provider.component"; +import { EventsComponent } from "./manage/events.component"; +import { ManageComponent } from "./manage/manage.component"; +import { PeopleComponent } from "./manage/people.component"; +import { ProvidersLayoutComponent } from "./providers-layout.component"; +import { AccountComponent } from "./settings/account.component"; +import { SettingsComponent } from "./settings/settings.component"; +import { SetupProviderComponent } from "./setup/setup-provider.component"; +import { SetupComponent } from "./setup/setup.component"; + +const routes: Routes = [ + { + path: "", + canActivate: [AuthGuard], + component: ProvidersComponent, + }, + { + path: "", + component: FrontendLayoutComponent, + children: [ + { + path: "setup-provider", + component: SetupProviderComponent, + data: { titleId: "setupProvider" }, + }, + { + path: "accept-provider", + component: AcceptProviderComponent, + data: { titleId: "acceptProvider" }, + }, + ], + }, + { + path: "", + canActivate: [AuthGuard], + children: [ + { + path: "setup", + component: SetupComponent, + }, + { + path: ":providerId", + component: ProvidersLayoutComponent, + canActivate: [ProviderGuard], + children: [ + { path: "", pathMatch: "full", redirectTo: "clients" }, + { path: "clients/create", component: CreateOrganizationComponent }, + { path: "clients", component: ClientsComponent, data: { titleId: "clients" } }, + { + path: "manage", + component: ManageComponent, + children: [ + { + path: "", + pathMatch: "full", + redirectTo: "people", + }, + { + path: "people", + component: PeopleComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "people", + permissions: [Permissions.ManageUsers], + }, + }, + { + path: "events", + component: EventsComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "eventLogs", + permissions: [Permissions.AccessEventLogs], + }, + }, + ], + }, + { + path: "settings", + component: SettingsComponent, + children: [ + { + path: "", + pathMatch: "full", + redirectTo: "account", + }, + { + path: "account", + component: AccountComponent, + canActivate: [PermissionsGuard], + data: { + titleId: "myProvider", + permissions: [Permissions.ManageProvider], + }, + }, + ], + }, + ], + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ProvidersRoutingModule {} diff --git a/bitwarden_license/bit-web/src/app/providers/providers.module.ts b/bitwarden_license/bit-web/src/app/providers/providers.module.ts new file mode 100644 index 0000000000..7880d78c9b --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/providers.module.ts @@ -0,0 +1,58 @@ +import { CommonModule } from "@angular/common"; +import { ComponentFactoryResolver, NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; + +import { JslibModule } from "jslib-angular/jslib.module"; +import { ModalService } from "jslib-angular/services/modal.service"; + +import { OssModule } from "src/app/oss.module"; + +import { AddOrganizationComponent } from "./clients/add-organization.component"; +import { ClientsComponent } from "./clients/clients.component"; +import { CreateOrganizationComponent } from "./clients/create-organization.component"; +import { PermissionsGuard } from "./guards/provider-type.guard"; +import { ProviderGuard } from "./guards/provider.guard"; +import { AcceptProviderComponent } from "./manage/accept-provider.component"; +import { BulkConfirmComponent } from "./manage/bulk/bulk-confirm.component"; +import { BulkRemoveComponent } from "./manage/bulk/bulk-remove.component"; +import { EventsComponent } from "./manage/events.component"; +import { ManageComponent } from "./manage/manage.component"; +import { PeopleComponent } from "./manage/people.component"; +import { UserAddEditComponent } from "./manage/user-add-edit.component"; +import { ProvidersLayoutComponent } from "./providers-layout.component"; +import { ProvidersRoutingModule } from "./providers-routing.module"; +import { WebProviderService } from "./services/webProvider.service"; +import { AccountComponent } from "./settings/account.component"; +import { SettingsComponent } from "./settings/settings.component"; +import { SetupProviderComponent } from "./setup/setup-provider.component"; +import { SetupComponent } from "./setup/setup.component"; + +@NgModule({ + imports: [CommonModule, FormsModule, OssModule, JslibModule, ProvidersRoutingModule], + declarations: [ + AcceptProviderComponent, + AccountComponent, + AddOrganizationComponent, + BulkConfirmComponent, + BulkRemoveComponent, + ClientsComponent, + CreateOrganizationComponent, + EventsComponent, + ManageComponent, + PeopleComponent, + ProvidersLayoutComponent, + SettingsComponent, + SetupComponent, + SetupProviderComponent, + UserAddEditComponent, + ], + providers: [WebProviderService, ProviderGuard, PermissionsGuard], +}) +export class ProvidersModule { + constructor(modalService: ModalService, componentFactoryResolver: ComponentFactoryResolver) { + modalService.registerComponentFactoryResolver( + AddOrganizationComponent, + componentFactoryResolver + ); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/services/webProvider.service.ts b/bitwarden_license/bit-web/src/app/providers/services/webProvider.service.ts new file mode 100644 index 0000000000..2910229495 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/services/webProvider.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from "@angular/core"; + +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { ProviderAddOrganizationRequest } from "jslib-common/models/request/provider/providerAddOrganizationRequest"; + +@Injectable() +export class WebProviderService { + constructor( + private cryptoService: CryptoService, + private syncService: SyncService, + private apiService: ApiService + ) {} + + async addOrganizationToProvider(providerId: string, organizationId: string) { + const orgKey = await this.cryptoService.getOrgKey(organizationId); + const providerKey = await this.cryptoService.getProviderKey(providerId); + + const encryptedOrgKey = await this.cryptoService.encrypt(orgKey.key, providerKey); + + const request = new ProviderAddOrganizationRequest(); + request.organizationId = organizationId; + request.key = encryptedOrgKey.encryptedString; + + const response = await this.apiService.postProviderAddOrganization(providerId, request); + await this.syncService.fullSync(true); + return response; + } + + async detachOrganizastion(providerId: string, organizationId: string): Promise { + await this.apiService.deleteProviderOrganization(providerId, organizationId); + await this.syncService.fullSync(true); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/settings/account.component.html b/bitwarden_license/bit-web/src/app/providers/settings/account.component.html new file mode 100644 index 0000000000..f58e712ce3 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/settings/account.component.html @@ -0,0 +1,52 @@ + +
+ + {{ "loading" | i18n }} +
+
+
+
+
+ + +
+
+ + +
+
+
+ +
+
+ +
diff --git a/bitwarden_license/bit-web/src/app/providers/settings/account.component.ts b/bitwarden_license/bit-web/src/app/providers/settings/account.component.ts new file mode 100644 index 0000000000..fc834d4b65 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/settings/account.component.ts @@ -0,0 +1,63 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +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 { SyncService } from "jslib-common/abstractions/sync.service"; +import { ProviderUpdateRequest } from "jslib-common/models/request/provider/providerUpdateRequest"; +import { ProviderResponse } from "jslib-common/models/response/provider/providerResponse"; + +@Component({ + selector: "provider-account", + templateUrl: "account.component.html", +}) +export class AccountComponent { + selfHosted = false; + loading = true; + provider: ProviderResponse; + formPromise: Promise; + taxFormPromise: Promise; + + private providerId: string; + + constructor( + private apiService: ApiService, + private i18nService: I18nService, + private route: ActivatedRoute, + private syncService: SyncService, + private platformUtilsService: PlatformUtilsService, + private logService: LogService + ) {} + + async ngOnInit() { + this.selfHosted = this.platformUtilsService.isSelfHost(); + this.route.parent.parent.params.subscribe(async (params) => { + this.providerId = params.providerId; + try { + this.provider = await this.apiService.getProvider(this.providerId); + } catch (e) { + this.logService.error(`Handled exception: ${e}`); + } + }); + this.loading = false; + } + + async submit() { + try { + const request = new ProviderUpdateRequest(); + request.name = this.provider.name; + request.businessName = this.provider.businessName; + request.billingEmail = this.provider.billingEmail; + + this.formPromise = this.apiService.putProvider(this.providerId, request).then(() => { + return this.syncService.fullSync(true); + }); + await this.formPromise; + this.platformUtilsService.showToast("success", null, this.i18nService.t("providerUpdated")); + } catch (e) { + this.logService.error(`Handled exception: ${e}`); + } + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/settings/settings.component.html b/bitwarden_license/bit-web/src/app/providers/settings/settings.component.html new file mode 100644 index 0000000000..1bc350489c --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/settings/settings.component.html @@ -0,0 +1,17 @@ +
+
+
+
+
{{ "settings" | i18n }}
+ +
+
+
+ +
+
+
diff --git a/bitwarden_license/bit-web/src/app/providers/settings/settings.component.ts b/bitwarden_license/bit-web/src/app/providers/settings/settings.component.ts new file mode 100644 index 0000000000..860f02cf3a --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/settings/settings.component.ts @@ -0,0 +1,18 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { ProviderService } from "jslib-common/abstractions/provider.service"; + +@Component({ + selector: "provider-settings", + templateUrl: "settings.component.html", +}) +export class SettingsComponent { + constructor(private route: ActivatedRoute, private providerService: ProviderService) {} + + ngOnInit() { + this.route.parent.params.subscribe(async (params) => { + await this.providerService.get(params.providerId); + }); + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/setup/setup-provider.component.html b/bitwarden_license/bit-web/src/app/providers/setup/setup-provider.component.html new file mode 100644 index 0000000000..928d178c29 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/setup/setup-provider.component.html @@ -0,0 +1,35 @@ +
+
+ +

+ + {{ "loading" | i18n }} +

+
+
+
+
+
+

{{ "setupProvider" | i18n }}

+
+
+

{{ "setupProviderLoginDesc" | i18n }}

+
+ +
+
+
+
+
diff --git a/bitwarden_license/bit-web/src/app/providers/setup/setup-provider.component.ts b/bitwarden_license/bit-web/src/app/providers/setup/setup-provider.component.ts new file mode 100644 index 0000000000..f34db73612 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/setup/setup-provider.component.ts @@ -0,0 +1,22 @@ +import { Component } from "@angular/core"; + +import { BaseAcceptComponent } from "src/app/common/base.accept.component"; + +@Component({ + selector: "app-setup-provider", + templateUrl: "setup-provider.component.html", +}) +export class SetupProviderComponent extends BaseAcceptComponent { + failedShortMessage = "inviteAcceptFailedShort"; + failedMessage = "inviteAcceptFailed"; + + requiredParameters = ["providerId", "email", "token"]; + + async authedHandler(qParams: any) { + this.router.navigate(["/providers/setup"], { queryParams: qParams }); + } + + async unauthedHandler(qParams: any) { + // Empty + } +} diff --git a/bitwarden_license/bit-web/src/app/providers/setup/setup.component.html b/bitwarden_license/bit-web/src/app/providers/setup/setup.component.html new file mode 100644 index 0000000000..8bbbe41774 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/setup/setup.component.html @@ -0,0 +1,39 @@ + +
+ +

{{ "setupProviderDesc" | i18n }}

+ +
+

{{ "generalInformation" | i18n }}

+
+
+ + +
+
+ + +
+
+ +
+ + +
+
+
+ diff --git a/bitwarden_license/bit-web/src/app/providers/setup/setup.component.ts b/bitwarden_license/bit-web/src/app/providers/setup/setup.component.ts new file mode 100644 index 0000000000..14435be217 --- /dev/null +++ b/bitwarden_license/bit-web/src/app/providers/setup/setup.component.ts @@ -0,0 +1,97 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { ValidationService } from "jslib-angular/services/validation.service"; +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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { ProviderSetupRequest } from "jslib-common/models/request/provider/providerSetupRequest"; + +@Component({ + selector: "provider-setup", + templateUrl: "setup.component.html", +}) +export class SetupComponent implements OnInit { + loading = true; + authed = false; + email: string; + formPromise: Promise; + + providerId: string; + token: string; + name: string; + billingEmail: string; + + constructor( + private router: Router, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private route: ActivatedRoute, + private cryptoService: CryptoService, + private apiService: ApiService, + private syncService: SyncService, + private validationService: ValidationService + ) {} + + ngOnInit() { + document.body.classList.remove("layout_frontend"); + this.route.queryParams.pipe(first()).subscribe(async (qParams) => { + const error = qParams.providerId == null || qParams.email == null || qParams.token == null; + + if (error) { + this.platformUtilsService.showToast( + "error", + null, + this.i18nService.t("emergencyInviteAcceptFailed"), + { timeout: 10000 } + ); + this.router.navigate(["/"]); + return; + } + + this.providerId = qParams.providerId; + this.token = qParams.token; + + // Check if provider exists, redirect if it does + try { + const provider = await this.apiService.getProvider(this.providerId); + if (provider.name != null) { + this.router.navigate(["/providers", provider.id], { replaceUrl: true }); + } + } catch (e) { + this.validationService.showError(e); + this.router.navigate(["/"]); + } + }); + } + + async submit() { + this.formPromise = this.doSubmit(); + await this.formPromise; + this.formPromise = null; + } + + async doSubmit() { + try { + const shareKey = await this.cryptoService.makeShareKey(); + const key = shareKey[0].encryptedString; + + const request = new ProviderSetupRequest(); + request.name = this.name; + request.billingEmail = this.billingEmail; + request.token = this.token; + request.key = key; + + const provider = await this.apiService.postProviderSetup(this.providerId, request); + this.platformUtilsService.showToast("success", null, this.i18nService.t("providerSetup")); + await this.syncService.fullSync(true); + + this.router.navigate(["/providers", provider.id]); + } catch (e) { + this.validationService.showError(e); + } + } +} diff --git a/bitwarden_license/bit-web/tsconfig.json b/bitwarden_license/bit-web/tsconfig.json new file mode 100644 index 0000000000..2243c09fe0 --- /dev/null +++ b/bitwarden_license/bit-web/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../apps/web/jslib/shared/tsconfig", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "tldjs": ["../../apps/web/jslib/common/src/misc/tldjs.noop"], + "jslib-common/*": ["../../apps/web/jslib/common/src/*"], + "jslib-angular/*": ["../../apps/web/jslib/angular/src/*"], + "@bitwarden/components": ["../../apps/web/jslib/components/src"], + "src/*": ["../../apps/web/src/*"] + } + }, + "angularCompilerOptions": { + "preserveWhitespaces": true + }, + "files": [ + "../../apps/web/src/app/polyfills.ts", + "../../apps/web/src/app/main.ts", + "src/app/main.ts" + ], + "include": [ + "../../apps/web/src/connectors/*.ts", + "../../apps/web/src/models/*.ts", + "../../apps/web/src/services/*.ts", + "../../apps/web/src/abstractions/*.ts" + ] +} diff --git a/bitwarden_license/bit-web/webpack.config.js b/bitwarden_license/bit-web/webpack.config.js new file mode 100644 index 0000000000..2d60d20bb6 --- /dev/null +++ b/bitwarden_license/bit-web/webpack.config.js @@ -0,0 +1,12 @@ +const { AngularWebpackPlugin } = require("@ngtools/webpack"); + +const webpackConfig = require("../../apps/web/webpack.config"); + +webpackConfig.entry["app/main"] = "../../bitwarden_license/bit-web/src/app/main.ts"; +webpackConfig.plugins[webpackConfig.plugins.length - 1] = new AngularWebpackPlugin({ + tsConfigPath: "tsconfig.json", + entryModule: "bitwarden_license/src/app/app.module#AppModule", + sourceMap: true, +}); + +module.exports = webpackConfig; diff --git a/libs/.eslintignore b/libs/.eslintignore deleted file mode 100644 index 4a76949644..0000000000 --- a/libs/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -**/dist -**/jest.config.js - -**/node_modules diff --git a/libs/.eslintrc.json b/libs/.eslintrc.json deleted file mode 100644 index 4398e5a753..0000000000 --- a/libs/.eslintrc.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "root": true, - "extends": ["./shared/eslintrc.json"], - "rules": { - "import/order": [ - "error", - { - "alphabetize": { - "order": "asc" - }, - "newlines-between": "always", - "pathGroups": [ - { - "pattern": "jslib-*/**", - "group": "external", - "position": "after" - } - ], - "pathGroupsExcludedImportTypes": ["builtin"] - } - ] - } -} diff --git a/libs/.git-blame-ignore-revs b/libs/.git-blame-ignore-revs deleted file mode 100644 index b2c2a6a496..0000000000 --- a/libs/.git-blame-ignore-revs +++ /dev/null @@ -1 +0,0 @@ -193434461dbd9c48fe5dcbad95693470aec422ac diff --git a/libs/.prettierignore b/libs/.prettierignore deleted file mode 100644 index 14951fa5a4..0000000000 --- a/libs/.prettierignore +++ /dev/null @@ -1,7 +0,0 @@ -# Build directories -dist -.angular -coverage - -# Github Workflows -.github/workflows diff --git a/libs/.vscode/launch.json b/libs/.vscode/launch.json deleted file mode 100644 index e43e2c72c1..0000000000 --- a/libs/.vscode/launch.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Jasmine Individual Test", - "program": "${workspaceRoot}\\node_modules\\jasmine\\bin\\jasmine.js", - "preLaunchTask": "npm run build", - "args": ["${workspaceFolder}/dist\\spec\\node\\services\\nodeCryptoFunction.service.spec.js"] - } - ] -} diff --git a/libs/.vscode/tasks.json b/libs/.vscode/tasks.json deleted file mode 100644 index 924fe71be6..0000000000 --- a/libs/.vscode/tasks.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "label": "npm run build", - "type": "shell", - "command": "npm run build" - } - ] -} diff --git a/libs/CONTRIBUTING.md b/libs/CONTRIBUTING.md deleted file mode 100644 index 5eb1906049..0000000000 --- a/libs/CONTRIBUTING.md +++ /dev/null @@ -1,111 +0,0 @@ -# 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 [User-to-User Support category](https://community.bitwarden.com/c/support/) on the Community Forums - -## Contributor Agreement - -Please sign the [Contributor Agreement](https://cla-assistant.io/bitwarden/jslib) 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 - -# Introduction to jslib and git submodules - -jslib is a repository that contains shared code for all Bitwarden Typescript/Javascript clients (web, desktop, browser, CLI, and directory connector). The clients use this code by consuming jslib as a submodule. This makes jslib code available to each client under the `jslib` directory of the client repository. - -If you haven't worked with submodules before, you should start by reading some basic guides (such as the [git scm chapter](https://git-scm.com/book/en/v2/Git-Tools-Submodules) or the [Atlassian tutorial](https://www.atlassian.com/git/tutorials/git-submodule)). - -# Setting up your Local Dev environment for jslib - -In order to easily develop local changes to jslib across each of the TypeScript/JavaScript clients, we recommend using symlinks for the submodule so that you only have to make the change once for it to be reflected across all your local repos. - -## Prerequisites - -1. git bash or other git command line -2. In order for this to work well, you need to use a consistent relative directory structure. Repos should be cloned in the following way: - - - `./`; we'll call this `/dev` ('cause why not) - - jslib - `git clone https://github.com/bitwarden/jslib.git` (/dev/jslib) - - web - `git clone --recurse-submodules https://github.com/bitwarden/web.git` (/dev/web) - - desktop - `git clone --recurse-submodules https://github.com/bitwarden/desktop.git` (/dev/desktop) - - browser - `git clone --recurse-submodules https://github.com/bitwarden/browser.git` (/dev/browser) - - cli - `git clone --recurse-submodules https://github.com/bitwarden/cli` (/dev/cli) - - You should notice web, desktop, browser and cli each reference jslib as a git submodule. If you've already cloned the repos but didn't use `--recurse-submodules` then you'll need to init the submodule with `npm run sub:init`. - -## Configure Symlinks - -Using `git clone` will make symlinks added to your repo be seen by git as plain text file paths. We need to prevent that. In the project root run, `git config core.symlinks true`. - -For each project other than jslib, run the following: - -- For macOS/Linux: `npm run symlink:mac` -- For Windows: `npm run symlink:win` - -Your client repos will now be pointing to your local jslib repo. You can now make changes in jslib and they will be immediately shared by the clients (just like they will be in production). - -## Committing and pushing jslib changes - -- You work on jslib like any other repo. Check out a new branch, make some commits, and push to remote when you're ready to submit a PR. -- Do not commit your jslib changes in the client repo. Your changes to the client and your changes to jslib should stay completely separate. -- When submitting a client PR that depends on a jslib PR, please include a link to the jslib PR so that the reviewer knows there are jslib changes. - -### Updating jslib on a feature branch - -If you've submitted a client PR and a jslib PR, your jslib PR will be approved and merged first. You then need to update jslib on your client PR. - -1. If you've symlinked the client's jslib directory following the steps above, you'll need to delete that symlink and then run `npm run sub:init`. -2. Update the jslib submodule: - - if you're working on your own fork, run `git submodule update --remote --reference upstream`. - - if you're working on a branch on the official repo, run `npm run sub:update` -3. To check you've done this correctly, you can `cd` into your jslib directory and run `git log`. You should see your recent changes in the log. This will also show you the most recent commit hash, which should match the most recent commit hash on [Github](https://github.com/bitwarden/jslib). -4. Add your changes: `git add jslib` -5. Commit your changes: `git commit -m "update jslib version"` -6. Push your changes: `git push` - -Once this is complete, your client PR will be ready for final review and merging. - -### Updating jslib on a client directly - -If you've made changes to jslib without needing to make any changes to the client, then you may be asked to update jslib on the client. This is similar to the above process, except that you'll be creating a new client branch and PR solely for the jslib update. - -1. Make sure your local client repo is up to date -2. Create a new branch: `git checkout -b update-jslib` -3. Follow the steps above -4. Create a new PR to the client repo. Please include a link to your jslib PR so that reviewers know why you're updating jslib. - -## Merge Conflicts - -At times when you need to perform a `git merge master` into your feature or local branch, and there are conflicting version references to the _jslib_ repo from your other clients, you will not be able to use the traditional merge or stage functions you would normally use for a file. - -To resolve you must use either `git reset` or update the index directly using `git update-index`. You can use (depending on whether you have symlink'd jslib) one of the following: - -```bash -git reset master -- jslib -git reset master@{upstream} -- jslib -git reset HEAD -- jslib -git reset MERGE_HEAD -- jslib -``` - -Those should automatically stage the change and reset the jslib submodule back to where it needs to be (generally at the latest version from `master`). - -The other option is to update the index directly using the plumbing command git update-index. To do that, you need to know that an object of type gitlink (i.e., directory entry in a parent repository that points to a submodule) is 0160000. You can figure it out from `git ls-files -s` or the following reference (see "1110 (gitlink)" under 4-bit object type): https://github.com/gitster/git/blob/master/Documentation/technical/index-format.txt - -To use that approach, figure out the hash you want to set the submodule to, then run, e.g.: - -`git update-index --cacheinfo 0160000,533da4ea00703f4ad6d5518e1ce81d20261c40c0,jslib` - -see: [https://stackoverflow.com/questions/26617838/how-to-resolve-git-submodule-conflict-if-submodule-is-not-initialized](https://stackoverflow.com/questions/26617838/how-to-resolve-git-submodule-conflict-if-submodule-is-not-initialized) diff --git a/libs/README.md b/libs/README.md index f9a5f2e71c..0614a6cfbc 100644 --- a/libs/README.md +++ b/libs/README.md @@ -1,9 +1,5 @@ [![Github Workflow build on master](https://github.com/bitwarden/jslib/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/bitwarden/jslib/actions/workflows/build.yml?query=branch:master) -> **Archived** -> -> This repository is archived, please go to https://github.com/bitwarden/clients for future development. - # Bitwarden JavaScript Library Common code referenced across Bitwarden JavaScript projects. diff --git a/libs/angular/jest.config.js b/libs/angular/jest.config.js index 989e702e60..0268a45054 100644 --- a/libs/angular/jest.config.js +++ b/libs/angular/jest.config.js @@ -4,7 +4,7 @@ const { compilerOptions } = require("./tsconfig"); module.exports = { name: "angular", - displayName: "angular tests", + displayName: "libs/angular tests", preset: "jest-preset-angular", testMatch: ["**/+(*.)+(spec).+(ts)"], setupFilesAfterEnv: ["/spec/test.ts"], diff --git a/libs/angular/package-lock.json b/libs/angular/package-lock.json deleted file mode 100644 index 7b2465bf1a..0000000000 --- a/libs/angular/package-lock.json +++ /dev/null @@ -1,654 +0,0 @@ -{ - "name": "@bitwarden/jslib-angular", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "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" - } - }, - "../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" - } - }, - "node_modules/@angular/animations": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.14.tgz", - "integrity": "sha512-1BR5u32auVePvXNNP96DB2008V+Ku0OGqeZQl2h4XA9xzES/Zk5WllIJZXqRmWMRBVARfXsfb0RdMty9gcaVjA==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0" - }, - "peerDependencies": { - "@angular/core": "12.2.14" - } - }, - "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.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.14.tgz", - "integrity": "sha512-ffYUYdwZETmFJw0AcWY30WsaWBhJxj/zSmFXWjgEGEGZH56zwbbNwfMZOYZ1jz4haAVxGu+TdXsOl2yMGzN7jQ==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0" - }, - "peerDependencies": { - "@angular/core": "12.2.14", - "rxjs": "^6.5.3 || ^7.0.0" - } - }, - "node_modules/@angular/compiler": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.14.tgz", - "integrity": "sha512-dwmZi+n66IUzRFlGWu9mjXq170ZEsaDvlNLZzaPgs6vZTa4Kt7PWvIF/Y7TMvnVv/uqNG6kOhfmOkf6rfz1Gjg==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0" - } - }, - "node_modules/@angular/core": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.14.tgz", - "integrity": "sha512-dlVk7yqUHL2R/eCmM8LsWuxhEBfzg0y1zHt0UqCuFwlCoiw+IG4HFy4OlZEUw9NUEZJSv0aDv3sWqxLkvK5vvg==", - "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.14", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.14.tgz", - "integrity": "sha512-/9/gSJUBXVRVdRnzgJnALAQZYJATuGDMkFC9ms9DEMG4PMAhe9x4if1lJjN6noz5RAom3qNuVBNWaYAPUxlcBQ==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0" - }, - "peerDependencies": { - "@angular/common": "12.2.14", - "@angular/core": "12.2.14", - "@angular/platform-browser": "12.2.14", - "rxjs": "^6.5.3 || ^7.0.0" - } - }, - "node_modules/@angular/platform-browser": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.14.tgz", - "integrity": "sha512-fWcE2rnJ3ZCISa1oPfsIDV7FBZBoLFEdDuMXAiDYqDPKvF/E5U5nHrS+K4SlLAi094bMobtTOReNWl/Ienniyw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0" - }, - "peerDependencies": { - "@angular/animations": "12.2.14", - "@angular/common": "12.2.14", - "@angular/core": "12.2.14" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.14.tgz", - "integrity": "sha512-0NPF7mS91Tct8rBmOLZPmnLSuS4kbLHXo6eTgrg80OC0vlzBiQwGDVW4X3KncCoX9CpevaGJCdSMc+uPNsFOUQ==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0" - }, - "peerDependencies": { - "@angular/common": "12.2.14", - "@angular/compiler": "12.2.14", - "@angular/core": "12.2.14", - "@angular/platform-browser": "12.2.14" - } - }, - "node_modules/@angular/router": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.14.tgz", - "integrity": "sha512-yP5grSnqBvc4vNhtYdcxDgDYIebUKs5f0xyFkUJM5030UnQ0CV45tBsSxHMkQbPZucIfOuxpRy8xy5+4GizuwQ==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0" - }, - "peerDependencies": { - "@angular/common": "12.2.14", - "@angular/core": "12.2.14", - "@angular/platform-browser": "12.2.14", - "rxjs": "^6.5.3 || ^7.0.0" - } - }, - "node_modules/@bitwarden/jslib-common": { - "resolved": "../common", - "link": true - }, - "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/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/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/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/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/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/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/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==", - "dev": true - }, - "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/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "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/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/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "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/rxjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", - "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", - "dependencies": { - "tslib": "~2.1.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "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/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "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" - } - } - }, - "dependencies": { - "@angular/animations": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.14.tgz", - "integrity": "sha512-1BR5u32auVePvXNNP96DB2008V+Ku0OGqeZQl2h4XA9xzES/Zk5WllIJZXqRmWMRBVARfXsfb0RdMty9gcaVjA==", - "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.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.14.tgz", - "integrity": "sha512-ffYUYdwZETmFJw0AcWY30WsaWBhJxj/zSmFXWjgEGEGZH56zwbbNwfMZOYZ1jz4haAVxGu+TdXsOl2yMGzN7jQ==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@angular/compiler": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.14.tgz", - "integrity": "sha512-dwmZi+n66IUzRFlGWu9mjXq170ZEsaDvlNLZzaPgs6vZTa4Kt7PWvIF/Y7TMvnVv/uqNG6kOhfmOkf6rfz1Gjg==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@angular/core": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.14.tgz", - "integrity": "sha512-dlVk7yqUHL2R/eCmM8LsWuxhEBfzg0y1zHt0UqCuFwlCoiw+IG4HFy4OlZEUw9NUEZJSv0aDv3sWqxLkvK5vvg==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@angular/forms": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.14.tgz", - "integrity": "sha512-/9/gSJUBXVRVdRnzgJnALAQZYJATuGDMkFC9ms9DEMG4PMAhe9x4if1lJjN6noz5RAom3qNuVBNWaYAPUxlcBQ==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@angular/platform-browser": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.14.tgz", - "integrity": "sha512-fWcE2rnJ3ZCISa1oPfsIDV7FBZBoLFEdDuMXAiDYqDPKvF/E5U5nHrS+K4SlLAi094bMobtTOReNWl/Ienniyw==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.14.tgz", - "integrity": "sha512-0NPF7mS91Tct8rBmOLZPmnLSuS4kbLHXo6eTgrg80OC0vlzBiQwGDVW4X3KncCoX9CpevaGJCdSMc+uPNsFOUQ==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@angular/router": { - "version": "12.2.14", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.14.tgz", - "integrity": "sha512-yP5grSnqBvc4vNhtYdcxDgDYIebUKs5f0xyFkUJM5030UnQ0CV45tBsSxHMkQbPZucIfOuxpRy8xy5+4GizuwQ==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@bitwarden/jslib-common": { - "version": "file:../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" - } - }, - "@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 - }, - "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 - }, - "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" - } - }, - "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 - }, - "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" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "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" - } - }, - "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==", - "dev": true - }, - "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" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "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 - }, - "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 - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "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" - } - }, - "rxjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", - "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", - "requires": { - "tslib": "~2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "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" - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "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" - } - } - } -} diff --git a/libs/angular/package.json b/libs/angular/package.json index 47cfa4a4fa..b0eefd7bcd 100644 --- a/libs/angular/package.json +++ b/libs/angular/package.json @@ -17,25 +17,7 @@ "build": "npm run clean && tsc", "build:watch": "npm run clean && tsc -watch" }, - "devDependencies": { - "@types/duo_web_sdk": "^2.7.1", - "rimraf": "^3.0.2", - "typescript": "4.3.5" - }, "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" + "@bitwarden/jslib-common": "file:../common" } } diff --git a/libs/common/jest.config.js b/libs/common/jest.config.js index f2208cb7e3..9e8c9211c0 100644 --- a/libs/common/jest.config.js +++ b/libs/common/jest.config.js @@ -4,7 +4,7 @@ const { compilerOptions } = require("./tsconfig"); module.exports = { name: "common", - displayName: "common jslib tests", + displayName: "libs/common tests", preset: "ts-jest", testEnvironment: "jsdom", testMatch: ["**/+(*.)+(spec).+(ts)"], diff --git a/libs/common/package-lock.json b/libs/common/package-lock.json deleted file mode 100644 index 2bf7f067e4..0000000000 --- a/libs/common/package-lock.json +++ /dev/null @@ -1,956 +0,0 @@ -{ - "name": "@bitwarden/jslib-common", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "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" - } - }, - "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/@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/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/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/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/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/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/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/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/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/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/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/browser-hrtime": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/browser-hrtime/-/browser-hrtime-1.1.8.tgz", - "integrity": "sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==" - }, - "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/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/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/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/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/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/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/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/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/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "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/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/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/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.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "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/papaparse": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", - "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==" - }, - "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/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/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/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "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/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/readable-stream/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/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "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/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.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_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_decoder/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/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/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/tough-cookie/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/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "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/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/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/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "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/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "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/zxcvbn": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", - "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" - } - }, - "dependencies": { - "@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" - } - }, - "@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/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/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/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/zxcvbn": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.1.tgz", - "integrity": "sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==", - "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" - } - }, - "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==" - }, - "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 - }, - "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==" - }, - "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" - } - }, - "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" - } - }, - "browser-hrtime": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/browser-hrtime/-/browser-hrtime-1.1.8.tgz", - "integrity": "sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==" - }, - "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 - }, - "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==" - }, - "es6-denodeify": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", - "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" - }, - "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==" - }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "requires": { - "original": "^1.0.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" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "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" - } - }, - "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==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "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" - } - }, - "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" - } - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "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" - } - }, - "papaparse": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", - "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==" - }, - "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 - }, - "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==" - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "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" - }, - "dependencies": { - "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==" - } - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "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" - } - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "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" - }, - "dependencies": { - "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==" - } - } - }, - "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" - } - }, - "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" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - } - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true - }, - "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" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "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" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "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" - } - }, - "zxcvbn": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", - "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" - } - } -} diff --git a/libs/common/package.json b/libs/common/package.json index 14df9a75df..1c03329a7b 100644 --- a/libs/common/package.json +++ b/libs/common/package.json @@ -16,27 +16,5 @@ "clean": "rimraf dist/**/*", "build": "npm run clean && tsc", "build:watch": "npm run clean && tsc -watch" - }, - "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" - }, - "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" } } diff --git a/libs/components/jest.config.js b/libs/components/jest.config.js index 525f2a670a..8aa314bd35 100644 --- a/libs/components/jest.config.js +++ b/libs/components/jest.config.js @@ -4,7 +4,7 @@ const { compilerOptions } = require("./tsconfig"); module.exports = { name: "angular", - displayName: "component library tests", + displayName: "libs/components tests", preset: "jest-preset-angular", testMatch: ["**/+(*.)+(spec).+(ts)"], setupFilesAfterEnv: ["/spec/test.ts"], diff --git a/libs/components/src/button/button.directive.spec.ts b/libs/components/src/button/button.directive.spec.ts index 6bdcfe7012..a7c3024e48 100644 --- a/libs/components/src/button/button.directive.spec.ts +++ b/libs/components/src/button/button.directive.spec.ts @@ -10,20 +10,18 @@ describe("Button", () => { let buttonDebugElement: DebugElement; let linkDebugElement: DebugElement; - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ButtonModule], - declarations: [TestApp], - }); + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ButtonModule], + declarations: [TestApp], + }); - TestBed.compileComponents(); - fixture = TestBed.createComponent(TestApp); - testAppComponent = fixture.debugElement.componentInstance; - buttonDebugElement = fixture.debugElement.query(By.css("button")); - linkDebugElement = fixture.debugElement.query(By.css("a")); - }) - ); + TestBed.compileComponents(); + fixture = TestBed.createComponent(TestApp); + testAppComponent = fixture.debugElement.componentInstance; + buttonDebugElement = fixture.debugElement.query(By.css("button")); + linkDebugElement = fixture.debugElement.query(By.css("a")); + })); it("should apply classes based on type", () => { testAppComponent.buttonType = "primary"; diff --git a/libs/components/src/form-field/error-summary.stories.ts b/libs/components/src/form-field/error-summary.stories.ts index fc6e37f2db..1bd866e589 100644 --- a/libs/components/src/form-field/error-summary.stories.ts +++ b/libs/components/src/form-field/error-summary.stories.ts @@ -1,10 +1,11 @@ import { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from "@angular/forms"; import { Meta, moduleMetadata, Story } from "@storybook/angular"; -import { InputModule } from "src/input/input.module"; -import { I18nMockService } from "src/utils/i18n-mock.service"; import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { InputModule } from "src/input/input.module"; +import { I18nMockService } from "src/utils/i18n-mock.service"; + import { ButtonModule } from "../button"; import { BitFormFieldComponent } from "./form-field.component"; diff --git a/libs/components/src/form-field/form-field.stories.ts b/libs/components/src/form-field/form-field.stories.ts index 0be496608c..ae4d9cf5dd 100644 --- a/libs/components/src/form-field/form-field.stories.ts +++ b/libs/components/src/form-field/form-field.stories.ts @@ -8,11 +8,12 @@ import { Validators, } from "@angular/forms"; import { Meta, moduleMetadata, Story } from "@storybook/angular"; -import { InputModule } from "src/input/input.module"; -import { I18nMockService } from "src/utils/i18n-mock.service"; import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { InputModule } from "src/input/input.module"; +import { I18nMockService } from "src/utils/i18n-mock.service"; + import { ButtonModule } from "../button"; import { BitFormFieldComponent } from "./form-field.component"; diff --git a/libs/components/src/menu/menu.component.spec.ts b/libs/components/src/menu/menu.component.spec.ts index 51120465e3..29f3a86069 100644 --- a/libs/components/src/menu/menu.component.spec.ts +++ b/libs/components/src/menu/menu.component.spec.ts @@ -16,19 +16,17 @@ describe("Menu", () => { // The overlay is created outside the root debugElement, so we need to query its parent const getBitMenuPanel = () => document.querySelector(".bit-menu-panel"); - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [MenuModule], - declarations: [TestApp], - }); + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [MenuModule], + declarations: [TestApp], + }); - TestBed.compileComponents(); + TestBed.compileComponents(); - fixture = TestBed.createComponent(TestApp); - fixture.detectChanges(); - }) - ); + fixture = TestBed.createComponent(TestApp); + fixture.detectChanges(); + })); it("should open when the trigger is clicked", async () => { const buttonDebugElement = fixture.debugElement.query(By.directive(MenuTriggerForDirective)); diff --git a/libs/components/tailwind.config.base.js b/libs/components/tailwind.config.base.js index 245dec233e..fd0caec749 100644 --- a/libs/components/tailwind.config.base.js +++ b/libs/components/tailwind.config.base.js @@ -3,7 +3,7 @@ const colors = require("tailwindcss/colors"); module.exports = { prefix: "tw-", - content: ["./src/**/*.{html,ts}", "./jslib/components/src/**/*.{html,ts}"], + content: ["./src/**/*.{html,ts}", "../../libs/components/src/**/*.{html,ts}"], safelist: [], corePlugins: { preflight: false }, theme: { diff --git a/libs/electron/package-lock.json b/libs/electron/package-lock.json deleted file mode 100644 index 608d05614d..0000000000 --- a/libs/electron/package-lock.json +++ /dev/null @@ -1,2393 +0,0 @@ -{ - "name": "@bitwarden/jslib-electron", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "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" - } - }, - "../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" - } - }, - "node_modules/@bitwarden/jslib-common": { - "resolved": "../common", - "link": true - }, - "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/@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/@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/@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/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/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": { - "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/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/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/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/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/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-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-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/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/cacheable-request/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/cacheable-request/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/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/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/conf": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.1.tgz", - "integrity": "sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q==", - "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/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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/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/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/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": "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/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/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==", - "optional": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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/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/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "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-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-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-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/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/electron-updater/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/electron-updater/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron-updater/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/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/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/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/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/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/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/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/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "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/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/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/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/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/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/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/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-agent/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "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/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/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/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "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/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==", - "optional": true - }, - "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/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "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/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/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/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-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/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/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/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/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/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "optional": 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/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/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/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/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/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/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/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/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/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/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/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "optional": true, - "engines": { - "node": ">= 0.4" - } - }, - "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/onetime/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/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/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/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/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/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/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" - }, - "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/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/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/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/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/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/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/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/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/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/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/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "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/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/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/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/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/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/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/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/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/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "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/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/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-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/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "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==" - }, - "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" - } - } - }, - "dependencies": { - "@bitwarden/jslib-common": { - "version": "file:../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" - } - }, - "@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" - } - }, - "@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" - } - }, - "@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/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==" - }, - "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" - } - }, - "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" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "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 - }, - "boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "optional": 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" - } - }, - "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-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-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" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "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" - } - }, - "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" - } - }, - "conf": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.1.tgz", - "integrity": "sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q==", - "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": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "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" - } - }, - "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==" - }, - "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" - } - }, - "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": "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==" - }, - "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==", - "optional": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "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 - }, - "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" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "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-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-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" - } - }, - "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": { - "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" - } - }, - "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" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "optional": true - }, - "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" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" - }, - "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 - }, - "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 - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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==" - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "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" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "optional": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "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==" - }, - "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==", - "optional": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "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" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "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==" - }, - "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-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 - }, - "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" - } - }, - "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==" - }, - "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" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "optional": 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=" - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "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" - } - }, - "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" - } - }, - "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==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "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==" - }, - "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.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, - "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" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "optional": true - }, - "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" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - } - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "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==" - }, - "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 - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "optional": 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" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "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==" - }, - "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 - }, - "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==" - }, - "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" - } - }, - "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==" - }, - "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" - } - }, - "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" - } - }, - "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==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "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 - }, - "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 - } - } - }, - "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 - }, - "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" - } - }, - "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" - } - }, - "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==" - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "optional": true - }, - "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==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "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-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" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "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==" - }, - "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" - } - } - } -} diff --git a/libs/electron/package.json b/libs/electron/package.json index 892446d540..fa2a472ada 100644 --- a/libs/electron/package.json +++ b/libs/electron/package.json @@ -17,16 +17,7 @@ "build": "npm run clean && tsc", "build:watch": "npm run clean && tsc -watch" }, - "devDependencies": { - "@types/node": "^16.11.12", - "rimraf": "^3.0.2", - "typescript": "4.3.5" - }, "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" + "@bitwarden/jslib-common": "file:../common" } } diff --git a/libs/node/package-lock.json b/libs/node/package-lock.json deleted file mode 100644 index ab1b64a326..0000000000 --- a/libs/node/package-lock.json +++ /dev/null @@ -1,1183 +0,0 @@ -{ - "name": "@bitwarden/jslib-node", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@bitwarden/jslib-node", - "version": "0.0.0", - "license": "GPL-3.0", - "dependencies": { - "@bitwarden/jslib-common": "file:../common", - "chalk": "^4.1.1", - "commander": "7.2.0", - "form-data": "4.0.0", - "https-proxy-agent": "5.0.0", - "inquirer": "8.0.0", - "lowdb": "1.0.0", - "node-fetch": "^2.6.1" - }, - "devDependencies": { - "@types/inquirer": "^7.3.1", - "@types/lowdb": "^1.0.10", - "@types/node": "^16.11.12", - "@types/node-fetch": "^2.5.10", - "rimraf": "^3.0.2", - "typescript": "4.3.5" - } - }, - "../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": "^0.10.0", - "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": "^0.9.7", - "@types/papaparse": "^5.2.5", - "@types/tldjs": "^2.3.0", - "@types/zxcvbn": "^4.4.1", - "rimraf": "^3.0.2", - "typescript": "4.3.5" - } - }, - "node_modules/@bitwarden/jslib-common": { - "resolved": "../common", - "link": true - }, - "node_modules/@types/inquirer": { - "version": "7.3.3", - "integrity": "sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==", - "dev": true, - "dependencies": { - "@types/through": "*", - "rxjs": "^6.4.0" - } - }, - "node_modules/@types/lodash": { - "version": "4.14.175", - "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==", - "dev": true - }, - "node_modules/@types/lowdb": { - "version": "1.0.11", - "integrity": "sha512-h99VMxvTuz+VsXUVCCJo4dsps4vbkXwvU71TpmxDoiBU24bJ0VBygIHgmMm+UPoQIFihmV6euRik4z8J7XDJWg==", - "dev": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.5.12", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/through": { - "version": "0.0.30", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/chardet": { - "version": "0.7.0", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.2", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.0", - "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/graceful-fs": { - "version": "4.2.8", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/inquirer": { - "version": "8.0.0", - "integrity": "sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.6", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/lodash": { - "version": "4.17.21", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lowdb": { - "version": "1.0.0", - "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", - "dependencies": { - "graceful-fs": "^4.1.3", - "is-promise": "^2.1.0", - "lodash": "4", - "pify": "^3.0.0", - "steno": "^0.4.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.50.0", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.33", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dependencies": { - "mime-db": "1.50.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/node-fetch": { - "version": "2.6.5", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "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/run-async": { - "version": "2.4.1", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/signal-exit": { - "version": "3.0.5", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - }, - "node_modules/steno": { - "version": "0.4.4", - "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", - "dependencies": { - "graceful-fs": "^4.1.3" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "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/strip-ansi": { - "version": "6.0.1", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/through": { - "version": "2.3.8", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "node_modules/tmp": { - "version": "0.0.33", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/tslib": { - "version": "1.14.1", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/type-fest": { - "version": "0.21.3", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/webidl-conversions": { - "version": "3.0.1", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - }, - "dependencies": { - "@bitwarden/jslib-common": { - "version": "file:../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": "^0.9.7", - "@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": "^0.10.0", - "papaparse": "^5.3.0", - "rimraf": "^3.0.2", - "rxjs": "^7.4.0", - "tldjs": "^2.3.1", - "typescript": "4.3.5", - "zxcvbn": "^4.4.2" - } - }, - "@types/inquirer": { - "version": "7.3.3", - "integrity": "sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==", - "dev": true, - "requires": { - "@types/through": "*", - "rxjs": "^6.4.0" - } - }, - "@types/lodash": { - "version": "4.14.175", - "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==", - "dev": true - }, - "@types/lowdb": { - "version": "1.0.11", - "integrity": "sha512-h99VMxvTuz+VsXUVCCJo4dsps4vbkXwvU71TpmxDoiBU24bJ0VBygIHgmMm+UPoQIFihmV6euRik4z8J7XDJWg==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true - }, - "@types/node-fetch": { - "version": "2.5.12", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/through": { - "version": "0.0.30", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "agent-base": { - "version": "6.0.2", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "asynckit": { - "version": "0.4.0", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "balanced-match": { - "version": "1.0.2", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chardet": { - "version": "0.7.0", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "cli-cursor": { - "version": "3.1.0", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "color-convert": { - "version": "2.0.1", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "7.2.0", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "concat-map": { - "version": "0.0.1", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "debug": { - "version": "4.3.2", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "delayed-stream": { - "version": "1.0.0", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "emoji-regex": { - "version": "8.0.0", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "external-editor": { - "version": "3.1.0", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "figures": { - "version": "3.2.0", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "form-data": { - "version": "4.0.0", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs.realpath": { - "version": "1.0.0", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.2.0", - "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" - } - }, - "graceful-fs": { - "version": "4.2.8", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "has-flag": { - "version": "4.0.0", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "https-proxy-agent": { - "version": "5.0.0", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "iconv-lite": { - "version": "0.4.24", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inflight": { - "version": "1.0.6", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "inquirer": { - "version": "8.0.0", - "integrity": "sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.6", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-promise": { - "version": "2.2.2", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "lodash": { - "version": "4.17.21", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lowdb": { - "version": "1.0.0", - "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", - "requires": { - "graceful-fs": "^4.1.3", - "is-promise": "^2.1.0", - "lodash": "4", - "pify": "^3.0.0", - "steno": "^0.4.1" - } - }, - "mime-db": { - "version": "1.50.0", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" - }, - "mime-types": { - "version": "2.1.33", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "requires": { - "mime-db": "1.50.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "minimatch": { - "version": "3.0.4", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mute-stream": { - "version": "0.0.8", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node-fetch": { - "version": "2.6.5", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "once": { - "version": "1.4.0", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "path-is-absolute": { - "version": "1.0.1", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "restore-cursor": { - "version": "3.1.0", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "3.0.2", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "rxjs": { - "version": "6.6.7", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safer-buffer": { - "version": "2.1.2", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "signal-exit": { - "version": "3.0.5", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - }, - "steno": { - "version": "0.4.4", - "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", - "requires": { - "graceful-fs": "^4.1.3" - } - }, - "string-width": { - "version": "4.2.3", - "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" - } - }, - "strip-ansi": { - "version": "6.0.1", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "through": { - "version": "2.3.8", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "tmp": { - "version": "0.0.33", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tr46": { - "version": "0.0.3", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "tslib": { - "version": "1.14.1", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "type-fest": { - "version": "0.21.3", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "whatwg-url": { - "version": "5.0.0", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/libs/node/package.json b/libs/node/package.json index b5c6c225c5..1505d924ed 100644 --- a/libs/node/package.json +++ b/libs/node/package.json @@ -17,22 +17,7 @@ "build": "npm run clean && tsc", "build:watch": "npm run clean && tsc -watch" }, - "devDependencies": { - "@types/inquirer": "^7.3.1", - "@types/lowdb": "^1.0.10", - "@types/node": "^16.11.12", - "@types/node-fetch": "^2.5.10", - "rimraf": "^3.0.2", - "typescript": "4.3.5" - }, "dependencies": { - "@bitwarden/jslib-common": "file:../common", - "chalk": "^4.1.1", - "commander": "7.2.0", - "form-data": "4.0.0", - "https-proxy-agent": "5.0.0", - "inquirer": "8.0.0", - "lowdb": "1.0.0", - "node-fetch": "^2.6.1" + "@bitwarden/jslib-common": "file:../common" } } diff --git a/libs/package-lock.json b/libs/package-lock.json index b1602c125e..535189c985 100644 --- a/libs/package-lock.json +++ b/libs/package-lock.json @@ -13,2614 +13,33 @@ "@bitwarden/jslib-common": "file:common", "@bitwarden/jslib-electron": "file:electron", "@bitwarden/jslib-node": "file:node" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^12.2.13", - "@angular/compiler-cli": "^12.2.13", - "@angular/platform-browser-dynamic": "^12.2.13", - "@fluffy-spoon/substitute": "^1.202.0", - "@types/jest": "^27.4.1", - "@types/node": "^16.11.12", - "@typescript-eslint/eslint-plugin": "^5.10.1", - "@typescript-eslint/parser": "^5.10.1", - "commander": "7.2.0", - "concurrently": "^6.1.0", - "eslint": "^8.7.0", - "eslint-config-prettier": "^8.3.0", - "eslint-import-resolver-typescript": "^2.5.0", - "eslint-plugin-import": "^2.25.4", - "form-data": "4.0.0", - "husky": "^7.0.4", - "jest": "^27.5.1", - "jest-preset-angular": "^11.1.1", - "jsdom": "^16.5.3", - "lint-staged": "^12.1.2", - "node-forge": "^1.2.0", - "nodemon": "^2.0.7", - "prettier": "2.5.1", - "rimraf": "^3.0.2", - "rxjs": "^7.4.0", - "ts-loader": "^8.1.0", - "ts-node": "^10.4.0", - "tsconfig-paths": "^3.12.0", - "ttypescript": "^1.5.12", - "typemoq": "^2.1.0", - "typescript": "4.3.5", - "typescript-transform-paths": "^2.2.3", - "zone.js": "0.11.4" - }, - "engines": { - "node": "~16", - "npm": "~8" } }, "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" + "@bitwarden/jslib-common": "file:../common" } }, "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" - } + "license": "GPL-3.0" }, "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" + "@bitwarden/jslib-common": "file:../common" } }, "node": { "version": "0.0.0", "license": "GPL-3.0", "dependencies": { - "@bitwarden/jslib-common": "file:../common", - "chalk": "^4.1.1", - "commander": "7.2.0", - "form-data": "4.0.0", - "https-proxy-agent": "5.0.0", - "inquirer": "8.0.0", - "lowdb": "1.0.0", - "node-fetch": "^2.6.1" - }, - "devDependencies": { - "@types/inquirer": "^7.3.1", - "@types/lowdb": "^1.0.10", - "@types/node": "^16.11.12", - "@types/node-fetch": "^2.5.10", - "rimraf": "^3.0.2", - "typescript": "4.3.5" + "@bitwarden/jslib-common": "file:../common" } }, - "node_modules/@ampproject/remapping": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.0.1.tgz", - "integrity": "sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "1.0.0", - "sourcemap-codec": "1.4.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular-devkit/architect": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.17.tgz", - "integrity": "sha512-uUQcHcLbPvr9adALQSLU1MTDduVUR2kZAHi2e7SmL9ioel84pPVXBoD0WpSBeUMKwPiDs3TQDaxDB49hl0nBSQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "12.2.17", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/architect/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/@angular-devkit/architect/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/@angular-devkit/build-angular": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.17.tgz", - "integrity": "sha512-uc3HGHVQyatqQ/M53oxYBvhz0jx0hgdc7WT+L56GLHvgz7Ct2VEbpWaMfwHkFfE1F1iHkIgnTKHKWacJl1yQIg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "1.0.1", - "@angular-devkit/architect": "0.1202.17", - "@angular-devkit/build-optimizer": "0.1202.17", - "@angular-devkit/build-webpack": "0.1202.17", - "@angular-devkit/core": "12.2.17", - "@babel/core": "7.14.8", - "@babel/generator": "7.14.8", - "@babel/helper-annotate-as-pure": "7.14.5", - "@babel/plugin-proposal-async-generator-functions": "7.14.7", - "@babel/plugin-transform-async-to-generator": "7.14.5", - "@babel/plugin-transform-runtime": "7.14.5", - "@babel/preset-env": "7.14.8", - "@babel/runtime": "7.14.8", - "@babel/template": "7.14.5", - "@discoveryjs/json-ext": "0.5.3", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "12.2.17", - "ansi-colors": "4.1.1", - "babel-loader": "8.2.2", - "browserslist": "^4.9.1", - "cacache": "15.2.0", - "caniuse-lite": "^1.0.30001032", - "circular-dependency-plugin": "5.2.2", - "copy-webpack-plugin": "9.0.1", - "core-js": "3.16.0", - "critters": "0.0.12", - "css-loader": "6.2.0", - "css-minimizer-webpack-plugin": "3.0.2", - "esbuild-wasm": "0.13.8", - "find-cache-dir": "3.3.1", - "glob": "7.1.7", - "https-proxy-agent": "5.0.0", - "inquirer": "8.1.2", - "karma-source-map-support": "1.4.0", - "less": "4.1.1", - "less-loader": "10.0.1", - "license-webpack-plugin": "2.3.20", - "loader-utils": "2.0.0", - "mini-css-extract-plugin": "2.4.2", - "minimatch": "3.0.4", - "open": "8.2.1", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.1.0", - "postcss": "8.3.6", - "postcss-import": "14.0.2", - "postcss-loader": "6.1.1", - "postcss-preset-env": "6.7.0", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "4.0.0", - "rxjs": "6.6.7", - "sass": "1.36.0", - "sass-loader": "12.1.0", - "semver": "7.3.5", - "source-map-loader": "3.0.0", - "source-map-support": "0.5.19", - "style-loader": "3.2.1", - "stylus": "0.54.8", - "stylus-loader": "6.1.0", - "terser": "5.7.1", - "terser-webpack-plugin": "5.1.4", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.3.0", - "webpack": "5.50.0", - "webpack-dev-middleware": "5.0.0", - "webpack-dev-server": "3.11.3", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "1.5.2" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "optionalDependencies": { - "esbuild": "0.13.8" - }, - "peerDependencies": { - "@angular/compiler-cli": "^12.0.0", - "@angular/localize": "^12.0.0", - "@angular/service-worker": "^12.0.0", - "karma": "^6.3.0", - "ng-packagr": "^12.0.0", - "protractor": "^7.0.0", - "tailwindcss": "^2.0.0", - "tslint": "^6.1.0", - "typescript": "~4.2.3 || ~4.3.2" - }, - "peerDependenciesMeta": { - "@angular/localize": { - "optional": true - }, - "@angular/service-worker": { - "optional": true - }, - "karma": { - "optional": true - }, - "ng-packagr": { - "optional": true - }, - "protractor": { - "optional": true - }, - "tailwindcss": { - "optional": true - }, - "tslint": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular/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/@angular-devkit/build-angular/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/@angular-devkit/build-angular/node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/es-module-lexer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", - "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular/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/@angular-devkit/build-angular/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/@angular-devkit/build-angular/node_modules/rxjs/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/@angular-devkit/build-angular/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/@angular-devkit/build-angular/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/@angular-devkit/build-angular/node_modules/webpack": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", - "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@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.8.0", - "es-module-lexer": "^0.7.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "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.2.0", - "webpack-sources": "^3.2.0" - }, - "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/@angular-devkit/build-angular/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/@angular-devkit/build-optimizer": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.17.tgz", - "integrity": "sha512-1qWGWw7cCNADB4LZ/zjiSK0GLmr2kebYyNG0KutCE8GNVxv2h6w6dJP6t1C/BgskRuBPCAhvE+lEKN8ljSutag==", - "dev": true, - "dependencies": { - "source-map": "0.7.3", - "tslib": "2.3.0", - "typescript": "4.3.5" - }, - "bin": { - "build-optimizer": "src/build-optimizer/cli.js" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "webpack": "^5.30.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.17.tgz", - "integrity": "sha512-z7FW43DJ4p8UZwbFRmMrh2ohqhI2Wtdg3+FZiTnl4opb3zYheGiNxPlTuiyKjG21JUkGCdthkkBLCNfaUU0U/Q==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1202.17", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^3.1.4" - } - }, - "node_modules/@angular-devkit/build-webpack/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/@angular-devkit/build-webpack/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/@angular-devkit/core": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.17.tgz", - "integrity": "sha512-PyOY7LGUPPd6rakxUYbfQN6zAdOCMCouVp5tERY1WTdMdEiuULOtHsPee8kNbh75pD59KbJNU+fwozPRMuIm5g==", - "dev": true, - "dependencies": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/core/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/@angular-devkit/core/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/@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/cdk/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/@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/compiler-cli/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/@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/@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "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.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", - "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.8", - "@babel/helpers": "^7.14.8", - "@babel/parser": "^7.14.8", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.8", - "@babel/types": "^7.14.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.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/core/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/generator": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", - "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.8", - "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-annotate-as-pure": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", - "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "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-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", - "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/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-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "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-function-name/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/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-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "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-module-transforms/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/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "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-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.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/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/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/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/helpers/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/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/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", - "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz", - "integrity": "sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "dependencies": { - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", - "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/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/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz", - "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.7", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.5", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.14.5", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.8", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.15.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/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/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", - "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@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.10", - "@babel/types": "^7.17.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, "node_modules/@bitwarden/jslib-angular": { "resolved": "angular", "link": true @@ -2636,34281 +55,29 @@ "node_modules/@bitwarden/jslib-node": { "resolved": "node", "link": true - }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@csstools/convert-colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", - "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/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/@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/globals": { - "version": "13.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", - "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@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/@fluffy-spoon/substitute": { - "version": "1.208.0", - "resolved": "https://registry.npmjs.org/@fluffy-spoon/substitute/-/substitute-1.208.0.tgz", - "integrity": "sha512-BU5vKRoK4OYlKzDtyg4HbtWnUNLOvV0ntqEZIphz+mq2G0HlVFywwJ7M+FbIcnJVDbUReS01FyL5x8R01r7zBg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/substitute-js#section-contribute" - } - }, - "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/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/source-map/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/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/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/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz", - "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "node_modules/@jsdevtools/coverage-istanbul-loader": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", - "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", - "dev": true, - "dependencies": { - "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.3", - "loader-utils": "^2.0.0", - "merge-source-map": "^1.1.0", - "schema-utils": "^2.7.0" - } - }, - "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/@microsoft/signalr/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/@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/@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": "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/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "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/@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/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", - "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/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/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==", - "dev": true, - "dependencies": { - "@types/through": "*", - "rxjs": "^6.4.0" - } - }, - "node_modules/@types/inquirer/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/@types/inquirer/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/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "27.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz", - "integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==", - "dev": true, - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "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/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", - "dev": true - }, - "node_modules/@types/lowdb": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@types/lowdb/-/lowdb-1.0.11.tgz", - "integrity": "sha512-h99VMxvTuz+VsXUVCCJo4dsps4vbkXwvU71TpmxDoiBU24bJ0VBygIHgmMm+UPoQIFihmV6euRik4z8J7XDJWg==", - "dev": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "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/node": { - "version": "16.11.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", - "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/node-forge": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.0.2.tgz", - "integrity": "sha512-J1OkeZGaW0y9Y7xD49Ja8O82B9l5nZDeoYuGWqIOYPAf9LR+xF23k9ILdzv8dH+2H033fx3D5oiA0GlmicI+sg==", - "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/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", - "dev": true - }, - "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/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "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/webpack-sources": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", - "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.6.1" - } - }, - "node_modules/@types/webpack-sources/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/@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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", - "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/type-utils": "5.23.0", - "@typescript-eslint/utils": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", - "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", - "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", - "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", - "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", - "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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", - "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", - "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", - "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.23.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/@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/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "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/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "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==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.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": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "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/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", - "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "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-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "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": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "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/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "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-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "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/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.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/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/autoprefixer/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/autoprefixer/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/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/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/babel-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/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-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", - "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.4", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/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-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", - "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.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/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "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/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "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==", - "dev": true, - "optional": true, - "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==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/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/body-parser/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/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "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/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/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/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "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.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "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-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/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "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/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", - "dev": true, - "dependencies": { - "@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/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/cacheable-request/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/cacheable-request/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/cacheable-request/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/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/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001339", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001339.tgz", - "integrity": "sha512-Es8PiVqCe+uXdms0Gu5xP5PF2bxLR7OBp3wUzUnuO7OHzhOfCyg3hdiGWVPVxhiuniOzng+hTc1u3fEQ0TlkSQ==", - "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": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "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/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/circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.1" - } - }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.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/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==", - "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": "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/cli-truncate/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/cli-truncate/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/cli-truncate/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/cli-truncate/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/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" - } - }, - "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/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==" - }, - "node_modules/colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", - "dev": true - }, - "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/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/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/compression/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/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/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/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/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/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/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/config-chain/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true - }, - "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/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/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==", - "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/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/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/copy-webpack-plugin/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/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/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/copy-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/core-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz", - "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", - "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", - "dev": true, - "dependencies": { - "browserslist": "^4.20.3", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "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/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/critters": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.12.tgz", - "integrity": "sha512-ujxKtKc/mWpjrOKeaACTaQ1aP0O31M0ZPWhfl85jZF1smPU4Ivb9va5Ox2poif4zVJQQo0LCFlzGtEZAsCAPcw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^4.1.3", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - } - }, - "node_modules/critters/node_modules/postcss": { - "version": "8.4.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", - "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.3", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/critters/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/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": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "node_modules/css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "bin": { - "css-blank-pseudo": "cli.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/css-blank-pseudo/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-blank-pseudo/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-blank-pseudo/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/css-declaration-sorter": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", - "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "bin": { - "css-has-pseudo": "cli.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/css-has-pseudo/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/css-has-pseudo/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-has-pseudo/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/css-has-pseudo/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/css-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz", - "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "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.1.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-minimizer-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==", - "dev": true, - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/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/css-minimizer-webpack-plugin/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/css-minimizer-webpack-plugin/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/css-minimizer-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/css-minimizer-webpack-plugin/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/css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", - "dev": true, - "dependencies": { - "css": "^2.0.0" - } - }, - "node_modules/css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "bin": { - "css-prefers-color-scheme": "cli.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/css-prefers-color-scheme/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-prefers-color-scheme/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-prefers-color-scheme/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/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-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/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/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/css/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/cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", - "dev": true - }, - "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/cssnano": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", - "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.7", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", - "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.2.2", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.1", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.4", - "postcss-merge-rules": "^5.1.1", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.2", - "postcss-minify-selectors": "^5.2.0", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.1", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "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/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "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/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/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/default-gateway/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/default-gateway/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/default-gateway/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "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": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "devOptional": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/del/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/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/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "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/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "devOptional": true - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "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/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "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-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "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/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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-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/duo_web_sdk": { - "version": "2.7.0", - "resolved": "git+ssh://git@github.com/duosecurity/duo_web_sdk.git#f43ff8f1325f8630d0cff1cd9fb0df13d22cf28d", - "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/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "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-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-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.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", - "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/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-updater/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/electron-updater/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/electron/node_modules/@types/node": { - "version": "14.18.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.16.tgz", - "integrity": "sha512-X3bUMdK/VmvrWdoTkz+VCn6nwKwrKCFTHtqwBIaQJNx4RUIBBUFXM00bqPz/DsDd+Icjmzm6/tyYZzeGVqb6/Q==" - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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=", - "devOptional": true, - "engines": { - "node": ">= 0.8" - } - }, - "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": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "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/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz", - "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "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.2", - "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", - "regexp.prototype.flags": "^1.4.1", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "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, - "peer": true - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "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/esbuild": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.8.tgz", - "integrity": "sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "optionalDependencies": { - "esbuild-android-arm64": "0.13.8", - "esbuild-darwin-64": "0.13.8", - "esbuild-darwin-arm64": "0.13.8", - "esbuild-freebsd-64": "0.13.8", - "esbuild-freebsd-arm64": "0.13.8", - "esbuild-linux-32": "0.13.8", - "esbuild-linux-64": "0.13.8", - "esbuild-linux-arm": "0.13.8", - "esbuild-linux-arm64": "0.13.8", - "esbuild-linux-mips64le": "0.13.8", - "esbuild-linux-ppc64le": "0.13.8", - "esbuild-netbsd-64": "0.13.8", - "esbuild-openbsd-64": "0.13.8", - "esbuild-sunos-64": "0.13.8", - "esbuild-windows-32": "0.13.8", - "esbuild-windows-64": "0.13.8", - "esbuild-windows-arm64": "0.13.8" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz", - "integrity": "sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/esbuild-darwin-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz", - "integrity": "sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz", - "integrity": "sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz", - "integrity": "sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz", - "integrity": "sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/esbuild-linux-32": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz", - "integrity": "sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz", - "integrity": "sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-arm": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz", - "integrity": "sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz", - "integrity": "sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz", - "integrity": "sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz", - "integrity": "sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz", - "integrity": "sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz", - "integrity": "sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ] - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz", - "integrity": "sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/esbuild-sunos-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz", - "integrity": "sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ] - }, - "node_modules/esbuild-wasm": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.13.8.tgz", - "integrity": "sha512-UbD+3nloiSpJWXTCInZQrqPe8Y+RLfDkY/5kEHiXsw/lmaEvibe69qTzQu16m5R9je/0bF7VYQ5jaEOq0z9lLA==", - "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz", - "integrity": "sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz", - "integrity": "sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz", - "integrity": "sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "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-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "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==", - "devOptional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/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/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/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, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.2.3", - "@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.2", - "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.1.2", - "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-import-resolver-typescript/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/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/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/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/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/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.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", - "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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/eslint/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/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.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "dependencies": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "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/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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/eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "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/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/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/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/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/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "node_modules/express/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/express/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/express/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==", - "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/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/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/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "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/fetch-cookie/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/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "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==", - "dev": true, - "optional": true - }, - "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/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/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/finalhandler/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/find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "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/flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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/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-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "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==", - "devOptional": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "devOptional": 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-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "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/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/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "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-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.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "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": "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/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/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/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "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==", - "devOptional": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "devOptional": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "devOptional": 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-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "dependencies": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "node_modules/hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.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==", - "dev": true, - "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/hpack.js/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==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "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-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.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==", - "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/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-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "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==", - "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/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/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "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": "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/inquirer": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", - "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.3.0", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, - "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/ip": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.7.tgz", - "integrity": "sha512-SLm2ERgmBGag79RfrIknk+40ZOJCgUBpCQTl3WE2YER21VR0W3Vt/OAXXaYLSU0AIcBqWnytoTwk2ZcTbxH0xg==", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "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-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "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": "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/is-ci/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/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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": "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/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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-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-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-in-cwd/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-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-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-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "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-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/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/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/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/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/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/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/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/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-preset-angular": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-11.1.2.tgz", - "integrity": "sha512-qPvOP6wnLP8M01TDVSa3UC3PcDWxoj87T58mWEp5yWlWPrXBJ6rhnTEI+HPmZLyehwlK686+O/49hwFRVXFP0A==", - "dev": true, - "dependencies": { - "bs-logger": "^0.2.6", - "esbuild-wasm": "0.14.11", - "jest-environment-jsdom": "^27.0.0", - "pretty-format": "^27.0.0", - "ts-jest": "^27.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "optionalDependencies": { - "esbuild": "0.14.11" - }, - "peerDependencies": { - "@angular-devkit/build-angular": ">=0.1002.4", - "@angular/compiler-cli": ">=10.0.0", - "@angular/core": ">=10.0.0", - "@angular/platform-browser-dynamic": ">=10.0.0" - } - }, - "node_modules/jest-preset-angular/node_modules/esbuild": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.11.tgz", - "integrity": "sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "optionalDependencies": { - "esbuild-android-arm64": "0.14.11", - "esbuild-darwin-64": "0.14.11", - "esbuild-darwin-arm64": "0.14.11", - "esbuild-freebsd-64": "0.14.11", - "esbuild-freebsd-arm64": "0.14.11", - "esbuild-linux-32": "0.14.11", - "esbuild-linux-64": "0.14.11", - "esbuild-linux-arm": "0.14.11", - "esbuild-linux-arm64": "0.14.11", - "esbuild-linux-mips64le": "0.14.11", - "esbuild-linux-ppc64le": "0.14.11", - "esbuild-linux-s390x": "0.14.11", - "esbuild-netbsd-64": "0.14.11", - "esbuild-openbsd-64": "0.14.11", - "esbuild-sunos-64": "0.14.11", - "esbuild-windows-32": "0.14.11", - "esbuild-windows-64": "0.14.11", - "esbuild-windows-arm64": "0.14.11" - } - }, - "node_modules/jest-preset-angular/node_modules/esbuild-android-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz", - "integrity": "sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-darwin-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz", - "integrity": "sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-darwin-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz", - "integrity": "sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-freebsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz", - "integrity": "sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-freebsd-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz", - "integrity": "sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-linux-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz", - "integrity": "sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-linux-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz", - "integrity": "sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-linux-arm": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz", - "integrity": "sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-linux-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz", - "integrity": "sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-linux-mips64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz", - "integrity": "sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-linux-ppc64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz", - "integrity": "sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-netbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz", - "integrity": "sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-openbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz", - "integrity": "sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-sunos-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz", - "integrity": "sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-wasm": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.11.tgz", - "integrity": "sha512-9e1R6hv0hiU+BkJI2edqUuWfXUbOP2Mox+Ijl/uY1vLLlSsunkrcADqD/4Rz+VCEDzw6ecscJM+uJqR2fRmEUg==", - "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-preset-angular/node_modules/esbuild-windows-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz", - "integrity": "sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-windows-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz", - "integrity": "sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/jest-preset-angular/node_modules/esbuild-windows-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz", - "integrity": "sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/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/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "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/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-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/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "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-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "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/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": "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/karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "dependencies": { - "source-map-support": "^0.5.5" - } - }, - "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/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "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/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/less": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", - "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^1.10.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^2.5.2", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.1.tgz", - "integrity": "sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA==", - "dev": true, - "dependencies": { - "klona": "^2.0.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/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, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/less/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, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/less/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/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/license-webpack-plugin": { - "version": "2.3.20", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz", - "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==", - "dev": true, - "dependencies": { - "@types/webpack-sources": "^0.1.5", - "webpack-sources": "^1.2.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } - } - }, - "node_modules/lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/lint-staged": { - "version": "12.4.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.4.1.tgz", - "integrity": "sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg==", - "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/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/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/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/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/listr2/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/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/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "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==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": 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.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "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/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "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-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/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/lowdb": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", - "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", - "dependencies": { - "graceful-fs": "^4.1.3", - "is-promise": "^2.1.0", - "lodash": "4", - "pify": "^3.0.0", - "steno": "^0.4.1" - }, - "engines": { - "node": ">=4" - } - }, - "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/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/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "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-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", - "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" - } - }, - "node_modules/mem/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", - "dev": true, - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/memory-fs/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==", - "dev": true, - "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/memory-fs/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==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "node_modules/merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/merge-source-map/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/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/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "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==", - "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.4.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz", - "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==", - "dev": true, - "dependencies": { - "schema-utils": "^3.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/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/mini-css-extract-plugin/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/mini-css-extract-plugin/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/mini-css-extract-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/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "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/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-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/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/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true, - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "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/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "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, - "optional": true - }, - "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-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/node-fetch/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/node-fetch/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/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-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, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", - "dev": true - }, - "node_modules/nodemon": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz", - "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/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/nodemon/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/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nodemon/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/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "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-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "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-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/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/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "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-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "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-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "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/open": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", - "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/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/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "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/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-locate/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/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/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/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "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/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/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/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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/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/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "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/parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "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-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "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/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/piscina": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.1.0.tgz", - "integrity": "sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg==", - "dev": true, - "dependencies": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0" - }, - "optionalDependencies": { - "nice-napi": "^1.0.2" - } - }, - "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/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/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/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/portfinder/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==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", - "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", - "dev": true, - "dependencies": { - "colorette": "^1.2.2", - "nanoid": "^3.1.23", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - } - }, - "node_modules/postcss-attribute-case-insensitive/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-attribute-case-insensitive/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-attribute-case-insensitive/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/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-color-functional-notation": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", - "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-functional-notation/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-functional-notation/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-functional-notation/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/postcss-color-gray": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", - "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", - "dev": true, - "dependencies": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-gray/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-gray/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-gray/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/postcss-color-hex-alpha": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", - "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-hex-alpha/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-hex-alpha/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-hex-alpha/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/postcss-color-mod-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", - "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", - "dev": true, - "dependencies": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-mod-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-mod-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-mod-function/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/postcss-color-rebeccapurple": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", - "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-rebeccapurple/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-rebeccapurple/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-rebeccapurple/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/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-custom-media": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", - "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-custom-media/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-custom-media/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-media/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/postcss-custom-properties": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", - "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-custom-properties/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-custom-properties/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-properties/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/postcss-custom-selectors": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", - "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-custom-selectors/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-custom-selectors/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-custom-selectors/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-custom-selectors/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/postcss-dir-pseudo-class": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", - "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-dir-pseudo-class/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-dir-pseudo-class/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/postcss-discard-comments": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", - "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-double-position-gradients": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", - "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-double-position-gradients/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-double-position-gradients/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-double-position-gradients/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/postcss-env-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", - "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-env-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-env-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-env-function/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/postcss-focus-visible": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", - "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-focus-visible/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-focus-visible/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-focus-visible/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/postcss-focus-within": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", - "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-focus-within/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-focus-within/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-focus-within/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/postcss-font-variant": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", - "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-font-variant/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-font-variant/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-font-variant/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/postcss-gap-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", - "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-gap-properties/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-gap-properties/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-gap-properties/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/postcss-image-set-function": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", - "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-image-set-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-image-set-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-image-set-function/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/postcss-import": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", - "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-initial": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", - "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-initial/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-initial/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-initial/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/postcss-lab-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", - "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", - "dev": true, - "dependencies": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-lab-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-lab-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-lab-function/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/postcss-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", - "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-logical/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-logical/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-logical/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/postcss-media-minmax": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", - "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-media-minmax/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-media-minmax/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-media-minmax/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/postcss-merge-longhand": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", - "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", - "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", - "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "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-nesting": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", - "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-nesting/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-nesting/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-nesting/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/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", - "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", - "dev": true, - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-overflow-shorthand": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", - "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-overflow-shorthand/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-overflow-shorthand/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-overflow-shorthand/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/postcss-page-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", - "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-page-break/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-page-break/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-page-break/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/postcss-place": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", - "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-place/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-place/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-place/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/postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", - "dev": true, - "dependencies": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-preset-env/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-preset-env/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-preset-env/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/postcss-pseudo-class-any-link": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", - "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-pseudo-class-any-link/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/postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", - "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-replace-overflow-wrap/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-replace-overflow-wrap/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-replace-overflow-wrap/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/postcss-selector-matches": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", - "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-selector-matches/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-selector-matches/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-matches/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/postcss-selector-not": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", - "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-selector-not/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-selector-not/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-not/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/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-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "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/postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", - "dev": true, - "dependencies": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=6.14.4" - } - }, - "node_modules/postcss/node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "node_modules/postinstall-build": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.3.tgz", - "integrity": "sha512-vPvPe8TKgp4FLgY3+DfxCE5PIfoXBK2lyLfNCxsRbDsV6vS4oU5RG/IWxrblMn6heagbnMED3MemUQllQ2bQUg==", - "deprecated": "postinstall-build's behavior is now built into npm! You should migrate off of postinstall-build and use the new `prepare` lifecycle script with npm 5.0.0 or greater.", - "dev": true, - "bin": { - "postinstall-build": "cli.js" - } - }, - "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.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "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/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": 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/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "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/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "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/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/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "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/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/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/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==", - "dev": true, - "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/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/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "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/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "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-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/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", - "dev": true, - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" - }, - "engines": { - "node": ">=8.9" - }, - "peerDependencies": { - "rework": "1.0.1", - "rework-visit": "1.0.0" - }, - "peerDependenciesMeta": { - "rework": { - "optional": true - }, - "rework-visit": { - "optional": true - } - } - }, - "node_modules/resolve-url-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/resolve-url-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/resolve-url-loader/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/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "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/roarr/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/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "engines": { - "node": ">=0.12.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/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sass": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.36.0.tgz", - "integrity": "sha512-fQzEjipfOv5kh930nu3Imzq3ie/sGDc/4KtQMJlt7RRdrkQSfe37Bwi/Rf/gfuYHsIuE1fIlDMvpyMcEwjnPvg==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/sass-loader": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", - "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", - "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", - "sass": "^1.3.0", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "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/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/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/schema-utils/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/schema-utils/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/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/selfsigned/node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/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/send/node_modules/debug/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/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "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/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/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/serve-index/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/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/serve-index/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/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.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=", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "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/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "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": "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/slice-ansi/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/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/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/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/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/snapdragon/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/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs-client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.0.tgz", - "integrity": "sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "eventsource": "^1.1.0", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://tidelift.com/funding/github/npm/sockjs-client" - } - }, - "node_modules/sockjs-client/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/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "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/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", - "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.2", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/source-map-loader/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==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/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-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "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/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": 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/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/steno": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", - "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", - "dependencies": { - "graceful-fs": "^4.1.3" - } - }, - "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==", - "dev": true, - "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==", - "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/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-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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-width/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/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/style-loader": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", - "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", - "dev": true, - "dependencies": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" - } - }, - "node_modules/stylus-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.1.0.tgz", - "integrity": "sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.5", - "klona": "^2.0.4", - "normalize-path": "^3.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "stylus": ">=0.52.4", - "webpack": "^5.0.0" - } - }, - "node_modules/stylus/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/stylus/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/stylus/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/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": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "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/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", - "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", - "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", - "dev": true, - "dependencies": { - "jest-worker": "^27.0.2", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/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/terser-webpack-plugin/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/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-webpack-plugin/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/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/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "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/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "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=" - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "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.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "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-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "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/ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-loader": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz", - "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "*" - } - }, - "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "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/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/tsconfig-paths/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/tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - }, - "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/ttypescript": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.13.tgz", - "integrity": "sha512-KT/RBfGGlVJFqEI8cVvI3nMsmYcFvPSZh8bU0qX+pAwbi7/ABmYkzn7l/K8skw0xmYjVCoyaV6WLsBQxdadybQ==", - "dev": true, - "dependencies": { - "resolve": ">=1.9.0" - }, - "bin": { - "ttsc": "bin/tsc", - "ttsserver": "bin/tsserver" - }, - "peerDependencies": { - "ts-node": ">=8.0.2", - "typescript": ">=3.2.2" - } - }, - "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/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-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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/typemoq": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typemoq/-/typemoq-2.1.0.tgz", - "integrity": "sha512-DtRNLb7x8yCTv/KHlwes+NI+aGb4Vl1iPC63Hhtcvk1DpxSAZzKWQv0RQFY0jX2Uqj0SDBNl8Na4e6MV6TNDgw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "circular-json": "^0.3.1", - "lodash": "^4.17.4", - "postinstall-build": "^5.0.1" - }, - "engines": { - "node": ">=6.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/typescript-transform-paths": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/typescript-transform-paths/-/typescript-transform-paths-2.2.4.tgz", - "integrity": "sha512-i+/sgp3rw1ZronMCm2TKGBy1dlvN88Kd8CCb+HWnOE8+Hv0uIVnbC8xM5AD2t1JBCWabEhuH9p3n8DOVi0+R6g==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - }, - "peerDependencies": { - "typescript": ">=3.6.5" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "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": "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/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "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/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/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.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/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "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/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "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/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.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": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/webpack": { - "version": "5.72.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", - "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", - "dev": true, - "peer": 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.3", - "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-even-better-errors": "^2.3.1", - "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-dev-middleware": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz", - "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==", - "dev": true, - "dependencies": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/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-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "dependencies": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/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==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-dev-server/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/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==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/webpack-dev-server/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/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==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/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==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/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==", - "dev": true, - "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/webpack-dev-server/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/webpack-dev-server/node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-dev-server/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/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==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/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=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/webpack-dev-server/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-log/node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-log/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "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": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/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/webpack-subresource-integrity": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", - "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", - "dev": true, - "dependencies": { - "webpack-sources": "^1.3.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "html-webpack-plugin": ">= 2.21.0 < 5", - "webpack": ">= 1.12.11 < 6" - }, - "peerDependenciesMeta": { - "html-webpack-plugin": { - "optional": true - } - } - }, - "node_modules/webpack/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, - "peer": 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/webpack/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, - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/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, - "peer": true - }, - "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, - "peer": 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, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack/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, - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "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-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "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/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": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "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/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "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==" - }, - "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.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "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": "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/yargs/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/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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=" - }, - "node/node_modules/inquirer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.0.0.tgz", - "integrity": "sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.6", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } }, "dependencies": { - "@ampproject/remapping": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.0.1.tgz", - "integrity": "sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "1.0.0", - "sourcemap-codec": "1.4.8" - } - }, - "@angular-devkit/architect": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.17.tgz", - "integrity": "sha512-uUQcHcLbPvr9adALQSLU1MTDduVUR2kZAHi2e7SmL9ioel84pPVXBoD0WpSBeUMKwPiDs3TQDaxDB49hl0nBSQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.17", - "rxjs": "6.6.7" - }, - "dependencies": { - "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" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/build-angular": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.17.tgz", - "integrity": "sha512-uc3HGHVQyatqQ/M53oxYBvhz0jx0hgdc7WT+L56GLHvgz7Ct2VEbpWaMfwHkFfE1F1iHkIgnTKHKWacJl1yQIg==", - "dev": true, - "requires": { - "@ampproject/remapping": "1.0.1", - "@angular-devkit/architect": "0.1202.17", - "@angular-devkit/build-optimizer": "0.1202.17", - "@angular-devkit/build-webpack": "0.1202.17", - "@angular-devkit/core": "12.2.17", - "@babel/core": "7.14.8", - "@babel/generator": "7.14.8", - "@babel/helper-annotate-as-pure": "7.14.5", - "@babel/plugin-proposal-async-generator-functions": "7.14.7", - "@babel/plugin-transform-async-to-generator": "7.14.5", - "@babel/plugin-transform-runtime": "7.14.5", - "@babel/preset-env": "7.14.8", - "@babel/runtime": "7.14.8", - "@babel/template": "7.14.5", - "@discoveryjs/json-ext": "0.5.3", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "12.2.17", - "ansi-colors": "4.1.1", - "babel-loader": "8.2.2", - "browserslist": "^4.9.1", - "cacache": "15.2.0", - "caniuse-lite": "^1.0.30001032", - "circular-dependency-plugin": "5.2.2", - "copy-webpack-plugin": "9.0.1", - "core-js": "3.16.0", - "critters": "0.0.12", - "css-loader": "6.2.0", - "css-minimizer-webpack-plugin": "3.0.2", - "esbuild": "0.13.8", - "esbuild-wasm": "0.13.8", - "find-cache-dir": "3.3.1", - "glob": "7.1.7", - "https-proxy-agent": "5.0.0", - "inquirer": "8.1.2", - "karma-source-map-support": "1.4.0", - "less": "4.1.1", - "less-loader": "10.0.1", - "license-webpack-plugin": "2.3.20", - "loader-utils": "2.0.0", - "mini-css-extract-plugin": "2.4.2", - "minimatch": "3.0.4", - "open": "8.2.1", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.1.0", - "postcss": "8.3.6", - "postcss-import": "14.0.2", - "postcss-loader": "6.1.1", - "postcss-preset-env": "6.7.0", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "4.0.0", - "rxjs": "6.6.7", - "sass": "1.36.0", - "sass-loader": "12.1.0", - "semver": "7.3.5", - "source-map-loader": "3.0.0", - "source-map-support": "0.5.19", - "style-loader": "3.2.1", - "stylus": "0.54.8", - "stylus-loader": "6.1.0", - "terser": "5.7.1", - "terser-webpack-plugin": "5.1.4", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.3.0", - "webpack": "5.50.0", - "webpack-dev-middleware": "5.0.0", - "webpack-dev-server": "3.11.3", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "1.5.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true - }, - "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-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": {} - }, - "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "es-module-lexer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", - "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", - "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 - }, - "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" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "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": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", - "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@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.8.0", - "es-module-lexer": "^0.7.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "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.2.0", - "webpack-sources": "^3.2.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 - } - } - }, - "@angular-devkit/build-optimizer": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.17.tgz", - "integrity": "sha512-1qWGWw7cCNADB4LZ/zjiSK0GLmr2kebYyNG0KutCE8GNVxv2h6w6dJP6t1C/BgskRuBPCAhvE+lEKN8ljSutag==", - "dev": true, - "requires": { - "source-map": "0.7.3", - "tslib": "2.3.0", - "typescript": "4.3.5" - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.17.tgz", - "integrity": "sha512-z7FW43DJ4p8UZwbFRmMrh2ohqhI2Wtdg3+FZiTnl4opb3zYheGiNxPlTuiyKjG21JUkGCdthkkBLCNfaUU0U/Q==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1202.17", - "rxjs": "6.6.7" - }, - "dependencies": { - "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" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/core": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.17.tgz", - "integrity": "sha512-PyOY7LGUPPd6rakxUYbfQN6zAdOCMCouVp5tERY1WTdMdEiuULOtHsPee8kNbh75pD59KbJNU+fwozPRMuIm5g==", - "dev": true, - "requires": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "dependencies": { - "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" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@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" - }, - "dependencies": { - "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 - } - } - }, - "@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" - }, - "dependencies": { - "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 - } - } - }, - "@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" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@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.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true - }, - "@babel/core": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", - "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.8", - "@babel/helpers": "^7.14.8", - "@babel/parser": "^7.14.8", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.8", - "@babel/types": "^7.14.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.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 - }, - "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/generator": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", - "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", - "dev": true, - "requires": { - "@babel/types": "^7.14.8", - "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-annotate-as-pure": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", - "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "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-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - } - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - } - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", - "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "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-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "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" - }, - "dependencies": { - "@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/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-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@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" - }, - "dependencies": { - "@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/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@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-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.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/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "dependencies": { - "@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/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" - }, - "dependencies": { - "@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/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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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 - }, - "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - } - } - }, - "@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", - "dev": true - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", - "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - } - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - } - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz", - "integrity": "sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.17.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "requires": { - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", - "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "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/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/preset-env": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz", - "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.7", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.5", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.14.5", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.8", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.15.0", - "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/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", - "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - } - }, - "@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@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.10", - "@babel/types": "^7.17.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", - "dev": true, - "requires": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", - "jsesc": "^2.5.1" - } - } - } - }, - "@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, "@bitwarden/jslib-angular": { "version": "file: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": "file:../common" } }, "@bitwarden/jslib-common": { - "version": "file: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" - } + "version": "file:common" }, "@bitwarden/jslib-electron": { "version": "file: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" + "@bitwarden/jslib-common": "file:../common" } }, "@bitwarden/jslib-node": { "version": "file:node", "requires": { - "@bitwarden/jslib-common": "file:../common", - "@types/inquirer": "^7.3.1", - "@types/lowdb": "^1.0.10", - "@types/node": "^16.11.12", - "@types/node-fetch": "^2.5.10", - "chalk": "^4.1.1", - "commander": "7.2.0", - "form-data": "4.0.0", - "https-proxy-agent": "5.0.0", - "inquirer": "8.0.0", - "lowdb": "1.0.0", - "node-fetch": "^2.6.1", - "rimraf": "^3.0.2", - "typescript": "4.3.5" - }, - "dependencies": { - "inquirer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.0.0.tgz", - "integrity": "sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.6", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "@bitwarden/jslib-common": "file:../common" } - }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" - } - }, - "@csstools/convert-colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", - "dev": true - }, - "@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", - "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": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "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" - } - }, - "globals": { - "version": "13.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", - "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "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 - }, - "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" - } - }, - "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 - } - } - }, - "@fluffy-spoon/substitute": { - "version": "1.208.0", - "resolved": "https://registry.npmjs.org/@fluffy-spoon/substitute/-/substitute-1.208.0.tgz", - "integrity": "sha512-BU5vKRoK4OYlKzDtyg4HbtWnUNLOvV0ntqEZIphz+mq2G0HlVFywwJ7M+FbIcnJVDbUReS01FyL5x8R01r7zBg==", - "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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "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" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^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" - } - }, - "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 - }, - "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 - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - } - }, - "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - } - }, - "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "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 - } - } - }, - "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "dependencies": { - "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 - } - } - }, - "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - } - }, - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz", - "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "@jsdevtools/coverage-istanbul-loader": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", - "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", - "dev": true, - "requires": { - "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.3", - "loader-utils": "^2.0.0", - "merge-source-map": "^1.1.0", - "schema-utils": "^2.7.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" - }, - "dependencies": { - "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" - } - } - } - }, - "@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" - } - }, - "@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": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@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" - } - }, - "@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 - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@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.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", - "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/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/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==", - "dev": true, - "requires": { - "@types/through": "*", - "rxjs": "^6.4.0" - }, - "dependencies": { - "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" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "27.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz", - "integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==", - "dev": true, - "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "@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/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", - "dev": true - }, - "@types/lowdb": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@types/lowdb/-/lowdb-1.0.11.tgz", - "integrity": "sha512-h99VMxvTuz+VsXUVCCJo4dsps4vbkXwvU71TpmxDoiBU24bJ0VBygIHgmMm+UPoQIFihmV6euRik4z8J7XDJWg==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, - "@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/node": { - "version": "16.11.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", - "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==", - "dev": true - }, - "@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/node-forge": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.0.2.tgz", - "integrity": "sha512-J1OkeZGaW0y9Y7xD49Ja8O82B9l5nZDeoYuGWqIOYPAf9LR+xF23k9ILdzv8dH+2H033fx3D5oiA0GlmicI+sg==", - "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/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", - "dev": true - }, - "@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/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@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/webpack-sources": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", - "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "@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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", - "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/type-utils": "5.23.0", - "@typescript-eslint/utils": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", - "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.0", - "debug": "^4.3.2" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", - "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", - "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.23.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", - "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", - "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.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.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", - "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", - "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.23.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" - } - }, - "@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 - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "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": {} - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - } - }, - "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==", - "requires": { - "debug": "4" - } - }, - "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": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "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-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} - }, - "ajv-formats": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", - "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "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-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "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==", - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "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": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "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" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "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-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": 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": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "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==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==" - }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "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" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "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-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", - "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.4", - "semver": "^6.1.1" - }, - "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-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", - "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.4" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "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 - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "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==", - "dev": true, - "optional": true, - "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==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "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": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "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==" - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "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-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==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "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" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", - "dev": true, - "requires": { - "@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" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - } - } - }, - "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 - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001339", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001339.tgz", - "integrity": "sha512-Es8PiVqCe+uXdms0Gu5xP5PF2bxLR7OBp3wUzUnuO7OHzhOfCyg3hdiGWVPVxhiuniOzng+hTc1u3fEQ0TlkSQ==", - "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": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "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 - }, - "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 - }, - "circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "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 - }, - "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==", - "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": "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" - }, - "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 - }, - "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 - }, - "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" - } - } - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "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" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.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==", - "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==" - }, - "colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", - "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 - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "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": { - "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" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "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" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true - } - } - }, - "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" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, - "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==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "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" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "dev": true, - "requires": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "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-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": {} - }, - "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" - } - }, - "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 - }, - "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" - } - } - } - }, - "core-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz", - "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==", - "dev": true - }, - "core-js-compat": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", - "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", - "dev": true, - "requires": { - "browserslist": "^4.20.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "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==" - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "critters": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.12.tgz", - "integrity": "sha512-ujxKtKc/mWpjrOKeaACTaQ1aP0O31M0ZPWhfl85jZF1smPU4Ivb9va5Ox2poif4zVJQQo0LCFlzGtEZAsCAPcw==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "css-select": "^4.1.3", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - }, - "dependencies": { - "postcss": { - "version": "8.4.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", - "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", - "dev": true, - "requires": { - "nanoid": "^3.3.3", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "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 - } - } - }, - "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": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "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 - } - } - }, - "css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "css-declaration-sorter": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", - "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "dev": true, - "requires": {} - }, - "css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.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 - } - } - }, - "css-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz", - "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "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.1.0", - "semver": "^7.3.5" - } - }, - "css-minimizer-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==", - "dev": true, - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "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-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": {} - }, - "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 - }, - "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" - } - }, - "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 - } - } - }, - "css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", - "dev": true, - "requires": { - "css": "^2.0.0" - } - }, - "css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "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-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "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 - }, - "cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", - "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 - }, - "cssnano": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", - "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.2.7", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", - "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.2.2", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.1", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.4", - "postcss-merge-rules": "^5.1.1", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.2", - "postcss-minify-selectors": "^5.2.0", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.1", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "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" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "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" - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.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==", - "dev": true - }, - "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 - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "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" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "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": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "devOptional": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "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 - } - } - }, - "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 - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "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" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "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 - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "devOptional": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "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" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.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-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "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 - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "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-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" - } - }, - "duo_web_sdk": { - "version": "git+ssh://git@github.com/duosecurity/duo_web_sdk.git#f43ff8f1325f8630d0cff1cd9fb0df13d22cf28d", - "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 - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "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.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.16.tgz", - "integrity": "sha512-X3bUMdK/VmvrWdoTkz+VCn6nwKwrKCFTHtqwBIaQJNx4RUIBBUFXM00bqPz/DsDd+Icjmzm6/tyYZzeGVqb6/Q==" - } - } - }, - "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-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.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", - "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": { - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "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" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } - } - }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true - }, - "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=", - "devOptional": true - }, - "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": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "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==" - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz", - "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "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.2", - "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", - "regexp.prototype.flags": "^1.4.1", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "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, - "peer": true - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "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 - }, - "esbuild": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.8.tgz", - "integrity": "sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw==", - "dev": true, - "optional": true, - "requires": { - "esbuild-android-arm64": "0.13.8", - "esbuild-darwin-64": "0.13.8", - "esbuild-darwin-arm64": "0.13.8", - "esbuild-freebsd-64": "0.13.8", - "esbuild-freebsd-arm64": "0.13.8", - "esbuild-linux-32": "0.13.8", - "esbuild-linux-64": "0.13.8", - "esbuild-linux-arm": "0.13.8", - "esbuild-linux-arm64": "0.13.8", - "esbuild-linux-mips64le": "0.13.8", - "esbuild-linux-ppc64le": "0.13.8", - "esbuild-netbsd-64": "0.13.8", - "esbuild-openbsd-64": "0.13.8", - "esbuild-sunos-64": "0.13.8", - "esbuild-windows-32": "0.13.8", - "esbuild-windows-64": "0.13.8", - "esbuild-windows-arm64": "0.13.8" - } - }, - "esbuild-android-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz", - "integrity": "sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz", - "integrity": "sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz", - "integrity": "sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz", - "integrity": "sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz", - "integrity": "sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz", - "integrity": "sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz", - "integrity": "sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz", - "integrity": "sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz", - "integrity": "sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz", - "integrity": "sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz", - "integrity": "sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz", - "integrity": "sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz", - "integrity": "sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz", - "integrity": "sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz", - "integrity": "sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.13.8.tgz", - "integrity": "sha512-UbD+3nloiSpJWXTCInZQrqPe8Y+RLfDkY/5kEHiXsw/lmaEvibe69qTzQu16m5R9je/0bF7VYQ5jaEOq0z9lLA==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz", - "integrity": "sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz", - "integrity": "sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz", - "integrity": "sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg==", - "dev": true, - "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-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "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==", - "devOptional": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "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 - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "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, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.2.3", - "@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.2", - "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.1.2", - "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": { - "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" - } - }, - "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.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", - "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "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 - }, - "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" - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "requires": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "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 - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "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==" - }, - "eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "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" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.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" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "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==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "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=" - } - } - }, - "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 - }, - "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" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "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=" - } - } - }, - "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==", - "dev": true, - "optional": true - }, - "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" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "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 - }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "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" - } - }, - "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-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "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==", - "devOptional": true - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "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 - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "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==", - "devOptional": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "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 - }, - "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" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "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" - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "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": "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" - } - } - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "devOptional": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "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==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "devOptional": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "devOptional": 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-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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 - }, - "hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "requires": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "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-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "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" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "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==", - "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 - }, - "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-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "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==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": 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 - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "inquirer": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", - "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.3.0", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "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" - } - }, - "ip": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.7.tgz", - "integrity": "sha512-SLm2ERgmBGag79RfrIknk+40ZOJCgUBpCQTl3WE2YER21VR0W3Vt/OAXXaYLSU0AIcBqWnytoTwk2ZcTbxH0xg==", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "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-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "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": "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" - }, - "dependencies": { - "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 - } - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "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-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "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": "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 - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "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" - } - }, - "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-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" - }, - "dependencies": { - "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-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-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-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "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-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "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=" - }, - "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 - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "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 - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - } - }, - "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - } - }, - "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - } - }, - "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "dependencies": { - "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" - } - } - } - }, - "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - } - }, - "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - } - }, - "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} - }, - "jest-preset-angular": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-11.1.2.tgz", - "integrity": "sha512-qPvOP6wnLP8M01TDVSa3UC3PcDWxoj87T58mWEp5yWlWPrXBJ6rhnTEI+HPmZLyehwlK686+O/49hwFRVXFP0A==", - "dev": true, - "requires": { - "bs-logger": "^0.2.6", - "esbuild": "0.14.11", - "esbuild-wasm": "0.14.11", - "jest-environment-jsdom": "^27.0.0", - "pretty-format": "^27.0.0", - "ts-jest": "^27.0.0" - }, - "dependencies": { - "esbuild": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.11.tgz", - "integrity": "sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==", - "dev": true, - "optional": true, - "requires": { - "esbuild-android-arm64": "0.14.11", - "esbuild-darwin-64": "0.14.11", - "esbuild-darwin-arm64": "0.14.11", - "esbuild-freebsd-64": "0.14.11", - "esbuild-freebsd-arm64": "0.14.11", - "esbuild-linux-32": "0.14.11", - "esbuild-linux-64": "0.14.11", - "esbuild-linux-arm": "0.14.11", - "esbuild-linux-arm64": "0.14.11", - "esbuild-linux-mips64le": "0.14.11", - "esbuild-linux-ppc64le": "0.14.11", - "esbuild-linux-s390x": "0.14.11", - "esbuild-netbsd-64": "0.14.11", - "esbuild-openbsd-64": "0.14.11", - "esbuild-sunos-64": "0.14.11", - "esbuild-windows-32": "0.14.11", - "esbuild-windows-64": "0.14.11", - "esbuild-windows-arm64": "0.14.11" - } - }, - "esbuild-android-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz", - "integrity": "sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz", - "integrity": "sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz", - "integrity": "sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz", - "integrity": "sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz", - "integrity": "sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz", - "integrity": "sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz", - "integrity": "sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz", - "integrity": "sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz", - "integrity": "sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz", - "integrity": "sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz", - "integrity": "sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz", - "integrity": "sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz", - "integrity": "sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz", - "integrity": "sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.11.tgz", - "integrity": "sha512-9e1R6hv0hiU+BkJI2edqUuWfXUbOP2Mox+Ijl/uY1vLLlSsunkrcADqD/4Rz+VCEDzw6ecscJM+uJqR2fRmEUg==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz", - "integrity": "sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz", - "integrity": "sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz", - "integrity": "sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==", - "dev": true, - "optional": true - } - } - }, - "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true - }, - "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - } - }, - "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - } - }, - "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, - "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - } - }, - "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - } - }, - "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": { - "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-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" - } - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "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-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "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==" - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "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" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "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 - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "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==" - }, - "less": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", - "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^2.5.2", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - }, - "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, - "optional": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "less-loader": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.1.tgz", - "integrity": "sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA==", - "dev": true, - "requires": { - "klona": "^2.0.4" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "2.3.20", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz", - "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==", - "dev": true, - "requires": { - "@types/webpack-sources": "^0.1.5", - "webpack-sources": "^1.2.0" - } - }, - "lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "lint-staged": { - "version": "12.4.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.4.1.tgz", - "integrity": "sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg==", - "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": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "lilconfig": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", - "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", - "dev": true - }, - "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": { - "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" - } - }, - "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==", - "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" - } - } - } - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "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==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": 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.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "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 - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "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" - } - }, - "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": { - "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==", - "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" - } - } - } - }, - "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "dev": true - }, - "lowdb": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", - "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", - "requires": { - "graceful-fs": "^4.1.3", - "is-promise": "^2.1.0", - "lodash": "4", - "pify": "^3.0.0", - "steno": "^0.4.1" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "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" - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "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-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.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" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", - "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.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==", - "dev": true - } - } - }, - "memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", - "dev": true, - "requires": { - "fs-monkey": "1.0.3" - } - }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "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 - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "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": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "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==" - }, - "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==", - "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.4.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz", - "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==", - "dev": true, - "requires": { - "schema-utils": "^3.1.0" - }, - "dependencies": { - "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-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": {} - }, - "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 - }, - "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" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "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" - } - }, - "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-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" - } - }, - "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" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "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" - } - } - } - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true, - "optional": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "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 - }, - "needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "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 - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "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, - "optional": true - }, - "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" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "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" - } - } - } - }, - "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-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, - "optional": true - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", - "dev": true - }, - "nodemon": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz", - "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==", - "dev": true, - "requires": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.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" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "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" - } - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "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-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "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" - } - }, - "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" - } - }, - "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" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "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.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.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" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "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" - } - }, - "open": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", - "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } - } - }, - "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" - } - }, - "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" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.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" - }, - "dependencies": { - "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-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 - } - } - }, - "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" - } - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.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==" - }, - "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": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "papaparse": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", - "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" - }, - "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" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "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-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "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" - } - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "piscina": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.1.0.tgz", - "integrity": "sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg==", - "dev": true, - "requires": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0", - "nice-napi": "^1.0.2" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", - "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", - "dev": true, - "requires": { - "colorette": "^1.2.2", - "nanoid": "^3.1.23", - "source-map-js": "^0.6.2" - }, - "dependencies": { - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - } - } - }, - "postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-functional-notation": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", - "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-color-gray": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", - "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", - "dev": true, - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-color-hex-alpha": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", - "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", - "dev": true, - "requires": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-color-mod-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", - "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", - "dev": true, - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-color-rebeccapurple": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", - "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-media": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", - "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-custom-properties": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", - "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", - "dev": true, - "requires": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-custom-selectors": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", - "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.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 - } - } - }, - "postcss-dir-pseudo-class": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", - "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.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 - } - } - }, - "postcss-discard-comments": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", - "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true, - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} - }, - "postcss-double-position-gradients": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", - "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", - "dev": true, - "requires": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-env-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", - "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-focus-visible": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", - "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-focus-within": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", - "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-font-variant": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", - "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-gap-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", - "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-image-set-function": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", - "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-import": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", - "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-initial": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", - "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-lab-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", - "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", - "dev": true, - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", - "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - } - }, - "postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-media-minmax": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", - "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-merge-longhand": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", - "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - } - }, - "postcss-merge-rules": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", - "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-params": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", - "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "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-nesting": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", - "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-ordered-values": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", - "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", - "dev": true, - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-overflow-shorthand": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", - "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-page-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", - "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-place": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", - "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", - "dev": true, - "requires": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-pseudo-class-any-link": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", - "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.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 - } - } - }, - "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-replace-overflow-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", - "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-selector-matches": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", - "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "postcss-selector-not": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", - "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "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-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "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 - }, - "postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postinstall-build": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.3.tgz", - "integrity": "sha512-vPvPe8TKgp4FLgY3+DfxCE5PIfoXBK2lyLfNCxsRbDsV6vS4oU5RG/IWxrblMn6heagbnMED3MemUQllQ2bQUg==", - "dev": true - }, - "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.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "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 - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "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 - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "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" - } - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "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 - }, - "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" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "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=", - "dev": true - } - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "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==", - "dev": true, - "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" - } - }, - "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 - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "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" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "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==" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "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-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 - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.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 - } - } - }, - "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true - }, - "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" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "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" - }, - "dependencies": { - "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 - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "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==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.36.0.tgz", - "integrity": "sha512-fQzEjipfOv5kh930nu3Imzq3ie/sGDc/4KtQMJlt7RRdrkQSfe37Bwi/Rf/gfuYHsIuE1fIlDMvpyMcEwjnPvg==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0" - } - }, - "sass-loader": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", - "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", - "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==" - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "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-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": {} - }, - "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 - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - }, - "dependencies": { - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - } - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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 - } - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.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" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "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" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "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" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "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==" - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "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": "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" - }, - "dependencies": { - "ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "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" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "sockjs-client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.0.tgz", - "integrity": "sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "eventsource": "^1.1.0", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "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" - } - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "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 - }, - "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true - }, - "source-map-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", - "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.2", - "source-map-js": "^0.6.2" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "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-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "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 - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": 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" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "steno": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", - "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", - "requires": { - "graceful-fs": "^4.1.3" - } - }, - "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==", - "dev": true, - "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==", - "dev": true - } - } - }, - "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-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "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" - }, - "dependencies": { - "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==" - } - } - }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "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 - }, - "style-loader": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", - "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==", - "dev": true, - "requires": {} - }, - "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - } - }, - "stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", - "dev": true, - "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "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 - } - } - }, - "stylus-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.1.0.tgz", - "integrity": "sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw==", - "dev": true, - "requires": { - "fast-glob": "^3.2.5", - "klona": "^2.0.4", - "normalize-path": "^3.0.0" - } - }, - "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": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.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 - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "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" - } - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "terser": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", - "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "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 - } - } - }, - "terser-webpack-plugin": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", - "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", - "dev": true, - "requires": { - "jest-worker": "^27.0.2", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.0" - }, - "dependencies": { - "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-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": {} - }, - "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 - }, - "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" - } - }, - "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 - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "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 - }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "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.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "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-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "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" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } - }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "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 - }, - "ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - } - }, - "ts-loader": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz", - "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - } - }, - "ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", - "yn": "3.1.1" - }, - "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - } - } - }, - "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" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - }, - "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 - } - } - }, - "ttypescript": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.13.tgz", - "integrity": "sha512-KT/RBfGGlVJFqEI8cVvI3nMsmYcFvPSZh8bU0qX+pAwbi7/ABmYkzn7l/K8skw0xmYjVCoyaV6WLsBQxdadybQ==", - "dev": true, - "requires": { - "resolve": ">=1.9.0" - } - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "optional": true - }, - "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-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "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==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "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" - } - }, - "typemoq": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typemoq/-/typemoq-2.1.0.tgz", - "integrity": "sha512-DtRNLb7x8yCTv/KHlwes+NI+aGb4Vl1iPC63Hhtcvk1DpxSAZzKWQv0RQFY0jX2Uqj0SDBNl8Na4e6MV6TNDgw==", - "dev": true, - "requires": { - "circular-json": "^0.3.1", - "lodash": "^4.17.4", - "postinstall-build": "^5.0.1" - } - }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true - }, - "typescript-transform-paths": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/typescript-transform-paths/-/typescript-transform-paths-2.2.4.tgz", - "integrity": "sha512-i+/sgp3rw1ZronMCm2TKGBy1dlvN88Kd8CCb+HWnOE8+Hv0uIVnbC8xM5AD2t1JBCWabEhuH9p3n8DOVi0+R6g==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "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": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "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" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "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 - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "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" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "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": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "webpack": { - "version": "5.72.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", - "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", - "dev": true, - "peer": 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.3", - "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-even-better-errors": "^2.3.1", - "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": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "peer": 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-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, - "peer": true, - "requires": {} - }, - "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "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, - "peer": true - }, - "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, - "peer": 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, - "peer": true - }, - "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, - "peer": true - } - } - }, - "webpack-dev-middleware": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz", - "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==", - "dev": true, - "requires": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "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-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": {} - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "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 - }, - "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" - } - } - } - }, - "webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "requires": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "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-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-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "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 - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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 - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.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==", - "dev": true, - "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" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "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": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "webpack-subresource-integrity": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", - "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", - "dev": true, - "requires": { - "webpack-sources": "^1.3.0" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.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-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "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" - } - }, - "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": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, - "requires": {} - }, - "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 - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "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==" - }, - "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.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "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" - }, - "dependencies": { - "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 - } - } - }, - "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 - }, - "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" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "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/libs/package.json b/libs/package.json index 96a3cc9363..652cf2ee06 100644 --- a/libs/package.json +++ b/libs/package.json @@ -14,61 +14,14 @@ "license": "GPL-3.0", "scripts": { "clean": "rimraf dist/**/*", - "lint": "eslint . && prettier --check .", - "lint:fix": "eslint . --fix", - "prettier": "prettier --write .", "test": "jest", "test:watch": "jest --watch", - "test:watch:all": "jest --watchAll", - "prepare": "husky install" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^12.2.13", - "@angular/compiler-cli": "^12.2.13", - "@angular/platform-browser-dynamic": "^12.2.13", - "@fluffy-spoon/substitute": "^1.202.0", - "@types/jest": "^27.4.1", - "@types/node": "^16.11.12", - "@typescript-eslint/eslint-plugin": "^5.10.1", - "@typescript-eslint/parser": "^5.10.1", - "commander": "7.2.0", - "concurrently": "^6.1.0", - "eslint": "^8.7.0", - "eslint-config-prettier": "^8.3.0", - "eslint-import-resolver-typescript": "^2.5.0", - "eslint-plugin-import": "^2.25.4", - "form-data": "4.0.0", - "husky": "^7.0.4", - "jest": "^27.5.1", - "jest-preset-angular": "^11.1.1", - "jsdom": "^16.5.3", - "lint-staged": "^12.1.2", - "node-forge": "^1.2.0", - "nodemon": "^2.0.7", - "prettier": "2.5.1", - "rimraf": "^3.0.2", - "rxjs": "^7.4.0", - "ts-loader": "^8.1.0", - "ts-node": "^10.4.0", - "tsconfig-paths": "^3.12.0", - "ttypescript": "^1.5.12", - "typemoq": "^2.1.0", - "typescript": "4.3.5", - "typescript-transform-paths": "^2.2.3", - "zone.js": "0.11.4" + "test:watch:all": "jest --watchAll" }, "dependencies": { "@bitwarden/jslib-angular": "file:angular", "@bitwarden/jslib-common": "file:common", "@bitwarden/jslib-electron": "file:electron", "@bitwarden/jslib-node": "file:node" - }, - "engines": { - "node": "~16", - "npm": "~8" - }, - "lint-staged": { - "*": "prettier --ignore-unknown --write", - "*.ts": "eslint --fix" } } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..836c156eb0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,37835 @@ +{ + "name": "@bitwarden/clients", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@bitwarden/clients", + "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", + "@koa/multer": "^3.0.0", + "@koa/router": "^10.1.1", + "@microsoft/signalr": "^5.0.17", + "@microsoft/signalr-protocol-msgpack": "^5.0.17", + "big-integer": "^1.6.51", + "bootstrap": "4.6.0", + "braintree-web-drop-in": "^1.33.1", + "browser-hrtime": "^1.1.8", + "bufferutil": "^4.0.6", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "core-js": "^3.11.0", + "date-input-polyfill": "^2.14.0", + "duo_web_sdk": "github:duosecurity/duo_web_sdk", + "https-proxy-agent": "^5.0.0", + "inquirer": "^8.2.4", + "jquery": "3.6.0", + "jsdom": "^16.7.0", + "jszip": "^3.10.0", + "koa": "^2.13.4", + "koa-bodyparser": "^4.3.0", + "koa-json": "^2.0.2", + "lowdb": "^1.0.0", + "lunr": "^2.3.9", + "mousetrap": "^1.6.5", + "multer": "^1.4.5-lts.1", + "ngx-infinite-scroll": "^10.0.1", + "ngx-toastr": "14.1.4", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "nord": "^0.2.1", + "open": "^8.4.0", + "papaparse": "^5.3.2", + "popper.js": "^1.16.1", + "proper-lockfile": "^4.1.2", + "qrious": "4.0.2", + "rxjs": "^7.5.5", + "sweetalert2": "^10.16.6", + "tldjs": "^2.3.1", + "utf-8-validate": "^5.0.9", + "web-animations-js": "^2.3.2", + "whatwg-fetch": "^3.6.2", + "zone.js": "^0.11.4", + "zxcvbn": "^4.4.2" + }, + "devDependencies": { + "@angular/compiler-cli": "^12.2.13", + "@fluffy-spoon/substitute": "^1.208.0", + "@ngtools/webpack": "^12.2.13", + "@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4", + "@types/chrome": "^0.0.139", + "@types/duo_web_sdk": "^2.7.1", + "@types/firefox-webext-browser": "^82.0.0", + "@types/inquirer": "^8.2.1", + "@types/jest": "^27.5.0", + "@types/jquery": "^3.5.14", + "@types/jsdom": "^16.2.14", + "@types/koa": "^2.13.4", + "@types/koa__multer": "^2.0.4", + "@types/koa__router": "^8.0.11", + "@types/koa-bodyparser": "^4.3.7", + "@types/koa-json": "^2.0.20", + "@types/lowdb": "^1.0.11", + "@types/lunr": "^2.3.4", + "@types/mousetrap": "^1.6.8", + "@types/node": "^16.11.12", + "@types/node-fetch": "^2.6.1", + "@types/node-forge": "^1.0.2", + "@types/node-ipc": "^9.2.0", + "@types/papaparse": "^5.3.2", + "@types/proper-lockfile": "^4.1.2", + "@types/retry": "^0.12.2", + "@types/tldjs": "^2.3.1", + "@types/webcrypto": "^0.0.28", + "@types/zxcvbn": "^4.4.1", + "@typescript-eslint/eslint-plugin": "^5.22.0", + "@typescript-eslint/parser": "^5.22.0", + "autoprefixer": "^10.4.7", + "buffer": "^6.0.3", + "clean-webpack-plugin": "^4.0.0", + "concurrently": "^7.2.1", + "copy-webpack-plugin": "^10.0.0", + "cross-env": "^7.0.3", + "css-loader": "^6.5.1", + "del": "^6.0.0", + "electron": "16.2.7", + "electron-builder": "^22.11.7", + "electron-log": "^4.4.7", + "electron-notarize": "^1.2.1", + "electron-rebuild": "^3.2.7", + "electron-reload": "^2.0.0-alpha.1", + "electron-store": "^8.0.1", + "electron-updater": "^5.0.1", + "eslint": "^8.14.0", + "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "forcefocus": "^1.1.0", + "gulp": "^4.0.2", + "gulp-filter": "^7.0.0", + "gulp-if": "^3.0.0", + "gulp-json-editor": "^2.5.5", + "gulp-replace": "^1.1.0", + "gulp-zip": "^5.1.0", + "html-loader": "^3.0.1", + "html-webpack-injector": "^1.1.4", + "html-webpack-plugin": "^5.5.0", + "husky": "^7.0.4", + "jasmine-core": "^3.7.1", + "jasmine-spec-reporter": "^7.0.0", + "jest-preset-angular": "^10.1.0", + "keytar": "^7.9.0", + "lint-staged": "^12.4.1", + "mini-css-extract-plugin": "^2.4.5", + "node-ipc": "^9.2.1", + "pkg": "5.7.0", + "postcss": "^8.4.14", + "postcss-loader": "^6.2.1", + "prettier": "^2.6.2", + "process": "^0.11.10", + "regedit": "^3.0.3", + "rimraf": "^3.0.2", + "sass": "^1.34.1", + "sass-loader": "^12.4.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.24", + "tapable": "^1.1.3", + "ts-loader": "^9.2.5", + "tsconfig-paths-webpack-plugin": "^3.5.2", + "typescript": "4.3.5", + "url": "^0.11.0", + "util": "^0.12.4", + "webcrypto-shim": "^0.1.7", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "4.6", + "webpack-node-externals": "^3.0.0" + }, + "engines": { + "node": "~16", + "npm": "~8" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "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.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "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.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "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.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true, + "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.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "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.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2" + }, + "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.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "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/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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/@babel/parser": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@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.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "peer": true + }, + "node_modules/@braintree/asset-loader": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@braintree/asset-loader/-/asset-loader-0.4.4.tgz", + "integrity": "sha512-uVhXC5dydmngmNVuDiKgfXSlz4kv4x5ytIJodI8N5SY16mRh13m/UmbQ7yH+o8DQqp50qPZ45MUHIZkXKPg85w==", + "dependencies": { + "promise-polyfill": "^8.1.3" + } + }, + "node_modules/@braintree/browser-detection": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@braintree/browser-detection/-/browser-detection-1.12.1.tgz", + "integrity": "sha512-i/54qrax5o/WbJJhsE/7qqKE594/kGhR+xSu/w13rT7Mlr/uITkWDXzxffcKQ6l6FQxK0IG0EfgT6TJpWgZcUQ==" + }, + "node_modules/@braintree/class-list": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@braintree/class-list/-/class-list-0.2.0.tgz", + "integrity": "sha512-iLXJT51jnBFuGvyTAQqZ2uwyEVwdyapyz52F5MK1Uoh2ZOiPJ5hoqI0wncyCP2KfqrgyCpOkkEaLMLb/94unGA==" + }, + "node_modules/@braintree/event-emitter": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@braintree/event-emitter/-/event-emitter-0.4.1.tgz", + "integrity": "sha512-X41357O3OXUDlnwMvS1m0GQEn3zB3s3flOBeg2J5OBvLvdJEIAVpPkblABPtsPrlciDSvfv1aSG5ixHPgFH0Zg==" + }, + "node_modules/@braintree/extended-promise": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@braintree/extended-promise/-/extended-promise-0.4.1.tgz", + "integrity": "sha512-00n7m4z+swWHoFQLHLvrIBIEoxnGUBsl3ogvX79ITpcn8CHczDwtxYy5+RhMoAraRdfN3oB+8QIpN3KOxs2Q7w==" + }, + "node_modules/@braintree/iframer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@braintree/iframer/-/iframer-1.1.0.tgz", + "integrity": "sha512-tVpr7U6u6bqeQlHreEjYMNtnHX62vLnNWziY2kQLqkWhvusPuY5DfuGEIPpWqsd+V/a1slyTQaxK6HWTlH6A/Q==" + }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz", + "integrity": "sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==" + }, + "node_modules/@braintree/uuid": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@braintree/uuid/-/uuid-0.1.0.tgz", + "integrity": "sha512-YvZJdlNcK5EnR+7M8AjgEAf4Qx696+FOSYlPfy5ePn80vODtVAUU0FxHnzKZC0og1VbDNQDDiwhthR65D4Na0g==" + }, + "node_modules/@braintree/wrap-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@braintree/wrap-promise/-/wrap-promise-2.1.0.tgz", + "integrity": "sha512-UIrJB+AfKU0CCfbMoWrsGpd2D/hBpY/SGgFI6WRHPOwhaZ3g9rz1weiJ6eb6L9KgVyunT7s2tckcPkbHw+NzeA==" + }, + "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==", + "dev": true, + "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/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/@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/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "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.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "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/@fluffy-spoon/substitute": { + "version": "1.208.0", + "resolved": "https://registry.npmjs.org/@fluffy-spoon/substitute/-/substitute-1.208.0.tgz", + "integrity": "sha512-BU5vKRoK4OYlKzDtyg4HbtWnUNLOvV0ntqEZIphz+mq2G0HlVFywwJ7M+FbIcnJVDbUReS01FyL5x8R01r7zBg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/substitute-js#section-contribute" + } + }, + "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/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "peer": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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, + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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, + "peer": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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, + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true, + "peer": true + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "peer": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "peer": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/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/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@koa/multer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@koa/multer/-/multer-3.0.0.tgz", + "integrity": "sha512-y+OQBmex5D1jIl723gAEUYcAWPEicIXppaAKw/zCMfpllQ08ZNweDPwoCLxEoatqd5pCu2XG6V8dl67JRq3RJw==", + "engines": { + "node": ">= 8" + }, + "peerDependencies": { + "multer": "*" + } + }, + "node_modules/@koa/router": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz", + "integrity": "sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==", + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.1.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "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/@malept/flatpak-bundler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@microsoft/signalr": { + "version": "5.0.17", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-5.0.17.tgz", + "integrity": "sha512-zTjFxjh67WWCe35ZipsqkktM5mM+MsckyyI2ZvFmYWR7ibpUoAyZI1DFdYfwXfsyBdlykDaW84o9lrB+9tDpaA==", + "dependencies": { + "abort-controller": "^3.0.0", + "eventsource": "^1.0.7", + "fetch-cookie": "^0.7.3", + "node-fetch": "^2.6.7", + "ws": "^6.0.0" + } + }, + "node_modules/@microsoft/signalr-protocol-msgpack": { + "version": "5.0.17", + "resolved": "https://registry.npmjs.org/@microsoft/signalr-protocol-msgpack/-/signalr-protocol-msgpack-5.0.17.tgz", + "integrity": "sha512-Gqp1Azw5nFColcwX/eLIs+N2G6/nWtYHZtMccgEv9C1PKMXZEiUPiHmvwbLfywJubtu9cyDie3Q/+VuRc9X5Xg==", + "dependencies": { + "@microsoft/signalr": ">=5.0.17", + "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==", + "dev": true, + "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/@npmcli/move-file/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/@scarf/scarf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.1.1.tgz", + "integrity": "sha512-VGbKDbk1RFIaSmdVb0cNjjWJoRWRI/Weo23AjRCC2nryO0iAS8pzsToJfPVPtVs74WHw4L1UTADNdIYRLkirZQ==", + "hasInstallScript": true + }, + "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/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "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/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "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/chrome": { + "version": "0.0.139", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.139.tgz", + "integrity": "sha512-YZDKFlSVGFp4zldJlO+PUpxMH8N9vLke0fD6K9PA+TzXxPXu8LBLo5X2dzlOs2N/n+uMdI1lw7OPT1Emop10lQ==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", + "dev": true + }, + "node_modules/@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "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/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", + "dev": true + }, + "node_modules/@types/firefox-webext-browser": { + "version": "82.0.1", + "resolved": "https://registry.npmjs.org/@types/firefox-webext-browser/-/firefox-webext-browser-82.0.1.tgz", + "integrity": "sha512-odcPKiJ34N8k53clIWen3hLvl09ja7SQ9NqtUbgmqeJ/a/ZRQiF665iXSFPcnl6cBn2XQgEg2lsUUApYNiyj+g==", + "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/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/har-format": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.8.tgz", + "integrity": "sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ==", + "dev": true + }, + "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-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", + "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/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/inquirer": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.1.tgz", + "integrity": "sha512-wKW3SKIUMmltbykg4I5JzCVzUhkuD9trD6efAmYgN2MrSntY0SMRQzEnD3mkyJ/rv9NLbTC7g3hKKE86YwEDLw==", + "dev": true, + "dependencies": { + "@types/through": "*", + "rxjs": "^7.2.0" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "dev": true, + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/jquery": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.14.tgz", + "integrity": "sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==", + "dev": true, + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/jsdom": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.14.tgz", + "integrity": "sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/parse5": "*", + "@types/tough-cookie": "*" + } + }, + "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": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", + "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/koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==", + "dev": true, + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa__multer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/koa__multer/-/koa__multer-2.0.4.tgz", + "integrity": "sha512-WRkshXhE5rpYFUbbtAjyMhdOOSdbu1XX+2AQlRNM6AZtgxd0/WXMU4lrP7e9tk5HWVTWbx8DOOsVBmfHjSGJ4w==", + "dev": true, + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa__router": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.11.tgz", + "integrity": "sha512-WXgKWpBsbS14kzmzD9LeFapOIa678h7zvUHxDwXwSx4ETKXhXLVUAToX6jZ/U7EihM7qwyD9W/BZvB0MRu7MTQ==", + "dev": true, + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-bodyparser": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/@types/koa-bodyparser/-/koa-bodyparser-4.3.7.tgz", + "integrity": "sha512-21NhEp7LjZm4zbNV5alHHmrNY4J+S7B8lYTO6CzRL8ShTMnl20Gd14dRgVhAxraLaW5iZMofox+BycbuiDvj2Q==", + "dev": true, + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "dev": true, + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-json": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@types/koa-json/-/koa-json-2.0.20.tgz", + "integrity": "sha512-RuQ1Vlpsm/EC5wo2oWCgNnwneixnSQ9aHQAE7nwnbSiCibgfUO2wwSQN6rn8SfF97cRdN9hKAtoc9KSIuiGP6Q==", + "dev": true, + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", + "dev": true + }, + "node_modules/@types/lowdb": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/lowdb/-/lowdb-1.0.11.tgz", + "integrity": "sha512-h99VMxvTuz+VsXUVCCJo4dsps4vbkXwvU71TpmxDoiBU24bJ0VBygIHgmMm+UPoQIFihmV6euRik4z8J7XDJWg==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "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/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "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/mousetrap": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.9.tgz", + "integrity": "sha512-HUAiN65VsRXyFCTicolwb5+I7FM6f72zjMWr+ajGk+YTvzBgXqa2A5U7d+rtsouAkunJ5U4Sb5lNJjo9w+nmXg==", + "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.38", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.38.tgz", + "integrity": "sha512-hjO/0K140An3GWDw2HJfq7gko3wWeznbjXgg+rzPdVzhe198hp4x2i1dgveAOEiFKd8sOilAxzoSJiVv5P/CUg==", + "dev": true + }, + "node_modules/@types/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.0.2.tgz", + "integrity": "sha512-J1OkeZGaW0y9Y7xD49Ja8O82B9l5nZDeoYuGWqIOYPAf9LR+xF23k9ILdzv8dH+2H033fx3D5oiA0GlmicI+sg==", + "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/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "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/prettier": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "dev": true, + "peer": true + }, + "node_modules/@types/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@types/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-kd4LMvcnpYkspDcp7rmXKedn8iJSCoa331zRRamUp5oanKt/CefbEGPQP7G89enz7sKD4bvsr8mHSsC8j5WOvA==", + "dev": true, + "dependencies": { + "@types/retry": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "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/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "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/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "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/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "dev": true, + "dependencies": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "node_modules/@types/webcrypto": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/@types/webcrypto/-/webcrypto-0.0.28.tgz", + "integrity": "sha512-jzAoSUvqA+183nJO/Sc73CREQJsv+p77WJdn532GqA3YXQzlwRwHhClVa7U4O8iB2sJSR7G3v6f1mJFNkwA9YQ==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz", + "integrity": "sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.27.0", + "@typescript-eslint/type-utils": "5.27.0", + "@typescript-eslint/utils": "5.27.0", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.27.0.tgz", + "integrity": "sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.27.0", + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/typescript-estree": "5.27.0", + "debug": "^4.3.4" + }, + "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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz", + "integrity": "sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/visitor-keys": "5.27.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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.27.0.tgz", + "integrity": "sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.27.0", + "debug": "^4.3.4", + "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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.0.tgz", + "integrity": "sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A==", + "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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.0.tgz", + "integrity": "sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/visitor-keys": "5.27.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.0.tgz", + "integrity": "sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.27.0", + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/typescript-estree": "5.27.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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.0.tgz", + "integrity": "sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.27.0", + "eslint-visitor-keys": "^3.3.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/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "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/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "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/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.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==", + "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==", + "dev": true, + "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==", + "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/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==", + "dev": true + }, + "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-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.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==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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.7.1", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.7.1.tgz", + "integrity": "sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==", + "dev": true + }, + "node_modules/app-builder-lib": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.13.tgz", + "integrity": "sha512-SufmrtxU+D0Tn948fjEwAOlCN9757UXLkzzTWXMwZKR/5hisvgqeeBepWfphMIE6OkDGz0fbzEhL1P2Pty4XMg==", + "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.14.13", + "builder-util-runtime": "8.9.2", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-osx-sign": "^0.5.0", + "electron-publish": "22.14.13", + "form-data": "^4.0.0", + "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/app-builder-lib/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "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/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "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/are-we-there-yet/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/asar/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/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "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/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "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/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.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==", + "dev": true, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "peer": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "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/binaryextensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", + "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "dev": true, + "engines": { + "node": ">=0.8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "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==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "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/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/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/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/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "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==", + "dev": true, + "optional": true + }, + "node_modules/bootstrap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "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/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/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/braintree-web": { + "version": "3.85.3", + "resolved": "https://registry.npmjs.org/braintree-web/-/braintree-web-3.85.3.tgz", + "integrity": "sha512-slCnjD/YLFDmiOU0vxL7i4uifjRQV5Cw7dSkhRdXiIT+a8iQ7NxtL5FSomv45wuHqgdilZeQ8iB8guIrn6QgwA==", + "dependencies": { + "@braintree/asset-loader": "0.4.4", + "@braintree/browser-detection": "1.12.1", + "@braintree/class-list": "0.2.0", + "@braintree/event-emitter": "0.4.1", + "@braintree/extended-promise": "0.4.1", + "@braintree/iframer": "1.1.0", + "@braintree/sanitize-url": "6.0.0", + "@braintree/uuid": "0.1.0", + "@braintree/wrap-promise": "2.1.0", + "card-validator": "8.1.1", + "credit-card-type": "9.1.0", + "framebus": "5.1.2", + "inject-stylesheet": "5.0.0", + "promise-polyfill": "8.2.3", + "restricted-input": "3.0.5" + } + }, + "node_modules/braintree-web-drop-in": { + "version": "1.33.2", + "resolved": "https://registry.npmjs.org/braintree-web-drop-in/-/braintree-web-drop-in-1.33.2.tgz", + "integrity": "sha512-2iqhHS6UQEvcRAWvI/CQ2OuJLHqXR+6UYBKkaa6T+DXa24/mdwErDTabJHSq8oAebsx3Va+9q06IveJfOoDfqA==", + "dependencies": { + "@braintree/asset-loader": "0.4.4", + "@braintree/browser-detection": "1.12.1", + "@braintree/class-list": "0.2.0", + "@braintree/event-emitter": "0.4.1", + "@braintree/uuid": "0.1.0", + "@braintree/wrap-promise": "2.1.0", + "braintree-web": "3.85.3", + "promise-polyfill": "8.2.3" + } + }, + "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/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "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.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "peer": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "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/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builder-util": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.13.tgz", + "integrity": "sha512-oePC/qrrUuerhmH5iaCJzPRAKlSBylrhzuAJmRQClTyWnZUv6jbaHh+VoHMbEiE661wrj2S2aV7/bQh12cj1OA==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.7.1", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.9.2", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.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.9.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", + "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.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/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/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "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": "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/cacheable-request/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "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==", + "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": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001346", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz", + "integrity": "sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ==", + "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/card-validator": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", + "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", + "dependencies": { + "credit-card-type": "^9.1.0" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "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": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true, + "peer": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/clean-webpack-plugin/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-webpack-plugin/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/clean-webpack-plugin/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "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/clean-webpack-plugin/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-webpack-plugin/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/clean-webpack-plugin/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/clean-webpack-plugin/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/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==", + "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==", + "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/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "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": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "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-deep/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/clone-deep/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/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", + "dependencies": { + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + } + }, + "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": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true, + "peer": true + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==" + }, + "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": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dev": true, + "dependencies": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compress-brotli/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/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/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/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "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/concurrently": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.2.1.tgz", + "integrity": "sha512-7cab/QyqipqghrVr9qZmoWbidu0nHsmxrpNqQ7r/67vfl1DWJElexehQnTH1p+87tDkihaAjM79xTZyBQh7HLw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "shell-quote": "^1.7.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^17.3.1" + }, + "bin": { + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.0 || >=16.0.0" + } + }, + "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/conf": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz", + "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==", + "dev": true, + "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==", + "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/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==", + "dev": true + }, + "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==", + "dev": 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/configstore/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/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.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": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/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/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "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/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cookies/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + }, + "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-js": { + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", + "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/crc/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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" + } + ], + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/credit-card-type": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", + "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" + }, + "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/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/date-input-polyfill": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/date-input-polyfill/-/date-input-polyfill-2.14.0.tgz", + "integrity": "sha512-LUfuBYYlayDyBbQCIMN1RyrDaTmy5pa3u3jIDoWTXk/7tPgOajZczjWZA2ITd/+lbhtUBM6fhT+Grxs1yYATVA==", + "dependencies": { + "babel-runtime": "^6.11.6" + } + }, + "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==", + "dev": true, + "dependencies": { + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "peer": true + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" + }, + "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==", + "dev": true, + "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==" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "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/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", + "dev": true + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "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/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "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/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dmg-builder": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.13.tgz", + "integrity": "sha512-xNOugB6AbIRETeU2uID15sUfjdZZcKdxK8xkFnwIggsM00PJ12JxpLNPTjcRoUnfwj3WrPjilrO64vRMwNItQg==", + "dev": true, + "dependencies": { + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", + "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/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.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/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "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/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "engines": { + "node": ">=8" + } + }, + "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": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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#f43ff8f1325f8630d0cff1cd9fb0df13d22cf28d", + "license": "SEE LICENSE IN LICENSE" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", + "dev": true + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/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/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==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/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/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "16.2.7", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.2.7.tgz", + "integrity": "sha512-aZKF3b00+rqW/HGs8lJM5DhPNj+mOfCuhLSiFXV6J9dQCIRhctJTmToOrwXfbCxvXK8as8eQTNl5uSfnHmH6tA==", + "dev": true, + "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.14.13", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.13.tgz", + "integrity": "sha512-3fgLxqF2TXVKiUPeg74O4V3l0l3j7ERLazo8sUbRkApw0+4iVAf2BJkHsHMaXiigsgCoEzK/F4/rB5rne/VAnw==", + "dev": true, + "dependencies": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", + "chalk": "^4.1.1", + "dmg-builder": "22.14.13", + "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/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-log": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.7.tgz", + "integrity": "sha512-uFZQdgevOp9Fn5lDOrJMU/bmmYxDLZitbIHJM7VXN+cpB59ZnPt1FQL4bOf/Dl2gaIMPYJEfXx38GvJma5iV6A==", + "dev": true + }, + "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-notarize/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-notarize/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-osx-sign": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz", + "integrity": "sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/electron-osx-sign/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/electron-osx-sign/node_modules/isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "dependencies": { + "buffer-alloc": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/electron-osx-sign/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/electron-publish": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.13.tgz", + "integrity": "sha512-0oP3QiNj3e8ewOaEpEJV/o6Zrmy2VarVvZ/bH7kyO/S/aJf9x8vQsKVWpsdmSiZ5DJEHgarFIXrnO0ZQf0P9iQ==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "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/@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/electron-rebuild/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/electron-rebuild/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/electron-rebuild/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==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-rebuild/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/electron-rebuild/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-rebuild/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-rebuild/node_modules/got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "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/electron-rebuild/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/electron-rebuild/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-rebuild/node_modules/keyv": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.0.tgz", + "integrity": "sha512-C30Un9+63J0CsR7Wka5quXKqYZsT6dcRQ2aOwGcSc3RiQ4HGWpTAHlCA+puNfw2jA/s11EsxA1nCXgZRuRKMQQ==", + "dev": true, + "dependencies": { + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" + } + }, + "node_modules/electron-rebuild/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-rebuild/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/electron-rebuild/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/electron-rebuild/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/electron-rebuild/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-reload": { + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/electron-reload/-/electron-reload-2.0.0-alpha.1.tgz", + "integrity": "sha512-hTde7gv0TEqxbxlB3pj2CwoyCQ9sdiQrcP8GkpzhosxyVeYM3mZbMEVKCZK3L0fED7Mz5A9IWmK7zEvi4H3P1g==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.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==", + "dev": true, + "dependencies": { + "conf": "^10.0.3", + "type-fest": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.144", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.144.tgz", + "integrity": "sha512-R3RV3rU1xWwFJlSClVWDvARaOk6VUO/FubHLodIASDB3Mc2dzuWvNdfOgH9bwHUTqT79u92qw60NWfwUdzAqdg==", + "dev": true + }, + "node_modules/electron-updater": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.0.1.tgz", + "integrity": "sha512-dNnXPCqYmergXy3jgg4UICuD50Orug9GQe/5xfHy+BE2Fy0icB0QE+y6iQWdCDf7yeONxwMBf4HgIkGG5pIaVg==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/electron-updater/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-updater/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-updater/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron/node_modules/@types/node": { + "version": "14.18.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.20.tgz", + "integrity": "sha512-Q8KKwm9YqEmUBRsqJ2GWJDtXltBDxTdC4m5vTdXBolu2PeQh8LX+f6BTwU+OuXPu37fLxoN6gidqBmnky36FXA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "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==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "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==", + "dev": true, + "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/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "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.2", + "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", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "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-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "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/es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha512-731Rf4NqlPvhkT1pIF7r8vZxESJlWocNpXLuyPlVnfEGXlwuJaMvU5WpyyDjpudDC2cgXVX849xljzvQqBg1QQ==" + }, + "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==", + "dev": true, + "optional": true + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "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-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@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.2", + "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.15.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.1.2", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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/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.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true, + "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/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.1.tgz", + "integrity": "sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA==", + "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/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/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/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/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/express/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/express/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==", + "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/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dev": true + }, + "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": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "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/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "peer": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "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/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "dev": true + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "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.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "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/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/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/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/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/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/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/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "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/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forcefocus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/forcefocus/-/forcefocus-1.1.0.tgz", + "integrity": "sha512-bnY7rul5kBLyNoCn0FHNiFAF+GGUZx6TvxWhurUS4PlmOzF+FMixGIigHH5UcyM3w1gp2TxAtP6MOUSXA15Sgw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0", + "prebuild-install": "^5.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fork-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz", + "integrity": "sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==", + "dev": true + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/framebus": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/framebus/-/framebus-5.1.2.tgz", + "integrity": "sha512-Z/y6/0gHVx4Td4c0jkDiASBo0pXlJ2fKOP6CynSFnxTzqojG9xOKOFOqoYkcBHlz1vP4t4yHHR6Esp+GsYIh/Q==", + "dependencies": { + "@braintree/uuid": "^0.1.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "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-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "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==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8.0.0" + } + }, + "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/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/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.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": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/glob-watcher/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/micromatch/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/glob-watcher/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/glob-watcher/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "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==", + "dev": true, + "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.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "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/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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/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": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/gulp-cli/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/gulp-cli/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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "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/gulp-cli/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=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/gulp-cli/node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + }, + "node_modules/gulp-filter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-7.0.0.tgz", + "integrity": "sha512-ZGWtJo0j1mHfP77tVuhyqem4MRA5NfNRjoVe6VAkLGeQQ/QGo2VsFwp7zfPTGDsd1rwzBmoDHhxpE6f5B3Zuaw==", + "dev": true, + "dependencies": { + "multimatch": "^5.0.0", + "plugin-error": "^1.0.1", + "streamfilter": "^3.0.0", + "to-absolute-glob": "^2.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "gulp": ">=4" + }, + "peerDependenciesMeta": { + "gulp": { + "optional": true + } + } + }, + "node_modules/gulp-if": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-3.0.0.tgz", + "integrity": "sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==", + "dev": true, + "dependencies": { + "gulp-match": "^1.1.0", + "ternary-stream": "^3.0.0", + "through2": "^3.0.1" + } + }, + "node_modules/gulp-json-editor": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/gulp-json-editor/-/gulp-json-editor-2.5.6.tgz", + "integrity": "sha512-66Xr6Q6m4mUNd0OOHflMB/RHgFNnLjlHgizOzUcx9CyMRymVZEM+/SpZcCDlvThBdXtQwXpdvtSepxVY/V6nQA==", + "dev": true, + "dependencies": { + "deepmerge": "^4.2.2", + "detect-indent": "^6.0.0", + "js-beautify": "^1.13.13", + "plugin-error": "^1.0.1", + "through2": "^4.0.2" + } + }, + "node_modules/gulp-json-editor/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gulp-json-editor/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/gulp-match": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz", + "integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.3" + } + }, + "node_modules/gulp-replace": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", + "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", + "dev": true, + "dependencies": { + "@types/node": "^14.14.41", + "@types/vinyl": "^2.0.4", + "istextorbinary": "^3.0.0", + "replacestream": "^4.0.3", + "yargs-parser": ">=5.0.0-security.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gulp-replace/node_modules/@types/node": { + "version": "14.18.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.20.tgz", + "integrity": "sha512-Q8KKwm9YqEmUBRsqJ2GWJDtXltBDxTdC4m5vTdXBolu2PeQh8LX+f6BTwU+OuXPu37fLxoN6gidqBmnky36FXA==", + "dev": true + }, + "node_modules/gulp-zip": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-5.1.0.tgz", + "integrity": "sha512-XZr/y91IliK/SpR74g3TkZejGkGEmK7CSDjSghT1jXshgO+dFvpLIz9w9fpuwkew6i7k4F+G24TubNgq1ISzEw==", + "dev": true, + "dependencies": { + "get-stream": "^5.2.0", + "plugin-error": "^1.0.1", + "through2": "^3.0.1", + "vinyl": "^2.1.0", + "yazl": "^2.5.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "gulp": ">=4" + }, + "peerDependenciesMeta": { + "gulp": { + "optional": true + } + } + }, + "node_modules/gulp-zip/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "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==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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==", + "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": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "peer": true + }, + "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-injector": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/html-webpack-injector/-/html-webpack-injector-1.1.4.tgz", + "integrity": "sha512-R+HeAYzPeL3dKIr5/a7a2S6R4fy2yHetKiB7cz5rXjwlnU5tghuy58kCBsKA/Qoj94MAgCYwllHmvYqy2nJSdg==", + "dev": true + }, + "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-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "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": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "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": "sha512-BFEH2mZyeF6KZKaKLVPZ0wMjIiWOdjvZ7zbx8ENec0qfZhJwKFbX/4jKM5LTKyJEc/GOqUKiiJ2IFKT9yWrZqA==", + "dev": true + }, + "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/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "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": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "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/inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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==", + "dev": true + }, + "node_modules/inject-stylesheet": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/inject-stylesheet/-/inject-stylesheet-5.0.0.tgz", + "integrity": "sha512-GzncrJP8E/pavMQzoO93CXoYCfTttwVm2cX2TyXJdgtVE0cCvWSFCn1/uMsM6ZkEg7LUsOcKuamcLiGWlv2p9A==" + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "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": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "dev": true, + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/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/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "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-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "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.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/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/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-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/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/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable/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-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-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==", + "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": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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-in-cwd/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-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-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "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-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + }, + "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": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "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": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/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, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "peer": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "peer": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "dev": true, + "dependencies": { + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "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/jasmine-core": { + "version": "3.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", + "dev": true + }, + "node_modules/jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jasmine-spec-reporter/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/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, + "peer": 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/jest-cli/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, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "peer": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "peer": true, + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-preset-angular": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-10.1.0.tgz", + "integrity": "sha512-D4k+BnGoig3w1x4MZiQOdN8UfaLN5aNjmx91U28VYRA+LslbN+D8dGyb5a5lR32mog5y86iVnAZ4mRvFlYr7SQ==", + "dev": true, + "dependencies": { + "jest-environment-jsdom": "^27.0.0", + "pretty-format": "^27.0.0", + "ts-jest": "^27.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@angular/compiler-cli": ">=10.0.0", + "@angular/core": ">=10.0.0", + "@angular/platform-browser-dynamic": ">=10.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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/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/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "node_modules/js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/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==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/jsdom/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/jsdom/node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "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==", + "dev": true + }, + "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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "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": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jszip": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", + "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "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": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "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": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.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=", + "dev": true, + "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=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "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/koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-bodyparser": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz", + "integrity": "sha512-uyV8G29KAGwZc4q/0WUAjH+Tsmuv9ImfBUF2oZVyZtaeo0husInagyn/JH85xMSxM0hEk/mbCII5ubLDuqW/Rw==", + "dependencies": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-is-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", + "integrity": "sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==" + }, + "node_modules/koa-json": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/koa-json/-/koa-json-2.0.2.tgz", + "integrity": "sha512-8+dz0T2ekDuNN1svYoKPCV2txotQ3Ufg8Fn5bft1T48MPJWiC/HKmkk+3xj9EC/iNZuFYeLRazN2h2o3RSUXuQ==", + "dependencies": { + "koa-is-json": "1", + "streaming-json-stringify": "3" + } + }, + "node_modules/koa/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dev": true + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "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/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/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/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lint-staged": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", + "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^9.3.0", + "debug": "^4.3.4", + "execa": "^5.1.1", + "lilconfig": "2.0.5", + "listr2": "^4.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.2", + "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": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "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/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "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==" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "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==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "dependencies": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + }, + "engines": { + "node": ">=4" + } + }, + "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": "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/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/lzma-native/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "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/make-fetch-happen/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/make-fetch-happen/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/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/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/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "peer": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/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/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", + "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "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/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "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/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "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/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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==", + "dev": true + }, + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, + "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/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multistream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz", + "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==", + "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": { + "once": "^1.4.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/multistream/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/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/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==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "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==", + "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/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/ngx-infinite-scroll": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-10.0.1.tgz", + "integrity": "sha512-7is0eJZ9kJPsaHohRmMhJ/QFHAW9jp9twO5HcHRvFM/Yl/R8QCiokgjwmH0/CR3MuxUanxfHZMfO3PbYTwlBEg==", + "hasInstallScript": true, + "dependencies": { + "@scarf/scarf": "^1.1.0", + "opencollective-postinstall": "^2.0.2" + } + }, + "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.22.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz", + "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==", + "dev": true, + "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-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/node-fetch/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/node-fetch/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/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==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "peer": true + }, + "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==", + "dev": true, + "dependencies": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "node_modules/noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==", + "dev": true + }, + "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": "sha512-/AD7JGJbcp1pB5XwYkJyivqdeXofUP5u2lkif6vLGLc+SsV9OCC0JFNpVwM5pqHuFqbyojRt6xILuidJOwwJDQ==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dev": true, + "optional": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "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.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "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": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "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/onetime/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/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "bin": { + "opencollective-postinstall": "index.js" + } + }, + "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==", + "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/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/ora/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/ora/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/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "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/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "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": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "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/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/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "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/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "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": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "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-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + }, + "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": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "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": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/pkg/-/pkg-5.7.0.tgz", + "integrity": "sha512-PTiAjNq/CGAtK5qUBR6pjheqnipTFjeecgSgIKEcAOJA4GpmZeOZC8pMOoT0rfes5vHsmcFo7wbSRTAmXQurrg==", + "dev": true, + "dependencies": { + "@babel/parser": "7.17.10", + "@babel/types": "7.17.10", + "chalk": "^4.1.2", + "escodegen": "^2.0.0", + "fs-extra": "^9.1.0", + "globby": "^11.1.0", + "into-stream": "^6.0.0", + "is-core-module": "2.9.0", + "minimist": "^1.2.6", + "multistream": "^4.1.0", + "pkg-fetch": "3.4.1", + "prebuild-install": "6.1.4", + "resolve": "^1.22.0", + "stream-meter": "^1.0.4" + }, + "bin": { + "pkg": "lib-es5/bin.js" + }, + "peerDependencies": { + "node-notifier": ">=9.0.1" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "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-fetch": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/pkg-fetch/-/pkg-fetch-3.4.1.tgz", + "integrity": "sha512-fS4cdayCa1r4jHkOKGPJKnS9PEs6OWZst+s+m0+CmhmPZObMnxoRnf9T9yUWl+lzM2b5aJF7cnQIySCT7Hq8Dg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "fs-extra": "^9.1.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.6", + "progress": "^2.0.3", + "semver": "^7.3.5", + "tar-fs": "^2.1.1", + "yargs": "^16.2.0" + }, + "bin": { + "pkg-fetch": "lib-es5/bin.js" + } + }, + "node_modules/pkg-fetch/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/pkg-fetch/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/pkg-fetch/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/pkg-fetch/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/pkg-fetch/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/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg/node_modules/@babel/parser": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pkg/node_modules/@babel/types": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/pkg/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/pkg/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==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/pkg/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/pkg/node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "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/pkg/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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/pkg/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==", + "dev": true, + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/pkg/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==", + "dev": true, + "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/pkg/node_modules/prebuild-install": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "dev": true, + "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.21.0", + "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" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/pkg/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "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/pkg/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=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "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, + "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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/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/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "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-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "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==", + "dev": true, + "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": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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=", + "dev": true, + "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=", + "dev": true, + "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": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "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/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.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==", + "dev": true, + "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": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" + }, + "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/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": 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==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "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/qrious": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz", + "integrity": "sha512-xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g==" + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "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/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "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/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "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==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "if-async": "^3.7.4", + "stream-slicer": "0.0.6", + "through2": "^0.6.3" + } + }, + "node_modules/regedit/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/regedit/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=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/regedit/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=", + "dev": true + }, + "node_modules/regedit/node_modules/through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-bom-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "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/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/replacestream/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "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-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "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/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restricted-input": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/restricted-input/-/restricted-input-3.0.5.tgz", + "integrity": "sha512-lUuXZ3wUnHURRarj5/0C8vomWIfWJO+p7T6RYwB46v7Oyuyr3yyupU+i7SjqUv4S6RAeAAZt1C/QCLJ9xhQBow==", + "dependencies": { + "@braintree/browser-detection": "^1.12.1" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "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==", + "dev": true, + "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-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.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/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "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.52.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.1.tgz", + "integrity": "sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==", + "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==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/selfsigned/node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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=", + "dev": true, + "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-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/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/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/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/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.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=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/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/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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/shallow-clone/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/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/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "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==", + "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/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "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==", + "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/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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "peer": true + }, + "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/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/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/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/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/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/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "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==", + "devOptional": 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-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.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/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "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/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "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/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "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/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", + "dependencies": { + "graceful-fs": "^4.1.3" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "node_modules/stream-meter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz", + "integrity": "sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=", + "dev": true, + "dependencies": { + "readable-stream": "^2.1.4" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/stream-slicer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stream-slicer/-/stream-slicer-0.0.6.tgz", + "integrity": "sha1-+GsqxcJEC3oKh7cfM2ZcB4gEYTg=", + "dev": true + }, + "node_modules/streamfilter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-3.0.0.tgz", + "integrity": "sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.6" + }, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/streamfilter/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/streaming-json-stringify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/streaming-json-stringify/-/streaming-json-stringify-3.1.0.tgz", + "integrity": "sha1-gCAEN6mTzDnE/gAmO3s7kDrIevU=", + "dependencies": { + "json-stringify-safe": "5", + "readable-stream": "2" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.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-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-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "peer": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "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/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "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/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/tailwindcss": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", + "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", + "dev": true, + "dependencies": { + "arg": "^5.0.1", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/tailwindcss/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/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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/tar-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar/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/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/temp-file/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/temp-file/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/temp-file/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ternary-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz", + "integrity": "sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==", + "dev": true, + "dependencies": { + "duplexify": "^4.1.1", + "fork-stream": "^0.0.4", + "merge-stream": "^2.0.0", + "through2": "^3.0.1" + } + }, + "node_modules/terser": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", + "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "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/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "peer": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "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/textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true, + "peer": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2-filter/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.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/tmp-promise/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/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "peer": true + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.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-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/to-through/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "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/tough-cookie/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/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tr46/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/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-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/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/ts-loader": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", + "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", + "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/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/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/tsconfig-paths/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/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "engines": { + "node": ">=0.6.x" + } + }, + "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==", + "dev": true, + "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=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "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-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker/node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "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": "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/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "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/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/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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.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=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "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": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "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/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "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/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/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, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "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/verror/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": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "optional": true + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "peer": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.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=", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-animations-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.2.tgz", + "integrity": "sha512-TOMFWtQdxzjWp8qx4DAraTWTsdhxVSiWa6NkPFSaPtZ1diKUxTn4yTix73A1euG1WbSOMMPcY51cnjTIHrGtDA==" + }, + "node_modules/webcrypto-shim": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz", + "integrity": "sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "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.3", + "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-even-better-errors": "^2.3.1", + "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/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/webpack-cli/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/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz", + "integrity": "sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg==", + "dev": true, + "dependencies": { + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^1.10.11", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^5.2.1", + "ws": "^8.1.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/ws": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "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-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "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/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "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/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "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=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "node_modules/ylru": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/zone.js": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", + "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", + "dependencies": { + "tslib": "^2.3.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.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@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.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true + }, + "@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "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.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "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.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true + }, + "@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.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "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.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "peer": true + }, + "@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2" + } + }, + "@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.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "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" + } + } + } + }, + "@babel/parser": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@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.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "peer": true + }, + "@braintree/asset-loader": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@braintree/asset-loader/-/asset-loader-0.4.4.tgz", + "integrity": "sha512-uVhXC5dydmngmNVuDiKgfXSlz4kv4x5ytIJodI8N5SY16mRh13m/UmbQ7yH+o8DQqp50qPZ45MUHIZkXKPg85w==", + "requires": { + "promise-polyfill": "^8.1.3" + } + }, + "@braintree/browser-detection": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@braintree/browser-detection/-/browser-detection-1.12.1.tgz", + "integrity": "sha512-i/54qrax5o/WbJJhsE/7qqKE594/kGhR+xSu/w13rT7Mlr/uITkWDXzxffcKQ6l6FQxK0IG0EfgT6TJpWgZcUQ==" + }, + "@braintree/class-list": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@braintree/class-list/-/class-list-0.2.0.tgz", + "integrity": "sha512-iLXJT51jnBFuGvyTAQqZ2uwyEVwdyapyz52F5MK1Uoh2ZOiPJ5hoqI0wncyCP2KfqrgyCpOkkEaLMLb/94unGA==" + }, + "@braintree/event-emitter": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@braintree/event-emitter/-/event-emitter-0.4.1.tgz", + "integrity": "sha512-X41357O3OXUDlnwMvS1m0GQEn3zB3s3flOBeg2J5OBvLvdJEIAVpPkblABPtsPrlciDSvfv1aSG5ixHPgFH0Zg==" + }, + "@braintree/extended-promise": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@braintree/extended-promise/-/extended-promise-0.4.1.tgz", + "integrity": "sha512-00n7m4z+swWHoFQLHLvrIBIEoxnGUBsl3ogvX79ITpcn8CHczDwtxYy5+RhMoAraRdfN3oB+8QIpN3KOxs2Q7w==" + }, + "@braintree/iframer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@braintree/iframer/-/iframer-1.1.0.tgz", + "integrity": "sha512-tVpr7U6u6bqeQlHreEjYMNtnHX62vLnNWziY2kQLqkWhvusPuY5DfuGEIPpWqsd+V/a1slyTQaxK6HWTlH6A/Q==" + }, + "@braintree/sanitize-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz", + "integrity": "sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==" + }, + "@braintree/uuid": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@braintree/uuid/-/uuid-0.1.0.tgz", + "integrity": "sha512-YvZJdlNcK5EnR+7M8AjgEAf4Qx696+FOSYlPfy5ePn80vODtVAUU0FxHnzKZC0og1VbDNQDDiwhthR65D4Na0g==" + }, + "@braintree/wrap-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@braintree/wrap-promise/-/wrap-promise-2.1.0.tgz", + "integrity": "sha512-UIrJB+AfKU0CCfbMoWrsGpd2D/hBpY/SGgFI6WRHPOwhaZ3g9rz1weiJ6eb6L9KgVyunT7s2tckcPkbHw+NzeA==" + }, + "@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==", + "dev": true, + "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": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@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" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "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 + } + } + }, + "@fluffy-spoon/substitute": { + "version": "1.208.0", + "resolved": "https://registry.npmjs.org/@fluffy-spoon/substitute/-/substitute-1.208.0.tgz", + "integrity": "sha512-BU5vKRoK4OYlKzDtyg4HbtWnUNLOvV0ntqEZIphz+mq2G0HlVFywwJ7M+FbIcnJVDbUReS01FyL5x8R01r7zBg==", + "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 + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "peer": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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, + "peer": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^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, + "peer": 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, + "peer": 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, + "peer": 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, + "peer": 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, + "peer": true + }, + "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, + "peer": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true, + "peer": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "peer": true + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "peer": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "peer": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "@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": "*" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@koa/multer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@koa/multer/-/multer-3.0.0.tgz", + "integrity": "sha512-y+OQBmex5D1jIl723gAEUYcAWPEicIXppaAKw/zCMfpllQ08ZNweDPwoCLxEoatqd5pCu2XG6V8dl67JRq3RJw==", + "requires": {} + }, + "@koa/router": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz", + "integrity": "sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==", + "requires": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.1.0" + } + }, + "@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" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@microsoft/signalr": { + "version": "5.0.17", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-5.0.17.tgz", + "integrity": "sha512-zTjFxjh67WWCe35ZipsqkktM5mM+MsckyyI2ZvFmYWR7ibpUoAyZI1DFdYfwXfsyBdlykDaW84o9lrB+9tDpaA==", + "requires": { + "abort-controller": "^3.0.0", + "eventsource": "^1.0.7", + "fetch-cookie": "^0.7.3", + "node-fetch": "^2.6.7", + "ws": "^6.0.0" + } + }, + "@microsoft/signalr-protocol-msgpack": { + "version": "5.0.17", + "resolved": "https://registry.npmjs.org/@microsoft/signalr-protocol-msgpack/-/signalr-protocol-msgpack-5.0.17.tgz", + "integrity": "sha512-Gqp1Azw5nFColcwX/eLIs+N2G6/nWtYHZtMccgEv9C1PKMXZEiUPiHmvwbLfywJubtu9cyDie3Q/+VuRc9X5Xg==", + "requires": { + "@microsoft/signalr": ">=5.0.17", + "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==", + "dev": true, + "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" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "@scarf/scarf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.1.1.tgz", + "integrity": "sha512-VGbKDbk1RFIaSmdVb0cNjjWJoRWRI/Weo23AjRCC2nryO0iAS8pzsToJfPVPtVs74WHw4L1UTADNdIYRLkirZQ==" + }, + "@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 + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@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" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "peer": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "peer": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@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/chrome": { + "version": "0.0.139", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.139.tgz", + "integrity": "sha512-YZDKFlSVGFp4zldJlO+PUpxMH8N9vLke0fD6K9PA+TzXxPXu8LBLo5X2dzlOs2N/n+uMdI1lw7OPT1Emop10lQ==", + "dev": true, + "requires": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", + "dev": true + }, + "@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "@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.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "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/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dev": true, + "requires": { + "@types/filewriter": "*" + } + }, + "@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", + "dev": true + }, + "@types/firefox-webext-browser": { + "version": "82.0.1", + "resolved": "https://registry.npmjs.org/@types/firefox-webext-browser/-/firefox-webext-browser-82.0.1.tgz", + "integrity": "sha512-odcPKiJ34N8k53clIWen3hLvl09ja7SQ9NqtUbgmqeJ/a/ZRQiF665iXSFPcnl6cBn2XQgEg2lsUUApYNiyj+g==", + "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/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/har-format": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.8.tgz", + "integrity": "sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ==", + "dev": true + }, + "@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-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", + "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/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/inquirer": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.1.tgz", + "integrity": "sha512-wKW3SKIUMmltbykg4I5JzCVzUhkuD9trD6efAmYgN2MrSntY0SMRQzEnD3mkyJ/rv9NLbTC7g3hKKE86YwEDLw==", + "dev": true, + "requires": { + "@types/through": "*", + "rxjs": "^7.2.0" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "dev": true, + "requires": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/jquery": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.14.tgz", + "integrity": "sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, + "@types/jsdom": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.14.tgz", + "integrity": "sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/parse5": "*", + "@types/tough-cookie": "*" + } + }, + "@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": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", + "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/koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==", + "dev": true, + "requires": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "@types/koa__multer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/koa__multer/-/koa__multer-2.0.4.tgz", + "integrity": "sha512-WRkshXhE5rpYFUbbtAjyMhdOOSdbu1XX+2AQlRNM6AZtgxd0/WXMU4lrP7e9tk5HWVTWbx8DOOsVBmfHjSGJ4w==", + "dev": true, + "requires": { + "@types/koa": "*" + } + }, + "@types/koa__router": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.11.tgz", + "integrity": "sha512-WXgKWpBsbS14kzmzD9LeFapOIa678h7zvUHxDwXwSx4ETKXhXLVUAToX6jZ/U7EihM7qwyD9W/BZvB0MRu7MTQ==", + "dev": true, + "requires": { + "@types/koa": "*" + } + }, + "@types/koa-bodyparser": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/@types/koa-bodyparser/-/koa-bodyparser-4.3.7.tgz", + "integrity": "sha512-21NhEp7LjZm4zbNV5alHHmrNY4J+S7B8lYTO6CzRL8ShTMnl20Gd14dRgVhAxraLaW5iZMofox+BycbuiDvj2Q==", + "dev": true, + "requires": { + "@types/koa": "*" + } + }, + "@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "dev": true, + "requires": { + "@types/koa": "*" + } + }, + "@types/koa-json": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@types/koa-json/-/koa-json-2.0.20.tgz", + "integrity": "sha512-RuQ1Vlpsm/EC5wo2oWCgNnwneixnSQ9aHQAE7nwnbSiCibgfUO2wwSQN6rn8SfF97cRdN9hKAtoc9KSIuiGP6Q==", + "dev": true, + "requires": { + "@types/koa": "*" + } + }, + "@types/lodash": { + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", + "dev": true + }, + "@types/lowdb": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/lowdb/-/lowdb-1.0.11.tgz", + "integrity": "sha512-h99VMxvTuz+VsXUVCCJo4dsps4vbkXwvU71TpmxDoiBU24bJ0VBygIHgmMm+UPoQIFihmV6euRik4z8J7XDJWg==", + "dev": true, + "requires": { + "@types/lodash": "*" + } + }, + "@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/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "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/mousetrap": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.9.tgz", + "integrity": "sha512-HUAiN65VsRXyFCTicolwb5+I7FM6f72zjMWr+ajGk+YTvzBgXqa2A5U7d+rtsouAkunJ5U4Sb5lNJjo9w+nmXg==", + "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.38", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.38.tgz", + "integrity": "sha512-hjO/0K140An3GWDw2HJfq7gko3wWeznbjXgg+rzPdVzhe198hp4x2i1dgveAOEiFKd8sOilAxzoSJiVv5P/CUg==", + "dev": true + }, + "@types/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "@types/node-forge": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.0.2.tgz", + "integrity": "sha512-J1OkeZGaW0y9Y7xD49Ja8O82B9l5nZDeoYuGWqIOYPAf9LR+xF23k9ILdzv8dH+2H033fx3D5oiA0GlmicI+sg==", + "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/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "@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/prettier": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "dev": true, + "peer": true + }, + "@types/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@types/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-kd4LMvcnpYkspDcp7rmXKedn8iJSCoa331zRRamUp5oanKt/CefbEGPQP7G89enz7sKD4bvsr8mHSsC8j5WOvA==", + "dev": true, + "requires": { + "@types/retry": "*" + } + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@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/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "@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==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@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/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "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/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "dev": true, + "requires": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "@types/webcrypto": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/@types/webcrypto/-/webcrypto-0.0.28.tgz", + "integrity": "sha512-jzAoSUvqA+183nJO/Sc73CREQJsv+p77WJdn532GqA3YXQzlwRwHhClVa7U4O8iB2sJSR7G3v6f1mJFNkwA9YQ==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "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.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz", + "integrity": "sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.27.0", + "@typescript-eslint/type-utils": "5.27.0", + "@typescript-eslint/utils": "5.27.0", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.27.0.tgz", + "integrity": "sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.27.0", + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/typescript-estree": "5.27.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz", + "integrity": "sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/visitor-keys": "5.27.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.27.0.tgz", + "integrity": "sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.27.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.0.tgz", + "integrity": "sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.0.tgz", + "integrity": "sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/visitor-keys": "5.27.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.0.tgz", + "integrity": "sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.27.0", + "@typescript-eslint/types": "5.27.0", + "@typescript-eslint/typescript-estree": "5.27.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.0.tgz", + "integrity": "sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.27.0", + "eslint-visitor-keys": "^3.3.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 + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "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" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "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": {} + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "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==", + "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==", + "dev": true, + "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==", + "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" + } + }, + "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 + } + } + }, + "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-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.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==", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "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==" + } + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "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": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true + }, + "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.7.1", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.7.1.tgz", + "integrity": "sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==", + "dev": true + }, + "app-builder-lib": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.13.tgz", + "integrity": "sha512-SufmrtxU+D0Tn948fjEwAOlCN9757UXLkzzTWXMwZKR/5hisvgqeeBepWfphMIE6OkDGz0fbzEhL1P2Pty4XMg==", + "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.14.13", + "builder-util-runtime": "8.9.2", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-osx-sign": "^0.5.0", + "electron-publish": "22.14.13", + "form-data": "^4.0.0", + "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" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "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 + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "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" + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + } + }, + "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": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "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" + }, + "dependencies": { + "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 + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "optional": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": 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-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "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==" + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "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 + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "peer": true, + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "peer": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + } + } + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "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 + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + }, + "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 + }, + "binaryextensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", + "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "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==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "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" + } + }, + "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" + } + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "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" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "bootstrap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==", + "requires": {} + }, + "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": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "braintree-web": { + "version": "3.85.3", + "resolved": "https://registry.npmjs.org/braintree-web/-/braintree-web-3.85.3.tgz", + "integrity": "sha512-slCnjD/YLFDmiOU0vxL7i4uifjRQV5Cw7dSkhRdXiIT+a8iQ7NxtL5FSomv45wuHqgdilZeQ8iB8guIrn6QgwA==", + "requires": { + "@braintree/asset-loader": "0.4.4", + "@braintree/browser-detection": "1.12.1", + "@braintree/class-list": "0.2.0", + "@braintree/event-emitter": "0.4.1", + "@braintree/extended-promise": "0.4.1", + "@braintree/iframer": "1.1.0", + "@braintree/sanitize-url": "6.0.0", + "@braintree/uuid": "0.1.0", + "@braintree/wrap-promise": "2.1.0", + "card-validator": "8.1.1", + "credit-card-type": "9.1.0", + "framebus": "5.1.2", + "inject-stylesheet": "5.0.0", + "promise-polyfill": "8.2.3", + "restricted-input": "3.0.5" + } + }, + "braintree-web-drop-in": { + "version": "1.33.2", + "resolved": "https://registry.npmjs.org/braintree-web-drop-in/-/braintree-web-drop-in-1.33.2.tgz", + "integrity": "sha512-2iqhHS6UQEvcRAWvI/CQ2OuJLHqXR+6UYBKkaa6T+DXa24/mdwErDTabJHSq8oAebsx3Va+9q06IveJfOoDfqA==", + "requires": { + "@braintree/asset-loader": "0.4.4", + "@braintree/browser-detection": "1.12.1", + "@braintree/class-list": "0.2.0", + "@braintree/event-emitter": "0.4.1", + "@braintree/uuid": "0.1.0", + "@braintree/wrap-promise": "2.1.0", + "braintree-web": "3.85.3", + "promise-polyfill": "8.2.3" + } + }, + "browser-hrtime": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/browser-hrtime/-/browser-hrtime-1.1.8.tgz", + "integrity": "sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==" + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "peer": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "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==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "builder-util": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.13.tgz", + "integrity": "sha512-oePC/qrrUuerhmH5iaCJzPRAKlSBylrhzuAJmRQClTyWnZUv6jbaHh+VoHMbEiE661wrj2S2aV7/bQh12cj1OA==", + "dev": true, + "requires": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.7.1", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.9.2", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.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": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "builder-util-runtime": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", + "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "requires": { + "streamsearch": "^1.1.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "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": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "requires": { + "mime-types": "^2.1.18", + "ylru": "^1.2.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": "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" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "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": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "peer": true + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001346", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz", + "integrity": "sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ==", + "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 + }, + "card-validator": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", + "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", + "requires": { + "credit-card-type": "^9.1.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "peer": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "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": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "ci-info": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true, + "peer": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + } + } + }, + "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" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "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" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "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": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "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 + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "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" + } + } + } + }, + "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==", + "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==" + }, + "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" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "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": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "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" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + }, + "co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", + "requires": { + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true, + "peer": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.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==", + "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==" + }, + "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": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dev": true, + "requires": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "dependencies": { + "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 + } + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "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" + } + }, + "concurrently": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.2.1.tgz", + "integrity": "sha512-7cab/QyqipqghrVr9qZmoWbidu0nHsmxrpNqQ7r/67vfl1DWJElexehQnTH1p+87tDkihaAjM79xTZyBQh7HLw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "shell-quote": "^1.7.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^17.3.1" + }, + "dependencies": { + "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 + } + } + }, + "conf": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz", + "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==", + "dev": true, + "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==", + "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" + } + }, + "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 + } + } + }, + "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==", + "dev": 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" + }, + "dependencies": { + "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" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + }, + "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==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "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" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "requires": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "requires": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + }, + "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-js": { + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", + "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==" + }, + "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==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "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" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "optional": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "credit-card-type": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", + "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" + }, + "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 + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "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 + }, + "date-input-polyfill": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/date-input-polyfill/-/date-input-polyfill-2.14.0.tgz", + "integrity": "sha512-LUfuBYYlayDyBbQCIMN1RyrDaTmy5pa3u3jIDoWTXk/7tPgOajZczjWZA2ITd/+lbhtUBM6fhT+Grxs1yYATVA==", + "requires": { + "babel-runtime": "^6.11.6" + } + }, + "debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "dev": true, + "requires": { + "mimic-fn": "^3.0.0" + } + }, + "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" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "peer": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" + }, + "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==", + "dev": true + }, + "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==" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + } + } + }, + "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 + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", + "dev": true + }, + "del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + }, + "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 + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "peer": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "requires": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + } + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": 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": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "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" + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "dmg-builder": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.13.tgz", + "integrity": "sha512-xNOugB6AbIRETeU2uID15sUfjdZZcKdxK8xkFnwIggsM00PJ12JxpLNPTjcRoUnfwj3WrPjilrO64vRMwNItQg==", + "dev": true, + "requires": { + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", + "dmg-license": "^1.0.9", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "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" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.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.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "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 + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + } + } + }, + "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": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "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#f43ff8f1325f8630d0cff1cd9fb0df13d22cf28d", + "from": "duo_web_sdk@github:duosecurity/duo_web_sdk" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", + "dev": true + }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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==", + "dev": true + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "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 + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron": { + "version": "16.2.7", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.2.7.tgz", + "integrity": "sha512-aZKF3b00+rqW/HGs8lJM5DhPNj+mOfCuhLSiFXV6J9dQCIRhctJTmToOrwXfbCxvXK8as8eQTNl5uSfnHmH6tA==", + "dev": true, + "requires": { + "@electron/get": "^1.13.0", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "14.18.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.20.tgz", + "integrity": "sha512-Q8KKwm9YqEmUBRsqJ2GWJDtXltBDxTdC4m5vTdXBolu2PeQh8LX+f6BTwU+OuXPu37fLxoN6gidqBmnky36FXA==", + "dev": true + } + } + }, + "electron-builder": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.13.tgz", + "integrity": "sha512-3fgLxqF2TXVKiUPeg74O4V3l0l3j7ERLazo8sUbRkApw0+4iVAf2BJkHsHMaXiigsgCoEzK/F4/rB5rne/VAnw==", + "dev": true, + "requires": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", + "chalk": "^4.1.1", + "dmg-builder": "22.14.13", + "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": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-log": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.7.tgz", + "integrity": "sha512-uFZQdgevOp9Fn5lDOrJMU/bmmYxDLZitbIHJM7VXN+cpB59ZnPt1FQL4bOf/Dl2gaIMPYJEfXx38GvJma5iV6A==", + "dev": true + }, + "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" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-osx-sign": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz", + "integrity": "sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.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" + } + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "electron-publish": { + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.13.tgz", + "integrity": "sha512-0oP3QiNj3e8ewOaEpEJV/o6Zrmy2VarVvZ/bH7kyO/S/aJf9x8vQsKVWpsdmSiZ5DJEHgarFIXrnO0ZQf0P9iQ==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "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" + } + }, + "@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" + } + }, + "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" + } + }, + "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==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "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 + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "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" + } + }, + "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 + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "keyv": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.0.tgz", + "integrity": "sha512-C30Un9+63J0CsR7Wka5quXKqYZsT6dcRQ2aOwGcSc3RiQ4HGWpTAHlCA+puNfw2jA/s11EsxA1nCXgZRuRKMQQ==", + "dev": true, + "requires": { + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "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==", + "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 + }, + "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 + }, + "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" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-reload": { + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/electron-reload/-/electron-reload-2.0.0-alpha.1.tgz", + "integrity": "sha512-hTde7gv0TEqxbxlB3pj2CwoyCQ9sdiQrcP8GkpzhosxyVeYM3mZbMEVKCZK3L0fED7Mz5A9IWmK7zEvi4H3P1g==", + "dev": true, + "requires": { + "chokidar": "^3.5.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==", + "dev": true, + "requires": { + "conf": "^10.0.3", + "type-fest": "^1.0.2" + } + }, + "electron-to-chromium": { + "version": "1.4.144", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.144.tgz", + "integrity": "sha512-R3RV3rU1xWwFJlSClVWDvARaOk6VUO/FubHLodIASDB3Mc2dzuWvNdfOgH9bwHUTqT79u92qw60NWfwUdzAqdg==", + "dev": true + }, + "electron-updater": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.0.1.tgz", + "integrity": "sha512-dNnXPCqYmergXy3jgg4UICuD50Orug9GQe/5xfHy+BE2Fy0icB0QE+y6iQWdCDf7yeONxwMBf4HgIkGG5pIaVg==", + "dev": true, + "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==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "peer": true + }, + "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==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "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==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "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==", + "dev": true + }, + "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 + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "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.2", + "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", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "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-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "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" + } + }, + "es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha512-731Rf4NqlPvhkT1pIF7r8vZxESJlWocNpXLuyPlVnfEGXlwuJaMvU5WpyyDjpudDC2cgXVX849xljzvQqBg1QQ==" + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "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-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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 + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.0", + "@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.2", + "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.15.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.1.2", + "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": { + "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.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "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 + } + } + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "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==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "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==", + "dev": true + }, + "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==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.1.tgz", + "integrity": "sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA==", + "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 + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "peer": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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==", + "dev": true + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "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" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "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==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "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 + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "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": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "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" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "peer": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "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" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + } + } + }, + "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==", + "dev": true + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "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.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "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" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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 + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "dependencies": { + "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" + } + } + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "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 + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forcefocus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/forcefocus/-/forcefocus-1.1.0.tgz", + "integrity": "sha512-bnY7rul5kBLyNoCn0FHNiFAF+GGUZx6TvxWhurUS4PlmOzF+FMixGIigHH5UcyM3w1gp2TxAtP6MOUSXA15Sgw==", + "dev": true, + "requires": { + "bindings": "^1.3.0", + "prebuild-install": "^5.0.0" + } + }, + "fork-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz", + "integrity": "sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "framebus": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/framebus/-/framebus-5.1.2.tgz", + "integrity": "sha512-Z/y6/0gHVx4Td4c0jkDiASBo0pXlJ2fKOP6CynSFnxTzqojG9xOKOFOqoYkcBHlz1vP4t4yHHR6Esp+GsYIh/Q==", + "requires": { + "@braintree/uuid": "^0.1.0" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.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-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "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==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "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==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "peer": true + }, + "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" + } + }, + "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" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "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 + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "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 + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "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==", + "dev": true, + "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-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "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==", + "dev": true, + "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.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "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" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "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" + } + }, + "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": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "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=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } + }, + "gulp-filter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-7.0.0.tgz", + "integrity": "sha512-ZGWtJo0j1mHfP77tVuhyqem4MRA5NfNRjoVe6VAkLGeQQ/QGo2VsFwp7zfPTGDsd1rwzBmoDHhxpE6f5B3Zuaw==", + "dev": true, + "requires": { + "multimatch": "^5.0.0", + "plugin-error": "^1.0.1", + "streamfilter": "^3.0.0", + "to-absolute-glob": "^2.0.2" + } + }, + "gulp-if": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-3.0.0.tgz", + "integrity": "sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==", + "dev": true, + "requires": { + "gulp-match": "^1.1.0", + "ternary-stream": "^3.0.0", + "through2": "^3.0.1" + } + }, + "gulp-json-editor": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/gulp-json-editor/-/gulp-json-editor-2.5.6.tgz", + "integrity": "sha512-66Xr6Q6m4mUNd0OOHflMB/RHgFNnLjlHgizOzUcx9CyMRymVZEM+/SpZcCDlvThBdXtQwXpdvtSepxVY/V6nQA==", + "dev": true, + "requires": { + "deepmerge": "^4.2.2", + "detect-indent": "^6.0.0", + "js-beautify": "^1.13.13", + "plugin-error": "^1.0.1", + "through2": "^4.0.2" + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + } + } + }, + "gulp-match": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz", + "integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.3" + } + }, + "gulp-replace": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", + "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", + "dev": true, + "requires": { + "@types/node": "^14.14.41", + "@types/vinyl": "^2.0.4", + "istextorbinary": "^3.0.0", + "replacestream": "^4.0.3", + "yargs-parser": ">=5.0.0-security.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.20.tgz", + "integrity": "sha512-Q8KKwm9YqEmUBRsqJ2GWJDtXltBDxTdC4m5vTdXBolu2PeQh8LX+f6BTwU+OuXPu37fLxoN6gidqBmnky36FXA==", + "dev": true + } + } + }, + "gulp-zip": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-5.1.0.tgz", + "integrity": "sha512-XZr/y91IliK/SpR74g3TkZejGkGEmK7CSDjSghT1jXshgO+dFvpLIz9w9fpuwkew6i7k4F+G24TubNgq1ISzEw==", + "dev": true, + "requires": { + "get-stream": "^5.2.0", + "plugin-error": "^1.0.1", + "through2": "^3.0.1", + "vinyl": "^2.1.0", + "yazl": "^2.5.1" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "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==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "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": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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 + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "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" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "peer": true + }, + "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-injector": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/html-webpack-injector/-/html-webpack-injector-1.1.4.tgz", + "integrity": "sha512-R+HeAYzPeL3dKIr5/a7a2S6R4fy2yHetKiB7cz5rXjwlnU5tghuy58kCBsKA/Qoj94MAgCYwllHmvYqy2nJSdg==", + "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-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "requires": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.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==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "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": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "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": "sha512-BFEH2mZyeF6KZKaKLVPZ0wMjIiWOdjvZ7zbx8ENec0qfZhJwKFbX/4jKM5LTKyJEc/GOqUKiiJ2IFKT9yWrZqA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "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": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "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 + }, + "inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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==", + "dev": true + }, + "inject-stylesheet": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/inject-stylesheet/-/inject-stylesheet-5.0.0.tgz", + "integrity": "sha512-GzncrJP8E/pavMQzoO93CXoYCfTttwVm2cX2TyXJdgtVE0cCvWSFCn1/uMsM6ZkEg7LUsOcKuamcLiGWlv2p9A==" + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + } + }, + "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": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "dev": true, + "requires": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "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 + } + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "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.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "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 + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + }, + "dependencies": { + "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-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "peer": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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" + } + }, + "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==" + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "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==", + "dev": true + }, + "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" + }, + "dependencies": { + "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-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-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "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-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^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-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "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==" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "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-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "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": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "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": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "peer": true + }, + "istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "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, + "peer": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "peer": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "peer": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "peer": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "dev": true, + "requires": { + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" + } + }, + "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" + } + }, + "jasmine-core": { + "version": "3.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "requires": { + "colors": "1.4.0" + }, + "dependencies": { + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + } + } + }, + "jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + } + }, + "jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "dependencies": { + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "peer": 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, + "peer": true + } + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "peer": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + } + }, + "jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "peer": true, + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "peer": true, + "requires": {} + }, + "jest-preset-angular": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-10.1.0.tgz", + "integrity": "sha512-D4k+BnGoig3w1x4MZiQOdN8UfaLN5aNjmx91U28VYRA+LslbN+D8dGyb5a5lR32mog5y86iVnAZ4mRvFlYr7SQ==", + "dev": true, + "requires": { + "jest-environment-jsdom": "^27.0.0", + "pretty-format": "^27.0.0", + "ts-jest": "^27.0.0" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "peer": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + } + }, + "jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "peer": true + } + } + }, + "jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + } + }, + "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": { + "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" + } + } + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.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==", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "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==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, + "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==", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "ws": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "requires": {} + } + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "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==", + "dev": true + }, + "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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "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": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jszip": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", + "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "requires": { + "tsscmp": "1.0.6" + } + }, + "keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "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": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "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==", + "dev": true, + "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" + } + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "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=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "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" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "peer": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "requires": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "koa-bodyparser": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz", + "integrity": "sha512-uyV8G29KAGwZc4q/0WUAjH+Tsmuv9ImfBUF2oZVyZtaeo0husInagyn/JH85xMSxM0hEk/mbCII5ubLDuqW/Rw==", + "requires": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1" + } + }, + "koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" + }, + "koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "requires": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + } + }, + "koa-is-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", + "integrity": "sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==" + }, + "koa-json": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/koa-json/-/koa-json-2.0.2.tgz", + "integrity": "sha512-8+dz0T2ekDuNN1svYoKPCV2txotQ3Ufg8Fn5bft1T48MPJWiC/HKmkk+3xj9EC/iNZuFYeLRazN2h2o3RSUXuQ==", + "requires": { + "koa-is-json": "1", + "streaming-json-stringify": "3" + } + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "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==", + "dev": true + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "peer": true + }, + "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" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "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" + } + } + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "lint-staged": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", + "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^9.3.0", + "debug": "^4.3.4", + "execa": "^5.1.1", + "lilconfig": "2.0.5", + "listr2": "^4.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.2", + "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": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "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" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "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==" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "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==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.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": { + "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" + } + } + } + }, + "lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "requires": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + } + }, + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "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 + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "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-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "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" + }, + "dependencies": { + "@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 + }, + "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" + } + } + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "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 + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "peer": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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 + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memfs": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", + "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": 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 + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "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==" + }, + "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==", + "requires": { + "mime-db": "1.52.0" + } + }, + "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==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "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" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "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" + } + }, + "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==", + "dev": true + }, + "mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, + "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" + } + }, + "multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + } + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "multistream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz", + "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==", + "dev": true, + "requires": { + "once": "^1.4.0", + "readable-stream": "^3.6.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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "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 + } + } + }, + "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==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "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==" + }, + "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 + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "ngx-infinite-scroll": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-10.0.1.tgz", + "integrity": "sha512-7is0eJZ9kJPsaHohRmMhJ/QFHAW9jp9twO5HcHRvFM/Yl/R8QCiokgjwmH0/CR3MuxUanxfHZMfO3PbYTwlBEg==", + "requires": { + "@scarf/scarf": "^1.1.0", + "opencollective-postinstall": "^2.0.2" + } + }, + "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.22.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz", + "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==", + "dev": true, + "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" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "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" + } + } + } + }, + "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==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "peer": 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==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==", + "dev": true + }, + "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": "sha512-/AD7JGJbcp1pB5XwYkJyivqdeXofUP5u2lkif6vLGLc+SsV9OCC0JFNpVwM5pqHuFqbyojRt6xILuidJOwwJDQ==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "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 + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "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": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "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.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "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" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "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" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + } + } + }, + "only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" + }, + "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==", + "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": { + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "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" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, + "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 + }, + "p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "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": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "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" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "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": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "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" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, + "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 + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "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" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "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": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "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-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true + }, + "path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + }, + "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": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "peer": true + }, + "pkg": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/pkg/-/pkg-5.7.0.tgz", + "integrity": "sha512-PTiAjNq/CGAtK5qUBR6pjheqnipTFjeecgSgIKEcAOJA4GpmZeOZC8pMOoT0rfes5vHsmcFo7wbSRTAmXQurrg==", + "dev": true, + "requires": { + "@babel/parser": "7.17.10", + "@babel/types": "7.17.10", + "chalk": "^4.1.2", + "escodegen": "^2.0.0", + "fs-extra": "^9.1.0", + "globby": "^11.1.0", + "into-stream": "^6.0.0", + "is-core-module": "2.9.0", + "minimist": "^1.2.6", + "multistream": "^4.1.0", + "pkg-fetch": "3.4.1", + "prebuild-install": "6.1.4", + "resolve": "^1.22.0", + "stream-meter": "^1.0.4" + }, + "dependencies": { + "@babel/parser": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "dev": true + }, + "@babel/types": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "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" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.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==", + "dev": true, + "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==", + "dev": true, + "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": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "dev": true, + "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.21.0", + "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" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "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=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "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-fetch": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/pkg-fetch/-/pkg-fetch-3.4.1.tgz", + "integrity": "sha512-fS4cdayCa1r4jHkOKGPJKnS9PEs6OWZst+s+m0+CmhmPZObMnxoRnf9T9yUWl+lzM2b5aJF7cnQIySCT7Hq8Dg==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "fs-extra": "^9.1.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.6", + "progress": "^2.0.3", + "semver": "^7.3.5", + "tar-fs": "^2.1.1", + "yargs": "^16.2.0" + }, + "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" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "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 + } + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "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, + "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 + } + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "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" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "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-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.6" + } + }, + "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==", + "dev": true, + "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": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "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==", + "dev": true, + "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": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "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=", + "dev": true, + "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": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "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" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "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==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" + }, + "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" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "peer": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": 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==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "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" + } + }, + "qrious": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz", + "integrity": "sha512-xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g==" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true + }, + "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" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "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=", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "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" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^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" + } + }, + "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.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "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==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "if-async": "^3.7.4", + "stream-slicer": "0.0.6", + "through2": "^0.6.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "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=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "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 + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "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" + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "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-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "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 + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "peer": 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" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "restricted-input": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/restricted-input/-/restricted-input-3.0.5.tgz", + "integrity": "sha512-lUuXZ3wUnHURRarj5/0C8vomWIfWJO+p7T6RYwB46v7Oyuyr3yyupU+i7SjqUv4S6RAeAAZt1C/QCLJ9xhQBow==", + "requires": { + "@braintree/browser-detection": "^1.12.1" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "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==", + "dev": true, + "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-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "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.52.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.1.tgz", + "integrity": "sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==", + "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==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "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 + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + }, + "dependencies": { + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + } + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true, + "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 + } + } + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "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==", + "dev": true, + "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==", + "dev": true, + "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" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "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" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "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" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "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==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "peer": true + }, + "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" + } + }, + "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 + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": 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-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "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" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "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 + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "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 + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "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" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "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 + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", + "requires": { + "graceful-fs": "^4.1.3" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-meter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz", + "integrity": "sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=", + "dev": true, + "requires": { + "readable-stream": "^2.1.4" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "stream-slicer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stream-slicer/-/stream-slicer-0.0.6.tgz", + "integrity": "sha1-+GsqxcJEC3oKh7cfM2ZcB4gEYTg=", + "dev": true + }, + "streamfilter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-3.0.0.tgz", + "integrity": "sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA==", + "dev": true, + "requires": { + "readable-stream": "^3.0.6" + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "streaming-json-stringify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/streaming-json-stringify/-/streaming-json-stringify-3.1.0.tgz", + "integrity": "sha1-gCAEN6mTzDnE/gAmO3s7kDrIevU=", + "requires": { + "json-stringify-safe": "5", + "readable-stream": "2" + } + }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + }, + "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-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-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "peer": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "peer": 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 + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "requires": {} + }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "requires": { + "debug": "^4.1.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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.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 + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "sweetalert2": { + "version": "10.16.9", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.16.9.tgz", + "integrity": "sha512-oNe+md5tmmS3fGfVHa7gVPlun7Td2oANSacnZCeghnrr3OHBi6UPVPU+GFrymwaDqwQspACilLRmRnM7aTjNPA==" + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "tailwindcss": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", + "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", + "dev": true, + "requires": { + "arg": "^5.0.1", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "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": { + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.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" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "peer": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "ternary-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz", + "integrity": "sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==", + "dev": true, + "requires": { + "duplexify": "^4.1.1", + "fork-stream": "^0.0.4", + "merge-stream": "^2.0.0", + "through2": "^3.0.1" + } + }, + "terser": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", + "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "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 + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "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" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "peer": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "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 + }, + "textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "dev": true + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true, + "peer": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "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" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "peer": true + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.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-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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==", + "dev": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "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" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "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" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "requires": { + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "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-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "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 + } + } + }, + "ts-loader": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", + "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + } + }, + "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" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "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" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + }, + "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==", + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "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-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "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==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "dependencies": { + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + } + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "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-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "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": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "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": { + "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 + }, + "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" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + } + } + }, + "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=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "utf-8-validate": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "requires": { + "node-gyp-build": "^4.3.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": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "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 + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "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 + }, + "v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "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, + "peer": true + } + } + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "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" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "optional": true + } + } + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "peer": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + }, + "web-animations-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.2.tgz", + "integrity": "sha512-TOMFWtQdxzjWp8qx4DAraTWTsdhxVSiWa6NkPFSaPtZ1diKUxTn4yTix73A1euG1WbSOMMPcY51cnjTIHrGtDA==" + }, + "webcrypto-shim": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz", + "integrity": "sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg==", + "dev": true + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + }, + "webpack": { + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "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.3", + "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-even-better-errors": "^2.3.1", + "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": { + "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 + }, + "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" + } + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + }, + "webpack-dev-server": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz", + "integrity": "sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg==", + "dev": true, + "requires": { + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^1.10.11", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^5.2.1", + "ws": "^8.1.0" + }, + "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 + }, + "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" + } + }, + "ws": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", + "dev": true, + "requires": {} + } + } + }, + "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-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true + }, + "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 + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.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-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "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==", + "dev": true + }, + "which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + } + }, + "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==", + "dev": true, + "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==" + }, + "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==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "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 + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "optional": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "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=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3" + } + }, + "ylru": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==" + }, + "zone.js": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", + "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", + "requires": { + "tslib": "^2.3.0" + } + }, + "zxcvbn": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", + "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..d91ff6dd53 --- /dev/null +++ b/package.json @@ -0,0 +1,177 @@ +{ + "name": "@bitwarden/clients", + "version": "0.0.0", + "description": "Bitwarden Client Applications", + "repository": { + "type": "git", + "url": "git+https://github.com/bitwarden/clients.git" + }, + "author": "Bitwarden Inc. (https://bitwarden.com)", + "license": "GPL-3.0", + "bugs": { + "url": "https://github.com/bitwarden/clients/issues" + }, + "homepage": "https://bitwarden.com", + "scripts": { + "lint": "eslint . && prettier --check .", + "lint:fix": "eslint . --fix", + "prettier": "prettier --write .", + "prepare": "husky install" + }, + "devDependencies": { + "@angular/compiler-cli": "^12.2.13", + "@fluffy-spoon/substitute": "^1.208.0", + "@ngtools/webpack": "^12.2.13", + "@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4", + "@types/chrome": "^0.0.139", + "@types/duo_web_sdk": "^2.7.1", + "@types/firefox-webext-browser": "^82.0.0", + "@types/inquirer": "^8.2.1", + "@types/jest": "^27.5.0", + "@types/jquery": "^3.5.14", + "@types/jsdom": "^16.2.14", + "@types/koa": "^2.13.4", + "@types/koa__multer": "^2.0.4", + "@types/koa__router": "^8.0.11", + "@types/koa-bodyparser": "^4.3.7", + "@types/koa-json": "^2.0.20", + "@types/lowdb": "^1.0.11", + "@types/lunr": "^2.3.4", + "@types/mousetrap": "^1.6.8", + "@types/node": "^16.11.12", + "@types/node-fetch": "^2.6.1", + "@types/node-forge": "^1.0.2", + "@types/node-ipc": "^9.2.0", + "@types/papaparse": "^5.3.2", + "@types/proper-lockfile": "^4.1.2", + "@types/retry": "^0.12.2", + "@types/tldjs": "^2.3.1", + "@types/webcrypto": "^0.0.28", + "@types/zxcvbn": "^4.4.1", + "@typescript-eslint/eslint-plugin": "^5.22.0", + "@typescript-eslint/parser": "^5.22.0", + "autoprefixer": "^10.4.7", + "buffer": "^6.0.3", + "clean-webpack-plugin": "^4.0.0", + "concurrently": "^7.2.1", + "copy-webpack-plugin": "^10.0.0", + "cross-env": "^7.0.3", + "css-loader": "^6.5.1", + "del": "^6.0.0", + "electron": "16.2.7", + "electron-builder": "^22.11.7", + "electron-log": "^4.4.7", + "electron-notarize": "^1.2.1", + "electron-rebuild": "^3.2.7", + "electron-reload": "^2.0.0-alpha.1", + "electron-store": "^8.0.1", + "electron-updater": "^5.0.1", + "eslint": "^8.14.0", + "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "forcefocus": "^1.1.0", + "gulp": "^4.0.2", + "gulp-filter": "^7.0.0", + "gulp-if": "^3.0.0", + "gulp-json-editor": "^2.5.5", + "gulp-replace": "^1.1.0", + "gulp-zip": "^5.1.0", + "html-loader": "^3.0.1", + "html-webpack-injector": "^1.1.4", + "html-webpack-plugin": "^5.5.0", + "husky": "^7.0.4", + "jasmine-core": "^3.7.1", + "jasmine-spec-reporter": "^7.0.0", + "jest-preset-angular": "^10.1.0", + "keytar": "^7.9.0", + "lint-staged": "^12.4.1", + "mini-css-extract-plugin": "^2.4.5", + "node-ipc": "^9.2.1", + "pkg": "5.7.0", + "postcss": "^8.4.14", + "postcss-loader": "^6.2.1", + "prettier": "^2.6.2", + "process": "^0.11.10", + "regedit": "^3.0.3", + "rimraf": "^3.0.2", + "sass": "^1.34.1", + "sass-loader": "^12.4.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.24", + "tapable": "^1.1.3", + "ts-loader": "^9.2.5", + "tsconfig-paths-webpack-plugin": "^3.5.2", + "typescript": "4.3.5", + "url": "^0.11.0", + "util": "^0.12.4", + "webcrypto-shim": "^0.1.7", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "4.6", + "webpack-node-externals": "^3.0.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", + "@koa/multer": "^3.0.0", + "@koa/router": "^10.1.1", + "@microsoft/signalr": "^5.0.17", + "@microsoft/signalr-protocol-msgpack": "^5.0.17", + "big-integer": "^1.6.51", + "bootstrap": "4.6.0", + "braintree-web-drop-in": "^1.33.1", + "browser-hrtime": "^1.1.8", + "bufferutil": "^4.0.6", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "core-js": "^3.11.0", + "date-input-polyfill": "^2.14.0", + "duo_web_sdk": "github:duosecurity/duo_web_sdk", + "https-proxy-agent": "^5.0.0", + "inquirer": "^8.2.4", + "jquery": "3.6.0", + "jsdom": "^16.7.0", + "jszip": "^3.10.0", + "koa": "^2.13.4", + "koa-bodyparser": "^4.3.0", + "koa-json": "^2.0.2", + "lowdb": "^1.0.0", + "lunr": "^2.3.9", + "mousetrap": "^1.6.5", + "multer": "^1.4.5-lts.1", + "ngx-infinite-scroll": "^10.0.1", + "ngx-toastr": "14.1.4", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "nord": "^0.2.1", + "open": "^8.4.0", + "papaparse": "^5.3.2", + "popper.js": "^1.16.1", + "proper-lockfile": "^4.1.2", + "qrious": "4.0.2", + "rxjs": "^7.5.5", + "sweetalert2": "^10.16.6", + "tldjs": "^2.3.1", + "utf-8-validate": "^5.0.9", + "web-animations-js": "^2.3.2", + "whatwg-fetch": "^3.6.2", + "zone.js": "^0.11.4", + "zxcvbn": "^4.4.2" + }, + "lint-staged": { + "*": "prettier --ignore-unknown --write", + "*.ts": "eslint --fix" + }, + "engines": { + "node": "~16", + "npm": "~8" + } +}